@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.
Files changed (310) hide show
  1. package/LICENSE +9 -0
  2. package/README.ja.md +334 -0
  3. package/README.md +333 -0
  4. package/index.js +11 -0
  5. package/lib/assets/css/furo/0010.variables-palette-color-scale.css +298 -0
  6. package/lib/assets/css/furo/0020.variables-z-index.css +10 -0
  7. package/lib/assets/css/furo/0030.variables-semantic-color.css +178 -0
  8. package/lib/assets/css/furo/0035.variables-semantic-dimension.css +104 -0
  9. package/lib/assets/css/furo/0040.variables-component-furo.css +28 -0
  10. package/lib/assets/css/furo/0050.furo-editor-content.css +22 -0
  11. package/lib/assets/css/furo.css +15 -0
  12. package/lib/components/atoms/FuroAvatar/FuroAvatar.vue +135 -0
  13. package/lib/components/atoms/FuroAvatar/FuroAvatarContext.js +147 -0
  14. package/lib/components/atoms/FuroBadge/FuroBadge.vue +240 -0
  15. package/lib/components/atoms/FuroBadge/FuroBadgeContext.js +298 -0
  16. package/lib/components/atoms/FuroButton/ButtonEmitPayload.js +44 -0
  17. package/lib/components/atoms/FuroButton/FuroButton.vue +301 -0
  18. package/lib/components/atoms/FuroButton/FuroButtonContext.js +328 -0
  19. package/lib/components/atoms/FuroCheckbox/CheckboxEmitPayload.js +106 -0
  20. package/lib/components/atoms/FuroCheckbox/FuroCheckbox.vue +173 -0
  21. package/lib/components/atoms/FuroCheckbox/FuroCheckboxContext.js +682 -0
  22. package/lib/components/atoms/FuroEmailField/EmailFieldEmitPayload.js +74 -0
  23. package/lib/components/atoms/FuroEmailField/FuroEmailField.vue +119 -0
  24. package/lib/components/atoms/FuroEmailField/FuroEmailFieldContext.js +311 -0
  25. package/lib/components/atoms/FuroFileField/FileFieldEmitPayload.js +80 -0
  26. package/lib/components/atoms/FuroFileField/FuroFileField.vue +128 -0
  27. package/lib/components/atoms/FuroFileField/FuroFileFieldContext.js +195 -0
  28. package/lib/components/atoms/FuroIcon/FuroIcon.vue +74 -0
  29. package/lib/components/atoms/FuroIcon/FuroIconContext.js +293 -0
  30. package/lib/components/atoms/FuroIcon/FuroIconRegistry.js +617 -0
  31. package/lib/components/atoms/FuroIcon/FuroIconifyRendererContext.js +101 -0
  32. package/lib/components/atoms/FuroIcon/furoIconData.js +164 -0
  33. package/lib/components/atoms/FuroIcon/iconRenderers.js +62 -0
  34. package/lib/components/atoms/FuroIcon/icons.js +7 -0
  35. package/lib/components/atoms/FuroNumberField/FuroNumberField.vue +213 -0
  36. package/lib/components/atoms/FuroNumberField/FuroNumberFieldContext.js +442 -0
  37. package/lib/components/atoms/FuroNumberField/NumberFieldEmitPayload.js +162 -0
  38. package/lib/components/atoms/FuroPasswordField/FuroPasswordField.vue +119 -0
  39. package/lib/components/atoms/FuroPasswordField/FuroPasswordFieldContext.js +311 -0
  40. package/lib/components/atoms/FuroPasswordField/PasswordFieldEmitPayload.js +74 -0
  41. package/lib/components/atoms/FuroRadio/FuroRadio.vue +193 -0
  42. package/lib/components/atoms/FuroRadio/FuroRadioContext.js +557 -0
  43. package/lib/components/atoms/FuroRadio/RadioEmitPayload.js +72 -0
  44. package/lib/components/atoms/FuroSwitch/FuroSwitch.vue +165 -0
  45. package/lib/components/atoms/FuroSwitch/FuroSwitchContext.js +440 -0
  46. package/lib/components/atoms/FuroSwitch/SwitchEmitPayload.js +86 -0
  47. package/lib/components/atoms/FuroTextField/FuroTextField.vue +119 -0
  48. package/lib/components/atoms/FuroTextField/FuroTextFieldContext.js +311 -0
  49. package/lib/components/atoms/FuroTextField/TextFieldEmitPayload.js +83 -0
  50. package/lib/components/atoms/FuroTextarea/FuroTextarea.vue +121 -0
  51. package/lib/components/atoms/FuroTextarea/FuroTextareaContext.js +322 -0
  52. package/lib/components/atoms/FuroTextarea/TextareaEmitPayload.js +83 -0
  53. package/lib/components/atoms/FuroToggle/FuroToggle.vue +172 -0
  54. package/lib/components/atoms/FuroToggle/FuroToggleContext.js +410 -0
  55. package/lib/components/atoms/FuroToggle/ToggleEmitPayload.js +86 -0
  56. package/lib/components/molecules/FuroAccordion/AccordionEmitPayload.js +80 -0
  57. package/lib/components/molecules/FuroAccordion/FuroAccordion.vue +219 -0
  58. package/lib/components/molecules/FuroAccordion/FuroAccordionContext.js +547 -0
  59. package/lib/components/molecules/FuroAttachment/FuroAttachment.vue +376 -0
  60. package/lib/components/molecules/FuroAttachment/FuroAttachmentContext.js +628 -0
  61. package/lib/components/molecules/FuroAutocompleteField/AutocompleteEmitPayload.js +225 -0
  62. package/lib/components/molecules/FuroAutocompleteField/FuroAutocompleteField.vue +669 -0
  63. package/lib/components/molecules/FuroAutocompleteField/FuroAutocompleteFieldContext.js +1525 -0
  64. package/lib/components/molecules/FuroAvatarGroup/FuroAvatarGroup.vue +126 -0
  65. package/lib/components/molecules/FuroAvatarGroup/FuroAvatarGroupContext.js +245 -0
  66. package/lib/components/molecules/FuroBreadcrumb/FuroBreadcrumb.vue +219 -0
  67. package/lib/components/molecules/FuroBreadcrumb/FuroBreadcrumbContext.js +257 -0
  68. package/lib/components/molecules/FuroCollapsible/CollapsibleEmitPayload.js +69 -0
  69. package/lib/components/molecules/FuroCollapsible/FuroCollapsible.vue +177 -0
  70. package/lib/components/molecules/FuroCollapsible/FuroCollapsibleContext.js +389 -0
  71. package/lib/components/molecules/FuroControlBlock/FuroControlBlock.vue +149 -0
  72. package/lib/components/molecules/FuroControlBlock/FuroControlBlockContext.js +81 -0
  73. package/lib/components/molecules/FuroDatePicker/DatePickerEmitPayload.js +74 -0
  74. package/lib/components/molecules/FuroDatePicker/FuroDatePicker.vue +661 -0
  75. package/lib/components/molecules/FuroDatePicker/FuroDatePickerContext.js +1038 -0
  76. package/lib/components/molecules/FuroDateTimePicker/DateTimePickerEmitPayload.js +96 -0
  77. package/lib/components/molecules/FuroDateTimePicker/FuroDateTimePicker.vue +153 -0
  78. package/lib/components/molecules/FuroDateTimePicker/FuroDateTimePickerContext.js +840 -0
  79. package/lib/components/molecules/FuroDropdownMenu/DropdownMenuOptionSelectEmitPayload.js +100 -0
  80. package/lib/components/molecules/FuroDropdownMenu/FuroDropdownMenu.vue +348 -0
  81. package/lib/components/molecules/FuroDropdownMenu/FuroDropdownMenuContext.js +714 -0
  82. package/lib/components/molecules/FuroDropdownMenu/FuroDropdownMenuOptionRows.vue +222 -0
  83. package/lib/components/molecules/FuroEditableField/EditableEmitPayload.js +89 -0
  84. package/lib/components/molecules/FuroEditableField/FuroEditableField.vue +314 -0
  85. package/lib/components/molecules/FuroEditableField/FuroEditableFieldContext.js +1018 -0
  86. package/lib/components/molecules/FuroEditableField/processors/EditorCollisionProcessor.js +236 -0
  87. package/lib/components/molecules/FuroEditableField/processors/ObjectProcessor.js +101 -0
  88. package/lib/components/molecules/FuroEmptyState/FuroEmptyState.vue +124 -0
  89. package/lib/components/molecules/FuroEmptyState/FuroEmptyStateContext.js +42 -0
  90. package/lib/components/molecules/FuroErrorState/FuroErrorState.vue +125 -0
  91. package/lib/components/molecules/FuroErrorState/FuroErrorStateContext.js +42 -0
  92. package/lib/components/molecules/FuroPagination/FuroPagination.vue +246 -0
  93. package/lib/components/molecules/FuroPagination/FuroPaginationContext.js +489 -0
  94. package/lib/components/molecules/FuroPopover/FuroPopover.vue +171 -0
  95. package/lib/components/molecules/FuroPopover/FuroPopoverContext.js +279 -0
  96. package/lib/components/molecules/FuroScrollArea/FuroScrollArea.vue +181 -0
  97. package/lib/components/molecules/FuroScrollArea/FuroScrollAreaContext.js +149 -0
  98. package/lib/components/molecules/FuroSearchField/FuroSearchField.vue +155 -0
  99. package/lib/components/molecules/FuroSearchField/FuroSearchFieldContext.js +231 -0
  100. package/lib/components/molecules/FuroSectionHeader/FuroSectionHeader.vue +140 -0
  101. package/lib/components/molecules/FuroSectionHeader/FuroSectionHeaderContext.js +204 -0
  102. package/lib/components/molecules/FuroSelect/FuroSelect.vue +474 -0
  103. package/lib/components/molecules/FuroSelect/FuroSelectContext.js +743 -0
  104. package/lib/components/molecules/FuroSelect/SelectEmitPayload.js +181 -0
  105. package/lib/components/molecules/FuroSeparator/FuroSeparator.vue +88 -0
  106. package/lib/components/molecules/FuroSeparator/FuroSeparatorContext.js +40 -0
  107. package/lib/components/molecules/FuroSkeleton/FuroSkeleton.vue +101 -0
  108. package/lib/components/molecules/FuroSkeleton/FuroSkeletonContext.js +82 -0
  109. package/lib/components/molecules/FuroSplitter/FuroSplitter.vue +237 -0
  110. package/lib/components/molecules/FuroSplitter/FuroSplitterContext.js +429 -0
  111. package/lib/components/molecules/FuroSplitter/SplitterEmitPayload.js +69 -0
  112. package/lib/components/molecules/FuroTimeField/FuroTimeField.vue +251 -0
  113. package/lib/components/molecules/FuroTimeField/FuroTimeFieldContext.js +1138 -0
  114. package/lib/components/molecules/FuroTimeField/TimeFieldEmitPayload.js +74 -0
  115. package/lib/components/molecules/FuroToggleGroup/FuroToggleGroup.vue +211 -0
  116. package/lib/components/molecules/FuroToggleGroup/FuroToggleGroupContext.js +551 -0
  117. package/lib/components/molecules/FuroToggleGroup/ToggleGroupEmitPayload.js +80 -0
  118. package/lib/components/molecules/FuroToolBar/FuroToolBar.vue +91 -0
  119. package/lib/components/molecules/FuroToolBar/FuroToolBarContext.js +75 -0
  120. package/lib/components/molecules/FuroTooltip/FuroTooltip.vue +183 -0
  121. package/lib/components/molecules/FuroTooltip/FuroTooltipContext.js +290 -0
  122. package/lib/components/organisms/FuroAlertDialog/FuroAlertDialog.vue +324 -0
  123. package/lib/components/organisms/FuroAlertDialog/FuroAlertDialogContext.js +608 -0
  124. package/lib/components/organisms/FuroDialog/FuroDialog.vue +362 -0
  125. package/lib/components/organisms/FuroDialog/FuroDialogContext.js +535 -0
  126. package/lib/components/organisms/FuroDrawer/FuroDrawer.vue +618 -0
  127. package/lib/components/organisms/FuroDrawer/FuroDrawerContext.js +676 -0
  128. package/lib/components/organisms/FuroEditor/FuroEditor.vue +613 -0
  129. package/lib/components/organisms/FuroEditor/FuroEditorCommandContext.js +420 -0
  130. package/lib/components/organisms/FuroEditor/FuroEditorContext.js +2048 -0
  131. package/lib/components/organisms/FuroEditor/FuroEditorMentionMenu.vue +120 -0
  132. package/lib/components/organisms/FuroEditor/FuroEditorMentionMenuContext.js +261 -0
  133. package/lib/components/organisms/FuroEditor/PreserveNewlinesPasteExtension.js +267 -0
  134. package/lib/components/organisms/FuroEditor/build-editor-extensions.js +97 -0
  135. package/lib/components/organisms/FuroEditor/mention-suggestion.js +320 -0
  136. package/lib/components/organisms/FuroEditor/paste-link-segments.js +124 -0
  137. package/lib/components/organisms/FuroSidebar/FuroSidebar.vue +473 -0
  138. package/lib/components/organisms/FuroSidebar/FuroSidebarContext.js +1014 -0
  139. package/lib/components/organisms/FuroStepper/FuroStepper.vue +345 -0
  140. package/lib/components/organisms/FuroStepper/FuroStepperContext.js +481 -0
  141. package/lib/components/organisms/FuroTable/FuroTable.vue +707 -0
  142. package/lib/components/organisms/FuroTable/FuroTableContext.js +1965 -0
  143. package/lib/components/organisms/FuroTable/FuroTableRowItemContext.js +111 -0
  144. package/lib/components/organisms/FuroTabs/FuroTabs.vue +403 -0
  145. package/lib/components/organisms/FuroTabs/FuroTabsContext.js +846 -0
  146. package/lib/components/organisms/FuroToast/FuroToast.vue +624 -0
  147. package/lib/components/organisms/FuroToast/FuroToastContext.js +1089 -0
  148. package/lib/components/organisms/FuroToast/FuroToaster.vue +44 -0
  149. package/lib/components/organisms/FuroToast/FuroToasterContext.js +113 -0
  150. package/lib/components/organisms/FuroToast/ToastQueue.js +325 -0
  151. package/lib/components/organisms/FuroToast/toast.js +64 -0
  152. package/lib/contexts/BaseFuroContext.js +318 -0
  153. package/lib/contexts/BaseFuroContextAccessor.js +47 -0
  154. package/lib/emit-payload/BaseEmitPayload.js +91 -0
  155. package/lib/index.components.js +61 -0
  156. package/lib/index.core.js +18 -0
  157. package/lib/tools/TimerClerk.js +75 -0
  158. package/nuxt/index.js +109 -0
  159. package/nuxt/runtime/furo-icon-renderer.js +24 -0
  160. package/package.json +137 -0
  161. package/public/furo-vue/components.json +4619 -0
  162. package/public/furo-vue/llms.txt +66 -0
  163. package/types/furo-nuxt.d.ts +48 -0
  164. package/types/generated/components/atoms/FuroAvatar/FuroAvatar.vue.d.ts +74 -0
  165. package/types/generated/components/atoms/FuroAvatar/FuroAvatarContext.d.ts +82 -0
  166. package/types/generated/components/atoms/FuroBadge/FuroBadge.vue.d.ts +12 -0
  167. package/types/generated/components/atoms/FuroBadge/FuroBadgeContext.d.ts +160 -0
  168. package/types/generated/components/atoms/FuroButton/ButtonEmitPayload.d.ts +19 -0
  169. package/types/generated/components/atoms/FuroButton/FuroButton.vue.d.ts +53 -0
  170. package/types/generated/components/atoms/FuroButton/FuroButtonContext.d.ts +156 -0
  171. package/types/generated/components/atoms/FuroCheckbox/CheckboxEmitPayload.d.ts +55 -0
  172. package/types/generated/components/atoms/FuroCheckbox/FuroCheckbox.vue.d.ts +87 -0
  173. package/types/generated/components/atoms/FuroCheckbox/FuroCheckboxContext.d.ts +342 -0
  174. package/types/generated/components/atoms/FuroEmailField/EmailFieldEmitPayload.d.ts +46 -0
  175. package/types/generated/components/atoms/FuroEmailField/FuroEmailField.vue.d.ts +458 -0
  176. package/types/generated/components/atoms/FuroEmailField/FuroEmailFieldContext.d.ts +161 -0
  177. package/types/generated/components/atoms/FuroFileField/FileFieldEmitPayload.d.ts +46 -0
  178. package/types/generated/components/atoms/FuroFileField/FuroFileField.vue.d.ts +454 -0
  179. package/types/generated/components/atoms/FuroFileField/FuroFileFieldContext.d.ts +109 -0
  180. package/types/generated/components/atoms/FuroIcon/FuroIcon.vue.d.ts +14 -0
  181. package/types/generated/components/atoms/FuroIcon/FuroIconContext.d.ts +152 -0
  182. package/types/generated/components/atoms/FuroIcon/FuroIconRegistry.d.ts +457 -0
  183. package/types/generated/components/atoms/FuroIcon/FuroIconifyRendererContext.d.ts +65 -0
  184. package/types/generated/components/atoms/FuroIcon/furoIconData.d.ts +154 -0
  185. package/types/generated/components/atoms/FuroIcon/iconRenderers.d.ts +6 -0
  186. package/types/generated/components/atoms/FuroIcon/icons.d.ts +6 -0
  187. package/types/generated/components/atoms/FuroNumberField/FuroNumberField.vue.d.ts +500 -0
  188. package/types/generated/components/atoms/FuroNumberField/FuroNumberFieldContext.d.ts +243 -0
  189. package/types/generated/components/atoms/FuroNumberField/NumberFieldEmitPayload.d.ts +74 -0
  190. package/types/generated/components/atoms/FuroPasswordField/FuroPasswordField.vue.d.ts +458 -0
  191. package/types/generated/components/atoms/FuroPasswordField/FuroPasswordFieldContext.d.ts +161 -0
  192. package/types/generated/components/atoms/FuroPasswordField/PasswordFieldEmitPayload.d.ts +46 -0
  193. package/types/generated/components/atoms/FuroRadio/FuroRadio.vue.d.ts +96 -0
  194. package/types/generated/components/atoms/FuroRadio/FuroRadioContext.d.ts +290 -0
  195. package/types/generated/components/atoms/FuroRadio/RadioEmitPayload.d.ts +39 -0
  196. package/types/generated/components/atoms/FuroSwitch/FuroSwitch.vue.d.ts +74 -0
  197. package/types/generated/components/atoms/FuroSwitch/FuroSwitchContext.d.ts +218 -0
  198. package/types/generated/components/atoms/FuroSwitch/SwitchEmitPayload.d.ts +42 -0
  199. package/types/generated/components/atoms/FuroTextField/FuroTextField.vue.d.ts +458 -0
  200. package/types/generated/components/atoms/FuroTextField/FuroTextFieldContext.d.ts +161 -0
  201. package/types/generated/components/atoms/FuroTextField/TextFieldEmitPayload.d.ts +52 -0
  202. package/types/generated/components/atoms/FuroTextarea/FuroTextarea.vue.d.ts +422 -0
  203. package/types/generated/components/atoms/FuroTextarea/FuroTextareaContext.d.ts +161 -0
  204. package/types/generated/components/atoms/FuroTextarea/TextareaEmitPayload.d.ts +52 -0
  205. package/types/generated/components/atoms/FuroToggle/FuroToggle.vue.d.ts +51 -0
  206. package/types/generated/components/atoms/FuroToggle/FuroToggleContext.d.ts +191 -0
  207. package/types/generated/components/atoms/FuroToggle/ToggleEmitPayload.d.ts +42 -0
  208. package/types/generated/components/molecules/FuroAccordion/AccordionEmitPayload.d.ts +41 -0
  209. package/types/generated/components/molecules/FuroAccordion/FuroAccordion.vue.d.ts +133 -0
  210. package/types/generated/components/molecules/FuroAccordion/FuroAccordionContext.d.ts +279 -0
  211. package/types/generated/components/molecules/FuroAttachment/FuroAttachment.vue.d.ts +79 -0
  212. package/types/generated/components/molecules/FuroAttachment/FuroAttachmentContext.d.ts +363 -0
  213. package/types/generated/components/molecules/FuroAutocompleteField/AutocompleteEmitPayload.d.ts +129 -0
  214. package/types/generated/components/molecules/FuroAutocompleteField/FuroAutocompleteField.vue.d.ts +751 -0
  215. package/types/generated/components/molecules/FuroAutocompleteField/FuroAutocompleteFieldContext.d.ts +722 -0
  216. package/types/generated/components/molecules/FuroAvatarGroup/FuroAvatarGroup.vue.d.ts +84 -0
  217. package/types/generated/components/molecules/FuroAvatarGroup/FuroAvatarGroupContext.d.ts +150 -0
  218. package/types/generated/components/molecules/FuroBreadcrumb/FuroBreadcrumb.vue.d.ts +24 -0
  219. package/types/generated/components/molecules/FuroBreadcrumb/FuroBreadcrumbContext.d.ts +152 -0
  220. package/types/generated/components/molecules/FuroCollapsible/CollapsibleEmitPayload.d.ts +36 -0
  221. package/types/generated/components/molecules/FuroCollapsible/FuroCollapsible.vue.d.ts +98 -0
  222. package/types/generated/components/molecules/FuroCollapsible/FuroCollapsibleContext.d.ts +191 -0
  223. package/types/generated/components/molecules/FuroControlBlock/FuroControlBlock.vue.d.ts +30 -0
  224. package/types/generated/components/molecules/FuroControlBlock/FuroControlBlockContext.d.ts +57 -0
  225. package/types/generated/components/molecules/FuroDatePicker/DatePickerEmitPayload.d.ts +41 -0
  226. package/types/generated/components/molecules/FuroDatePicker/FuroDatePicker.vue.d.ts +456 -0
  227. package/types/generated/components/molecules/FuroDatePicker/FuroDatePickerContext.d.ts +516 -0
  228. package/types/generated/components/molecules/FuroDateTimePicker/DateTimePickerEmitPayload.d.ts +55 -0
  229. package/types/generated/components/molecules/FuroDateTimePicker/FuroDateTimePicker.vue.d.ts +1365 -0
  230. package/types/generated/components/molecules/FuroDateTimePicker/FuroDateTimePickerContext.d.ts +435 -0
  231. package/types/generated/components/molecules/FuroDropdownMenu/DropdownMenuOptionSelectEmitPayload.d.ts +48 -0
  232. package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenu.vue.d.ts +773 -0
  233. package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenuContext.d.ts +380 -0
  234. package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenuOptionRows.vue.d.ts +261 -0
  235. package/types/generated/components/molecules/FuroEditableField/EditableEmitPayload.d.ts +39 -0
  236. package/types/generated/components/molecules/FuroEditableField/FuroEditableField.vue.d.ts +646 -0
  237. package/types/generated/components/molecules/FuroEditableField/FuroEditableFieldContext.d.ts +477 -0
  238. package/types/generated/components/molecules/FuroEditableField/processors/EditorCollisionProcessor.d.ts +121 -0
  239. package/types/generated/components/molecules/FuroEditableField/processors/ObjectProcessor.d.ts +45 -0
  240. package/types/generated/components/molecules/FuroEmptyState/FuroEmptyState.vue.d.ts +21 -0
  241. package/types/generated/components/molecules/FuroEmptyState/FuroEmptyStateContext.d.ts +32 -0
  242. package/types/generated/components/molecules/FuroErrorState/FuroErrorState.vue.d.ts +21 -0
  243. package/types/generated/components/molecules/FuroErrorState/FuroErrorStateContext.d.ts +32 -0
  244. package/types/generated/components/molecules/FuroPagination/FuroPagination.vue.d.ts +534 -0
  245. package/types/generated/components/molecules/FuroPagination/FuroPaginationContext.d.ts +271 -0
  246. package/types/generated/components/molecules/FuroPopover/FuroPopover.vue.d.ts +513 -0
  247. package/types/generated/components/molecules/FuroPopover/FuroPopoverContext.d.ts +160 -0
  248. package/types/generated/components/molecules/FuroScrollArea/FuroScrollArea.vue.d.ts +124 -0
  249. package/types/generated/components/molecules/FuroScrollArea/FuroScrollAreaContext.d.ts +86 -0
  250. package/types/generated/components/molecules/FuroSearchField/FuroSearchField.vue.d.ts +487 -0
  251. package/types/generated/components/molecules/FuroSearchField/FuroSearchFieldContext.d.ts +137 -0
  252. package/types/generated/components/molecules/FuroSectionHeader/FuroSectionHeader.vue.d.ts +49 -0
  253. package/types/generated/components/molecules/FuroSectionHeader/FuroSectionHeaderContext.d.ts +121 -0
  254. package/types/generated/components/molecules/FuroSelect/FuroSelect.vue.d.ts +719 -0
  255. package/types/generated/components/molecules/FuroSelect/FuroSelectContext.d.ts +402 -0
  256. package/types/generated/components/molecules/FuroSelect/SelectEmitPayload.d.ts +102 -0
  257. package/types/generated/components/molecules/FuroSeparator/FuroSeparator.vue.d.ts +39 -0
  258. package/types/generated/components/molecules/FuroSeparator/FuroSeparatorContext.d.ts +31 -0
  259. package/types/generated/components/molecules/FuroSkeleton/FuroSkeleton.vue.d.ts +27 -0
  260. package/types/generated/components/molecules/FuroSkeleton/FuroSkeletonContext.d.ts +61 -0
  261. package/types/generated/components/molecules/FuroSplitter/FuroSplitter.vue.d.ts +139 -0
  262. package/types/generated/components/molecules/FuroSplitter/FuroSplitterContext.d.ts +226 -0
  263. package/types/generated/components/molecules/FuroSplitter/SplitterEmitPayload.d.ts +41 -0
  264. package/types/generated/components/molecules/FuroTimeField/FuroTimeField.vue.d.ts +498 -0
  265. package/types/generated/components/molecules/FuroTimeField/FuroTimeFieldContext.d.ts +555 -0
  266. package/types/generated/components/molecules/FuroTimeField/TimeFieldEmitPayload.d.ts +41 -0
  267. package/types/generated/components/molecules/FuroToggleGroup/FuroToggleGroup.vue.d.ts +70 -0
  268. package/types/generated/components/molecules/FuroToggleGroup/FuroToggleGroupContext.d.ts +270 -0
  269. package/types/generated/components/molecules/FuroToggleGroup/ToggleGroupEmitPayload.d.ts +41 -0
  270. package/types/generated/components/molecules/FuroToolBar/FuroToolBar.vue.d.ts +30 -0
  271. package/types/generated/components/molecules/FuroToolBar/FuroToolBarContext.d.ts +48 -0
  272. package/types/generated/components/molecules/FuroTooltip/FuroTooltip.vue.d.ts +524 -0
  273. package/types/generated/components/molecules/FuroTooltip/FuroTooltipContext.d.ts +166 -0
  274. package/types/generated/components/organisms/FuroAlertDialog/FuroAlertDialog.vue.d.ts +651 -0
  275. package/types/generated/components/organisms/FuroAlertDialog/FuroAlertDialogContext.d.ts +299 -0
  276. package/types/generated/components/organisms/FuroDialog/FuroDialog.vue.d.ts +583 -0
  277. package/types/generated/components/organisms/FuroDialog/FuroDialogContext.d.ts +264 -0
  278. package/types/generated/components/organisms/FuroDrawer/FuroDrawer.vue.d.ts +635 -0
  279. package/types/generated/components/organisms/FuroDrawer/FuroDrawerContext.d.ts +347 -0
  280. package/types/generated/components/organisms/FuroEditor/FuroEditor.vue.d.ts +2487 -0
  281. package/types/generated/components/organisms/FuroEditor/FuroEditorCommandContext.d.ts +192 -0
  282. package/types/generated/components/organisms/FuroEditor/FuroEditorContext.d.ts +904 -0
  283. package/types/generated/components/organisms/FuroEditor/FuroEditorMentionMenu.vue.d.ts +43 -0
  284. package/types/generated/components/organisms/FuroEditor/FuroEditorMentionMenuContext.d.ts +159 -0
  285. package/types/generated/components/organisms/FuroEditor/PreserveNewlinesPasteExtension.d.ts +43 -0
  286. package/types/generated/components/organisms/FuroEditor/build-editor-extensions.d.ts +22 -0
  287. package/types/generated/components/organisms/FuroEditor/mention-suggestion.d.ts +25 -0
  288. package/types/generated/components/organisms/FuroEditor/paste-link-segments.d.ts +31 -0
  289. package/types/generated/components/organisms/FuroSidebar/FuroSidebar.vue.d.ts +898 -0
  290. package/types/generated/components/organisms/FuroSidebar/FuroSidebarContext.d.ts +596 -0
  291. package/types/generated/components/organisms/FuroStepper/FuroStepper.vue.d.ts +589 -0
  292. package/types/generated/components/organisms/FuroStepper/FuroStepperContext.d.ts +266 -0
  293. package/types/generated/components/organisms/FuroTable/FuroTable.vue.d.ts +528 -0
  294. package/types/generated/components/organisms/FuroTable/FuroTableContext.d.ts +1035 -0
  295. package/types/generated/components/organisms/FuroTable/FuroTableRowItemContext.d.ts +62 -0
  296. package/types/generated/components/organisms/FuroTabs/FuroTabs.vue.d.ts +515 -0
  297. package/types/generated/components/organisms/FuroTabs/FuroTabsContext.d.ts +438 -0
  298. package/types/generated/components/organisms/FuroToast/FuroToast.vue.d.ts +725 -0
  299. package/types/generated/components/organisms/FuroToast/FuroToastContext.d.ts +543 -0
  300. package/types/generated/components/organisms/FuroToast/FuroToaster.vue.d.ts +729 -0
  301. package/types/generated/components/organisms/FuroToast/FuroToasterContext.d.ts +62 -0
  302. package/types/generated/components/organisms/FuroToast/ToastQueue.d.ts +201 -0
  303. package/types/generated/components/organisms/FuroToast/toast.d.ts +23 -0
  304. package/types/generated/contexts/BaseFuroContext.d.ts +207 -0
  305. package/types/generated/contexts/BaseFuroContextAccessor.d.ts +28 -0
  306. package/types/generated/emit-payload/BaseEmitPayload.d.ts +62 -0
  307. package/types/generated/index.components.d.ts +50 -0
  308. package/types/generated/index.core.d.ts +6 -0
  309. package/types/generated/tools/TimerClerk.d.ts +50 -0
  310. 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
+ */