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,977 @@
1
+ /** @import { AST } from '#compiler' */
2
+ /** @import { Context } from '../../../types.js' */
3
+ /** @import { ARIARoleDefinitionKey, ARIARoleRelationConcept, ARIAProperty, ARIAPropertyDefinition, ARIARoleDefinition } from 'aria-query' */
4
+ import {
5
+ a11y_distracting_elements,
6
+ a11y_implicit_semantics,
7
+ a11y_interactive_handlers,
8
+ a11y_labelable,
9
+ a11y_nested_implicit_semantics,
10
+ a11y_non_interactive_element_to_interactive_role_exceptions,
11
+ a11y_recommended_interactive_handlers,
12
+ a11y_required_attributes,
13
+ a11y_required_content,
14
+ abstract_roles,
15
+ address_type_tokens,
16
+ aria_attributes,
17
+ aria_roles,
18
+ autofill_contact_field_name_tokens,
19
+ autofill_field_name_tokens,
20
+ combobox_if_list,
21
+ contact_type_tokens,
22
+ ElementInteractivity,
23
+ input_type_to_implicit_role,
24
+ interactive_element_ax_object_schemas,
25
+ interactive_element_role_schemas,
26
+ interactive_roles,
27
+ invisible_elements,
28
+ menuitem_type_to_implicit_role,
29
+ non_interactive_element_ax_object_schemas,
30
+ non_interactive_element_role_schemas,
31
+ non_interactive_roles,
32
+ presentation_roles
33
+ } from './constants.js';
34
+ import { roles as roles_map, aria } from 'aria-query';
35
+ // @ts-expect-error package doesn't provide typings
36
+ import { AXObjectRoles, elementAXObjects } from 'axobject-query';
37
+ import {
38
+ regex_heading_tags,
39
+ regex_js_prefix,
40
+ regex_not_whitespace,
41
+ regex_redundant_img_alt,
42
+ regex_starts_with_vowel,
43
+ regex_whitespaces
44
+ } from '../../../../patterns.js';
45
+ import { is_event_attribute, is_text_attribute } from '../../../../../utils/ast.js';
46
+ import { list } from '../../../../../utils/string.js';
47
+ import { walk } from 'zimmerframe';
48
+ import fuzzymatch from '../../../../1-parse/utils/fuzzymatch.js';
49
+ import { is_content_editable_binding } from '../../../../../../utils.js';
50
+ import * as w from '../../../../../warnings.js';
51
+
52
+ /**
53
+ * @param {AST.RegularElement | AST.SvelteElement} node
54
+ * @param {Context} context
55
+ */
56
+ export function check_element(node, context) {
57
+ /** @type {Map<string, AST.Attribute>} */
58
+ const attribute_map = new Map();
59
+
60
+ /** @type {Set<string>} */
61
+ const handlers = new Set();
62
+
63
+ /** @type {AST.Attribute[]} */
64
+ const attributes = [];
65
+
66
+ const is_dynamic_element = node.type === 'SvelteElement';
67
+
68
+ let has_spread = false;
69
+ let has_contenteditable_attr = false;
70
+ let has_contenteditable_binding = false;
71
+
72
+ for (const attribute of node.attributes) {
73
+ switch (attribute.type) {
74
+ case 'Attribute': {
75
+ if (is_event_attribute(attribute)) {
76
+ handlers.add(attribute.name.slice(2));
77
+ } else {
78
+ attributes.push(attribute);
79
+ attribute_map.set(attribute.name, attribute);
80
+ if (attribute.name === 'contenteditable') {
81
+ has_contenteditable_attr = true;
82
+ }
83
+ }
84
+ break;
85
+ }
86
+ case 'SpreadAttribute': {
87
+ has_spread = true;
88
+ break;
89
+ }
90
+ case 'BindDirective': {
91
+ if (is_content_editable_binding(attribute.name)) {
92
+ has_contenteditable_binding = true;
93
+ }
94
+ break;
95
+ }
96
+ case 'OnDirective': {
97
+ handlers.add(attribute.name);
98
+ break;
99
+ }
100
+ }
101
+ }
102
+
103
+ for (const attribute of node.attributes) {
104
+ if (attribute.type !== 'Attribute') continue;
105
+
106
+ const name = attribute.name.toLowerCase();
107
+ // aria-props
108
+ if (name.startsWith('aria-')) {
109
+ if (invisible_elements.includes(node.name)) {
110
+ // aria-unsupported-elements
111
+ w.a11y_aria_attributes(attribute, node.name);
112
+ }
113
+
114
+ const type = name.slice(5);
115
+ if (!aria_attributes.includes(type)) {
116
+ const match = fuzzymatch(type, aria_attributes);
117
+ w.a11y_unknown_aria_attribute(attribute, type, match);
118
+ }
119
+
120
+ if (name === 'aria-hidden' && regex_heading_tags.test(node.name)) {
121
+ w.a11y_hidden(attribute, node.name);
122
+ }
123
+
124
+ // aria-proptypes
125
+ let value = get_static_value(attribute);
126
+
127
+ const schema = aria.get(/** @type {ARIAProperty} */ (name));
128
+ if (schema !== undefined) {
129
+ validate_aria_attribute_value(attribute, /** @type {ARIAProperty} */ (name), schema, value);
130
+ }
131
+
132
+ // aria-activedescendant-has-tabindex
133
+ if (
134
+ name === 'aria-activedescendant' &&
135
+ !is_dynamic_element &&
136
+ !is_interactive_element(node.name, attribute_map) &&
137
+ !attribute_map.has('tabindex') &&
138
+ !has_spread
139
+ ) {
140
+ w.a11y_aria_activedescendant_has_tabindex(attribute);
141
+ }
142
+ }
143
+
144
+ switch (name) {
145
+ // aria-role
146
+ case 'role': {
147
+ if (invisible_elements.includes(node.name)) {
148
+ // aria-unsupported-elements
149
+ w.a11y_misplaced_role(attribute, node.name);
150
+ }
151
+
152
+ const value = get_static_value(attribute);
153
+ if (typeof value !== 'string') {
154
+ break;
155
+ }
156
+ for (const c_r of value.split(regex_whitespaces)) {
157
+ const current_role = /** @type {ARIARoleDefinitionKey} current_role */ (c_r);
158
+
159
+ if (current_role && is_abstract_role(current_role)) {
160
+ w.a11y_no_abstract_role(attribute, current_role);
161
+ } else if (current_role && !aria_roles.includes(current_role)) {
162
+ const match = fuzzymatch(current_role, aria_roles);
163
+ w.a11y_unknown_role(attribute, current_role, match);
164
+ }
165
+
166
+ // no-redundant-roles
167
+ if (
168
+ current_role === get_implicit_role(node.name, attribute_map) &&
169
+ // <ul role="list"> is ok because CSS list-style:none removes the semantics and this is a way to bring them back
170
+ !['ul', 'ol', 'li'].includes(node.name) &&
171
+ // <a role="link" /> is ok because without href the a tag doesn't have a role of link
172
+ !(node.name === 'a' && !attribute_map.has('href'))
173
+ ) {
174
+ w.a11y_no_redundant_roles(attribute, current_role);
175
+ }
176
+
177
+ // Footers and headers are special cases, and should not have redundant roles unless they are the children of sections or articles.
178
+ const is_parent_section_or_article = is_parent(context.path, ['section', 'article']);
179
+ if (!is_parent_section_or_article) {
180
+ const has_nested_redundant_role =
181
+ current_role === a11y_nested_implicit_semantics.get(node.name);
182
+ if (has_nested_redundant_role) {
183
+ w.a11y_no_redundant_roles(attribute, current_role);
184
+ }
185
+ }
186
+
187
+ // role-has-required-aria-props
188
+ if (
189
+ !is_dynamic_element &&
190
+ !is_semantic_role_element(current_role, node.name, attribute_map)
191
+ ) {
192
+ const role = roles_map.get(current_role);
193
+ if (role) {
194
+ const required_role_props = Object.keys(role.requiredProps);
195
+ const has_missing_props =
196
+ !has_spread &&
197
+ required_role_props.some((prop) => !attributes.find((a) => a.name === prop));
198
+ if (has_missing_props) {
199
+ w.a11y_role_has_required_aria_props(
200
+ attribute,
201
+ current_role,
202
+ list(
203
+ required_role_props.map((v) => `"${v}"`),
204
+ 'and'
205
+ )
206
+ );
207
+ }
208
+ }
209
+ }
210
+
211
+ // interactive-supports-focus
212
+ if (
213
+ !has_spread &&
214
+ !has_disabled_attribute(attribute_map) &&
215
+ !is_hidden_from_screen_reader(node.name, attribute_map) &&
216
+ !is_presentation_role(current_role) &&
217
+ is_interactive_roles(current_role) &&
218
+ is_static_element(node.name, attribute_map) &&
219
+ !attribute_map.get('tabindex')
220
+ ) {
221
+ const has_interactive_handlers = [...handlers].some((handler) =>
222
+ a11y_interactive_handlers.includes(handler)
223
+ );
224
+ if (has_interactive_handlers) {
225
+ w.a11y_interactive_supports_focus(node, current_role);
226
+ }
227
+ }
228
+
229
+ // no-interactive-element-to-noninteractive-role
230
+ if (
231
+ !has_spread &&
232
+ is_interactive_element(node.name, attribute_map) &&
233
+ (is_non_interactive_roles(current_role) || is_presentation_role(current_role))
234
+ ) {
235
+ w.a11y_no_interactive_element_to_noninteractive_role(node, node.name, current_role);
236
+ }
237
+
238
+ // no-noninteractive-element-to-interactive-role
239
+ if (
240
+ !has_spread &&
241
+ is_non_interactive_element(node.name, attribute_map) &&
242
+ is_interactive_roles(current_role) &&
243
+ !a11y_non_interactive_element_to_interactive_role_exceptions[node.name]?.includes(
244
+ current_role
245
+ )
246
+ ) {
247
+ w.a11y_no_noninteractive_element_to_interactive_role(node, node.name, current_role);
248
+ }
249
+ }
250
+ break;
251
+ }
252
+ // no-access-key
253
+ case 'accesskey': {
254
+ w.a11y_accesskey(attribute);
255
+ break;
256
+ }
257
+ // no-autofocus
258
+ case 'autofocus': {
259
+ if (node.name !== 'dialog' && !is_parent(context.path, ['dialog'])) {
260
+ w.a11y_autofocus(attribute);
261
+ }
262
+ break;
263
+ }
264
+ // scope
265
+ case 'scope': {
266
+ if (!is_dynamic_element && node.name !== 'th') {
267
+ w.a11y_misplaced_scope(attribute);
268
+ }
269
+ break;
270
+ }
271
+ // tabindex-no-positive
272
+ case 'tabindex': {
273
+ const value = get_static_value(attribute);
274
+ // @ts-ignore todo is tabindex=true correct case?
275
+ if (!isNaN(value) && +value > 0) {
276
+ w.a11y_positive_tabindex(attribute);
277
+ }
278
+ break;
279
+ }
280
+ }
281
+ }
282
+
283
+ const role = attribute_map.get('role');
284
+ const role_static_value = /** @type {ARIARoleDefinitionKey} */ (get_static_text_value(role));
285
+
286
+ // click-events-have-key-events
287
+ if (handlers.has('click')) {
288
+ const is_non_presentation_role =
289
+ role_static_value !== null && !is_presentation_role(role_static_value);
290
+ if (
291
+ !is_dynamic_element &&
292
+ !is_hidden_from_screen_reader(node.name, attribute_map) &&
293
+ (!role || is_non_presentation_role) &&
294
+ !is_interactive_element(node.name, attribute_map) &&
295
+ !has_spread
296
+ ) {
297
+ const has_key_event =
298
+ handlers.has('keydown') || handlers.has('keyup') || handlers.has('keypress');
299
+ if (!has_key_event) {
300
+ w.a11y_click_events_have_key_events(node);
301
+ }
302
+ }
303
+ }
304
+
305
+ const role_value = /** @type {ARIARoleDefinitionKey} */ (
306
+ role ? role_static_value : get_implicit_role(node.name, attribute_map)
307
+ );
308
+
309
+ // no-noninteractive-tabindex
310
+ if (
311
+ !is_dynamic_element &&
312
+ !is_interactive_element(node.name, attribute_map) &&
313
+ !is_interactive_roles(role_static_value)
314
+ ) {
315
+ const tab_index = attribute_map.get('tabindex');
316
+ const tab_index_value = get_static_text_value(tab_index);
317
+ if (tab_index && (tab_index_value === null || Number(tab_index_value) >= 0)) {
318
+ w.a11y_no_noninteractive_tabindex(node);
319
+ }
320
+ }
321
+
322
+ // role-supports-aria-props
323
+ if (typeof role_value === 'string' && roles_map.has(role_value)) {
324
+ const { props } = /** @type {ARIARoleDefinition} */ (roles_map.get(role_value));
325
+ const invalid_aria_props = aria.keys().filter((attribute) => !(attribute in props));
326
+ const is_implicit = role_value && role === undefined;
327
+ for (const attr of attributes) {
328
+ if (invalid_aria_props.includes(/** @type {ARIAProperty} */ (attr.name))) {
329
+ if (is_implicit) {
330
+ w.a11y_role_supports_aria_props_implicit(attr, attr.name, role_value, node.name);
331
+ } else {
332
+ w.a11y_role_supports_aria_props(attr, attr.name, role_value);
333
+ }
334
+ }
335
+ }
336
+ }
337
+
338
+ // no-noninteractive-element-interactions
339
+ if (
340
+ !has_spread &&
341
+ !has_contenteditable_attr &&
342
+ !is_hidden_from_screen_reader(node.name, attribute_map) &&
343
+ !is_presentation_role(role_static_value) &&
344
+ ((!is_interactive_element(node.name, attribute_map) &&
345
+ is_non_interactive_roles(role_static_value)) ||
346
+ (is_non_interactive_element(node.name, attribute_map) && !role))
347
+ ) {
348
+ const has_interactive_handlers = [...handlers].some((handler) =>
349
+ a11y_recommended_interactive_handlers.includes(handler)
350
+ );
351
+ if (has_interactive_handlers) {
352
+ w.a11y_no_noninteractive_element_interactions(node, node.name);
353
+ }
354
+ }
355
+
356
+ // no-static-element-interactions
357
+ if (
358
+ !has_spread &&
359
+ (!role || role_static_value !== null) &&
360
+ !is_hidden_from_screen_reader(node.name, attribute_map) &&
361
+ !is_presentation_role(role_static_value) &&
362
+ !is_interactive_element(node.name, attribute_map) &&
363
+ !is_interactive_roles(role_static_value) &&
364
+ !is_non_interactive_element(node.name, attribute_map) &&
365
+ !is_non_interactive_roles(role_static_value) &&
366
+ !is_abstract_role(role_static_value)
367
+ ) {
368
+ const interactive_handlers = [...handlers].filter((handler) =>
369
+ a11y_interactive_handlers.includes(handler)
370
+ );
371
+ if (interactive_handlers.length > 0) {
372
+ w.a11y_no_static_element_interactions(node, node.name, list(interactive_handlers));
373
+ }
374
+ }
375
+
376
+ if (!has_spread && handlers.has('mouseover') && !handlers.has('focus')) {
377
+ w.a11y_mouse_events_have_key_events(node, 'mouseover', 'focus');
378
+ }
379
+
380
+ if (!has_spread && handlers.has('mouseout') && !handlers.has('blur')) {
381
+ w.a11y_mouse_events_have_key_events(node, 'mouseout', 'blur');
382
+ }
383
+
384
+ // element-specific checks
385
+ const is_labelled =
386
+ attribute_map.has('aria-label') ||
387
+ attribute_map.has('aria-labelledby') ||
388
+ attribute_map.has('title');
389
+
390
+ switch (node.name) {
391
+ case 'a':
392
+ case 'button': {
393
+ const is_hidden =
394
+ get_static_value(attribute_map.get('aria-hidden')) === 'true' ||
395
+ get_static_value(attribute_map.get('inert')) !== null;
396
+
397
+ if (!has_spread && !is_hidden && !is_labelled && !has_content(node)) {
398
+ w.a11y_consider_explicit_label(node);
399
+ }
400
+ if (node.name === 'button') {
401
+ break;
402
+ }
403
+ const href = attribute_map.get('href') || attribute_map.get('xlink:href');
404
+ if (href) {
405
+ const href_value = get_static_text_value(href);
406
+ if (href_value !== null) {
407
+ if (href_value === '' || href_value === '#' || regex_js_prefix.test(href_value)) {
408
+ w.a11y_invalid_attribute(href, href_value, href.name);
409
+ }
410
+ }
411
+ } else if (!has_spread) {
412
+ const id_attribute = get_static_value(attribute_map.get('id'));
413
+ const name_attribute = get_static_value(attribute_map.get('name'));
414
+ const aria_disabled_attribute = get_static_value(attribute_map.get('aria-disabled'));
415
+ if (!id_attribute && !name_attribute && aria_disabled_attribute !== 'true') {
416
+ warn_missing_attribute(node, ['href']);
417
+ }
418
+ }
419
+ break;
420
+ }
421
+ case 'input': {
422
+ const type = attribute_map.get('type');
423
+ const type_value = get_static_text_value(type);
424
+ if (type_value === 'image' && !has_spread) {
425
+ const required_attributes = ['alt', 'aria-label', 'aria-labelledby'];
426
+ const has_attribute = required_attributes.some((name) => attribute_map.has(name));
427
+ if (!has_attribute) {
428
+ warn_missing_attribute(node, required_attributes, 'input type="image"');
429
+ }
430
+ }
431
+ // autocomplete-valid
432
+ const autocomplete = attribute_map.get('autocomplete');
433
+ if (type && autocomplete) {
434
+ const autocomplete_value = get_static_value(autocomplete);
435
+ if (!is_valid_autocomplete(autocomplete_value)) {
436
+ w.a11y_autocomplete_valid(
437
+ autocomplete,
438
+ /** @type {string} */ (autocomplete_value),
439
+ type_value ?? '...'
440
+ );
441
+ }
442
+ }
443
+ break;
444
+ }
445
+ case 'img': {
446
+ const alt_attribute = get_static_text_value(attribute_map.get('alt'));
447
+ const aria_hidden = get_static_value(attribute_map.get('aria-hidden'));
448
+ if (alt_attribute && !aria_hidden && !has_spread) {
449
+ if (regex_redundant_img_alt.test(alt_attribute)) {
450
+ w.a11y_img_redundant_alt(node);
451
+ }
452
+ }
453
+ break;
454
+ }
455
+ case 'label': {
456
+ /** @param {AST.TemplateNode} node */
457
+ const has_input_child = (node) => {
458
+ let has = false;
459
+ walk(
460
+ node,
461
+ {},
462
+ {
463
+ _(node, { next }) {
464
+ if (
465
+ node.type === 'SvelteElement' ||
466
+ node.type === 'SlotElement' ||
467
+ node.type === 'Component' ||
468
+ node.type === 'RenderTag' ||
469
+ (node.type === 'RegularElement' &&
470
+ (a11y_labelable.includes(node.name) || node.name === 'slot'))
471
+ ) {
472
+ has = true;
473
+ } else {
474
+ next();
475
+ }
476
+ }
477
+ }
478
+ );
479
+ return has;
480
+ };
481
+ if (!has_spread && !attribute_map.has('for') && !has_input_child(node)) {
482
+ w.a11y_label_has_associated_control(node);
483
+ }
484
+ break;
485
+ }
486
+ case 'video': {
487
+ const aria_hidden_attribute = attribute_map.get('aria-hidden');
488
+ const aria_hidden_exist = aria_hidden_attribute && get_static_value(aria_hidden_attribute);
489
+
490
+ if (attribute_map.has('muted') || aria_hidden_exist === 'true' || has_spread) {
491
+ return;
492
+ }
493
+
494
+ if (!attribute_map.has('src')) {
495
+ // don't warn about missing captions if `<video>` has no `src` —
496
+ // could e.g. be playing a MediaStream
497
+ return;
498
+ }
499
+
500
+ let has_caption = false;
501
+ const track = /** @type {AST.RegularElement | undefined} */ (
502
+ node.fragment.nodes.find((i) => i.type === 'RegularElement' && i.name === 'track')
503
+ );
504
+ if (track) {
505
+ has_caption = track.attributes.some(
506
+ (a) =>
507
+ a.type === 'SpreadAttribute' ||
508
+ (a.type === 'Attribute' && a.name === 'kind' && get_static_value(a) === 'captions')
509
+ );
510
+ }
511
+ if (!has_caption) {
512
+ w.a11y_media_has_caption(node);
513
+ }
514
+ break;
515
+ }
516
+ case 'figcaption': {
517
+ if (!is_parent(context.path, ['figure'])) {
518
+ w.a11y_figcaption_parent(node);
519
+ }
520
+ break;
521
+ }
522
+ case 'figure': {
523
+ const children = node.fragment.nodes.filter((node) => {
524
+ if (node.type === 'Comment') return false;
525
+ if (node.type === 'Text') return regex_not_whitespace.test(node.data);
526
+ return true;
527
+ });
528
+ const index = children.findIndex(
529
+ (child) => child.type === 'RegularElement' && child.name === 'figcaption'
530
+ );
531
+ if (index !== -1 && index !== 0 && index !== children.length - 1) {
532
+ w.a11y_figcaption_index(children[index]);
533
+ }
534
+ break;
535
+ }
536
+ }
537
+
538
+ if (!has_spread && node.name !== 'a') {
539
+ const required_attributes = a11y_required_attributes[node.name];
540
+ if (required_attributes) {
541
+ const has_attribute = required_attributes.some((name) => attribute_map.has(name));
542
+ if (!has_attribute) {
543
+ warn_missing_attribute(node, required_attributes);
544
+ }
545
+ }
546
+ }
547
+
548
+ if (a11y_distracting_elements.includes(node.name)) {
549
+ // no-distracting-elements
550
+ w.a11y_distracting_elements(node, node.name);
551
+ }
552
+
553
+ // Check content
554
+ if (
555
+ !has_spread &&
556
+ !is_labelled &&
557
+ !has_contenteditable_binding &&
558
+ a11y_required_content.includes(node.name) &&
559
+ !has_content(node)
560
+ ) {
561
+ w.a11y_missing_content(node, node.name);
562
+ }
563
+ }
564
+
565
+ /**
566
+ * @param {ARIARoleDefinitionKey} role
567
+ */
568
+ function is_presentation_role(role) {
569
+ return presentation_roles.includes(role);
570
+ }
571
+
572
+ /**
573
+ * @param {string} tag_name
574
+ * @param {Map<string, AST.Attribute>} attribute_map
575
+ */
576
+ function is_hidden_from_screen_reader(tag_name, attribute_map) {
577
+ if (tag_name === 'input') {
578
+ const type = get_static_value(attribute_map.get('type'));
579
+ if (type === 'hidden') {
580
+ return true;
581
+ }
582
+ }
583
+
584
+ const aria_hidden = attribute_map.get('aria-hidden');
585
+ if (!aria_hidden) return false;
586
+ const aria_hidden_value = get_static_value(aria_hidden);
587
+ if (aria_hidden_value === null) return true;
588
+ return aria_hidden_value === true || aria_hidden_value === 'true';
589
+ }
590
+
591
+ /**
592
+ * @param {Map<string, AST.Attribute>} attribute_map
593
+ */
594
+ function has_disabled_attribute(attribute_map) {
595
+ const disabled_attr_value = get_static_value(attribute_map.get('disabled'));
596
+ if (disabled_attr_value) {
597
+ return true;
598
+ }
599
+
600
+ const aria_disabled_attr = attribute_map.get('aria-disabled');
601
+ if (aria_disabled_attr) {
602
+ const aria_disabled_attr_value = get_static_value(aria_disabled_attr);
603
+ if (aria_disabled_attr_value === 'true') {
604
+ return true;
605
+ }
606
+ }
607
+ return false;
608
+ }
609
+
610
+ /**
611
+ * @param {string} tag_name
612
+ * @param {Map<string, AST.Attribute>} attribute_map
613
+ * @returns {typeof ElementInteractivity[keyof typeof ElementInteractivity]}
614
+ */
615
+ function element_interactivity(tag_name, attribute_map) {
616
+ if (
617
+ interactive_element_role_schemas.some((schema) => match_schema(schema, tag_name, attribute_map))
618
+ ) {
619
+ return ElementInteractivity.Interactive;
620
+ }
621
+ if (
622
+ tag_name !== 'header' &&
623
+ non_interactive_element_role_schemas.some((schema) =>
624
+ match_schema(schema, tag_name, attribute_map)
625
+ )
626
+ ) {
627
+ return ElementInteractivity.NonInteractive;
628
+ }
629
+ if (
630
+ interactive_element_ax_object_schemas.some((schema) =>
631
+ match_schema(schema, tag_name, attribute_map)
632
+ )
633
+ ) {
634
+ return ElementInteractivity.Interactive;
635
+ }
636
+ if (
637
+ non_interactive_element_ax_object_schemas.some((schema) =>
638
+ match_schema(schema, tag_name, attribute_map)
639
+ )
640
+ ) {
641
+ return ElementInteractivity.NonInteractive;
642
+ }
643
+ return ElementInteractivity.Static;
644
+ }
645
+
646
+ /**
647
+ * @param {string} tag_name
648
+ * @param {Map<string, AST.Attribute>} attribute_map
649
+ * @returns {boolean}
650
+ */
651
+ function is_interactive_element(tag_name, attribute_map) {
652
+ return element_interactivity(tag_name, attribute_map) === ElementInteractivity.Interactive;
653
+ }
654
+
655
+ /**
656
+ * @param {string} tag_name
657
+ * @param {Map<string, AST.Attribute>} attribute_map
658
+ * @returns {boolean}
659
+ */
660
+ function is_non_interactive_element(tag_name, attribute_map) {
661
+ return element_interactivity(tag_name, attribute_map) === ElementInteractivity.NonInteractive;
662
+ }
663
+
664
+ /**
665
+ * @param {string} tag_name
666
+ * @param {Map<string, AST.Attribute>} attribute_map
667
+ * @returns {boolean}
668
+ */
669
+ function is_static_element(tag_name, attribute_map) {
670
+ return element_interactivity(tag_name, attribute_map) === ElementInteractivity.Static;
671
+ }
672
+
673
+ /**
674
+ * @param {ARIARoleDefinitionKey} role
675
+ * @param {string} tag_name
676
+ * @param {Map<string, AST.Attribute>} attribute_map
677
+ */
678
+ function is_semantic_role_element(role, tag_name, attribute_map) {
679
+ for (const [schema, ax_object] of elementAXObjects.entries()) {
680
+ if (
681
+ schema.name === tag_name &&
682
+ (!schema.attributes ||
683
+ schema.attributes.every(
684
+ /** @param {any} attr */
685
+ (attr) =>
686
+ attribute_map.has(attr.name) &&
687
+ get_static_value(attribute_map.get(attr.name)) === attr.value
688
+ ))
689
+ ) {
690
+ for (const name of ax_object) {
691
+ const roles = AXObjectRoles.get(name);
692
+ if (roles) {
693
+ for (const { name } of roles) {
694
+ if (name === role) {
695
+ return true;
696
+ }
697
+ }
698
+ }
699
+ }
700
+ }
701
+ }
702
+ return false;
703
+ }
704
+
705
+ /**
706
+ * @param {null | true | string} autocomplete
707
+ */
708
+ function is_valid_autocomplete(autocomplete) {
709
+ if (autocomplete === true) {
710
+ return false;
711
+ } else if (!autocomplete) {
712
+ return true; // dynamic value
713
+ }
714
+ const tokens = autocomplete.trim().toLowerCase().split(regex_whitespaces);
715
+ if (typeof tokens[0] === 'string' && tokens[0].startsWith('section-')) {
716
+ tokens.shift();
717
+ }
718
+ if (address_type_tokens.includes(tokens[0])) {
719
+ tokens.shift();
720
+ }
721
+ if (autofill_field_name_tokens.includes(tokens[0])) {
722
+ tokens.shift();
723
+ } else {
724
+ if (contact_type_tokens.includes(tokens[0])) {
725
+ tokens.shift();
726
+ }
727
+ if (autofill_contact_field_name_tokens.includes(tokens[0])) {
728
+ tokens.shift();
729
+ } else {
730
+ return false;
731
+ }
732
+ }
733
+ if (tokens[0] === 'webauthn') {
734
+ tokens.shift();
735
+ }
736
+ return tokens.length === 0;
737
+ }
738
+
739
+ /** @param {Map<string, AST.Attribute>} attribute_map */
740
+ function input_implicit_role(attribute_map) {
741
+ const type_attribute = attribute_map.get('type');
742
+ if (!type_attribute) return;
743
+ const type = get_static_text_value(type_attribute);
744
+ if (!type) return;
745
+ const list_attribute_exists = attribute_map.has('list');
746
+ if (list_attribute_exists && combobox_if_list.includes(type)) {
747
+ return 'combobox';
748
+ }
749
+ return input_type_to_implicit_role.get(type);
750
+ }
751
+
752
+ /** @param {Map<string, AST.Attribute>} attribute_map */
753
+ function menuitem_implicit_role(attribute_map) {
754
+ const type_attribute = attribute_map.get('type');
755
+ if (!type_attribute) return;
756
+ const type = get_static_text_value(type_attribute);
757
+ if (!type) return;
758
+ return menuitem_type_to_implicit_role.get(type);
759
+ }
760
+
761
+ /**
762
+ * @param {string} name
763
+ * @param {Map<string, AST.Attribute>} attribute_map
764
+ */
765
+ function get_implicit_role(name, attribute_map) {
766
+ if (name === 'menuitem') {
767
+ return menuitem_implicit_role(attribute_map);
768
+ } else if (name === 'input') {
769
+ return input_implicit_role(attribute_map);
770
+ } else {
771
+ return a11y_implicit_semantics.get(name);
772
+ }
773
+ }
774
+
775
+ /**
776
+ * @param {ARIARoleDefinitionKey} role
777
+ */
778
+ function is_non_interactive_roles(role) {
779
+ return non_interactive_roles.includes(role);
780
+ }
781
+
782
+ /**
783
+ * @param {ARIARoleDefinitionKey} role
784
+ */
785
+ function is_interactive_roles(role) {
786
+ return interactive_roles.includes(role);
787
+ }
788
+
789
+ /**
790
+ * @param {ARIARoleDefinitionKey} role
791
+ */
792
+ function is_abstract_role(role) {
793
+ return abstract_roles.includes(role);
794
+ }
795
+
796
+ /**
797
+ * @param {AST.Attribute | undefined} attribute
798
+ */
799
+ function get_static_text_value(attribute) {
800
+ const value = get_static_value(attribute);
801
+ if (value === true) return null;
802
+ return value;
803
+ }
804
+
805
+ /**
806
+ * @param {AST.Attribute | undefined} attribute
807
+ */
808
+ function get_static_value(attribute) {
809
+ if (!attribute) return null;
810
+ if (attribute.value === true) return true;
811
+ if (is_text_attribute(attribute)) return attribute.value[0].data;
812
+ return null;
813
+ }
814
+
815
+ /**
816
+ * @param {AST.RegularElement | AST.SvelteElement} element
817
+ */
818
+ function has_content(element) {
819
+ for (const node of element.fragment.nodes) {
820
+ if (node.type === 'Text') {
821
+ if (node.data.trim() === '') {
822
+ continue;
823
+ }
824
+ }
825
+
826
+ if (node.type === 'RegularElement' || node.type === 'SvelteElement') {
827
+ if (
828
+ node.name === 'img' &&
829
+ node.attributes.some((node) => node.type === 'Attribute' && node.name === 'alt')
830
+ ) {
831
+ return true;
832
+ }
833
+
834
+ if (node.name === 'selectedcontent') {
835
+ return true;
836
+ }
837
+
838
+ if (!has_content(node)) {
839
+ continue;
840
+ }
841
+ }
842
+
843
+ // assume everything else has content — this will result in false positives
844
+ // (e.g. an empty `{#if ...}{/if}`) but that's probably fine
845
+ return true;
846
+ }
847
+ }
848
+
849
+ /**
850
+ * @param {ARIARoleRelationConcept} schema
851
+ * @param {string} tag_name
852
+ * @param {Map<string, AST.Attribute>} attribute_map
853
+ */
854
+ function match_schema(schema, tag_name, attribute_map) {
855
+ if (schema.name !== tag_name) return false;
856
+ if (!schema.attributes) return true;
857
+ return schema.attributes.every((schema_attribute) => {
858
+ const attribute = attribute_map.get(schema_attribute.name);
859
+ if (!attribute) return false;
860
+ if (schema_attribute.value && schema_attribute.value !== get_static_text_value(attribute)) {
861
+ return false;
862
+ }
863
+ return true;
864
+ });
865
+ }
866
+
867
+ /**
868
+ * @param {AST.SvelteNode[]} path
869
+ * @param {string[]} elements
870
+ */
871
+ function is_parent(path, elements) {
872
+ let i = path.length;
873
+ while (i--) {
874
+ const parent = path[i];
875
+ if (parent.type === 'SvelteElement') return true; // unknown, play it safe, so we don't warn
876
+ if (parent.type === 'RegularElement') {
877
+ return elements.includes(parent.name);
878
+ }
879
+ }
880
+ return false;
881
+ }
882
+
883
+ /**
884
+ * @param {AST.Attribute} attribute
885
+ * @param {ARIAProperty} name
886
+ * @param {ARIAPropertyDefinition} schema
887
+ * @param {string | true | null} value
888
+ */
889
+ function validate_aria_attribute_value(attribute, name, schema, value) {
890
+ const type = schema.type;
891
+
892
+ if (value === null) return;
893
+ if (value === true) value = '';
894
+
895
+ switch (type) {
896
+ case 'id':
897
+ case 'string': {
898
+ if (value === '') {
899
+ w.a11y_incorrect_aria_attribute_type(attribute, name, 'non-empty string');
900
+ }
901
+ break;
902
+ }
903
+ case 'number': {
904
+ if (value === '' || isNaN(+value)) {
905
+ w.a11y_incorrect_aria_attribute_type(attribute, name, 'number');
906
+ }
907
+ break;
908
+ }
909
+ case 'boolean': {
910
+ if (value !== 'true' && value !== 'false') {
911
+ w.a11y_incorrect_aria_attribute_type_boolean(attribute, name);
912
+ }
913
+ break;
914
+ }
915
+ case 'idlist': {
916
+ if (value === '') {
917
+ w.a11y_incorrect_aria_attribute_type_idlist(attribute, name);
918
+ }
919
+ break;
920
+ }
921
+ case 'integer': {
922
+ if (value === '' || !Number.isInteger(+value)) {
923
+ w.a11y_incorrect_aria_attribute_type_integer(attribute, name);
924
+ }
925
+ break;
926
+ }
927
+ case 'token': {
928
+ const values = (schema.values ?? []).map((value) => value.toString());
929
+ if (!values.includes(value.toLowerCase())) {
930
+ w.a11y_incorrect_aria_attribute_type_token(
931
+ attribute,
932
+ name,
933
+ list(values.map((v) => `"${v}"`))
934
+ );
935
+ }
936
+ break;
937
+ }
938
+ case 'tokenlist': {
939
+ const values = (schema.values ?? []).map((value) => value.toString());
940
+ if (
941
+ value
942
+ .toLowerCase()
943
+ .split(regex_whitespaces)
944
+ .some((value) => !values.includes(value))
945
+ ) {
946
+ w.a11y_incorrect_aria_attribute_type_tokenlist(
947
+ attribute,
948
+ name,
949
+ list(values.map((v) => `"${v}"`))
950
+ );
951
+ }
952
+ break;
953
+ }
954
+ case 'tristate': {
955
+ if (value !== 'true' && value !== 'false' && value !== 'mixed') {
956
+ w.a11y_incorrect_aria_attribute_type_tristate(attribute, name);
957
+ }
958
+ break;
959
+ }
960
+ }
961
+ }
962
+
963
+ /**
964
+ * @param {AST.RegularElement |AST.SvelteElement} node
965
+ * @param {string[]} attributes
966
+ * @param {string} name
967
+ */
968
+ function warn_missing_attribute(node, attributes, name = node.name) {
969
+ const article =
970
+ regex_starts_with_vowel.test(attributes[0]) || attributes[0] === 'href' ? 'an' : 'a';
971
+ const sequence =
972
+ attributes.length > 1
973
+ ? attributes.slice(0, -1).join(', ') + ` or ${attributes[attributes.length - 1]}`
974
+ : attributes[0];
975
+
976
+ w.a11y_missing_attribute(node, name, article, sequence);
977
+ }