glass-ui-solid 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/README.md +201 -0
  2. package/dist/components/Accordion/Accordion.d.ts +4 -0
  3. package/dist/components/Accordion/Accordion.d.ts.map +1 -0
  4. package/dist/components/Accordion/AccordionPanel.d.ts +5 -0
  5. package/dist/components/Accordion/AccordionPanel.d.ts.map +1 -0
  6. package/dist/components/Accordion/index.d.ts +4 -0
  7. package/dist/components/Accordion/index.d.ts.map +1 -0
  8. package/dist/components/Accordion/types.d.ts +22 -0
  9. package/dist/components/Accordion/types.d.ts.map +1 -0
  10. package/dist/components/Alert/Alert.d.ts +4 -0
  11. package/dist/components/Alert/Alert.d.ts.map +1 -0
  12. package/dist/components/Alert/index.d.ts +3 -0
  13. package/dist/components/Alert/index.d.ts.map +1 -0
  14. package/dist/components/Alert/types.d.ts +17 -0
  15. package/dist/components/Alert/types.d.ts.map +1 -0
  16. package/dist/components/Avatar/Avatar.d.ts +4 -0
  17. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  18. package/dist/components/Avatar/index.d.ts +3 -0
  19. package/dist/components/Avatar/index.d.ts.map +1 -0
  20. package/dist/components/Avatar/types.d.ts +16 -0
  21. package/dist/components/Avatar/types.d.ts.map +1 -0
  22. package/dist/components/Badge/Badge.d.ts +4 -0
  23. package/dist/components/Badge/Badge.d.ts.map +1 -0
  24. package/dist/components/Badge/index.d.ts +3 -0
  25. package/dist/components/Badge/index.d.ts.map +1 -0
  26. package/dist/components/Badge/types.d.ts +17 -0
  27. package/dist/components/Badge/types.d.ts.map +1 -0
  28. package/dist/components/Breadcrumb/Breadcrumb.d.ts +4 -0
  29. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  30. package/dist/components/Breadcrumb/index.d.ts +3 -0
  31. package/dist/components/Breadcrumb/index.d.ts.map +1 -0
  32. package/dist/components/Breadcrumb/types.d.ts +20 -0
  33. package/dist/components/Breadcrumb/types.d.ts.map +1 -0
  34. package/dist/components/Button/Button.d.ts +4 -0
  35. package/dist/components/Button/Button.d.ts.map +1 -0
  36. package/dist/components/Button/Spinner.d.ts +4 -0
  37. package/dist/components/Button/Spinner.d.ts.map +1 -0
  38. package/dist/components/Button/index.d.ts +4 -0
  39. package/dist/components/Button/index.d.ts.map +1 -0
  40. package/dist/components/Button/types.d.ts +34 -0
  41. package/dist/components/Button/types.d.ts.map +1 -0
  42. package/dist/components/Card/Card.d.ts +4 -0
  43. package/dist/components/Card/Card.d.ts.map +1 -0
  44. package/dist/components/Card/index.d.ts +3 -0
  45. package/dist/components/Card/index.d.ts.map +1 -0
  46. package/dist/components/Card/types.d.ts +15 -0
  47. package/dist/components/Card/types.d.ts.map +1 -0
  48. package/dist/components/Chip/Chip.d.ts +4 -0
  49. package/dist/components/Chip/Chip.d.ts.map +1 -0
  50. package/dist/components/Chip/index.d.ts +3 -0
  51. package/dist/components/Chip/index.d.ts.map +1 -0
  52. package/dist/components/Chip/types.d.ts +21 -0
  53. package/dist/components/Chip/types.d.ts.map +1 -0
  54. package/dist/components/CodeBlock/CodeBlock.d.ts +4 -0
  55. package/dist/components/CodeBlock/CodeBlock.d.ts.map +1 -0
  56. package/dist/components/CodeBlock/index.d.ts +3 -0
  57. package/dist/components/CodeBlock/index.d.ts.map +1 -0
  58. package/dist/components/CodeBlock/types.d.ts +19 -0
  59. package/dist/components/CodeBlock/types.d.ts.map +1 -0
  60. package/dist/components/Dialog/Dialog.d.ts +4 -0
  61. package/dist/components/Dialog/Dialog.d.ts.map +1 -0
  62. package/dist/components/Dialog/index.d.ts +3 -0
  63. package/dist/components/Dialog/index.d.ts.map +1 -0
  64. package/dist/components/Dialog/types.d.ts +22 -0
  65. package/dist/components/Dialog/types.d.ts.map +1 -0
  66. package/dist/components/Drawer/Drawer.d.ts +4 -0
  67. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  68. package/dist/components/Drawer/index.d.ts +3 -0
  69. package/dist/components/Drawer/index.d.ts.map +1 -0
  70. package/dist/components/Drawer/types.d.ts +21 -0
  71. package/dist/components/Drawer/types.d.ts.map +1 -0
  72. package/dist/components/Dropdown/Dropdown.d.ts +4 -0
  73. package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
  74. package/dist/components/Dropdown/index.d.ts +3 -0
  75. package/dist/components/Dropdown/index.d.ts.map +1 -0
  76. package/dist/components/Dropdown/types.d.ts +19 -0
  77. package/dist/components/Dropdown/types.d.ts.map +1 -0
  78. package/dist/components/ErrorDisplay/ErrorDisplay.d.ts +4 -0
  79. package/dist/components/ErrorDisplay/ErrorDisplay.d.ts.map +1 -0
  80. package/dist/components/ErrorDisplay/index.d.ts +3 -0
  81. package/dist/components/ErrorDisplay/index.d.ts.map +1 -0
  82. package/dist/components/ErrorDisplay/types.d.ts +9 -0
  83. package/dist/components/ErrorDisplay/types.d.ts.map +1 -0
  84. package/dist/components/Input/Checkbox.d.ts +16 -0
  85. package/dist/components/Input/Checkbox.d.ts.map +1 -0
  86. package/dist/components/Input/Input.d.ts +17 -0
  87. package/dist/components/Input/Input.d.ts.map +1 -0
  88. package/dist/components/Input/Select.d.ts +18 -0
  89. package/dist/components/Input/Select.d.ts.map +1 -0
  90. package/dist/components/Input/Textarea.d.ts +18 -0
  91. package/dist/components/Input/Textarea.d.ts.map +1 -0
  92. package/dist/components/Input/index.d.ts +6 -0
  93. package/dist/components/Input/index.d.ts.map +1 -0
  94. package/dist/components/Input/types.d.ts +101 -0
  95. package/dist/components/Input/types.d.ts.map +1 -0
  96. package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts +24 -0
  97. package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts.map +1 -0
  98. package/dist/components/JsonSchemaForm/fields/ArrayField.d.ts +7 -0
  99. package/dist/components/JsonSchemaForm/fields/ArrayField.d.ts.map +1 -0
  100. package/dist/components/JsonSchemaForm/fields/BooleanField.d.ts +8 -0
  101. package/dist/components/JsonSchemaForm/fields/BooleanField.d.ts.map +1 -0
  102. package/dist/components/JsonSchemaForm/fields/EnumField.d.ts +8 -0
  103. package/dist/components/JsonSchemaForm/fields/EnumField.d.ts.map +1 -0
  104. package/dist/components/JsonSchemaForm/fields/NumberField.d.ts +8 -0
  105. package/dist/components/JsonSchemaForm/fields/NumberField.d.ts.map +1 -0
  106. package/dist/components/JsonSchemaForm/fields/ObjectField.d.ts +8 -0
  107. package/dist/components/JsonSchemaForm/fields/ObjectField.d.ts.map +1 -0
  108. package/dist/components/JsonSchemaForm/fields/OneOfField.d.ts +8 -0
  109. package/dist/components/JsonSchemaForm/fields/OneOfField.d.ts.map +1 -0
  110. package/dist/components/JsonSchemaForm/fields/SchemaField.d.ts +8 -0
  111. package/dist/components/JsonSchemaForm/fields/SchemaField.d.ts.map +1 -0
  112. package/dist/components/JsonSchemaForm/fields/StringField.d.ts +8 -0
  113. package/dist/components/JsonSchemaForm/fields/StringField.d.ts.map +1 -0
  114. package/dist/components/JsonSchemaForm/fields/index.d.ts +9 -0
  115. package/dist/components/JsonSchemaForm/fields/index.d.ts.map +1 -0
  116. package/dist/components/JsonSchemaForm/index.d.ts +5 -0
  117. package/dist/components/JsonSchemaForm/index.d.ts.map +1 -0
  118. package/dist/components/JsonSchemaForm/types.d.ts +107 -0
  119. package/dist/components/JsonSchemaForm/types.d.ts.map +1 -0
  120. package/dist/components/JsonSchemaForm/utils.d.ts +16 -0
  121. package/dist/components/JsonSchemaForm/utils.d.ts.map +1 -0
  122. package/dist/components/JsonViewer/JsonViewer.d.ts +4 -0
  123. package/dist/components/JsonViewer/JsonViewer.d.ts.map +1 -0
  124. package/dist/components/JsonViewer/index.d.ts +3 -0
  125. package/dist/components/JsonViewer/index.d.ts.map +1 -0
  126. package/dist/components/JsonViewer/types.d.ts +29 -0
  127. package/dist/components/JsonViewer/types.d.ts.map +1 -0
  128. package/dist/components/Markdown/Markdown.d.ts +4 -0
  129. package/dist/components/Markdown/Markdown.d.ts.map +1 -0
  130. package/dist/components/Markdown/index.d.ts +3 -0
  131. package/dist/components/Markdown/index.d.ts.map +1 -0
  132. package/dist/components/Markdown/types.d.ts +7 -0
  133. package/dist/components/Markdown/types.d.ts.map +1 -0
  134. package/dist/components/Menu/Menu.d.ts +4 -0
  135. package/dist/components/Menu/Menu.d.ts.map +1 -0
  136. package/dist/components/Menu/index.d.ts +3 -0
  137. package/dist/components/Menu/index.d.ts.map +1 -0
  138. package/dist/components/Menu/types.d.ts +25 -0
  139. package/dist/components/Menu/types.d.ts.map +1 -0
  140. package/dist/components/Modal/Modal.d.ts +4 -0
  141. package/dist/components/Modal/Modal.d.ts.map +1 -0
  142. package/dist/components/Modal/index.d.ts +3 -0
  143. package/dist/components/Modal/index.d.ts.map +1 -0
  144. package/dist/components/Modal/types.d.ts +17 -0
  145. package/dist/components/Modal/types.d.ts.map +1 -0
  146. package/dist/components/Pagination/Pagination.d.ts +4 -0
  147. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  148. package/dist/components/Pagination/index.d.ts +3 -0
  149. package/dist/components/Pagination/index.d.ts.map +1 -0
  150. package/dist/components/Pagination/types.d.ts +19 -0
  151. package/dist/components/Pagination/types.d.ts.map +1 -0
  152. package/dist/components/Progress/Progress.d.ts +4 -0
  153. package/dist/components/Progress/Progress.d.ts.map +1 -0
  154. package/dist/components/Progress/index.d.ts +3 -0
  155. package/dist/components/Progress/index.d.ts.map +1 -0
  156. package/dist/components/Progress/types.d.ts +18 -0
  157. package/dist/components/Progress/types.d.ts.map +1 -0
  158. package/dist/components/Section/Section.d.ts +4 -0
  159. package/dist/components/Section/Section.d.ts.map +1 -0
  160. package/dist/components/Section/index.d.ts +3 -0
  161. package/dist/components/Section/index.d.ts.map +1 -0
  162. package/dist/components/Section/types.d.ts +10 -0
  163. package/dist/components/Section/types.d.ts.map +1 -0
  164. package/dist/components/SegmentedControl/SegmentedControl.d.ts +3 -0
  165. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -0
  166. package/dist/components/SegmentedControl/index.d.ts +3 -0
  167. package/dist/components/SegmentedControl/index.d.ts.map +1 -0
  168. package/dist/components/SegmentedControl/types.d.ts +18 -0
  169. package/dist/components/SegmentedControl/types.d.ts.map +1 -0
  170. package/dist/components/Skeleton/Skeleton.d.ts +4 -0
  171. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -0
  172. package/dist/components/Skeleton/index.d.ts +3 -0
  173. package/dist/components/Skeleton/index.d.ts.map +1 -0
  174. package/dist/components/Skeleton/types.d.ts +14 -0
  175. package/dist/components/Skeleton/types.d.ts.map +1 -0
  176. package/dist/components/Snackbar/Snackbar.d.ts +4 -0
  177. package/dist/components/Snackbar/Snackbar.d.ts.map +1 -0
  178. package/dist/components/Snackbar/index.d.ts +3 -0
  179. package/dist/components/Snackbar/index.d.ts.map +1 -0
  180. package/dist/components/Snackbar/types.d.ts +18 -0
  181. package/dist/components/Snackbar/types.d.ts.map +1 -0
  182. package/dist/components/Table/Table.d.ts +4 -0
  183. package/dist/components/Table/Table.d.ts.map +1 -0
  184. package/dist/components/Table/index.d.ts +3 -0
  185. package/dist/components/Table/index.d.ts.map +1 -0
  186. package/dist/components/Table/types.d.ts +41 -0
  187. package/dist/components/Table/types.d.ts.map +1 -0
  188. package/dist/components/Tabs/Tabs.d.ts +4 -0
  189. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  190. package/dist/components/Tabs/index.d.ts +3 -0
  191. package/dist/components/Tabs/index.d.ts.map +1 -0
  192. package/dist/components/Tabs/types.d.ts +20 -0
  193. package/dist/components/Tabs/types.d.ts.map +1 -0
  194. package/dist/components/Toast/Toast.d.ts +4 -0
  195. package/dist/components/Toast/Toast.d.ts.map +1 -0
  196. package/dist/components/Toast/index.d.ts +4 -0
  197. package/dist/components/Toast/index.d.ts.map +1 -0
  198. package/dist/components/Toast/store.d.ts +10 -0
  199. package/dist/components/Toast/store.d.ts.map +1 -0
  200. package/dist/components/Toast/types.d.ts +11 -0
  201. package/dist/components/Toast/types.d.ts.map +1 -0
  202. package/dist/components/Tooltip/Tooltip.d.ts +4 -0
  203. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  204. package/dist/components/Tooltip/index.d.ts +3 -0
  205. package/dist/components/Tooltip/index.d.ts.map +1 -0
  206. package/dist/components/Tooltip/types.d.ts +10 -0
  207. package/dist/components/Tooltip/types.d.ts.map +1 -0
  208. package/dist/components/index.d.ts +56 -0
  209. package/dist/components/index.d.ts.map +1 -0
  210. package/dist/hooks/index.d.ts +8 -0
  211. package/dist/hooks/index.d.ts.map +1 -0
  212. package/dist/hooks/useCopyToClipboard.d.ts +12 -0
  213. package/dist/hooks/useCopyToClipboard.d.ts.map +1 -0
  214. package/dist/hooks/useDialogState.d.ts +19 -0
  215. package/dist/hooks/useDialogState.d.ts.map +1 -0
  216. package/dist/hooks/useDisclosure.d.ts +18 -0
  217. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  218. package/dist/hooks/useIsDark.d.ts +9 -0
  219. package/dist/hooks/useIsDark.d.ts.map +1 -0
  220. package/dist/index.css +1 -0
  221. package/dist/index.d.ts +3 -0
  222. package/dist/index.d.ts.map +1 -0
  223. package/dist/index.js +6246 -0
  224. package/dist/index.js.map +1 -0
  225. package/dist/styles/index.d.ts +1 -0
  226. package/dist/styles/index.d.ts.map +1 -0
  227. package/package.json +69 -0
  228. package/src/styles/theme.css +34 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/Button/Spinner.tsx","../src/components/Button/Button.tsx","../src/components/Badge/Badge.tsx","../src/components/Input/Input.tsx","../src/components/Input/Textarea.tsx","../src/components/Input/Select.tsx","../src/components/Input/Checkbox.tsx","../src/components/Alert/Alert.tsx","../src/components/Modal/Modal.tsx","../src/components/Dialog/Dialog.tsx","../src/hooks/useDialogState.ts","../src/hooks/useIsDark.ts","../src/hooks/useCopyToClipboard.ts","../src/hooks/useDisclosure.ts","../src/components/Drawer/Drawer.tsx","../src/components/Toast/store.ts","../src/components/Toast/Toast.tsx","../src/components/Snackbar/Snackbar.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Accordion/AccordionPanel.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../../../node_modules/.bun/dompurify@3.3.1/node_modules/dompurify/dist/purify.es.mjs","../../../node_modules/.bun/prismjs@1.30.0/node_modules/prismjs/prism.js","../../../node_modules/.bun/prismjs@1.30.0/node_modules/prismjs/components/prism-bash.js","../../../node_modules/.bun/prismjs@1.30.0/node_modules/prismjs/components/prism-json.js","../src/components/CodeBlock/CodeBlock.tsx","../src/components/JsonViewer/JsonViewer.tsx","../../../node_modules/.bun/marked@15.0.12/node_modules/marked/lib/marked.esm.js","../src/components/Markdown/Markdown.tsx","../src/components/Section/Section.tsx","../src/components/ErrorDisplay/ErrorDisplay.tsx","../src/components/JsonSchemaForm/utils.ts","../src/components/JsonSchemaForm/fields/StringField.tsx","../src/components/JsonSchemaForm/fields/NumberField.tsx","../src/components/JsonSchemaForm/fields/BooleanField.tsx","../src/components/JsonSchemaForm/fields/EnumField.tsx","../src/components/JsonSchemaForm/fields/OneOfField.tsx","../src/components/JsonSchemaForm/fields/SchemaField.tsx","../src/components/JsonSchemaForm/fields/ObjectField.tsx","../src/components/JsonSchemaForm/fields/ArrayField.tsx","../src/components/JsonSchemaForm/JsonSchemaForm.tsx","../src/components/Menu/Menu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Table/Table.tsx","../src/components/Card/Card.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Progress/Progress.tsx","../src/components/Chip/Chip.tsx"],"sourcesContent":["import type { Component } from 'solid-js';\nimport type { ButtonSize, SpinnerProps } from './types';\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'h-3.5 w-3.5',\n md: 'h-[1.125rem] w-[1.125rem]',\n lg: 'h-5 w-5',\n};\n\nexport const Spinner: Component<SpinnerProps> = (props) => {\n const size = () => props.size ?? 'md';\n\n return (\n <svg\n class={`animate-spin ${sizeClasses[size()]} ${props.class ?? ''}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n};\n","import type { Component } from 'solid-js';\nimport { Show } from 'solid-js';\nimport { Spinner } from './Spinner';\nimport type { ButtonProps, ButtonSize, ButtonVariant } from './types';\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n tertiary: 'btn-tertiary',\n};\n\n// Note: .btn-primary/.btn-secondary/.btn-tertiary already define padding in CSS\n// These size classes only adjust when a non-default size is used\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'px-2.5 py-1.5 text-xs gap-1.5',\n md: 'gap-2.5', // Default: use padding from CSS classes\n lg: 'px-6 py-3 text-base gap-2.5',\n};\n\nexport const Button: Component<ButtonProps> = (props) => {\n const variant = () => props.variant ?? 'primary';\n const size = () => props.size ?? 'md';\n\n return (\n <button\n type={props.type ?? 'button'}\n class={`${variantClasses[variant()]} ${sizeClasses[size()]} inline-flex items-center justify-center focus:outline-none focus-ring ${props.fullWidth ? 'w-full' : ''} ${props.class ?? ''}`}\n onClick={props.onClick}\n disabled={props.disabled || props.loading}\n >\n <Show when={props.loading}>\n <Spinner size={size()} />\n </Show>\n <Show when={!props.loading && props.leftIcon}>{props.leftIcon}</Show>\n {props.children}\n <Show when={props.rightIcon}>{props.rightIcon}</Show>\n </button>\n );\n};\n","import type { Component } from 'solid-js';\nimport type { BadgeProps, BadgeSize, BadgeVariant, HttpMethod } from './types';\n\nconst variantStyles: Record<BadgeVariant, string> = {\n default: 'bg-surface-100 dark:bg-surface-800 text-surface-700 dark:text-surface-300',\n success: 'bg-emerald-100 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-300',\n warning: 'bg-amber-100 dark:bg-amber-900/30 text-amber-700 dark:text-amber-300',\n error: 'bg-rose-100 dark:bg-rose-900/30 text-rose-700 dark:text-rose-300',\n info: 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300',\n method: '', // Handled separately based on method prop\n};\n\nconst methodStyles: Record<HttpMethod, string> = {\n get: 'bg-emerald-100 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-300',\n post: 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300',\n put: 'bg-amber-100 dark:bg-amber-900/30 text-amber-700 dark:text-amber-300',\n patch: 'bg-violet-100 dark:bg-violet-900/30 text-violet-700 dark:text-violet-300',\n delete: 'bg-rose-100 dark:bg-rose-900/30 text-rose-700 dark:text-rose-300',\n head: 'bg-cyan-100 dark:bg-cyan-900/30 text-cyan-700 dark:text-cyan-300',\n options: 'bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300',\n};\n\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: 'px-1.5 py-0.5 text-[0.625rem]',\n md: 'px-2 py-0.5 text-xs',\n lg: 'px-2.5 py-1 text-sm',\n};\n\nexport const Badge: Component<BadgeProps> = (props) => {\n const variant = () => props.variant ?? 'default';\n const size = () => props.size ?? 'md';\n\n const getVariantStyle = () => {\n if (variant() === 'method' && props.method) {\n return methodStyles[props.method];\n }\n return variantStyles[variant()];\n };\n\n return (\n <span\n class={`inline-flex items-center font-semibold rounded-md ${sizeStyles[size()]} ${getVariantStyle()} ${props.class ?? ''}`}\n >\n {props.children}\n </span>\n );\n};\n","import type { Component } from 'solid-js';\nimport type { InputProps, InputSize } from './types';\n\n/**\n * Get size-specific classes for the input\n */\nconst getSizeClasses = (size: InputSize): string => {\n switch (size) {\n case 'sm':\n return 'px-2.5 py-1.5 text-xs';\n case 'lg':\n return 'px-4 py-3 text-base';\n default:\n return 'px-3 sm:px-4 py-2 sm:py-2.5 text-sm';\n }\n};\n\n/**\n * A glassmorphic text input component with size variants.\n *\n * @example\n * ```tsx\n * <Input\n * value={value()}\n * onInput={setValue}\n * placeholder=\"Enter text...\"\n * size=\"md\"\n * />\n * ```\n */\nexport const Input: Component<InputProps> = (props) => {\n const sizeClasses = () => getSizeClasses(props.size ?? 'md');\n\n return (\n <input\n type={props.type ?? 'text'}\n id={props.id}\n name={props.name}\n class={`w-full glass-input text-surface-900 dark:text-surface-100 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed ${sizeClasses()} ${props.class ?? ''}`}\n placeholder={props.placeholder}\n value={props.value}\n disabled={props.disabled}\n readonly={props.readonly}\n required={props.required}\n autocomplete={props.autocomplete}\n onInput={(e) => props.onInput(e.currentTarget.value)}\n onKeyDown={props.onKeyDown}\n />\n );\n};\n","import type { Component } from 'solid-js';\nimport type { InputSize, TextareaProps } from './types';\n\n/**\n * Get size-specific classes for the textarea\n */\nconst getSizeClasses = (size: InputSize): string => {\n switch (size) {\n case 'sm':\n return 'px-2.5 py-1.5 text-xs';\n case 'lg':\n return 'px-4 py-3 text-base';\n default:\n return 'px-3 py-2 text-sm';\n }\n};\n\n/**\n * A glassmorphic textarea component with size variants.\n *\n * @example\n * ```tsx\n * <Textarea\n * value={value()}\n * onInput={setValue}\n * placeholder=\"Enter text...\"\n * rows={4}\n * size=\"md\"\n * />\n * ```\n */\nexport const Textarea: Component<TextareaProps> = (props) => {\n const sizeClasses = () => getSizeClasses(props.size ?? 'md');\n\n return (\n <textarea\n id={props.id}\n name={props.name}\n class={`w-full glass-input text-surface-800 dark:text-surface-200 resize-y focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed ${sizeClasses()} ${props.class ?? ''}`}\n placeholder={props.placeholder}\n value={props.value}\n rows={props.rows}\n disabled={props.disabled}\n readonly={props.readonly}\n required={props.required}\n onInput={(e) => props.onInput(e.currentTarget.value)}\n />\n );\n};\n","import type { Component } from 'solid-js';\nimport type { SelectProps } from './types';\n\n/**\n * A glassmorphic select component with a custom dropdown indicator.\n *\n * @example\n * ```tsx\n * <Select\n * value={selected()}\n * onChange={setSelected}\n * >\n * <option value=\"a\">Option A</option>\n * <option value=\"b\">Option B</option>\n * </Select>\n * ```\n */\nexport const Select: Component<SelectProps> = (props) => {\n return (\n <div class=\"relative overflow-hidden\">\n <select\n id={props.id}\n name={props.name}\n class={`w-full px-3 py-2 sm:py-2.5 glass-input text-sm text-surface-800 dark:text-surface-200 font-medium focus:outline-none cursor-pointer appearance-none pr-9 disabled:opacity-50 disabled:cursor-not-allowed truncate ${props.class ?? ''}`}\n value={props.value}\n disabled={props.disabled}\n required={props.required}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n style={{ 'text-overflow': 'ellipsis' }}\n >\n {props.children}\n </select>\n <div class=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none\">\n <svg\n class=\"w-4 h-4 text-gray-400 dark:text-gray-500\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </div>\n </div>\n );\n};\n","import { type Component, Show } from 'solid-js';\nimport type { CheckboxProps } from './types';\n\n/**\n * A glassmorphic checkbox component with an optional label.\n *\n * @example\n * ```tsx\n * <Checkbox\n * checked={isChecked()}\n * onChange={setIsChecked}\n * label=\"Accept terms and conditions\"\n * />\n * ```\n */\nexport const Checkbox: Component<CheckboxProps> = (props) => {\n return (\n <label\n class={`inline-flex items-center gap-3 cursor-pointer ${props.disabled ? 'opacity-50 cursor-not-allowed' : ''} ${props.class ?? ''}`}\n >\n <div\n class={`w-5 h-5 flex items-center justify-center ${\n props.checked ? 'glass-checkbox-checked' : 'glass-checkbox'\n }`}\n >\n <input\n type=\"checkbox\"\n id={props.id}\n name={props.name}\n checked={props.checked}\n disabled={props.disabled}\n required={props.required}\n onChange={(e) => props.onChange(e.currentTarget.checked)}\n class=\"sr-only\"\n />\n <svg\n class={`w-3 h-3 text-white transition-all duration-200 ${props.checked ? 'opacity-100 scale-100' : 'opacity-0 scale-75'}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n </div>\n <Show when={props.label}>\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">{props.label}</span>\n </Show>\n </label>\n );\n};\n","import { type Component, Show } from 'solid-js';\nimport type { AlertProps, AlertType } from './types';\n\nconst typeStyles: Record<AlertType, { border: string; bg: string; icon: string; iconBg: string }> =\n {\n info: {\n border: 'border-l-blue-500',\n bg: 'bg-blue-50/50 dark:bg-blue-900/10',\n icon: 'text-blue-600 dark:text-blue-400',\n iconBg: 'bg-blue-100 dark:bg-blue-900/30',\n },\n success: {\n border: 'border-l-emerald-500',\n bg: 'bg-emerald-50/50 dark:bg-emerald-900/10',\n icon: 'text-emerald-600 dark:text-emerald-400',\n iconBg: 'bg-emerald-100 dark:bg-emerald-900/30',\n },\n warning: {\n border: 'border-l-amber-500',\n bg: 'bg-amber-50/50 dark:bg-amber-900/10',\n icon: 'text-amber-600 dark:text-amber-400',\n iconBg: 'bg-amber-100 dark:bg-amber-900/30',\n },\n error: {\n border: 'border-l-rose-500',\n bg: 'bg-rose-50/50 dark:bg-rose-900/10',\n icon: 'text-rose-600 dark:text-rose-400',\n iconBg: 'bg-rose-100 dark:bg-rose-900/30',\n },\n };\n\nconst InfoIcon: Component = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n);\n\nconst SuccessIcon: Component = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\" />\n </svg>\n);\n\nconst WarningIcon: Component = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n);\n\nconst ErrorIcon: Component = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n);\n\nconst DefaultIcon: Component<{ type: AlertType }> = (props) => (\n <Show\n when={props.type === 'info'}\n fallback={\n <Show\n when={props.type === 'success'}\n fallback={\n <Show when={props.type === 'warning'} fallback={<ErrorIcon />}>\n <WarningIcon />\n </Show>\n }\n >\n <SuccessIcon />\n </Show>\n }\n >\n <InfoIcon />\n </Show>\n);\n\nexport const Alert: Component<AlertProps> = (props) => {\n const styles = () => typeStyles[props.type];\n\n return (\n <div\n class={`glass-card border-l-4 ${styles().border} ${styles().bg} p-4 rounded-xl ${props.class ?? ''}`}\n role=\"alert\"\n >\n <div class=\"flex items-start gap-3\">\n {/* Icon */}\n <div\n class={`flex-shrink-0 w-8 h-8 rounded-lg ${styles().iconBg} ${styles().icon} flex items-center justify-center`}\n >\n <Show when={props.icon} fallback={<DefaultIcon type={props.type} />}>\n {props.icon}\n </Show>\n </div>\n\n {/* Content */}\n <div class=\"flex-1 min-w-0\">\n <Show when={props.title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-1\">{props.title}</h3>\n </Show>\n <div class=\"text-sm text-gray-700 dark:text-gray-300\">{props.children}</div>\n </div>\n\n {/* Close button */}\n <Show when={props.onClose}>\n <button\n type=\"button\"\n onClick={props.onClose}\n class=\"flex-shrink-0 p-1.5 rounded-lg text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 hover:bg-black/5 dark:hover:bg-white/5 transition-colors\"\n aria-label=\"Close\"\n >\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </Show>\n </div>\n </div>\n );\n};\n","import { type Component, Show, createEffect, onCleanup, onMount } from 'solid-js';\nimport type { ModalProps, ModalSize } from './types';\n\nconst sizeStyles: Record<ModalSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n full: 'max-w-4xl',\n};\n\nexport const Modal: Component<ModalProps> = (props) => {\n let dialogRef: HTMLDialogElement | undefined;\n\n const size = () => props.size ?? 'md';\n const showClose = () => props.showClose ?? true;\n const closeOnBackdrop = () => props.closeOnBackdrop ?? true;\n const closeOnEscape = () => props.closeOnEscape ?? true;\n\n // Sync dialog open state with props.open\n createEffect(() => {\n if (!dialogRef) {\n return;\n }\n\n if (props.open) {\n if (!dialogRef.open) {\n dialogRef.showModal();\n }\n } else {\n if (dialogRef.open) {\n dialogRef.close();\n }\n }\n });\n\n // Handle native dialog close event (e.g., Escape key)\n // Using onMount since this only needs to run once and has no reactive dependencies\n onMount(() => {\n if (!dialogRef) {\n return;\n }\n\n const handleClose = () => {\n if (props.open) {\n props.onClose();\n }\n };\n\n const handleCancel = (e: Event) => {\n if (!closeOnEscape()) {\n e.preventDefault();\n }\n };\n\n dialogRef.addEventListener('close', handleClose);\n dialogRef.addEventListener('cancel', handleCancel);\n\n onCleanup(() => {\n dialogRef?.removeEventListener('close', handleClose);\n dialogRef?.removeEventListener('cancel', handleCancel);\n });\n });\n\n // Prevent body scroll when modal is open\n createEffect(() => {\n if (props.open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n onCleanup(() => {\n document.body.style.overflow = '';\n });\n });\n\n const handleBackdropClick = (e: MouseEvent) => {\n if (closeOnBackdrop() && e.target === dialogRef) {\n props.onClose();\n }\n };\n\n return (\n <dialog\n ref={dialogRef}\n class=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-transparent backdrop:bg-black/50 backdrop:backdrop-blur-sm m-auto\"\n onClick={handleBackdropClick}\n onKeyDown={(e) => e.key === 'Enter' && e.target === dialogRef && props.onClose()}\n aria-labelledby={props.title ? 'modal-title' : undefined}\n >\n <div\n class={`w-full ${sizeStyles[size()]} glass-card rounded-2xl shadow-2xl animate-in zoom-in-95 fade-in duration-200`}\n >\n {/* Header */}\n <Show when={props.title || showClose()}>\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-gray-200 dark:border-white/5\">\n <Show when={props.title}>\n <h2 id=\"modal-title\" class=\"text-lg font-semibold text-gray-900 dark:text-white\">\n {props.title}\n </h2>\n </Show>\n <Show when={showClose()}>\n <button\n type=\"button\"\n onClick={props.onClose}\n class=\"ml-auto p-2 rounded-xl text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 hover:bg-black/5 dark:hover:bg-white/5 transition-colors\"\n aria-label=\"Close\"\n >\n <svg\n class=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </Show>\n </div>\n </Show>\n\n {/* Content */}\n <div class=\"p-6 max-h-[70vh] overflow-y-auto scrollbar-thin\">{props.children}</div>\n\n {/* Footer */}\n <Show when={props.footer}>\n <div class=\"flex items-center justify-end gap-3 px-6 py-4 border-t border-gray-200 dark:border-white/5\">\n {props.footer}\n </div>\n </Show>\n </div>\n </dialog>\n );\n};\n","import { type Component, Show, createEffect, onCleanup, onMount } from 'solid-js';\nimport type { DialogProps, DialogVariant } from './types';\n\nconst confirmButtonStyles: Record<DialogVariant, string> = {\n default: 'btn-primary',\n danger:\n 'bg-rose-600 hover:bg-rose-700 text-white rounded-xl font-medium transition-colors focus:outline-none focus-ring',\n};\n\nexport const Dialog: Component<DialogProps> = (props) => {\n let dialogRef: HTMLDialogElement | undefined;\n\n const variant = () => props.variant ?? 'default';\n const confirmLabel = () => props.confirmLabel ?? 'Confirm';\n const cancelLabel = () => props.cancelLabel ?? 'Cancel';\n\n // Sync dialog open state with props.open\n createEffect(() => {\n if (!dialogRef) {\n return;\n }\n\n if (props.open) {\n if (!dialogRef.open) {\n dialogRef.showModal();\n }\n } else {\n if (dialogRef.open) {\n dialogRef.close();\n }\n }\n });\n\n // Handle native dialog close event (e.g., Escape key)\n onMount(() => {\n if (!dialogRef) {\n return;\n }\n\n const handleClose = () => {\n if (props.open) {\n props.onOpenChange(false);\n props.onCancel?.();\n }\n };\n\n dialogRef.addEventListener('close', handleClose);\n\n onCleanup(() => {\n dialogRef?.removeEventListener('close', handleClose);\n });\n });\n\n // Prevent body scroll when dialog is open\n createEffect(() => {\n if (props.open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n onCleanup(() => {\n document.body.style.overflow = '';\n });\n });\n\n const handleBackdropClick = (e: MouseEvent) => {\n if (e.target === dialogRef) {\n props.onOpenChange(false);\n props.onCancel?.();\n }\n };\n\n const handleCancel = () => {\n props.onOpenChange(false);\n props.onCancel?.();\n };\n\n const handleConfirm = () => {\n props.onConfirm();\n props.onOpenChange(false);\n };\n\n return (\n // biome-ignore lint/a11y/useKeyWithClickEvents: Native dialog handles Escape key\n <dialog\n ref={dialogRef}\n class=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-transparent backdrop:bg-black/50 backdrop:backdrop-blur-sm m-auto\"\n onClick={handleBackdropClick}\n aria-labelledby=\"dialog-title\"\n aria-describedby={props.description ? 'dialog-description' : undefined}\n >\n <div class=\"w-full max-w-sm glass-card rounded-2xl shadow-2xl animate-in zoom-in-95 fade-in duration-200\">\n {/* Content */}\n <div class=\"p-6\">\n <h2 id=\"dialog-title\" class=\"text-lg font-semibold text-gray-900 dark:text-white\">\n {props.title}\n </h2>\n <Show when={props.description}>\n <p id=\"dialog-description\" class=\"mt-2 text-sm text-gray-600 dark:text-gray-400\">\n {props.description}\n </p>\n </Show>\n </div>\n\n {/* Actions */}\n <div class=\"flex items-center justify-end gap-3 px-6 py-4 border-t border-gray-200 dark:border-white/5\">\n <button type=\"button\" onClick={handleCancel} class=\"btn-secondary px-4 py-2 text-sm\">\n {cancelLabel()}\n </button>\n <button\n type=\"button\"\n onClick={handleConfirm}\n class={`${confirmButtonStyles[variant()]} px-4 py-2 text-sm`}\n >\n {confirmLabel()}\n </button>\n </div>\n </div>\n </dialog>\n );\n};\n","import { type Accessor, createEffect, onCleanup } from 'solid-js';\n\nexport interface UseDialogStateOptions {\n open: Accessor<boolean>;\n onClose: () => void;\n closeOnEscape?: Accessor<boolean>;\n closeOnBackdrop?: Accessor<boolean>;\n}\n\nexport interface UseDialogStateReturn {\n /** Whether clicking backdrop should close the dialog */\n shouldCloseOnBackdrop: Accessor<boolean>;\n /** Handler for backdrop click events */\n handleBackdropClick: (e: MouseEvent, targetCheck?: (e: MouseEvent) => boolean) => void;\n}\n\n/**\n * Shared dialog state management for Modal and Drawer components.\n * Handles escape key, body scroll prevention, and backdrop clicks.\n */\nexport function useDialogState(options: UseDialogStateOptions): UseDialogStateReturn {\n const { open, onClose, closeOnEscape, closeOnBackdrop } = options;\n\n const shouldCloseOnEscape = () => closeOnEscape?.() ?? true;\n const shouldCloseOnBackdrop = () => closeOnBackdrop?.() ?? true;\n\n // Handle escape key (for non-dialog elements like Drawer)\n createEffect(() => {\n if (!open() || !shouldCloseOnEscape()) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n onCleanup(() => document.removeEventListener('keydown', handleKeyDown));\n });\n\n // Prevent body scroll when dialog is open\n createEffect(() => {\n if (open()) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n onCleanup(() => {\n document.body.style.overflow = '';\n });\n });\n\n const handleBackdropClick = (\n e: MouseEvent,\n targetCheck: (e: MouseEvent) => boolean = (ev) => ev.target === ev.currentTarget,\n ) => {\n if (shouldCloseOnBackdrop() && targetCheck(e)) {\n onClose();\n }\n };\n\n return {\n shouldCloseOnBackdrop,\n handleBackdropClick,\n };\n}\n","/**\n * Check if dark mode is active.\n * Needed for Portal which renders outside the dark class container.\n *\n * Returns a function that checks the current state each time it's called,\n * ensuring correct detection even when dark mode changes.\n */\nexport function useIsDark() {\n return () =>\n document.documentElement.classList.contains('dark') || document.querySelector('.dark') !== null;\n}\n","import { createSignal } from 'solid-js';\n\nexport interface UseCopyToClipboardReturn {\n copied: () => boolean;\n copy: (text: string) => Promise<boolean>;\n}\n\n/**\n * Hook for copying text to clipboard with a \"copied\" state indicator.\n * The copied state resets to false after the specified duration.\n *\n * @param resetDelay - Time in ms before copied state resets (default: 2000)\n */\nexport function useCopyToClipboard(resetDelay = 2000): UseCopyToClipboardReturn {\n const [copied, setCopied] = createSignal(false);\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const copy = async (text: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => {\n setCopied(false);\n timeoutId = undefined;\n }, resetDelay);\n\n return true;\n } catch {\n // Clipboard API may fail in insecure contexts or without permissions\n return false;\n }\n };\n\n return { copied, copy };\n}\n","import { type Accessor, createSignal } from 'solid-js';\n\nexport interface UseDisclosureReturn {\n /** Whether the disclosure is currently open */\n isOpen: Accessor<boolean>;\n /** Open the disclosure */\n onOpen: () => void;\n /** Close the disclosure */\n onClose: () => void;\n /** Toggle the disclosure state */\n onToggle: () => void;\n}\n\n/**\n * Hook for managing open/close state of disclosures like modals, drawers, menus, etc.\n *\n * @param initialState - Initial open state (default: false)\n */\nexport function useDisclosure(initialState = false): UseDisclosureReturn {\n const [isOpen, setIsOpen] = createSignal(initialState);\n\n return {\n isOpen,\n onOpen: () => setIsOpen(true),\n onClose: () => setIsOpen(false),\n onToggle: () => setIsOpen((prev) => !prev),\n };\n}\n","import { type Component, Show, createEffect, createSignal, onCleanup } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { useDialogState, useIsDark } from '../../hooks';\nimport type { DrawerPosition, DrawerProps, DrawerSize } from './types';\n\nconst sizeStyles: Record<DrawerSize, string> = {\n sm: 'max-w-xs',\n md: 'max-w-sm',\n lg: 'max-w-md',\n xl: 'max-w-lg',\n};\n\nconst positionStyles: Record<DrawerPosition, { panel: string; enter: string; exit: string }> = {\n left: {\n panel: 'left-0',\n enter: 'animate-in slide-in-from-left',\n exit: 'animate-out slide-out-to-left',\n },\n right: {\n panel: 'right-0',\n enter: 'animate-in slide-in-from-right',\n exit: 'animate-out slide-out-to-right',\n },\n};\n\nconst ANIMATION_DURATION = 200;\n\nexport const Drawer: Component<DrawerProps> = (props) => {\n const position = () => props.position ?? 'right';\n const size = () => props.size ?? 'md';\n const showClose = () => props.showClose ?? true;\n\n // Track visibility separately from open state for exit animation\n const [visible, setVisible] = createSignal(false);\n const [isClosing, setIsClosing] = createSignal(false);\n\n // Use shared dialog state hook for escape, scroll lock, and backdrop\n const { handleBackdropClick } = useDialogState({\n open: visible,\n onClose: props.onClose,\n closeOnEscape: () => props.closeOnEscape ?? true,\n closeOnBackdrop: () => props.closeOnBackdrop ?? true,\n });\n\n // Handle open/close transitions\n createEffect(() => {\n if (props.open) {\n setIsClosing(false);\n setVisible(true);\n } else if (visible()) {\n // Start closing animation\n setIsClosing(true);\n const timer = setTimeout(() => {\n setVisible(false);\n setIsClosing(false);\n }, ANIMATION_DURATION);\n onCleanup(() => clearTimeout(timer));\n }\n });\n\n const styles = () => positionStyles[position()];\n\n // Check if dark mode is active (needed for Portal which renders outside the dark class container)\n const isDark = useIsDark();\n\n const backdropClasses = () =>\n isClosing() ? 'animate-out fade-out duration-200' : 'animate-in fade-in duration-200';\n\n const drawerClasses = () =>\n isClosing() ? `${styles().exit} duration-200` : `${styles().enter} duration-300`;\n\n return (\n <Show when={visible()}>\n <Portal>\n {/* biome-ignore lint/a11y/useKeyWithClickEvents: Backdrop click is supplementary to Escape key (handled by useDialogState) */}\n <div\n class={`fixed inset-0 z-50 bg-black/50 backdrop-blur-sm ${backdropClasses()} ${isDark() ? 'dark' : ''}`}\n onClick={(e) => handleBackdropClick(e)}\n aria-modal=\"true\"\n aria-labelledby={props.title ? 'drawer-title' : undefined}\n >\n <div\n class={`absolute inset-y-0 ${styles().panel} w-full ${sizeStyles[size()]} glass-thick shadow-2xl overflow-hidden ${drawerClasses()}`}\n >\n <div class=\"flex flex-col h-full overflow-hidden\">\n {/* Header */}\n <Show when={props.title || showClose()}>\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-gray-200 dark:border-white/5\">\n <Show when={props.title}>\n <h2\n id=\"drawer-title\"\n class=\"text-lg font-semibold text-gray-900 dark:text-white\"\n >\n {props.title}\n </h2>\n </Show>\n <Show when={showClose()}>\n <button\n type=\"button\"\n onClick={props.onClose}\n class=\"ml-auto p-2 rounded-xl text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 hover:bg-black/5 dark:hover:bg-white/5 transition-colors\"\n aria-label=\"Close\"\n >\n <svg\n class=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </Show>\n </div>\n </Show>\n\n {/* Content */}\n <div\n class={`flex-1 min-h-0 overflow-y-auto overflow-x-hidden flex flex-col scrollbar-thin ${props.noPadding ? '' : 'p-6'}`}\n >\n {props.children}\n </div>\n\n {/* Footer */}\n <Show when={props.footer}>\n <div class=\"flex items-center justify-end gap-3 px-6 py-4 border-t border-gray-200 dark:border-white/5\">\n {props.footer}\n </div>\n </Show>\n </div>\n </div>\n </div>\n </Portal>\n </Show>\n );\n};\n","import { createStore, produce } from 'solid-js/store';\nimport type { ToastStore, ToastType } from './types';\n\nconst [store, setStore] = createStore<ToastStore>({ toasts: [] });\n\nlet toastId = 0;\n\n/** Add a toast notification */\nexport function toast(message: string, type: ToastType = 'info', duration = 4000) {\n const id = `toast-${++toastId}`;\n setStore(\n produce((s) => {\n s.toasts.push({ id, type, message, duration });\n }),\n );\n\n if (duration > 0) {\n setTimeout(() => {\n dismissToast(id);\n }, duration);\n }\n\n return id;\n}\n\n/** Dismiss a toast by ID */\nexport function dismissToast(id: string) {\n setStore(\n produce((s) => {\n s.toasts = s.toasts.filter((t) => t.id !== id);\n }),\n );\n}\n\n/** Clear all toasts */\nexport function clearToasts() {\n setStore('toasts', []);\n}\n\n/** Get the toast store (read-only) */\nexport function getToastStore() {\n return store;\n}\n","import { type Component, For, Show, createSignal } from 'solid-js';\nimport { dismissToast, getToastStore } from './store';\nimport type { Toast, ToastType } from './types';\n\nconst typeStyles: Record<ToastType, { bg: string; icon: string; iconBg: string }> = {\n success: {\n bg: 'bg-emerald-50 dark:bg-emerald-900/20 border-emerald-200 dark:border-emerald-800/30',\n icon: 'text-emerald-600 dark:text-emerald-400',\n iconBg: 'bg-emerald-100 dark:bg-emerald-900/30',\n },\n error: {\n bg: 'bg-rose-50 dark:bg-rose-900/20 border-rose-200 dark:border-rose-800/30',\n icon: 'text-rose-600 dark:text-rose-400',\n iconBg: 'bg-rose-100 dark:bg-rose-900/30',\n },\n warning: {\n bg: 'bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800/30',\n icon: 'text-amber-600 dark:text-amber-400',\n iconBg: 'bg-amber-100 dark:bg-amber-900/30',\n },\n info: {\n bg: 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800/30',\n icon: 'text-blue-600 dark:text-blue-400',\n iconBg: 'bg-blue-100 dark:bg-blue-900/30',\n },\n};\n\nconst ToastIcon: Component<{ type: ToastType }> = (props) => {\n return (\n <Show\n when={props.type === 'success'}\n fallback={\n <Show\n when={props.type === 'error'}\n fallback={\n <Show\n when={props.type === 'warning'}\n fallback={\n <svg\n class=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n }\n >\n <svg\n class=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </Show>\n }\n >\n <svg\n class=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </Show>\n }\n >\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\" />\n </svg>\n </Show>\n );\n};\n\nconst ToastItem: Component<{ toast: Toast }> = (props) => {\n const [exiting, setExiting] = createSignal(false);\n const styles = () => typeStyles[props.toast.type];\n\n const handleDismiss = () => {\n setExiting(true);\n setTimeout(() => dismissToast(props.toast.id), 200);\n };\n\n return (\n <div\n class={`flex items-start gap-3 p-4 rounded-xl border shadow-lg backdrop-blur-sm transition-all duration-200 ${styles().bg} ${exiting() ? 'opacity-0 translate-x-4' : 'animate-in slide-in-from-right-4 fade-in'}`}\n role=\"alert\"\n >\n <div\n class={`flex-shrink-0 w-8 h-8 rounded-lg ${styles().iconBg} ${styles().icon} flex items-center justify-center`}\n >\n <ToastIcon type={props.toast.type} />\n </div>\n <p class=\"flex-1 text-sm font-medium text-gray-800 dark:text-gray-200 pt-1\">\n {props.toast.message}\n </p>\n <button\n type=\"button\"\n onClick={handleDismiss}\n class=\"flex-shrink-0 p-1 rounded-lg text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 hover:bg-black/5 dark:hover:bg-white/5 transition-colors\"\n aria-label=\"Dismiss\"\n >\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n );\n};\n\n/** Toast container - add once to your app root */\nexport const ToastContainer: Component = () => {\n const store = getToastStore();\n\n return (\n <div class=\"fixed top-4 right-4 z-50 flex flex-col gap-3 max-w-sm w-full pointer-events-none\">\n <For each={store.toasts}>\n {(t) => (\n <div class=\"pointer-events-auto\">\n <ToastItem toast={t} />\n </div>\n )}\n </For>\n </div>\n );\n};\n","import { type Component, Show, createEffect, createSignal, onCleanup } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { useIsDark } from '../../hooks';\nimport type { SnackbarPosition, SnackbarProps } from './types';\n\nconst positionStyles: Record<SnackbarPosition, string> = {\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-4 right-4',\n};\n\nconst ANIMATION_DURATION = 200;\nconst DEFAULT_DURATION = 4000;\n\nexport const Snackbar: Component<SnackbarProps> = (props) => {\n const position = () => props.position ?? 'bottom-center';\n const duration = () => props.duration ?? DEFAULT_DURATION;\n\n // Track visibility separately from open state for exit animation\n const [visible, setVisible] = createSignal(false);\n const [isClosing, setIsClosing] = createSignal(false);\n\n // Check if dark mode is active (needed for Portal which renders outside the dark class container)\n const isDark = useIsDark();\n\n // Handle open/close transitions\n createEffect(() => {\n if (props.open) {\n setIsClosing(false);\n setVisible(true);\n } else if (visible()) {\n // Start closing animation\n setIsClosing(true);\n const timer = setTimeout(() => {\n setVisible(false);\n setIsClosing(false);\n }, ANIMATION_DURATION);\n onCleanup(() => clearTimeout(timer));\n }\n });\n\n // Auto-dismiss timer\n createEffect(() => {\n if (props.open && duration() > 0) {\n const timer = setTimeout(() => {\n props.onClose();\n }, duration());\n onCleanup(() => clearTimeout(timer));\n }\n });\n\n const handleAction = () => {\n props.onAction?.();\n props.onClose();\n };\n\n const enterAnimation = () => {\n switch (position()) {\n case 'bottom-left':\n return 'animate-in slide-in-from-left-4 fade-in';\n case 'bottom-right':\n return 'animate-in slide-in-from-right-4 fade-in';\n default:\n return 'animate-in slide-in-from-bottom-4 fade-in';\n }\n };\n\n const exitAnimation = () => {\n switch (position()) {\n case 'bottom-left':\n return 'animate-out slide-out-to-left-4 fade-out';\n case 'bottom-right':\n return 'animate-out slide-out-to-right-4 fade-out';\n default:\n return 'animate-out slide-out-to-bottom-4 fade-out';\n }\n };\n\n const animationClasses = () =>\n isClosing() ? `${exitAnimation()} duration-200` : `${enterAnimation()} duration-200`;\n\n return (\n <Show when={visible()}>\n <Portal>\n <output\n class={`fixed ${positionStyles[position()]} z-50 ${isDark() ? 'dark' : ''}`}\n aria-live=\"polite\"\n >\n <div\n class={`glass-card flex items-center gap-3 px-4 py-3 rounded-xl shadow-lg min-w-[200px] max-w-sm ${animationClasses()}`}\n >\n <p class=\"flex-1 text-sm font-medium text-gray-800 dark:text-gray-200\">\n {props.message}\n </p>\n <Show when={props.action}>\n <button\n type=\"button\"\n onClick={handleAction}\n class=\"flex-shrink-0 text-sm font-semibold text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 transition-colors\"\n >\n {props.action}\n </button>\n </Show>\n <button\n type=\"button\"\n onClick={props.onClose}\n class=\"flex-shrink-0 p-1 rounded-lg text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 hover:bg-black/5 dark:hover:bg-white/5 transition-colors\"\n aria-label=\"Dismiss\"\n >\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n </output>\n </Portal>\n </Show>\n );\n};\n","import { type Component, Show, createSignal, onCleanup } from 'solid-js';\nimport type { TooltipPosition, TooltipProps } from './types';\n\nconst positionStyles: Record<TooltipPosition, string> = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n};\n\nconst arrowStyles: Record<TooltipPosition, string> = {\n top: 'top-full left-1/2 -translate-x-1/2 border-t-surface-900 dark:border-t-surface-800 border-x-transparent border-b-transparent',\n bottom:\n 'bottom-full left-1/2 -translate-x-1/2 border-b-surface-900 dark:border-b-surface-800 border-x-transparent border-t-transparent',\n left: 'left-full top-1/2 -translate-y-1/2 border-l-surface-900 dark:border-l-surface-800 border-y-transparent border-r-transparent',\n right:\n 'right-full top-1/2 -translate-y-1/2 border-r-surface-900 dark:border-r-surface-800 border-y-transparent border-l-transparent',\n};\n\nexport const Tooltip: Component<TooltipProps> = (props) => {\n const [visible, setVisible] = createSignal(false);\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const position = () => props.position ?? 'top';\n const delay = () => props.delay ?? 200;\n\n const showTooltip = () => {\n timeoutId = setTimeout(() => setVisible(true), delay());\n };\n\n const hideTooltip = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n setVisible(false);\n };\n\n onCleanup(() => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n });\n\n return (\n <div\n class={`relative inline-flex ${props.class ?? ''}`}\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n onFocusIn={showTooltip}\n onFocusOut={hideTooltip}\n >\n {props.children}\n <Show when={visible()}>\n <div\n class={`absolute z-50 ${positionStyles[position()]} animate-in fade-in zoom-in-95 duration-150`}\n role=\"tooltip\"\n >\n <div class=\"px-3 py-1.5 text-xs font-medium glass-tooltip rounded-lg whitespace-nowrap\">\n {props.content}\n </div>\n <div class={`absolute w-0 h-0 border-4 ${arrowStyles[position()]}`} aria-hidden=\"true\" />\n </div>\n </Show>\n </div>\n );\n};\n","import { type Component, For, Show, createMemo, createSignal } from 'solid-js';\nimport type { TabsProps } from './types';\n\nexport const Tabs: Component<TabsProps> = (props) => {\n // Internal state for uncontrolled mode\n const [internalTab, setInternalTab] = createSignal(props.defaultTab || props.items[0]?.id);\n\n // Determine if we're in controlled mode\n const isControlled = createMemo(() => props.activeTab !== undefined);\n\n // Get the current active tab (controlled or uncontrolled)\n const activeTab = createMemo(() =>\n isControlled() ? (props.activeTab as string) : internalTab(),\n );\n\n const handleTabChange = (tabId: string) => {\n if (!isControlled()) {\n setInternalTab(tabId);\n }\n props.onTabChange?.(tabId);\n };\n\n return (\n <div class={`w-full ${props.class ?? ''}`}>\n {/* Tab List */}\n <div class=\"flex items-center gap-1 p-1 rounded-xl glass-input overflow-x-auto scrollbar-thin\">\n <For each={props.items}>\n {(item) => (\n <button\n type=\"button\"\n onClick={() => handleTabChange(item.id)}\n class={`flex items-center gap-1.5 sm:gap-2 px-2.5 sm:px-4 py-1.5 sm:py-2 text-xs sm:text-sm font-medium rounded-lg transition-all duration-200 whitespace-nowrap outline-none focus-ring ${\n activeTab() === item.id\n ? 'glass-active text-gray-900 dark:text-white'\n : 'text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 hover:bg-black/[0.03] dark:hover:bg-white/[0.03]'\n }`}\n aria-selected={activeTab() === item.id}\n role=\"tab\"\n >\n <Show when={item.icon}>\n <span class={activeTab() === item.id ? 'text-accent-500 dark:text-accent-500' : ''}>\n {item.icon}\n </span>\n </Show>\n {item.label}\n <Show when={item.badge}>\n <span\n class={`ml-1 px-1.5 py-0.5 text-[0.625rem] rounded-md ${\n activeTab() === item.id\n ? 'glass-button text-gray-700 dark:text-gray-200'\n : 'glass-button text-gray-500 dark:text-gray-400'\n }`}\n >\n {item.badge}\n </span>\n </Show>\n </button>\n )}\n </For>\n </div>\n\n {/* Tab Content */}\n <div class=\"mt-4\">\n <For each={props.items}>\n {(item) => (\n <Show when={activeTab() === item.id}>\n <div role=\"tabpanel\" class=\"animate-in fade-in slide-in-from-bottom-2 duration-200\">\n {item.content}\n </div>\n </Show>\n )}\n </For>\n </div>\n </div>\n );\n};\n","import { type Component, For, Show, createSignal } from 'solid-js';\nimport type { AccordionProps } from './types';\n\nexport const Accordion: Component<AccordionProps> = (props) => {\n const getDefaultOpen = () => {\n const defaults: string[] = [];\n for (const item of props.items) {\n if (item.defaultOpen) {\n defaults.push(item.id);\n }\n }\n return defaults;\n };\n\n const [openItems, setOpenItems] = createSignal<string[]>(getDefaultOpen());\n\n const isOpen = (id: string) => openItems().includes(id);\n\n const toggle = (id: string) => {\n if (props.multiple) {\n setOpenItems((prev) => (prev.includes(id) ? prev.filter((i) => i !== id) : [...prev, id]));\n } else {\n setOpenItems((prev) => (prev.includes(id) ? [] : [id]));\n }\n };\n\n return (\n <div class={`space-y-1.5 ${props.class ?? ''}`}>\n <For each={props.items}>\n {(item) => (\n <div class=\"glass-card rounded-lg overflow-hidden\">\n <button\n type=\"button\"\n onClick={() => toggle(item.id)}\n class=\"w-full flex items-center justify-between px-3 py-2.5 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors\"\n aria-expanded={isOpen(item.id)}\n aria-controls={`accordion-content-${item.id}`}\n >\n <div class=\"flex items-center gap-2 text-left\">\n <svg\n class={`w-3.5 h-3.5 text-gray-500 dark:text-gray-400 transition-transform duration-200 ${isOpen(item.id) ? 'rotate-90' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n <span class=\"text-xs font-medium text-gray-700 dark:text-gray-200\">\n {item.title}\n </span>\n </div>\n <svg\n class={`w-3.5 h-3.5 text-gray-400 dark:text-gray-500 transition-transform duration-200 ${isOpen(item.id) ? 'rotate-180' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n <Show when={isOpen(item.id)}>\n <div\n id={`accordion-content-${item.id}`}\n class=\"px-3 pb-3 border-t border-gray-200 dark:border-white/5 animate-in fade-in slide-in-from-top-2 duration-200\"\n >\n <div class=\"pt-3\">{item.content}</div>\n </div>\n </Show>\n </div>\n )}\n </For>\n </div>\n );\n};\n","import { type Component, Show, createSignal } from 'solid-js';\nimport type { AccordionPanelProps } from './types';\n\n/** Single accordion panel for simple use cases */\nexport const AccordionPanel: Component<AccordionPanelProps> = (props) => {\n const [open, setOpen] = createSignal(props.defaultOpen ?? false);\n\n return (\n <div class={`glass-card rounded-lg overflow-hidden ${props.class ?? ''}`}>\n <button\n type=\"button\"\n onClick={() => setOpen(!open())}\n class=\"w-full flex items-center justify-between px-3 py-2.5 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors\"\n aria-expanded={open()}\n >\n <div class=\"flex items-center gap-2 text-left\">\n <svg\n class={`w-3.5 h-3.5 text-gray-500 dark:text-gray-400 transition-transform duration-200 ${open() ? 'rotate-90' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n <span class=\"text-xs font-medium text-gray-700 dark:text-gray-200\">{props.title}</span>\n </div>\n <svg\n class={`w-3.5 h-3.5 text-gray-400 dark:text-gray-500 transition-transform duration-200 ${open() ? 'rotate-180' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n <Show when={open()}>\n <div class=\"px-3 pb-3 border-t border-gray-200 dark:border-white/5 animate-in fade-in slide-in-from-top-2 duration-200\">\n <div class=\"pt-3\">{props.children}</div>\n </div>\n </Show>\n </div>\n );\n};\n","import { For } from 'solid-js';\nimport type { SegmentedControlProps } from './types';\n\nexport function SegmentedControl<T extends string | number>(props: SegmentedControlProps<T>) {\n const sizeClasses = () =>\n props.size === 'sm' ? 'px-2 py-1 text-[0.625rem]' : 'px-3 py-1.5 text-xs';\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: fieldset has browser styling that breaks the design\n <div\n role=\"group\"\n aria-label={props['aria-label']}\n class={`flex items-center gap-1 p-1 bg-surface-200/80 dark:bg-surface-800/80 rounded-xl w-fit ${\n props.class ?? ''\n }`}\n >\n <For each={props.options}>\n {(option) => (\n <button\n type=\"button\"\n onClick={() => !option.disabled && props.onChange(option.value)}\n disabled={option.disabled}\n class={`${sizeClasses()} font-bold rounded-lg transition-all ${\n props.value === option.value\n ? 'bg-white dark:bg-surface-600 text-surface-900 dark:text-white shadow-sm'\n : 'text-surface-600 dark:text-surface-400 hover:text-surface-900 dark:hover:text-white'\n } ${option.disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n >\n {option.label}\n </button>\n )}\n </For>\n </div>\n );\n}\n","/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (document.currentScript && document.currentScript.tagName === 'SCRIPT' && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not “foo {”\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (“=” and “+=”).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// → No expansion (so no “inside”).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// “Normal” string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n","// https://www.json.org/json-en.html\nPrism.languages.json = {\n\t'property': {\n\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'string': {\n\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'comment': {\n\t\tpattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\tgreedy: true\n\t},\n\t'number': /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n\t'punctuation': /[{}[\\],]/,\n\t'operator': /:/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'null': {\n\t\tpattern: /\\bnull\\b/,\n\t\talias: 'keyword'\n\t}\n};\n\nPrism.languages.webmanifest = Prism.languages.json;\n","import DOMPurify from 'dompurify';\nimport Prism from 'prismjs';\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-json';\nimport { type Component, Show, createMemo } from 'solid-js';\nimport { useCopyToClipboard } from '../../hooks';\nimport type { CodeBlockProps } from './types';\n\n// Escape HTML to prevent XSS when grammar is not found\nfunction escapeHtml(text: string): string {\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#039;',\n };\n return text.replace(/[&<>\"']/g, (m) => map[m]);\n}\n\nexport const CodeBlock: Component<CodeBlockProps> = (props) => {\n const { copied, copy } = useCopyToClipboard();\n let codeRef: HTMLElement | undefined;\n\n const language = () => props.language || 'json';\n const maxHeight = () => props.maxHeight || '31.25rem';\n const copyLabel = () => props.copyLabel ?? 'Copy';\n const copiedLabel = () => props.copiedLabel ?? 'Copied';\n\n // Highlight code whenever it changes\n const highlightedCode = createMemo(() => {\n const code = props.code;\n const lang = language();\n\n // Get the grammar for the language, fallback to plain text\n const grammar = Prism.languages[lang];\n if (!grammar) {\n return escapeHtml(code);\n }\n\n // Sanitize Prism output for defense-in-depth (allow span tags for highlighting)\n return DOMPurify.sanitize(Prism.highlight(code, grammar, lang), {\n ALLOWED_TAGS: ['span'],\n ALLOWED_ATTR: ['class'],\n });\n });\n\n return (\n <div class={`relative group rounded-xl overflow-hidden ${props.class ?? ''}`}>\n {/* Copy button */}\n <Show when={!props.hideCopyButton}>\n <button\n type=\"button\"\n onClick={() => copy(props.code)}\n class=\"absolute top-2 right-2 sm:top-3 sm:right-3 z-10 flex items-center gap-1.5 p-2 sm:px-3 sm:py-1.5 text-xs font-medium text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300 glass-button rounded-lg transition-all\"\n aria-label={copied() ? copiedLabel() : copyLabel()}\n >\n <Show\n when={copied()}\n fallback={\n <>\n <svg\n class=\"w-4 h-4 sm:w-3.5 sm:h-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n <span class=\"hidden sm:inline\">{copyLabel()}</span>\n </>\n }\n >\n <svg\n class=\"w-4 h-4 sm:w-3.5 sm:h-3.5 text-emerald-500\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n <span class=\"hidden sm:inline text-emerald-500 dark:text-emerald-400\">\n {copiedLabel()}\n </span>\n </Show>\n </button>\n </Show>\n\n {/* Language badge */}\n <div class=\"absolute top-3 left-3 z-10\">\n <span class=\"text-[0.625rem] font-semibold text-surface-400 dark:text-surface-500 uppercase tracking-wider\">\n {language()}\n </span>\n </div>\n\n {/* Code container with syntax highlighting */}\n {/* innerHTML is the correct SolidJS pattern - content is sanitized via DOMPurify in highlightedCode() */}\n <pre\n class={`p-6 pt-10 text-sm font-mono overflow-auto scrollbar-thin glass-thin ${props.wrap ? 'whitespace-pre-wrap break-all' : ''}`}\n style={{ 'max-height': maxHeight() }}\n >\n <code ref={codeRef} class={`language-${language()}`} innerHTML={highlightedCode()} />\n </pre>\n </div>\n );\n};\n","import { type Component, For, Show, createMemo, createSignal } from 'solid-js';\nimport { useCopyToClipboard } from '../../hooks';\nimport type { JsonNodeProps, JsonValue, JsonViewerProps } from './types';\n\n/**\n * Format a value as pretty-printed JSON string.\n */\nfunction formatJson(value: unknown, indent = 2): string {\n try {\n return JSON.stringify(value, null, indent);\n } catch {\n return String(value);\n }\n}\n\nconst getValueType = (value: unknown): string => {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n};\n\nconst getValueColor = (type: string): string => {\n switch (type) {\n case 'string':\n return 'text-emerald-600 dark:text-emerald-400';\n case 'number':\n return 'text-blue-600 dark:text-blue-400';\n case 'boolean':\n return 'text-amber-600 dark:text-amber-400';\n case 'null':\n return 'text-gray-500 dark:text-gray-500';\n default:\n return 'text-gray-800 dark:text-gray-200';\n }\n};\n\nconst JsonNode: Component<JsonNodeProps> = (props) => {\n const type = () => getValueType(props.value);\n const isExpandable = () => type() === 'object' || type() === 'array';\n const [expanded, setExpanded] = createSignal(props.depth < props.initialExpandDepth);\n\n const entries = createMemo(() => {\n if (type() === 'array') {\n return (props.value as JsonValue[]).map((v, i) => [String(i), v] as [string, JsonValue]);\n }\n if (type() === 'object' && props.value !== null) {\n return Object.entries(props.value as Record<string, JsonValue>);\n }\n return [];\n });\n\n const itemCount = () => entries().length;\n const brackets = () => (type() === 'array' ? ['[', ']'] : ['{', '}']);\n\n const renderPrimitive = () => {\n const t = type();\n const colorClass = getValueColor(t);\n\n if (t === 'string') {\n return <span class={colorClass}>\"{String(props.value)}\"</span>;\n }\n if (t === 'null') {\n return <span class={colorClass}>null</span>;\n }\n if (t === 'boolean') {\n return <span class={colorClass}>{props.value ? 'true' : 'false'}</span>;\n }\n return <span class={colorClass}>{String(props.value)}</span>;\n };\n\n return (\n <div class=\"font-mono text-sm leading-relaxed\">\n <div class=\"flex items-start\">\n {/* Expand/collapse toggle */}\n <Show when={isExpandable()}>\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded())}\n class=\"w-4 h-5 flex items-center justify-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 flex-shrink-0 -ml-4\"\n aria-label={expanded() ? 'Collapse' : 'Expand'}\n >\n <svg\n class={`w-3 h-3 transition-transform duration-150 ${expanded() ? 'rotate-90' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n </Show>\n <Show when={!isExpandable()}>\n <span class=\"w-4 flex-shrink-0\" />\n </Show>\n\n {/* Key name */}\n <Show when={props.keyName !== undefined}>\n <span class=\"text-violet-600 dark:text-violet-400\">\"{props.keyName}\"</span>\n <span class=\"text-gray-500 dark:text-gray-400 mx-1\">:</span>\n </Show>\n\n {/* Value */}\n <Show\n when={isExpandable()}\n fallback={\n <>\n {renderPrimitive()}\n <Show when={!props.isLast}>\n <span class=\"text-gray-500 dark:text-gray-400\">,</span>\n </Show>\n </>\n }\n >\n <Show\n when={expanded()}\n fallback={\n <>\n <button\n type=\"button\"\n onClick={() => setExpanded(true)}\n class=\"text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200\"\n >\n {brackets()[0]}\n <span class=\"mx-1 px-1.5 py-0.5 bg-gray-100 dark:bg-gray-800 rounded text-xs\">\n {itemCount()} {itemCount() === 1 ? 'item' : 'items'}\n </span>\n {brackets()[1]}\n </button>\n <Show when={!props.isLast}>\n <span class=\"text-gray-500 dark:text-gray-400\">,</span>\n </Show>\n </>\n }\n >\n <span class=\"text-gray-500 dark:text-gray-400\">{brackets()[0]}</span>\n </Show>\n </Show>\n </div>\n\n {/* Children */}\n <Show when={isExpandable() && expanded()}>\n <div class=\"ml-4 border-l border-gray-200 dark:border-gray-700 pl-2\">\n <For each={entries()}>\n {([key, val], index) => (\n <JsonNode\n keyName={type() === 'object' ? key : undefined}\n value={val}\n depth={props.depth + 1}\n initialExpandDepth={props.initialExpandDepth}\n isLast={index() === itemCount() - 1}\n />\n )}\n </For>\n </div>\n <div class=\"flex items-center\">\n <span class=\"w-4 flex-shrink-0\" />\n <span class=\"text-gray-500 dark:text-gray-400\">{brackets()[1]}</span>\n <Show when={!props.isLast}>\n <span class=\"text-gray-500 dark:text-gray-400\">,</span>\n </Show>\n </div>\n </Show>\n </div>\n );\n};\n\nexport const JsonViewer: Component<JsonViewerProps> = (props) => {\n const { copied, copy } = useCopyToClipboard();\n\n const maxHeight = () => props.maxHeight ?? '31.25rem';\n const initialExpandDepth = () => props.initialExpandDepth ?? 2;\n const copyLabel = () => props.copyLabel ?? 'Copy';\n const copiedLabel = () => props.copiedLabel ?? 'Copied';\n const expandAllLabel = () => props.expandAllLabel ?? 'Expand all';\n const collapseAllLabel = () => props.collapseAllLabel ?? 'Collapse all';\n\n const jsonString = createMemo(() => formatJson(props.data));\n\n const [expandAll, setExpandAll] = createSignal(false);\n const [key, setKey] = createSignal(0);\n\n const handleExpandAll = () => {\n setExpandAll(true);\n setKey((k) => k + 1);\n };\n\n const handleCollapseAll = () => {\n setExpandAll(false);\n setKey((k) => k + 1);\n };\n\n return (\n <div class={`relative group rounded-xl overflow-hidden ${props.class ?? ''}`}>\n {/* Toolbar */}\n <div class=\"absolute top-3 right-3 z-10 flex items-center gap-2 opacity-0 group-hover:opacity-100 transition-opacity\">\n <button\n type=\"button\"\n onClick={handleExpandAll}\n class=\"px-2 py-1 text-xs font-medium text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300 bg-surface-100/80 dark:bg-surface-800/80 hover:bg-surface-200/80 dark:hover:bg-surface-700/80 backdrop-blur-sm rounded-lg transition-all\"\n title={expandAllLabel()}\n >\n <svg\n class=\"w-3.5 h-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4\"\n />\n </svg>\n </button>\n <button\n type=\"button\"\n onClick={handleCollapseAll}\n class=\"px-2 py-1 text-xs font-medium text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300 bg-surface-100/80 dark:bg-surface-800/80 hover:bg-surface-200/80 dark:hover:bg-surface-700/80 backdrop-blur-sm rounded-lg transition-all\"\n title={collapseAllLabel()}\n >\n <svg\n class=\"w-3.5 h-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 9V4.5M9 9H4.5M9 9L3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5l5.25 5.25\"\n />\n </svg>\n </button>\n <button\n type=\"button\"\n onClick={() => copy(jsonString())}\n class=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300 bg-surface-100/80 dark:bg-surface-800/80 hover:bg-surface-200/80 dark:hover:bg-surface-700/80 backdrop-blur-sm rounded-lg transition-all\"\n >\n <Show\n when={copied()}\n fallback={\n <>\n <svg\n class=\"w-3.5 h-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n {copyLabel()}\n </>\n }\n >\n <svg\n class=\"w-3.5 h-3.5 text-emerald-500\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n <span class=\"text-emerald-600 dark:text-emerald-400\">{copiedLabel()}</span>\n </Show>\n </button>\n </div>\n\n {/* JSON content */}\n <div\n class=\"p-6 pt-10 overflow-auto scrollbar-thin bg-surface-50/50 dark:bg-surface-900/50\"\n style={{ 'max-height': maxHeight() }}\n >\n <Show when={key() >= 0} keyed>\n {(_) => (\n <div class=\"pl-4\">\n <JsonNode\n value={props.data as JsonValue}\n depth={0}\n initialExpandDepth={expandAll() ? 100 : initialExpandDepth()}\n isLast\n />\n </div>\n )}\n </Show>\n </div>\n </div>\n );\n};\n","/**\n * marked v15.0.12 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n\n// src/defaults.ts\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nvar _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n// src/rules.ts\nvar noopTest = { exec: () => null };\nfunction edit(regex, opt = \"\") {\n let source = typeof regex === \"string\" ? regex : regex.source;\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === \"string\" ? val : val.source;\n valSource = valSource.replace(other.caret, \"$1\");\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nvar other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] /,\n listReplaceTask: /^\\[[ xX]\\] +/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, \"i\")\n};\nvar newline = /^(?:[ \\t]*(?:\\n|$))+/;\nvar blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nvar fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nvar hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nvar heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nvar bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nvar lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nvar lheading = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g, \"\").getRegex();\nvar lheadingGfm = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex();\nvar _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nvar blockText = /^[^\\n]+/;\nvar _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nvar def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\", _blockLabel).replace(\"title\", /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex();\nvar list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, bullet).getRegex();\nvar _tag = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\";\nvar _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nvar html = edit(\n \"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\n \"i\"\n).replace(\"comment\", _comment).replace(\"tag\", _tag).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nvar paragraph = edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\", paragraph).getRegex();\nvar blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\nvar gfmTable = edit(\n \"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\"\n).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockGfm = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"table\", gfmTable).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex()\n};\nvar blockPedantic = {\n ...blockNormal,\n html: edit(\n `^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`\n ).replace(\"comment\", _comment).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" *#{1,6} *[^\\n]\").replace(\"lheading\", lheading).replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").replace(\"|tag\", \"\").getRegex()\n};\nvar escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nvar inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nvar br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nvar inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\nvar _punctuation = /[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nvar punctuation = edit(/^((?![*_])punctSpace)/, \"u\").replace(/punctSpace/g, _punctuationOrSpace).getRegex();\nvar _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\nvar blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nvar emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\nvar emStrongLDelim = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuation).getRegex();\nvar emStrongLDelimGfm = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimAstCore = \"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\";\nvar emStrongRDelimAst = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm).replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm).replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimUnd = edit(\n \"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\n \"gu\"\n).replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar anyPunctuation = edit(/\\\\(punct)/, \"gu\").replace(/punct/g, _punctuation).getRegex();\nvar autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();\nvar _inlineComment = edit(_comment).replace(\"(?:-->|$)\", \"-->\").getRegex();\nvar tag = edit(\n \"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\"\n).replace(\"comment\", _inlineComment).replace(\"attribute\", /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex();\nvar _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nvar link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\", _inlineLabel).replace(\"href\", /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\", /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex();\nvar reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\", _inlineLabel).replace(\"ref\", _blockLabel).getRegex();\nvar nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\", _blockLabel).getRegex();\nvar reflinkSearch = edit(\"reflink|nolink(?!\\\\()\", \"g\").replace(\"reflink\", reflink).replace(\"nolink\", nolink).getRegex();\nvar inlineNormal = {\n _backpedal: noopTest,\n // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\nvar inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", _inlineLabel).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", _inlineLabel).getRegex()\n};\nvar inlineGfm = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, \"i\").replace(\"email\", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\nvar inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace(\"{2,}\", \"*\").getRegex(),\n text: edit(inlineGfm.text).replace(\"\\\\b_\", \"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g, \"*\").getRegex()\n};\nvar block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nvar inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n\n// src/helpers.ts\nvar escapeReplacements = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#39;\"\n};\nvar getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape2(html2, encode) {\n if (encode) {\n if (other.escapeTest.test(html2)) {\n return html2.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html2)) {\n return html2.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html2;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(other.percentDecode, \"%\");\n } catch {\n return null;\n }\n return href;\n}\nfunction splitCells(tableRow, count) {\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === \"\\\\\") escaped = !escaped;\n if (escaped) {\n return \"|\";\n } else {\n return \" |\";\n }\n }), cells = row.split(other.splitPipe);\n let i = 0;\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push(\"\");\n }\n }\n for (; i < cells.length; i++) {\n cells[i] = cells[i].trim().replace(other.slashPipe, \"|\");\n }\n return cells;\n}\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return \"\";\n }\n let suffLen = 0;\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n return -1;\n}\n\n// src/Tokenizer.ts\nfunction outputLink(cap, link2, raw, lexer2, rules) {\n const href = link2.href;\n const title = link2.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, \"$1\");\n lexer2.state.inLink = true;\n const token = {\n type: cap[0].charAt(0) === \"!\" ? \"image\" : \"link\",\n raw,\n href,\n title,\n text,\n tokens: lexer2.inlineTokens(text)\n };\n lexer2.state.inLink = false;\n return token;\n}\nfunction indentCodeCompensation(raw, text, rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split(\"\\n\").map((node) => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join(\"\\n\");\n}\nvar _Tokenizer = class {\n options;\n rules;\n // set by the lexer\n lexer;\n // set by the lexer\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: \"space\",\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, \"\");\n return {\n type: \"code\",\n raw: cap[0],\n codeBlockStyle: \"indented\",\n text: !this.options.pedantic ? rtrim(text, \"\\n\") : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || \"\", this.rules);\n return {\n type: \"code\",\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, \"$1\") : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, \"#\");\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n text = trimmed.trim();\n }\n }\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: \"hr\",\n raw: rtrim(cap[0], \"\\n\")\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], \"\\n\").split(\"\\n\");\n let raw = \"\";\n let text = \"\";\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join(\"\\n\");\n const currentText = currentRaw.replace(this.rules.other.blockquoteSetextReplace, \"\\n $1\").replace(this.rules.other.blockquoteSetextReplace2, \"\");\n raw = raw ? `${raw}\n${currentRaw}` : currentRaw;\n text = text ? `${text}\n${currentText}` : currentText;\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"code\") {\n break;\n } else if (lastToken?.type === \"blockquote\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === \"list\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1).raw.length).split(\"\\n\");\n continue;\n }\n }\n return {\n type: \"blockquote\",\n raw,\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list2 = {\n type: \"list\",\n raw: \"\",\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : \"\",\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : \"[*+-]\";\n }\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n while (src) {\n let endEarly = false;\n let raw = \"\";\n let itemContents = \"\";\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split(\"\\n\", 1)[0].replace(this.rules.other.listReplaceTabs, (t) => \" \".repeat(3 * t.length));\n let nextLine = src.split(\"\\n\", 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = cap[2].search(this.rules.other.nonSpaceChar);\n indent = indent > 4 ? 1 : indent;\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && this.rules.other.blankLine.test(nextLine)) {\n raw += nextLine + \"\\n\";\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n while (src) {\n const rawLine = src.split(\"\\n\", 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, \" \");\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, \" \");\n }\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {\n itemContents += \"\\n\" + nextLineWithoutTabs.slice(indent);\n } else {\n if (blankLine) {\n break;\n }\n if (line.replace(this.rules.other.tabCharGlobal, \" \").search(this.rules.other.nonSpaceChar) >= 4) {\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += \"\\n\" + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n blankLine = true;\n }\n raw += rawLine + \"\\n\";\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list2.loose) {\n if (endsWithBlankLine) {\n list2.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n if (this.options.gfm) {\n istask = this.rules.other.listIsTask.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== \"[ ] \";\n itemContents = itemContents.replace(this.rules.other.listReplaceTask, \"\");\n }\n }\n list2.items.push({\n type: \"list_item\",\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list2.raw += raw;\n }\n const lastItem = list2.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n return;\n }\n list2.raw = list2.raw.trimEnd();\n for (let i = 0; i < list2.items.length; i++) {\n this.lexer.state.top = false;\n list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []);\n if (!list2.loose) {\n const spacers = list2.items[i].tokens.filter((t) => t.type === \"space\");\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => this.rules.other.anyLine.test(t.raw));\n list2.loose = hasMultipleLineBreaks;\n }\n }\n if (list2.loose) {\n for (let i = 0; i < list2.items.length; i++) {\n list2.items[i].loose = true;\n }\n }\n return list2;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: \"html\",\n block: true,\n raw: cap[0],\n pre: cap[1] === \"pre\" || cap[1] === \"script\" || cap[1] === \"style\",\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag2 = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, \" \");\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, \"$1\").replace(this.rules.inline.anyPunctuation, \"$1\") : \"\";\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, \"$1\") : cap[3];\n return {\n type: \"def\",\n tag: tag2,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, \"\").split(\"|\");\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, \"\").split(\"\\n\") : [];\n const item = {\n type: \"table\",\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n return;\n }\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push(\"right\");\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push(\"center\");\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push(\"left\");\n } else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i]\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i]\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[2].charAt(0) === \"=\" ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === \"\\n\" ? cap[1].slice(0, -1) : cap[1];\n return {\n type: \"paragraph\",\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: \"escape\",\n raw: cap[0],\n text: cap[1]\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: \"html\",\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n if (!this.rules.other.endAngleBracket.test(trimmedUrl)) {\n return;\n }\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), \"\\\\\");\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n const lastParenIndex = findClosingBracket(cap[2], \"()\");\n if (lastParenIndex === -2) {\n return;\n }\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf(\"!\") === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = \"\";\n }\n }\n let href = cap[2];\n let title = \"\";\n if (this.options.pedantic) {\n const link2 = this.rules.other.pedanticHrefTitle.exec(href);\n if (link2) {\n href = link2[1];\n title = link2[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : \"\";\n }\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !this.rules.other.endAngleBracket.test(trimmedUrl)) {\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, \"$1\") : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, \"$1\") : title\n }, cap[0], this.lexer, this.rules);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, \" \");\n const link2 = links[linkString.toLowerCase()];\n if (!link2) {\n const text = cap[0].charAt(0);\n return {\n type: \"text\",\n raw: text,\n text\n };\n }\n return outputLink(cap, link2, cap[0], this.lexer, this.rules);\n }\n }\n emStrong(src, maskedSrc, prevChar = \"\") {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n const nextChar = match[1] || match[2] || \"\";\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === \"*\" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue;\n rLength = [...rDelim].length;\n if (match[3] || match[4]) {\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue;\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0) continue;\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n if (Math.min(lLength, rLength) % 2) {\n const text2 = raw.slice(1, -1);\n return {\n type: \"em\",\n raw,\n text: text2,\n tokens: this.lexer.inlineTokens(text2)\n };\n }\n const text = raw.slice(2, -2);\n return {\n type: \"strong\",\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, \" \");\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: \"codespan\",\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: \"br\",\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: \"del\",\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[1];\n href = \"mailto:\" + text;\n } else {\n text = cap[1];\n href = text;\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[0];\n href = \"mailto:\" + text;\n } else {\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? \"\";\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === \"www.\") {\n href = \"http://\" + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n escaped\n };\n }\n }\n};\n\n// src/Lexer.ts\nvar _Lexer = class __Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options2) {\n this.tokens = [];\n this.tokens.links = /* @__PURE__ */ Object.create(null);\n this.options = options2 || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src.replace(other.carriageReturn, \"\\n\");\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, \" \").replace(other.spaceLine, \"\");\n }\n while (src) {\n let token;\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== void 0) {\n lastToken.raw += \"\\n\";\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.raw;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === \"paragraph\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let maskedSrc = src;\n let match = null;\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf(\"[\") + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"++\" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n let keepPrevChar = false;\n let prevChar = \"\";\n while (src) {\n if (!keepPrevChar) {\n prevChar = \"\";\n }\n keepPrevChar = false;\n let token;\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === \"text\" && lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== \"_\") {\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n};\n\n// src/Renderer.ts\nvar _Renderer = class {\n options;\n parser;\n // set by the parser\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(token) {\n return \"\";\n }\n code({ text, lang, escaped }) {\n const langString = (lang || \"\").match(other.notSpaceStart)?.[0];\n const code = text.replace(other.endingNewline, \"\") + \"\\n\";\n if (!langString) {\n return \"<pre><code>\" + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n return '<pre><code class=\"language-' + escape2(langString) + '\">' + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `<blockquote>\n${body}</blockquote>\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\n`;\n }\n hr(token) {\n return \"<hr>\\n\";\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = \"\";\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? \"ol\" : \"ul\";\n const startAttr = ordered && start !== 1 ? ' start=\"' + start + '\"' : \"\";\n return \"<\" + type + startAttr + \">\\n\" + body + \"</\" + type + \">\\n\";\n }\n listitem(item) {\n let itemBody = \"\";\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens[0]?.type === \"paragraph\") {\n item.tokens[0].text = checkbox + \" \" + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === \"text\") {\n item.tokens[0].tokens[0].text = checkbox + \" \" + escape2(item.tokens[0].tokens[0].text);\n item.tokens[0].tokens[0].escaped = true;\n }\n } else {\n item.tokens.unshift({\n type: \"text\",\n raw: checkbox + \" \",\n text: checkbox + \" \",\n escaped: true\n });\n }\n } else {\n itemBody += checkbox + \" \";\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `<li>${itemBody}</li>\n`;\n }\n checkbox({ checked }) {\n return \"<input \" + (checked ? 'checked=\"\" ' : \"\") + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph({ tokens }) {\n return `<p>${this.parser.parseInline(tokens)}</p>\n`;\n }\n table(token) {\n let header = \"\";\n let cell = \"\";\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = \"\";\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = \"\";\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n return \"<table>\\n<thead>\\n\" + header + \"</thead>\\n\" + body + \"</table>\\n\";\n }\n tablerow({ text }) {\n return `<tr>\n${text}</tr>\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? \"th\" : \"td\";\n const tag2 = token.align ? `<${type} align=\"${token.align}\">` : `<${type}>`;\n return tag2 + content + `</${type}>\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n }\n em({ tokens }) {\n return `<em>${this.parser.parseInline(tokens)}</em>`;\n }\n codespan({ text }) {\n return `<code>${escape2(text, true)}</code>`;\n }\n br(token) {\n return \"<br>\";\n }\n del({ tokens }) {\n return `<del>${this.parser.parseInline(tokens)}</del>`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + escape2(title) + '\"';\n }\n out += \">\" + text + \"</a>\";\n return out;\n }\n image({ href, title, text, tokens }) {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer);\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape2(text);\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${escape2(title)}\"`;\n }\n out += \">\";\n return out;\n }\n text(token) {\n return \"tokens\" in token && token.tokens ? this.parser.parseInline(token.tokens) : \"escaped\" in token && token.escaped ? token.text : escape2(token.text);\n }\n};\n\n// src/TextRenderer.ts\nvar _TextRenderer = class {\n // no need for block level renderers\n strong({ text }) {\n return text;\n }\n em({ text }) {\n return text;\n }\n codespan({ text }) {\n return text;\n }\n del({ text }) {\n return text;\n }\n html({ text }) {\n return text;\n }\n text({ text }) {\n return text;\n }\n link({ text }) {\n return \"\" + text;\n }\n image({ text }) {\n return \"\" + text;\n }\n br() {\n return \"\";\n }\n};\n\n// src/Parser.ts\nvar _Parser = class __Parser {\n options;\n renderer;\n textRenderer;\n constructor(options2) {\n this.options = options2 || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"paragraph\", \"text\"].includes(genericToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"space\": {\n out += this.renderer.space(token);\n continue;\n }\n case \"hr\": {\n out += this.renderer.hr(token);\n continue;\n }\n case \"heading\": {\n out += this.renderer.heading(token);\n continue;\n }\n case \"code\": {\n out += this.renderer.code(token);\n continue;\n }\n case \"table\": {\n out += this.renderer.table(token);\n continue;\n }\n case \"blockquote\": {\n out += this.renderer.blockquote(token);\n continue;\n }\n case \"list\": {\n out += this.renderer.list(token);\n continue;\n }\n case \"html\": {\n out += this.renderer.html(token);\n continue;\n }\n case \"paragraph\": {\n out += this.renderer.paragraph(token);\n continue;\n }\n case \"text\": {\n let textToken = token;\n let body = this.renderer.text(textToken);\n while (i + 1 < tokens.length && tokens[i + 1].type === \"text\") {\n textToken = tokens[++i];\n body += \"\\n\" + this.renderer.text(textToken);\n }\n if (top) {\n out += this.renderer.paragraph({\n type: \"paragraph\",\n raw: body,\n text: body,\n tokens: [{ type: \"text\", raw: body, text: body, escaped: true }]\n });\n } else {\n out += body;\n }\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer = this.renderer) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(anyToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"escape\": {\n out += renderer.text(token);\n break;\n }\n case \"html\": {\n out += renderer.html(token);\n break;\n }\n case \"link\": {\n out += renderer.link(token);\n break;\n }\n case \"image\": {\n out += renderer.image(token);\n break;\n }\n case \"strong\": {\n out += renderer.strong(token);\n break;\n }\n case \"em\": {\n out += renderer.em(token);\n break;\n }\n case \"codespan\": {\n out += renderer.codespan(token);\n break;\n }\n case \"br\": {\n out += renderer.br(token);\n break;\n }\n case \"del\": {\n out += renderer.del(token);\n break;\n }\n case \"text\": {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n};\n\n// src/Hooks.ts\nvar _Hooks = class {\n options;\n block;\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n static passThroughHooks = /* @__PURE__ */ new Set([\n \"preprocess\",\n \"postprocess\",\n \"processAllTokens\"\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html2) {\n return html2;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse : _Parser.parseInline;\n }\n};\n\n// src/Instance.ts\nvar Marked = class {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case \"table\": {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case \"list\": {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens2 = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens2, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n const opts = { ...pack };\n opts.async = this.defaults.async || opts.async || false;\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error(\"extension name required\");\n }\n if (\"renderer\" in ext) {\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n extensions.renderers[ext.name] = function(...args2) {\n let ret = ext.renderer.apply(this, args2);\n if (ret === false) {\n ret = prevRenderer.apply(this, args2);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (\"tokenizer\" in ext) {\n if (!ext.level || ext.level !== \"block\" && ext.level !== \"inline\") {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n if (ext.level === \"block\") {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === \"inline\") {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (\"childTokens\" in ext && ext.childTokens) {\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if ([\"options\", \"parser\"].includes(prop)) {\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n renderer[rendererProp] = (...args2) => {\n let ret = rendererFunc.apply(renderer, args2);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args2);\n }\n return ret || \"\";\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if ([\"options\", \"rules\", \"lexer\"].includes(prop)) {\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n tokenizer[tokenizerProp] = (...args2) => {\n let ret = tokenizerFunc.apply(tokenizer, args2);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args2);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if ([\"options\", \"block\"].includes(prop)) {\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => {\n return prevHook.call(hooks, ret2);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksProp] = (...args2) => {\n let ret = hooksFunc.apply(hooks, args2);\n if (ret === false) {\n ret = prevHook.apply(hooks, args2);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n if (pack.walkTokens) {\n const walkTokens2 = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens2) {\n values = values.concat(walkTokens2.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options2) {\n return _Lexer.lex(src, options2 ?? this.defaults);\n }\n parser(tokens, options2) {\n return _Parser.parse(tokens, options2 ?? this.defaults);\n }\n parseMarkdown(blockType) {\n const parse2 = (src, options2) => {\n const origOpt = { ...options2 };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));\n }\n if (typeof src === \"undefined\" || src === null) {\n return throwError(new Error(\"marked(): input parameter is undefined or null\"));\n }\n if (typeof src !== \"string\") {\n return throwError(new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(src) + \", string expected\"));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer2 = opt.hooks ? opt.hooks.provideLexer() : blockType ? _Lexer.lex : _Lexer.lexInline;\n const parser2 = opt.hooks ? opt.hooks.provideParser() : blockType ? _Parser.parse : _Parser.parseInline;\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser2(tokens, opt)).then((html2) => opt.hooks ? opt.hooks.postprocess(html2) : html2).catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer2(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html2 = parser2(tokens, opt);\n if (opt.hooks) {\n html2 = opt.hooks.postprocess(html2);\n }\n return html2;\n } catch (e) {\n return throwError(e);\n }\n };\n return parse2;\n }\n onError(silent, async) {\n return (e) => {\n e.message += \"\\nPlease report this to https://github.com/markedjs/marked.\";\n if (silent) {\n const msg = \"<p>An error occurred:</p><pre>\" + escape2(e.message + \"\", true) + \"</pre>\";\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n};\n\n// src/marked.ts\nvar markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\nmarked.options = marked.setOptions = function(options2) {\n markedInstance.setOptions(options2);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\nmarked.use = function(...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.walkTokens = function(tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\nmarked.parseInline = markedInstance.parseInline;\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nvar options = marked.options;\nvar setOptions = marked.setOptions;\nvar use = marked.use;\nvar walkTokens = marked.walkTokens;\nvar parseInline = marked.parseInline;\nvar parse = marked;\nvar parser = _Parser.parse;\nvar lexer = _Lexer.lex;\nexport {\n _Hooks as Hooks,\n _Lexer as Lexer,\n Marked,\n _Parser as Parser,\n _Renderer as Renderer,\n _TextRenderer as TextRenderer,\n _Tokenizer as Tokenizer,\n _defaults as defaults,\n _getDefaults as getDefaults,\n lexer,\n marked,\n options,\n parse,\n parseInline,\n parser,\n setOptions,\n use,\n walkTokens\n};\n//# sourceMappingURL=marked.esm.js.map\n","import DOMPurify from 'dompurify';\nimport { marked } from 'marked';\nimport { type Component, Show, createMemo } from 'solid-js';\nimport type { MarkdownProps } from './types';\n\n// Configure marked for safe rendering\nmarked.setOptions({\n breaks: true,\n gfm: true,\n});\n\nexport const Markdown: Component<MarkdownProps> = (props) => {\n const html = createMemo(() => {\n if (!props.content) {\n return '';\n }\n try {\n const rawHtml = marked.parse(props.content, { async: false }) as string;\n return DOMPurify.sanitize(rawHtml);\n } catch {\n return DOMPurify.sanitize(props.content);\n }\n });\n\n return (\n <Show when={props.content}>\n {/* innerHTML is the correct SolidJS pattern for sanitized HTML - content is sanitized via DOMPurify above */}\n <div\n class={`markdown-content prose prose-sm max-w-none\n prose-headings:text-gray-900 dark:prose-headings:text-white\n prose-headings:font-semibold prose-headings:leading-tight\n prose-h1:text-xl prose-h1:mt-6 prose-h1:mb-3\n prose-h2:text-lg prose-h2:mt-5 prose-h2:mb-2\n prose-h3:text-base prose-h3:mt-4 prose-h3:mb-2\n prose-p:text-gray-600 dark:prose-p:text-gray-400\n prose-p:leading-relaxed prose-p:my-2\n prose-a:text-blue-600 dark:prose-a:text-blue-400\n prose-a:no-underline hover:prose-a:underline\n prose-strong:text-gray-800 dark:prose-strong:text-gray-200\n prose-strong:font-semibold\n prose-code:text-sm prose-code:font-mono\n prose-code:bg-gray-100 dark:prose-code:bg-gray-800\n prose-code:text-gray-800 dark:prose-code:text-gray-200\n prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md\n prose-code:before:content-none prose-code:after:content-none\n prose-pre:bg-gray-900 dark:prose-pre:bg-gray-950\n prose-pre:text-gray-100 prose-pre:rounded-xl\n prose-pre:p-4 prose-pre:my-3 prose-pre:overflow-x-auto\n prose-ul:my-2 prose-ul:pl-5 prose-ul:list-disc\n prose-ol:my-2 prose-ol:pl-5 prose-ol:list-decimal\n prose-li:text-gray-600 dark:prose-li:text-gray-400\n prose-li:my-0.5\n prose-blockquote:border-l-4 prose-blockquote:border-gray-300\n dark:prose-blockquote:border-gray-600\n prose-blockquote:pl-4 prose-blockquote:my-3\n prose-blockquote:text-gray-600 dark:prose-blockquote:text-gray-400\n prose-blockquote:italic\n prose-hr:border-gray-200 dark:prose-hr:border-gray-700\n prose-hr:my-4\n prose-table:my-3\n prose-th:text-left prose-th:text-gray-800 dark:prose-th:text-gray-200\n prose-th:font-semibold prose-th:p-2\n prose-th:border-b prose-th:border-gray-200 dark:prose-th:border-gray-700\n prose-td:p-2 prose-td:text-gray-600 dark:prose-td:text-gray-400\n prose-td:border-b prose-td:border-gray-100 dark:prose-td:border-gray-800\n ${props.class ?? ''}`}\n innerHTML={html()}\n />\n </Show>\n );\n};\n","import type { Component } from 'solid-js';\nimport type { SectionProps } from './types';\n\nexport const Section: Component<SectionProps> = (props) => (\n <div class={`mt-4 md:mt-6 first:mt-1 first:md:mt-2 ${props.class ?? ''}`}>\n <h3 class=\"text-xs font-bold text-surface-700 dark:text-surface-400 uppercase tracking-wider mb-2 md:mb-3 px-1\">\n {props.title}\n </h3>\n <div class=\"space-y-2 md:space-y-3\">{props.children}</div>\n </div>\n);\n","import type { Component } from 'solid-js';\nimport type { ErrorDisplayProps } from './types';\n\nexport const ErrorDisplay: Component<ErrorDisplayProps> = (props) => (\n <div\n class={`mt-4 md:mt-6 p-3 md:p-4 glass-card rounded-xl border-red-200/30 dark:border-red-800/20 shadow-lg shadow-red-500/5 ${props.class ?? ''}`}\n >\n <div class=\"flex items-start gap-3\">\n <div class=\"flex-shrink-0 w-9 h-9 rounded-xl bg-red-500/15 dark:bg-red-500/20 flex items-center justify-center\">\n <svg\n class=\"w-5 h-5 text-red-600 dark:text-red-400\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </div>\n <div>\n <h4 class=\"text-base font-bold text-red-800 dark:text-red-200\">\n {props.title ?? 'Request Failed'}\n </h4>\n <p class=\"text-sm text-red-600 dark:text-red-400 mt-1 leading-relaxed\">{props.message}</p>\n </div>\n </div>\n </div>\n);\n","import type { Schema } from './types';\n\n/**\n * Convert a value to a display string, handling null/undefined.\n * Useful for form inputs that need string values.\n */\nexport function toDisplayString(value: unknown): string {\n if (value === undefined || value === null) {\n return '';\n }\n return String(value);\n}\n\n/**\n * Convert a value to a display string, with JSON formatting for objects.\n * Useful for complex form inputs.\n */\nexport function toDisplayStringJson(value: unknown, indent = 2): string {\n if (value === undefined || value === null) {\n return '';\n }\n if (typeof value === 'object') {\n return JSON.stringify(value, null, indent);\n }\n return String(value);\n}\n\n/**\n * Get default value for a schema type\n */\nexport function getDefaultValue(schema: Schema): unknown {\n if (schema.default !== undefined) {\n return schema.default;\n }\n\n const type = schema.type || 'string';\n switch (type) {\n case 'string':\n return '';\n case 'number':\n case 'integer':\n return 0;\n case 'boolean':\n return false;\n case 'array':\n return [];\n case 'object':\n if (schema.properties) {\n const obj: Record<string, unknown> = {};\n const required = schema.required || [];\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n if (required.includes(key)) {\n obj[key] = getDefaultValue(propSchema);\n }\n }\n return obj;\n }\n return {};\n default:\n return undefined;\n }\n}\n","import type { Component } from 'solid-js';\nimport { Show } from 'solid-js';\nimport { Input, Textarea } from '../../Input';\nimport type { BaseFieldProps } from '../types';\nimport { toDisplayString } from '../utils';\n\n/**\n * String field renderer\n * Renders either a text input or textarea based on format/maxLength\n */\nexport const StringField: Component<BaseFieldProps> = (props) => {\n const stringValue = () => toDisplayString(props.value);\n\n const isMultiline = () => {\n const format = props.schema.format;\n return format === 'textarea' || (props.schema.maxLength && props.schema.maxLength > 200);\n };\n\n return (\n <Show\n when={isMultiline()}\n fallback={\n <Input\n value={stringValue()}\n onInput={(v) => props.onChange(v || undefined)}\n placeholder={props.schema.default?.toString() || ''}\n />\n }\n >\n <Textarea\n value={stringValue()}\n onInput={(v) => props.onChange(v || undefined)}\n placeholder={props.schema.default?.toString() || ''}\n class=\"h-24\"\n />\n </Show>\n );\n};\n","import type { Component } from 'solid-js';\nimport { Input } from '../../Input';\nimport type { BaseFieldProps } from '../types';\nimport { toDisplayString } from '../utils';\n\n/**\n * Number/Integer field renderer\n * Handles parsing and validation of numeric input\n */\nexport const NumberField: Component<BaseFieldProps> = (props) => {\n const stringValue = () => toDisplayString(props.value);\n\n const handleChange = (strValue: string) => {\n if (strValue === '') {\n props.onChange(undefined);\n return;\n }\n const num = Number(strValue);\n if (!Number.isNaN(num)) {\n props.onChange(num);\n }\n };\n\n return (\n <Input\n type=\"number\"\n value={stringValue()}\n onInput={handleChange}\n placeholder={props.schema.default?.toString() || '0'}\n />\n );\n};\n","import type { Component } from 'solid-js';\nimport { Checkbox } from '../../Input';\nimport type { BaseFieldProps } from '../types';\n\n/**\n * Boolean field renderer\n * Renders a checkbox with true/false label\n */\nexport const BooleanField: Component<BaseFieldProps> = (props) => {\n return (\n <Checkbox\n checked={props.value === true}\n onChange={(checked) => props.onChange(checked)}\n label={props.value === true ? 'true' : 'false'}\n />\n );\n};\n","import type { Component } from 'solid-js';\nimport { For } from 'solid-js';\nimport { Select } from '../../Input';\nimport type { BaseFieldProps } from '../types';\nimport { toDisplayString } from '../utils';\n\n/**\n * Enum field renderer\n * Renders a select dropdown with enum options\n */\nexport const EnumField: Component<BaseFieldProps> = (props) => {\n const stringValue = () => toDisplayString(props.value);\n\n const handleChange = (strValue: string) => {\n if (strValue === '') {\n props.onChange(undefined);\n return;\n }\n // Try to preserve original type from enum values\n const enumValues = props.schema.enum || [];\n const originalValue = enumValues.find((v: unknown) => String(v) === strValue);\n props.onChange(originalValue !== undefined ? originalValue : strValue);\n };\n\n return (\n <Select value={stringValue()} onChange={handleChange}>\n <option value=\"\">-- Select --</option>\n <For each={props.schema.enum as unknown[]}>\n {(enumValue) => <option value={String(enumValue)}>{String(enumValue)}</option>}\n </For>\n </Select>\n );\n};\n","import type { Component } from 'solid-js';\nimport { Textarea } from '../../Input';\nimport type { BaseFieldProps } from '../types';\nimport { toDisplayStringJson } from '../utils';\n\n/**\n * Union field renderer (oneOf/anyOf)\n * Renders as JSON textarea for complex union types\n */\nexport const OneOfField: Component<BaseFieldProps> = (props) => {\n const stringValue = () => toDisplayStringJson(props.value);\n\n const handleChange = (strValue: string) => {\n if (strValue === '') {\n props.onChange(undefined);\n return;\n }\n try {\n props.onChange(JSON.parse(strValue));\n } catch {\n props.onChange(strValue);\n }\n };\n\n return (\n <Textarea\n value={stringValue()}\n onInput={handleChange}\n placeholder=\"{}\"\n class=\"h-24 font-mono text-sm\"\n />\n );\n};\n","import type { Component } from 'solid-js';\nimport { Show } from 'solid-js';\nimport { JsonSchemaForm } from '../JsonSchemaForm';\nimport type { SchemaFieldProps } from '../types';\n\n/**\n * SchemaField - Wraps JsonSchemaForm with field label and metadata\n * Used by ObjectField to render each property with its label\n */\nexport const SchemaField: Component<SchemaFieldProps> = (props) => {\n const schemaType = () => props.schema.type || 'string';\n const isComplexType = () => schemaType() === 'object' || schemaType() === 'array';\n\n return (\n <div class=\"space-y-2\">\n {/* Field label and metadata */}\n <div class=\"flex items-center gap-2\">\n <span class=\"font-mono text-sm font-medium text-gray-900 dark:text-white\">\n {props.name}\n </span>\n <Show when={props.required}>\n <span class=\"text-rose-500 text-xs font-semibold\">required</span>\n </Show>\n <span class=\"text-xs text-gray-400 dark:text-gray-500\">{schemaType()}</span>\n <Show when={props.schema.format}>\n <span class=\"text-xs text-gray-400 dark:text-gray-500\">({props.schema.format})</span>\n </Show>\n </div>\n\n {/* Description */}\n <Show when={props.schema.description}>\n <p class=\"text-xs text-gray-400 dark:text-gray-500\">{props.schema.description}</p>\n </Show>\n\n {/* Field input */}\n <Show\n when={isComplexType()}\n fallback={\n <div class=\"sm:max-w-xs\">\n <JsonSchemaForm\n schema={props.schema}\n value={props.value}\n onChange={props.onChange}\n path={props.path}\n />\n </div>\n }\n >\n <JsonSchemaForm\n schema={props.schema}\n value={props.value}\n onChange={props.onChange}\n path={props.path}\n />\n </Show>\n </div>\n );\n};\n","import type { Component } from 'solid-js';\nimport { For, Show } from 'solid-js';\nimport type { ObjectFieldProps } from '../types';\nimport { SchemaField } from './SchemaField';\n\n/**\n * Object field renderer\n * Recursively renders properties of an object schema\n */\nexport const ObjectField: Component<ObjectFieldProps> = (props) => {\n const currentValue = () => props.value || {};\n const properties = () => props.schema.properties || {};\n const requiredFields = () => props.schema.required || [];\n\n const updateField = (key: string, fieldValue: unknown) => {\n const newValue = { ...currentValue() };\n if (fieldValue === undefined) {\n delete newValue[key];\n } else {\n newValue[key] = fieldValue;\n }\n props.onChange(Object.keys(newValue).length > 0 ? newValue : undefined);\n };\n\n // If we're at the root level (path.length === 0), render properties directly\n // Otherwise, render as a nested card\n const isRoot = () => props.path.length === 0;\n\n return (\n <Show\n when={isRoot()}\n fallback={\n <div class=\"glass-card rounded-xl p-3 sm:p-4 space-y-3 sm:space-y-4\">\n <For each={Object.entries(properties())}>\n {([key, propSchema]) => (\n <SchemaField\n name={key}\n schema={propSchema}\n value={currentValue()[key]}\n required={requiredFields().includes(key)}\n onChange={(v) => updateField(key, v)}\n path={[...props.path, key]}\n />\n )}\n </For>\n </div>\n }\n >\n <div class=\"space-y-4\">\n <For each={Object.entries(properties())}>\n {([key, propSchema]) => (\n <SchemaField\n name={key}\n schema={propSchema}\n value={currentValue()[key]}\n required={requiredFields().includes(key)}\n onChange={(v) => updateField(key, v)}\n path={[...props.path, key]}\n />\n )}\n </For>\n </div>\n </Show>\n );\n};\n","import type { Component } from 'solid-js';\nimport { For, Match, Show, Switch } from 'solid-js';\nimport type { ArrayFieldProps, BaseFieldProps } from '../types';\nimport { getDefaultValue } from '../utils';\nimport { BooleanField } from './BooleanField';\nimport { EnumField } from './EnumField';\nimport { NumberField } from './NumberField';\nimport { StringField } from './StringField';\n\n// Forward declaration - will import the main component\nimport { JsonSchemaForm } from '../JsonSchemaForm';\n\n/**\n * Primitive array item renderer (inline editing for simple types)\n */\nconst PrimitiveArrayItem: Component<BaseFieldProps> = (props) => {\n const schemaType = () => props.schema.type || 'string';\n\n return (\n <Switch\n fallback={<StringField schema={props.schema} value={props.value} onChange={props.onChange} />}\n >\n <Match when={props.schema.enum && props.schema.enum.length > 0}>\n <EnumField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n <Match when={schemaType() === 'boolean'}>\n <BooleanField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n <Match when={schemaType() === 'number' || schemaType() === 'integer'}>\n <NumberField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n </Switch>\n );\n};\n\n/**\n * Array field renderer with add/remove/reorder functionality\n */\nexport const ArrayField: Component<ArrayFieldProps> = (props) => {\n const currentValue = () => props.value || [];\n const itemSchema = () => props.schema.items || { type: 'string' };\n\n const addItem = () => {\n const newItem = getDefaultValue(itemSchema());\n props.onChange([...currentValue(), newItem]);\n };\n\n const removeItem = (index: number) => {\n const newArray = currentValue().filter((_, i) => i !== index);\n props.onChange(newArray.length > 0 ? newArray : undefined);\n };\n\n const updateItem = (index: number, itemValue: unknown) => {\n const newArray = [...currentValue()];\n newArray[index] = itemValue;\n props.onChange(newArray);\n };\n\n const moveItem = (fromIndex: number, toIndex: number) => {\n if (toIndex < 0 || toIndex >= currentValue().length) {\n return;\n }\n const newArray = [...currentValue()];\n const [item] = newArray.splice(fromIndex, 1);\n newArray.splice(toIndex, 0, item);\n props.onChange(newArray);\n };\n\n const isPrimitive = () => {\n const type = itemSchema().type;\n return type === 'string' || type === 'number' || type === 'integer' || type === 'boolean';\n };\n\n return (\n <div class=\"space-y-3\">\n {/* Array items */}\n <For each={currentValue()}>\n {(item, index) => (\n <div class=\"glass-card rounded-xl p-3 sm:p-4\">\n {/* Item header with controls */}\n <div class=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-3\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-xs font-medium text-gray-500 dark:text-gray-400\">\n Item {index() + 1}\n </span>\n <Show when={itemSchema().type}>\n <span class=\"text-xs text-gray-400 dark:text-gray-500\">\n ({itemSchema().type})\n </span>\n </Show>\n </div>\n <div class=\"flex items-center gap-1 self-end sm:self-auto\">\n {/* Move up button */}\n <button\n type=\"button\"\n onClick={() => moveItem(index(), index() - 1)}\n disabled={index() === 0}\n class=\"glass-icon-btn\"\n title=\"Move up\"\n >\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 15l7-7 7 7\" />\n </svg>\n </button>\n {/* Move down button */}\n <button\n type=\"button\"\n onClick={() => moveItem(index(), index() + 1)}\n disabled={index() === currentValue().length - 1}\n class=\"glass-icon-btn\"\n title=\"Move down\"\n >\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n {/* Remove button */}\n <button\n type=\"button\"\n onClick={() => removeItem(index())}\n class=\"p-1.5 rounded-lg text-rose-400 hover:text-rose-600 dark:hover:text-rose-300 hover:bg-rose-50 dark:hover:bg-rose-900/20 transition-colors\"\n title=\"Remove item\"\n >\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\"\n />\n </svg>\n </button>\n </div>\n </div>\n\n {/* Item content */}\n <Show\n when={isPrimitive()}\n fallback={\n <JsonSchemaForm\n schema={itemSchema()}\n value={item}\n onChange={(v) => updateItem(index(), v)}\n path={[...props.path, String(index())]}\n />\n }\n >\n <PrimitiveArrayItem\n schema={itemSchema()}\n value={item}\n onChange={(v) => updateItem(index(), v)}\n />\n </Show>\n </div>\n )}\n </For>\n\n {/* Add item button */}\n <button\n type=\"button\"\n onClick={addItem}\n class=\"w-full py-2.5 px-4 rounded-xl border-2 border-dashed border-gray-200 dark:border-gray-700 text-sm font-medium text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 hover:border-gray-300 dark:hover:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors flex items-center justify-center gap-2\"\n >\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4v16m8-8H4\" />\n </svg>\n Add item\n </button>\n\n {/* Constraints hint */}\n <Show when={props.schema.minItems !== undefined || props.schema.maxItems !== undefined}>\n <div class=\"text-xs text-gray-400 dark:text-gray-500\">\n <Show when={props.schema.minItems !== undefined}>Min items: {props.schema.minItems}</Show>\n <Show when={props.schema.minItems !== undefined && props.schema.maxItems !== undefined}>\n {' | '}\n </Show>\n <Show when={props.schema.maxItems !== undefined}>Max items: {props.schema.maxItems}</Show>\n </div>\n </Show>\n </div>\n );\n};\n","import type { Component } from 'solid-js';\nimport { Match, Switch, createMemo } from 'solid-js';\nimport {\n ArrayField,\n BooleanField,\n EnumField,\n NumberField,\n ObjectField,\n OneOfField,\n StringField,\n} from './fields';\nimport type { JsonSchemaFormProps } from './types';\n\n/**\n * JsonSchemaForm - A recursive JSON Schema form renderer for SolidJS\n *\n * Supports:\n * - Primitive types: string, number, integer, boolean\n * - Complex types: object, array\n * - Enums\n * - Union types (oneOf, anyOf)\n * - Required fields validation\n * - Nested objects and arrays\n *\n * @example\n * ```tsx\n * <JsonSchemaForm\n * schema={{ type: 'object', properties: { name: { type: 'string' } } }}\n * value={formData()}\n * onChange={setFormData}\n * />\n * ```\n */\nexport const JsonSchemaForm: Component<JsonSchemaFormProps> = (props) => {\n const schemaType = createMemo(() => {\n const schema = props.schema;\n if (schema.enum && schema.enum.length > 0) {\n return 'enum';\n }\n if (schema.oneOf && schema.oneOf.length > 0) {\n return 'oneOf';\n }\n if (schema.anyOf && schema.anyOf.length > 0) {\n return 'anyOf';\n }\n return schema.type || 'string';\n });\n\n return (\n <Switch\n fallback={<StringField schema={props.schema} value={props.value} onChange={props.onChange} />}\n >\n <Match when={schemaType() === 'object'}>\n <ObjectField\n schema={props.schema}\n value={props.value as Record<string, unknown> | undefined}\n onChange={props.onChange}\n path={props.path || []}\n />\n </Match>\n <Match when={schemaType() === 'array'}>\n <ArrayField\n schema={props.schema}\n value={props.value as unknown[] | undefined}\n onChange={props.onChange}\n path={props.path || []}\n />\n </Match>\n <Match when={schemaType() === 'enum'}>\n <EnumField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n <Match when={schemaType() === 'boolean'}>\n <BooleanField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n <Match when={schemaType() === 'number' || schemaType() === 'integer'}>\n <NumberField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n <Match when={schemaType() === 'string'}>\n <StringField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n <Match when={schemaType() === 'oneOf' || schemaType() === 'anyOf'}>\n <OneOfField schema={props.schema} value={props.value} onChange={props.onChange} />\n </Match>\n </Switch>\n );\n};\n","import { type Component, For, Show, createEffect, createSignal, onCleanup } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { useIsDark } from '../../hooks';\nimport type { MenuItem, MenuProps } from './types';\n\nexport const Menu: Component<MenuProps> = (props) => {\n const [isOpen, setIsOpen] = createSignal(false);\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n let triggerRef: HTMLButtonElement | undefined;\n let menuRef: HTMLDivElement | undefined;\n\n const placement = () => props.placement ?? 'bottom-start';\n const isDark = useIsDark();\n\n // Get focusable items (non-divider, non-disabled)\n const focusableItems = () =>\n props.items\n .map((item, index) => ({ item, index }))\n .filter(({ item }) => !item.divider && !item.disabled);\n\n const handleOpen = () => {\n setIsOpen(true);\n setFocusedIndex(-1);\n };\n\n const handleClose = () => {\n setIsOpen(false);\n setFocusedIndex(-1);\n };\n\n const handleToggle = () => {\n if (isOpen()) {\n handleClose();\n } else {\n handleOpen();\n }\n };\n\n const handleItemClick = (item: MenuItem) => {\n if (item.disabled || item.divider) {\n return;\n }\n item.onClick?.();\n handleClose();\n };\n\n // Handle keyboard navigation\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isOpen()) {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n handleOpen();\n }\n return;\n }\n\n const items = focusableItems();\n\n switch (e.key) {\n case 'Escape':\n e.preventDefault();\n handleClose();\n triggerRef?.focus();\n break;\n case 'ArrowDown': {\n e.preventDefault();\n if (items.length === 0) {\n return;\n }\n const nextIndex =\n focusedIndex() === -1 ? 0 : Math.min(focusedIndex() + 1, items.length - 1);\n setFocusedIndex(nextIndex);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (items.length === 0) {\n return;\n }\n const prevIndex =\n focusedIndex() === -1 ? items.length - 1 : Math.max(focusedIndex() - 1, 0);\n setFocusedIndex(prevIndex);\n break;\n }\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (focusedIndex() >= 0 && focusedIndex() < items.length) {\n handleItemClick(items[focusedIndex()].item);\n }\n break;\n case 'Home':\n e.preventDefault();\n if (items.length > 0) {\n setFocusedIndex(0);\n }\n break;\n case 'End':\n e.preventDefault();\n if (items.length > 0) {\n setFocusedIndex(items.length - 1);\n }\n break;\n }\n };\n\n // Close on click outside\n createEffect(() => {\n if (!isOpen()) {\n return;\n }\n\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (menuRef && !menuRef.contains(target) && triggerRef && !triggerRef.contains(target)) {\n handleClose();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n onCleanup(() => document.removeEventListener('mousedown', handleClickOutside));\n });\n\n // Get actual index in items array from focusable index\n const getActualIndex = (focusableIdx: number) => {\n const items = focusableItems();\n if (focusableIdx < 0 || focusableIdx >= items.length) {\n return -1;\n }\n return items[focusableIdx].index;\n };\n\n return (\n <div class={`relative inline-block ${props.class ?? ''}`}>\n <button\n type=\"button\"\n ref={triggerRef}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen()}\n class=\"appearance-none bg-transparent border-none p-0 m-0 cursor-pointer\"\n >\n {props.trigger}\n </button>\n <Show when={isOpen()}>\n <Portal>\n <div\n ref={menuRef}\n class={`fixed z-50 min-w-[180px] py-1.5 glass-card rounded-xl shadow-lg animate-in fade-in zoom-in-95 duration-150 ${isDark() ? 'dark' : ''}`}\n style={{\n top: `${(triggerRef?.getBoundingClientRect().bottom ?? 0) + 4}px`,\n left: placement().includes('start')\n ? `${triggerRef?.getBoundingClientRect().left ?? 0}px`\n : undefined,\n right: placement().includes('end')\n ? `${window.innerWidth - (triggerRef?.getBoundingClientRect().right ?? 0)}px`\n : undefined,\n }}\n role=\"menu\"\n aria-orientation=\"vertical\"\n >\n <For each={props.items}>\n {(item, index) => (\n <Show\n when={!item.divider}\n fallback={<hr class=\"my-1.5 border-t border-gray-200 dark:border-white/10\" />}\n >\n <button\n type=\"button\"\n class={`w-full flex items-center gap-2.5 px-3.5 py-2 text-sm text-left transition-colors\n ${\n item.disabled\n ? 'text-gray-400 dark:text-gray-600 cursor-not-allowed'\n : 'text-gray-700 dark:text-gray-200 hover:bg-black/5 dark:hover:bg-white/5'\n }\n ${\n getActualIndex(focusedIndex()) === index()\n ? 'bg-black/5 dark:bg-white/5'\n : ''\n }`}\n onClick={() => handleItemClick(item)}\n disabled={item.disabled}\n role=\"menuitem\"\n tabindex={-1}\n >\n <Show when={item.icon}>\n <span class=\"w-4 h-4 flex items-center justify-center opacity-70\">\n {item.icon}\n </span>\n </Show>\n <span>{item.label}</span>\n </button>\n </Show>\n )}\n </For>\n </div>\n </Portal>\n </Show>\n </div>\n );\n};\n","import { type Component, Show, createEffect, onCleanup } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { useDisclosure, useIsDark } from '../../hooks';\nimport type { DropdownProps } from './types';\n\nexport const Dropdown: Component<DropdownProps> = (props) => {\n // Use internal state if not controlled\n const disclosure = useDisclosure(false);\n let triggerRef: HTMLButtonElement | undefined;\n let contentRef: HTMLDivElement | undefined;\n\n const isDark = useIsDark();\n const placement = () => props.placement ?? 'bottom-start';\n\n // Determine if controlled or uncontrolled\n const isControlled = () => props.open !== undefined;\n const isOpen = () => (isControlled() ? (props.open as boolean) : disclosure.isOpen());\n\n const setOpen = (value: boolean) => {\n if (isControlled()) {\n props.onOpenChange?.(value);\n } else {\n if (value) {\n disclosure.onOpen();\n } else {\n disclosure.onClose();\n }\n props.onOpenChange?.(value);\n }\n };\n\n const handleToggle = () => {\n setOpen(!isOpen());\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n // Handle keyboard\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen()) {\n e.preventDefault();\n handleClose();\n triggerRef?.focus();\n } else if ((e.key === 'Enter' || e.key === ' ') && !isOpen()) {\n e.preventDefault();\n setOpen(true);\n }\n };\n\n // Close on click outside\n createEffect(() => {\n if (!isOpen()) {\n return;\n }\n\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n contentRef &&\n !contentRef.contains(target) &&\n triggerRef &&\n !triggerRef.contains(target)\n ) {\n handleClose();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n onCleanup(() => document.removeEventListener('mousedown', handleClickOutside));\n });\n\n // Calculate position styles\n const getPositionStyles = () => {\n if (!triggerRef) {\n return {};\n }\n const rect = triggerRef.getBoundingClientRect();\n const p = placement();\n\n const styles: Record<string, string> = {};\n\n // Vertical positioning\n if (p.startsWith('bottom')) {\n styles.top = `${rect.bottom + 4}px`;\n } else if (p.startsWith('top')) {\n styles.bottom = `${window.innerHeight - rect.top + 4}px`;\n }\n\n // Horizontal positioning\n if (p.includes('start') || p === 'bottom' || p === 'top') {\n styles.left = `${rect.left}px`;\n }\n if (p.includes('end')) {\n styles.right = `${window.innerWidth - rect.right}px`;\n }\n if (p === 'bottom' || p === 'top') {\n // Center alignment for plain bottom/top\n styles.left = `${rect.left + rect.width / 2}px`;\n styles.transform = 'translateX(-50%)';\n }\n\n return styles;\n };\n\n return (\n <div class={`relative inline-block ${props.class ?? ''}`}>\n <button\n type=\"button\"\n ref={triggerRef}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"true\"\n aria-expanded={isOpen()}\n class=\"appearance-none bg-transparent border-none p-0 m-0 cursor-pointer\"\n >\n {props.trigger}\n </button>\n <Show when={isOpen()}>\n <Portal>\n <div\n ref={contentRef}\n class={`fixed z-50 glass-card rounded-xl shadow-lg animate-in fade-in zoom-in-95 duration-150 ${isDark() ? 'dark' : ''} ${props.contentClass ?? ''}`}\n style={getPositionStyles()}\n >\n {props.children}\n </div>\n </Portal>\n </Show>\n </div>\n );\n};\n","import { type Component, For, Show } from 'solid-js';\nimport type { BreadcrumbItem, BreadcrumbProps } from './types';\n\nconst DefaultSeparator: Component = () => (\n <span class=\"mx-2 text-gray-400 dark:text-gray-600\" aria-hidden=\"true\">\n /\n </span>\n);\n\nexport const Breadcrumb: Component<BreadcrumbProps> = (props) => {\n const isLast = (index: number) => index === props.items.length - 1;\n\n const renderItem = (item: BreadcrumbItem, index: number) => {\n const isCurrentPage = isLast(index);\n\n const content = (\n <>\n <Show when={item.icon}>\n <span class=\"w-4 h-4 mr-1.5 flex items-center justify-center\">{item.icon}</span>\n </Show>\n <span>{item.label}</span>\n </>\n );\n\n if (isCurrentPage) {\n // Current page (last item) - not clickable\n return (\n <span\n class=\"flex items-center text-sm font-medium text-gray-900 dark:text-white\"\n aria-current=\"page\"\n >\n {content}\n </span>\n );\n }\n\n if (item.href) {\n return (\n <a\n href={item.href}\n class=\"flex items-center text-sm text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 transition-colors\"\n onClick={(e) => {\n if (item.onClick) {\n e.preventDefault();\n item.onClick();\n }\n }}\n >\n {content}\n </a>\n );\n }\n\n if (item.onClick) {\n return (\n <button\n type=\"button\"\n onClick={item.onClick}\n class=\"flex items-center text-sm text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 transition-colors\"\n >\n {content}\n </button>\n );\n }\n\n // Non-clickable item\n return (\n <span class=\"flex items-center text-sm text-gray-500 dark:text-gray-400\">{content}</span>\n );\n };\n\n return (\n <nav class={`flex items-center ${props.class ?? ''}`} aria-label=\"Breadcrumb\">\n <ol class=\"flex items-center\">\n <For each={props.items}>\n {(item, index) => (\n <li class=\"flex items-center\">\n {renderItem(item, index())}\n <Show when={!isLast(index())}>{props.separator ?? <DefaultSeparator />}</Show>\n </li>\n )}\n </For>\n </ol>\n </nav>\n );\n};\n","import { type Component, For, Show, createMemo } from 'solid-js';\nimport type { PaginationProps } from './types';\n\nconst ChevronLeftIcon: Component = () => (\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 19l-7-7 7-7\" />\n </svg>\n);\n\nconst ChevronRightIcon: Component = () => (\n <svg\n class=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n);\n\nexport const Pagination: Component<PaginationProps> = (props) => {\n const defaultPageSizeOptions = [10, 20, 50, 100];\n const pageSizeOptions = () => props.pageSizeOptions ?? defaultPageSizeOptions;\n\n const totalPages = createMemo(() => Math.ceil(props.total / props.pageSize));\n\n const canGoPrev = () => props.page > 1;\n const canGoNext = () => props.page < totalPages();\n\n const handlePrev = () => {\n if (canGoPrev()) {\n props.onChange(props.page - 1);\n }\n };\n\n const handleNext = () => {\n if (canGoNext()) {\n props.onChange(props.page + 1);\n }\n };\n\n const handlePageClick = (page: number) => {\n if (page !== props.page) {\n props.onChange(page);\n }\n };\n\n const handlePageSizeChange = (e: Event) => {\n const target = e.target as HTMLSelectElement;\n const newPageSize = Number.parseInt(target.value, 10);\n props.onPageSizeChange?.(newPageSize);\n // Reset to page 1 when page size changes\n props.onChange(1);\n };\n\n // Generate page numbers to display\n const pageNumbers = createMemo(() => {\n const total = totalPages();\n const current = props.page;\n const pages: (number | 'ellipsis')[] = [];\n\n if (total <= 7) {\n // Show all pages if 7 or fewer\n for (let i = 1; i <= total; i++) {\n pages.push(i);\n }\n } else {\n // Always show first page\n pages.push(1);\n\n if (current > 3) {\n pages.push('ellipsis');\n }\n\n // Show pages around current\n const start = Math.max(2, current - 1);\n const end = Math.min(total - 1, current + 1);\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (current < total - 2) {\n pages.push('ellipsis');\n }\n\n // Always show last page\n if (total > 1) {\n pages.push(total);\n }\n }\n\n return pages;\n });\n\n const buttonBaseClass =\n 'inline-flex items-center justify-center w-8 h-8 rounded-lg text-sm font-medium transition-colors';\n const buttonInactiveClass =\n 'text-gray-600 dark:text-gray-400 hover:bg-black/5 dark:hover:bg-white/5';\n const buttonActiveClass = 'glass-active text-gray-900 dark:text-white';\n const buttonDisabledClass = 'text-gray-300 dark:text-gray-600 cursor-not-allowed';\n\n return (\n <div class={`flex items-center gap-4 ${props.class ?? ''}`}>\n {/* Page size selector */}\n <Show when={props.showPageSize}>\n <div class=\"flex items-center gap-2\">\n <span class=\"text-sm text-gray-600 dark:text-gray-400\">Show</span>\n <select\n value={props.pageSize}\n onChange={handlePageSizeChange}\n class=\"glass-input px-2 py-1 text-sm rounded-lg\"\n >\n <For each={pageSizeOptions()}>{(size) => <option value={size}>{size}</option>}</For>\n </select>\n <span class=\"text-sm text-gray-600 dark:text-gray-400\">per page</span>\n </div>\n </Show>\n\n {/* Pagination controls */}\n <div class=\"flex items-center gap-1\">\n {/* Previous button */}\n <button\n type=\"button\"\n onClick={handlePrev}\n disabled={!canGoPrev()}\n class={`${buttonBaseClass} ${canGoPrev() ? buttonInactiveClass : buttonDisabledClass}`}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon />\n </button>\n\n {/* Page numbers */}\n <For each={pageNumbers()}>\n {(page) => (\n <Show\n when={page !== 'ellipsis'}\n fallback={\n <span class=\"w-8 h-8 flex items-center justify-center text-gray-400 dark:text-gray-600\">\n ...\n </span>\n }\n >\n <button\n type=\"button\"\n onClick={() => handlePageClick(page as number)}\n class={`${buttonBaseClass} ${\n props.page === page ? buttonActiveClass : buttonInactiveClass\n }`}\n aria-label={`Page ${page}`}\n aria-current={props.page === page ? 'page' : undefined}\n >\n {page}\n </button>\n </Show>\n )}\n </For>\n\n {/* Next button */}\n <button\n type=\"button\"\n onClick={handleNext}\n disabled={!canGoNext()}\n class={`${buttonBaseClass} ${canGoNext() ? buttonInactiveClass : buttonDisabledClass}`}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon />\n </button>\n </div>\n\n {/* Page info */}\n <Show when={props.total > 0}>\n <span class=\"text-sm text-gray-600 dark:text-gray-400\">\n {(props.page - 1) * props.pageSize + 1}-\n {Math.min(props.page * props.pageSize, props.total)} of {props.total}\n </span>\n </Show>\n </div>\n );\n};\n","import type { Component } from 'solid-js';\nimport { For, Show, createMemo, createSignal } from 'solid-js';\nimport type { SortDirection, SortState, TableProps } from './types';\n\n// Sort icon component\nconst SortIcon: Component<{ direction: SortDirection; active: boolean }> = (props) => (\n <span\n class={`ml-1 inline-flex transition-opacity ${props.active ? 'opacity-100' : 'opacity-0 group-hover:opacity-40'}`}\n aria-hidden=\"true\"\n >\n <Show when={props.direction === 'asc'}>\n <svg\n class=\"w-3.5 h-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 15l7-7 7 7\" />\n </svg>\n </Show>\n <Show when={props.direction === 'desc'}>\n <svg\n class=\"w-3.5 h-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </Show>\n <Show when={!props.direction}>\n <svg\n class=\"w-3.5 h-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4\"\n />\n </svg>\n </Show>\n </span>\n);\n\nexport function Table<T extends Record<string, unknown>>(\n props: Readonly<TableProps<T>>,\n): ReturnType<Component> {\n const [internalSort, setInternalSort] = createSignal<SortState>({\n column: null,\n direction: null,\n });\n\n const currentSort = createMemo(() => props.sort ?? internalSort());\n\n const handleSort = (columnKey: string) => {\n const column = props.columns.find((c) => c.key === columnKey);\n if (!column?.sortable && !props.sortable) {\n return;\n }\n\n const current = currentSort();\n let newDirection: SortDirection = 'asc';\n\n if (current.column === columnKey) {\n if (current.direction === 'asc') {\n newDirection = 'desc';\n } else if (current.direction === 'desc') {\n newDirection = null;\n }\n }\n\n const newSort: SortState = {\n column: newDirection ? columnKey : null,\n direction: newDirection,\n };\n\n if (props.onSort) {\n props.onSort(newSort);\n } else {\n setInternalSort(newSort);\n }\n };\n\n const getCellValue = (row: T, key: string): unknown => {\n const keys = key.split('.');\n let value: unknown = row;\n for (const k of keys) {\n if (value && typeof value === 'object') {\n value = (value as Record<string, unknown>)[k];\n } else {\n return undefined;\n }\n }\n return value;\n };\n\n const alignClass = (align?: 'left' | 'center' | 'right') => {\n switch (align) {\n case 'center':\n return 'text-center';\n case 'right':\n return 'text-right';\n default:\n return 'text-left';\n }\n };\n\n return (\n <div class={`glass-card rounded-xl overflow-hidden ${props.class ?? ''}`}>\n <div class=\"overflow-x-auto\">\n <table class=\"w-full\">\n <thead>\n <tr class=\"border-b border-surface-200/50 dark:border-surface-700/50\">\n <For each={props.columns}>\n {(column) => {\n const isSortable = column.sortable ?? props.sortable;\n const isActive = () => currentSort().column === column.key;\n const sortDirection = () => (isActive() ? currentSort().direction : null);\n\n return (\n <th\n class={`px-4 py-3 text-xs font-semibold uppercase tracking-wider text-surface-600 dark:text-surface-400 ${alignClass(column.align)} ${isSortable ? 'cursor-pointer select-none group hover:text-surface-900 dark:hover:text-surface-200 transition-colors' : ''}`}\n style={{ width: column.width }}\n onClick={() => isSortable && handleSort(column.key)}\n onKeyDown={(e) => {\n if (isSortable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleSort(column.key);\n }\n }}\n tabindex={isSortable ? 0 : undefined}\n >\n <span class=\"inline-flex items-center\">\n {column.header}\n <Show when={isSortable}>\n <SortIcon direction={sortDirection()} active={isActive()} />\n </Show>\n </span>\n </th>\n );\n }}\n </For>\n </tr>\n </thead>\n <tbody>\n <Show\n when={props.data.length > 0}\n fallback={\n <tr>\n <td\n colspan={props.columns.length}\n class=\"px-4 py-8 text-center text-surface-500 dark:text-surface-400\"\n >\n {props.emptyMessage ?? 'No data available'}\n </td>\n </tr>\n }\n >\n <For each={props.data}>\n {(row, index) => (\n <tr class=\"border-b border-surface-100/50 dark:border-surface-800/50 last:border-b-0 hover:bg-surface-50/50 dark:hover:bg-surface-800/30 transition-colors\">\n <For each={props.columns}>\n {(column) => {\n const value = getCellValue(row, column.key);\n return (\n <td\n class={`px-4 py-3 text-sm text-surface-800 dark:text-surface-200 ${alignClass(column.align)}`}\n >\n <Show when={column.render} fallback={String(value ?? '')}>\n {column.render?.(value, row, index())}\n </Show>\n </td>\n );\n }}\n </For>\n </tr>\n )}\n </For>\n </Show>\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","import type { Component } from 'solid-js';\nimport { Show } from 'solid-js';\nimport type { CardProps, CardVariant } from './types';\n\nconst variantStyles: Record<CardVariant, string> = {\n default: 'glass-card',\n elevated: 'glass-card shadow-lg dark:shadow-2xl',\n outlined: 'bg-transparent border border-surface-200 dark:border-surface-700',\n};\n\nexport const Card: Component<CardProps> = (props) => {\n const variant = () => props.variant ?? 'default';\n\n return (\n <div class={`rounded-xl overflow-hidden ${variantStyles[variant()]} ${props.class ?? ''}`}>\n <Show when={props.header}>\n <div class=\"px-4 py-3 border-b border-surface-200/50 dark:border-surface-700/50\">\n {props.header}\n </div>\n </Show>\n\n <div class=\"p-4\">{props.children}</div>\n\n <Show when={props.footer}>\n <div class=\"px-4 py-3 border-t border-surface-200/50 dark:border-surface-700/50 bg-surface-50/30 dark:bg-surface-900/30\">\n {props.footer}\n </div>\n </Show>\n </div>\n );\n};\n","import type { Component } from 'solid-js';\nimport { Show, createMemo, createSignal } from 'solid-js';\nimport type { AvatarProps, AvatarSize } from './types';\n\nconst sizeStyles: Record<AvatarSize, { container: string; text: string }> = {\n xs: { container: 'w-6 h-6', text: 'text-[0.5rem]' },\n sm: { container: 'w-8 h-8', text: 'text-xs' },\n md: { container: 'w-10 h-10', text: 'text-sm' },\n lg: { container: 'w-12 h-12', text: 'text-base' },\n xl: { container: 'w-16 h-16', text: 'text-lg' },\n};\n\n// Color palette for fallback backgrounds\nconst fallbackColors = [\n 'bg-blue-500',\n 'bg-emerald-500',\n 'bg-violet-500',\n 'bg-amber-500',\n 'bg-rose-500',\n 'bg-cyan-500',\n 'bg-fuchsia-500',\n 'bg-lime-500',\n];\n\n// Generate a consistent color based on name\nconst getColorFromName = (name: string): string => {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n const index = Math.abs(hash) % fallbackColors.length;\n return fallbackColors[index];\n};\n\n// Generate initials from name\nconst getInitials = (name: string): string => {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) {\n return parts[0].slice(0, 2).toUpperCase();\n }\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n};\n\nexport const Avatar: Component<AvatarProps> = (props) => {\n const [imageError, setImageError] = createSignal(false);\n const size = () => props.size ?? 'md';\n const styles = () => sizeStyles[size()];\n\n const initials = createMemo(() => getInitials(props.name));\n const fallbackBg = createMemo(() => props.fallbackColor ?? getColorFromName(props.name));\n\n const showImage = () => props.src && !imageError();\n\n return (\n <div\n class={`relative inline-flex items-center justify-center rounded-full overflow-hidden border-2 border-white/30 dark:border-white/10 shadow-sm ${styles().container} ${props.class ?? ''}`}\n >\n <Show\n when={showImage()}\n fallback={\n <div\n class={`w-full h-full flex items-center justify-center font-semibold text-white ${fallbackBg()}`}\n >\n <span class={styles().text}>{initials()}</span>\n </div>\n }\n >\n <img\n src={props.src}\n alt={props.alt ?? props.name}\n class=\"w-full h-full object-cover\"\n onError={() => setImageError(true)}\n />\n </Show>\n </div>\n );\n};\n","import type { Component } from 'solid-js';\nimport type { SkeletonProps, SkeletonVariant } from './types';\n\nconst variantStyles: Record<SkeletonVariant, string> = {\n text: 'rounded',\n circular: 'rounded-full',\n rectangular: 'rounded-lg',\n};\n\nconst defaultSizes: Record<SkeletonVariant, { width: string; height: string }> = {\n text: { width: '100%', height: '1em' },\n circular: { width: '2.5rem', height: '2.5rem' },\n rectangular: { width: '100%', height: '8rem' },\n};\n\nexport const Skeleton: Component<SkeletonProps> = (props) => {\n const variant = () => props.variant ?? 'text';\n const defaults = () => defaultSizes[variant()];\n\n const width = () => props.width ?? defaults().width;\n const height = () => props.height ?? defaults().height;\n\n const borderRadius = () => {\n if (props.rounded === false) {\n return '';\n }\n return variantStyles[variant()];\n };\n\n return (\n <div\n class={`animate-pulse bg-surface-200/60 dark:bg-surface-700/40 ${borderRadius()} ${props.class ?? ''}`}\n style={{\n width: width(),\n height: height(),\n }}\n aria-hidden=\"true\"\n />\n );\n};\n","import type { Component } from 'solid-js';\nimport { Show, createMemo } from 'solid-js';\nimport type { ProgressColor, ProgressProps, ProgressSize } from './types';\n\nconst linearSizes: Record<ProgressSize, string> = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n};\n\nconst circularSizes: Record<ProgressSize, { size: number; stroke: number }> = {\n sm: { size: 24, stroke: 3 },\n md: { size: 40, stroke: 4 },\n lg: { size: 56, stroke: 5 },\n};\n\nconst colorStyles: Record<ProgressColor, { track: string; fill: string }> = {\n primary: {\n track: 'bg-surface-200/60 dark:bg-surface-700/40',\n fill: 'bg-violet-500 dark:bg-violet-400',\n },\n success: {\n track: 'bg-emerald-100 dark:bg-emerald-900/30',\n fill: 'bg-emerald-500 dark:bg-emerald-400',\n },\n warning: {\n track: 'bg-amber-100 dark:bg-amber-900/30',\n fill: 'bg-amber-500 dark:bg-amber-400',\n },\n error: {\n track: 'bg-rose-100 dark:bg-rose-900/30',\n fill: 'bg-rose-500 dark:bg-rose-400',\n },\n};\n\nconst circularColorStyles: Record<ProgressColor, { track: string; fill: string }> = {\n primary: {\n track: 'stroke-surface-200 dark:stroke-surface-700',\n fill: 'stroke-violet-500 dark:stroke-violet-400',\n },\n success: {\n track: 'stroke-emerald-200 dark:stroke-emerald-900',\n fill: 'stroke-emerald-500 dark:stroke-emerald-400',\n },\n warning: {\n track: 'stroke-amber-200 dark:stroke-amber-900',\n fill: 'stroke-amber-500 dark:stroke-amber-400',\n },\n error: {\n track: 'stroke-rose-200 dark:stroke-rose-900',\n fill: 'stroke-rose-500 dark:stroke-rose-400',\n },\n};\n\nconst LinearProgress: Component<ProgressProps> = (props) => {\n const size = () => props.size ?? 'md';\n const color = () => props.color ?? 'primary';\n const styles = () => colorStyles[color()];\n const clampedValue = () => Math.min(100, Math.max(0, props.value));\n\n return (\n <div class={`w-full ${props.class ?? ''}`}>\n <Show when={props.showValue}>\n <div class=\"flex justify-between items-center mb-1\">\n <span class=\"text-xs font-medium text-surface-600 dark:text-surface-400\">\n {Math.round(clampedValue())}%\n </span>\n </div>\n </Show>\n {/* biome-ignore lint/a11y/useFocusableInteractive: Progress bars are visual indicators, not interactive */}\n <div\n class={`w-full rounded-full overflow-hidden ${linearSizes[size()]} ${styles().track}`}\n role=\"progressbar\"\n aria-valuenow={clampedValue()}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n class={`h-full rounded-full transition-all duration-300 ease-out ${styles().fill}`}\n style={{ width: `${clampedValue()}%` }}\n />\n </div>\n </div>\n );\n};\n\nconst CircularProgress: Component<ProgressProps> = (props) => {\n const size = () => props.size ?? 'md';\n const color = () => props.color ?? 'primary';\n const dimensions = () => circularSizes[size()];\n const styles = () => circularColorStyles[color()];\n const clampedValue = () => Math.min(100, Math.max(0, props.value));\n\n const circumference = createMemo(() => {\n const radius = (dimensions().size - dimensions().stroke) / 2;\n return 2 * Math.PI * radius;\n });\n\n const strokeDashoffset = createMemo(() => {\n return circumference() - (clampedValue() / 100) * circumference();\n });\n\n const radius = createMemo(() => (dimensions().size - dimensions().stroke) / 2);\n const center = createMemo(() => dimensions().size / 2);\n\n return (\n // biome-ignore lint/a11y/useFocusableInteractive: Progress bars are visual indicators, not interactive\n <div\n class={`relative inline-flex items-center justify-center ${props.class ?? ''}`}\n role=\"progressbar\"\n aria-valuenow={clampedValue()}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`Progress: ${Math.round(clampedValue())}%`}\n >\n <svg\n width={dimensions().size}\n height={dimensions().size}\n class=\"-rotate-90\"\n aria-hidden=\"true\"\n >\n {/* Track */}\n <circle\n class={styles().track}\n cx={center()}\n cy={center()}\n r={radius()}\n fill=\"none\"\n stroke-width={dimensions().stroke}\n />\n {/* Fill */}\n <circle\n class={`${styles().fill} transition-all duration-300 ease-out`}\n cx={center()}\n cy={center()}\n r={radius()}\n fill=\"none\"\n stroke-width={dimensions().stroke}\n stroke-linecap=\"round\"\n stroke-dasharray={`${circumference()}`}\n stroke-dashoffset={strokeDashoffset()}\n />\n </svg>\n <Show when={props.showValue}>\n <span\n class=\"absolute text-surface-700 dark:text-surface-300 font-semibold\"\n style={{\n 'font-size': size() === 'sm' ? '0.5rem' : size() === 'md' ? '0.625rem' : '0.75rem',\n }}\n >\n {Math.round(clampedValue())}%\n </span>\n </Show>\n </div>\n );\n};\n\nexport const Progress: Component<ProgressProps> = (props) => {\n const variant = () => props.variant ?? 'linear';\n\n return (\n <Show when={variant() === 'circular'} fallback={<LinearProgress {...props} />}>\n <CircularProgress {...props} />\n </Show>\n );\n};\n","import type { Component } from 'solid-js';\nimport { Show } from 'solid-js';\nimport type { ChipColor, ChipProps, ChipSize } from './types';\n\nconst sizeStyles: Record<ChipSize, { container: string; icon: string }> = {\n sm: { container: 'px-2 py-0.5 text-xs gap-1', icon: 'w-3 h-3' },\n md: { container: 'px-2.5 py-1 text-sm gap-1.5', icon: 'w-3.5 h-3.5' },\n lg: { container: 'px-3 py-1.5 text-base gap-2', icon: 'w-4 h-4' },\n};\n\nconst filledColors: Record<ChipColor, string> = {\n default: 'glass-button',\n primary:\n 'bg-violet-100 dark:bg-violet-900/40 text-violet-700 dark:text-violet-300 border border-violet-200/50 dark:border-violet-700/50',\n success:\n 'bg-emerald-100 dark:bg-emerald-900/40 text-emerald-700 dark:text-emerald-300 border border-emerald-200/50 dark:border-emerald-700/50',\n warning:\n 'bg-amber-100 dark:bg-amber-900/40 text-amber-700 dark:text-amber-300 border border-amber-200/50 dark:border-amber-700/50',\n error:\n 'bg-rose-100 dark:bg-rose-900/40 text-rose-700 dark:text-rose-300 border border-rose-200/50 dark:border-rose-700/50',\n};\n\nconst outlinedColors: Record<ChipColor, string> = {\n default:\n 'bg-transparent border border-surface-300 dark:border-surface-600 text-surface-700 dark:text-surface-300',\n primary:\n 'bg-transparent border border-violet-300 dark:border-violet-600 text-violet-600 dark:text-violet-400',\n success:\n 'bg-transparent border border-emerald-300 dark:border-emerald-600 text-emerald-600 dark:text-emerald-400',\n warning:\n 'bg-transparent border border-amber-300 dark:border-amber-600 text-amber-600 dark:text-amber-400',\n error:\n 'bg-transparent border border-rose-300 dark:border-rose-600 text-rose-600 dark:text-rose-400',\n};\n\nconst RemoveIcon: Component<{ class?: string }> = (props) => (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n);\n\nexport const Chip: Component<ChipProps> = (props) => {\n const variant = () => props.variant ?? 'filled';\n const color = () => props.color ?? 'default';\n const size = () => props.size ?? 'md';\n const styles = () => sizeStyles[size()];\n\n const getColorStyle = () => {\n const colorMap = variant() === 'filled' ? filledColors : outlinedColors;\n return colorMap[color()];\n };\n\n const handleRemove = (e: MouseEvent) => {\n e.stopPropagation();\n props.onRemove?.();\n };\n\n return (\n <span\n class={`inline-flex items-center rounded-full font-medium transition-all ${styles().container} ${getColorStyle()} ${props.disabled ? 'opacity-50 cursor-not-allowed' : ''} ${props.class ?? ''}`}\n >\n {props.children}\n <Show when={props.onRemove && !props.disabled}>\n <button\n type=\"button\"\n class=\"inline-flex items-center justify-center rounded-full hover:bg-black/10 dark:hover:bg-white/10 transition-colors -mr-0.5\"\n onClick={handleRemove}\n aria-label=\"Remove\"\n >\n <RemoveIcon class={styles().icon} />\n </button>\n </Show>\n </span>\n );\n};\n"],"names":["sizeClasses","sm","md","lg","Spinner","props","size","_el$","_tmpl$","_$effect","_$setAttribute","class","variantClasses","primary","secondary","tertiary","Button","variant","_$addEventListener","onClick","_$insert","_$createComponent","Show","when","loading","children","_$memo","leftIcon","rightIcon","_p$","_v$","type","_v$2","fullWidth","_v$3","disabled","e","t","_$className","a","undefined","_$delegateEvents","variantStyles","default","success","warning","error","info","method","methodStyles","get","post","put","patch","delete","head","options","sizeStyles","Badge","getVariantStyle","getSizeClasses","Input","onKeyDown","$$input","onInput","currentTarget","value","id","name","_v$4","_v$5","placeholder","_v$6","_v$7","readonly","_v$8","required","_v$9","autocomplete","o","i","n","s","readOnly","h","r","Textarea","rows","Select","_el$2","firstChild","addEventListener","onChange","Checkbox","_tmpl$2","_el$3","_el$4","nextSibling","checked","label","_el$5","typeStyles","border","bg","icon","iconBg","InfoIcon","SuccessIcon","WarningIcon","_tmpl$3","ErrorIcon","_tmpl$4","DefaultIcon","fallback","Alert","styles","_tmpl$7","_el$6","_el$7","_el$8","_el$0","title","_el$9","_tmpl$5","onClose","_el$1","_tmpl$6","xl","full","Modal","dialogRef","showClose","closeOnBackdrop","closeOnEscape","createEffect","open","showModal","close","onMount","handleClose","handleCancel","preventDefault","onCleanup","removeEventListener","document","body","style","overflow","handleBackdropClick","target","$$keydown","key","$$click","_ref$","_$use","footer","confirmButtonStyles","danger","Dialog","confirmLabel","cancelLabel","onOpenChange","onCancel","handleConfirm","onConfirm","description","useDialogState","shouldCloseOnEscape","shouldCloseOnBackdrop","handleKeyDown","targetCheck","ev","useIsDark","useCopyToClipboard","resetDelay","copied","setCopied","createSignal","timeoutId","text","useDisclosure","initialState","isOpen","setIsOpen","prev","positionStyles","left","panel","enter","exit","right","ANIMATION_DURATION","Drawer","position","visible","setVisible","isClosing","setIsClosing","timer","setTimeout","clearTimeout","isDark","backdropClasses","drawerClasses","Portal","noPadding","store","setStore","createStore","toastId","toast","message","duration","produce","dismissToast","clearToasts","getToastStore","ToastIcon","ToastItem","exiting","setExiting","handleDismiss","ToastContainer","For","each","toasts","DEFAULT_DURATION","Snackbar","handleAction","onAction","enterAnimation","exitAnimation","animationClasses","action","top","bottom","arrowStyles","Tooltip","delay","showTooltip","hideTooltip","$$focusout","$$focusin","content","Tabs","internalTab","setInternalTab","defaultTab","items","isControlled","createMemo","activeTab","handleTabChange","tabId","onTabChange","item","badge","Accordion","getDefaultOpen","defaults","defaultOpen","push","openItems","setOpenItems","includes","toggle","multiple","filter","AccordionPanel","setOpen","SegmentedControl","option","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","apply","construct","x","func","thisArg","_len","args","_key","Func","_len2","_key2","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","_len3","_key3","_len4","_key4","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","clone","object","newObject","property","lookupGetter","prop","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","_createHooksMap","createDOMPurify","window","DOMPurify","root","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","parentTagName","_forceRemove","node","_removeAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","_createNodeIterator","_isClobbered","_isNode","_executeHooks","currentNode","data","hook","_sanitizeElements","_isBasicCustomElement","parentNode","childNodes","childCount","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attributes","hookEvent","attr","namespaceURI","attrValue","initValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","tag","entryPoint","hookFunction","purify","_self","Prism","lang","uniqueId","plainTextGrammar","_","encode","tokens","Token","obj","deepClone","visited","v","m","language","err","src","scripts","className","defaultActivation","no","classList","redef","inside","before","insert","grammar","ret","token","newToken","old","DFS","callback","objId","propertyType","async","container","env","code","insertHighlightedCode","highlightedCode","worker","evt","rest","tokenList","LinkedList","addAfter","matchGrammar","toArray","callbacks","alias","matchedStr","stringify","aliases","matchPattern","pattern","pos","lookbehind","match","lookbehindLength","startNode","startPos","rematch","patterns","j","patternObj","greedy","flags","str","removeCount","from","to","p","k","matchStr","after","reach","removeFrom","removeRange","wrapped","nestedRematch","tail","list","next","newNode","count","immediateClose","script","highlightAutomaticallyCallback","readyState","module","global","includedCdataInside","def","attrName","string","markup","LOADING_MESSAGE","FAILURE_MESSAGE","status","FAILURE_EMPTY_MESSAGE","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","STATUS_FAILED","SELECTOR","loadFile","xhr","parseRange","range","start","comma","end","pre","extension","autoloader","lines","elements","logged","envVars","commandAfterHeredoc","insideString","toBeCopied","escapeHtml","map","replace","CodeBlock","copy","codeRef","maxHeight","copyLabel","copiedLabel","languages","sanitize","highlight","hideCopyButton","wrap","_$setStyleProperty","innerHTML","formatJson","indent","JSON","String","getValueType","Array","isArray","getValueColor","JsonNode","isExpandable","expanded","setExpanded","depth","initialExpandDepth","Object","itemCount","length","brackets","renderPrimitive","colorClass","_tmpl$10","keyName","_el$11","_el$12","_el$14","isLast","_tmpl$0","_el$23","_tmpl$11","_el$24","_el$25","_el$16","_tmpl$8","_el$17","_tmpl$9","val","_el$18","_tmpl$1","_el$19","_el$20","JsonViewer","expandAllLabel","collapseAllLabel","jsonString","expandAll","setExpandAll","setKey","handleExpandAll","handleCollapseAll","_el$27","_tmpl$14","_el$28","_el$29","_el$30","_el$31","_el$34","_tmpl$15","_tmpl$12","_el$33","_tmpl$13","keyed","_el$36","_tmpl$16","_getDefaults","_defaults","changeDefaults","newDefaults","noopTest","edit","regex","opt","source","valSource","other","bull","newline","blockCode","fences","hr","heading","bullet","lheadingCore","lheading","lheadingGfm","_paragraph","blockText","_blockLabel","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","_punctuationOrSpace","_notPunctuationOrSpace","punctuation","_punctuationGfmStrongEm","_punctuationOrSpaceGfmStrongEm","_notPunctuationOrSpaceGfmStrongEm","blockSkip","emStrongLDelimCore","emStrongLDelim","emStrongLDelimGfm","emStrongRDelimAstCore","emStrongRDelimAst","emStrongRDelimAstGfm","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","link","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","escapeReplacements","getEscapeReplacement","ch","escape2","html2","cleanUrl","href","splitCells","tableRow","row","offset","escaped","curr","cells","_a","rtrim","c","invert","suffLen","findClosingBracket","b","level","outputLink","cap","link2","raw","lexer2","rules","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_Tokenizer","options2","__publicField","trimmed","inBlockquote","currentLines","currentRaw","currentText","lastToken","oldToken","newText","isordered","list2","itemRegex","endsWithBlankLine","endEarly","itemContents","line","nextLine","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","rawLine","nextLineWithoutTabs","istask","ischecked","lastItem","spacers","hasMultipleLineBreaks","tag2","headers","aligns","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","text2","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","_Lexer","__Lexer","lastParagraphClipped","_b","extTokenizer","cutSrc","_c","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","langString","ordered","startAttr","itemBody","checkbox","header","cleanHref","out","_TextRenderer","_Parser","__Parser","anyToken","genericToken","textToken","renderer","_Hooks","markdown","Marked","values","tableToken","listToken","childTokens","tokens2","extensions","pack","opts","ext","prevRenderer","args2","extLevel","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooksProp","hooksFunc","prevHook","arg","ret2","walkTokens2","packWalktokens","blockType","origOpt","throwError","parser2","src2","silent","msg","markedInstance","marked","setOptions","breaks","gfm","Markdown","rawHtml","parse","Section","ErrorDisplay","toDisplayString","toDisplayStringJson","getDefaultValue","schema","propSchema","StringField","stringValue","isMultiline","format","maxLength","toString","NumberField","handleChange","strValue","num","Number","isNaN","BooleanField","EnumField","originalValue","enum","find","enumValue","OneOfField","SchemaField","schemaType","isComplexType","JsonSchemaForm","path","ObjectField","currentValue","properties","requiredFields","updateField","fieldValue","newValue","keys","isRoot","PrimitiveArrayItem","Switch","Match","ArrayField","itemSchema","addItem","newItem","removeItem","newArray","updateItem","itemValue","moveItem","fromIndex","toIndex","splice","isPrimitive","_el$13","_el$10","minItems","maxItems","oneOf","anyOf","Menu","focusedIndex","setFocusedIndex","triggerRef","menuRef","placement","focusableItems","divider","handleOpen","handleToggle","handleItemClick","focus","nextIndex","Math","min","prevIndex","max","handleClickOutside","contains","getActualIndex","focusableIdx","trigger","_ref$2","getBoundingClientRect","innerWidth","Dropdown","disclosure","contentRef","onOpen","getPositionStyles","rect","startsWith","innerHeight","width","transform","contentClass","_$style","DefaultSeparator","Breadcrumb","renderItem","isCurrentPage","separator","ChevronLeftIcon","ChevronRightIcon","Pagination","defaultPageSizeOptions","pageSizeOptions","totalPages","ceil","total","pageSize","canGoPrev","page","canGoNext","handlePrev","handleNext","handlePageClick","handlePageSizeChange","newPageSize","parseInt","onPageSizeChange","pageNumbers","current","pages","buttonBaseClass","buttonInactiveClass","buttonActiveClass","buttonDisabledClass","showPageSize","SortIcon","direction","active","Table","internalSort","setInternalSort","column","currentSort","sort","handleSort","columnKey","columns","sortable","newDirection","newSort","onSort","getCellValue","split","alignClass","isSortable","isActive","sortDirection","emptyMessage","render","elevated","outlined","Card","xs","fallbackColors","getColorFromName","hash","charCodeAt","abs","getInitials","parts","trim","slice","toUpperCase","Avatar","imageError","setImageError","initials","fallbackBg","fallbackColor","showImage","alt","circular","rectangular","defaultSizes","height","Skeleton","borderRadius","rounded","linearSizes","circularSizes","stroke","colorStyles","track","fill","circularColorStyles","LinearProgress","color","clampedValue","showValue","round","CircularProgress","dimensions","circumference","radius","PI","strokeDashoffset","center","_$p","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","_v$20","d","u","w","f","y","Progress","filledColors","outlinedColors","RemoveIcon","Chip","getColorStyle","handleRemove","stopPropagation","onRemove"],"mappings":"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","x_google_ignoreList":[23,24,25,26,29]}