@pgcorp/ui-kit 0.10.0 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -2
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/assets/diff.worker-Da8jAqQb.js +2 -0
- package/dist/assets/src/components/layout/SDockRegion.vue_vue_type_style_index_0_scoped_2932631d_lang.css +1 -0
- package/dist/assets/src/components/layout/SResizeHandle.vue_vue_type_style_index_0_scoped_90cc655e_lang.css +1 -0
- package/dist/assets/src/components/layout/SStack.css_vue_type_style_index_0_src_7da6a319_scoped_7da6a319_lang.css +2 -0
- package/dist/assets/src/components/layout/SStatusBarShell.css_vue_type_style_index_0_src_27a8f1b6_scoped_27a8f1b6_lang.css +2 -0
- package/dist/assets/src/components/layout/SWorkbenchLayout.vue_vue_type_style_index_0_scoped_3853dbfb_lang.css +2 -0
- package/dist/assets/src/components/layout/SWorkbenchPanelShell.css_vue_type_style_index_0_src_1030a231_scoped_1030a231_lang.css +2 -0
- package/dist/assets/src/components/layout/_internal/SAppBrand.css_vue_type_style_index_0_src_51a58c3e_scoped_51a58c3e_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/SDialogSurface.css_vue_type_style_index_0_src_979bf586_scoped_979bf586_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/SDisclosureSummary.css_vue_type_style_index_0_src_056eb42e_scoped_056eb42e_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/SHeaderSurface.css_vue_type_style_index_0_src_3beb2aed_scoped_3beb2aed_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/SListboxGroup.css_vue_type_style_index_0_src_518787d3_scoped_518787d3_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/SMenuItem.css_vue_type_style_index_0_src_e5bd192e_scoped_e5bd192e_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/SMenuLayer.css_vue_type_style_index_0_src_4913bbe1_scoped_4913bbe1_lang.css +1 -0
- package/dist/assets/src/components/shared/_internal/SMenuSeparator.css_vue_type_style_index_0_src_81ba0159_scoped_81ba0159_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/SToastItem.css_vue_type_style_index_0_src_cfab96d6_scoped_cfab96d6_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/STreeNode.vue_vue_type_style_index_0_lang.css +2 -0
- package/dist/assets/src/components/shared/complex/SKanbanCard.css_vue_type_style_index_0_src_d8c46c53_scoped_d8c46c53_lang.css +2 -0
- package/dist/assets/src/components/shared/complex/STree.css_vue_type_style_index_0_src_true_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SCloudChrome.css_vue_type_style_index_0_src_true_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SCloudChromeEmpty.css_vue_type_style_index_0_src_true_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SCloudChromeRow.css_vue_type_style_index_0_src_true_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SCollapsiblePanel.css_vue_type_style_index_0_src_4882f962_scoped_4882f962_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_d0cace23_scoped_d0cace23_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SFormGrid.css_vue_type_style_index_0_src_80a60d65_scoped_80a60d65_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SFormGridItem.css_vue_type_style_index_0_src_1982571a_scoped_1982571a_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SLeftSidebar.vue_vue_type_style_index_0_scoped_06cec9a1_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SModal.css_vue_type_style_index_0_src_dc3c799e_scoped_dc3c799e_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SPanel.css_vue_type_style_index_0_src_c0e5420c_scoped_c0e5420c_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SPopover.css_vue_type_style_index_0_src_deded766_scoped_deded766_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SSidebarGroup.css_vue_type_style_index_0_src_3e8bc2d7_scoped_3e8bc2d7_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SSidebarSection.css_vue_type_style_index_0_src_96f51ac6_scoped_96f51ac6_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SButton.css_vue_type_style_index_0_src_52ad38b1_scoped_52ad38b1_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SCheckbox.css_vue_type_style_index_0_src_b20b27dd_scoped_b20b27dd_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SChoiceCards.css_vue_type_style_index_0_src_627a8628_scoped_627a8628_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SCombobox.css_vue_type_style_index_0_src_e3b4f580_scoped_e3b4f580_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SComboboxTrigger.css_vue_type_style_index_0_src_e453a3fa_scoped_e453a3fa_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SContextMenu.css_vue_type_style_index_0_src_00c91d39_scoped_00c91d39_lang.css +1 -0
- package/dist/assets/src/components/shared/controls/SDropdownMenu.css_vue_type_style_index_0_src_b854a89e_scoped_b854a89e_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SField.css_vue_type_style_index_0_src_60628f96_scoped_60628f96_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SFieldGroup.css_vue_type_style_index_0_src_fc781c88_scoped_fc781c88_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SFieldLabel.css_vue_type_style_index_0_src_80025f86_scoped_80025f86_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SInlineTokenEditor.css_vue_type_style_index_0_src_aec1b353_scoped_aec1b353_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SInputText.css_vue_type_style_index_0_src_6d42d245_scoped_6d42d245_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SInteractiveSurface.css_vue_type_style_index_0_src_998940dd_scoped_998940dd_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SLink.css_vue_type_style_index_0_src_c7ae14e1_scoped_c7ae14e1_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SListbox.css_vue_type_style_index_0_src_24db4abb_scoped_24db4abb_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SListboxOption.css_vue_type_style_index_0_src_77c399b4_scoped_77c399b4_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SMarker.css_vue_type_style_index_0_src_086bcc16_scoped_086bcc16_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SMenuSurface.css_vue_type_style_index_0_src_bc7c7be4_scoped_bc7c7be4_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SRange.css_vue_type_style_index_0_src_343bbcc6_scoped_343bbcc6_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SSegmentedControl.css_vue_type_style_index_0_src_8bf7785a_scoped_8bf7785a_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SSelect.css_vue_type_style_index_0_src_441648c9_scoped_441648c9_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SSwitch.css_vue_type_style_index_0_src_7b4d74b5_scoped_7b4d74b5_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/STextarea.css_vue_type_style_index_0_src_true_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SActionCard.css_vue_type_style_index_0_src_9c1a2409_scoped_9c1a2409_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SActionList.css_vue_type_style_index_0_src_5d4ca97f_scoped_5d4ca97f_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SActionListItem.css_vue_type_style_index_0_src_f0c4206a_scoped_f0c4206a_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SChart.css_vue_type_style_index_0_src_47d0c0a8_scoped_47d0c0a8_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SChip.css_vue_type_style_index_0_src_66e478e7_scoped_66e478e7_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SCodeBlock.css_vue_type_style_index_0_src_78557968_scoped_78557968_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SCodeEditor.css_vue_type_style_index_0_src_124ca461_scoped_124ca461_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SCodeSearchPanel.vue_vue_type_style_index_0_scoped_8d12d958_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SCodeWorkspaceEditor.css_vue_type_style_index_0_src_b200dc8e_scoped_b200dc8e_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SControlledToastViewport.css_vue_type_style_index_0_src_5864b6c6_scoped_5864b6c6_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SDiffViewer.css_vue_type_style_index_0_src_2b041caf_scoped_2b041caf_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SDocBlock.css_vue_type_style_index_0_src_23049785_scoped_23049785_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SEmptyState.css_vue_type_style_index_0_src_40c7760e_scoped_40c7760e_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SExpandableText.vue_vue_type_style_index_0_scoped_01b69142_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SJsonTree.css_vue_type_style_index_0_src_54527df1_scoped_54527df1_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SKeyValueGrid.css_vue_type_style_index_0_src_c1fe7af7_scoped_c1fe7af7_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SLinkedSystemsList.vue_vue_type_style_index_0_scoped_3a9401da_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SMessage.css_vue_type_style_index_0_src_e6cc7503_scoped_e6cc7503_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SMetricCard.css_vue_type_style_index_0_src_9c6a4cbb_scoped_9c6a4cbb_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SProgressBar.css_vue_type_style_index_0_src_9308293a_scoped_9308293a_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SProgressIndicator.css_vue_type_style_index_0_src_c1a5f4c1_scoped_c1a5f4c1_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SRichDocument.css_vue_type_style_index_0_src_d1afafc5_scoped_d1afafc5_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SScrollViewport.css_vue_type_style_index_0_src_e5d11342_scoped_e5d11342_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SStatus.css_vue_type_style_index_0_src_c76fa058_scoped_c76fa058_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/STable.css_vue_type_style_index_0_src_9955d482_scoped_9955d482_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/STooltip.css_vue_type_style_index_0_src_true_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/STooltipAnchor.css_vue_type_style_index_0_src_17fadb8a_scoped_17fadb8a_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/STooltipTarget.css_vue_type_style_index_0_src_aabfbd84_scoped_aabfbd84_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SVirtualList.css_vue_type_style_index_0_src_1717877d_scoped_1717877d_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SCodeTokenLine.css_vue_type_style_index_0_src_4f4b5ce8_scoped_4f4b5ce8_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_195d5c06_scoped_195d5c06_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichDisclosure.css_vue_type_style_index_0_src_fa94e2ff_scoped_fa94e2ff_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichInlineNode.css_vue_type_style_index_0_src_20c8cc87_scoped_20c8cc87_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichMath.css_vue_type_style_index_0_src_true_lang.css +2 -0
- package/dist/assets/src/components/shared/database/SDataGrid.css_vue_type_style_index_0_src_09e3ea65_scoped_09e3ea65_lang.css +2 -0
- package/dist/assets/src/components/shared/feedback/SAsyncState.css_vue_type_style_index_0_src_bfc28903_scoped_bfc28903_lang.css +2 -0
- package/dist/assets/src/components/shared/graph/SGraphViewport.vue_vue_type_style_index_0_scoped_ef926337_lang.css +1 -0
- package/dist/assets/src/components/shared/navigation/SBottomNav.vue_vue_type_style_index_0_scoped_b3963080_lang.css +1 -0
- package/dist/assets/src/components/shared/navigation/SBreadcrumbs.css_vue_type_style_index_0_src_f836963c_scoped_f836963c_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/SCatalogNavigator.css_vue_type_style_index_0_src_f4ae099d_scoped_f4ae099d_lang.css +1 -0
- package/dist/assets/src/components/shared/navigation/STab.vue_vue_type_style_index_0_scoped_4a09da96_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/STabList.vue_vue_type_style_index_0_scoped_ec676576_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/STabPanel.vue_vue_type_style_index_0_scoped_0f372aeb_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/STabPanels.vue_vue_type_style_index_0_scoped_9afa936c_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/STabs.vue_vue_type_style_index_0_scoped_89861a98_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/SWizardSteps.css_vue_type_style_index_0_src_bfd8db0a_scoped_bfd8db0a_lang.css +1 -0
- package/dist/assets/src/components/shared/navigation/_internal/SCatalogNavigatorGroup.vue_vue_type_style_index_0_scoped_3145ab84_lang.css +2 -0
- package/dist/assets/src/components/shared/persona/SPersonaProjectPicker.css_vue_type_style_index_0_src_cf24edf0_scoped_cf24edf0_lang.css +2 -0
- package/dist/assets/src/components/shared/persona/SPersonaRunWorkbench.css_vue_type_style_index_0_src_bca49ddb_scoped_bca49ddb_lang.css +2 -0
- package/dist/assets/src/components/shared/persona/_internal/SPersonaRunConsole.css_vue_type_style_index_0_src_21bf807e_scoped_21bf807e_lang.css +2 -0
- package/dist/index.js +6 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.d.ts +243 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.js +7 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.d.ts +725 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.js +487 -0
- package/dist/src/components/icons/_internal/sputnigUiIconRuntime.d.ts +18 -0
- package/dist/src/components/icons/_internal/sputnigUiIconRuntime.js +99 -0
- package/dist/src/components/icons/sputnigUiIcons.d.ts +72 -0
- package/dist/src/components/icons/sputnigUiIcons.js +272 -0
- package/dist/src/components/layout/SAppShell.vue.d.ts +68 -0
- package/dist/src/components/layout/SAppShell.vue.js +5 -0
- package/dist/src/components/layout/SAppShell.vue_vue_type_script_setup_true_lang.js +166 -0
- package/dist/src/components/layout/SDockRegion.vue.d.ts +50 -0
- package/dist/src/components/layout/SDockRegion.vue.js +8 -0
- package/dist/src/components/layout/SDockRegion.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/src/components/layout/SResizeHandle.vue.d.ts +43 -0
- package/dist/src/components/layout/SResizeHandle.vue.js +8 -0
- package/dist/src/components/layout/SResizeHandle.vue_vue_type_script_setup_true_lang.js +175 -0
- package/dist/src/components/layout/SSideMenuButton.vue.d.ts +37 -0
- package/dist/src/components/layout/SSideMenuButton.vue.js +5 -0
- package/dist/src/components/layout/SSideMenuButton.vue_vue_type_script_setup_true_lang.js +91 -0
- package/dist/src/components/layout/SSideMenuRail.vue.d.ts +22 -0
- package/dist/src/components/layout/SSideMenuRail.vue.js +5 -0
- package/dist/src/components/layout/SSideMenuRail.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/src/components/layout/SStack.vue.d.ts +44 -0
- package/dist/src/components/layout/SStack.vue.js +8 -0
- package/dist/src/components/layout/SStack.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/src/components/layout/SStatusBarShell.vue.d.ts +17 -0
- package/dist/src/components/layout/SStatusBarShell.vue.js +8 -0
- package/dist/src/components/layout/SStatusBarShell.vue_vue_type_script_setup_true_lang.js +20 -0
- package/dist/src/components/layout/SWorkbenchLayout.vue.d.ts +30 -0
- package/dist/src/components/layout/SWorkbenchLayout.vue.js +8 -0
- package/dist/src/components/layout/SWorkbenchLayout.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/src/components/layout/SWorkbenchPanelShell.vue.d.ts +62 -0
- package/dist/src/components/layout/SWorkbenchPanelShell.vue.js +8 -0
- package/dist/src/components/layout/SWorkbenchPanelShell.vue_vue_type_script_setup_true_lang.js +200 -0
- package/dist/src/components/layout/_internal/SAppBrand.vue.d.ts +29 -0
- package/dist/src/components/layout/_internal/SAppBrand.vue.js +5 -0
- package/dist/src/components/layout/_internal/SAppBrand.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/src/components/layout/_internal/SAppBrandContent.vue.d.ts +26 -0
- package/dist/src/components/layout/_internal/SAppBrandContent.vue.js +8 -0
- package/dist/src/components/layout/_internal/SAppBrandContent.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/src/components/layout/types.d.ts +29 -0
- package/dist/src/components/layout/types.js +0 -0
- package/dist/src/components/shared/_internal/SDialogSurface.vue.d.ts +35 -0
- package/dist/src/components/shared/_internal/SDialogSurface.vue.js +8 -0
- package/dist/src/components/shared/_internal/SDialogSurface.vue_vue_type_script_setup_true_lang.js +89 -0
- package/dist/src/components/shared/_internal/SDisclosureSummary.vue.d.ts +20 -0
- package/dist/src/components/shared/_internal/SDisclosureSummary.vue.js +8 -0
- package/dist/src/components/shared/_internal/SDisclosureSummary.vue_vue_type_script_setup_true_lang.js +97 -0
- package/dist/src/components/shared/_internal/SHeaderSurface.vue.d.ts +43 -0
- package/dist/src/components/shared/_internal/SHeaderSurface.vue.js +8 -0
- package/dist/src/components/shared/_internal/SHeaderSurface.vue_vue_type_script_setup_true_lang.js +80 -0
- package/dist/src/components/shared/_internal/SListboxGroup.vue.d.ts +20 -0
- package/dist/src/components/shared/_internal/SListboxGroup.vue.js +8 -0
- package/dist/src/components/shared/_internal/SListboxGroup.vue_vue_type_script_setup_true_lang.js +26 -0
- package/dist/src/components/shared/_internal/SMenuItem.vue.d.ts +18 -0
- package/dist/src/components/shared/_internal/SMenuItem.vue.js +8 -0
- package/dist/src/components/shared/_internal/SMenuItem.vue_vue_type_script_setup_true_lang.js +218 -0
- package/dist/src/components/shared/_internal/SMenuLayer.vue.d.ts +24 -0
- package/dist/src/components/shared/_internal/SMenuLayer.vue.js +8 -0
- package/dist/src/components/shared/_internal/SMenuLayer.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/src/components/shared/_internal/SMenuSeparator.vue.d.ts +6 -0
- package/dist/src/components/shared/_internal/SMenuSeparator.vue.js +8 -0
- package/dist/src/components/shared/_internal/SMenuSeparator.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/src/components/shared/_internal/SToastItem.vue.d.ts +26 -0
- package/dist/src/components/shared/_internal/SToastItem.vue.js +8 -0
- package/dist/src/components/shared/_internal/SToastItem.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/src/components/shared/_internal/STreeNode.vue.d.ts +31 -0
- package/dist/src/components/shared/_internal/STreeNode.vue.js +7 -0
- package/dist/src/components/shared/_internal/STreeNode.vue_vue_type_script_setup_true_lang.js +410 -0
- package/dist/src/components/shared/_internal/dialogSurface.d.ts +29 -0
- package/dist/src/components/shared/_internal/dialogSurface.js +52 -0
- package/dist/src/components/shared/_internal/focusTrap.d.ts +2 -0
- package/dist/src/components/shared/_internal/focusTrap.js +20 -0
- package/dist/src/components/shared/_internal/listboxContext.d.ts +13 -0
- package/dist/src/components/shared/_internal/listboxContext.js +4 -0
- package/dist/src/components/shared/_internal/markerContract.d.ts +12 -0
- package/dist/src/components/shared/_internal/markerContract.js +28 -0
- package/dist/src/components/shared/_internal/menuContext.d.ts +19 -0
- package/dist/src/components/shared/_internal/menuContext.js +4 -0
- package/dist/src/components/shared/_internal/selectionContract.d.ts +53 -0
- package/dist/src/components/shared/_internal/selectionContract.js +138 -0
- package/dist/src/components/shared/_internal/sidebarGroupContext.d.ts +27 -0
- package/dist/src/components/shared/_internal/sidebarGroupContext.js +4 -0
- package/dist/src/components/shared/_internal/tabsContext.d.ts +51 -0
- package/dist/src/components/shared/_internal/tabsContext.js +4 -0
- package/dist/src/components/shared/_internal/treeRuntime.d.ts +68 -0
- package/dist/src/components/shared/_internal/treeRuntime.js +81 -0
- package/dist/src/components/shared/_internal/useRadioGroup.d.ts +32 -0
- package/dist/src/components/shared/_internal/useRadioGroup.js +48 -0
- package/dist/src/components/shared/_internal/useSelectionRoving.d.ts +36 -0
- package/dist/src/components/shared/_internal/useSelectionRoving.js +58 -0
- package/dist/src/components/shared/codeLanguages.d.ts +5 -0
- package/dist/src/components/shared/codeLanguages.js +42 -0
- package/dist/src/components/shared/complex/SKanbanCard.vue.d.ts +42 -0
- package/dist/src/components/shared/complex/SKanbanCard.vue.js +8 -0
- package/dist/src/components/shared/complex/SKanbanCard.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/src/components/shared/complex/SKanbanLane.vue.d.ts +38 -0
- package/dist/src/components/shared/complex/SKanbanLane.vue.js +5 -0
- package/dist/src/components/shared/complex/SKanbanLane.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/src/components/shared/complex/STree.vue.d.ts +45 -0
- package/dist/src/components/shared/complex/STree.vue.js +7 -0
- package/dist/src/components/shared/complex/STree.vue_vue_type_script_setup_true_lang.js +223 -0
- package/dist/src/components/shared/complex/treeAdapter.d.ts +16 -0
- package/dist/src/components/shared/complex/treeAdapter.js +100 -0
- package/{src/components/shared/complex/types.ts → dist/src/components/shared/complex/types.d.ts} +47 -59
- package/dist/src/components/shared/complex/types.js +0 -0
- package/dist/src/components/shared/containers/SCloudChrome.vue.d.ts +44 -0
- package/dist/src/components/shared/containers/SCloudChrome.vue.js +7 -0
- package/dist/src/components/shared/containers/SCloudChrome.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/src/components/shared/containers/SCloudChromeEmpty.vue.d.ts +13 -0
- package/dist/src/components/shared/containers/SCloudChromeEmpty.vue.js +7 -0
- package/dist/src/components/shared/containers/SCloudChromeEmpty.vue_vue_type_script_setup_true_lang.js +23 -0
- package/dist/src/components/shared/containers/SCloudChromeRow.vue.d.ts +49 -0
- package/dist/src/components/shared/containers/SCloudChromeRow.vue.js +7 -0
- package/dist/src/components/shared/containers/SCloudChromeRow.vue_vue_type_script_setup_true_lang.js +126 -0
- package/dist/src/components/shared/containers/SCollapsiblePanel.vue.d.ts +56 -0
- package/dist/src/components/shared/containers/SCollapsiblePanel.vue.js +8 -0
- package/dist/src/components/shared/containers/SCollapsiblePanel.vue_vue_type_script_setup_true_lang.js +214 -0
- package/dist/src/components/shared/containers/SDrawer.vue.d.ts +44 -0
- package/dist/src/components/shared/containers/SDrawer.vue.js +8 -0
- package/dist/src/components/shared/containers/SDrawer.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/src/components/shared/containers/SFormGrid.vue.d.ts +30 -0
- package/dist/src/components/shared/containers/SFormGrid.vue.js +8 -0
- package/dist/src/components/shared/containers/SFormGrid.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/src/components/shared/containers/SFormGridItem.vue.d.ts +21 -0
- package/dist/src/components/shared/containers/SFormGridItem.vue.js +8 -0
- package/dist/src/components/shared/containers/SFormGridItem.vue_vue_type_script_setup_true_lang.js +20 -0
- package/dist/src/components/shared/containers/SLeftSidebar.vue.d.ts +39 -0
- package/dist/src/components/shared/containers/SLeftSidebar.vue.js +8 -0
- package/dist/src/components/shared/containers/SLeftSidebar.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/src/components/shared/containers/SModal.vue.d.ts +57 -0
- package/dist/src/components/shared/containers/SModal.vue.js +8 -0
- package/dist/src/components/shared/containers/SModal.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/src/components/shared/containers/SPageHeader.vue.d.ts +31 -0
- package/dist/src/components/shared/containers/SPageHeader.vue.js +5 -0
- package/dist/src/components/shared/containers/SPageHeader.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/src/components/shared/containers/SPanel.vue.d.ts +77 -0
- package/dist/src/components/shared/containers/SPanel.vue.js +8 -0
- package/dist/src/components/shared/containers/SPanel.vue_vue_type_script_setup_true_lang.js +149 -0
- package/dist/src/components/shared/containers/SPopover.vue.d.ts +68 -0
- package/dist/src/components/shared/containers/SPopover.vue.js +8 -0
- package/dist/src/components/shared/containers/SPopover.vue_vue_type_script_setup_true_lang.js +326 -0
- package/dist/src/components/shared/containers/SSidebarGroup.vue.d.ts +23 -0
- package/dist/src/components/shared/containers/SSidebarGroup.vue.js +8 -0
- package/dist/src/components/shared/containers/SSidebarGroup.vue_vue_type_script_setup_true_lang.js +272 -0
- package/dist/src/components/shared/containers/SSidebarSection.vue.d.ts +35 -0
- package/dist/src/components/shared/containers/SSidebarSection.vue.js +8 -0
- package/dist/src/components/shared/containers/SSidebarSection.vue_vue_type_script_setup_true_lang.js +181 -0
- package/dist/src/components/shared/containers/SUiKitLocaleProvider.vue.d.ts +19 -0
- package/dist/src/components/shared/containers/SUiKitLocaleProvider.vue.js +5 -0
- package/dist/src/components/shared/containers/SUiKitLocaleProvider.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/src/components/shared/containers/disclosureSummary.d.ts +41 -0
- package/dist/src/components/shared/containers/disclosureSummary.js +0 -0
- package/{src/components/shared/containers/popover.ts → dist/src/components/shared/containers/popover.d.ts} +19 -30
- package/dist/src/components/shared/containers/popover.js +0 -0
- package/dist/src/components/shared/containers/sidebar.d.ts +47 -0
- package/dist/src/components/shared/containers/sidebar.js +65 -0
- package/dist/src/components/shared/controls/SButton.vue.d.ts +102 -0
- package/dist/src/components/shared/controls/SButton.vue.js +8 -0
- package/dist/src/components/shared/controls/SButton.vue_vue_type_script_setup_true_lang.js +262 -0
- package/dist/src/components/shared/controls/SCheckbox.vue.d.ts +31 -0
- package/dist/src/components/shared/controls/SCheckbox.vue.js +8 -0
- package/dist/src/components/shared/controls/SCheckbox.vue_vue_type_script_setup_true_lang.js +105 -0
- package/dist/src/components/shared/controls/SCheckboxGroup.vue.d.ts +42 -0
- package/dist/src/components/shared/controls/SCheckboxGroup.vue.js +5 -0
- package/dist/src/components/shared/controls/SCheckboxGroup.vue_vue_type_script_setup_true_lang.js +119 -0
- package/dist/src/components/shared/controls/SChoiceCards.vue.d.ts +52 -0
- package/dist/src/components/shared/controls/SChoiceCards.vue.js +8 -0
- package/dist/src/components/shared/controls/SChoiceCards.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/src/components/shared/controls/SColorSelect.vue.d.ts +50 -0
- package/dist/src/components/shared/controls/SColorSelect.vue.js +5 -0
- package/dist/src/components/shared/controls/SColorSelect.vue_vue_type_script_setup_true_lang.js +90 -0
- package/dist/src/components/shared/controls/SCombobox.vue.d.ts +54 -0
- package/dist/src/components/shared/controls/SCombobox.vue.js +8 -0
- package/dist/src/components/shared/controls/SCombobox.vue_vue_type_script_setup_true_lang.js +268 -0
- package/dist/src/components/shared/controls/SComboboxTrigger.vue.d.ts +49 -0
- package/dist/src/components/shared/controls/SComboboxTrigger.vue.js +8 -0
- package/dist/src/components/shared/controls/SComboboxTrigger.vue_vue_type_script_setup_true_lang.js +153 -0
- package/dist/src/components/shared/controls/SContextMenu.vue.d.ts +42 -0
- package/dist/src/components/shared/controls/SContextMenu.vue.js +8 -0
- package/dist/src/components/shared/controls/SContextMenu.vue_vue_type_script_setup_true_lang.js +129 -0
- package/dist/src/components/shared/controls/SContextToggleButton.vue.d.ts +22 -0
- package/dist/src/components/shared/controls/SContextToggleButton.vue.js +5 -0
- package/dist/src/components/shared/controls/SContextToggleButton.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/src/components/shared/controls/SDragHandle.vue.d.ts +26 -0
- package/dist/src/components/shared/controls/SDragHandle.vue.js +5 -0
- package/dist/src/components/shared/controls/SDragHandle.vue_vue_type_script_setup_true_lang.js +90 -0
- package/dist/src/components/shared/controls/SDropdownMenu.vue.d.ts +38 -0
- package/dist/src/components/shared/controls/SDropdownMenu.vue.js +8 -0
- package/dist/src/components/shared/controls/SDropdownMenu.vue_vue_type_script_setup_true_lang.js +128 -0
- package/dist/src/components/shared/controls/SField.vue.d.ts +53 -0
- package/dist/src/components/shared/controls/SField.vue.js +8 -0
- package/dist/src/components/shared/controls/SField.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/src/components/shared/controls/SFieldGroup.vue.d.ts +53 -0
- package/dist/src/components/shared/controls/SFieldGroup.vue.js +8 -0
- package/dist/src/components/shared/controls/SFieldGroup.vue_vue_type_script_setup_true_lang.js +102 -0
- package/dist/src/components/shared/controls/SFieldLabel.vue.d.ts +35 -0
- package/dist/src/components/shared/controls/SFieldLabel.vue.js +8 -0
- package/dist/src/components/shared/controls/SFieldLabel.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/src/components/shared/controls/SInlineTokenEditor.vue.d.ts +80 -0
- package/dist/src/components/shared/controls/SInlineTokenEditor.vue.js +5 -0
- package/dist/src/components/shared/controls/SInlineTokenEditor.vue_vue_type_script_setup_true_lang.js +553 -0
- package/dist/src/components/shared/controls/SInputText.vue.d.ts +115 -0
- package/dist/src/components/shared/controls/SInputText.vue.js +8 -0
- package/dist/src/components/shared/controls/SInputText.vue_vue_type_script_setup_true_lang.js +318 -0
- package/dist/src/components/shared/controls/SInteractiveSurface.vue.d.ts +84 -0
- package/dist/src/components/shared/controls/SInteractiveSurface.vue.js +8 -0
- package/dist/src/components/shared/controls/SInteractiveSurface.vue_vue_type_script_setup_true_lang.js +239 -0
- package/{src/components/shared/controls/SLink.ts → dist/src/components/shared/controls/SLink.d.ts} +34 -48
- package/dist/src/components/shared/controls/SLink.js +9 -0
- package/dist/src/components/shared/controls/SLink.vue.d.ts +58 -0
- package/dist/src/components/shared/controls/SLink.vue.js +8 -0
- package/dist/src/components/shared/controls/SLink.vue_vue_type_script_setup_true_lang.js +110 -0
- package/dist/src/components/shared/controls/SListbox.vue.d.ts +77 -0
- package/dist/src/components/shared/controls/SListbox.vue.js +8 -0
- package/dist/src/components/shared/controls/SListbox.vue_vue_type_script_setup_true_lang.js +347 -0
- package/dist/src/components/shared/controls/SListboxOption.vue.d.ts +30 -0
- package/dist/src/components/shared/controls/SListboxOption.vue.js +8 -0
- package/dist/src/components/shared/controls/SListboxOption.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/src/components/shared/controls/SMarker.vue.d.ts +14 -0
- package/dist/src/components/shared/controls/SMarker.vue.js +9 -0
- package/dist/src/components/shared/controls/SMarker.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/src/components/shared/controls/SMenuSurface.vue.d.ts +38 -0
- package/dist/src/components/shared/controls/SMenuSurface.vue.js +8 -0
- package/dist/src/components/shared/controls/SMenuSurface.vue_vue_type_script_setup_true_lang.js +241 -0
- package/dist/src/components/shared/controls/SRange.vue.d.ts +32 -0
- package/dist/src/components/shared/controls/SRange.vue.js +8 -0
- package/dist/src/components/shared/controls/SRange.vue_vue_type_script_setup_true_lang.js +128 -0
- package/dist/src/components/shared/controls/SSegmentedControl.vue.d.ts +43 -0
- package/dist/src/components/shared/controls/SSegmentedControl.vue.js +8 -0
- package/dist/src/components/shared/controls/SSegmentedControl.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/src/components/shared/controls/SSelect.vue.d.ts +64 -0
- package/dist/src/components/shared/controls/SSelect.vue.js +8 -0
- package/dist/src/components/shared/controls/SSelect.vue_vue_type_script_setup_true_lang.js +241 -0
- package/dist/src/components/shared/controls/SSwitch.vue.d.ts +29 -0
- package/dist/src/components/shared/controls/SSwitch.vue.js +8 -0
- package/dist/src/components/shared/controls/SSwitch.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/src/components/shared/controls/STextarea.d.ts +1 -0
- package/dist/src/components/shared/controls/STextarea.js +0 -0
- package/dist/src/components/shared/controls/STextarea.vue.d.ts +121 -0
- package/dist/src/components/shared/controls/STextarea.vue.js +7 -0
- package/dist/src/components/shared/controls/STextarea.vue_vue_type_script_setup_true_lang.js +414 -0
- package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue.d.ts +199 -0
- package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue.js +8 -0
- package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue_vue_type_script_lang.js +195 -0
- package/dist/src/components/shared/controls/menu.d.ts +52 -0
- package/dist/src/components/shared/controls/menu.js +95 -0
- package/dist/src/components/shared/data-display/SActionCard.vue.d.ts +37 -0
- package/dist/src/components/shared/data-display/SActionCard.vue.js +8 -0
- package/dist/src/components/shared/data-display/SActionCard.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/src/components/shared/data-display/SActionList.vue.d.ts +22 -0
- package/dist/src/components/shared/data-display/SActionList.vue.js +8 -0
- package/dist/src/components/shared/data-display/SActionList.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/src/components/shared/data-display/SActionListItem.vue.d.ts +89 -0
- package/dist/src/components/shared/data-display/SActionListItem.vue.js +8 -0
- package/dist/src/components/shared/data-display/SActionListItem.vue_vue_type_script_setup_true_lang.js +194 -0
- package/dist/src/components/shared/data-display/SBadge.vue.d.ts +33 -0
- package/dist/src/components/shared/data-display/SBadge.vue.js +5 -0
- package/dist/src/components/shared/data-display/SBadge.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/src/components/shared/data-display/SChart.vue.d.ts +51 -0
- package/dist/src/components/shared/data-display/SChart.vue.js +8 -0
- package/dist/src/components/shared/data-display/SChart.vue_vue_type_script_setup_true_lang.js +443 -0
- package/dist/src/components/shared/data-display/SChip.vue.d.ts +33 -0
- package/dist/src/components/shared/data-display/SChip.vue.js +8 -0
- package/dist/src/components/shared/data-display/SChip.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/src/components/shared/data-display/SCodeBlock.vue.d.ts +50 -0
- package/dist/src/components/shared/data-display/SCodeBlock.vue.js +8 -0
- package/dist/src/components/shared/data-display/SCodeBlock.vue_vue_type_script_setup_true_lang.js +256 -0
- package/dist/src/components/shared/data-display/SCodeEditor.vue.d.ts +70 -0
- package/dist/src/components/shared/data-display/SCodeEditor.vue.js +8 -0
- package/dist/src/components/shared/data-display/SCodeEditor.vue_vue_type_script_setup_true_lang.js +248 -0
- package/dist/src/components/shared/data-display/SCodeSearchPanel.vue.d.ts +63 -0
- package/dist/src/components/shared/data-display/SCodeSearchPanel.vue.js +8 -0
- package/dist/src/components/shared/data-display/SCodeSearchPanel.vue_vue_type_script_setup_true_lang.js +263 -0
- package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue.d.ts +29 -0
- package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue.js +8 -0
- package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue_vue_type_script_setup_true_lang.js +231 -0
- package/dist/src/components/shared/data-display/SControlledToastViewport.vue.d.ts +29 -0
- package/dist/src/components/shared/data-display/SControlledToastViewport.vue.js +8 -0
- package/dist/src/components/shared/data-display/SControlledToastViewport.vue_vue_type_script_setup_true_lang.js +117 -0
- package/dist/src/components/shared/data-display/SCopyField.vue.d.ts +22 -0
- package/dist/src/components/shared/data-display/SCopyField.vue.js +5 -0
- package/dist/src/components/shared/data-display/SCopyField.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/src/components/shared/data-display/SDiffViewer.vue.d.ts +36 -0
- package/dist/src/components/shared/data-display/SDiffViewer.vue.js +8 -0
- package/dist/src/components/shared/data-display/SDiffViewer.vue_vue_type_script_setup_true_lang.js +372 -0
- package/dist/src/components/shared/data-display/SDocBlock.vue.d.ts +34 -0
- package/dist/src/components/shared/data-display/SDocBlock.vue.js +8 -0
- package/dist/src/components/shared/data-display/SDocBlock.vue_vue_type_script_setup_true_lang.js +252 -0
- package/dist/src/components/shared/data-display/SEmptyState.vue.d.ts +27 -0
- package/dist/src/components/shared/data-display/SEmptyState.vue.js +8 -0
- package/dist/src/components/shared/data-display/SEmptyState.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/src/components/shared/data-display/SExpandableText.vue.d.ts +42 -0
- package/dist/src/components/shared/data-display/SExpandableText.vue.js +8 -0
- package/dist/src/components/shared/data-display/SExpandableText.vue_vue_type_script_setup_true_lang.js +166 -0
- package/dist/src/components/shared/data-display/SJsonTree.vue.d.ts +15 -0
- package/dist/src/components/shared/data-display/SJsonTree.vue.js +8 -0
- package/dist/src/components/shared/data-display/SJsonTree.vue_vue_type_script_setup_true_lang.js +115 -0
- package/dist/src/components/shared/data-display/SKeyValueGrid.vue.d.ts +56 -0
- package/dist/src/components/shared/data-display/SKeyValueGrid.vue.js +8 -0
- package/dist/src/components/shared/data-display/SKeyValueGrid.vue_vue_type_script_setup_true_lang.js +121 -0
- package/dist/src/components/shared/data-display/SLinkedSystemsList.vue.d.ts +48 -0
- package/dist/src/components/shared/data-display/SLinkedSystemsList.vue.js +8 -0
- package/dist/src/components/shared/data-display/SLinkedSystemsList.vue_vue_type_script_setup_true_lang.js +147 -0
- package/dist/src/components/shared/data-display/SMessage.vue.d.ts +49 -0
- package/dist/src/components/shared/data-display/SMessage.vue.js +8 -0
- package/dist/src/components/shared/data-display/SMessage.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/src/components/shared/data-display/SMetricCard.vue.d.ts +72 -0
- package/dist/src/components/shared/data-display/SMetricCard.vue.js +8 -0
- package/dist/src/components/shared/data-display/SMetricCard.vue_vue_type_script_setup_true_lang.js +128 -0
- package/dist/src/components/shared/data-display/SProgressBar.vue.d.ts +41 -0
- package/dist/src/components/shared/data-display/SProgressBar.vue.js +8 -0
- package/dist/src/components/shared/data-display/SProgressBar.vue_vue_type_script_setup_true_lang.js +90 -0
- package/dist/src/components/shared/data-display/SProgressIndicator.vue.d.ts +28 -0
- package/dist/src/components/shared/data-display/SProgressIndicator.vue.js +8 -0
- package/dist/src/components/shared/data-display/SProgressIndicator.vue_vue_type_script_setup_true_lang.js +84 -0
- package/dist/src/components/shared/data-display/SRichDocument.vue.d.ts +20 -0
- package/dist/src/components/shared/data-display/SRichDocument.vue.js +8 -0
- package/dist/src/components/shared/data-display/SRichDocument.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/src/components/shared/data-display/SScrollViewport.vue.d.ts +30 -0
- package/dist/src/components/shared/data-display/SScrollViewport.vue.js +8 -0
- package/dist/src/components/shared/data-display/SScrollViewport.vue_vue_type_script_setup_true_lang.js +273 -0
- package/dist/src/components/shared/data-display/SSectionHeader.vue.d.ts +39 -0
- package/dist/src/components/shared/data-display/SSectionHeader.vue.js +5 -0
- package/dist/src/components/shared/data-display/SSectionHeader.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/src/components/shared/data-display/SStatus.vue.d.ts +34 -0
- package/dist/src/components/shared/data-display/SStatus.vue.js +8 -0
- package/dist/src/components/shared/data-display/SStatus.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/src/components/shared/data-display/STable.vue.d.ts +92 -0
- package/dist/src/components/shared/data-display/STable.vue.js +8 -0
- package/dist/src/components/shared/data-display/STable.vue_vue_type_script_setup_true_lang.js +549 -0
- package/dist/src/components/shared/data-display/SToastContainer.vue.d.ts +3 -0
- package/dist/src/components/shared/data-display/SToastContainer.vue.js +5 -0
- package/dist/src/components/shared/data-display/SToastContainer.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/src/components/shared/data-display/STooltip.vue.d.ts +92 -0
- package/dist/src/components/shared/data-display/STooltip.vue.js +7 -0
- package/dist/src/components/shared/data-display/STooltip.vue_vue_type_script_setup_true_lang.js +352 -0
- package/dist/src/components/shared/data-display/STooltipAnchor.vue.d.ts +54 -0
- package/dist/src/components/shared/data-display/STooltipAnchor.vue.js +8 -0
- package/dist/src/components/shared/data-display/STooltipAnchor.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/src/components/shared/data-display/STooltipTarget.vue.d.ts +41 -0
- package/dist/src/components/shared/data-display/STooltipTarget.vue.js +8 -0
- package/dist/src/components/shared/data-display/STooltipTarget.vue_vue_type_script_setup_true_lang.js +46 -0
- package/{src/components/shared/data-display/SVirtualList.ts → dist/src/components/shared/data-display/SVirtualList.d.ts} +18 -25
- package/dist/src/components/shared/data-display/SVirtualList.js +0 -0
- package/dist/src/components/shared/data-display/SVirtualList.vue.d.ts +65 -0
- package/dist/src/components/shared/data-display/SVirtualList.vue.js +8 -0
- package/dist/src/components/shared/data-display/SVirtualList.vue_vue_type_script_setup_true_lang.js +386 -0
- package/dist/src/components/shared/data-display/_internal/SCodeTokenLine.vue.d.ts +14 -0
- package/dist/src/components/shared/data-display/_internal/SCodeTokenLine.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/SCodeTokenLine.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue.d.ts +19 -0
- package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue_vue_type_script_setup_true_lang.js +386 -0
- package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.d.ts +19 -0
- package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.d.ts +14 -0
- package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue_vue_type_script_setup_true_lang.js +162 -0
- package/dist/src/components/shared/data-display/_internal/SRichMath.vue.d.ts +11 -0
- package/dist/src/components/shared/data-display/_internal/SRichMath.vue.js +7 -0
- package/dist/src/components/shared/data-display/_internal/SRichMath.vue_vue_type_script_setup_true_lang.js +80 -0
- package/dist/src/components/shared/data-display/chart.d.ts +49 -0
- package/dist/src/components/shared/data-display/chart.js +0 -0
- package/dist/src/components/shared/data-display/codeEditor.d.ts +49 -0
- package/dist/src/components/shared/data-display/codeEditor.js +102 -0
- package/dist/src/components/shared/data-display/codeWorkspace.d.ts +62 -0
- package/dist/src/components/shared/data-display/codeWorkspace.js +84 -0
- package/dist/src/components/shared/data-display/diff.d.ts +78 -0
- package/dist/src/components/shared/data-display/diff.js +266 -0
- package/dist/src/components/shared/data-display/json.d.ts +19 -0
- package/dist/src/components/shared/data-display/json.js +60 -0
- package/dist/src/components/shared/data-display/richDocument.d.ts +226 -0
- package/dist/src/components/shared/data-display/richDocument.js +656 -0
- package/dist/src/components/shared/data-display/scrollViewport.d.ts +39 -0
- package/dist/src/components/shared/data-display/scrollViewport.js +0 -0
- package/dist/src/components/shared/data-display/table.d.ts +45 -0
- package/dist/src/components/shared/data-display/table.js +0 -0
- package/dist/src/components/shared/data-display/toast.d.ts +44 -0
- package/dist/src/components/shared/data-display/toast.js +81 -0
- package/dist/src/components/shared/database/SDataGrid.vue.d.ts +68 -0
- package/dist/src/components/shared/database/SDataGrid.vue.js +8 -0
- package/dist/src/components/shared/database/SDataGrid.vue_vue_type_script_setup_true_lang.js +317 -0
- package/dist/src/components/shared/database/SSqlEditor.vue.d.ts +98 -0
- package/dist/src/components/shared/database/SSqlEditor.vue.js +5 -0
- package/dist/src/components/shared/database/SSqlEditor.vue_vue_type_script_setup_true_lang.js +321 -0
- package/dist/src/components/shared/database/dataGrid.d.ts +38 -0
- package/dist/src/components/shared/feedback/SAsyncState.vue.d.ts +58 -0
- package/dist/src/components/shared/feedback/SAsyncState.vue.js +8 -0
- package/dist/src/components/shared/feedback/SAsyncState.vue_vue_type_script_setup_true_lang.js +128 -0
- package/dist/src/components/shared/graph/SGraphViewport.d.ts +1 -0
- package/dist/src/components/shared/graph/SGraphViewport.js +2 -0
- package/dist/src/components/shared/graph/SGraphViewport.vue.d.ts +40 -0
- package/dist/src/components/shared/graph/SGraphViewport.vue.js +8 -0
- package/dist/src/components/shared/graph/SGraphViewport.vue_vue_type_script_setup_true_lang.js +513 -0
- package/dist/src/components/shared/graph/_internal/graphViewportContract.d.ts +114 -0
- package/dist/src/components/shared/graph/_internal/graphViewportContract.js +118 -0
- package/dist/src/components/shared/markdown.d.ts +12 -0
- package/dist/src/components/shared/markdown.js +84 -0
- package/dist/src/components/shared/navigation/SBottomNav.vue.d.ts +88 -0
- package/dist/src/components/shared/navigation/SBottomNav.vue.js +8 -0
- package/dist/src/components/shared/navigation/SBottomNav.vue_vue_type_script_setup_true_lang.js +365 -0
- package/dist/src/components/shared/navigation/SBreadcrumbs.vue.d.ts +36 -0
- package/dist/src/components/shared/navigation/SBreadcrumbs.vue.js +8 -0
- package/dist/src/components/shared/navigation/SBreadcrumbs.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/src/components/shared/navigation/SCatalogNavigator.vue.d.ts +43 -0
- package/dist/src/components/shared/navigation/SCatalogNavigator.vue.js +8 -0
- package/dist/src/components/shared/navigation/SCatalogNavigator.vue_vue_type_script_setup_true_lang.js +244 -0
- package/dist/src/components/shared/navigation/STab.vue.d.ts +62 -0
- package/dist/src/components/shared/navigation/STab.vue.js +8 -0
- package/dist/src/components/shared/navigation/STab.vue_vue_type_script_setup_true_lang.js +169 -0
- package/dist/src/components/shared/navigation/STabList.vue.d.ts +51 -0
- package/dist/src/components/shared/navigation/STabList.vue.js +8 -0
- package/dist/src/components/shared/navigation/STabList.vue_vue_type_script_setup_true_lang.js +189 -0
- package/dist/src/components/shared/navigation/STabPanel.vue.d.ts +41 -0
- package/dist/src/components/shared/navigation/STabPanel.vue.js +8 -0
- package/dist/src/components/shared/navigation/STabPanel.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/src/components/shared/navigation/STabPanels.vue.d.ts +14 -0
- package/dist/src/components/shared/navigation/STabPanels.vue.js +8 -0
- package/dist/src/components/shared/navigation/STabPanels.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/src/components/shared/navigation/STabs.vue.d.ts +89 -0
- package/dist/src/components/shared/navigation/STabs.vue.js +8 -0
- package/dist/src/components/shared/navigation/STabs.vue_vue_type_script_setup_true_lang.js +310 -0
- package/dist/src/components/shared/navigation/SWizardSteps.vue.d.ts +43 -0
- package/dist/src/components/shared/navigation/SWizardSteps.vue.js +8 -0
- package/dist/src/components/shared/navigation/SWizardSteps.vue_vue_type_script_setup_true_lang.js +106 -0
- package/dist/src/components/shared/navigation/_internal/SCatalogNavigatorGroup.vue.d.ts +23 -0
- package/dist/src/components/shared/navigation/_internal/SCatalogNavigatorGroup.vue.js +8 -0
- package/dist/src/components/shared/navigation/_internal/SCatalogNavigatorGroup.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/src/components/shared/persona/SPersonaProjectPicker.vue.d.ts +30 -0
- package/dist/src/components/shared/persona/SPersonaProjectPicker.vue.js +8 -0
- package/dist/src/components/shared/persona/SPersonaProjectPicker.vue_vue_type_script_setup_true_lang.js +334 -0
- package/dist/src/components/shared/persona/SPersonaRunWorkbench.vue.d.ts +72 -0
- package/dist/src/components/shared/persona/SPersonaRunWorkbench.vue.js +8 -0
- package/dist/src/components/shared/persona/SPersonaRunWorkbench.vue_vue_type_script_setup_true_lang.js +583 -0
- package/dist/src/components/shared/persona/_internal/SPersonaRunConsole.vue.d.ts +41 -0
- package/dist/src/components/shared/persona/_internal/SPersonaRunConsole.vue.js +8 -0
- package/dist/src/components/shared/persona/_internal/SPersonaRunConsole.vue_vue_type_script_setup_true_lang.js +298 -0
- package/dist/src/components/shared/persona/_internal/inventory.d.ts +21 -0
- package/dist/src/components/shared/persona/_internal/inventory.js +42 -0
- package/dist/src/components/shared/persona/_internal/labels.d.ts +3 -0
- package/dist/src/components/shared/persona/_internal/labels.js +73 -0
- package/dist/src/components/shared/persona/presentation.d.ts +41 -0
- package/dist/src/components/shared/persona/presentation.js +330 -0
- package/dist/src/components/shared/persona/types.d.ts +222 -0
- package/dist/src/components/shared/persona/types.js +6 -0
- package/dist/src/composables/uiPreferencesReset.d.ts +21 -0
- package/dist/src/composables/uiPreferencesReset.js +24 -0
- package/dist/src/composables/useClipboard.d.ts +20 -0
- package/dist/src/composables/useClipboard.js +26 -0
- package/dist/src/composables/useDialogOverlay.d.ts +19 -0
- package/dist/src/composables/useDialogOverlay.js +49 -0
- package/dist/src/composables/useDisclosure.d.ts +17 -0
- package/dist/src/composables/useDisclosure.js +20 -0
- package/dist/src/composables/useFloatingPosition.d.ts +40 -0
- package/dist/src/composables/useFloatingPosition.js +124 -0
- package/dist/src/composables/useNotifier.d.ts +10 -0
- package/dist/src/composables/useNotifier.js +19 -0
- package/dist/src/composables/useSidebarPanelState.d.ts +86 -0
- package/dist/src/composables/useSidebarPanelState.js +264 -0
- package/dist/src/composables/useUiKitLocale.d.ts +6 -0
- package/dist/src/composables/useUiKitLocale.js +9 -0
- package/dist/src/internal/chartGeometry.d.ts +117 -0
- package/dist/src/internal/chartGeometry.js +463 -0
- package/dist/src/internal/codeEditorContract.d.ts +31 -0
- package/dist/src/internal/codeEditorContract.js +63 -0
- package/dist/src/internal/codeEditorExtensions.d.ts +12 -0
- package/dist/src/internal/codeEditorExtensions.js +14 -0
- package/dist/src/internal/codeHighlight.d.ts +11 -0
- package/dist/src/internal/codeHighlight.js +71 -0
- package/dist/src/internal/codeLanguageIdentity.d.ts +6 -0
- package/dist/src/internal/codeLanguageIdentity.js +70 -0
- package/dist/src/internal/diffEngine.d.ts +7 -0
- package/dist/src/internal/diffEngine.js +231 -0
- package/dist/src/internal/diffRuntime.d.ts +23 -0
- package/dist/src/internal/diffRuntime.js +102 -0
- package/dist/src/internal/es2020.d.ts +16 -0
- package/dist/src/internal/es2020.js +25 -0
- package/dist/src/internal/feedbackPresentation.d.ts +52 -0
- package/dist/src/internal/feedbackPresentation.js +96 -0
- package/dist/src/internal/fieldPresentation.d.ts +19 -0
- package/dist/src/internal/fieldPresentation.js +16 -0
- package/dist/src/internal/fieldSurface.d.ts +26 -0
- package/dist/src/internal/fieldSurface.js +25 -0
- package/dist/src/internal/focusNavigation.d.ts +11 -0
- package/dist/src/internal/focusNavigation.js +26 -0
- package/dist/src/internal/inlineTokenEditorContract.d.ts +20 -0
- package/dist/src/internal/inlineTokenEditorContract.js +87 -0
- package/dist/src/internal/interactiveElement.d.ts +15 -0
- package/dist/src/internal/interactiveElement.js +12 -0
- package/dist/src/internal/layerStack.d.ts +28 -0
- package/dist/src/internal/layerStack.js +82 -0
- package/dist/src/internal/lazyCodeEditor.js +2 -0
- package/dist/src/internal/linkTarget.d.ts +26 -0
- package/dist/src/internal/linkTarget.js +131 -0
- package/dist/src/internal/localeContext.d.ts +10 -0
- package/dist/src/internal/localeContext.js +17 -0
- package/dist/src/internal/ownedAttrs.d.ts +357 -0
- package/dist/src/internal/ownedAttrs.js +334 -0
- package/dist/src/internal/passiveContentContract.d.ts +44 -0
- package/dist/src/internal/passiveContentContract.js +52 -0
- package/dist/src/internal/pillSurface.d.ts +43 -0
- package/dist/src/internal/pillSurface.js +38 -0
- package/dist/src/internal/pointerInteractionLease.d.ts +12 -0
- package/dist/src/internal/pointerInteractionLease.js +31 -0
- package/dist/src/internal/runtimeContract.d.ts +39 -0
- package/dist/src/internal/runtimeContract.js +48 -0
- package/dist/src/internal/runtimeTheme.d.ts +29 -0
- package/dist/src/internal/runtimeTheme.js +71 -0
- package/{src/internal/semanticSizing.ts → dist/src/internal/semanticSizing.d.ts} +16 -57
- package/dist/src/internal/semanticSizing.js +51 -0
- package/dist/src/internal/semanticTone.d.ts +10 -0
- package/dist/src/internal/semanticTone.js +8 -0
- package/dist/src/internal/useBinaryInput.d.ts +26 -0
- package/dist/src/internal/useBinaryInput.js +34 -0
- package/dist/src/internal/useMenuLayer.d.ts +25 -0
- package/dist/src/internal/useMenuLayer.js +81 -0
- package/dist/src/locales/catalog.d.ts +1523 -0
- package/dist/src/locales/locale.d.ts +564 -0
- package/dist/src/locales/locale.js +9 -0
- package/dist/src/locales/messages.d.ts +9 -0
- package/dist/src/locales/messages.generated.d.ts +8 -0
- package/dist/src/locales/messages.generated.js +171 -0
- package/dist/src/locales/messages.js +77 -0
- package/dist/src/stores/useNotifierStore.d.ts +50 -0
- package/dist/src/stores/useNotifierStore.js +43 -0
- package/dist/src/theme.d.ts +119 -0
- package/dist/src/theme.js +253 -0
- package/dist/src/variants.d.ts +4 -0
- package/dist/src/variants.js +17 -0
- package/dist/src/workers/diff.worker.d.ts +1 -0
- package/dist/src/workers/diffProtocol.d.ts +39 -0
- package/dist/src/workers/diffProtocol.js +66 -0
- package/docs/getting-started.md +12 -11
- package/docs/public-api.md +24 -12
- package/docs/rich-document.md +17 -1
- package/docs/versioning.md +71 -0
- package/package.json +824 -281
- package/src/components/shared/controls/SButton.css +21 -0
- package/src/components/shared/controls/SInputText.css +7 -0
- package/src/components/shared/data-display/_internal/SRichBlockNode.css +24 -0
- package/src/components/shared/data-display/_internal/SRichDisclosure.css +25 -0
- package/src/components/shared/data-display/_internal/SRichInlineNode.css +16 -0
- package/src/components/icons/_internal/generatedSputnigUiIconMarkup.ts +0 -971
- package/src/components/icons/sputnigUiIcons.ts +0 -530
- package/src/components/layout/SAppShell.vue +0 -235
- package/src/components/layout/SDockRegion.vue +0 -202
- package/src/components/layout/SResizeHandle.vue +0 -291
- package/src/components/layout/SSideMenuButton.vue +0 -105
- package/src/components/layout/SSideMenuRail.vue +0 -44
- package/src/components/layout/SStack.vue +0 -65
- package/src/components/layout/SStatusBarShell.vue +0 -26
- package/src/components/layout/SWorkbenchLayout.vue +0 -53
- package/src/components/layout/SWorkbenchPanelShell.vue +0 -288
- package/src/components/layout/_internal/SAppBrand.vue +0 -37
- package/src/components/layout/_internal/SAppBrandContent.vue +0 -30
- package/src/components/layout/types.ts +0 -28
- package/src/components/shared/_internal/SDialogSurface.vue +0 -124
- package/src/components/shared/_internal/SDisclosureSummary.vue +0 -121
- package/src/components/shared/_internal/SHeaderSurface.vue +0 -80
- package/src/components/shared/_internal/SListboxGroup.vue +0 -24
- package/src/components/shared/_internal/SMenuItem.vue +0 -213
- package/src/components/shared/_internal/SMenuLayer.vue +0 -48
- package/src/components/shared/_internal/SMenuSeparator.vue +0 -13
- package/src/components/shared/_internal/SToastItem.vue +0 -101
- package/src/components/shared/_internal/STreeNode.vue +0 -780
- package/src/components/shared/_internal/dialogSurface.ts +0 -111
- package/src/components/shared/_internal/focusTrap.ts +0 -40
- package/src/components/shared/_internal/listboxContext.ts +0 -16
- package/src/components/shared/_internal/markerContract.ts +0 -29
- package/src/components/shared/_internal/menuContext.ts +0 -23
- package/src/components/shared/_internal/selectionContract.ts +0 -239
- package/src/components/shared/_internal/sidebarGroupContext.ts +0 -33
- package/src/components/shared/_internal/tabsContext.ts +0 -58
- package/src/components/shared/_internal/treeRuntime.ts +0 -203
- package/src/components/shared/_internal/useRadioGroup.ts +0 -106
- package/src/components/shared/_internal/useSelectionRoving.ts +0 -162
- package/src/components/shared/codeLanguages.ts +0 -63
- package/src/components/shared/complex/SKanbanCard.vue +0 -76
- package/src/components/shared/complex/SKanbanLane.vue +0 -84
- package/src/components/shared/complex/STree.vue +0 -313
- package/src/components/shared/complex/treeAdapter.ts +0 -211
- package/src/components/shared/containers/SCloudChrome.vue +0 -87
- package/src/components/shared/containers/SCloudChromeEmpty.vue +0 -18
- package/src/components/shared/containers/SCloudChromeRow.vue +0 -109
- package/src/components/shared/containers/SCollapsiblePanel.vue +0 -360
- package/src/components/shared/containers/SDrawer.vue +0 -125
- package/src/components/shared/containers/SFormGrid.vue +0 -46
- package/src/components/shared/containers/SFormGridItem.vue +0 -29
- package/src/components/shared/containers/SLeftSidebar.vue +0 -79
- package/src/components/shared/containers/SModal.vue +0 -108
- package/src/components/shared/containers/SPageHeader.vue +0 -44
- package/src/components/shared/containers/SPanel.vue +0 -179
- package/src/components/shared/containers/SPopover.vue +0 -556
- package/src/components/shared/containers/SSidebarGroup.vue +0 -467
- package/src/components/shared/containers/SSidebarSection.vue +0 -267
- package/src/components/shared/containers/SUiKitLocaleProvider.vue +0 -57
- package/src/components/shared/containers/disclosureSummary.ts +0 -48
- package/src/components/shared/containers/sidebar.ts +0 -207
- package/src/components/shared/controls/SButton.vue +0 -341
- package/src/components/shared/controls/SCheckbox.vue +0 -101
- package/src/components/shared/controls/SCheckboxGroup.vue +0 -134
- package/src/components/shared/controls/SChoiceCards.vue +0 -122
- package/src/components/shared/controls/SColorSelect.vue +0 -146
- package/src/components/shared/controls/SCombobox.vue +0 -366
- package/src/components/shared/controls/SComboboxTrigger.vue +0 -125
- package/src/components/shared/controls/SContextMenu.vue +0 -186
- package/src/components/shared/controls/SContextToggleButton.vue +0 -66
- package/src/components/shared/controls/SDragHandle.vue +0 -104
- package/src/components/shared/controls/SDropdownMenu.vue +0 -191
- package/src/components/shared/controls/SField.vue +0 -93
- package/src/components/shared/controls/SFieldGroup.vue +0 -120
- package/src/components/shared/controls/SFieldLabel.vue +0 -52
- package/src/components/shared/controls/SInlineTokenEditor.vue +0 -1081
- package/src/components/shared/controls/SInputText.vue +0 -336
- package/src/components/shared/controls/SInteractiveSurface.vue +0 -352
- package/src/components/shared/controls/SLink.vue +0 -138
- package/src/components/shared/controls/SListbox.vue +0 -488
- package/src/components/shared/controls/SListboxOption.vue +0 -98
- package/src/components/shared/controls/SMarker.vue +0 -41
- package/src/components/shared/controls/SMenuSurface.vue +0 -333
- package/src/components/shared/controls/SRange.vue +0 -129
- package/src/components/shared/controls/SSegmentedControl.vue +0 -106
- package/src/components/shared/controls/SSelect.vue +0 -340
- package/src/components/shared/controls/SSwitch.vue +0 -91
- package/src/components/shared/controls/STextarea.ts +0 -13
- package/src/components/shared/controls/STextarea.vue +0 -670
- package/src/components/shared/controls/_internal/SInlineTokenSurface.vue +0 -229
- package/src/components/shared/controls/menu.ts +0 -178
- package/src/components/shared/data-display/SActionCard.vue +0 -59
- package/src/components/shared/data-display/SActionList.vue +0 -34
- package/src/components/shared/data-display/SActionListItem.vue +0 -240
- package/src/components/shared/data-display/SBadge.vue +0 -75
- package/src/components/shared/data-display/SChart.vue +0 -495
- package/src/components/shared/data-display/SChip.vue +0 -130
- package/src/components/shared/data-display/SCodeBlock.vue +0 -298
- package/src/components/shared/data-display/SCodeEditor.vue +0 -453
- package/src/components/shared/data-display/SCodeSearchPanel.vue +0 -342
- package/src/components/shared/data-display/SCodeWorkspaceEditor.vue +0 -355
- package/src/components/shared/data-display/SControlledToastViewport.vue +0 -205
- package/src/components/shared/data-display/SCopyField.vue +0 -79
- package/src/components/shared/data-display/SDiffViewer.vue +0 -499
- package/src/components/shared/data-display/SDocBlock.vue +0 -386
- package/src/components/shared/data-display/SEmptyState.vue +0 -79
- package/src/components/shared/data-display/SExpandableText.vue +0 -316
- package/src/components/shared/data-display/SJsonTree.vue +0 -113
- package/src/components/shared/data-display/SKeyValueGrid.vue +0 -277
- package/src/components/shared/data-display/SLinkedSystemsList.vue +0 -272
- package/src/components/shared/data-display/SMessage.vue +0 -159
- package/src/components/shared/data-display/SMetricCard.vue +0 -118
- package/src/components/shared/data-display/SProgressBar.vue +0 -120
- package/src/components/shared/data-display/SProgressIndicator.vue +0 -112
- package/src/components/shared/data-display/SRichDocument.vue +0 -65
- package/src/components/shared/data-display/SScrollViewport.vue +0 -470
- package/src/components/shared/data-display/SSectionHeader.vue +0 -54
- package/src/components/shared/data-display/SStatus.vue +0 -87
- package/src/components/shared/data-display/STable.vue +0 -960
- package/src/components/shared/data-display/SToastContainer.vue +0 -36
- package/src/components/shared/data-display/STooltip.vue +0 -681
- package/src/components/shared/data-display/STooltipAnchor.vue +0 -119
- package/src/components/shared/data-display/STooltipTarget.vue +0 -94
- package/src/components/shared/data-display/SVirtualList.vue +0 -662
- package/src/components/shared/data-display/_internal/SCodeTokenLine.vue +0 -79
- package/src/components/shared/data-display/_internal/SRichBlockNode.vue +0 -282
- package/src/components/shared/data-display/_internal/SRichInlineNode.vue +0 -76
- package/src/components/shared/data-display/_internal/SRichMath.vue +0 -102
- package/src/components/shared/data-display/chart.ts +0 -54
- package/src/components/shared/data-display/codeEditor.ts +0 -200
- package/src/components/shared/data-display/codeWorkspace.ts +0 -233
- package/src/components/shared/data-display/diff.ts +0 -541
- package/src/components/shared/data-display/json.ts +0 -136
- package/src/components/shared/data-display/richDocument.ts +0 -876
- package/src/components/shared/data-display/scrollViewport.ts +0 -47
- package/src/components/shared/data-display/table.ts +0 -61
- package/src/components/shared/data-display/toast.ts +0 -194
- package/src/components/shared/database/SDataGrid.vue +0 -501
- package/src/components/shared/database/SSqlEditor.vue +0 -364
- package/src/components/shared/database/dataGrid.ts +0 -45
- package/src/components/shared/feedback/SAsyncState.vue +0 -192
- package/src/components/shared/graph/SGraphViewport.ts +0 -1
- package/src/components/shared/graph/SGraphViewport.vue +0 -860
- package/src/components/shared/graph/_internal/graphViewportContract.ts +0 -362
- package/src/components/shared/markdown.ts +0 -169
- package/src/components/shared/navigation/SBottomNav.vue +0 -695
- package/src/components/shared/navigation/SBreadcrumbs.vue +0 -158
- package/src/components/shared/navigation/SCatalogNavigator.vue +0 -314
- package/src/components/shared/navigation/STab.vue +0 -388
- package/src/components/shared/navigation/STabList.vue +0 -443
- package/src/components/shared/navigation/STabPanel.vue +0 -165
- package/src/components/shared/navigation/STabPanels.vue +0 -33
- package/src/components/shared/navigation/STabs.vue +0 -636
- package/src/components/shared/navigation/SWizardSteps.vue +0 -173
- package/src/components/shared/navigation/_internal/SCatalogNavigatorGroup.vue +0 -63
- package/src/components/shared/persona/SPersonaProjectPicker.vue +0 -365
- package/src/components/shared/persona/SPersonaRunWorkbench.vue +0 -555
- package/src/components/shared/persona/_internal/SPersonaRunConsole.vue +0 -300
- package/src/components/shared/persona/_internal/inventory.ts +0 -110
- package/src/components/shared/persona/_internal/labels.ts +0 -88
- package/src/components/shared/persona/presentation.ts +0 -401
- package/src/components/shared/persona/types.ts +0 -256
- package/src/composables/uiPreferencesReset.ts +0 -53
- package/src/composables/useClipboard.ts +0 -38
- package/src/composables/useDialogOverlay.ts +0 -85
- package/src/composables/useDisclosure.ts +0 -40
- package/src/composables/useFloatingPosition.ts +0 -282
- package/src/composables/useNotifier.ts +0 -26
- package/src/composables/useSidebarPanelState.ts +0 -611
- package/src/composables/useUiKitLocale.ts +0 -17
- package/src/internal/chartGeometry.ts +0 -852
- package/src/internal/codeEditorContract.ts +0 -110
- package/src/internal/codeEditorExtensions.ts +0 -27
- package/src/internal/codeHighlight.ts +0 -110
- package/src/internal/codeLanguageIdentity.ts +0 -89
- package/src/internal/diffEngine.ts +0 -464
- package/src/internal/diffRuntime.ts +0 -189
- package/src/internal/es2020.ts +0 -50
- package/src/internal/feedbackPresentation.ts +0 -155
- package/src/internal/fieldPresentation.ts +0 -28
- package/src/internal/fieldSurface.ts +0 -59
- package/src/internal/focusNavigation.ts +0 -69
- package/src/internal/inlineTokenEditorContract.ts +0 -137
- package/src/internal/interactiveElement.ts +0 -33
- package/src/internal/layerStack.ts +0 -202
- package/src/internal/linkTarget.ts +0 -254
- package/src/internal/localeContext.ts +0 -22
- package/src/internal/ownedAttrs.ts +0 -505
- package/src/internal/passiveContentContract.ts +0 -129
- package/src/internal/pillSurface.ts +0 -93
- package/src/internal/pointerInteractionLease.ts +0 -82
- package/src/internal/runtimeContract.ts +0 -196
- package/src/internal/runtimeTheme.ts +0 -159
- package/src/internal/semanticTone.ts +0 -23
- package/src/internal/useBinaryInput.ts +0 -83
- package/src/internal/useMenuLayer.ts +0 -129
- package/src/locales/catalog.ts +0 -634
- package/src/locales/locale.ts +0 -472
- package/src/locales/messages.generated.ts +0 -1826
- package/src/locales/messages.ts +0 -150
- package/src/stores/useNotifierStore.ts +0 -86
- package/src/theme.ts +0 -476
- package/src/types/highlight-js-lib.d.ts +0 -76
- package/src/variants.ts +0 -15
- package/src/workers/diff.worker.ts +0 -73
- package/src/workers/diffProtocol.ts +0 -155
- /package/{index.ts → dist/index.d.ts} +0 -0
- /package/{src/internal/lazyCodeEditor.ts → dist/src/internal/lazyCodeEditor.d.ts} +0 -0
|
@@ -1,876 +0,0 @@
|
|
|
1
|
-
export const S_RICH_DOCUMENT_VERSION = 1 as const
|
|
2
|
-
export const S_RICH_DOCUMENT_MAX_NODES = 10_000
|
|
3
|
-
export const S_RICH_DOCUMENT_MAX_DEPTH = 32
|
|
4
|
-
export const S_RICH_DOCUMENT_MAX_TEXT_LENGTH = 1_048_576
|
|
5
|
-
|
|
6
|
-
export type SRichDocumentContractErrorCode =
|
|
7
|
-
| 'cyclic_value'
|
|
8
|
-
| 'duplicate_id'
|
|
9
|
-
| 'invalid_structure'
|
|
10
|
-
| 'invalid_type'
|
|
11
|
-
| 'invalid_value'
|
|
12
|
-
| 'limit_exceeded'
|
|
13
|
-
| 'missing_resource'
|
|
14
|
-
| 'unknown_field'
|
|
15
|
-
| 'unknown_node_type'
|
|
16
|
-
| 'unsafe_url'
|
|
17
|
-
| 'unsupported_version'
|
|
18
|
-
|
|
19
|
-
/** Typed contract failure with a stable machine code and exact source coordinate. */
|
|
20
|
-
export class SRichDocumentContractError extends TypeError {
|
|
21
|
-
readonly code: SRichDocumentContractErrorCode
|
|
22
|
-
readonly path: string
|
|
23
|
-
|
|
24
|
-
constructor(code: SRichDocumentContractErrorCode, path: string, detail: string) {
|
|
25
|
-
super(`SRichDocument [${code}] at ${path}: ${detail}`)
|
|
26
|
-
this.name = 'SRichDocumentContractError'
|
|
27
|
-
this.code = code
|
|
28
|
-
this.path = path
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface SRichTextNode {
|
|
33
|
-
readonly type: 'text'
|
|
34
|
-
readonly value: string
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface SRichStrongNode {
|
|
38
|
-
readonly type: 'strong'
|
|
39
|
-
readonly children: readonly SRichInlineNode[]
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface SRichEmphasisNode {
|
|
43
|
-
readonly type: 'emphasis'
|
|
44
|
-
readonly children: readonly SRichInlineNode[]
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface SRichInlineCodeNode {
|
|
48
|
-
readonly type: 'inlineCode'
|
|
49
|
-
readonly code: string
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface SRichLinkNode {
|
|
53
|
-
readonly type: 'link'
|
|
54
|
-
readonly href: string
|
|
55
|
-
readonly title?: string
|
|
56
|
-
readonly current?: boolean
|
|
57
|
-
readonly children: readonly SRichInlineNode[]
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export interface SRichMathInlineNode {
|
|
61
|
-
readonly type: 'mathInline'
|
|
62
|
-
readonly source: string
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** Closed inline content union. Raw HTML, VNodes, callbacks, and trust flags are intentionally absent. */
|
|
66
|
-
export type SRichInlineNode =
|
|
67
|
-
| SRichTextNode
|
|
68
|
-
| SRichStrongNode
|
|
69
|
-
| SRichEmphasisNode
|
|
70
|
-
| SRichInlineCodeNode
|
|
71
|
-
| SRichLinkNode
|
|
72
|
-
| SRichMathInlineNode
|
|
73
|
-
|
|
74
|
-
export interface SRichParagraphNode {
|
|
75
|
-
readonly type: 'paragraph'
|
|
76
|
-
readonly children: readonly SRichInlineNode[]
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export interface SRichHeadingNode {
|
|
80
|
-
readonly type: 'heading'
|
|
81
|
-
readonly level: 1 | 2 | 3 | 4 | 5 | 6
|
|
82
|
-
readonly children: readonly SRichInlineNode[]
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export interface SRichListItemNode {
|
|
86
|
-
readonly type: 'listItem'
|
|
87
|
-
readonly children: readonly SRichBlockNode[]
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export interface SRichListNode {
|
|
91
|
-
readonly type: 'list'
|
|
92
|
-
readonly ordered: boolean
|
|
93
|
-
readonly start?: number
|
|
94
|
-
readonly children: readonly SRichListItemNode[]
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export interface SRichQuoteNode {
|
|
98
|
-
readonly type: 'quote'
|
|
99
|
-
readonly children: readonly SRichBlockNode[]
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export interface SRichDividerNode {
|
|
103
|
-
readonly type: 'divider'
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export interface SRichImageNode {
|
|
107
|
-
readonly type: 'image'
|
|
108
|
-
readonly resourceId: string
|
|
109
|
-
readonly caption?: readonly SRichInlineNode[]
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export interface SRichResourceNode {
|
|
113
|
-
readonly type: 'resource'
|
|
114
|
-
readonly resourceId: string
|
|
115
|
-
readonly label: string
|
|
116
|
-
readonly description?: string
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export interface SRichCodeBlockNode {
|
|
120
|
-
readonly type: 'codeBlock'
|
|
121
|
-
readonly code: string
|
|
122
|
-
readonly language?: string
|
|
123
|
-
readonly label?: string
|
|
124
|
-
readonly showLineNumbers?: boolean
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export interface SRichMathBlockNode {
|
|
128
|
-
readonly type: 'mathBlock'
|
|
129
|
-
readonly source: string
|
|
130
|
-
readonly label?: string
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export type SRichTableAlignment = 'left' | 'center' | 'right'
|
|
134
|
-
export type SRichTableHeaderPresentation = 'visible' | 'assistive'
|
|
135
|
-
|
|
136
|
-
export interface SRichTableColumn {
|
|
137
|
-
readonly id: string
|
|
138
|
-
readonly header: string
|
|
139
|
-
readonly headerPresentation?: SRichTableHeaderPresentation
|
|
140
|
-
readonly align?: SRichTableAlignment
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export interface SRichTableCell {
|
|
144
|
-
readonly children: readonly SRichInlineNode[]
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export interface SRichTableRow {
|
|
148
|
-
readonly id: string
|
|
149
|
-
readonly cells: readonly SRichTableCell[]
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
export interface SRichTableNode {
|
|
153
|
-
readonly type: 'table'
|
|
154
|
-
readonly label: string
|
|
155
|
-
readonly columns: readonly SRichTableColumn[]
|
|
156
|
-
readonly rows: readonly SRichTableRow[]
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export type SRichCalloutTone = 'neutral' | 'information' | 'success' | 'warning' | 'danger'
|
|
160
|
-
|
|
161
|
-
export interface SRichCalloutNode {
|
|
162
|
-
readonly type: 'callout'
|
|
163
|
-
readonly tone: SRichCalloutTone
|
|
164
|
-
readonly title?: string
|
|
165
|
-
readonly children: readonly SRichBlockNode[]
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export type SRichActionAppearance = 'primary' | 'secondary' | 'danger'
|
|
169
|
-
|
|
170
|
-
export interface SRichActionNode {
|
|
171
|
-
readonly type: 'action'
|
|
172
|
-
readonly id: string
|
|
173
|
-
readonly label: string
|
|
174
|
-
readonly appearance?: SRichActionAppearance
|
|
175
|
-
readonly disabled?: boolean
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
export interface SRichActionGroupNode {
|
|
179
|
-
readonly type: 'actionGroup'
|
|
180
|
-
readonly label?: string
|
|
181
|
-
readonly actions: readonly SRichActionNode[]
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/** Closed block content union accepted by the renderer. */
|
|
185
|
-
export type SRichBlockNode =
|
|
186
|
-
| SRichParagraphNode
|
|
187
|
-
| SRichHeadingNode
|
|
188
|
-
| SRichListNode
|
|
189
|
-
| SRichQuoteNode
|
|
190
|
-
| SRichDividerNode
|
|
191
|
-
| SRichImageNode
|
|
192
|
-
| SRichResourceNode
|
|
193
|
-
| SRichCodeBlockNode
|
|
194
|
-
| SRichMathBlockNode
|
|
195
|
-
| SRichTableNode
|
|
196
|
-
| SRichCalloutNode
|
|
197
|
-
| SRichActionGroupNode
|
|
198
|
-
|
|
199
|
-
export type SRichDocumentNode = SRichInlineNode | SRichBlockNode | SRichListItemNode | SRichActionNode
|
|
200
|
-
|
|
201
|
-
/** Versioned, serializable rich-document input. */
|
|
202
|
-
export interface SRichDocumentV1 {
|
|
203
|
-
readonly version: typeof S_RICH_DOCUMENT_VERSION
|
|
204
|
-
readonly id: string
|
|
205
|
-
readonly nodes: readonly SRichBlockNode[]
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
interface SRichDocumentResourceBase {
|
|
209
|
-
readonly id: string
|
|
210
|
-
readonly url: string
|
|
211
|
-
readonly title?: string
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
export interface SRichDocumentImageResource extends SRichDocumentResourceBase {
|
|
215
|
-
readonly kind: 'image'
|
|
216
|
-
readonly alt: string
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export interface SRichDocumentFileResource extends SRichDocumentResourceBase {
|
|
220
|
-
readonly kind: 'file'
|
|
221
|
-
readonly label: string
|
|
222
|
-
readonly mediaType?: string
|
|
223
|
-
readonly byteSize?: number
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/** Consumer-owned resource descriptor resolved independently from the document AST. */
|
|
227
|
-
export type SRichDocumentResource = SRichDocumentImageResource | SRichDocumentFileResource
|
|
228
|
-
|
|
229
|
-
/** Fully validated renderer input with resource references resolved by stable IDs. */
|
|
230
|
-
export interface SRichDocumentModel {
|
|
231
|
-
readonly document: SRichDocumentV1
|
|
232
|
-
readonly resources: readonly SRichDocumentResource[]
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
export interface SRichDocumentLinkActivate {
|
|
236
|
-
readonly documentId: string
|
|
237
|
-
readonly path: string
|
|
238
|
-
readonly href: string
|
|
239
|
-
readonly title?: string
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
export interface SRichDocumentResourceActivate {
|
|
243
|
-
readonly documentId: string
|
|
244
|
-
readonly path: string
|
|
245
|
-
readonly resourceId: string
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
export interface SRichDocumentActionIntent {
|
|
249
|
-
readonly documentId: string
|
|
250
|
-
readonly path: string
|
|
251
|
-
readonly actionId: string
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
type PlainRecord = Readonly<Record<string, unknown>>
|
|
255
|
-
|
|
256
|
-
interface ValidationContext {
|
|
257
|
-
readonly ancestors: Set<object>
|
|
258
|
-
readonly actionIds: Set<string>
|
|
259
|
-
nodeCount: number
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
const DOCUMENT_FIELDS = new Set(['version', 'id', 'nodes'])
|
|
263
|
-
const RESOURCE_FIELDS = new Set(['id', 'kind', 'url', 'title', 'alt', 'label', 'mediaType', 'byteSize'])
|
|
264
|
-
const NODE_FIELDS = {
|
|
265
|
-
action: new Set(['type', 'id', 'label', 'appearance', 'disabled']),
|
|
266
|
-
actionGroup: new Set(['type', 'label', 'actions']),
|
|
267
|
-
callout: new Set(['type', 'tone', 'title', 'children']),
|
|
268
|
-
codeBlock: new Set(['type', 'code', 'language', 'label', 'showLineNumbers']),
|
|
269
|
-
divider: new Set(['type']),
|
|
270
|
-
emphasis: new Set(['type', 'children']),
|
|
271
|
-
heading: new Set(['type', 'level', 'children']),
|
|
272
|
-
image: new Set(['type', 'resourceId', 'caption']),
|
|
273
|
-
inlineCode: new Set(['type', 'code']),
|
|
274
|
-
link: new Set(['type', 'href', 'title', 'current', 'children']),
|
|
275
|
-
list: new Set(['type', 'ordered', 'start', 'children']),
|
|
276
|
-
listItem: new Set(['type', 'children']),
|
|
277
|
-
mathBlock: new Set(['type', 'source', 'label']),
|
|
278
|
-
mathInline: new Set(['type', 'source']),
|
|
279
|
-
paragraph: new Set(['type', 'children']),
|
|
280
|
-
quote: new Set(['type', 'children']),
|
|
281
|
-
resource: new Set(['type', 'resourceId', 'label', 'description']),
|
|
282
|
-
strong: new Set(['type', 'children']),
|
|
283
|
-
table: new Set(['type', 'label', 'columns', 'rows']),
|
|
284
|
-
text: new Set(['type', 'value']),
|
|
285
|
-
} as const
|
|
286
|
-
const TABLE_COLUMN_FIELDS = new Set(['id', 'header', 'headerPresentation', 'align'])
|
|
287
|
-
const TABLE_ROW_FIELDS = new Set(['id', 'cells'])
|
|
288
|
-
const TABLE_CELL_FIELDS = new Set(['children'])
|
|
289
|
-
const INLINE_NODE_TYPES = new Set(['text', 'strong', 'emphasis', 'inlineCode', 'link', 'mathInline'])
|
|
290
|
-
const BLOCK_NODE_TYPES = new Set([
|
|
291
|
-
'paragraph', 'heading', 'list', 'quote', 'divider', 'image', 'resource', 'codeBlock',
|
|
292
|
-
'mathBlock', 'table', 'callout', 'actionGroup',
|
|
293
|
-
])
|
|
294
|
-
const CALLOUT_TONES = new Set<SRichCalloutTone>(['neutral', 'information', 'success', 'warning', 'danger'])
|
|
295
|
-
const ACTION_APPEARANCES = new Set<SRichActionAppearance>(['primary', 'secondary', 'danger'])
|
|
296
|
-
const TABLE_ALIGNMENTS = new Set<SRichTableAlignment>(['left', 'center', 'right'])
|
|
297
|
-
const HEADER_PRESENTATIONS = new Set<SRichTableHeaderPresentation>(['visible', 'assistive'])
|
|
298
|
-
|
|
299
|
-
function fail(code: SRichDocumentContractErrorCode, path: string, detail: string): never {
|
|
300
|
-
throw new SRichDocumentContractError(code, path, detail)
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
function enter(value: object, path: string, context: ValidationContext): void {
|
|
304
|
-
if (context.ancestors.has(value)) fail('cyclic_value', path, 'cyclic values are not allowed')
|
|
305
|
-
context.ancestors.add(value)
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
function readRecord(value: unknown, path: string, context: ValidationContext): PlainRecord {
|
|
309
|
-
if (
|
|
310
|
-
typeof value !== 'object'
|
|
311
|
-
|| value === null
|
|
312
|
-
|| Array.isArray(value)
|
|
313
|
-
|| Object.getPrototypeOf(value) !== Object.prototype
|
|
314
|
-
) {
|
|
315
|
-
fail('invalid_type', path, 'expected a plain object')
|
|
316
|
-
}
|
|
317
|
-
enter(value, path, context)
|
|
318
|
-
const record: Record<string, unknown> = {}
|
|
319
|
-
for (const key of Reflect.ownKeys(value)) {
|
|
320
|
-
if (typeof key !== 'string') fail('unknown_field', path, 'symbol fields are not allowed')
|
|
321
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, key)
|
|
322
|
-
if (!descriptor?.enumerable || !('value' in descriptor)) {
|
|
323
|
-
fail('invalid_structure', `${path}.${key}`, 'expected an enumerable data property')
|
|
324
|
-
}
|
|
325
|
-
record[key] = descriptor.value
|
|
326
|
-
}
|
|
327
|
-
return record
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
function leave(value: object, context: ValidationContext): void {
|
|
331
|
-
context.ancestors.delete(value)
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
function assertFields(record: PlainRecord, path: string, fields: ReadonlySet<string>): void {
|
|
335
|
-
const unexpected = Object.keys(record).filter((field) => !fields.has(field))
|
|
336
|
-
if (unexpected.length > 0) {
|
|
337
|
-
fail('unknown_field', `${path}.${unexpected[0]}`, 'field is not part of the closed contract')
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
function readArray(
|
|
342
|
-
value: unknown,
|
|
343
|
-
path: string,
|
|
344
|
-
context: ValidationContext,
|
|
345
|
-
bounds: { readonly minimum: number; readonly maximum: number },
|
|
346
|
-
): readonly unknown[] {
|
|
347
|
-
if (!Array.isArray(value)) fail('invalid_type', path, 'expected an array')
|
|
348
|
-
enter(value, path, context)
|
|
349
|
-
if (value.length < bounds.minimum) fail('invalid_value', path, `expected at least ${bounds.minimum} items`)
|
|
350
|
-
if (value.length > bounds.maximum) fail('limit_exceeded', path, `maximum is ${bounds.maximum} items`)
|
|
351
|
-
const items: unknown[] = []
|
|
352
|
-
for (const key of Reflect.ownKeys(value)) {
|
|
353
|
-
if (key === 'length') continue
|
|
354
|
-
if (typeof key !== 'string' || !/^(0|[1-9]\d*)$/u.test(key) || Number(key) >= value.length) {
|
|
355
|
-
fail('unknown_field', path, `array field ${String(key)} is not allowed`)
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
359
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, String(index))
|
|
360
|
-
if (!descriptor?.enumerable || !('value' in descriptor)) {
|
|
361
|
-
fail('invalid_structure', `${path}[${index}]`, 'sparse arrays and accessors are not allowed')
|
|
362
|
-
}
|
|
363
|
-
items.push(descriptor.value)
|
|
364
|
-
}
|
|
365
|
-
return items
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
function readString(
|
|
369
|
-
value: unknown,
|
|
370
|
-
path: string,
|
|
371
|
-
options: { readonly allowEmpty?: boolean; readonly stable?: boolean; readonly maximum?: number } = {},
|
|
372
|
-
): string {
|
|
373
|
-
if (typeof value !== 'string') fail('invalid_type', path, 'expected a string')
|
|
374
|
-
const maximum = options.maximum ?? S_RICH_DOCUMENT_MAX_TEXT_LENGTH
|
|
375
|
-
if (!options.allowEmpty && value.length === 0) fail('invalid_value', path, 'expected a non-empty string')
|
|
376
|
-
if (value.length > maximum) fail('limit_exceeded', path, `maximum length is ${maximum}`)
|
|
377
|
-
if (options.stable && value !== value.trim()) fail('invalid_value', path, 'surrounding whitespace is not allowed')
|
|
378
|
-
return value
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
function readOptionalString(value: unknown, path: string): string | undefined {
|
|
382
|
-
return value === undefined ? undefined : readString(value, path)
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
function readBoolean(value: unknown, path: string): boolean {
|
|
386
|
-
if (typeof value !== 'boolean') fail('invalid_type', path, 'expected a boolean')
|
|
387
|
-
return value
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
function readInteger(value: unknown, path: string, minimum: number, maximum: number): number {
|
|
391
|
-
if (!Number.isSafeInteger(value) || typeof value !== 'number') {
|
|
392
|
-
fail('invalid_type', path, 'expected a safe integer')
|
|
393
|
-
}
|
|
394
|
-
if (value < minimum || value > maximum) fail('invalid_value', path, `expected ${minimum}..${maximum}`)
|
|
395
|
-
return value
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
function readEnum<Value extends string>(
|
|
399
|
-
value: unknown,
|
|
400
|
-
path: string,
|
|
401
|
-
values: ReadonlySet<Value>,
|
|
402
|
-
): Value {
|
|
403
|
-
if (typeof value !== 'string' || !values.has(value as Value)) {
|
|
404
|
-
fail('invalid_value', path, `expected one of ${[...values].join(', ')}`)
|
|
405
|
-
}
|
|
406
|
-
return value as Value
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
function validateUrl(value: unknown, path: string, kind: 'link' | 'resource'): string {
|
|
410
|
-
const url = readString(value, path, { stable: true, maximum: 8_192 })
|
|
411
|
-
if (/\s|[\u0000-\u001F\u007F]/u.test(url) || url.includes('\\')) {
|
|
412
|
-
fail('unsafe_url', path, 'whitespace, control characters, and backslashes are not allowed')
|
|
413
|
-
}
|
|
414
|
-
if (url.startsWith('//')) fail('unsafe_url', path, 'scheme-relative URLs are not allowed')
|
|
415
|
-
const scheme = /^([A-Za-z][A-Za-z0-9+.-]*):/u.exec(url)?.[1]?.toLowerCase()
|
|
416
|
-
if (scheme === undefined) {
|
|
417
|
-
if (kind === 'resource' && url.startsWith('#')) fail('unsafe_url', path, 'fragment-only resource URLs are not allowed')
|
|
418
|
-
return url
|
|
419
|
-
}
|
|
420
|
-
const allowed = kind === 'link'
|
|
421
|
-
? new Set(['http', 'https', 'mailto', 'tel'])
|
|
422
|
-
: new Set(['http', 'https', 'blob'])
|
|
423
|
-
if (!allowed.has(scheme)) fail('unsafe_url', path, `protocol ${scheme}: is not allowed for ${kind}`)
|
|
424
|
-
let parsed: URL
|
|
425
|
-
try {
|
|
426
|
-
parsed = new URL(url)
|
|
427
|
-
} catch {
|
|
428
|
-
fail('unsafe_url', path, 'URL syntax is invalid')
|
|
429
|
-
}
|
|
430
|
-
if ((scheme === 'http' || scheme === 'https') && (parsed.username.length > 0 || parsed.password.length > 0)) {
|
|
431
|
-
fail('unsafe_url', path, 'URL credentials are not allowed')
|
|
432
|
-
}
|
|
433
|
-
return url
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
function validateInlineChildren(
|
|
437
|
-
value: unknown,
|
|
438
|
-
path: string,
|
|
439
|
-
context: ValidationContext,
|
|
440
|
-
depth: number,
|
|
441
|
-
insideLink: boolean,
|
|
442
|
-
minimum = 1,
|
|
443
|
-
): readonly SRichInlineNode[] {
|
|
444
|
-
const source = readArray(value, path, context, { minimum, maximum: S_RICH_DOCUMENT_MAX_NODES })
|
|
445
|
-
try {
|
|
446
|
-
return Object.freeze(source.map((item, index) => validateNode(
|
|
447
|
-
item,
|
|
448
|
-
`${path}[${index}]`,
|
|
449
|
-
context,
|
|
450
|
-
depth,
|
|
451
|
-
'inline',
|
|
452
|
-
insideLink,
|
|
453
|
-
) as SRichInlineNode))
|
|
454
|
-
} finally {
|
|
455
|
-
leave(value as object, context)
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
function validateBlockChildren(
|
|
460
|
-
value: unknown,
|
|
461
|
-
path: string,
|
|
462
|
-
context: ValidationContext,
|
|
463
|
-
depth: number,
|
|
464
|
-
minimum = 1,
|
|
465
|
-
): readonly SRichBlockNode[] {
|
|
466
|
-
const source = readArray(value, path, context, { minimum, maximum: S_RICH_DOCUMENT_MAX_NODES })
|
|
467
|
-
try {
|
|
468
|
-
return Object.freeze(source.map((item, index) => validateNode(
|
|
469
|
-
item,
|
|
470
|
-
`${path}[${index}]`,
|
|
471
|
-
context,
|
|
472
|
-
depth,
|
|
473
|
-
'block',
|
|
474
|
-
false,
|
|
475
|
-
) as SRichBlockNode))
|
|
476
|
-
} finally {
|
|
477
|
-
leave(value as object, context)
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
function validateTableColumn(
|
|
482
|
-
value: unknown,
|
|
483
|
-
path: string,
|
|
484
|
-
context: ValidationContext,
|
|
485
|
-
): SRichTableColumn {
|
|
486
|
-
const record = readRecord(value, path, context)
|
|
487
|
-
try {
|
|
488
|
-
assertFields(record, path, TABLE_COLUMN_FIELDS)
|
|
489
|
-
const headerPresentation = record.headerPresentation === undefined
|
|
490
|
-
? undefined
|
|
491
|
-
: readEnum(record.headerPresentation, `${path}.headerPresentation`, HEADER_PRESENTATIONS)
|
|
492
|
-
const align = record.align === undefined
|
|
493
|
-
? undefined
|
|
494
|
-
: readEnum(record.align, `${path}.align`, TABLE_ALIGNMENTS)
|
|
495
|
-
return Object.freeze({
|
|
496
|
-
id: readString(record.id, `${path}.id`, { stable: true, maximum: 256 }),
|
|
497
|
-
header: readString(record.header, `${path}.header`),
|
|
498
|
-
...(headerPresentation === undefined ? {} : { headerPresentation }),
|
|
499
|
-
...(align === undefined ? {} : { align }),
|
|
500
|
-
})
|
|
501
|
-
} finally {
|
|
502
|
-
leave(value as object, context)
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
function validateTableCell(
|
|
507
|
-
value: unknown,
|
|
508
|
-
path: string,
|
|
509
|
-
context: ValidationContext,
|
|
510
|
-
depth: number,
|
|
511
|
-
): SRichTableCell {
|
|
512
|
-
const record = readRecord(value, path, context)
|
|
513
|
-
try {
|
|
514
|
-
assertFields(record, path, TABLE_CELL_FIELDS)
|
|
515
|
-
return Object.freeze({ children: validateInlineChildren(record.children, `${path}.children`, context, depth + 1, false, 0) })
|
|
516
|
-
} finally {
|
|
517
|
-
leave(value as object, context)
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
function validateTableRow(
|
|
522
|
-
value: unknown,
|
|
523
|
-
path: string,
|
|
524
|
-
context: ValidationContext,
|
|
525
|
-
depth: number,
|
|
526
|
-
columnCount: number,
|
|
527
|
-
): SRichTableRow {
|
|
528
|
-
const record = readRecord(value, path, context)
|
|
529
|
-
try {
|
|
530
|
-
assertFields(record, path, TABLE_ROW_FIELDS)
|
|
531
|
-
const cells = readArray(record.cells, `${path}.cells`, context, { minimum: columnCount, maximum: columnCount })
|
|
532
|
-
try {
|
|
533
|
-
return Object.freeze({
|
|
534
|
-
id: readString(record.id, `${path}.id`, { stable: true, maximum: 256 }),
|
|
535
|
-
cells: Object.freeze(cells.map((cell, index) => validateTableCell(
|
|
536
|
-
cell,
|
|
537
|
-
`${path}.cells[${index}]`,
|
|
538
|
-
context,
|
|
539
|
-
depth,
|
|
540
|
-
))),
|
|
541
|
-
})
|
|
542
|
-
} finally {
|
|
543
|
-
leave(record.cells as object, context)
|
|
544
|
-
}
|
|
545
|
-
} finally {
|
|
546
|
-
leave(value as object, context)
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
function validateNode(
|
|
551
|
-
value: unknown,
|
|
552
|
-
path: string,
|
|
553
|
-
context: ValidationContext,
|
|
554
|
-
depth: number,
|
|
555
|
-
expected: 'inline' | 'block' | 'listItem' | 'action',
|
|
556
|
-
insideLink: boolean,
|
|
557
|
-
): SRichDocumentNode {
|
|
558
|
-
if (depth > S_RICH_DOCUMENT_MAX_DEPTH) fail('limit_exceeded', path, `maximum depth is ${S_RICH_DOCUMENT_MAX_DEPTH}`)
|
|
559
|
-
context.nodeCount += 1
|
|
560
|
-
if (context.nodeCount > S_RICH_DOCUMENT_MAX_NODES) {
|
|
561
|
-
fail('limit_exceeded', path, `maximum node count is ${S_RICH_DOCUMENT_MAX_NODES}`)
|
|
562
|
-
}
|
|
563
|
-
const record = readRecord(value, path, context)
|
|
564
|
-
try {
|
|
565
|
-
if (typeof record.type !== 'string' || !hasOwn(NODE_FIELDS, record.type)) {
|
|
566
|
-
fail('unknown_node_type', `${path}.type`, `unsupported node type ${JSON.stringify(record.type)}`)
|
|
567
|
-
}
|
|
568
|
-
const type = record.type as keyof typeof NODE_FIELDS
|
|
569
|
-
assertFields(record, path, NODE_FIELDS[type])
|
|
570
|
-
if (expected === 'inline' && !INLINE_NODE_TYPES.has(type)) fail('invalid_structure', path, `${type} is not an inline node`)
|
|
571
|
-
if (expected === 'block' && !BLOCK_NODE_TYPES.has(type)) fail('invalid_structure', path, `${type} is not a block node`)
|
|
572
|
-
if (expected === 'listItem' && type !== 'listItem') fail('invalid_structure', path, 'list children must be listItem nodes')
|
|
573
|
-
if (expected === 'action' && type !== 'action') fail('invalid_structure', path, 'actionGroup children must be action nodes')
|
|
574
|
-
|
|
575
|
-
if (type === 'text') return Object.freeze({ type, value: readString(record.value, `${path}.value`) })
|
|
576
|
-
if (type === 'inlineCode') return Object.freeze({ type, code: readString(record.code, `${path}.code`, { allowEmpty: true }) })
|
|
577
|
-
if (type === 'mathInline') return Object.freeze({ type, source: readString(record.source, `${path}.source`) })
|
|
578
|
-
if (type === 'strong' || type === 'emphasis') {
|
|
579
|
-
return Object.freeze({
|
|
580
|
-
type,
|
|
581
|
-
children: validateInlineChildren(record.children, `${path}.children`, context, depth + 1, insideLink),
|
|
582
|
-
})
|
|
583
|
-
}
|
|
584
|
-
if (type === 'link') {
|
|
585
|
-
if (insideLink) fail('invalid_structure', path, 'nested links are not allowed')
|
|
586
|
-
const title = readOptionalString(record.title, `${path}.title`)
|
|
587
|
-
const current = record.current === undefined
|
|
588
|
-
? undefined
|
|
589
|
-
: readBoolean(record.current, `${path}.current`)
|
|
590
|
-
return Object.freeze({
|
|
591
|
-
type,
|
|
592
|
-
href: validateUrl(record.href, `${path}.href`, 'link'),
|
|
593
|
-
...(title === undefined ? {} : { title }),
|
|
594
|
-
...(current === undefined ? {} : { current }),
|
|
595
|
-
children: validateInlineChildren(record.children, `${path}.children`, context, depth + 1, true),
|
|
596
|
-
})
|
|
597
|
-
}
|
|
598
|
-
if (type === 'paragraph') {
|
|
599
|
-
return Object.freeze({ type, children: validateInlineChildren(record.children, `${path}.children`, context, depth + 1, false) })
|
|
600
|
-
}
|
|
601
|
-
if (type === 'heading') {
|
|
602
|
-
return Object.freeze({
|
|
603
|
-
type,
|
|
604
|
-
level: readInteger(record.level, `${path}.level`, 1, 6) as SRichHeadingNode['level'],
|
|
605
|
-
children: validateInlineChildren(record.children, `${path}.children`, context, depth + 1, false),
|
|
606
|
-
})
|
|
607
|
-
}
|
|
608
|
-
if (type === 'listItem') {
|
|
609
|
-
return Object.freeze({ type, children: validateBlockChildren(record.children, `${path}.children`, context, depth + 1) })
|
|
610
|
-
}
|
|
611
|
-
if (type === 'list') {
|
|
612
|
-
const items = readArray(record.children, `${path}.children`, context, { minimum: 1, maximum: S_RICH_DOCUMENT_MAX_NODES })
|
|
613
|
-
try {
|
|
614
|
-
const ordered = readBoolean(record.ordered, `${path}.ordered`)
|
|
615
|
-
if (!ordered && record.start !== undefined) fail('invalid_structure', `${path}.start`, 'start is only valid for ordered lists')
|
|
616
|
-
const start = record.start === undefined ? undefined : readInteger(record.start, `${path}.start`, 1, Number.MAX_SAFE_INTEGER)
|
|
617
|
-
return Object.freeze({
|
|
618
|
-
type,
|
|
619
|
-
ordered,
|
|
620
|
-
...(start === undefined ? {} : { start }),
|
|
621
|
-
children: Object.freeze(items.map((item, index) => validateNode(
|
|
622
|
-
item,
|
|
623
|
-
`${path}.children[${index}]`,
|
|
624
|
-
context,
|
|
625
|
-
depth + 1,
|
|
626
|
-
'listItem',
|
|
627
|
-
false,
|
|
628
|
-
) as SRichListItemNode)),
|
|
629
|
-
})
|
|
630
|
-
} finally {
|
|
631
|
-
leave(record.children as object, context)
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
if (type === 'quote') {
|
|
635
|
-
return Object.freeze({ type, children: validateBlockChildren(record.children, `${path}.children`, context, depth + 1) })
|
|
636
|
-
}
|
|
637
|
-
if (type === 'divider') return Object.freeze({ type })
|
|
638
|
-
if (type === 'image') {
|
|
639
|
-
const caption = record.caption === undefined
|
|
640
|
-
? undefined
|
|
641
|
-
: validateInlineChildren(record.caption, `${path}.caption`, context, depth + 1, false)
|
|
642
|
-
return Object.freeze({
|
|
643
|
-
type,
|
|
644
|
-
resourceId: readString(record.resourceId, `${path}.resourceId`, { stable: true, maximum: 256 }),
|
|
645
|
-
...(caption === undefined ? {} : { caption }),
|
|
646
|
-
})
|
|
647
|
-
}
|
|
648
|
-
if (type === 'resource') {
|
|
649
|
-
const description = readOptionalString(record.description, `${path}.description`)
|
|
650
|
-
return Object.freeze({
|
|
651
|
-
type,
|
|
652
|
-
resourceId: readString(record.resourceId, `${path}.resourceId`, { stable: true, maximum: 256 }),
|
|
653
|
-
label: readString(record.label, `${path}.label`),
|
|
654
|
-
...(description === undefined ? {} : { description }),
|
|
655
|
-
})
|
|
656
|
-
}
|
|
657
|
-
if (type === 'codeBlock') {
|
|
658
|
-
const language = readOptionalString(record.language, `${path}.language`)
|
|
659
|
-
const label = readOptionalString(record.label, `${path}.label`)
|
|
660
|
-
const showLineNumbers = record.showLineNumbers === undefined
|
|
661
|
-
? undefined
|
|
662
|
-
: readBoolean(record.showLineNumbers, `${path}.showLineNumbers`)
|
|
663
|
-
return Object.freeze({
|
|
664
|
-
type,
|
|
665
|
-
code: readString(record.code, `${path}.code`, { allowEmpty: true }),
|
|
666
|
-
...(language === undefined ? {} : { language }),
|
|
667
|
-
...(label === undefined ? {} : { label }),
|
|
668
|
-
...(showLineNumbers === undefined ? {} : { showLineNumbers }),
|
|
669
|
-
})
|
|
670
|
-
}
|
|
671
|
-
if (type === 'mathBlock') {
|
|
672
|
-
const label = readOptionalString(record.label, `${path}.label`)
|
|
673
|
-
return Object.freeze({
|
|
674
|
-
type,
|
|
675
|
-
source: readString(record.source, `${path}.source`),
|
|
676
|
-
...(label === undefined ? {} : { label }),
|
|
677
|
-
})
|
|
678
|
-
}
|
|
679
|
-
if (type === 'table') {
|
|
680
|
-
const columnsSource = readArray(record.columns, `${path}.columns`, context, { minimum: 1, maximum: 100 })
|
|
681
|
-
let columns: readonly SRichTableColumn[]
|
|
682
|
-
try {
|
|
683
|
-
columns = Object.freeze(columnsSource.map((column, index) => validateTableColumn(
|
|
684
|
-
column,
|
|
685
|
-
`${path}.columns[${index}]`,
|
|
686
|
-
context,
|
|
687
|
-
)))
|
|
688
|
-
} finally {
|
|
689
|
-
leave(record.columns as object, context)
|
|
690
|
-
}
|
|
691
|
-
const columnIds = new Set<string>()
|
|
692
|
-
for (const [index, column] of columns.entries()) {
|
|
693
|
-
if (columnIds.has(column.id)) fail('duplicate_id', `${path}.columns[${index}].id`, `duplicate column ID ${JSON.stringify(column.id)}`)
|
|
694
|
-
columnIds.add(column.id)
|
|
695
|
-
}
|
|
696
|
-
const rowsSource = readArray(record.rows, `${path}.rows`, context, { minimum: 0, maximum: 10_000 })
|
|
697
|
-
let rows: readonly SRichTableRow[]
|
|
698
|
-
try {
|
|
699
|
-
rows = Object.freeze(rowsSource.map((row, index) => validateTableRow(
|
|
700
|
-
row,
|
|
701
|
-
`${path}.rows[${index}]`,
|
|
702
|
-
context,
|
|
703
|
-
depth + 1,
|
|
704
|
-
columns.length,
|
|
705
|
-
)))
|
|
706
|
-
} finally {
|
|
707
|
-
leave(record.rows as object, context)
|
|
708
|
-
}
|
|
709
|
-
const rowIds = new Set<string>()
|
|
710
|
-
for (const [index, row] of rows.entries()) {
|
|
711
|
-
if (rowIds.has(row.id)) fail('duplicate_id', `${path}.rows[${index}].id`, `duplicate row ID ${JSON.stringify(row.id)}`)
|
|
712
|
-
rowIds.add(row.id)
|
|
713
|
-
}
|
|
714
|
-
return Object.freeze({ type, label: readString(record.label, `${path}.label`), columns, rows })
|
|
715
|
-
}
|
|
716
|
-
if (type === 'callout') {
|
|
717
|
-
const title = readOptionalString(record.title, `${path}.title`)
|
|
718
|
-
return Object.freeze({
|
|
719
|
-
type,
|
|
720
|
-
tone: readEnum(record.tone, `${path}.tone`, CALLOUT_TONES),
|
|
721
|
-
...(title === undefined ? {} : { title }),
|
|
722
|
-
children: validateBlockChildren(record.children, `${path}.children`, context, depth + 1),
|
|
723
|
-
})
|
|
724
|
-
}
|
|
725
|
-
if (type === 'action') {
|
|
726
|
-
const id = readString(record.id, `${path}.id`, { stable: true, maximum: 256 })
|
|
727
|
-
if (context.actionIds.has(id)) fail('duplicate_id', `${path}.id`, `duplicate action ID ${JSON.stringify(id)}`)
|
|
728
|
-
context.actionIds.add(id)
|
|
729
|
-
const appearance = record.appearance === undefined
|
|
730
|
-
? undefined
|
|
731
|
-
: readEnum(record.appearance, `${path}.appearance`, ACTION_APPEARANCES)
|
|
732
|
-
const disabled = record.disabled === undefined ? undefined : readBoolean(record.disabled, `${path}.disabled`)
|
|
733
|
-
return Object.freeze({
|
|
734
|
-
type,
|
|
735
|
-
id,
|
|
736
|
-
label: readString(record.label, `${path}.label`),
|
|
737
|
-
...(appearance === undefined ? {} : { appearance }),
|
|
738
|
-
...(disabled === undefined ? {} : { disabled }),
|
|
739
|
-
})
|
|
740
|
-
}
|
|
741
|
-
const actions = readArray(record.actions, `${path}.actions`, context, { minimum: 1, maximum: 100 })
|
|
742
|
-
try {
|
|
743
|
-
const label = readOptionalString(record.label, `${path}.label`)
|
|
744
|
-
return Object.freeze({
|
|
745
|
-
type: 'actionGroup',
|
|
746
|
-
...(label === undefined ? {} : { label }),
|
|
747
|
-
actions: Object.freeze(actions.map((action, index) => validateNode(
|
|
748
|
-
action,
|
|
749
|
-
`${path}.actions[${index}]`,
|
|
750
|
-
context,
|
|
751
|
-
depth + 1,
|
|
752
|
-
'action',
|
|
753
|
-
false,
|
|
754
|
-
) as SRichActionNode)),
|
|
755
|
-
})
|
|
756
|
-
} finally {
|
|
757
|
-
leave(record.actions as object, context)
|
|
758
|
-
}
|
|
759
|
-
} finally {
|
|
760
|
-
leave(value as object, context)
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
|
|
764
|
-
/** Validates, clones, and freezes a closed V1 document before rendering. */
|
|
765
|
-
export function validateRichDocument(value: unknown): SRichDocumentV1 {
|
|
766
|
-
const context: ValidationContext = { ancestors: new Set<object>(), actionIds: new Set<string>(), nodeCount: 0 }
|
|
767
|
-
const record = readRecord(value, 'document', context)
|
|
768
|
-
try {
|
|
769
|
-
assertFields(record, 'document', DOCUMENT_FIELDS)
|
|
770
|
-
if (record.version !== S_RICH_DOCUMENT_VERSION) {
|
|
771
|
-
fail('unsupported_version', 'document.version', `expected ${S_RICH_DOCUMENT_VERSION}`)
|
|
772
|
-
}
|
|
773
|
-
return Object.freeze({
|
|
774
|
-
version: S_RICH_DOCUMENT_VERSION,
|
|
775
|
-
id: readString(record.id, 'document.id', { stable: true, maximum: 256 }),
|
|
776
|
-
nodes: validateBlockChildren(record.nodes, 'document.nodes', context, 1, 0),
|
|
777
|
-
})
|
|
778
|
-
} finally {
|
|
779
|
-
leave(value as object, context)
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
|
|
783
|
-
function validateResource(
|
|
784
|
-
value: unknown,
|
|
785
|
-
path: string,
|
|
786
|
-
context: ValidationContext,
|
|
787
|
-
): SRichDocumentResource {
|
|
788
|
-
const record = readRecord(value, path, context)
|
|
789
|
-
try {
|
|
790
|
-
assertFields(record, path, RESOURCE_FIELDS)
|
|
791
|
-
const kind = readEnum(record.kind, `${path}.kind`, new Set(['image', 'file'] as const))
|
|
792
|
-
const common = {
|
|
793
|
-
id: readString(record.id, `${path}.id`, { stable: true, maximum: 256 }),
|
|
794
|
-
url: validateUrl(record.url, `${path}.url`, 'resource'),
|
|
795
|
-
...(record.title === undefined ? {} : { title: readString(record.title, `${path}.title`) }),
|
|
796
|
-
}
|
|
797
|
-
if (kind === 'image') {
|
|
798
|
-
for (const field of ['label', 'mediaType', 'byteSize']) {
|
|
799
|
-
if (record[field] !== undefined) fail('unknown_field', `${path}.${field}`, `field is not valid for ${kind}`)
|
|
800
|
-
}
|
|
801
|
-
return Object.freeze({ ...common, kind, alt: readString(record.alt, `${path}.alt`, { allowEmpty: true }) })
|
|
802
|
-
}
|
|
803
|
-
if (record.alt !== undefined) fail('unknown_field', `${path}.alt`, `field is not valid for ${kind}`)
|
|
804
|
-
const mediaType = readOptionalString(record.mediaType, `${path}.mediaType`)
|
|
805
|
-
const byteSize = record.byteSize === undefined
|
|
806
|
-
? undefined
|
|
807
|
-
: readInteger(record.byteSize, `${path}.byteSize`, 0, Number.MAX_SAFE_INTEGER)
|
|
808
|
-
return Object.freeze({
|
|
809
|
-
...common,
|
|
810
|
-
kind,
|
|
811
|
-
label: readString(record.label, `${path}.label`),
|
|
812
|
-
...(mediaType === undefined ? {} : { mediaType }),
|
|
813
|
-
...(byteSize === undefined ? {} : { byteSize }),
|
|
814
|
-
})
|
|
815
|
-
} finally {
|
|
816
|
-
leave(value as object, context)
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
/** Validates and freezes consumer-owned resource records under the resource URL policy. */
|
|
821
|
-
export function validateRichDocumentResources(value: unknown): readonly SRichDocumentResource[] {
|
|
822
|
-
const context: ValidationContext = { ancestors: new Set<object>(), actionIds: new Set<string>(), nodeCount: 0 }
|
|
823
|
-
const source = readArray(value, 'resources', context, { minimum: 0, maximum: S_RICH_DOCUMENT_MAX_NODES })
|
|
824
|
-
try {
|
|
825
|
-
const resources = Object.freeze(source.map((resource, index) => validateResource(
|
|
826
|
-
resource,
|
|
827
|
-
`resources[${index}]`,
|
|
828
|
-
context,
|
|
829
|
-
)))
|
|
830
|
-
const ids = new Set<string>()
|
|
831
|
-
for (const [index, resource] of resources.entries()) {
|
|
832
|
-
if (ids.has(resource.id)) fail('duplicate_id', `resources[${index}].id`, `duplicate resource ID ${JSON.stringify(resource.id)}`)
|
|
833
|
-
ids.add(resource.id)
|
|
834
|
-
}
|
|
835
|
-
return resources
|
|
836
|
-
} finally {
|
|
837
|
-
leave(value as object, context)
|
|
838
|
-
}
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
function visitResourceReferences(
|
|
842
|
-
nodes: readonly SRichBlockNode[],
|
|
843
|
-
visit: (resourceId: string, path: string, imageOnly: boolean) => void,
|
|
844
|
-
path = 'document.nodes',
|
|
845
|
-
): void {
|
|
846
|
-
for (const [index, node] of nodes.entries()) {
|
|
847
|
-
const nodePath = `${path}[${index}]`
|
|
848
|
-
if (node.type === 'image') visit(node.resourceId, `${nodePath}.resourceId`, true)
|
|
849
|
-
if (node.type === 'resource') visit(node.resourceId, `${nodePath}.resourceId`, false)
|
|
850
|
-
if (node.type === 'list') {
|
|
851
|
-
for (const [itemIndex, item] of node.children.entries()) {
|
|
852
|
-
visitResourceReferences(item.children, visit, `${nodePath}.children[${itemIndex}].children`)
|
|
853
|
-
}
|
|
854
|
-
}
|
|
855
|
-
if (node.type === 'quote' || node.type === 'callout') {
|
|
856
|
-
visitResourceReferences(node.children, visit, `${nodePath}.children`)
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
}
|
|
860
|
-
|
|
861
|
-
/** Validates the document and resources as one referentially complete renderer model. */
|
|
862
|
-
export function validateRichDocumentModel(document: unknown, resources: unknown): SRichDocumentModel {
|
|
863
|
-
const validatedDocument = validateRichDocument(document)
|
|
864
|
-
const validatedResources = validateRichDocumentResources(resources)
|
|
865
|
-
const resourcesById = new Map(validatedResources.map((resource) => [resource.id, resource] as const))
|
|
866
|
-
visitResourceReferences(validatedDocument.nodes, (resourceId, path, imageOnly) => {
|
|
867
|
-
const resource = resourcesById.get(resourceId)
|
|
868
|
-
if (resource === undefined) fail('missing_resource', path, `resource ${JSON.stringify(resourceId)} is not declared`)
|
|
869
|
-
if (imageOnly && resource.kind !== 'image') fail('invalid_structure', path, 'image nodes require an image resource')
|
|
870
|
-
})
|
|
871
|
-
return Object.freeze({ document: validatedDocument, resources: validatedResources })
|
|
872
|
-
}
|
|
873
|
-
|
|
874
|
-
function hasOwn(value: object, key: PropertyKey): boolean {
|
|
875
|
-
return Object.prototype.hasOwnProperty.call(value, key)
|
|
876
|
-
}
|