shelving 1.236.0 → 1.236.2
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/api/cache/APICache.d.ts +69 -6
- package/api/cache/APICache.js +61 -5
- package/api/cache/EndpointCache.d.ts +75 -7
- package/api/cache/EndpointCache.js +75 -7
- package/api/endpoint/Endpoint.d.ts +141 -25
- package/api/endpoint/Endpoint.js +55 -9
- package/api/endpoint/util.d.ts +28 -6
- package/api/provider/APIProvider.d.ts +58 -14
- package/api/provider/APIProvider.js +24 -2
- package/api/provider/CachedAPIProvider.d.ts +58 -5
- package/api/provider/CachedAPIProvider.js +58 -6
- package/api/provider/ClientAPIProvider.d.ts +80 -4
- package/api/provider/ClientAPIProvider.js +75 -4
- package/api/provider/DebugAPIProvider.d.ts +40 -1
- package/api/provider/DebugAPIProvider.js +40 -1
- package/api/provider/JSONAPIProvider.d.ts +18 -2
- package/api/provider/JSONAPIProvider.js +18 -2
- package/api/provider/LoggingAPIProvider.d.ts +25 -2
- package/api/provider/LoggingAPIProvider.js +25 -2
- package/api/provider/MockAPIProvider.d.ts +72 -1
- package/api/provider/MockAPIProvider.js +60 -4
- package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
- package/api/provider/MockEndpointAPIProvider.js +9 -0
- package/api/provider/ThroughAPIProvider.d.ts +67 -1
- package/api/provider/ThroughAPIProvider.js +67 -1
- package/api/provider/ValidationAPIProvider.d.ts +32 -1
- package/api/provider/ValidationAPIProvider.js +32 -1
- package/api/provider/XMLAPIProvider.d.ts +18 -2
- package/api/provider/XMLAPIProvider.js +18 -2
- package/api/store/EndpointStore.d.ts +24 -1
- package/api/store/EndpointStore.js +24 -1
- package/bun/BunPostgreSQLProvider.d.ts +38 -0
- package/bun/BunPostgreSQLProvider.js +38 -2
- package/cloudflare/CloudflareD1Provider.d.ts +29 -2
- package/cloudflare/CloudflareD1Provider.js +29 -2
- package/cloudflare/CloudflareKVProvider.d.ts +115 -0
- package/cloudflare/CloudflareKVProvider.js +115 -0
- package/cloudflare/types.d.ts +41 -7
- package/db/cache/CollectionCache.d.ts +83 -7
- package/db/cache/CollectionCache.js +83 -7
- package/db/cache/DBCache.d.ts +93 -8
- package/db/cache/DBCache.js +85 -7
- package/db/collection/Collection.d.ts +103 -15
- package/db/collection/Collection.js +58 -6
- package/db/migrate/DBMigrator.d.ts +29 -1
- package/db/migrate/DBMigrator.js +20 -1
- package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
- package/db/migrate/PostgreSQLMigrator.js +8 -1
- package/db/migrate/SQLMigrator.d.ts +63 -4
- package/db/migrate/SQLMigrator.js +51 -1
- package/db/migrate/SQLiteMigrator.d.ts +8 -1
- package/db/migrate/SQLiteMigrator.js +8 -1
- package/db/provider/CacheDBProvider.d.ts +135 -1
- package/db/provider/CacheDBProvider.js +135 -1
- package/db/provider/ChangesDBProvider.d.ts +84 -3
- package/db/provider/ChangesDBProvider.js +77 -2
- package/db/provider/DBProvider.d.ts +148 -1
- package/db/provider/DBProvider.js +51 -1
- package/db/provider/DebugDBProvider.d.ts +118 -1
- package/db/provider/DebugDBProvider.js +118 -1
- package/db/provider/MemoryDBProvider.d.ts +262 -7
- package/db/provider/MemoryDBProvider.js +262 -7
- package/db/provider/MockDBProvider.d.ts +113 -2
- package/db/provider/MockDBProvider.js +106 -1
- package/db/provider/PostgreSQLProvider.d.ts +34 -2
- package/db/provider/PostgreSQLProvider.js +34 -4
- package/db/provider/SQLProvider.d.ts +250 -14
- package/db/provider/SQLProvider.js +237 -13
- package/db/provider/SQLiteProvider.d.ts +41 -1
- package/db/provider/SQLiteProvider.js +41 -4
- package/db/provider/ThroughDBProvider.d.ts +156 -1
- package/db/provider/ThroughDBProvider.js +156 -1
- package/db/provider/ValidationDBProvider.d.ts +120 -1
- package/db/provider/ValidationDBProvider.js +120 -1
- package/db/store/ItemStore.d.ts +38 -2
- package/db/store/ItemStore.js +38 -2
- package/db/store/QueryStore.d.ts +64 -6
- package/db/store/QueryStore.js +64 -6
- package/error/BaseError.d.ts +27 -2
- package/error/BaseError.js +14 -0
- package/error/Errors.d.ts +12 -1
- package/error/Errors.js +12 -1
- package/error/NetworkError.d.ts +13 -1
- package/error/NetworkError.js +13 -1
- package/error/RequestError.d.ts +90 -7
- package/error/RequestError.js +90 -7
- package/error/RequiredError.d.ts +11 -1
- package/error/RequiredError.js +11 -1
- package/error/ResponseError.d.ts +19 -2
- package/error/ResponseError.js +19 -2
- package/error/UnexpectedError.d.ts +14 -1
- package/error/UnexpectedError.js +14 -1
- package/error/UnimplementedError.d.ts +13 -1
- package/error/UnimplementedError.js +13 -1
- package/error/ValueError.d.ts +14 -1
- package/error/ValueError.js +14 -1
- package/extract/DirectoryExtractor.d.ts +35 -1
- package/extract/DirectoryExtractor.js +30 -0
- package/extract/Extractor.d.ts +21 -2
- package/extract/Extractor.js +7 -1
- package/extract/FileExtractor.d.ts +18 -0
- package/extract/FileExtractor.js +18 -0
- package/extract/IndexExtractor.d.ts +36 -1
- package/extract/IndexExtractor.js +31 -0
- package/extract/MarkupExtractor.d.ts +15 -0
- package/extract/MarkupExtractor.js +15 -0
- package/extract/MergingExtractor.d.ts +36 -1
- package/extract/MergingExtractor.js +31 -0
- package/extract/ModuleExtractor.d.ts +25 -1
- package/extract/ModuleExtractor.js +20 -0
- package/extract/PackageExtractor.d.ts +36 -1
- package/extract/PackageExtractor.js +31 -0
- package/extract/ThroughExtractor.d.ts +22 -1
- package/extract/ThroughExtractor.js +22 -1
- package/extract/TypescriptExtractor.d.ts +21 -0
- package/extract/TypescriptExtractor.js +28 -3
- package/firestore/client/FirestoreClientProvider.d.ts +129 -4
- package/firestore/client/FirestoreClientProvider.js +129 -4
- package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
- package/firestore/lite/FirestoreLiteProvider.js +128 -3
- package/firestore/server/FirestoreServerProvider.d.ts +129 -2
- package/firestore/server/FirestoreServerProvider.js +129 -2
- package/markup/MarkupParser.d.ts +57 -10
- package/markup/MarkupParser.js +50 -9
- package/markup/MarkupRule.d.ts +34 -1
- package/markup/Parser.d.ts +18 -0
- package/markup/Parser.js +11 -0
- package/markup/rule/blockquote.d.ts +3 -0
- package/markup/rule/blockquote.js +3 -0
- package/markup/rule/code.d.ts +3 -0
- package/markup/rule/code.js +3 -0
- package/markup/rule/fenced.d.ts +3 -0
- package/markup/rule/fenced.js +3 -0
- package/markup/rule/heading.d.ts +3 -0
- package/markup/rule/heading.js +3 -0
- package/markup/rule/index.d.ts +16 -3
- package/markup/rule/index.js +16 -3
- package/markup/rule/inline.d.ts +4 -1
- package/markup/rule/inline.js +5 -2
- package/markup/rule/linebreak.d.ts +3 -0
- package/markup/rule/linebreak.js +3 -0
- package/markup/rule/link.d.ts +6 -0
- package/markup/rule/link.js +6 -0
- package/markup/rule/ordered.d.ts +3 -0
- package/markup/rule/ordered.js +3 -0
- package/markup/rule/paragraph.d.ts +3 -0
- package/markup/rule/paragraph.js +3 -0
- package/markup/rule/separator.d.ts +3 -0
- package/markup/rule/separator.js +3 -0
- package/markup/rule/table.d.ts +3 -0
- package/markup/rule/table.js +3 -0
- package/markup/rule/unordered.d.ts +3 -0
- package/markup/rule/unordered.js +3 -0
- package/markup/util/regexp.d.ts +80 -3
- package/markup/util/regexp.js +44 -0
- package/package.json +1 -1
- package/react/createAPIContext.d.ts +15 -0
- package/react/createAPIContext.js +10 -0
- package/react/createDBContext.d.ts +15 -0
- package/react/createDBContext.js +10 -0
- package/react/useInstance.d.ts +11 -0
- package/react/useInstance.js +11 -0
- package/react/useLazy.d.ts +11 -0
- package/react/useMap.d.ts +14 -1
- package/react/useMap.js +14 -1
- package/react/useReduce.d.ts +12 -0
- package/react/useSequence.d.ts +10 -0
- package/react/useSequence.js +10 -0
- package/react/useStore.d.ts +16 -1
- package/schema/AddressSchema.d.ts +41 -4
- package/schema/AddressSchema.js +36 -3
- package/schema/ArraySchema.d.ts +48 -6
- package/schema/ArraySchema.js +40 -5
- package/schema/BooleanSchema.d.ts +59 -3
- package/schema/BooleanSchema.js +51 -2
- package/schema/ChoiceSchema.d.ts +61 -7
- package/schema/ChoiceSchema.js +44 -2
- package/schema/ColorSchema.d.ts +41 -8
- package/schema/ColorSchema.js +36 -7
- package/schema/CountrySchema.d.ts +44 -4
- package/schema/CountrySchema.js +39 -3
- package/schema/CurrencyAmountSchema.d.ts +104 -8
- package/schema/CurrencyAmountSchema.js +91 -4
- package/schema/CurrencyCodeSchema.d.ts +56 -4
- package/schema/CurrencyCodeSchema.js +49 -3
- package/schema/DataSchema.d.ts +101 -10
- package/schema/DataSchema.js +87 -8
- package/schema/DateSchema.d.ts +73 -4
- package/schema/DateSchema.js +57 -2
- package/schema/DateTimeSchema.d.ts +40 -3
- package/schema/DateTimeSchema.js +40 -3
- package/schema/DictionarySchema.d.ts +54 -4
- package/schema/DictionarySchema.js +47 -3
- package/schema/EmailSchema.d.ts +34 -3
- package/schema/EmailSchema.js +34 -3
- package/schema/EntitySchema.d.ts +45 -4
- package/schema/EntitySchema.js +38 -3
- package/schema/FileSchema.d.ts +45 -4
- package/schema/FileSchema.js +39 -3
- package/schema/KeySchema.d.ts +32 -3
- package/schema/KeySchema.js +32 -3
- package/schema/NullableSchema.d.ts +64 -4
- package/schema/NullableSchema.js +59 -3
- package/schema/NumberSchema.d.ts +137 -12
- package/schema/NumberSchema.js +127 -11
- package/schema/OptionalSchema.d.ts +61 -4
- package/schema/OptionalSchema.js +56 -4
- package/schema/PasswordSchema.d.ts +37 -1
- package/schema/PasswordSchema.js +32 -1
- package/schema/PhoneSchema.d.ts +40 -4
- package/schema/PhoneSchema.js +35 -3
- package/schema/RequiredSchema.d.ts +39 -3
- package/schema/RequiredSchema.js +41 -3
- package/schema/Schema.d.ts +67 -7
- package/schema/Schema.js +42 -6
- package/schema/SlugSchema.d.ts +37 -5
- package/schema/SlugSchema.js +37 -5
- package/schema/StringSchema.d.ts +124 -19
- package/schema/StringSchema.js +107 -17
- package/schema/ThroughSchema.d.ts +35 -2
- package/schema/ThroughSchema.js +30 -1
- package/schema/TimeSchema.d.ts +43 -3
- package/schema/TimeSchema.js +43 -3
- package/schema/URISchema.d.ts +67 -6
- package/schema/URISchema.js +60 -6
- package/schema/URLSchema.d.ts +69 -6
- package/schema/URLSchema.js +61 -6
- package/schema/UUIDSchema.d.ts +37 -4
- package/schema/UUIDSchema.js +37 -4
- package/sequence/DeferredSequence.d.ts +49 -3
- package/sequence/DeferredSequence.js +39 -3
- package/sequence/InspectSequence.d.ts +59 -5
- package/sequence/InspectSequence.js +59 -5
- package/sequence/LazySequence.d.ts +30 -2
- package/sequence/LazySequence.js +30 -2
- package/sequence/Sequence.d.ts +11 -0
- package/sequence/Sequence.js +10 -0
- package/sequence/ThroughSequence.d.ts +15 -0
- package/sequence/ThroughSequence.js +15 -0
- package/store/ArrayStore.d.ts +74 -11
- package/store/ArrayStore.js +74 -11
- package/store/BooleanStore.d.ts +19 -2
- package/store/BooleanStore.js +19 -2
- package/store/BusyStore.d.ts +13 -1
- package/store/BusyStore.js +13 -1
- package/store/DataStore.d.ts +118 -15
- package/store/DataStore.js +118 -15
- package/store/DictionaryStore.d.ts +66 -8
- package/store/DictionaryStore.js +66 -8
- package/store/FetchStore.d.ts +43 -6
- package/store/FetchStore.js +36 -5
- package/store/PathStore.d.ts +44 -5
- package/store/PathStore.js +44 -5
- package/store/PayloadFetchStore.d.ts +16 -1
- package/store/PayloadFetchStore.js +9 -1
- package/store/Store.d.ts +85 -16
- package/store/Store.js +52 -10
- package/store/URLStore.d.ts +173 -15
- package/store/URLStore.js +173 -15
- package/test/basics.d.ts +70 -0
- package/test/basics.js +60 -0
- package/test/people.d.ts +45 -0
- package/test/people.js +35 -0
- package/test/util.d.ts +30 -3
- package/test/util.js +30 -3
- package/ui/app/App.d.ts +14 -2
- package/ui/app/App.js +9 -2
- package/ui/app/App.tsx +14 -2
- package/ui/block/Address.d.ts +45 -3
- package/ui/block/Address.js +30 -3
- package/ui/block/Address.tsx +46 -3
- package/ui/block/Block.d.ts +23 -1
- package/ui/block/Block.js +13 -1
- package/ui/block/Block.tsx +23 -1
- package/ui/block/Blockquote.d.ts +21 -0
- package/ui/block/Blockquote.js +16 -0
- package/ui/block/Blockquote.tsx +22 -0
- package/ui/block/Caption.d.ts +21 -1
- package/ui/block/Caption.js +16 -1
- package/ui/block/Caption.tsx +22 -1
- package/ui/block/Card.d.ts +6 -0
- package/ui/block/Card.js +1 -0
- package/ui/block/Card.tsx +6 -0
- package/ui/block/Definitions.d.ts +18 -0
- package/ui/block/Definitions.js +13 -0
- package/ui/block/Definitions.tsx +19 -0
- package/ui/block/Divider.d.ts +21 -0
- package/ui/block/Divider.js +16 -0
- package/ui/block/Divider.tsx +22 -0
- package/ui/block/Heading.d.ts +20 -1
- package/ui/block/Heading.js +15 -0
- package/ui/block/Heading.tsx +21 -1
- package/ui/block/Image.d.ts +23 -0
- package/ui/block/Image.js +18 -0
- package/ui/block/Image.tsx +24 -0
- package/ui/block/Label.d.ts +18 -3
- package/ui/block/Label.js +13 -3
- package/ui/block/Label.tsx +18 -3
- package/ui/block/List.d.ts +30 -0
- package/ui/block/List.js +25 -0
- package/ui/block/List.tsx +32 -0
- package/ui/block/Panel.d.ts +13 -1
- package/ui/block/Panel.js +3 -0
- package/ui/block/Panel.tsx +13 -1
- package/ui/block/Paragraph.d.ts +23 -0
- package/ui/block/Paragraph.js +18 -0
- package/ui/block/Paragraph.tsx +24 -0
- package/ui/block/Preformatted.d.ts +20 -0
- package/ui/block/Preformatted.js +15 -0
- package/ui/block/Preformatted.tsx +21 -0
- package/ui/block/Prose.d.ts +14 -1
- package/ui/block/Prose.js +9 -1
- package/ui/block/Prose.tsx +14 -1
- package/ui/block/Section.d.ts +69 -6
- package/ui/block/Section.js +59 -6
- package/ui/block/Section.tsx +70 -6
- package/ui/block/Subheading.d.ts +20 -1
- package/ui/block/Subheading.js +15 -0
- package/ui/block/Subheading.tsx +21 -1
- package/ui/block/Table.d.ts +20 -0
- package/ui/block/Table.js +15 -0
- package/ui/block/Table.tsx +21 -0
- package/ui/block/Title.d.ts +20 -1
- package/ui/block/Title.js +15 -0
- package/ui/block/Title.tsx +21 -1
- package/ui/block/Video.d.ts +50 -3
- package/ui/block/Video.js +30 -3
- package/ui/block/Video.tsx +50 -3
- package/ui/dialog/Dialog.d.ts +28 -1
- package/ui/dialog/Dialog.js +18 -1
- package/ui/dialog/Dialog.tsx +28 -1
- package/ui/dialog/Dialogs.d.ts +53 -6
- package/ui/dialog/Dialogs.js +43 -6
- package/ui/dialog/Dialogs.tsx +53 -6
- package/ui/dialog/Modal.d.ts +13 -0
- package/ui/dialog/Modal.js +8 -0
- package/ui/dialog/Modal.tsx +13 -0
- package/ui/docs/DocumentationButtons.d.ts +5 -1
- package/ui/docs/DocumentationButtons.tsx +5 -1
- package/ui/docs/DocumentationCard.d.ts +6 -1
- package/ui/docs/DocumentationCard.js +6 -1
- package/ui/docs/DocumentationCard.tsx +6 -1
- package/ui/docs/DocumentationKind.d.ts +13 -1
- package/ui/docs/DocumentationKind.js +8 -0
- package/ui/docs/DocumentationKind.tsx +13 -1
- package/ui/docs/DocumentationPage.d.ts +6 -1
- package/ui/docs/DocumentationPage.js +6 -1
- package/ui/docs/DocumentationPage.tsx +6 -1
- package/ui/docs/DocumentationSignatures.d.ts +10 -1
- package/ui/docs/DocumentationSignatures.js +5 -0
- package/ui/docs/DocumentationSignatures.tsx +10 -1
- package/ui/form/ArrayInput.d.ts +15 -0
- package/ui/form/ArrayInput.tsx +15 -0
- package/ui/form/ArrayRadioInputs.d.ts +10 -0
- package/ui/form/ArrayRadioInputs.js +5 -0
- package/ui/form/ArrayRadioInputs.tsx +10 -0
- package/ui/form/Button.d.ts +19 -3
- package/ui/form/Button.js +14 -2
- package/ui/form/Button.tsx +19 -3
- package/ui/form/ButtonInput.d.ts +14 -1
- package/ui/form/ButtonInput.js +9 -1
- package/ui/form/ButtonInput.tsx +14 -1
- package/ui/form/ButtonInputPopover.d.ts +10 -0
- package/ui/form/ButtonInputPopover.js +5 -0
- package/ui/form/ButtonInputPopover.tsx +10 -0
- package/ui/form/ButtonPopover.d.ts +11 -1
- package/ui/form/ButtonPopover.js +6 -1
- package/ui/form/ButtonPopover.tsx +11 -1
- package/ui/form/CheckboxInput.d.ts +14 -1
- package/ui/form/CheckboxInput.js +9 -1
- package/ui/form/CheckboxInput.tsx +14 -1
- package/ui/form/ChoiceRadioInputs.d.ts +10 -0
- package/ui/form/ChoiceRadioInputs.tsx +10 -0
- package/ui/form/Clickable.d.ts +45 -5
- package/ui/form/Clickable.js +30 -3
- package/ui/form/Clickable.tsx +45 -5
- package/ui/form/DataInput.d.ts +14 -0
- package/ui/form/DataInput.tsx +14 -0
- package/ui/form/DateInput.d.ts +14 -0
- package/ui/form/DateInput.js +9 -0
- package/ui/form/DateInput.tsx +14 -0
- package/ui/form/DictionaryInput.d.ts +15 -0
- package/ui/form/DictionaryInput.tsx +15 -0
- package/ui/form/Field.d.ts +5 -0
- package/ui/form/Field.tsx +5 -0
- package/ui/form/FileInput.d.ts +14 -0
- package/ui/form/FileInput.js +9 -0
- package/ui/form/FileInput.tsx +14 -0
- package/ui/form/Form.d.ts +55 -6
- package/ui/form/Form.js +35 -3
- package/ui/form/Form.tsx +55 -6
- package/ui/form/FormContext.d.ts +24 -3
- package/ui/form/FormContext.js +5 -1
- package/ui/form/FormContext.tsx +24 -3
- package/ui/form/FormFields.d.ts +15 -2
- package/ui/form/FormFields.js +15 -2
- package/ui/form/FormFields.tsx +15 -2
- package/ui/form/FormFooter.d.ts +13 -3
- package/ui/form/FormFooter.js +8 -3
- package/ui/form/FormFooter.tsx +13 -3
- package/ui/form/FormInput.d.ts +21 -2
- package/ui/form/FormInput.js +16 -2
- package/ui/form/FormInput.tsx +21 -2
- package/ui/form/FormMessage.d.ts +8 -1
- package/ui/form/FormMessage.js +8 -1
- package/ui/form/FormMessage.tsx +8 -2
- package/ui/form/FormNotice.d.ts +8 -1
- package/ui/form/FormNotice.js +8 -1
- package/ui/form/FormNotice.tsx +8 -2
- package/ui/form/FormNotify.d.ts +8 -1
- package/ui/form/FormNotify.js +8 -1
- package/ui/form/FormNotify.tsx +8 -2
- package/ui/form/FormStore.d.ts +50 -6
- package/ui/form/FormStore.js +50 -6
- package/ui/form/FormStore.tsx +50 -6
- package/ui/form/Input.d.ts +65 -1
- package/ui/form/Input.js +60 -0
- package/ui/form/Input.tsx +77 -1
- package/ui/form/NumberInput.d.ts +14 -0
- package/ui/form/NumberInput.js +9 -0
- package/ui/form/NumberInput.tsx +14 -0
- package/ui/form/OutputInput.d.ts +13 -1
- package/ui/form/OutputInput.js +8 -1
- package/ui/form/OutputInput.tsx +13 -1
- package/ui/form/Popover.d.ts +18 -2
- package/ui/form/Popover.js +8 -2
- package/ui/form/Popover.tsx +18 -2
- package/ui/form/Progress.d.ts +26 -2
- package/ui/form/Progress.js +16 -2
- package/ui/form/Progress.tsx +26 -2
- package/ui/form/QueryInput.d.ts +14 -5
- package/ui/form/QueryInput.js +9 -5
- package/ui/form/QueryInput.tsx +14 -5
- package/ui/form/RadioInput.d.ts +14 -1
- package/ui/form/RadioInput.js +9 -1
- package/ui/form/RadioInput.tsx +14 -1
- package/ui/form/SchemaInput.d.ts +138 -7
- package/ui/form/SchemaInput.js +79 -4
- package/ui/form/SchemaInput.tsx +138 -7
- package/ui/form/SelectInput.d.ts +14 -0
- package/ui/form/SelectInput.tsx +14 -0
- package/ui/form/SubmitButton.d.ts +14 -1
- package/ui/form/SubmitButton.js +9 -1
- package/ui/form/SubmitButton.tsx +14 -1
- package/ui/form/TextInput.d.ts +15 -0
- package/ui/form/TextInput.js +10 -0
- package/ui/form/TextInput.tsx +15 -0
- package/ui/inline/Code.d.ts +29 -0
- package/ui/inline/Code.js +24 -0
- package/ui/inline/Code.tsx +31 -0
- package/ui/inline/Deleted.d.ts +23 -0
- package/ui/inline/Deleted.js +18 -0
- package/ui/inline/Deleted.tsx +24 -0
- package/ui/inline/Emphasis.d.ts +23 -0
- package/ui/inline/Emphasis.js +18 -0
- package/ui/inline/Emphasis.tsx +24 -0
- package/ui/inline/Inserted.d.ts +23 -0
- package/ui/inline/Inserted.js +18 -0
- package/ui/inline/Inserted.tsx +24 -0
- package/ui/inline/Link.d.ts +23 -0
- package/ui/inline/Link.js +18 -0
- package/ui/inline/Link.tsx +24 -0
- package/ui/inline/Mark.d.ts +23 -0
- package/ui/inline/Mark.js +18 -0
- package/ui/inline/Mark.tsx +24 -0
- package/ui/inline/Small.d.ts +23 -0
- package/ui/inline/Small.js +18 -0
- package/ui/inline/Small.tsx +24 -0
- package/ui/inline/Strong.d.ts +23 -0
- package/ui/inline/Strong.js +18 -0
- package/ui/inline/Strong.tsx +24 -0
- package/ui/inline/Subscript.d.ts +23 -0
- package/ui/inline/Subscript.js +18 -0
- package/ui/inline/Subscript.tsx +24 -0
- package/ui/inline/Superscript.d.ts +23 -0
- package/ui/inline/Superscript.js +18 -0
- package/ui/inline/Superscript.tsx +24 -0
- package/ui/inline/When.d.ts +42 -3
- package/ui/inline/When.js +27 -3
- package/ui/inline/When.tsx +42 -3
- package/ui/layout/CenteredLayout.d.ts +12 -1
- package/ui/layout/CenteredLayout.js +7 -1
- package/ui/layout/CenteredLayout.tsx +12 -1
- package/ui/layout/Layout.d.ts +12 -3
- package/ui/layout/Layout.js +12 -3
- package/ui/layout/Layout.ts +12 -3
- package/ui/layout/SidebarLayout.d.ts +12 -0
- package/ui/layout/SidebarLayout.js +7 -0
- package/ui/layout/SidebarLayout.tsx +12 -0
- package/ui/menu/Menu.d.ts +22 -0
- package/ui/menu/Menu.js +12 -0
- package/ui/menu/Menu.tsx +22 -0
- package/ui/misc/Catcher.d.ts +77 -5
- package/ui/misc/Catcher.js +47 -5
- package/ui/misc/Catcher.tsx +77 -5
- package/ui/misc/Loading.d.ts +20 -0
- package/ui/misc/Loading.js +15 -0
- package/ui/misc/Loading.tsx +20 -0
- package/ui/misc/Mapper.d.ts +13 -1
- package/ui/misc/Mapper.js +4 -0
- package/ui/misc/Mapper.tsx +13 -1
- package/ui/misc/Markup.d.ts +9 -1
- package/ui/misc/Markup.js +4 -0
- package/ui/misc/Markup.tsx +9 -1
- package/ui/misc/MetaContext.d.ts +24 -7
- package/ui/misc/MetaContext.js +19 -6
- package/ui/misc/MetaContext.tsx +24 -7
- package/ui/misc/StatusIcon.d.ts +16 -1
- package/ui/misc/StatusIcon.js +11 -1
- package/ui/misc/StatusIcon.tsx +16 -1
- package/ui/misc/Tag.d.ts +21 -0
- package/ui/misc/Tag.js +11 -0
- package/ui/misc/Tag.tsx +21 -0
- package/ui/notice/Message.d.ts +27 -1
- package/ui/notice/Message.js +22 -1
- package/ui/notice/Message.tsx +27 -1
- package/ui/notice/Notice.d.ts +24 -0
- package/ui/notice/Notice.js +19 -0
- package/ui/notice/Notice.tsx +24 -0
- package/ui/notice/NoticeStore.d.ts +30 -2
- package/ui/notice/NoticeStore.js +30 -2
- package/ui/notice/NoticeStore.ts +30 -2
- package/ui/notice/Notices.d.ts +11 -1
- package/ui/notice/Notices.js +6 -1
- package/ui/notice/Notices.tsx +11 -1
- package/ui/notice/NoticesStore.d.ts +23 -3
- package/ui/notice/NoticesStore.js +23 -3
- package/ui/notice/NoticesStore.ts +23 -3
- package/ui/page/HTML.d.ts +13 -2
- package/ui/page/HTML.js +8 -2
- package/ui/page/HTML.tsx +13 -2
- package/ui/page/Head.d.ts +5 -1
- package/ui/page/Head.js +5 -1
- package/ui/page/Head.tsx +5 -1
- package/ui/page/Page.d.ts +12 -1
- package/ui/page/Page.js +7 -1
- package/ui/page/Page.tsx +12 -1
- package/ui/router/Navigation.d.ts +11 -0
- package/ui/router/Navigation.js +6 -0
- package/ui/router/Navigation.tsx +11 -0
- package/ui/router/NavigationContext.d.ts +14 -2
- package/ui/router/NavigationContext.js +14 -2
- package/ui/router/NavigationContext.tsx +14 -2
- package/ui/router/NavigationStore.d.ts +29 -1
- package/ui/router/NavigationStore.js +29 -1
- package/ui/router/NavigationStore.tsx +29 -1
- package/ui/router/Router.d.ts +12 -1
- package/ui/router/Router.js +7 -1
- package/ui/router/Router.tsx +12 -1
- package/ui/router/Routes.d.ts +14 -4
- package/ui/router/Routes.tsx +14 -4
- package/ui/style/Color.d.ts +15 -2
- package/ui/style/Color.js +5 -0
- package/ui/style/Color.tsx +15 -2
- package/ui/style/Flex.d.ts +41 -4
- package/ui/style/Flex.js +26 -3
- package/ui/style/Flex.tsx +41 -4
- package/ui/style/Gap.d.ts +18 -3
- package/ui/style/Gap.js +8 -1
- package/ui/style/Gap.tsx +18 -3
- package/ui/style/Padding.d.ts +18 -3
- package/ui/style/Padding.js +8 -1
- package/ui/style/Padding.tsx +18 -3
- package/ui/style/Scroll.d.ts +36 -1
- package/ui/style/Scroll.js +26 -1
- package/ui/style/Scroll.tsx +37 -1
- package/ui/style/Space.d.ts +18 -3
- package/ui/style/Space.js +8 -1
- package/ui/style/Space.tsx +18 -3
- package/ui/style/Status.d.ts +23 -7
- package/ui/style/Status.js +13 -5
- package/ui/style/Status.tsx +23 -7
- package/ui/style/Tint.d.ts +7 -1
- package/ui/style/Tint.js +7 -1
- package/ui/style/Tint.tsx +7 -1
- package/ui/style/Typography.d.ts +38 -6
- package/ui/style/Typography.js +8 -0
- package/ui/style/Typography.tsx +38 -6
- package/ui/style/Width.d.ts +18 -1
- package/ui/style/Width.js +8 -0
- package/ui/style/Width.tsx +18 -1
- package/ui/transition/CollapseTransition.d.ts +13 -0
- package/ui/transition/CollapseTransition.js +8 -0
- package/ui/transition/CollapseTransition.tsx +13 -0
- package/ui/transition/FadeTransition.d.ts +13 -0
- package/ui/transition/FadeTransition.js +8 -0
- package/ui/transition/FadeTransition.tsx +13 -0
- package/ui/transition/HorizontalTransition.d.ts +13 -0
- package/ui/transition/HorizontalTransition.js +8 -0
- package/ui/transition/HorizontalTransition.tsx +13 -0
- package/ui/transition/Transition.d.ts +12 -4
- package/ui/transition/Transition.js +7 -3
- package/ui/transition/Transition.tsx +12 -4
- package/ui/transition/VerticalTransition.d.ts +13 -0
- package/ui/transition/VerticalTransition.js +8 -0
- package/ui/transition/VerticalTransition.tsx +13 -0
- package/ui/transition/util.d.ts +16 -6
- package/ui/transition/util.js +7 -1
- package/ui/transition/util.tsx +16 -6
- package/ui/tree/TreeApp.d.ts +11 -0
- package/ui/tree/TreeApp.js +6 -0
- package/ui/tree/TreeApp.tsx +11 -0
- package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
- package/ui/tree/TreeBreadcrumbs.js +6 -0
- package/ui/tree/TreeBreadcrumbs.tsx +11 -0
- package/ui/tree/TreeButton.d.ts +9 -1
- package/ui/tree/TreeButton.js +4 -0
- package/ui/tree/TreeButton.tsx +9 -1
- package/ui/tree/TreeCard.d.ts +8 -1
- package/ui/tree/TreeCard.js +8 -1
- package/ui/tree/TreeCard.tsx +8 -1
- package/ui/tree/TreeCards.d.ts +16 -1
- package/ui/tree/TreeCards.js +11 -1
- package/ui/tree/TreeCards.tsx +16 -1
- package/ui/tree/TreeContext.d.ts +18 -1
- package/ui/tree/TreeContext.js +18 -1
- package/ui/tree/TreeContext.tsx +18 -1
- package/ui/tree/TreeMenu.d.ts +28 -1
- package/ui/tree/TreeMenu.js +23 -1
- package/ui/tree/TreeMenu.tsx +28 -1
- package/ui/tree/TreePage.d.ts +6 -0
- package/ui/tree/TreePage.js +6 -0
- package/ui/tree/TreePage.tsx +6 -0
- package/ui/tree/TreeRouter.d.ts +17 -2
- package/ui/tree/TreeRouter.js +12 -2
- package/ui/tree/TreeRouter.tsx +17 -2
- package/ui/tree/TreeSidebar.d.ts +11 -0
- package/ui/tree/TreeSidebar.js +6 -0
- package/ui/tree/TreeSidebar.tsx +11 -0
- package/ui/util/context.d.ts +13 -1
- package/ui/util/context.ts +13 -1
- package/ui/util/css.d.ts +17 -4
- package/ui/util/css.js +5 -1
- package/ui/util/css.ts +17 -4
- package/ui/util/event.d.ts +9 -1
- package/ui/util/event.js +9 -1
- package/ui/util/event.ts +9 -1
- package/ui/util/focus.d.ts +24 -5
- package/ui/util/focus.js +24 -5
- package/ui/util/focus.ts +24 -5
- package/ui/util/meta.d.ts +113 -21
- package/ui/util/meta.js +73 -13
- package/ui/util/meta.ts +113 -21
- package/ui/util/notice.d.ts +98 -10
- package/ui/util/notice.js +93 -9
- package/ui/util/notice.ts +98 -10
- package/ui/util/props.d.ts +10 -2
- package/ui/util/props.ts +10 -2
- package/ui/util/refresh.d.ts +10 -1
- package/ui/util/refresh.js +10 -1
- package/ui/util/refresh.ts +10 -1
- package/ui/util/scroll.d.ts +20 -4
- package/ui/util/scroll.js +20 -4
- package/ui/util/scroll.ts +20 -4
- package/ui/util/state.d.ts +19 -5
- package/ui/util/state.js +19 -5
- package/ui/util/state.ts +19 -5
- package/util/ansi.d.ts +118 -0
- package/util/ansi.js +116 -0
- package/util/array.d.ts +349 -33
- package/util/array.js +284 -27
- package/util/async.d.ts +87 -9
- package/util/async.js +80 -8
- package/util/base64.d.ts +56 -6
- package/util/base64.js +56 -6
- package/util/boolean.d.ts +75 -10
- package/util/boolean.js +75 -10
- package/util/buffer.d.ts +26 -3
- package/util/buffer.js +21 -3
- package/util/bytes.d.ts +42 -4
- package/util/bytes.js +32 -2
- package/util/class.d.ts +59 -8
- package/util/class.js +44 -5
- package/util/color.d.ts +131 -13
- package/util/color.js +126 -12
- package/util/constants.d.ts +132 -19
- package/util/constants.js +132 -19
- package/util/crypto.d.ts +17 -1
- package/util/crypto.js +17 -1
- package/util/currency.d.ts +38 -4
- package/util/currency.js +33 -3
- package/util/data.d.ts +139 -24
- package/util/data.js +39 -5
- package/util/date.d.ts +152 -18
- package/util/date.js +147 -17
- package/util/debug.d.ts +112 -11
- package/util/debug.js +114 -11
- package/util/dictionary.d.ts +205 -24
- package/util/dictionary.js +162 -17
- package/util/diff.d.ts +22 -3
- package/util/diff.js +11 -1
- package/util/dispose.d.ts +74 -2
- package/util/dispose.js +74 -2
- package/util/duration.d.ts +278 -16
- package/util/duration.js +267 -15
- package/util/element.d.ts +59 -6
- package/util/element.js +32 -3
- package/util/entity.d.ts +39 -6
- package/util/entity.js +5 -1
- package/util/entry.d.ts +56 -9
- package/util/entry.js +32 -4
- package/util/env.d.ts +26 -4
- package/util/env.js +26 -4
- package/util/equal.d.ts +181 -17
- package/util/equal.js +181 -17
- package/util/error.d.ts +57 -5
- package/util/error.js +52 -4
- package/util/file.d.ts +30 -7
- package/util/file.js +25 -6
- package/util/filter.d.ts +36 -4
- package/util/filter.js +31 -3
- package/util/focus.d.ts +9 -1
- package/util/focus.js +9 -1
- package/util/format.d.ts +186 -22
- package/util/format.js +135 -14
- package/util/function.d.ts +66 -11
- package/util/function.js +31 -4
- package/util/geo.d.ts +60 -8
- package/util/geo.js +45 -5
- package/util/hash.d.ts +21 -2
- package/util/hash.js +21 -2
- package/util/http.d.ts +134 -19
- package/util/http.js +94 -11
- package/util/hydrate.d.ts +19 -2
- package/util/hydrate.js +12 -1
- package/util/item.d.ts +70 -11
- package/util/item.js +35 -4
- package/util/iterate.d.ts +109 -13
- package/util/iterate.js +86 -10
- package/util/jwt.d.ts +47 -13
- package/util/jwt.js +36 -12
- package/util/lazy.d.ts +9 -6
- package/util/link.d.ts +10 -3
- package/util/link.js +5 -2
- package/util/log.d.ts +26 -3
- package/util/log.js +26 -3
- package/util/map.d.ts +144 -19
- package/util/map.js +101 -11
- package/util/merge.d.ts +23 -1
- package/util/merge.js +6 -0
- package/util/null.d.ts +102 -13
- package/util/null.js +92 -11
- package/util/number.d.ts +125 -8
- package/util/number.js +120 -7
- package/util/object.d.ts +263 -31
- package/util/object.js +154 -17
- package/util/path.d.ts +91 -15
- package/util/path.js +60 -9
- package/util/query.d.ts +78 -9
- package/util/query.js +58 -6
- package/util/random.d.ts +67 -4
- package/util/random.js +67 -4
- package/util/regexp.d.ts +201 -24
- package/util/regexp.js +106 -11
- package/util/sequence.d.ts +66 -8
- package/util/sequence.js +52 -7
- package/util/serialise.d.ts +7 -1
- package/util/serialise.js +7 -1
- package/util/set.d.ts +103 -13
- package/util/set.js +83 -9
- package/util/sort.d.ts +32 -7
- package/util/sort.js +26 -6
- package/util/source.d.ts +28 -3
- package/util/source.js +22 -2
- package/util/start.d.ts +62 -5
- package/util/start.js +47 -2
- package/util/string.d.ts +209 -25
- package/util/string.js +188 -21
- package/util/template.d.ts +58 -9
- package/util/template.js +45 -6
- package/util/timeout.d.ts +35 -11
- package/util/timeout.js +35 -11
- package/util/transform.d.ts +87 -8
- package/util/transform.js +75 -7
- package/util/tree.d.ts +39 -6
- package/util/tree.js +3 -0
- package/util/types.d.ts +8 -2
- package/util/undefined.d.ts +47 -6
- package/util/undefined.js +47 -6
- package/util/units.d.ts +107 -12
- package/util/units.js +97 -12
- package/util/update.d.ts +36 -4
- package/util/update.js +24 -2
- package/util/uri.d.ts +138 -6
- package/util/uri.js +44 -3
- package/util/url.d.ts +152 -7
- package/util/url.js +136 -5
- package/util/uuid.d.ts +28 -3
- package/util/uuid.js +28 -3
- package/util/validate.d.ts +85 -20
- package/util/validate.js +61 -12
- package/util/xml.d.ts +9 -10
- package/util/xml.js +9 -10
package/ui/transition/util.tsx
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
import { addTransitionType } from "react";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Map of view-transition types to their CSS class names in `{ type: className }` format.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* - Each key is a "transition type" set with the React `addTransitionType()` API inside a `startTransition()` callback, e.g. `"forward"`.
|
|
8
|
+
* - Each value is a "transition class" that React sets on the element as its `view-transition-class: forward;` CSS property — should correspond to a `::view-transition-old(.slideForward)` rule.
|
|
8
9
|
*
|
|
9
|
-
* @
|
|
10
|
-
* - Should correspond to a `::view-transition-old(.slideForward)`
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/ui/transition/util/TransitionClasses
|
|
11
11
|
*/
|
|
12
12
|
export type TransitionClasses = {
|
|
13
13
|
default: string;
|
|
@@ -15,10 +15,20 @@ export type TransitionClasses = {
|
|
|
15
15
|
back?: string;
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Known view-transition type names that all transitions support — the keys of `TransitionClasses`.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/ui/transition/util/TransitionType
|
|
22
|
+
*/
|
|
19
23
|
export type TransitionType = keyof TransitionClasses;
|
|
20
24
|
|
|
21
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Type-safe passthrough for React's `addTransitionType()` that checks `type` is one of our known view-transition types.
|
|
27
|
+
*
|
|
28
|
+
* @param type The transition type to activate, constrained to a known `TransitionType`.
|
|
29
|
+
* @example setTransitionType("forward")
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/ui/transition/util/setTransitionType
|
|
31
|
+
*/
|
|
22
32
|
export function setTransitionType(type: TransitionType): void {
|
|
23
33
|
addTransitionType(type);
|
|
24
34
|
}
|
package/ui/tree/TreeApp.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ import type { ReactElement } from "react";
|
|
|
2
2
|
import type { TreeElement } from "../../util/index.js";
|
|
3
3
|
import type { Routes } from "../router/Routes.js";
|
|
4
4
|
import type { PossibleMeta } from "../util/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Props for the `TreeApp` component — the tree to render plus optional extra routes and app meta.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeApp/TreeAppProps
|
|
9
|
+
*/
|
|
5
10
|
export interface TreeAppProps extends PossibleMeta {
|
|
6
11
|
/** The tree elements to display. */
|
|
7
12
|
tree: TreeElement;
|
|
@@ -12,10 +17,16 @@ export interface TreeAppProps extends PossibleMeta {
|
|
|
12
17
|
}
|
|
13
18
|
/**
|
|
14
19
|
* Top-level app component for a tree-based documentation site.
|
|
20
|
+
*
|
|
15
21
|
* - Wraps `<App>` with error catching and a sidebar layout.
|
|
16
22
|
* - The sidebar shows a `<TreeSidebar>` (root as a home link + a menu of its children).
|
|
17
23
|
* - `/` renders the root via `<TreePage>`; `/**` catches every deeper path and feeds the full sub-path into `<TreePage>`.
|
|
18
24
|
* - Element rendering uses the default mappings on `<TreePage>`, `<TreeMenu>`, `<TreeCards>`.
|
|
19
25
|
* Override by wrapping with `<TreePageMapping>`, `<TreeMenuMapping>`, or `<TreeCardMapping>`.
|
|
26
|
+
*
|
|
27
|
+
* @param props The `tree` to render, optional extra `routes`, and app meta.
|
|
28
|
+
* @returns The configured `<App>` element with sidebar layout and tree routing.
|
|
29
|
+
* @example <TreeApp tree={tree} title="Docs" />
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeApp/TreeApp
|
|
20
31
|
*/
|
|
21
32
|
export declare function TreeApp({ tree, routes: extraRoutes, ...meta }: TreeAppProps): ReactElement;
|
package/ui/tree/TreeApp.js
CHANGED
|
@@ -6,11 +6,17 @@ import { TreeRouter } from "./TreeRouter.js";
|
|
|
6
6
|
import { TreeSidebar } from "./TreeSidebar.js";
|
|
7
7
|
/**
|
|
8
8
|
* Top-level app component for a tree-based documentation site.
|
|
9
|
+
*
|
|
9
10
|
* - Wraps `<App>` with error catching and a sidebar layout.
|
|
10
11
|
* - The sidebar shows a `<TreeSidebar>` (root as a home link + a menu of its children).
|
|
11
12
|
* - `/` renders the root via `<TreePage>`; `/**` catches every deeper path and feeds the full sub-path into `<TreePage>`.
|
|
12
13
|
* - Element rendering uses the default mappings on `<TreePage>`, `<TreeMenu>`, `<TreeCards>`.
|
|
13
14
|
* Override by wrapping with `<TreePageMapping>`, `<TreeMenuMapping>`, or `<TreeCardMapping>`.
|
|
15
|
+
*
|
|
16
|
+
* @param props The `tree` to render, optional extra `routes`, and app meta.
|
|
17
|
+
* @returns The configured `<App>` element with sidebar layout and tree routing.
|
|
18
|
+
* @example <TreeApp tree={tree} title="Docs" />
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeApp/TreeApp
|
|
14
20
|
*/
|
|
15
21
|
export function TreeApp({ tree, routes: extraRoutes, ...meta }) {
|
|
16
22
|
return (_jsx(App, { ...meta, children: _jsx(PageCatcher, { children: _jsx(SidebarLayout, { sidebar: _jsx(TreeSidebar, { tree: tree }), children: _jsx(TreeRouter, { tree: tree }) }) }) }));
|
package/ui/tree/TreeApp.tsx
CHANGED
|
@@ -8,6 +8,11 @@ import type { PossibleMeta } from "../util/index.js";
|
|
|
8
8
|
import { TreeRouter } from "./TreeRouter.js";
|
|
9
9
|
import { TreeSidebar } from "./TreeSidebar.js";
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Props for the `TreeApp` component — the tree to render plus optional extra routes and app meta.
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeApp/TreeAppProps
|
|
15
|
+
*/
|
|
11
16
|
export interface TreeAppProps extends PossibleMeta {
|
|
12
17
|
/** The tree elements to display. */
|
|
13
18
|
tree: TreeElement;
|
|
@@ -19,11 +24,17 @@ export interface TreeAppProps extends PossibleMeta {
|
|
|
19
24
|
|
|
20
25
|
/**
|
|
21
26
|
* Top-level app component for a tree-based documentation site.
|
|
27
|
+
*
|
|
22
28
|
* - Wraps `<App>` with error catching and a sidebar layout.
|
|
23
29
|
* - The sidebar shows a `<TreeSidebar>` (root as a home link + a menu of its children).
|
|
24
30
|
* - `/` renders the root via `<TreePage>`; `/**` catches every deeper path and feeds the full sub-path into `<TreePage>`.
|
|
25
31
|
* - Element rendering uses the default mappings on `<TreePage>`, `<TreeMenu>`, `<TreeCards>`.
|
|
26
32
|
* Override by wrapping with `<TreePageMapping>`, `<TreeMenuMapping>`, or `<TreeCardMapping>`.
|
|
33
|
+
*
|
|
34
|
+
* @param props The `tree` to render, optional extra `routes`, and app meta.
|
|
35
|
+
* @returns The configured `<App>` element with sidebar layout and tree routing.
|
|
36
|
+
* @example <TreeApp tree={tree} title="Docs" />
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeApp/TreeApp
|
|
27
38
|
*/
|
|
28
39
|
export function TreeApp({ tree, routes: extraRoutes, ...meta }: TreeAppProps): ReactElement {
|
|
29
40
|
return (
|
|
@@ -2,14 +2,25 @@ import { type ReactElement } from "react";
|
|
|
2
2
|
import { type FlexVariants } from "../style/Flex.js";
|
|
3
3
|
import { type SpaceVariants } from "../style/Space.js";
|
|
4
4
|
import { type TypographyVariants } from "../style/Typography.js";
|
|
5
|
+
/**
|
|
6
|
+
* Props for the `TreeBreadcrumbs` component — typography, space, and flex variant props.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeBreadcrumbs/TreeBreadcrumbsProps
|
|
9
|
+
*/
|
|
5
10
|
export interface TreeBreadcrumbsProps extends TypographyVariants, SpaceVariants, FlexVariants {
|
|
6
11
|
}
|
|
7
12
|
/**
|
|
8
13
|
* Breadcrumb trail of links to a tree page's ancestors, separated by `›` arrow icons.
|
|
14
|
+
*
|
|
9
15
|
* - Built from the page's own `path`: each ancestor prefix is looked up in the tree map for its title, and links to its cumulative path.
|
|
10
16
|
* - Prefixes with no entry (e.g. the partial half of a `"util/string"` module name) are skipped, so composite names collapse to a single crumb.
|
|
11
17
|
* - The current item is deliberately omitted — the page `<Title>` already names it.
|
|
12
18
|
* - Block spacing defaults to section spacing (via `BLOCK_CLASS`); pass `space` to override.
|
|
13
19
|
* - Renders nothing at the tree root (no ancestors) or when there's no `<TreeProvider>` to resolve labels from.
|
|
20
|
+
*
|
|
21
|
+
* @param props Typography, space, and flex variant props.
|
|
22
|
+
* @returns A `<nav>` of breadcrumb links, or `null` at the tree root.
|
|
23
|
+
* @example <TreeBreadcrumbs />
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeBreadcrumbs/TreeBreadcrumbs
|
|
14
25
|
*/
|
|
15
26
|
export declare function TreeBreadcrumbs({ tint, left, wrap, ...variants }: TreeBreadcrumbsProps): ReactElement | null;
|
|
@@ -12,11 +12,17 @@ import { TreeButton } from "./TreeButton.js";
|
|
|
12
12
|
import { useTreeMap } from "./TreeContext.js";
|
|
13
13
|
/**
|
|
14
14
|
* Breadcrumb trail of links to a tree page's ancestors, separated by `›` arrow icons.
|
|
15
|
+
*
|
|
15
16
|
* - Built from the page's own `path`: each ancestor prefix is looked up in the tree map for its title, and links to its cumulative path.
|
|
16
17
|
* - Prefixes with no entry (e.g. the partial half of a `"util/string"` module name) are skipped, so composite names collapse to a single crumb.
|
|
17
18
|
* - The current item is deliberately omitted — the page `<Title>` already names it.
|
|
18
19
|
* - Block spacing defaults to section spacing (via `BLOCK_CLASS`); pass `space` to override.
|
|
19
20
|
* - Renders nothing at the tree root (no ancestors) or when there's no `<TreeProvider>` to resolve labels from.
|
|
21
|
+
*
|
|
22
|
+
* @param props Typography, space, and flex variant props.
|
|
23
|
+
* @returns A `<nav>` of breadcrumb links, or `null` at the tree root.
|
|
24
|
+
* @example <TreeBreadcrumbs />
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeBreadcrumbs/TreeBreadcrumbs
|
|
20
26
|
*/
|
|
21
27
|
export function TreeBreadcrumbs({ tint = "70", left = true, wrap = true, ...variants }) {
|
|
22
28
|
const map = useTreeMap();
|
|
@@ -10,15 +10,26 @@ import { getClass } from "../util/css.js";
|
|
|
10
10
|
import { TreeButton } from "./TreeButton.js";
|
|
11
11
|
import { useTreeMap } from "./TreeContext.js";
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Props for the `TreeBreadcrumbs` component — typography, space, and flex variant props.
|
|
15
|
+
*
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeBreadcrumbs/TreeBreadcrumbsProps
|
|
17
|
+
*/
|
|
13
18
|
export interface TreeBreadcrumbsProps extends TypographyVariants, SpaceVariants, FlexVariants {}
|
|
14
19
|
|
|
15
20
|
/**
|
|
16
21
|
* Breadcrumb trail of links to a tree page's ancestors, separated by `›` arrow icons.
|
|
22
|
+
*
|
|
17
23
|
* - Built from the page's own `path`: each ancestor prefix is looked up in the tree map for its title, and links to its cumulative path.
|
|
18
24
|
* - Prefixes with no entry (e.g. the partial half of a `"util/string"` module name) are skipped, so composite names collapse to a single crumb.
|
|
19
25
|
* - The current item is deliberately omitted — the page `<Title>` already names it.
|
|
20
26
|
* - Block spacing defaults to section spacing (via `BLOCK_CLASS`); pass `space` to override.
|
|
21
27
|
* - Renders nothing at the tree root (no ancestors) or when there's no `<TreeProvider>` to resolve labels from.
|
|
28
|
+
*
|
|
29
|
+
* @param props Typography, space, and flex variant props.
|
|
30
|
+
* @returns A `<nav>` of breadcrumb links, or `null` at the tree root.
|
|
31
|
+
* @example <TreeBreadcrumbs />
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeBreadcrumbs/TreeBreadcrumbs
|
|
22
33
|
*/
|
|
23
34
|
export function TreeBreadcrumbs({ tint = "70", left = true, wrap = true, ...variants }: TreeBreadcrumbsProps): ReactElement | null {
|
|
24
35
|
const map = useTreeMap();
|
package/ui/tree/TreeButton.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { ReactElement, ReactNode } from "react";
|
|
2
2
|
import { type ButtonVariants } from "../form/Button.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Props for the `TreeButton` component — the element reference plus button variants.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeButton/TreeButtonProps
|
|
7
|
+
*/
|
|
4
8
|
export interface TreeButtonProps extends ButtonVariants {
|
|
5
9
|
/** Reference to an element in the tree — a flat key (`"Store"`, `"Store.get"`) or a canonical path (`"/schema/BooleanSchema"`). */
|
|
6
10
|
readonly name: string;
|
|
@@ -9,10 +13,14 @@ export interface TreeButtonProps extends ButtonVariants {
|
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
15
|
* Small button linking to a specific tree element, resolved by reference string.
|
|
16
|
+
*
|
|
12
17
|
* - Looks `name` up in the flattened tree map (`useTreeMap()`) — by flat key (`"Store"`, `"Store.get"`) or canonical path (`"/schema/BooleanSchema"`) — and links to the element's canonical `path`.
|
|
13
18
|
* - A hit becomes an `<a>` link; a miss (e.g. a builtin like `Serializable`) stays a plain non-link label so it still reads as text.
|
|
14
19
|
* - Defaults to `small plain` styling; pass other `ButtonVariants` to override.
|
|
15
20
|
*
|
|
21
|
+
* @param props The element reference `name`, optional `children` label, and button variants.
|
|
22
|
+
* @returns A `<Button>` element linking to the resolved element, or a plain label on a miss.
|
|
16
23
|
* @example <TreeButton name="Store.get">Store.get()</TreeButton>
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeButton/TreeButton
|
|
17
25
|
*/
|
|
18
26
|
export declare function TreeButton({ name, children, small, plain, ...variants }: TreeButtonProps): ReactElement;
|
package/ui/tree/TreeButton.js
CHANGED
|
@@ -3,11 +3,15 @@ import { Button } from "../form/Button.js";
|
|
|
3
3
|
import { useTreeMap } from "./TreeContext.js";
|
|
4
4
|
/**
|
|
5
5
|
* Small button linking to a specific tree element, resolved by reference string.
|
|
6
|
+
*
|
|
6
7
|
* - Looks `name` up in the flattened tree map (`useTreeMap()`) — by flat key (`"Store"`, `"Store.get"`) or canonical path (`"/schema/BooleanSchema"`) — and links to the element's canonical `path`.
|
|
7
8
|
* - A hit becomes an `<a>` link; a miss (e.g. a builtin like `Serializable`) stays a plain non-link label so it still reads as text.
|
|
8
9
|
* - Defaults to `small plain` styling; pass other `ButtonVariants` to override.
|
|
9
10
|
*
|
|
11
|
+
* @param props The element reference `name`, optional `children` label, and button variants.
|
|
12
|
+
* @returns A `<Button>` element linking to the resolved element, or a plain label on a miss.
|
|
10
13
|
* @example <TreeButton name="Store.get">Store.get()</TreeButton>
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeButton/TreeButton
|
|
11
15
|
*/
|
|
12
16
|
export function TreeButton({ name, children, small = true, plain = true, ...variants }) {
|
|
13
17
|
const element = useTreeMap().get(name);
|
package/ui/tree/TreeButton.tsx
CHANGED
|
@@ -2,7 +2,11 @@ import type { ReactElement, ReactNode } from "react";
|
|
|
2
2
|
import { Button, type ButtonVariants } from "../form/Button.js";
|
|
3
3
|
import { useTreeMap } from "./TreeContext.js";
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Props for the `TreeButton` component — the element reference plus button variants.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeButton/TreeButtonProps
|
|
9
|
+
*/
|
|
6
10
|
export interface TreeButtonProps extends ButtonVariants {
|
|
7
11
|
/** Reference to an element in the tree — a flat key (`"Store"`, `"Store.get"`) or a canonical path (`"/schema/BooleanSchema"`). */
|
|
8
12
|
readonly name: string;
|
|
@@ -12,11 +16,15 @@ export interface TreeButtonProps extends ButtonVariants {
|
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* Small button linking to a specific tree element, resolved by reference string.
|
|
19
|
+
*
|
|
15
20
|
* - Looks `name` up in the flattened tree map (`useTreeMap()`) — by flat key (`"Store"`, `"Store.get"`) or canonical path (`"/schema/BooleanSchema"`) — and links to the element's canonical `path`.
|
|
16
21
|
* - A hit becomes an `<a>` link; a miss (e.g. a builtin like `Serializable`) stays a plain non-link label so it still reads as text.
|
|
17
22
|
* - Defaults to `small plain` styling; pass other `ButtonVariants` to override.
|
|
18
23
|
*
|
|
24
|
+
* @param props The element reference `name`, optional `children` label, and button variants.
|
|
25
|
+
* @returns A `<Button>` element linking to the resolved element, or a plain label on a miss.
|
|
19
26
|
* @example <TreeButton name="Store.get">Store.get()</TreeButton>
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeButton/TreeButton
|
|
20
28
|
*/
|
|
21
29
|
export function TreeButton({ name, children, small = true, plain = true, ...variants }: TreeButtonProps): ReactElement {
|
|
22
30
|
const element = useTreeMap().get(name);
|
package/ui/tree/TreeCard.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import type { TreeElementProps } from "../../util/tree.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Card renderer for a generic `tree-element` (a directory or file) — a summary card showing the heading and description.
|
|
5
|
+
*
|
|
6
|
+
* @param props The tree element props (`path`, `name`, `title`, `description`).
|
|
7
|
+
* @returns A `<Card>` linking to the element's canonical `path`.
|
|
8
|
+
* @example <TreeCard {...element.props} />
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCard/TreeCard
|
|
10
|
+
*/
|
|
4
11
|
export declare function TreeCard({ path, name, title, description }: TreeElementProps): ReactNode;
|
package/ui/tree/TreeCard.js
CHANGED
|
@@ -2,7 +2,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Card } from "../block/Card.js";
|
|
3
3
|
import { Paragraph } from "../block/Paragraph.js";
|
|
4
4
|
import { Subheading } from "../block/Subheading.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Card renderer for a generic `tree-element` (a directory or file) — a summary card showing the heading and description.
|
|
7
|
+
*
|
|
8
|
+
* @param props The tree element props (`path`, `name`, `title`, `description`).
|
|
9
|
+
* @returns A `<Card>` linking to the element's canonical `path`.
|
|
10
|
+
* @example <TreeCard {...element.props} />
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCard/TreeCard
|
|
12
|
+
*/
|
|
6
13
|
export function TreeCard({ path, name, title, description }) {
|
|
7
14
|
// `path` is the element's own canonical URL, stamped by `flattenTree()` — link straight to it.
|
|
8
15
|
return (_jsxs(Card, { href: path, children: [_jsx(Subheading, { children: title ?? name }), description && _jsx(Paragraph, { children: description })] }));
|
package/ui/tree/TreeCard.tsx
CHANGED
|
@@ -4,7 +4,14 @@ import { Card } from "../block/Card.js";
|
|
|
4
4
|
import { Paragraph } from "../block/Paragraph.js";
|
|
5
5
|
import { Subheading } from "../block/Subheading.js";
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Card renderer for a generic `tree-element` (a directory or file) — a summary card showing the heading and description.
|
|
9
|
+
*
|
|
10
|
+
* @param props The tree element props (`path`, `name`, `title`, `description`).
|
|
11
|
+
* @returns A `<Card>` linking to the element's canonical `path`.
|
|
12
|
+
* @example <TreeCard {...element.props} />
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCard/TreeCard
|
|
14
|
+
*/
|
|
8
15
|
export function TreeCard({ path, name, title, description }: TreeElementProps): ReactNode {
|
|
9
16
|
// `path` is the element's own canonical URL, stamped by `flattenTree()` — link straight to it.
|
|
10
17
|
return (
|
package/ui/tree/TreeCards.d.ts
CHANGED
|
@@ -1,16 +1,31 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import type { TreeElements } from "../../util/tree.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Mapping + Mapper pair for tree cards — wrap children in `<TreeCardMapping>` to override the per-type card renderers.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCardMapping
|
|
7
|
+
*/
|
|
4
8
|
export declare const TreeCardMapping: import("react").FunctionComponent<import("../misc/Mapper.js").MappingProps<unknown>>, TreeCardMapper: import("react").FunctionComponent<{
|
|
5
9
|
readonly children?: import("../../util/element.js").Elements;
|
|
6
10
|
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Props for the `TreeCards` component — the tree elements to render as cards.
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCardsProps
|
|
15
|
+
*/
|
|
7
16
|
export interface TreeCardsProps {
|
|
8
17
|
/** The children to render as cards. */
|
|
9
18
|
readonly children?: TreeElements;
|
|
10
19
|
}
|
|
11
20
|
/**
|
|
12
21
|
* Render a list of tree elements as a stack of cards.
|
|
22
|
+
*
|
|
13
23
|
* - Each element is dispatched via `<TreeCardMapper>` to its registered renderer; each card links to its own stamped `path`.
|
|
14
24
|
* - To override the renderer for a specific element type, wrap in `<TreeCardMapping mapping={…}>`.
|
|
25
|
+
*
|
|
26
|
+
* @param props The tree elements to render as `children`.
|
|
27
|
+
* @returns A `<TreeCardMapper>` rendering each element as a card.
|
|
28
|
+
* @example <TreeCards>{element.props.children}</TreeCards>
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCards
|
|
15
30
|
*/
|
|
16
31
|
export declare function TreeCards({ children }: TreeCardsProps): ReactNode;
|
package/ui/tree/TreeCards.js
CHANGED
|
@@ -3,15 +3,25 @@ import { walkElements } from "../../util/element.js";
|
|
|
3
3
|
import { DocumentationCard } from "../docs/DocumentationCard.js";
|
|
4
4
|
import { createMapper } from "../misc/Mapper.js";
|
|
5
5
|
import { TreeCard } from "./TreeCard.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Mapping + Mapper pair for tree cards — wrap children in `<TreeCardMapping>` to override the per-type card renderers.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCardMapping
|
|
10
|
+
*/
|
|
7
11
|
export const [TreeCardMapping, TreeCardMapper] = createMapper({
|
|
8
12
|
"tree-element": TreeCard,
|
|
9
13
|
"tree-documentation": DocumentationCard,
|
|
10
14
|
});
|
|
11
15
|
/**
|
|
12
16
|
* Render a list of tree elements as a stack of cards.
|
|
17
|
+
*
|
|
13
18
|
* - Each element is dispatched via `<TreeCardMapper>` to its registered renderer; each card links to its own stamped `path`.
|
|
14
19
|
* - To override the renderer for a specific element type, wrap in `<TreeCardMapping mapping={…}>`.
|
|
20
|
+
*
|
|
21
|
+
* @param props The tree elements to render as `children`.
|
|
22
|
+
* @returns A `<TreeCardMapper>` rendering each element as a card.
|
|
23
|
+
* @example <TreeCards>{element.props.children}</TreeCards>
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCards
|
|
15
25
|
*/
|
|
16
26
|
export function TreeCards({ children }) {
|
|
17
27
|
return _jsx(TreeCardMapper, { children: walkElements(children) });
|
package/ui/tree/TreeCards.tsx
CHANGED
|
@@ -5,12 +5,21 @@ import { DocumentationCard } from "../docs/DocumentationCard.js";
|
|
|
5
5
|
import { createMapper } from "../misc/Mapper.js";
|
|
6
6
|
import { TreeCard } from "./TreeCard.js";
|
|
7
7
|
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Mapping + Mapper pair for tree cards — wrap children in `<TreeCardMapping>` to override the per-type card renderers.
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCardMapping
|
|
12
|
+
*/
|
|
9
13
|
export const [TreeCardMapping, TreeCardMapper] = createMapper({
|
|
10
14
|
"tree-element": TreeCard,
|
|
11
15
|
"tree-documentation": DocumentationCard,
|
|
12
16
|
});
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Props for the `TreeCards` component — the tree elements to render as cards.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCardsProps
|
|
22
|
+
*/
|
|
14
23
|
export interface TreeCardsProps {
|
|
15
24
|
/** The children to render as cards. */
|
|
16
25
|
readonly children?: TreeElements;
|
|
@@ -18,8 +27,14 @@ export interface TreeCardsProps {
|
|
|
18
27
|
|
|
19
28
|
/**
|
|
20
29
|
* Render a list of tree elements as a stack of cards.
|
|
30
|
+
*
|
|
21
31
|
* - Each element is dispatched via `<TreeCardMapper>` to its registered renderer; each card links to its own stamped `path`.
|
|
22
32
|
* - To override the renderer for a specific element type, wrap in `<TreeCardMapping mapping={…}>`.
|
|
33
|
+
*
|
|
34
|
+
* @param props The tree elements to render as `children`.
|
|
35
|
+
* @returns A `<TreeCardMapper>` rendering each element as a card.
|
|
36
|
+
* @example <TreeCards>{element.props.children}</TreeCards>
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeCards/TreeCards
|
|
23
38
|
*/
|
|
24
39
|
export function TreeCards({ children }: TreeCardsProps): ReactNode {
|
|
25
40
|
return <TreeCardMapper>{walkElements(children)}</TreeCardMapper>;
|
package/ui/tree/TreeContext.d.ts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { type TreeElement } from "../../util/tree.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* React context holding a flattened `key` → `element` map of the surrounding tree(s).
|
|
5
|
+
*
|
|
6
|
+
* - Keyed by flat name (`"BooleanSchema"`, `"Class.member"`) and canonical path (`"/schema/BooleanSchema"`) for fast cross-reference lookup.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/TreeContext
|
|
9
|
+
*/
|
|
4
10
|
export declare const TreeContext: import("react").Context<ReadonlyMap<string, TreeElement<import("../../util/tree.js").TreeElementProps>>>;
|
|
5
11
|
/**
|
|
6
12
|
* Provide a tree to descendants as a flattened lookup map (see `flattenTree()`).
|
|
13
|
+
*
|
|
7
14
|
* - Flattens `tree` **once** (memoised) when set — not on every lookup in every element.
|
|
8
15
|
* - Merges onto any parent `<TreeProvider>`'s map, so cross-references resolve across an entire nested set of trees; the outer (parent) tree wins on collision.
|
|
16
|
+
*
|
|
17
|
+
* @param props The `tree` to flatten and provide, plus `children`.
|
|
18
|
+
* @returns A `<TreeContext>` provider wrapping the children with the flattened map.
|
|
19
|
+
* @example <TreeProvider tree={tree}>{children}</TreeProvider>
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/TreeProvider
|
|
9
21
|
*/
|
|
10
22
|
export declare function TreeProvider({ tree, children }: {
|
|
11
23
|
readonly tree: TreeElement;
|
|
@@ -13,6 +25,11 @@ export declare function TreeProvider({ tree, children }: {
|
|
|
13
25
|
}): ReactNode;
|
|
14
26
|
/**
|
|
15
27
|
* Use the flattened tree lookup map from context.
|
|
28
|
+
*
|
|
16
29
|
* - Returns an empty map when there's no `<TreeProvider>` above (e.g. an isolated card rendered outside the tree shell), so callers can look up freely and fall back to plain text on a miss.
|
|
30
|
+
*
|
|
31
|
+
* @returns The flattened `key` → `element` map, or an empty map when no `<TreeProvider>` is present.
|
|
32
|
+
* @example const element = useTreeMap().get("Store.get");
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/useTreeMap
|
|
17
34
|
*/
|
|
18
35
|
export declare function useTreeMap(): ReadonlyMap<string, TreeElement>;
|
package/ui/tree/TreeContext.js
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, use, useMemo } from "react";
|
|
3
3
|
import { flattenTree } from "../../util/tree.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* React context holding a flattened `key` → `element` map of the surrounding tree(s).
|
|
6
|
+
*
|
|
7
|
+
* - Keyed by flat name (`"BooleanSchema"`, `"Class.member"`) and canonical path (`"/schema/BooleanSchema"`) for fast cross-reference lookup.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/TreeContext
|
|
10
|
+
*/
|
|
5
11
|
export const TreeContext = createContext(new Map());
|
|
6
12
|
TreeContext.displayName = "TreeContext";
|
|
7
13
|
/**
|
|
8
14
|
* Provide a tree to descendants as a flattened lookup map (see `flattenTree()`).
|
|
15
|
+
*
|
|
9
16
|
* - Flattens `tree` **once** (memoised) when set — not on every lookup in every element.
|
|
10
17
|
* - Merges onto any parent `<TreeProvider>`'s map, so cross-references resolve across an entire nested set of trees; the outer (parent) tree wins on collision.
|
|
18
|
+
*
|
|
19
|
+
* @param props The `tree` to flatten and provide, plus `children`.
|
|
20
|
+
* @returns A `<TreeContext>` provider wrapping the children with the flattened map.
|
|
21
|
+
* @example <TreeProvider tree={tree}>{children}</TreeProvider>
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/TreeProvider
|
|
11
23
|
*/
|
|
12
24
|
export function TreeProvider({ tree, children }) {
|
|
13
25
|
const parent = use(TreeContext);
|
|
@@ -16,7 +28,12 @@ export function TreeProvider({ tree, children }) {
|
|
|
16
28
|
}
|
|
17
29
|
/**
|
|
18
30
|
* Use the flattened tree lookup map from context.
|
|
31
|
+
*
|
|
19
32
|
* - Returns an empty map when there's no `<TreeProvider>` above (e.g. an isolated card rendered outside the tree shell), so callers can look up freely and fall back to plain text on a miss.
|
|
33
|
+
*
|
|
34
|
+
* @returns The flattened `key` → `element` map, or an empty map when no `<TreeProvider>` is present.
|
|
35
|
+
* @example const element = useTreeMap().get("Store.get");
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/useTreeMap
|
|
20
37
|
*/
|
|
21
38
|
export function useTreeMap() {
|
|
22
39
|
return use(TreeContext);
|
package/ui/tree/TreeContext.tsx
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
import { createContext, type ReactNode, use, useMemo } from "react";
|
|
2
2
|
import { flattenTree, type TreeElement } from "../../util/tree.js";
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* React context holding a flattened `key` → `element` map of the surrounding tree(s).
|
|
6
|
+
*
|
|
7
|
+
* - Keyed by flat name (`"BooleanSchema"`, `"Class.member"`) and canonical path (`"/schema/BooleanSchema"`) for fast cross-reference lookup.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/TreeContext
|
|
10
|
+
*/
|
|
5
11
|
export const TreeContext = createContext<ReadonlyMap<string, TreeElement>>(new Map());
|
|
6
12
|
TreeContext.displayName = "TreeContext";
|
|
7
13
|
|
|
8
14
|
/**
|
|
9
15
|
* Provide a tree to descendants as a flattened lookup map (see `flattenTree()`).
|
|
16
|
+
*
|
|
10
17
|
* - Flattens `tree` **once** (memoised) when set — not on every lookup in every element.
|
|
11
18
|
* - Merges onto any parent `<TreeProvider>`'s map, so cross-references resolve across an entire nested set of trees; the outer (parent) tree wins on collision.
|
|
19
|
+
*
|
|
20
|
+
* @param props The `tree` to flatten and provide, plus `children`.
|
|
21
|
+
* @returns A `<TreeContext>` provider wrapping the children with the flattened map.
|
|
22
|
+
* @example <TreeProvider tree={tree}>{children}</TreeProvider>
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/TreeProvider
|
|
12
24
|
*/
|
|
13
25
|
export function TreeProvider({ tree, children }: { readonly tree: TreeElement; readonly children: ReactNode }): ReactNode {
|
|
14
26
|
const parent = use(TreeContext);
|
|
@@ -18,7 +30,12 @@ export function TreeProvider({ tree, children }: { readonly tree: TreeElement; r
|
|
|
18
30
|
|
|
19
31
|
/**
|
|
20
32
|
* Use the flattened tree lookup map from context.
|
|
33
|
+
*
|
|
21
34
|
* - Returns an empty map when there's no `<TreeProvider>` above (e.g. an isolated card rendered outside the tree shell), so callers can look up freely and fall back to plain text on a miss.
|
|
35
|
+
*
|
|
36
|
+
* @returns The flattened `key` → `element` map, or an empty map when no `<TreeProvider>` is present.
|
|
37
|
+
* @example const element = useTreeMap().get("Store.get");
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeContext/useTreeMap
|
|
22
39
|
*/
|
|
23
40
|
export function useTreeMap(): ReadonlyMap<string, TreeElement> {
|
|
24
41
|
return use(TreeContext);
|
package/ui/tree/TreeMenu.d.ts
CHANGED
|
@@ -4,8 +4,14 @@ import { type AbsolutePath } from "../../util/path.js";
|
|
|
4
4
|
import type { TreeElement, TreeElementProps } from "../../util/tree.js";
|
|
5
5
|
/**
|
|
6
6
|
* Match an element that should appear in the sidebar menu.
|
|
7
|
+
*
|
|
7
8
|
* - Generic tree elements (directories and files) always qualify.
|
|
8
9
|
* - For documentation elements, only `kind: "module"` qualifies — functions, classes, methods, properties, etc. are kept off the navigation.
|
|
10
|
+
*
|
|
11
|
+
* @param element The element to test.
|
|
12
|
+
* @returns `true` when the element should appear in the menu, `false` otherwise.
|
|
13
|
+
* @example matchMenuElement(element) // true
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeMenu/matchMenuElement
|
|
9
15
|
*/
|
|
10
16
|
export declare function matchMenuElement(element: Element): boolean;
|
|
11
17
|
/** Extras threaded through `TreeMenuMapper` to every menu item — the parent's URL path. */
|
|
@@ -15,12 +21,27 @@ interface TreeMenuExtras {
|
|
|
15
21
|
}
|
|
16
22
|
/**
|
|
17
23
|
* Default menu item renderer for any `tree-*` element.
|
|
24
|
+
*
|
|
18
25
|
* - Computes its own URL path by appending its `name` to the parent's `path`.
|
|
19
26
|
* - Passes both the label and the nested `<TreeMenuMapper>` to `<MenuItem>`; `<MenuItem>` itself decides whether to reveal the nested submenu based on the current URL.
|
|
27
|
+
*
|
|
28
|
+
* @param props The tree element props plus the parent's `path`.
|
|
29
|
+
* @returns A `<MenuItem>` for the element, with a nested `<Menu>` when it has menu-eligible children.
|
|
30
|
+
* @example <TreeMenuItem {...element.props} path="/" />
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeMenu/TreeMenuItem
|
|
20
32
|
*/
|
|
21
33
|
export declare function TreeMenuItem({ path, name, title, children }: TreeElementProps & TreeMenuExtras): ReactNode;
|
|
22
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Mapping + Mapper pair for the menu — wrap children in `<TreeMenuMapping>` to override the per-type menu-item renderers.
|
|
36
|
+
*
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeMenu/TreeMenuMapping
|
|
38
|
+
*/
|
|
23
39
|
export declare const TreeMenuMapping: import("react").FunctionComponent<import("../misc/Mapper.js").MappingProps<TreeMenuExtras>>, TreeMenuMapper: import("react").FunctionComponent<import("../misc/Mapper.js").MapperProps<TreeMenuExtras>>;
|
|
40
|
+
/**
|
|
41
|
+
* Props for the `TreeMenu` component — the root tree element plus its URL path.
|
|
42
|
+
*
|
|
43
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeMenu/TreeMenuProps
|
|
44
|
+
*/
|
|
24
45
|
export interface TreeMenuProps {
|
|
25
46
|
/** Root element whose children become the navigation links. */
|
|
26
47
|
readonly tree: TreeElement;
|
|
@@ -29,9 +50,15 @@ export interface TreeMenuProps {
|
|
|
29
50
|
}
|
|
30
51
|
/**
|
|
31
52
|
* Sidebar navigation menu built from the children of a root tree element.
|
|
53
|
+
*
|
|
32
54
|
* - Renders each child via `<TreeMenuItem>` (the default mapping for `tree-element`).
|
|
33
55
|
* - To customise renderers for specific types, wrap in `<TreeMenuMapping mapping={…}>`.
|
|
34
56
|
* - Only directories and files appear — code symbols are kept off the navigation.
|
|
57
|
+
*
|
|
58
|
+
* @param props The root `tree` element and optional root `path`.
|
|
59
|
+
* @returns A `<Menu>` of navigation links to the root's children.
|
|
60
|
+
* @example <TreeMenu tree={tree} />
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/ui/tree/TreeMenu/TreeMenu
|
|
35
62
|
*/
|
|
36
63
|
export declare function TreeMenu({ path, tree }: TreeMenuProps): ReactNode;
|
|
37
64
|
export {};
|