@astryxdesign/core 0.6.2 → 0.6.3-canary.01fa439
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.
- package/CHANGELOG.md +81 -0
- package/dist/BottomSheet/BottomSheet.d.ts +1 -1
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +3 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts +7 -5
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +56 -19
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +10 -5
- package/dist/Chat/ChatComposerDrawer.d.ts +19 -5
- package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
- package/dist/Chat/ChatComposerDrawer.js +48 -23
- package/dist/Chat/ChatComposerInput.d.ts +11 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +63 -16
- package/dist/Chat/ChatDictationButton.d.ts +3 -2
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +6 -4
- package/dist/Chat/ChatSendButton.js +1 -1
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +12 -2
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +6 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +1 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +4 -4
- package/dist/DateInput/NativeDateField.d.ts.map +1 -1
- package/dist/DateInput/NativeDateField.js +16 -16
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +2 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +4 -4
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +8 -8
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +4 -4
- package/dist/DateTimeInput/nativePickerSegmentStyles.d.ts +9 -3
- package/dist/DateTimeInput/nativePickerSegmentStyles.d.ts.map +1 -1
- package/dist/DateTimeInput/nativePickerSegmentStyles.js +3 -3
- package/dist/Dialog/DialogHeader.d.ts +8 -1
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +10 -1
- package/dist/Field/InputClearButton.d.ts +4 -2
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +4 -2
- package/dist/Field/PanelSearchInput.d.ts.map +1 -1
- package/dist/Field/PanelSearchInput.js +1 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +7 -7
- package/dist/Kbd/Kbd.d.ts +5 -3
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +36 -42
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +6 -2
- package/dist/Markdown/Markdown.d.ts +8 -2
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.fr23.bench.d.ts +2 -0
- package/dist/Markdown/Markdown.fr23.bench.d.ts.map +1 -0
- package/dist/Markdown/Markdown.fr23.bench.js +150 -0
- package/dist/Markdown/Markdown.fr23.sampling.d.ts +2 -0
- package/dist/Markdown/Markdown.fr23.sampling.d.ts.map +1 -0
- package/dist/Markdown/Markdown.fr23.sampling.js +43 -0
- package/dist/Markdown/Markdown.js +262 -109
- package/dist/Markdown/ast.d.ts +162 -0
- package/dist/Markdown/ast.d.ts.map +1 -0
- package/dist/Markdown/ast.js +74 -0
- package/dist/Markdown/index.d.ts +5 -3
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/index.js +3 -2
- package/dist/Markdown/parser/index.d.ts +10 -0
- package/dist/Markdown/parser/index.d.ts.map +1 -0
- package/dist/Markdown/parser/index.js +10 -0
- package/dist/Markdown/parser.d.ts +126 -58
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +716 -167
- package/dist/Markdown/plugins/frontmatter.d.ts +32 -0
- package/dist/Markdown/plugins/frontmatter.d.ts.map +1 -0
- package/dist/Markdown/plugins/frontmatter.js +132 -0
- package/dist/Markdown/plugins/index.d.ts +16 -0
- package/dist/Markdown/plugins/index.d.ts.map +1 -0
- package/dist/Markdown/plugins/index.js +13 -0
- package/dist/Markdown/plugins/protocol.d.ts +191 -0
- package/dist/Markdown/plugins/protocol.d.ts.map +1 -0
- package/dist/Markdown/plugins/protocol.js +957 -0
- package/dist/Markdown/plugins/semanticFence.d.ts +36 -0
- package/dist/Markdown/plugins/semanticFence.d.ts.map +1 -0
- package/dist/Markdown/plugins/semanticFence.js +213 -0
- package/dist/Markdown/plugins/sourceDecoration.d.ts +76 -0
- package/dist/Markdown/plugins/sourceDecoration.d.ts.map +1 -0
- package/dist/Markdown/plugins/sourceDecoration.js +393 -0
- package/dist/Markdown/plugins/textTransform.d.ts +30 -0
- package/dist/Markdown/plugins/textTransform.d.ts.map +1 -0
- package/dist/Markdown/plugins/textTransform.js +374 -0
- package/dist/Markdown/remark.d.ts +196 -0
- package/dist/Markdown/remark.d.ts.map +1 -0
- package/dist/Markdown/remark.js +1062 -0
- package/dist/Markdown/url.d.ts +4 -0
- package/dist/Markdown/url.d.ts.map +1 -0
- package/dist/Markdown/url.js +25 -0
- package/dist/Markdown/utils.d.ts +4 -2
- package/dist/Markdown/utils.d.ts.map +1 -1
- package/dist/Markdown/utils.js +2 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +4 -4
- package/dist/Outline/index.d.ts +1 -0
- package/dist/Outline/index.d.ts.map +1 -1
- package/dist/Outline/parseOutlineFromMarkdown.d.ts +7 -1
- package/dist/Outline/parseOutlineFromMarkdown.d.ts.map +1 -1
- package/dist/Outline/parseOutlineFromMarkdown.js +14 -8
- package/dist/Outline/useOutlineFromMarkdown.d.ts +3 -1
- package/dist/Outline/useOutlineFromMarkdown.d.ts.map +1 -1
- package/dist/Outline/useOutlineFromMarkdown.js +8 -3
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +46 -30
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +36 -31
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +13 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +5 -5
- package/dist/Selector/Selector.d.ts +9 -7
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +7 -5
- package/dist/SideNav/SideNav.d.ts +2 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +9 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +28 -12
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +23 -7
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +11 -0
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +20 -7
- package/dist/Table/Table.d.ts +1 -0
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +29 -13
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +1 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +2 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +4 -4
- package/dist/ToggleButton/ToggleButton.d.ts +9 -6
- package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +15 -27
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +3 -0
- package/dist/TreeList/TreeListItem.d.ts +6 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +12 -2
- package/dist/TreeList/TreeListTypes.d.ts +8 -1
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +16 -7
- package/dist/astryx.css +18 -7
- package/dist/hooks/scrollKeyboardDelegation.d.ts +3 -0
- package/dist/hooks/scrollKeyboardDelegation.d.ts.map +1 -0
- package/dist/hooks/scrollKeyboardDelegation.js +146 -0
- package/dist/hooks/useScrollableArea.d.ts +6 -2
- package/dist/hooks/useScrollableArea.d.ts.map +1 -1
- package/dist/hooks/useScrollableArea.js +17 -5
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +10 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +8 -0
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +9 -0
- package/locales/af-ZA.json +530 -1
- package/locales/ar-SA.json +490 -1
- package/locales/ca-ES.json +514 -1
- package/locales/cs-CZ.json +498 -1
- package/locales/da-DK.json +522 -1
- package/locales/de-DE.json +522 -1
- package/locales/el-GR.json +498 -1
- package/locales/es-ES.json +510 -1
- package/locales/fi-FI.json +498 -1
- package/locales/fr-FR.json +534 -1
- package/locales/he-IL.json +498 -1
- package/locales/hu-HU.json +498 -1
- package/locales/it-IT.json +510 -1
- package/locales/ja-JP.json +490 -1
- package/locales/ko-KR.json +498 -1
- package/locales/nl-NL.json +534 -1
- package/locales/no-NO.json +510 -1
- package/locales/pl-PL.json +506 -1
- package/locales/pt-BR.json +506 -1
- package/locales/pt-PT.json +506 -1
- package/locales/ro-RO.json +506 -1
- package/locales/ru-RU.json +498 -1
- package/locales/sr-SP.json +498 -1
- package/locales/sv-SE.json +502 -1
- package/locales/tr-TR.json +498 -1
- package/locales/uk-UA.json +498 -1
- package/locales/vi-VN.json +502 -1
- package/locales/zh-CN.json +490 -1
- package/locales/zh-TW.json +490 -1
- package/package.json +19 -4
- package/src/BottomSheet/BottomSheet.doc.mjs +8 -1
- package/src/BottomSheet/BottomSheet.spec.md +46 -20
- package/src/BottomSheet/BottomSheet.test.tsx +6 -3
- package/src/BottomSheet/BottomSheet.tsx +3 -1
- package/src/BottomSheet/BottomSheetKeyboard.test.tsx +195 -0
- package/src/BottomSheet/BottomSheetPanel.test.tsx +11 -1
- package/src/BottomSheet/BottomSheetPanel.tsx +49 -16
- package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +344 -0
- package/src/Button/__tests__/Button.a11y.chromium.spec.ts +17 -1
- package/src/Button/__tests__/Button.a11y.known-failures.ts +0 -29
- package/src/Button/__tests__/Button.a11y.renders.tsx +9 -2
- package/src/Button/__tests__/Button.a11y.states.ts +9 -0
- package/src/Chat/ChatComposer.doc.mjs +14 -0
- package/src/Chat/ChatComposer.spec.md +230 -0
- package/src/Chat/ChatComposer.test.tsx +57 -0
- package/src/Chat/ChatComposer.tsx +21 -9
- package/src/Chat/ChatComposerDrawer.doc.mjs +63 -5
- package/src/Chat/ChatComposerDrawer.spec.md +267 -0
- package/src/Chat/ChatComposerDrawer.test.tsx +81 -12
- package/src/Chat/ChatComposerDrawer.tsx +38 -9
- package/src/Chat/ChatComposerInput.doc.mjs +114 -26
- package/src/Chat/ChatComposerInput.spec.md +185 -0
- package/src/Chat/ChatComposerInput.test.tsx +113 -3
- package/src/Chat/ChatComposerInput.tsx +78 -13
- package/src/Chat/ChatComposerTokenElement.spec.md +152 -0
- package/src/Chat/ChatComposerTokenElement.test.tsx +85 -0
- package/src/Chat/ChatDictationButton.doc.mjs +3 -3
- package/src/Chat/ChatDictationButton.spec.md +160 -0
- package/src/Chat/ChatDictationButton.test.tsx +92 -27
- package/src/Chat/ChatDictationButton.tsx +8 -6
- package/src/Chat/ChatSendButton.test.tsx +1 -4
- package/src/Chat/ChatSendButton.tsx +1 -1
- package/src/Chat/index.ts +1 -0
- package/src/CheckboxInput/CheckboxInput.doc.mjs +11 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +34 -0
- package/src/CheckboxInput/CheckboxInput.tsx +21 -1
- package/src/ClickableCard/ClickableCard.test.tsx +102 -5
- package/src/Collapsible/Collapsible.doc.mjs +11 -0
- package/src/Collapsible/Collapsible.test.tsx +21 -0
- package/src/Collapsible/Collapsible.tsx +5 -0
- package/src/CommandPalette/CommandPaletteInput.tsx +6 -1
- package/src/ComplexSelector/ComplexSelector.tsx +6 -1
- package/src/DateInput/DateInput.tsx +6 -1
- package/src/DateInput/NativeDateField.tsx +24 -8
- package/src/DateInput/TouchDateField.tsx +6 -2
- package/src/DateRangeInput/DateRangeInput.tsx +6 -1
- package/src/DateTimeInput/DateTimeInput.tsx +6 -1
- package/src/DateTimeInput/TouchDateTimeField.tsx +6 -1
- package/src/DateTimeInput/nativePickerSegmentStyles.ts +24 -8
- package/src/Dialog/DialogHeader.doc.mjs +12 -0
- package/src/Dialog/DialogHeader.test.tsx +97 -0
- package/src/Dialog/DialogHeader.tsx +25 -3
- package/src/Dialog/modules/DialogHeader.spec.md +75 -38
- package/src/Field/InputClearButton.test.tsx +17 -3
- package/src/Field/InputClearButton.tsx +5 -2
- package/src/Field/PanelSearchInput.tsx +5 -2
- package/src/FieldStatus/__tests__/StatusMessage.a11y.states.ts +1 -1
- package/src/FileInput/FileInput.tsx +11 -2
- package/src/Kbd/Kbd.doc.mjs +3 -3
- package/src/Kbd/Kbd.test.tsx +57 -1
- package/src/Kbd/Kbd.tsx +57 -37
- package/src/Layout/LayoutFooter.doc.mjs +17 -0
- package/src/Link/Link.doc.mjs +11 -0
- package/src/Link/Link.test.tsx +24 -0
- package/src/Link/Link.tsx +5 -0
- package/src/List/List.spec.md +200 -0
- package/src/Markdown/Markdown.doc.mjs +272 -0
- package/src/Markdown/Markdown.fr23.bench.ts +174 -0
- package/src/Markdown/Markdown.fr23.perf.test.ts +249 -0
- package/src/Markdown/Markdown.fr23.sampling.ts +49 -0
- package/src/Markdown/Markdown.helpers.perf.test.ts +489 -0
- package/src/Markdown/Markdown.public.test.ts +126 -3
- package/src/Markdown/Markdown.spec.md +197 -44
- package/src/Markdown/Markdown.test.tsx +11 -0
- package/src/Markdown/Markdown.tsx +414 -135
- package/src/Markdown/ast.test.ts +307 -0
- package/src/Markdown/ast.ts +337 -0
- package/src/Markdown/incremental.test.ts +12 -0
- package/src/Markdown/index.ts +37 -1
- package/src/Markdown/modules/remark.spec.md +269 -0
- package/src/Markdown/parser/index.ts +64 -0
- package/src/Markdown/parser.public.test.ts +103 -0
- package/src/Markdown/parser.ts +1180 -235
- package/src/Markdown/plugins/frontmatter.test.tsx +125 -0
- package/src/Markdown/plugins/frontmatter.ts +198 -0
- package/src/Markdown/plugins/index.ts +53 -0
- package/src/Markdown/plugins/protocol.test.tsx +1022 -0
- package/src/Markdown/plugins/protocol.ts +1618 -0
- package/src/Markdown/plugins/semanticFence.test.tsx +546 -0
- package/src/Markdown/plugins/semanticFence.ts +424 -0
- package/src/Markdown/plugins/sourceDecoration.test.tsx +799 -0
- package/src/Markdown/plugins/sourceDecoration.ts +539 -0
- package/src/Markdown/plugins/textTransform.test.ts +467 -0
- package/src/Markdown/plugins/textTransform.ts +554 -0
- package/src/Markdown/remark.test.tsx +1877 -0
- package/src/Markdown/remark.ts +1574 -0
- package/src/Markdown/url.ts +30 -0
- package/src/Markdown/utils.ts +13 -1
- package/src/MultiSelector/MultiSelector.test.tsx +1 -35
- package/src/MultiSelector/__tests__/MultiSelector.listbox.a11y.test.tsx +128 -0
- package/src/NumberInput/NumberInput.tsx +6 -1
- package/src/Outline/Outline.doc.mjs +7 -5
- package/src/Outline/Outline.spec.md +1 -1
- package/src/Outline/index.ts +1 -0
- package/src/Outline/modules/parseOutlineFromMarkdown.spec.md +142 -0
- package/src/Outline/parseOutlineFromMarkdown.ts +40 -10
- package/src/Outline/useOutlineFromMarkdown.ts +15 -3
- package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +150 -1
- package/src/PowerSearch/PowerSearchEditPopover.tsx +51 -28
- package/src/ProgressBar/ProgressBar.test.tsx +29 -11
- package/src/ProgressBar/ProgressBar.tsx +59 -72
- package/src/RadioList/RadioList.doc.mjs +11 -0
- package/src/RadioList/RadioList.test.tsx +32 -0
- package/src/RadioList/RadioListItem.tsx +25 -1
- package/src/ScrollableArea/modules/useScrollableArea.spec.md +50 -22
- package/src/SegmentedControl/SegmentedControl.doc.mjs +2 -2
- package/src/SegmentedControl/SegmentedControl.test.tsx +31 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +6 -9
- package/src/Selector/Selector.doc.mjs +2 -2
- package/src/Selector/Selector.spec.md +51 -49
- package/src/Selector/Selector.test.tsx +61 -55
- package/src/Selector/Selector.tsx +23 -14
- package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +130 -0
- package/src/Selector/__tests__/Listbox.a11y.dom.ts +38 -0
- package/src/Selector/__tests__/Listbox.a11y.inventory.test.ts +63 -0
- package/src/Selector/__tests__/Listbox.a11y.known-failures.ts +37 -0
- package/src/Selector/__tests__/Listbox.a11y.states.ts +232 -0
- package/src/Selector/__tests__/Selector.listbox.a11y.test.tsx +121 -0
- package/src/SideNav/SideNav.doc.mjs +1 -1
- package/src/SideNav/SideNav.test.tsx +10 -0
- package/src/SideNav/SideNav.tsx +14 -2
- package/src/Slider/Slider.doc.mjs +17 -3
- package/src/Slider/Slider.test.tsx +221 -0
- package/src/Slider/Slider.tsx +40 -9
- package/src/Spinner/Spinner.test.tsx +4 -0
- package/src/Spinner/Spinner.tsx +31 -18
- package/src/Switch/Switch.doc.mjs +11 -0
- package/src/Switch/Switch.test.tsx +16 -0
- package/src/Switch/Switch.tsx +28 -0
- package/src/TabList/Tab.tsx +35 -7
- package/src/TabList/TabList.doc.mjs +11 -0
- package/src/TabList/TabList.spec.md +204 -0
- package/src/TabList/TabList.test.tsx +66 -0
- package/src/TabList/__tests__/Tabs.a11y.known-failures.ts +1 -34
- package/src/Table/Table.doc.mjs +1 -1
- package/src/Table/Table.spec.md +54 -40
- package/src/Table/Table.test.tsx +83 -10
- package/src/Table/Table.tsx +30 -22
- package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +137 -0
- package/src/TextArea/TextArea.tsx +6 -1
- package/src/TextInput/TextInput.test.tsx +20 -1
- package/src/TextInput/TextInput.tsx +6 -1
- package/src/TimeInput/TimeInput.tsx +6 -1
- package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
- package/src/ToggleButton/ToggleButton.test.tsx +299 -4
- package/src/ToggleButton/ToggleButton.tsx +26 -33
- package/src/ToggleButton/ToggleButtonGroup.doc.mjs +3 -3
- package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +209 -0
- package/src/Tokenizer/Tokenizer.spec.md +142 -75
- package/src/TreeList/TreeList.doc.mjs +3 -3
- package/src/TreeList/TreeList.spec.md +123 -75
- package/src/TreeList/TreeList.test.tsx +29 -0
- package/src/TreeList/TreeList.tsx +3 -0
- package/src/TreeList/TreeListItem.tsx +15 -1
- package/src/TreeList/TreeListTypes.ts +11 -1
- package/src/Typeahead/BaseTypeahead.spec.md +4 -3
- package/src/Typeahead/BaseTypeahead.tsx +21 -7
- package/src/Typeahead/Typeahead.test.tsx +53 -0
- package/src/__tests__/PressedState.a11y.chromium.spec.ts +813 -0
- package/src/__tests__/pressState.ts +93 -0
- package/src/hooks/scrollKeyboardDelegation.test.ts +155 -0
- package/src/hooks/scrollKeyboardDelegation.ts +233 -0
- package/src/hooks/useScrollableArea.doc.mjs +15 -3
- package/src/hooks/useScrollableArea.test.tsx +59 -1
- package/src/hooks/useScrollableArea.ts +34 -10
- package/src/inputFontFloor.test.ts +106 -0
- package/src/tailwind-theme.css +0 -6
- package/src/theme/generateThemeRules.test.ts +30 -0
- package/src/theme/generateThemeRules.ts +10 -0
- package/src/utils/interactionOverlay.stylex.ts +20 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file semanticFence.ts
|
|
3
|
+
* @input Declared fenced-code languages and typed extension-node factories
|
|
4
|
+
* @output Immutable Markdown transform that annotates eligible canonical code nodes
|
|
5
|
+
* @position Optional helper layer compiled onto the core transform protocol
|
|
6
|
+
*/
|
|
7
|
+
import type { MarkdownAstCode } from '../ast';
|
|
8
|
+
import { type MarkdownExtensionNode, type MarkdownPluginData, type MarkdownTransform } from './protocol';
|
|
9
|
+
export interface MarkdownFenceContext<Language extends string> {
|
|
10
|
+
readonly code: string;
|
|
11
|
+
readonly language: Language;
|
|
12
|
+
readonly meta?: string;
|
|
13
|
+
}
|
|
14
|
+
export type MarkdownFenceNode<Node extends MarkdownExtensionNode> = Node & {
|
|
15
|
+
readonly type: 'extension';
|
|
16
|
+
readonly display: 'block';
|
|
17
|
+
readonly position?: never;
|
|
18
|
+
readonly source?: never;
|
|
19
|
+
};
|
|
20
|
+
export interface MarkdownFenceTransformOptions<Languages extends readonly [string, ...string[]], Node extends MarkdownExtensionNode<string, string, MarkdownPluginData, 'block'>> {
|
|
21
|
+
/** Exact, case-sensitive fenced-code language identifiers this helper owns. */
|
|
22
|
+
readonly languages: Languages;
|
|
23
|
+
/**
|
|
24
|
+
* Creates typed semantic data for an eligible fence. Return null or undefined
|
|
25
|
+
* to retain Markdown's ordinary CodeBlock rendering.
|
|
26
|
+
*/
|
|
27
|
+
readonly createNode: (context: MarkdownFenceContext<Languages[number]>) => MarkdownFenceNode<Node> | null | undefined;
|
|
28
|
+
}
|
|
29
|
+
interface MarkdownFenceProposal {
|
|
30
|
+
readonly node: MarkdownExtensionNode<string, string, MarkdownPluginData, 'block'>;
|
|
31
|
+
}
|
|
32
|
+
/** @internal Returns the first transform-owned proposal attached to a code node. */
|
|
33
|
+
export declare function getMarkdownFenceProposal(node: MarkdownAstCode): MarkdownFenceProposal | undefined;
|
|
34
|
+
export declare function createMarkdownFenceTransform<const Languages extends readonly [string, ...string[]], const Node extends MarkdownExtensionNode<string, string, MarkdownPluginData, 'block'>>(options: MarkdownFenceTransformOptions<Languages, Node>): MarkdownTransform<Node>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=semanticFence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semanticFence.d.ts","sourceRoot":"","sources":["../../../src/Markdown/plugins/semanticFence.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEvB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,oBAAoB,CAAC,QAAQ,SAAS,MAAM;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,CAAC,IAAI,SAAS,qBAAqB,IAAI,IAAI,GAAG;IACzE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,6BAA6B,CAC5C,SAAS,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAChD,IAAI,SAAS,qBAAqB,CAChC,MAAM,EACN,MAAM,EACN,kBAAkB,EAClB,OAAO,CACR;IAED,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAC7C,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CACjD;AAED,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAClC,MAAM,EACN,MAAM,EACN,kBAAkB,EAClB,OAAO,CACR,CAAC;CACH;AAQD,oFAAoF;AACpF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,eAAe,GACpB,qBAAqB,GAAG,SAAS,CAEnC;AAgRD,wBAAgB,4BAA4B,CAC1C,KAAK,CAAC,SAAS,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EACtD,KAAK,CAAC,IAAI,SAAS,qBAAqB,CACtC,MAAM,EACN,MAAM,EACN,kBAAkB,EAClB,OAAO,CACR,EAED,OAAO,EAAE,6BAA6B,CAAC,SAAS,EAAE,IAAI,CAAC,GACtD,iBAAiB,CAAC,IAAI,CAAC,CAgEzB"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file semanticFence.ts
|
|
5
|
+
* @input Declared fenced-code languages and typed extension-node factories
|
|
6
|
+
* @output Immutable Markdown transform that annotates eligible canonical code nodes
|
|
7
|
+
* @position Optional helper layer compiled onto the core transform protocol
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { getMarkdownHelperOwnership, markMarkdownTransformClaim, markMarkdownTransformTrusted } from "./protocol.js";
|
|
11
|
+
const markdownFenceProposal = Symbol('MarkdownFenceProposal');
|
|
12
|
+
/** @internal Returns the first transform-owned proposal attached to a code node. */
|
|
13
|
+
export function getMarkdownFenceProposal(node) {
|
|
14
|
+
return node[markdownFenceProposal];
|
|
15
|
+
}
|
|
16
|
+
function cloneNestedPluginData(value, parent, ancestors) {
|
|
17
|
+
if (value == null || typeof value !== 'object') {
|
|
18
|
+
return clonePluginData(value, ancestors);
|
|
19
|
+
}
|
|
20
|
+
const nestedAncestors = new Set(ancestors);
|
|
21
|
+
nestedAncestors.add(parent);
|
|
22
|
+
return clonePluginData(value, nestedAncestors);
|
|
23
|
+
}
|
|
24
|
+
function clonePluginData(value, ancestors) {
|
|
25
|
+
if (value == null || typeof value === 'boolean' || typeof value === 'string') {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
if (typeof value === 'number') {
|
|
29
|
+
if (!Number.isFinite(value)) {
|
|
30
|
+
throw new TypeError('invalid plugin data');
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
if (typeof value !== 'object' || ancestors?.has(value) === true || !Array.isArray(value) && Object.getPrototypeOf(value) !== Object.prototype) {
|
|
35
|
+
throw new TypeError('invalid plugin data');
|
|
36
|
+
}
|
|
37
|
+
let clone;
|
|
38
|
+
if (Array.isArray(value)) {
|
|
39
|
+
const items = new Array(value.length);
|
|
40
|
+
for (let index = 0; index < value.length; index++) {
|
|
41
|
+
if (index in value) {
|
|
42
|
+
items[index] = cloneNestedPluginData(value[index], value, ancestors);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
clone = Object.freeze(items);
|
|
46
|
+
} else {
|
|
47
|
+
const record = {};
|
|
48
|
+
for (const key in value) {
|
|
49
|
+
const nested = cloneNestedPluginData(value[key], value, ancestors);
|
|
50
|
+
if (key === '__proto__') {
|
|
51
|
+
Object.defineProperty(record, key, {
|
|
52
|
+
configurable: true,
|
|
53
|
+
enumerable: true,
|
|
54
|
+
value: nested,
|
|
55
|
+
writable: true
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
record[key] = nested;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
clone = Object.freeze(record);
|
|
62
|
+
}
|
|
63
|
+
return clone;
|
|
64
|
+
}
|
|
65
|
+
function createProposal(node, pluginName, hasRenderer) {
|
|
66
|
+
if (node == null || typeof node !== 'object' || node.type !== 'extension' || node.plugin !== pluginName || typeof node.name !== 'string' || node.name.trim() === '' ||
|
|
67
|
+
// Every extension node must have a renderer and a text projection
|
|
68
|
+
// (FR14). Checking it here is what lets Core run this helper on its
|
|
69
|
+
// trusted path: the node is fully validated before it is inserted.
|
|
70
|
+
!hasRenderer(node.name) || node.display !== 'block' || 'source' in node || 'position' in node) {
|
|
71
|
+
throw new TypeError('Markdown fence createNode must return an owned block extension node with finite data and a registered renderer');
|
|
72
|
+
}
|
|
73
|
+
let data;
|
|
74
|
+
try {
|
|
75
|
+
data = clonePluginData(node.data);
|
|
76
|
+
} catch {
|
|
77
|
+
throw new TypeError('Markdown fence createNode must return an owned block extension node with finite data and a registered renderer');
|
|
78
|
+
}
|
|
79
|
+
return Object.freeze({
|
|
80
|
+
node: Object.freeze({
|
|
81
|
+
type: 'extension',
|
|
82
|
+
plugin: node.plugin,
|
|
83
|
+
name: node.name,
|
|
84
|
+
display: 'block',
|
|
85
|
+
data
|
|
86
|
+
})
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function isPromiseLike(value) {
|
|
90
|
+
return value != null && typeof value === 'object' && 'then' in value && typeof value.then === 'function';
|
|
91
|
+
}
|
|
92
|
+
function consumeInvalidAsyncNode(value, report) {
|
|
93
|
+
void Promise.resolve(value).then(() => report('Markdown fence createNode returned a Promise'), () => report('Markdown fence createNode Promise rejected'));
|
|
94
|
+
}
|
|
95
|
+
function annotateCode(node, languages, pluginName, hasRenderer, createNode, report) {
|
|
96
|
+
if (node.lang == null || !languages.has(node.lang) || getMarkdownFenceProposal(node) != null) {
|
|
97
|
+
return node;
|
|
98
|
+
}
|
|
99
|
+
const proposalNode = createNode(Object.freeze({
|
|
100
|
+
code: node.value,
|
|
101
|
+
language: node.lang,
|
|
102
|
+
...(node.meta == null ? {} : {
|
|
103
|
+
meta: node.meta
|
|
104
|
+
})
|
|
105
|
+
}));
|
|
106
|
+
if (isPromiseLike(proposalNode)) {
|
|
107
|
+
consumeInvalidAsyncNode(proposalNode, report);
|
|
108
|
+
throw new TypeError('Markdown fence createNode must be synchronous');
|
|
109
|
+
}
|
|
110
|
+
if (proposalNode == null) {
|
|
111
|
+
return node;
|
|
112
|
+
}
|
|
113
|
+
const annotated = {
|
|
114
|
+
...node
|
|
115
|
+
};
|
|
116
|
+
Object.defineProperty(annotated, markdownFenceProposal, {
|
|
117
|
+
configurable: false,
|
|
118
|
+
enumerable: true,
|
|
119
|
+
value: createProposal(proposalNode, pluginName, hasRenderer),
|
|
120
|
+
writable: false
|
|
121
|
+
});
|
|
122
|
+
return annotated;
|
|
123
|
+
}
|
|
124
|
+
function transformBlocks(blocks, languages, pluginName, hasRenderer, createNode, report) {
|
|
125
|
+
let next;
|
|
126
|
+
for (let index = 0; index < blocks.length; index++) {
|
|
127
|
+
const block = blocks[index];
|
|
128
|
+
let replacement;
|
|
129
|
+
switch (block.type) {
|
|
130
|
+
case 'code':
|
|
131
|
+
replacement = annotateCode(block, languages, pluginName, hasRenderer, createNode, report);
|
|
132
|
+
break;
|
|
133
|
+
case 'blockquote':
|
|
134
|
+
{
|
|
135
|
+
const children = transformBlocks(block.children, languages, pluginName, hasRenderer, createNode, report);
|
|
136
|
+
replacement = children === block.children ? block : {
|
|
137
|
+
...block,
|
|
138
|
+
children
|
|
139
|
+
};
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
case 'list':
|
|
143
|
+
{
|
|
144
|
+
let items;
|
|
145
|
+
for (let itemIndex = 0; itemIndex < block.children.length; itemIndex++) {
|
|
146
|
+
const item = block.children[itemIndex];
|
|
147
|
+
const itemChildren = transformBlocks(item.children, languages, pluginName, hasRenderer, createNode, report);
|
|
148
|
+
if (itemChildren === item.children) {
|
|
149
|
+
items?.push(item);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
items ??= block.children.slice(0, itemIndex);
|
|
153
|
+
items.push({
|
|
154
|
+
...item,
|
|
155
|
+
children: itemChildren
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
replacement = items == null ? block : {
|
|
159
|
+
...block,
|
|
160
|
+
children: items
|
|
161
|
+
};
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
case 'heading':
|
|
165
|
+
case 'paragraph':
|
|
166
|
+
case 'math':
|
|
167
|
+
case 'table':
|
|
168
|
+
case 'thematicBreak':
|
|
169
|
+
case 'image':
|
|
170
|
+
case 'extension':
|
|
171
|
+
replacement = block;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
if (next === undefined && replacement !== block) {
|
|
175
|
+
next = blocks.slice(0, index);
|
|
176
|
+
}
|
|
177
|
+
next?.push(replacement);
|
|
178
|
+
}
|
|
179
|
+
return next ?? blocks;
|
|
180
|
+
}
|
|
181
|
+
export function createMarkdownFenceTransform(options) {
|
|
182
|
+
if (!Array.isArray(options.languages) || options.languages.length === 0 || options.languages.some(language => typeof language !== 'string' || language.trim() === '')) {
|
|
183
|
+
throw new TypeError('Markdown fence languages must be non-empty strings');
|
|
184
|
+
}
|
|
185
|
+
if (new Set(options.languages).size !== options.languages.length) {
|
|
186
|
+
throw new TypeError('Markdown fence languages must be unique');
|
|
187
|
+
}
|
|
188
|
+
if (typeof options.createNode !== 'function') {
|
|
189
|
+
throw new TypeError('Markdown fence createNode must be a function');
|
|
190
|
+
}
|
|
191
|
+
const declaredLanguages = Object.freeze([...options.languages]);
|
|
192
|
+
const languages = new Set(declaredLanguages);
|
|
193
|
+
const sourceNeedles = Object.freeze(declaredLanguages.flatMap(language => [`\`\`\`${language}`, `~~~${language}`]));
|
|
194
|
+
const createNode = options.createNode;
|
|
195
|
+
const transform = (root, context) => {
|
|
196
|
+
const ownership = getMarkdownHelperOwnership(context);
|
|
197
|
+
if (ownership == null) {
|
|
198
|
+
throw new TypeError('Markdown fence transforms must run through createMarkdownPlugin');
|
|
199
|
+
}
|
|
200
|
+
const children = transformBlocks(root.children, languages, ownership.pluginName, ownership.hasRenderer, createNode, context.report);
|
|
201
|
+
return children === root.children ? root : {
|
|
202
|
+
...root,
|
|
203
|
+
children
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
// Every node this helper inserts is validated above against the same
|
|
208
|
+
// rules Core applies to plugin-authored output — owned plugin name,
|
|
209
|
+
// registered renderer, representable frozen data, no authored provenance
|
|
210
|
+
// — and nothing else in the tree is touched. Core may therefore skip
|
|
211
|
+
// revalidating the whole document after it runs.
|
|
212
|
+
return markMarkdownTransformTrusted(markMarkdownTransformClaim(transform, source => sourceNeedles.some(needle => source.includes(needle))));
|
|
213
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file sourceDecoration.ts
|
|
3
|
+
* @input Caller-supplied UTF-16 source ranges and non-semantic decoration payloads
|
|
4
|
+
* @output Immutable Markdown transforms that annotate Core-authored source-backed nodes
|
|
5
|
+
* @position Optional helper layer compiled onto the core transform protocol
|
|
6
|
+
*/
|
|
7
|
+
import type { MarkdownAstNodeBase } from '../ast';
|
|
8
|
+
import { type MarkdownPluginData, type MarkdownTransform } from './protocol';
|
|
9
|
+
/** One decoration recorded on an annotated node. */
|
|
10
|
+
export interface MarkdownSourceDecoration {
|
|
11
|
+
/** Stable decoration name supplied by the helper's caller. */
|
|
12
|
+
readonly name: string;
|
|
13
|
+
/** Optional finite JSON-like payload copied from the matching range. */
|
|
14
|
+
readonly data?: MarkdownPluginData;
|
|
15
|
+
}
|
|
16
|
+
export interface MarkdownSourceDecorationRange {
|
|
17
|
+
/** Inclusive UTF-16 offset into the parsed source. */
|
|
18
|
+
readonly start: number;
|
|
19
|
+
/** Exclusive UTF-16 offset into the parsed source. */
|
|
20
|
+
readonly end: number;
|
|
21
|
+
/** Optional finite JSON-like payload recorded with this range. */
|
|
22
|
+
readonly data?: MarkdownPluginData;
|
|
23
|
+
}
|
|
24
|
+
export interface MarkdownSourceDecorationOptions {
|
|
25
|
+
/** Stable decoration name identifying every entry this helper records. */
|
|
26
|
+
readonly name: string;
|
|
27
|
+
/**
|
|
28
|
+
* Source ranges to decorate, as UTF-16 offsets into the same string the
|
|
29
|
+
* parser received. Order does not matter: entries are recorded in a fixed
|
|
30
|
+
* start, end, payload order so overlapping and duplicate ranges resolve the
|
|
31
|
+
* same way on every run. An empty list is a valid no-op.
|
|
32
|
+
*/
|
|
33
|
+
readonly ranges: ReadonlyArray<MarkdownSourceDecorationRange>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Compiles validated source ranges into an immutable transform that records
|
|
37
|
+
* non-semantic presentation metadata on the Core-authored nodes those ranges
|
|
38
|
+
* overlap.
|
|
39
|
+
*
|
|
40
|
+
* A node is decorated only when the parser authored its source position and
|
|
41
|
+
* the range overlaps its span, so the helper never changes AST meaning,
|
|
42
|
+
* rendered output, copyable text, accessible names, focus order, navigation,
|
|
43
|
+
* or source provenance. Core authors positions on top-level blocks, so a
|
|
44
|
+
* range decorates every block it touches, whatever order those blocks sit in
|
|
45
|
+
* after earlier transforms.
|
|
46
|
+
*
|
|
47
|
+
* Decorations describe settled source, so they appear on the final snapshot
|
|
48
|
+
* of a streaming document rather than on its partial chunks: a partial
|
|
49
|
+
* block's extent is still changing, and exposing decorations from it would
|
|
50
|
+
* let one appear and then vanish. Exposure is therefore monotone — never
|
|
51
|
+
* present, then absent.
|
|
52
|
+
*
|
|
53
|
+
* Decorations are stored in one Core-owned versioned envelope and read back
|
|
54
|
+
* with `getMarkdownSourceDecorations`; data the helper does not own is never
|
|
55
|
+
* merged into or overwritten.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```
|
|
59
|
+
* const reviewHits = createMarkdownPlugin({
|
|
60
|
+
* name: 'review-hits',
|
|
61
|
+
* apiVersion: 1,
|
|
62
|
+
* transform: createMarkdownSourceDecoration({
|
|
63
|
+
* name: 'review-hit',
|
|
64
|
+
* ranges: [{start: 0, end: 12, data: {reviewer: 'ada'}}],
|
|
65
|
+
* }),
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function createMarkdownSourceDecoration(options: MarkdownSourceDecorationOptions): MarkdownTransform<never>;
|
|
70
|
+
/**
|
|
71
|
+
* Reads the decorations a source-decoration helper recorded on a node.
|
|
72
|
+
* Returns an empty list for undecorated nodes and for any value that is not
|
|
73
|
+
* a current Core-owned decoration envelope.
|
|
74
|
+
*/
|
|
75
|
+
export declare function getMarkdownSourceDecorations(node: MarkdownAstNodeBase): ReadonlyArray<MarkdownSourceDecoration>;
|
|
76
|
+
//# sourceMappingURL=sourceDecoration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourceDecoration.d.ts","sourceRoot":"","sources":["../../../src/Markdown/plugins/sourceDecoration.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,mBAAmB,EAGpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAYpB,oDAAoD;AACpD,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,6BAA6B;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,+BAA+B;IAC9C,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,6BAA6B,CAAC,CAAC;CAC/D;AAiXD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,+BAA+B,GACvC,iBAAiB,CAAC,KAAK,CAAC,CAwD1B;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,mBAAmB,GACxB,aAAa,CAAC,wBAAwB,CAAC,CAOzC"}
|