@openreachtech/furo-vue 1.3.1
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/LICENSE +9 -0
- package/README.ja.md +334 -0
- package/README.md +333 -0
- package/index.js +11 -0
- package/lib/assets/css/furo/0010.variables-palette-color-scale.css +298 -0
- package/lib/assets/css/furo/0020.variables-z-index.css +10 -0
- package/lib/assets/css/furo/0030.variables-semantic-color.css +178 -0
- package/lib/assets/css/furo/0035.variables-semantic-dimension.css +104 -0
- package/lib/assets/css/furo/0040.variables-component-furo.css +28 -0
- package/lib/assets/css/furo/0050.furo-editor-content.css +22 -0
- package/lib/assets/css/furo.css +15 -0
- package/lib/components/atoms/FuroAvatar/FuroAvatar.vue +135 -0
- package/lib/components/atoms/FuroAvatar/FuroAvatarContext.js +147 -0
- package/lib/components/atoms/FuroBadge/FuroBadge.vue +240 -0
- package/lib/components/atoms/FuroBadge/FuroBadgeContext.js +298 -0
- package/lib/components/atoms/FuroButton/ButtonEmitPayload.js +44 -0
- package/lib/components/atoms/FuroButton/FuroButton.vue +301 -0
- package/lib/components/atoms/FuroButton/FuroButtonContext.js +328 -0
- package/lib/components/atoms/FuroCheckbox/CheckboxEmitPayload.js +106 -0
- package/lib/components/atoms/FuroCheckbox/FuroCheckbox.vue +173 -0
- package/lib/components/atoms/FuroCheckbox/FuroCheckboxContext.js +682 -0
- package/lib/components/atoms/FuroEmailField/EmailFieldEmitPayload.js +74 -0
- package/lib/components/atoms/FuroEmailField/FuroEmailField.vue +119 -0
- package/lib/components/atoms/FuroEmailField/FuroEmailFieldContext.js +311 -0
- package/lib/components/atoms/FuroFileField/FileFieldEmitPayload.js +80 -0
- package/lib/components/atoms/FuroFileField/FuroFileField.vue +128 -0
- package/lib/components/atoms/FuroFileField/FuroFileFieldContext.js +195 -0
- package/lib/components/atoms/FuroIcon/FuroIcon.vue +74 -0
- package/lib/components/atoms/FuroIcon/FuroIconContext.js +293 -0
- package/lib/components/atoms/FuroIcon/FuroIconRegistry.js +617 -0
- package/lib/components/atoms/FuroIcon/FuroIconifyRendererContext.js +101 -0
- package/lib/components/atoms/FuroIcon/furoIconData.js +164 -0
- package/lib/components/atoms/FuroIcon/iconRenderers.js +62 -0
- package/lib/components/atoms/FuroIcon/icons.js +7 -0
- package/lib/components/atoms/FuroNumberField/FuroNumberField.vue +213 -0
- package/lib/components/atoms/FuroNumberField/FuroNumberFieldContext.js +442 -0
- package/lib/components/atoms/FuroNumberField/NumberFieldEmitPayload.js +162 -0
- package/lib/components/atoms/FuroPasswordField/FuroPasswordField.vue +119 -0
- package/lib/components/atoms/FuroPasswordField/FuroPasswordFieldContext.js +311 -0
- package/lib/components/atoms/FuroPasswordField/PasswordFieldEmitPayload.js +74 -0
- package/lib/components/atoms/FuroRadio/FuroRadio.vue +193 -0
- package/lib/components/atoms/FuroRadio/FuroRadioContext.js +557 -0
- package/lib/components/atoms/FuroRadio/RadioEmitPayload.js +72 -0
- package/lib/components/atoms/FuroSwitch/FuroSwitch.vue +165 -0
- package/lib/components/atoms/FuroSwitch/FuroSwitchContext.js +440 -0
- package/lib/components/atoms/FuroSwitch/SwitchEmitPayload.js +86 -0
- package/lib/components/atoms/FuroTextField/FuroTextField.vue +119 -0
- package/lib/components/atoms/FuroTextField/FuroTextFieldContext.js +311 -0
- package/lib/components/atoms/FuroTextField/TextFieldEmitPayload.js +83 -0
- package/lib/components/atoms/FuroTextarea/FuroTextarea.vue +121 -0
- package/lib/components/atoms/FuroTextarea/FuroTextareaContext.js +322 -0
- package/lib/components/atoms/FuroTextarea/TextareaEmitPayload.js +83 -0
- package/lib/components/atoms/FuroToggle/FuroToggle.vue +172 -0
- package/lib/components/atoms/FuroToggle/FuroToggleContext.js +410 -0
- package/lib/components/atoms/FuroToggle/ToggleEmitPayload.js +86 -0
- package/lib/components/molecules/FuroAccordion/AccordionEmitPayload.js +80 -0
- package/lib/components/molecules/FuroAccordion/FuroAccordion.vue +219 -0
- package/lib/components/molecules/FuroAccordion/FuroAccordionContext.js +547 -0
- package/lib/components/molecules/FuroAttachment/FuroAttachment.vue +376 -0
- package/lib/components/molecules/FuroAttachment/FuroAttachmentContext.js +628 -0
- package/lib/components/molecules/FuroAutocompleteField/AutocompleteEmitPayload.js +225 -0
- package/lib/components/molecules/FuroAutocompleteField/FuroAutocompleteField.vue +669 -0
- package/lib/components/molecules/FuroAutocompleteField/FuroAutocompleteFieldContext.js +1525 -0
- package/lib/components/molecules/FuroAvatarGroup/FuroAvatarGroup.vue +126 -0
- package/lib/components/molecules/FuroAvatarGroup/FuroAvatarGroupContext.js +245 -0
- package/lib/components/molecules/FuroBreadcrumb/FuroBreadcrumb.vue +219 -0
- package/lib/components/molecules/FuroBreadcrumb/FuroBreadcrumbContext.js +257 -0
- package/lib/components/molecules/FuroCollapsible/CollapsibleEmitPayload.js +69 -0
- package/lib/components/molecules/FuroCollapsible/FuroCollapsible.vue +177 -0
- package/lib/components/molecules/FuroCollapsible/FuroCollapsibleContext.js +389 -0
- package/lib/components/molecules/FuroControlBlock/FuroControlBlock.vue +149 -0
- package/lib/components/molecules/FuroControlBlock/FuroControlBlockContext.js +81 -0
- package/lib/components/molecules/FuroDatePicker/DatePickerEmitPayload.js +74 -0
- package/lib/components/molecules/FuroDatePicker/FuroDatePicker.vue +661 -0
- package/lib/components/molecules/FuroDatePicker/FuroDatePickerContext.js +1038 -0
- package/lib/components/molecules/FuroDateTimePicker/DateTimePickerEmitPayload.js +96 -0
- package/lib/components/molecules/FuroDateTimePicker/FuroDateTimePicker.vue +153 -0
- package/lib/components/molecules/FuroDateTimePicker/FuroDateTimePickerContext.js +840 -0
- package/lib/components/molecules/FuroDropdownMenu/DropdownMenuOptionSelectEmitPayload.js +100 -0
- package/lib/components/molecules/FuroDropdownMenu/FuroDropdownMenu.vue +348 -0
- package/lib/components/molecules/FuroDropdownMenu/FuroDropdownMenuContext.js +714 -0
- package/lib/components/molecules/FuroDropdownMenu/FuroDropdownMenuOptionRows.vue +222 -0
- package/lib/components/molecules/FuroEditableField/EditableEmitPayload.js +89 -0
- package/lib/components/molecules/FuroEditableField/FuroEditableField.vue +314 -0
- package/lib/components/molecules/FuroEditableField/FuroEditableFieldContext.js +1018 -0
- package/lib/components/molecules/FuroEditableField/processors/EditorCollisionProcessor.js +236 -0
- package/lib/components/molecules/FuroEditableField/processors/ObjectProcessor.js +101 -0
- package/lib/components/molecules/FuroEmptyState/FuroEmptyState.vue +124 -0
- package/lib/components/molecules/FuroEmptyState/FuroEmptyStateContext.js +42 -0
- package/lib/components/molecules/FuroErrorState/FuroErrorState.vue +125 -0
- package/lib/components/molecules/FuroErrorState/FuroErrorStateContext.js +42 -0
- package/lib/components/molecules/FuroPagination/FuroPagination.vue +246 -0
- package/lib/components/molecules/FuroPagination/FuroPaginationContext.js +489 -0
- package/lib/components/molecules/FuroPopover/FuroPopover.vue +171 -0
- package/lib/components/molecules/FuroPopover/FuroPopoverContext.js +279 -0
- package/lib/components/molecules/FuroScrollArea/FuroScrollArea.vue +181 -0
- package/lib/components/molecules/FuroScrollArea/FuroScrollAreaContext.js +149 -0
- package/lib/components/molecules/FuroSearchField/FuroSearchField.vue +155 -0
- package/lib/components/molecules/FuroSearchField/FuroSearchFieldContext.js +231 -0
- package/lib/components/molecules/FuroSectionHeader/FuroSectionHeader.vue +140 -0
- package/lib/components/molecules/FuroSectionHeader/FuroSectionHeaderContext.js +204 -0
- package/lib/components/molecules/FuroSelect/FuroSelect.vue +474 -0
- package/lib/components/molecules/FuroSelect/FuroSelectContext.js +743 -0
- package/lib/components/molecules/FuroSelect/SelectEmitPayload.js +181 -0
- package/lib/components/molecules/FuroSeparator/FuroSeparator.vue +88 -0
- package/lib/components/molecules/FuroSeparator/FuroSeparatorContext.js +40 -0
- package/lib/components/molecules/FuroSkeleton/FuroSkeleton.vue +101 -0
- package/lib/components/molecules/FuroSkeleton/FuroSkeletonContext.js +82 -0
- package/lib/components/molecules/FuroSplitter/FuroSplitter.vue +237 -0
- package/lib/components/molecules/FuroSplitter/FuroSplitterContext.js +429 -0
- package/lib/components/molecules/FuroSplitter/SplitterEmitPayload.js +69 -0
- package/lib/components/molecules/FuroTimeField/FuroTimeField.vue +251 -0
- package/lib/components/molecules/FuroTimeField/FuroTimeFieldContext.js +1138 -0
- package/lib/components/molecules/FuroTimeField/TimeFieldEmitPayload.js +74 -0
- package/lib/components/molecules/FuroToggleGroup/FuroToggleGroup.vue +211 -0
- package/lib/components/molecules/FuroToggleGroup/FuroToggleGroupContext.js +551 -0
- package/lib/components/molecules/FuroToggleGroup/ToggleGroupEmitPayload.js +80 -0
- package/lib/components/molecules/FuroToolBar/FuroToolBar.vue +91 -0
- package/lib/components/molecules/FuroToolBar/FuroToolBarContext.js +75 -0
- package/lib/components/molecules/FuroTooltip/FuroTooltip.vue +183 -0
- package/lib/components/molecules/FuroTooltip/FuroTooltipContext.js +290 -0
- package/lib/components/organisms/FuroAlertDialog/FuroAlertDialog.vue +324 -0
- package/lib/components/organisms/FuroAlertDialog/FuroAlertDialogContext.js +608 -0
- package/lib/components/organisms/FuroDialog/FuroDialog.vue +362 -0
- package/lib/components/organisms/FuroDialog/FuroDialogContext.js +535 -0
- package/lib/components/organisms/FuroDrawer/FuroDrawer.vue +618 -0
- package/lib/components/organisms/FuroDrawer/FuroDrawerContext.js +676 -0
- package/lib/components/organisms/FuroEditor/FuroEditor.vue +613 -0
- package/lib/components/organisms/FuroEditor/FuroEditorCommandContext.js +420 -0
- package/lib/components/organisms/FuroEditor/FuroEditorContext.js +2048 -0
- package/lib/components/organisms/FuroEditor/FuroEditorMentionMenu.vue +120 -0
- package/lib/components/organisms/FuroEditor/FuroEditorMentionMenuContext.js +261 -0
- package/lib/components/organisms/FuroEditor/PreserveNewlinesPasteExtension.js +267 -0
- package/lib/components/organisms/FuroEditor/build-editor-extensions.js +97 -0
- package/lib/components/organisms/FuroEditor/mention-suggestion.js +320 -0
- package/lib/components/organisms/FuroEditor/paste-link-segments.js +124 -0
- package/lib/components/organisms/FuroSidebar/FuroSidebar.vue +473 -0
- package/lib/components/organisms/FuroSidebar/FuroSidebarContext.js +1014 -0
- package/lib/components/organisms/FuroStepper/FuroStepper.vue +345 -0
- package/lib/components/organisms/FuroStepper/FuroStepperContext.js +481 -0
- package/lib/components/organisms/FuroTable/FuroTable.vue +707 -0
- package/lib/components/organisms/FuroTable/FuroTableContext.js +1965 -0
- package/lib/components/organisms/FuroTable/FuroTableRowItemContext.js +111 -0
- package/lib/components/organisms/FuroTabs/FuroTabs.vue +403 -0
- package/lib/components/organisms/FuroTabs/FuroTabsContext.js +846 -0
- package/lib/components/organisms/FuroToast/FuroToast.vue +624 -0
- package/lib/components/organisms/FuroToast/FuroToastContext.js +1089 -0
- package/lib/components/organisms/FuroToast/FuroToaster.vue +44 -0
- package/lib/components/organisms/FuroToast/FuroToasterContext.js +113 -0
- package/lib/components/organisms/FuroToast/ToastQueue.js +325 -0
- package/lib/components/organisms/FuroToast/toast.js +64 -0
- package/lib/contexts/BaseFuroContext.js +318 -0
- package/lib/contexts/BaseFuroContextAccessor.js +47 -0
- package/lib/emit-payload/BaseEmitPayload.js +91 -0
- package/lib/index.components.js +61 -0
- package/lib/index.core.js +18 -0
- package/lib/tools/TimerClerk.js +75 -0
- package/nuxt/index.js +109 -0
- package/nuxt/runtime/furo-icon-renderer.js +24 -0
- package/package.json +137 -0
- package/public/furo-vue/components.json +4619 -0
- package/public/furo-vue/llms.txt +66 -0
- package/types/furo-nuxt.d.ts +48 -0
- package/types/generated/components/atoms/FuroAvatar/FuroAvatar.vue.d.ts +74 -0
- package/types/generated/components/atoms/FuroAvatar/FuroAvatarContext.d.ts +82 -0
- package/types/generated/components/atoms/FuroBadge/FuroBadge.vue.d.ts +12 -0
- package/types/generated/components/atoms/FuroBadge/FuroBadgeContext.d.ts +160 -0
- package/types/generated/components/atoms/FuroButton/ButtonEmitPayload.d.ts +19 -0
- package/types/generated/components/atoms/FuroButton/FuroButton.vue.d.ts +53 -0
- package/types/generated/components/atoms/FuroButton/FuroButtonContext.d.ts +156 -0
- package/types/generated/components/atoms/FuroCheckbox/CheckboxEmitPayload.d.ts +55 -0
- package/types/generated/components/atoms/FuroCheckbox/FuroCheckbox.vue.d.ts +87 -0
- package/types/generated/components/atoms/FuroCheckbox/FuroCheckboxContext.d.ts +342 -0
- package/types/generated/components/atoms/FuroEmailField/EmailFieldEmitPayload.d.ts +46 -0
- package/types/generated/components/atoms/FuroEmailField/FuroEmailField.vue.d.ts +458 -0
- package/types/generated/components/atoms/FuroEmailField/FuroEmailFieldContext.d.ts +161 -0
- package/types/generated/components/atoms/FuroFileField/FileFieldEmitPayload.d.ts +46 -0
- package/types/generated/components/atoms/FuroFileField/FuroFileField.vue.d.ts +454 -0
- package/types/generated/components/atoms/FuroFileField/FuroFileFieldContext.d.ts +109 -0
- package/types/generated/components/atoms/FuroIcon/FuroIcon.vue.d.ts +14 -0
- package/types/generated/components/atoms/FuroIcon/FuroIconContext.d.ts +152 -0
- package/types/generated/components/atoms/FuroIcon/FuroIconRegistry.d.ts +457 -0
- package/types/generated/components/atoms/FuroIcon/FuroIconifyRendererContext.d.ts +65 -0
- package/types/generated/components/atoms/FuroIcon/furoIconData.d.ts +154 -0
- package/types/generated/components/atoms/FuroIcon/iconRenderers.d.ts +6 -0
- package/types/generated/components/atoms/FuroIcon/icons.d.ts +6 -0
- package/types/generated/components/atoms/FuroNumberField/FuroNumberField.vue.d.ts +500 -0
- package/types/generated/components/atoms/FuroNumberField/FuroNumberFieldContext.d.ts +243 -0
- package/types/generated/components/atoms/FuroNumberField/NumberFieldEmitPayload.d.ts +74 -0
- package/types/generated/components/atoms/FuroPasswordField/FuroPasswordField.vue.d.ts +458 -0
- package/types/generated/components/atoms/FuroPasswordField/FuroPasswordFieldContext.d.ts +161 -0
- package/types/generated/components/atoms/FuroPasswordField/PasswordFieldEmitPayload.d.ts +46 -0
- package/types/generated/components/atoms/FuroRadio/FuroRadio.vue.d.ts +96 -0
- package/types/generated/components/atoms/FuroRadio/FuroRadioContext.d.ts +290 -0
- package/types/generated/components/atoms/FuroRadio/RadioEmitPayload.d.ts +39 -0
- package/types/generated/components/atoms/FuroSwitch/FuroSwitch.vue.d.ts +74 -0
- package/types/generated/components/atoms/FuroSwitch/FuroSwitchContext.d.ts +218 -0
- package/types/generated/components/atoms/FuroSwitch/SwitchEmitPayload.d.ts +42 -0
- package/types/generated/components/atoms/FuroTextField/FuroTextField.vue.d.ts +458 -0
- package/types/generated/components/atoms/FuroTextField/FuroTextFieldContext.d.ts +161 -0
- package/types/generated/components/atoms/FuroTextField/TextFieldEmitPayload.d.ts +52 -0
- package/types/generated/components/atoms/FuroTextarea/FuroTextarea.vue.d.ts +422 -0
- package/types/generated/components/atoms/FuroTextarea/FuroTextareaContext.d.ts +161 -0
- package/types/generated/components/atoms/FuroTextarea/TextareaEmitPayload.d.ts +52 -0
- package/types/generated/components/atoms/FuroToggle/FuroToggle.vue.d.ts +51 -0
- package/types/generated/components/atoms/FuroToggle/FuroToggleContext.d.ts +191 -0
- package/types/generated/components/atoms/FuroToggle/ToggleEmitPayload.d.ts +42 -0
- package/types/generated/components/molecules/FuroAccordion/AccordionEmitPayload.d.ts +41 -0
- package/types/generated/components/molecules/FuroAccordion/FuroAccordion.vue.d.ts +133 -0
- package/types/generated/components/molecules/FuroAccordion/FuroAccordionContext.d.ts +279 -0
- package/types/generated/components/molecules/FuroAttachment/FuroAttachment.vue.d.ts +79 -0
- package/types/generated/components/molecules/FuroAttachment/FuroAttachmentContext.d.ts +363 -0
- package/types/generated/components/molecules/FuroAutocompleteField/AutocompleteEmitPayload.d.ts +129 -0
- package/types/generated/components/molecules/FuroAutocompleteField/FuroAutocompleteField.vue.d.ts +751 -0
- package/types/generated/components/molecules/FuroAutocompleteField/FuroAutocompleteFieldContext.d.ts +722 -0
- package/types/generated/components/molecules/FuroAvatarGroup/FuroAvatarGroup.vue.d.ts +84 -0
- package/types/generated/components/molecules/FuroAvatarGroup/FuroAvatarGroupContext.d.ts +150 -0
- package/types/generated/components/molecules/FuroBreadcrumb/FuroBreadcrumb.vue.d.ts +24 -0
- package/types/generated/components/molecules/FuroBreadcrumb/FuroBreadcrumbContext.d.ts +152 -0
- package/types/generated/components/molecules/FuroCollapsible/CollapsibleEmitPayload.d.ts +36 -0
- package/types/generated/components/molecules/FuroCollapsible/FuroCollapsible.vue.d.ts +98 -0
- package/types/generated/components/molecules/FuroCollapsible/FuroCollapsibleContext.d.ts +191 -0
- package/types/generated/components/molecules/FuroControlBlock/FuroControlBlock.vue.d.ts +30 -0
- package/types/generated/components/molecules/FuroControlBlock/FuroControlBlockContext.d.ts +57 -0
- package/types/generated/components/molecules/FuroDatePicker/DatePickerEmitPayload.d.ts +41 -0
- package/types/generated/components/molecules/FuroDatePicker/FuroDatePicker.vue.d.ts +456 -0
- package/types/generated/components/molecules/FuroDatePicker/FuroDatePickerContext.d.ts +516 -0
- package/types/generated/components/molecules/FuroDateTimePicker/DateTimePickerEmitPayload.d.ts +55 -0
- package/types/generated/components/molecules/FuroDateTimePicker/FuroDateTimePicker.vue.d.ts +1365 -0
- package/types/generated/components/molecules/FuroDateTimePicker/FuroDateTimePickerContext.d.ts +435 -0
- package/types/generated/components/molecules/FuroDropdownMenu/DropdownMenuOptionSelectEmitPayload.d.ts +48 -0
- package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenu.vue.d.ts +773 -0
- package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenuContext.d.ts +380 -0
- package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenuOptionRows.vue.d.ts +261 -0
- package/types/generated/components/molecules/FuroEditableField/EditableEmitPayload.d.ts +39 -0
- package/types/generated/components/molecules/FuroEditableField/FuroEditableField.vue.d.ts +646 -0
- package/types/generated/components/molecules/FuroEditableField/FuroEditableFieldContext.d.ts +477 -0
- package/types/generated/components/molecules/FuroEditableField/processors/EditorCollisionProcessor.d.ts +121 -0
- package/types/generated/components/molecules/FuroEditableField/processors/ObjectProcessor.d.ts +45 -0
- package/types/generated/components/molecules/FuroEmptyState/FuroEmptyState.vue.d.ts +21 -0
- package/types/generated/components/molecules/FuroEmptyState/FuroEmptyStateContext.d.ts +32 -0
- package/types/generated/components/molecules/FuroErrorState/FuroErrorState.vue.d.ts +21 -0
- package/types/generated/components/molecules/FuroErrorState/FuroErrorStateContext.d.ts +32 -0
- package/types/generated/components/molecules/FuroPagination/FuroPagination.vue.d.ts +534 -0
- package/types/generated/components/molecules/FuroPagination/FuroPaginationContext.d.ts +271 -0
- package/types/generated/components/molecules/FuroPopover/FuroPopover.vue.d.ts +513 -0
- package/types/generated/components/molecules/FuroPopover/FuroPopoverContext.d.ts +160 -0
- package/types/generated/components/molecules/FuroScrollArea/FuroScrollArea.vue.d.ts +124 -0
- package/types/generated/components/molecules/FuroScrollArea/FuroScrollAreaContext.d.ts +86 -0
- package/types/generated/components/molecules/FuroSearchField/FuroSearchField.vue.d.ts +487 -0
- package/types/generated/components/molecules/FuroSearchField/FuroSearchFieldContext.d.ts +137 -0
- package/types/generated/components/molecules/FuroSectionHeader/FuroSectionHeader.vue.d.ts +49 -0
- package/types/generated/components/molecules/FuroSectionHeader/FuroSectionHeaderContext.d.ts +121 -0
- package/types/generated/components/molecules/FuroSelect/FuroSelect.vue.d.ts +719 -0
- package/types/generated/components/molecules/FuroSelect/FuroSelectContext.d.ts +402 -0
- package/types/generated/components/molecules/FuroSelect/SelectEmitPayload.d.ts +102 -0
- package/types/generated/components/molecules/FuroSeparator/FuroSeparator.vue.d.ts +39 -0
- package/types/generated/components/molecules/FuroSeparator/FuroSeparatorContext.d.ts +31 -0
- package/types/generated/components/molecules/FuroSkeleton/FuroSkeleton.vue.d.ts +27 -0
- package/types/generated/components/molecules/FuroSkeleton/FuroSkeletonContext.d.ts +61 -0
- package/types/generated/components/molecules/FuroSplitter/FuroSplitter.vue.d.ts +139 -0
- package/types/generated/components/molecules/FuroSplitter/FuroSplitterContext.d.ts +226 -0
- package/types/generated/components/molecules/FuroSplitter/SplitterEmitPayload.d.ts +41 -0
- package/types/generated/components/molecules/FuroTimeField/FuroTimeField.vue.d.ts +498 -0
- package/types/generated/components/molecules/FuroTimeField/FuroTimeFieldContext.d.ts +555 -0
- package/types/generated/components/molecules/FuroTimeField/TimeFieldEmitPayload.d.ts +41 -0
- package/types/generated/components/molecules/FuroToggleGroup/FuroToggleGroup.vue.d.ts +70 -0
- package/types/generated/components/molecules/FuroToggleGroup/FuroToggleGroupContext.d.ts +270 -0
- package/types/generated/components/molecules/FuroToggleGroup/ToggleGroupEmitPayload.d.ts +41 -0
- package/types/generated/components/molecules/FuroToolBar/FuroToolBar.vue.d.ts +30 -0
- package/types/generated/components/molecules/FuroToolBar/FuroToolBarContext.d.ts +48 -0
- package/types/generated/components/molecules/FuroTooltip/FuroTooltip.vue.d.ts +524 -0
- package/types/generated/components/molecules/FuroTooltip/FuroTooltipContext.d.ts +166 -0
- package/types/generated/components/organisms/FuroAlertDialog/FuroAlertDialog.vue.d.ts +651 -0
- package/types/generated/components/organisms/FuroAlertDialog/FuroAlertDialogContext.d.ts +299 -0
- package/types/generated/components/organisms/FuroDialog/FuroDialog.vue.d.ts +583 -0
- package/types/generated/components/organisms/FuroDialog/FuroDialogContext.d.ts +264 -0
- package/types/generated/components/organisms/FuroDrawer/FuroDrawer.vue.d.ts +635 -0
- package/types/generated/components/organisms/FuroDrawer/FuroDrawerContext.d.ts +347 -0
- package/types/generated/components/organisms/FuroEditor/FuroEditor.vue.d.ts +2487 -0
- package/types/generated/components/organisms/FuroEditor/FuroEditorCommandContext.d.ts +192 -0
- package/types/generated/components/organisms/FuroEditor/FuroEditorContext.d.ts +904 -0
- package/types/generated/components/organisms/FuroEditor/FuroEditorMentionMenu.vue.d.ts +43 -0
- package/types/generated/components/organisms/FuroEditor/FuroEditorMentionMenuContext.d.ts +159 -0
- package/types/generated/components/organisms/FuroEditor/PreserveNewlinesPasteExtension.d.ts +43 -0
- package/types/generated/components/organisms/FuroEditor/build-editor-extensions.d.ts +22 -0
- package/types/generated/components/organisms/FuroEditor/mention-suggestion.d.ts +25 -0
- package/types/generated/components/organisms/FuroEditor/paste-link-segments.d.ts +31 -0
- package/types/generated/components/organisms/FuroSidebar/FuroSidebar.vue.d.ts +898 -0
- package/types/generated/components/organisms/FuroSidebar/FuroSidebarContext.d.ts +596 -0
- package/types/generated/components/organisms/FuroStepper/FuroStepper.vue.d.ts +589 -0
- package/types/generated/components/organisms/FuroStepper/FuroStepperContext.d.ts +266 -0
- package/types/generated/components/organisms/FuroTable/FuroTable.vue.d.ts +528 -0
- package/types/generated/components/organisms/FuroTable/FuroTableContext.d.ts +1035 -0
- package/types/generated/components/organisms/FuroTable/FuroTableRowItemContext.d.ts +62 -0
- package/types/generated/components/organisms/FuroTabs/FuroTabs.vue.d.ts +515 -0
- package/types/generated/components/organisms/FuroTabs/FuroTabsContext.d.ts +438 -0
- package/types/generated/components/organisms/FuroToast/FuroToast.vue.d.ts +725 -0
- package/types/generated/components/organisms/FuroToast/FuroToastContext.d.ts +543 -0
- package/types/generated/components/organisms/FuroToast/FuroToaster.vue.d.ts +729 -0
- package/types/generated/components/organisms/FuroToast/FuroToasterContext.d.ts +62 -0
- package/types/generated/components/organisms/FuroToast/ToastQueue.d.ts +201 -0
- package/types/generated/components/organisms/FuroToast/toast.d.ts +23 -0
- package/types/generated/contexts/BaseFuroContext.d.ts +207 -0
- package/types/generated/contexts/BaseFuroContextAccessor.d.ts +28 -0
- package/types/generated/emit-payload/BaseEmitPayload.d.ts +62 -0
- package/types/generated/index.components.d.ts +50 -0
- package/types/generated/index.core.d.ts +6 -0
- package/types/generated/tools/TimerClerk.d.ts +50 -0
- package/types/index.d.ts +12 -0
|
@@ -0,0 +1,617 @@
|
|
|
1
|
+
import {
|
|
2
|
+
markRaw,
|
|
3
|
+
reactive,
|
|
4
|
+
} from 'vue'
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
Icon as OfflineIcon,
|
|
8
|
+
addCollection,
|
|
9
|
+
addIcon,
|
|
10
|
+
} from '@iconify/vue/offline'
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
FURO_ICON_COLLECTION,
|
|
14
|
+
} from './furoIconData.js'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Realm-wide key, so duplicate copies of this module still reach one registry.
|
|
18
|
+
*/
|
|
19
|
+
const SHARED_INSTANCE_KEY = Symbol.for('@openreachtech/furo-vue/iconRegistry')
|
|
20
|
+
|
|
21
|
+
const SET_NUMERIC_PROPERTIES = [
|
|
22
|
+
'width',
|
|
23
|
+
'height',
|
|
24
|
+
'left',
|
|
25
|
+
'top',
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
const ICON_NUMERIC_PROPERTIES = [
|
|
29
|
+
...SET_NUMERIC_PROPERTIES,
|
|
30
|
+
'rotate',
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Registry of every icon name `<FuroIcon>` can draw. Resolution is offline, so
|
|
35
|
+
* recording what was registered is what makes an undrawable name detectable.
|
|
36
|
+
*/
|
|
37
|
+
export default class FuroIconRegistry {
|
|
38
|
+
/**
|
|
39
|
+
* Constructor.
|
|
40
|
+
*
|
|
41
|
+
* @param {{
|
|
42
|
+
* stateReactive: FuroIconRegistryState
|
|
43
|
+
* iconStorage: IconStorage
|
|
44
|
+
* }} params - Parameters of this constructor.
|
|
45
|
+
*/
|
|
46
|
+
constructor ({
|
|
47
|
+
stateReactive,
|
|
48
|
+
iconStorage,
|
|
49
|
+
}) {
|
|
50
|
+
this.stateReactive = stateReactive
|
|
51
|
+
this.iconStorage = iconStorage
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Factory method.
|
|
56
|
+
*
|
|
57
|
+
* @param {{
|
|
58
|
+
* stateReactive?: FuroIconRegistryState
|
|
59
|
+
* iconStorage?: IconStorage
|
|
60
|
+
* }} [params] - Parameters of this factory method.
|
|
61
|
+
* @returns {FuroIconRegistry} An instance of this class.
|
|
62
|
+
*/
|
|
63
|
+
static create ({
|
|
64
|
+
stateReactive = this.buildStateReactive(),
|
|
65
|
+
iconStorage = this.createIconStorage(),
|
|
66
|
+
} = {}) {
|
|
67
|
+
return new this({
|
|
68
|
+
stateReactive,
|
|
69
|
+
iconStorage,
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resolve the one registry shared by every copy of this module in the realm.
|
|
75
|
+
*
|
|
76
|
+
* @returns {FuroIconRegistry} The shared registry.
|
|
77
|
+
*/
|
|
78
|
+
static resolveSharedInstance () {
|
|
79
|
+
globalThis[SHARED_INSTANCE_KEY] ??= this.createSharedInstance()
|
|
80
|
+
|
|
81
|
+
return globalThis[SHARED_INSTANCE_KEY]
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Create the shared registry, the library's own icons already registered.
|
|
86
|
+
*
|
|
87
|
+
* @returns {FuroIconRegistry} An instance of this class.
|
|
88
|
+
*/
|
|
89
|
+
static createSharedInstance () {
|
|
90
|
+
return this.create()
|
|
91
|
+
.registerIconSet({
|
|
92
|
+
iconSet: FURO_ICON_COLLECTION,
|
|
93
|
+
})
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Build the reactive state (registered names + the optional resolver and renderer).
|
|
98
|
+
*
|
|
99
|
+
* @returns {FuroIconRegistryState} Reactive state.
|
|
100
|
+
*/
|
|
101
|
+
static buildStateReactive () {
|
|
102
|
+
return reactive({
|
|
103
|
+
registeredNames: new Set(),
|
|
104
|
+
resolver: null,
|
|
105
|
+
renderer: null,
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Create the bridge to the underlying renderer's icon storage.
|
|
111
|
+
*
|
|
112
|
+
* @returns {IconStorage} Storage bridge.
|
|
113
|
+
*/
|
|
114
|
+
static createIconStorage () {
|
|
115
|
+
return {
|
|
116
|
+
registerSet: addCollection,
|
|
117
|
+
registerIcon: addIcon,
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Build the set shape the underlying storage accepts, which stores nothing
|
|
123
|
+
* from a set carrying no `prefix`.
|
|
124
|
+
*
|
|
125
|
+
* @param {{
|
|
126
|
+
* iconSet: IconSet
|
|
127
|
+
* }} params - Parameters of this method.
|
|
128
|
+
* @returns {IconSet} Storable icon set.
|
|
129
|
+
*/
|
|
130
|
+
static buildStorableIconSet ({
|
|
131
|
+
iconSet,
|
|
132
|
+
}) {
|
|
133
|
+
const prefix = this.extractIconSetPrefix({
|
|
134
|
+
iconSet,
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
return {
|
|
138
|
+
...iconSet,
|
|
139
|
+
prefix,
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Extract the prefix a set is stored under, empty unless it carries one the
|
|
145
|
+
* storage accepts.
|
|
146
|
+
*
|
|
147
|
+
* @param {{
|
|
148
|
+
* iconSet: IconSet
|
|
149
|
+
* }} params - Parameters of this method.
|
|
150
|
+
* @returns {string} Prefix, empty when the set carries none.
|
|
151
|
+
*/
|
|
152
|
+
static extractIconSetPrefix ({
|
|
153
|
+
iconSet,
|
|
154
|
+
}) {
|
|
155
|
+
if (typeof iconSet?.prefix !== 'string') {
|
|
156
|
+
return ''
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return iconSet.prefix
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Generate what every name of a set is stored under, empty for a set carrying
|
|
164
|
+
* no prefix, so its already-prefixed keys stay verbatim.
|
|
165
|
+
*
|
|
166
|
+
* @param {{
|
|
167
|
+
* iconSet: IconSet
|
|
168
|
+
* }} params - Parameters of this method.
|
|
169
|
+
* @returns {string} Storage prefix.
|
|
170
|
+
*/
|
|
171
|
+
static generateStoragePrefix ({
|
|
172
|
+
iconSet,
|
|
173
|
+
}) {
|
|
174
|
+
const prefix = this.extractIconSetPrefix({
|
|
175
|
+
iconSet,
|
|
176
|
+
})
|
|
177
|
+
|
|
178
|
+
if (prefix === '') {
|
|
179
|
+
return ''
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return `${prefix}:`
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Extract the full names an icon set carries, its prefix applied.
|
|
187
|
+
*
|
|
188
|
+
* @param {{
|
|
189
|
+
* iconSet: IconSet
|
|
190
|
+
* }} params - Parameters of this method.
|
|
191
|
+
* @returns {Array<string>} Full icon names.
|
|
192
|
+
*/
|
|
193
|
+
static extractIconSetNames ({
|
|
194
|
+
iconSet,
|
|
195
|
+
}) {
|
|
196
|
+
const bareNames = [
|
|
197
|
+
...Object.keys(iconSet?.icons ?? {}),
|
|
198
|
+
...Object.keys(iconSet?.aliases ?? {}),
|
|
199
|
+
]
|
|
200
|
+
|
|
201
|
+
const storagePrefix = this.generateStoragePrefix({
|
|
202
|
+
iconSet,
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
return bareNames.map(bareName => `${storagePrefix}${bareName}`)
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Whether the storage keeps the set at all, which it refuses wholesale over
|
|
210
|
+
* one bodyless icon or one alias pointing outside the set.
|
|
211
|
+
*
|
|
212
|
+
* @param {{
|
|
213
|
+
* iconSet: IconSet
|
|
214
|
+
* }} params - Parameters of this method.
|
|
215
|
+
* @returns {boolean} Whether the set is storable.
|
|
216
|
+
*/
|
|
217
|
+
static isStorableIconSet ({
|
|
218
|
+
iconSet,
|
|
219
|
+
}) {
|
|
220
|
+
const icons = iconSet?.icons
|
|
221
|
+
?? null
|
|
222
|
+
|
|
223
|
+
if (icons === null) {
|
|
224
|
+
return false
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const hasNumericSetDimensions = this.hasNumericDimensions({
|
|
228
|
+
shape: iconSet,
|
|
229
|
+
propertyNames: SET_NUMERIC_PROPERTIES,
|
|
230
|
+
})
|
|
231
|
+
|
|
232
|
+
const isEveryIconDrawable = Object.values(icons)
|
|
233
|
+
.every(icon => this.isDrawableIcon({
|
|
234
|
+
icon,
|
|
235
|
+
}))
|
|
236
|
+
|
|
237
|
+
const isEveryAliasResolvable = Object.values(iconSet?.aliases ?? {})
|
|
238
|
+
.every(alias => this.hasIconSetEntry({
|
|
239
|
+
iconSet,
|
|
240
|
+
name: alias?.parent ?? '',
|
|
241
|
+
}))
|
|
242
|
+
|
|
243
|
+
return hasNumericSetDimensions
|
|
244
|
+
&& isEveryIconDrawable
|
|
245
|
+
&& isEveryAliasResolvable
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Whether every dimension a shape declares is a number, which the storage
|
|
250
|
+
* demands before it keeps the set carrying it.
|
|
251
|
+
*
|
|
252
|
+
* @param {{
|
|
253
|
+
* shape: Record<string, *>
|
|
254
|
+
* propertyNames: Array<string>
|
|
255
|
+
* }} params - Parameters of this method.
|
|
256
|
+
* @returns {boolean} Whether every declared dimension is numeric.
|
|
257
|
+
*/
|
|
258
|
+
static hasNumericDimensions ({
|
|
259
|
+
shape,
|
|
260
|
+
propertyNames,
|
|
261
|
+
}) {
|
|
262
|
+
return propertyNames
|
|
263
|
+
.filter(propertyName => Object.hasOwn(shape ?? {}, propertyName))
|
|
264
|
+
.every(propertyName => typeof shape[propertyName] === 'number')
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Whether an icon carries what the renderer draws.
|
|
269
|
+
*
|
|
270
|
+
* @param {{
|
|
271
|
+
* icon: IconShape
|
|
272
|
+
* }} params - Parameters of this method.
|
|
273
|
+
* @returns {boolean} Whether the icon is drawable.
|
|
274
|
+
*/
|
|
275
|
+
static isDrawableIcon ({
|
|
276
|
+
icon,
|
|
277
|
+
}) {
|
|
278
|
+
if (typeof icon?.body !== 'string') {
|
|
279
|
+
return false
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
return this.hasNumericDimensions({
|
|
283
|
+
shape: icon,
|
|
284
|
+
propertyNames: ICON_NUMERIC_PROPERTIES,
|
|
285
|
+
})
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Whether a set carries a name, as an icon or as an alias.
|
|
290
|
+
*
|
|
291
|
+
* @param {{
|
|
292
|
+
* iconSet: IconSet
|
|
293
|
+
* name: string
|
|
294
|
+
* }} params - Parameters of this method.
|
|
295
|
+
* @returns {boolean} Whether the set carries the name.
|
|
296
|
+
*/
|
|
297
|
+
static hasIconSetEntry ({
|
|
298
|
+
iconSet,
|
|
299
|
+
name,
|
|
300
|
+
}) {
|
|
301
|
+
return Object.hasOwn(iconSet?.icons ?? {}, name)
|
|
302
|
+
|| Object.hasOwn(iconSet?.aliases ?? {}, name)
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Build the renderer shape the state keeps, a component unproxied so
|
|
307
|
+
* `reactive()` leaves its identity alone, a global name kept verbatim.
|
|
308
|
+
*
|
|
309
|
+
* @param {{
|
|
310
|
+
* component: IconRenderer | null
|
|
311
|
+
* }} params - Parameters of this method.
|
|
312
|
+
* @returns {IconRenderer | null} Storable renderer.
|
|
313
|
+
*/
|
|
314
|
+
static buildStorableRenderer ({
|
|
315
|
+
component,
|
|
316
|
+
}) {
|
|
317
|
+
if (!component) {
|
|
318
|
+
return null
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
if (typeof component === 'string') {
|
|
322
|
+
return component
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
return markRaw(component)
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Create the renderer that draws every registered name.
|
|
330
|
+
*
|
|
331
|
+
* @returns {import('vue').Component} The library's own renderer.
|
|
332
|
+
*/
|
|
333
|
+
static createOfflineRenderer () {
|
|
334
|
+
return OfflineIcon
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* get: the constructor of this instance.
|
|
339
|
+
*
|
|
340
|
+
* @returns {typeof FuroIconRegistry} The constructor.
|
|
341
|
+
*/
|
|
342
|
+
get Ctor () {
|
|
343
|
+
return /** @type {typeof FuroIconRegistry} */ (this.constructor)
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Register a whole icon set, so every name it carries becomes drawable. A set
|
|
348
|
+
* the storage refuses records nothing, since none of its names would draw.
|
|
349
|
+
*
|
|
350
|
+
* @param {{
|
|
351
|
+
* iconSet: IconSet
|
|
352
|
+
* }} params - Parameters of this method.
|
|
353
|
+
* @returns {FuroIconRegistry} For method chaining.
|
|
354
|
+
*/
|
|
355
|
+
registerIconSet ({
|
|
356
|
+
iconSet,
|
|
357
|
+
}) {
|
|
358
|
+
if (!this.Ctor.isStorableIconSet({ iconSet })) {
|
|
359
|
+
return this
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
this.iconStorage.registerSet(
|
|
363
|
+
this.Ctor.buildStorableIconSet({
|
|
364
|
+
iconSet,
|
|
365
|
+
}),
|
|
366
|
+
this.Ctor.generateStoragePrefix({
|
|
367
|
+
iconSet,
|
|
368
|
+
})
|
|
369
|
+
)
|
|
370
|
+
|
|
371
|
+
return this.recordNames({
|
|
372
|
+
names: this.Ctor.extractIconSetNames({
|
|
373
|
+
iconSet,
|
|
374
|
+
}),
|
|
375
|
+
})
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Register one icon under its full name, prefix included. An icon with no
|
|
380
|
+
* body records nothing, since the renderer would draw nothing for it.
|
|
381
|
+
*
|
|
382
|
+
* @param {{
|
|
383
|
+
* name: string
|
|
384
|
+
* icon: IconShape
|
|
385
|
+
* }} params - Parameters of this method.
|
|
386
|
+
* @returns {FuroIconRegistry} For method chaining.
|
|
387
|
+
*/
|
|
388
|
+
registerIcon ({
|
|
389
|
+
name,
|
|
390
|
+
icon,
|
|
391
|
+
}) {
|
|
392
|
+
if (!this.Ctor.isDrawableIcon({ icon })) {
|
|
393
|
+
return this
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
this.iconStorage.registerIcon(name, icon)
|
|
397
|
+
|
|
398
|
+
return this.recordNames({
|
|
399
|
+
names: [
|
|
400
|
+
name,
|
|
401
|
+
],
|
|
402
|
+
})
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Record names as drawable.
|
|
407
|
+
*
|
|
408
|
+
* @param {{
|
|
409
|
+
* names: Array<string>
|
|
410
|
+
* }} params - Parameters of this method.
|
|
411
|
+
* @returns {FuroIconRegistry} For method chaining.
|
|
412
|
+
*/
|
|
413
|
+
recordNames ({
|
|
414
|
+
names,
|
|
415
|
+
}) {
|
|
416
|
+
this.stateReactive.registeredNames = new Set([
|
|
417
|
+
...this.stateReactive.registeredNames,
|
|
418
|
+
...names,
|
|
419
|
+
])
|
|
420
|
+
|
|
421
|
+
return this
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Install the resolver consulted for a name no registration covers.
|
|
426
|
+
*
|
|
427
|
+
* @param {{
|
|
428
|
+
* resolver: IconResolver | null
|
|
429
|
+
* }} params - Parameters of this method.
|
|
430
|
+
* @returns {FuroIconRegistry} For method chaining.
|
|
431
|
+
*/
|
|
432
|
+
useIconResolver ({
|
|
433
|
+
resolver,
|
|
434
|
+
}) {
|
|
435
|
+
this.stateReactive.resolver = resolver
|
|
436
|
+
|
|
437
|
+
return this
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Install the renderer for names the registry lacks, `null` to uninstall.
|
|
442
|
+
*
|
|
443
|
+
* @param {{
|
|
444
|
+
* component: IconRenderer | null
|
|
445
|
+
* }} params - Parameters of this method.
|
|
446
|
+
* @returns {FuroIconRegistry} For method chaining.
|
|
447
|
+
*/
|
|
448
|
+
useIconRenderer ({
|
|
449
|
+
component,
|
|
450
|
+
}) {
|
|
451
|
+
this.stateReactive.renderer = this.Ctor.buildStorableRenderer({
|
|
452
|
+
component,
|
|
453
|
+
})
|
|
454
|
+
|
|
455
|
+
return this
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Whether a renderer is installed.
|
|
460
|
+
*
|
|
461
|
+
* @returns {boolean} Whether a renderer is installed.
|
|
462
|
+
*/
|
|
463
|
+
hasIconRenderer () {
|
|
464
|
+
return this.extractIconRenderer() !== null
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Extract the installed renderer.
|
|
469
|
+
*
|
|
470
|
+
* @returns {IconRenderer | null} Renderer, or null when none is installed.
|
|
471
|
+
*/
|
|
472
|
+
extractIconRenderer () {
|
|
473
|
+
return this.stateReactive.renderer
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Extract the renderer that draws every registered name.
|
|
478
|
+
*
|
|
479
|
+
* @returns {import('vue').Component} The library's own renderer.
|
|
480
|
+
*/
|
|
481
|
+
extractOfflineRenderer () {
|
|
482
|
+
return this.Ctor.createOfflineRenderer()
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Whether a name draws anything, whether it was registered or the installed
|
|
487
|
+
* resolver answers it.
|
|
488
|
+
*
|
|
489
|
+
* @param {{
|
|
490
|
+
* name: string | null
|
|
491
|
+
* }} params - Parameters of this method.
|
|
492
|
+
* @returns {boolean} Whether the name resolves.
|
|
493
|
+
*/
|
|
494
|
+
hasIcon ({
|
|
495
|
+
name,
|
|
496
|
+
}) {
|
|
497
|
+
return this.findRenderableIcon({
|
|
498
|
+
name,
|
|
499
|
+
}) !== null
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Find what the renderer should draw for a name.
|
|
504
|
+
*
|
|
505
|
+
* @param {{
|
|
506
|
+
* name: string | null
|
|
507
|
+
* }} params - Parameters of this method.
|
|
508
|
+
* @returns {string | IconShape | null} A registered name, resolved icon data, or null.
|
|
509
|
+
*/
|
|
510
|
+
findRenderableIcon ({
|
|
511
|
+
name,
|
|
512
|
+
}) {
|
|
513
|
+
if (name === null) {
|
|
514
|
+
return null
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
if (this.hasRegisteredIcon({ name })) {
|
|
518
|
+
return name
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
return this.resolveIcon({
|
|
522
|
+
name,
|
|
523
|
+
})
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Whether a name was registered, leaving the resolver unasked.
|
|
528
|
+
*
|
|
529
|
+
* @param {{
|
|
530
|
+
* name: string | null
|
|
531
|
+
* }} params - Parameters of this method.
|
|
532
|
+
* @returns {boolean} Whether the name is registered.
|
|
533
|
+
*/
|
|
534
|
+
hasRegisteredIcon ({
|
|
535
|
+
name,
|
|
536
|
+
}) {
|
|
537
|
+
return this.stateReactive.registeredNames.has(name)
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Resolve a name through the installed resolver, holding it to the same shape
|
|
542
|
+
* registration demands, so undrawable data stays detectable as unresolved.
|
|
543
|
+
*
|
|
544
|
+
* @param {{
|
|
545
|
+
* name: string
|
|
546
|
+
* }} params - Parameters of this method.
|
|
547
|
+
* @returns {IconShape | null} Icon data, or null when nothing resolves it.
|
|
548
|
+
*/
|
|
549
|
+
resolveIcon ({
|
|
550
|
+
name,
|
|
551
|
+
}) {
|
|
552
|
+
const {
|
|
553
|
+
resolver,
|
|
554
|
+
} = this.stateReactive
|
|
555
|
+
|
|
556
|
+
if (resolver === null) {
|
|
557
|
+
return null
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
const icon = resolver({ name })
|
|
561
|
+
|
|
562
|
+
if (!this.Ctor.isDrawableIcon({ icon })) {
|
|
563
|
+
return null
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
return icon
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* One icon's drawable data.
|
|
572
|
+
*
|
|
573
|
+
* @typedef {{
|
|
574
|
+
* body: string
|
|
575
|
+
* width?: number
|
|
576
|
+
* height?: number
|
|
577
|
+
* [key: string]: *
|
|
578
|
+
* }} IconShape
|
|
579
|
+
*/
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* A set of icons sharing one prefix and one set of defaults.
|
|
583
|
+
*
|
|
584
|
+
* @typedef {{
|
|
585
|
+
* prefix?: string
|
|
586
|
+
* width?: number
|
|
587
|
+
* height?: number
|
|
588
|
+
* icons: Record<string, IconShape>
|
|
589
|
+
* aliases?: Record<string, *>
|
|
590
|
+
* [key: string]: *
|
|
591
|
+
* }} IconSet
|
|
592
|
+
*/
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* @typedef {(params: { name: string }) => IconShape | null} IconResolver
|
|
596
|
+
*/
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* A renderer component, or the name one is globally registered under.
|
|
600
|
+
*
|
|
601
|
+
* @typedef {import('vue').Component | string} IconRenderer
|
|
602
|
+
*/
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* @typedef {{
|
|
606
|
+
* registerSet: (iconSet: *, storagePrefix: string) => void
|
|
607
|
+
* registerIcon: (name: string, icon: *) => void
|
|
608
|
+
* }} IconStorage
|
|
609
|
+
*/
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* @typedef {import('vue').Reactive<{
|
|
613
|
+
* registeredNames: Set<string>
|
|
614
|
+
* resolver: IconResolver | null
|
|
615
|
+
* renderer: IconRenderer | null
|
|
616
|
+
* }>} FuroIconRegistryState
|
|
617
|
+
*/
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import BaseFuroContext from '../../../contexts/BaseFuroContext.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Context class for the catalogue renderer adapter, holding the one place its
|
|
5
|
+
* `name` / `size` map onto the underlying renderer's own properties.
|
|
6
|
+
*
|
|
7
|
+
* @extends {BaseFuroContext<null, Props, null>}
|
|
8
|
+
*/
|
|
9
|
+
export default class FuroIconifyRendererContext extends BaseFuroContext {
|
|
10
|
+
/**
|
|
11
|
+
* Factory method.
|
|
12
|
+
*
|
|
13
|
+
* @template {X extends typeof FuroIconifyRendererContext ? X : never} T, X
|
|
14
|
+
* @override
|
|
15
|
+
* @param {FuroIconifyRendererContextFactoryParams} params - Parameters of this factory method.
|
|
16
|
+
* @returns {InstanceType<T>} An instance of this class.
|
|
17
|
+
* @this {T}
|
|
18
|
+
*/
|
|
19
|
+
static create ({
|
|
20
|
+
props,
|
|
21
|
+
componentContext,
|
|
22
|
+
}) {
|
|
23
|
+
return /** @type {InstanceType<T>} */ (
|
|
24
|
+
super.create({
|
|
25
|
+
props,
|
|
26
|
+
componentContext,
|
|
27
|
+
})
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* get: the icon name, collection prefix included.
|
|
33
|
+
*
|
|
34
|
+
* @returns {string | null} Icon name such as `mdi:home`, or null.
|
|
35
|
+
*/
|
|
36
|
+
get name () {
|
|
37
|
+
return this.props
|
|
38
|
+
?.name
|
|
39
|
+
?? null
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* get: the length of the icon's box, applied to both axes.
|
|
44
|
+
*
|
|
45
|
+
* @returns {string | number | null} A CSS length, or null to inherit the font size.
|
|
46
|
+
*/
|
|
47
|
+
get size () {
|
|
48
|
+
return this.props
|
|
49
|
+
?.size
|
|
50
|
+
?? null
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Extract the attributes the underlying renderer expects.
|
|
55
|
+
*
|
|
56
|
+
* @returns {{
|
|
57
|
+
* icon: string | null
|
|
58
|
+
* width?: string | number
|
|
59
|
+
* height?: string | number
|
|
60
|
+
* }} Renderer attributes.
|
|
61
|
+
*/
|
|
62
|
+
extractRendererAttributes () {
|
|
63
|
+
return {
|
|
64
|
+
icon: this.name, // re-applied as the renderer's `icon` property, the ONE allowed mention
|
|
65
|
+
...this.buildOptionalSizeAttributes(),
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Build the size attributes, omitted rather than nulled when no size was
|
|
71
|
+
* given, so the glyph keeps the renderer's `1em` default and scales with text.
|
|
72
|
+
*
|
|
73
|
+
* @returns {{
|
|
74
|
+
* width?: string | number
|
|
75
|
+
* height?: string | number
|
|
76
|
+
* }} Size attributes.
|
|
77
|
+
*/
|
|
78
|
+
buildOptionalSizeAttributes () {
|
|
79
|
+
return this.size === null
|
|
80
|
+
? {}
|
|
81
|
+
: {
|
|
82
|
+
width: this.size,
|
|
83
|
+
height: this.size,
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @typedef {{
|
|
90
|
+
* name: string
|
|
91
|
+
* size?: string | number | null
|
|
92
|
+
* }} Props
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @typedef {import('../../../contexts/BaseFuroContext.js').BaseFuroContextParams<Props>} FuroIconifyRendererContextParams
|
|
97
|
+
*/
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @typedef {FuroIconifyRendererContextParams} FuroIconifyRendererContextFactoryParams
|
|
101
|
+
*/
|