@kosdev-code/kos-ui-plugin 2.0.0 → 2.0.18
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/dev.cjs +7 -7
- package/dev.cjs.map +1 -1
- package/dev.js +54 -51
- package/dev.js.map +1 -1
- package/index.cjs +6 -6
- package/index.cjs.map +1 -1
- package/index.js +49 -57
- package/index.js.map +1 -1
- package/lib/dev/components/storybook/control-pour-story-container/control-pour-story-container.d.ts +8 -0
- package/lib/dev/components/storybook/control-pour-story-container/control-pour-story-container.d.ts.map +1 -0
- package/lib/dev/components/storybook/control-pour-story-container/index.d.ts +2 -0
- package/lib/dev/components/storybook/control-pour-story-container/index.d.ts.map +1 -0
- package/lib/dev/components/storybook/index.d.ts +1 -0
- package/lib/dev/components/storybook/index.d.ts.map +1 -1
- package/lib/hooks/use-dynamic-component.d.ts +20 -0
- package/lib/hooks/use-dynamic-component.d.ts.map +1 -1
- package/lib/utils/contribution-reducer.d.ts.map +1 -1
- package/lib/utils/control-pour-reducer.d.ts +5 -0
- package/lib/utils/control-pour-reducer.d.ts.map +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/initialize-plugins.d.ts +39 -0
- package/lib/utils/initialize-plugins.d.ts.map +1 -1
- package/lib/utils/plugin-extension-manager.d.ts.map +1 -1
- package/lib/utils/plugin-extension-registry-init.d.ts +2 -0
- package/lib/utils/plugin-extension-registry-init.d.ts.map +1 -0
- package/lib/utils/plugin-extension-registry.d.ts +6 -0
- package/lib/utils/plugin-extension-registry.d.ts.map +1 -0
- package/lib/utils/resolve-best-extension.d.ts +12 -0
- package/lib/utils/resolve-best-extension.d.ts.map +1 -0
- package/package.json +2 -2
- package/resolve-best-extension-D5Ord7XK.cjs +2 -0
- package/resolve-best-extension-D5Ord7XK.cjs.map +1 -0
- package/resolve-best-extension-DAJIkfJh.js +272 -0
- package/resolve-best-extension-DAJIkfJh.js.map +1 -0
- package/types/global.d.ts +5 -0
- package/types/plugins.d.ts +6 -1
- package/utils.cjs +1 -1
- package/utils.cjs.map +1 -1
- package/utils.js +346 -103
- package/utils.js.map +1 -1
- package/plugin-extension-manager-7xDx0VSt.js +0 -524
- package/plugin-extension-manager-7xDx0VSt.js.map +0 -1
- package/plugin-extension-manager-D9aw-mUM.cjs +0 -2
- package/plugin-extension-manager-D9aw-mUM.cjs.map +0 -1
package/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sources":["../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-component-view.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/utils/normalize.ts","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/utils/kos-metadata-parser.ts","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-basic.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-modal.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-settings.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-utilities.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-picker.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/shell/header/kos-logo.svg","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/shell/header/header.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/shell/shell.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/cui-story-container/cui-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/nav-story-container/nav-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/setting-story-container/setting-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/setup-step-story-container/setup-step-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/utility-story-container/utility-story-container.tsx"],"sourcesContent":["import { ElementType, useEffect, useState } from \"react\";\n\ninterface DynamicComponentViewProps {\n component: string;\n location: string;\n resolver: (location: string) => any;\n props?: any;\n}\n\nexport const DynamicComponentView = ({\n component,\n location,\n resolver,\n props,\n}: DynamicComponentViewProps) => {\n const [Component, setComponent] = useState<ElementType>();\n\n useEffect(() => {\n const load = async () => {\n const result = await resolver(location);\n\n setComponent(result[component]);\n };\n\n load();\n }, [component, location, resolver]);\n\n return Component ? <Component {...props} /> : null;\n};\n","export const normalize = (json: any): Record<string, any> =>\n Object.entries(json).reduce((parsed: Record<string, any>, [key, value]) => {\n if (Array.isArray(value) || (typeof value === \"object\" && value !== null)) {\n const listKey = `${key}List`;\n const mapKey = `${key}Map`;\n\n const list: any[] = [];\n const map: Record<string, any> = {};\n\n const items = Array.isArray(value) ? value : Object.values(value);\n items.forEach((item) => {\n const data = { ...item, label: item.title };\n list.push(data);\n map[data.id] = data;\n });\n\n parsed[listKey] = list;\n parsed[mapKey] = map;\n }\n\n return parsed;\n }, {});\n","import { normalize } from \"./normalize\";\n\nexport interface KOSMetadata {\n json: any;\n [key: string]: any;\n}\n\nexport const parse = (json: any): KOSMetadata => {\n const contributes = json.kosdev.ddk.ncui.plugin.contributes;\n\n const parsed: Record<string, any> = normalize(contributes);\n\n return {\n ...parsed,\n contributes,\n json,\n };\n};\n","import styled from \"@emotion/styled\";\nimport { CardButtonGrid } from \"@kosdev-code/kos-ddk-components\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\nimport { kosComponent, useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\n\nconst DynamicViewBasicContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\ninterface DynamicViewBasicProps {\n kOSMetadata: KOSMetadata;\n list: any[];\n map: Record<string, any>;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewBasic = kosComponent(\n ({\n kOSMetadata: { experiencesMap },\n list,\n map,\n resolver,\n }: DynamicViewBasicProps) => {\n const [selectedItem, setSelectedItem] = useState<any>();\n\n const namespaces = list.map((ext) => ext.namespace) || [];\n const { t } = useKosTranslation([...new Set(namespaces)]);\n\n const selectedExperienceID = selectedItem?.experienceId;\n const experience = experiencesMap[selectedExperienceID];\n const component = experience?.component;\n const location = experience?.location;\n\n const select = useCallback(\n (itemID: string) => {\n const item = map[itemID];\n\n setSelectedItem(item);\n },\n [map]\n );\n\n const translatedList = useMemo(\n () =>\n list.map((item) => {\n return {\n ...item,\n label: t(`${item.namespace}:${item.title}`, `\"${item.title}\"`),\n };\n }),\n [list, t]\n );\n\n return (\n <DynamicViewBasicContainer>\n <CardButtonGrid items={translatedList} onSelect={select} />\n\n {component && location && (\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n />\n )}\n </DynamicViewBasicContainer>\n );\n }\n);\n","import styled from \"@emotion/styled\";\nimport { CardButtonGrid, Header, Modal } from \"@kosdev-code/kos-ddk-components\";\nimport { kosComponent, useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\n\nconst DynamicViewModalContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\ninterface DynamicViewModalProps {\n kOSMetadata: KOSMetadata;\n list: any[];\n map: Record<string, any>;\n showOpenButton?: boolean;\n showCloseButton?: boolean;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewModal = kosComponent(\n ({\n kOSMetadata: { experiencesMap },\n list,\n map,\n showOpenButton = true,\n showCloseButton = true,\n resolver,\n }: DynamicViewModalProps) => {\n const [selectedItem, setSelectedItem] = useState<any>();\n\n const namespaces = list.map((ext) => ext.namespace) || [];\n const { t } = useKosTranslation([...new Set(namespaces)]);\n\n const selectedExperienceID = selectedItem?.experienceId;\n const experience = experiencesMap[selectedExperienceID];\n const component = experience?.component;\n const location = experience?.location;\n\n const select = useCallback(\n (itemID: string) => {\n const item = map[itemID];\n\n if (item) {\n setSelectedItem(item);\n } else {\n setSelectedItem(null);\n }\n },\n [map]\n );\n\n const translatedList = useMemo(\n () =>\n list.map((item) => {\n return {\n ...item,\n label: t(`${item.namespace}:${item.title}`, `\"${item.title}\"`),\n };\n }),\n [list, t]\n );\n\n return (\n <DynamicViewModalContainer>\n <CardButtonGrid items={translatedList} onSelect={select} />\n\n {component && location && (\n <Modal mode=\"maximized\" show={true}>\n <>\n <Header\n title={t(selectedItem.title, `\"${selectedItem.title}\"`)}\n showOpenButton={showOpenButton}\n showCloseButton={showCloseButton}\n onClose={() => {\n select(\"\");\n }}\n />\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n />\n </>\n </Modal>\n )}\n </DynamicViewModalContainer>\n );\n }\n);\n","import styled from \"@emotion/styled\";\nimport {\n SettingsSubheading,\n TabContainer,\n Tabs,\n} from \"@kosdev-code/kos-ddk-components\";\nimport { useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\nimport { useMemo } from \"react\";\nimport type { SettingsDefinition } from \"../../../../types/global\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\n\nconst DynamicViewSettingsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\nconst GroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n`;\n\ninterface Setting {\n id: string;\n title: string;\n namespace: string;\n settingsGroup: string;\n experienceId: string;\n}\n\ninterface SettingsViewProps {\n experiencesMap: any;\n resolver: (location: string) => any;\n setting: Setting;\n}\n\nconst SettingView = ({\n experiencesMap,\n resolver,\n setting: { experienceId, id, namespace, title },\n}: SettingsViewProps) => {\n const { t } = useKosTranslation(namespace);\n\n const experience = experiencesMap[experienceId];\n const component = experience?.component;\n const location = experience?.location;\n\n return (\n <TabContainer>\n <SettingsSubheading>{t(title, `\"${title}\"`)}</SettingsSubheading>\n <DynamicComponentView\n key={id}\n component={component}\n location={location}\n resolver={resolver}\n />\n </TabContainer>\n );\n};\n\ninterface GroupViewProps {\n experiencesMap: any;\n group: Setting[];\n resolver: (location: string) => any;\n}\n\nconst GroupView = ({ experiencesMap, group, resolver }: GroupViewProps) => (\n <GroupContainer>\n {group.map((setting) => (\n <SettingView\n key={setting.settingsGroup}\n experiencesMap={experiencesMap}\n resolver={resolver}\n setting={setting}\n />\n ))}\n </GroupContainer>\n);\n\ninterface DynamicViewSettingsProps {\n kOSMetadata: KOSMetadata;\n list: SettingsDefinition[];\n map: Record<string, any>;\n showOpenButton?: boolean;\n showCloseButton?: boolean;\n baseRoute?: string;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewSettings = ({\n kOSMetadata: { experiencesMap },\n list,\n\n resolver,\n}: DynamicViewSettingsProps) => {\n const groups = useMemo(() => {\n const groups: Record<string, any> = {};\n\n list.forEach((item) => {\n if (!groups[item.settingsGroup]) {\n groups[item.settingsGroup] = [];\n }\n\n groups[item.settingsGroup].push(item);\n });\n\n return groups;\n }, [list]);\n\n const tabs = useMemo(\n () =>\n Object.keys(groups).map((groupName) => {\n return {\n id: groupName,\n label: groupName,\n content: (\n <GroupView\n experiencesMap={experiencesMap}\n group={groups[groupName]}\n resolver={resolver}\n />\n ),\n };\n }),\n [experiencesMap, groups, resolver]\n );\n\n return (\n <DynamicViewSettingsContainer>\n <Tabs tabs={tabs} />\n </DynamicViewSettingsContainer>\n );\n};\n","import styled from \"@emotion/styled\";\nimport { CardButtonGrid } from \"@kosdev-code/kos-ddk-components\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\nimport { kosComponent, useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\n\nconst DynamicViewUtilitiesContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\ninterface DynamicViewUtilitiesProps {\n kOSMetadata: KOSMetadata;\n list: any[];\n map: Record<string, any>;\n showOpenButton?: boolean;\n showCloseButton?: boolean;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewUtilities = kosComponent(\n ({\n kOSMetadata: { experiencesMap },\n list,\n map,\n resolver,\n }: DynamicViewUtilitiesProps) => {\n const [selectedItem, setSelectedItem] = useState<any>();\n\n const namespaces = list.map((ext) => ext.namespace) || [];\n const { t } = useKosTranslation([...new Set(namespaces)]);\n\n const selectedExperienceID = selectedItem?.experienceId;\n const experience = experiencesMap[selectedExperienceID];\n const component = experience?.component;\n const location = experience?.location;\n\n const select = useCallback(\n (itemID: string) => {\n const item = map[itemID];\n\n if (item) {\n setSelectedItem(item);\n } else {\n setSelectedItem(null);\n }\n },\n [map]\n );\n\n const translatedList = useMemo(\n () =>\n list.map((item) => {\n return {\n ...item,\n label: t(`${item.namespace}:${item.title}`, `\"${item.title}\"`),\n };\n }),\n [list, t]\n );\n\n return (\n <DynamicViewUtilitiesContainer>\n <CardButtonGrid items={translatedList} onSelect={select} />\n\n {component && location && (\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n props={{ onComplete: select }}\n />\n )}\n </DynamicViewUtilitiesContainer>\n );\n }\n);\n","import { TabRouter } from \"@kosdev-code/kos-ddk-components\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { useMemo } from \"react\";\nimport { parse } from \"../../utils\";\nimport { DynamicViewBasic } from \"./dynamic-view-basic\";\nimport { DynamicViewModal } from \"./dynamic-view-modal\";\nimport { DynamicViewSettings } from \"./dynamic-view-settings\";\nimport { DynamicViewUtilities } from \"./dynamic-view-utilities\";\n\nconst contentComponentMap: Record<string, any> = {\n cui: (props: any) => <DynamicViewModal {...props} showOpenButton={false} />,\n utilities: DynamicViewUtilities,\n setupStep: DynamicViewModal,\n settings: (props: any) => (\n <DynamicViewSettings baseRoute=\"settings\" {...props} />\n ),\n};\n\ninterface DynamicContainerProps {\n kOSJSON: any;\n resolver: (location: string) => any;\n}\n\nexport const DynamicContainer: React.FunctionComponent<DynamicContainerProps> =\n kosComponent(({ kOSJSON, resolver }) => {\n const kOSMetadata = useMemo(() => parse(kOSJSON), [kOSJSON]);\n\n const tabs = useMemo(\n () =>\n Object.keys(kOSMetadata.contributes)\n .filter(\n (key) =>\n Array.isArray(kOSMetadata.contributes[key]) &&\n kOSMetadata.contributes[key].length\n )\n .map((key) => {\n const Component = contentComponentMap[key] || DynamicViewBasic;\n\n return {\n id: key,\n label: key,\n content: (\n <Component\n key={key}\n kOSMetadata={kOSMetadata}\n list={kOSMetadata[`${key}List`]}\n map={kOSMetadata[`${key}Map`]}\n resolver={resolver}\n />\n ),\n };\n }),\n []\n );\n\n return <TabRouter baseRoute=\"\" tabs={tabs} />;\n });\n","import styled from \"@emotion/styled\";\nimport { PickerCard } from \"@kosdev-code/kos-ddk-components\";\nimport { useCallback, useState } from \"react\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\nimport { KOSMetadata } from \"../../utils\";\n\nconst DynamicViewPickerContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n width: 100%;\n`;\n\ninterface DynamicViewPickerProps {\n kOSMetadata: KOSMetadata;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewPicker = ({\n kOSMetadata: { defaultExperienceId, experienceList, experienceMap },\n resolver,\n}: DynamicViewPickerProps) => {\n const [selectedExperienceID, setSelectedExperienceID] =\n useState(defaultExperienceId);\n\n const component = experienceMap[selectedExperienceID].component;\n const location = experienceMap[selectedExperienceID].location;\n\n const save = useCallback((experienceID: string) => {\n setSelectedExperienceID(experienceID);\n }, []);\n\n return (\n <DynamicViewPickerContainer>\n <PickerCard\n label=\"Experience\"\n items={experienceList}\n selectedItemId={selectedExperienceID}\n cancelButtonLabel=\"Cancel\"\n proceedButtonLabel=\"Select\"\n onSave={save}\n displayValue={component}\n />\n\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n />\n </DynamicViewPickerContainer>\n );\n};\n","export default \"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='kos_logo_full'%20data-name='kos_logo_full'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2041.58%2016.95'%20fill='%23fff'%3e%3cpath%20d='m21.49,12.39c-.7-.38-1.25-.91-1.64-1.59-.4-.68-.59-1.45-.59-2.32s.2-1.64.59-2.32c.4-.68.94-1.21,1.64-1.59.7-.38,1.49-.57,2.38-.57s1.68.19,2.38.57c.7.38,1.25.91,1.64,1.59.4.68.59,1.45.59,2.32s-.2,1.64-.59,2.32c-.4.68-.94,1.21-1.64,1.59-.7.38-1.49.57-2.38.57s-1.68-.19-2.38-.57Zm3.76-1.49c.4-.24.72-.56.95-.98.23-.42.34-.9.34-1.43s-.11-1.01-.34-1.43c-.23-.42-.54-.75-.95-.98-.4-.24-.86-.35-1.37-.35s-.97.12-1.37.35c-.4.24-.72.56-.95.98-.23.42-.34.9-.34,1.43s.11,1.01.34,1.43c.23.42.54.75.95.98.4.24.86.35,1.37.35s.97-.12,1.37-.35Zm6.34,1.67c-.73-.24-1.32-.56-1.76-.98l1.16-1.42c.81.72,1.77,1.08,2.89,1.08.51,0,.92-.1,1.24-.29.31-.19.47-.43.47-.71,0-.21-.09-.38-.28-.53-.18-.14-.5-.26-.94-.35l-1.84-.35c-.8-.15-1.4-.43-1.79-.83-.4-.4-.59-.91-.59-1.51,0-.54.16-1.02.47-1.42.32-.4.76-.71,1.32-.93s1.2-.32,1.91-.32c.67,0,1.32.1,1.93.29s1.15.49,1.6.9l-1.08,1.38c-.76-.62-1.6-.92-2.51-.92-.49,0-.89.08-1.22.25-.32.17-.49.38-.49.64,0,.17.08.32.25.44.16.13.48.24.94.32l1.7.31c.85.16,1.49.46,1.91.91.43.44.64.97.64,1.59,0,.55-.15,1.04-.44,1.46s-.71.75-1.25.98-1.17.35-1.88.35c-.86,0-1.65-.12-2.38-.35ZM41.5,1c0-.55-.46-1-1.01-1H1C.45,0,0,.45,0,1v14.95c0,.55.45,1,1,1h15.2v-.02s.06.02.1.02h24.29c.55,0,1-.45.99-1l-.08-14.95Zm-25.21,14.95l-.09-14.95h24.3s.09,14.95.09,14.95h-24.3Zm-8.34-7.1l-1.66,1.64v2.32h-1.88V4.16h1.88v4.09l4.1-4.09h2.27l-3.42,3.4,3.62,5.24h-2.23l-2.69-3.96Z'%20/%3e%3c/svg%3e\"","import styled from \"@emotion/styled\";\nimport {\n Container,\n TopNavigationButtonList,\n} from \"@kosdev-code/kos-ddk-components\";\nimport { ReactNode, useMemo } from \"react\";\nimport kosLogo from \"./kos-logo.svg\";\n\nconst HeaderStyles = styled.div`\n background-color: var(--ddk-component-top-navigation-background-color);\n color: var(--ddk-component-top-navigation-color);\n`;\n\nconst ContainerStyles = styled.div`\n padding: var(--ddk-component-top-navigation-padding);\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst LogoContainerStyles = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n`;\n\nconst LogoStyles = styled.div`\n width: 100px;\n`;\n\nconst TitleStyles = styled.h1`\n font-size: 16px;\n`;\n\nconst useNavigationItems = () => {\n const navigationItems = useMemo(() => {\n const navigationItems: { children: ReactNode; to: string }[] = [\n // { children: 'Develop', to: '/develop' }\n ];\n\n return navigationItems;\n }, []);\n\n return navigationItems;\n};\n\nexport const Header = () => {\n const navigationItems = useNavigationItems();\n\n return (\n <HeaderStyles>\n <Container>\n <ContainerStyles>\n <LogoContainerStyles>\n <LogoStyles>\n <img alt=\"kOS logo\" src={kosLogo} />\n </LogoStyles>\n <TitleStyles>Welcome to kOS</TitleStyles>\n </LogoContainerStyles>\n <TopNavigationButtonList items={navigationItems} />\n </ContainerStyles>\n </Container>\n </HeaderStyles>\n );\n};\n","import styled from \"@emotion/styled\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { ReactNode } from \"react\";\nimport { Header } from \"./header\";\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100vh;\n`;\n\nconst Body = styled.div`\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n`;\n\ninterface ShellProps {\n children: ReactNode;\n}\n\nexport const Shell = kosComponent(({ children }: ShellProps) => (\n <Container>\n <Header />\n <Body>{children}</Body>\n </Container>\n));\n","import {\n BackButton,\n Header,\n Modal,\n useComponentConfigurationContext,\n} from \"@kosdev-code/kos-ddk-components\";\nimport type { ReactNode } from \"react\";\n\ninterface CUIStoryContainerProps {\n children: ReactNode;\n}\n\nexport const CUIStoryContainer = ({ children }: CUIStoryContainerProps) => {\n const { componentModeOverride } = useComponentConfigurationContext();\n\n return (\n <Modal\n contain={componentModeOverride !== \"compact\"}\n mode=\"maximized\"\n show={true}\n >\n <>\n <Header\n CloseButton={\n componentModeOverride === \"compact\" ? BackButton : undefined\n }\n contain={componentModeOverride === \"compact\"}\n showCloseButton={true}\n showOpenButton={false}\n title=\"CUI\"\n />\n {children}\n </>\n </Modal>\n );\n};\n","import type { ReactNode } from \"react\";\n\ninterface NavStoryContainerProps {\n children: ReactNode;\n}\n\nexport const NavStoryContainer = ({ children }: NavStoryContainerProps) =>\n children;\n","import {\n SettingsSubheading,\n TabContainer,\n} from \"@kosdev-code/kos-ddk-components\";\nimport type { ReactNode } from \"react\";\n\ninterface SettingStoryContainerProps {\n children: ReactNode;\n}\n\nexport const SettingStoryContainer = ({\n children,\n}: SettingStoryContainerProps) => (\n <TabContainer>\n <SettingsSubheading>Setting</SettingsSubheading>\n {children}\n </TabContainer>\n);\n","import {\n BackButton,\n Header,\n Modal,\n useComponentConfigurationContext,\n} from \"@kosdev-code/kos-ddk-components\";\nimport type { ReactNode } from \"react\";\n\ninterface SetupStepStoryContainerProps {\n children: ReactNode;\n}\n\nexport const SetupStepStoryContainer = ({\n children,\n}: SetupStepStoryContainerProps) => {\n const { componentModeOverride } = useComponentConfigurationContext();\n\n return (\n <Modal\n contain={componentModeOverride !== \"compact\"}\n mode=\"maximized\"\n show={true}\n >\n <>\n <Header\n CloseButton={\n componentModeOverride === \"compact\" ? BackButton : undefined\n }\n contain={componentModeOverride === \"compact\"}\n showCloseButton={true}\n showOpenButton={true}\n title=\"Setup Step\"\n />\n {children}\n </>\n </Modal>\n );\n};\n","import type { ReactNode } from \"react\";\n\ninterface UtilityStoryContainerProps {\n children: ReactNode;\n}\n\nexport const UtilityStoryContainer = ({\n children,\n}: UtilityStoryContainerProps) => children;\n"],"names":["DynamicComponentView","component","location","resolver","props","Component","setComponent","useState","useEffect","result","jsx","normalize","json","parsed","key","value","listKey","mapKey","list","map","item","data","parse","contributes","DynamicViewBasicContainer","styled","DynamicViewBasic","kosComponent","experiencesMap","selectedItem","setSelectedItem","namespaces","ext","t","useKosTranslation","selectedExperienceID","experience","select","useCallback","itemID","translatedList","useMemo","CardButtonGrid","DynamicViewModalContainer","DynamicViewModal","showOpenButton","showCloseButton","Modal","jsxs","Fragment","Header","DynamicViewSettingsContainer","GroupContainer","SettingView","experienceId","id","namespace","title","TabContainer","SettingsSubheading","GroupView","group","setting","DynamicViewSettings","groups","tabs","groupName","Tabs","DynamicViewUtilitiesContainer","DynamicViewUtilities","contentComponentMap","DynamicContainer","kOSJSON","kOSMetadata","TabRouter","DynamicViewPickerContainer","DynamicViewPicker","defaultExperienceId","experienceList","experienceMap","setSelectedExperienceID","save","experienceID","PickerCard","kosLogo","HeaderStyles","ContainerStyles","LogoContainerStyles","LogoStyles","TitleStyles","useNavigationItems","navigationItems","Container","TopNavigationButtonList","Body","Shell","children","CUIStoryContainer","componentModeOverride","useComponentConfigurationContext","BackButton","NavStoryContainer","SettingStoryContainer","SetupStepStoryContainer","UtilityStoryContainer"],"mappings":";;;;;;AASO,MAAMA,IAAuB,CAAC;AAAA,EACnC,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AACF,MAAiC;AAC/B,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAsB;AAExD,SAAAC,EAAU,MAAM;AAOT,KANQ,YAAY;AACjB,YAAAC,IAAS,MAAMN,EAASD,CAAQ;AAEzB,MAAAI,EAAAG,EAAOR,CAAS,CAAC;AAAA,IAAA;EAI/B,GAAA,CAACA,GAAWC,GAAUC,CAAQ,CAAC,GAE3BE,IAAY,gBAAAK,EAACL,GAAW,EAAA,GAAGD,GAAO,IAAK;AAChD,GC5BaO,IAAY,CAACC,MACxB,OAAO,QAAQA,CAAI,EAAE,OAAO,CAACC,GAA6B,CAACC,GAAKC,CAAK,MAAM;AACrE,MAAA,MAAM,QAAQA,CAAK,KAAM,OAAOA,KAAU,YAAYA,MAAU,MAAO;AACnE,UAAAC,IAAU,GAAGF,CAAG,QAChBG,IAAS,GAAGH,CAAG,OAEfI,IAAc,CAAA,GACdC,IAA2B,CAAA;AAG3B,KADQ,MAAM,QAAQJ,CAAK,IAAIA,IAAQ,OAAO,OAAOA,CAAK,GAC1D,QAAQ,CAACK,MAAS;AACtB,YAAMC,IAAO,EAAE,GAAGD,GAAM,OAAOA,EAAK;AACpC,MAAAF,EAAK,KAAKG,CAAI,GACVF,EAAAE,EAAK,EAAE,IAAIA;AAAA,IAAA,CAChB,GAEDR,EAAOG,CAAO,IAAIE,GAClBL,EAAOI,CAAM,IAAIE;AAAA,EACnB;AAEO,SAAAN;AACT,GAAG,EAAE,GCdMS,IAAQ,CAACV,MAA2B;AAC/C,QAAMW,IAAcX,EAAK,OAAO,IAAI,KAAK,OAAO;AAIzC,SAAA;AAAA,IACL,GAHkCD,EAAUY,CAAW;AAAA,IAIvD,aAAAA;AAAA,IACA,MAAAX;AAAA,EAAA;AAEJ,GCVMY,IAA4BC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAc5BC,IAAmBC;AAAA,EAC9B,CAAC;AAAA,IACC,aAAa,EAAE,gBAAAC,EAAe;AAAA,IAC9B,MAAAV;AAAA,IACA,KAAAC;AAAA,IACA,UAAAhB;AAAA,EAAA,MAC2B;AAC3B,UAAM,CAAC0B,GAAcC,CAAe,IAAIvB,EAAc,GAEhDwB,IAAab,EAAK,IAAI,CAACc,MAAQA,EAAI,SAAS,KAAK,IACjD,EAAE,GAAAC,EAAE,IAAIC,EAAkB,CAAC,GAAG,IAAI,IAAIH,CAAU,CAAC,CAAC,GAElDI,IAAuBN,KAAA,gBAAAA,EAAc,cACrCO,IAAaR,EAAeO,CAAoB,GAChDlC,IAAYmC,KAAA,gBAAAA,EAAY,WACxBlC,IAAWkC,KAAA,gBAAAA,EAAY,UAEvBC,IAASC;AAAA,MACb,CAACC,MAAmB;AACZ,cAAAnB,IAAOD,EAAIoB,CAAM;AAEvB,QAAAT,EAAgBV,CAAI;AAAA,MACtB;AAAA,MACA,CAACD,CAAG;AAAA,IAAA,GAGAqB,IAAiBC;AAAA,MACrB,MACEvB,EAAK,IAAI,CAACE,OACD;AAAA,QACL,GAAGA;AAAA,QACH,OAAOa,EAAE,GAAGb,EAAK,SAAS,IAAIA,EAAK,KAAK,IAAI,IAAIA,EAAK,KAAK,GAAG;AAAA,MAAA,EAEhE;AAAA,MACH,CAACF,GAAMe,CAAC;AAAA,IAAA;AAGV,6BACGT,GACC,EAAA,UAAA;AAAA,MAAA,gBAAAd,EAACgC,GAAe,EAAA,OAAOF,GAAgB,UAAUH,GAAQ;AAAA,MAExDpC,KAAaC,KACZ,gBAAAQ;AAAA,QAACV;AAAA,QAAA;AAAA,UACC,WAAAC;AAAA,UACA,UAAAC;AAAA,UACA,UAAAC;AAAA,QAAA;AAAA,MACF;AAAA,IAEJ,EAAA,CAAA;AAAA,EAEJ;AACF,GCjEMwC,IAA4BlB,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAgB5BmB,IAAmBjB;AAAA,EAC9B,CAAC;AAAA,IACC,aAAa,EAAE,gBAAAC,EAAe;AAAA,IAC9B,MAAAV;AAAA,IACA,KAAAC;AAAA,IACA,gBAAA0B,IAAiB;AAAA,IACjB,iBAAAC,IAAkB;AAAA,IAClB,UAAA3C;AAAA,EAAA,MAC2B;AAC3B,UAAM,CAAC0B,GAAcC,CAAe,IAAIvB,EAAc,GAEhDwB,IAAab,EAAK,IAAI,CAACc,MAAQA,EAAI,SAAS,KAAK,IACjD,EAAE,GAAAC,EAAE,IAAIC,EAAkB,CAAC,GAAG,IAAI,IAAIH,CAAU,CAAC,CAAC,GAElDI,IAAuBN,KAAA,gBAAAA,EAAc,cACrCO,IAAaR,EAAeO,CAAoB,GAChDlC,IAAYmC,KAAA,gBAAAA,EAAY,WACxBlC,IAAWkC,KAAA,gBAAAA,EAAY,UAEvBC,IAASC;AAAA,MACb,CAACC,MAAmB;AACZ,cAAAnB,IAAOD,EAAIoB,CAAM;AAEvB,QACET,EADEV,KAGc,IAFI;AAAA,MAIxB;AAAA,MACA,CAACD,CAAG;AAAA,IAAA,GAGAqB,IAAiBC;AAAA,MACrB,MACEvB,EAAK,IAAI,CAACE,OACD;AAAA,QACL,GAAGA;AAAA,QACH,OAAOa,EAAE,GAAGb,EAAK,SAAS,IAAIA,EAAK,KAAK,IAAI,IAAIA,EAAK,KAAK,GAAG;AAAA,MAAA,EAEhE;AAAA,MACH,CAACF,GAAMe,CAAC;AAAA,IAAA;AAGV,6BACGU,GACC,EAAA,UAAA;AAAA,MAAA,gBAAAjC,EAACgC,GAAe,EAAA,OAAOF,GAAgB,UAAUH,GAAQ;AAAA,MAExDpC,KAAaC,KACX,gBAAAQ,EAAAqC,GAAA,EAAM,MAAK,aAAY,MAAM,IAC5B,UACE,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,QAAA,gBAAAvC;AAAA,UAACwC;AAAAA,UAAA;AAAA,YACC,OAAOjB,EAAEJ,EAAa,OAAO,IAAIA,EAAa,KAAK,GAAG;AAAA,YACtD,gBAAAgB;AAAA,YACA,iBAAAC;AAAA,YACA,SAAS,MAAM;AACb,cAAAT,EAAO,EAAE;AAAA,YACX;AAAA,UAAA;AAAA,QACF;AAAA,QACA,gBAAA3B;AAAA,UAACV;AAAA,UAAA;AAAA,YACC,WAAAC;AAAA,YACA,UAAAC;AAAA,YACA,UAAAC;AAAA,UAAA;AAAA,QACF;AAAA,MAAA,EAAA,CACF,EACF,CAAA;AAAA,IAEJ,EAAA,CAAA;AAAA,EAEJ;AACF,GChFMgD,IAA+B1B,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOtC2B,IAAiB3B,EAAO;AAAA;AAAA;AAAA;AAAA,GAoBxB4B,IAAc,CAAC;AAAA,EACnB,gBAAAzB;AAAA,EACA,UAAAzB;AAAA,EACA,SAAS,EAAE,cAAAmD,GAAc,IAAAC,GAAI,WAAAC,GAAW,OAAAC,EAAM;AAChD,MAAyB;AACvB,QAAM,EAAE,GAAAxB,EAAA,IAAMC,EAAkBsB,CAAS,GAEnCpB,IAAaR,EAAe0B,CAAY,GACxCrD,IAAYmC,KAAA,gBAAAA,EAAY,WACxBlC,IAAWkC,KAAA,gBAAAA,EAAY;AAE7B,2BACGsB,GACC,EAAA,UAAA;AAAA,IAAA,gBAAAhD,EAACiD,KAAoB,UAAE1B,EAAAwB,GAAO,IAAIA,CAAK,GAAG,GAAE;AAAA,IAC5C,gBAAA/C;AAAA,MAACV;AAAA,MAAA;AAAA,QAEC,WAAAC;AAAA,QACA,UAAAC;AAAA,QACA,UAAAC;AAAA,MAAA;AAAA,MAHKoD;AAAA,IAIP;AAAA,EACF,EAAA,CAAA;AAEJ,GAQMK,IAAY,CAAC,EAAE,gBAAAhC,GAAgB,OAAAiC,GAAO,UAAA1D,EAAA,MAC1C,gBAAAO,EAAC0C,GACE,EAAA,UAAAS,EAAM,IAAI,CAACC,MACV,gBAAApD;AAAA,EAAC2C;AAAA,EAAA;AAAA,IAEC,gBAAAzB;AAAA,IACA,UAAAzB;AAAA,IACA,SAAA2D;AAAA,EAAA;AAAA,EAHKA,EAAQ;AAIf,CACD,EACH,CAAA,GAaWC,IAAsB,CAAC;AAAA,EAClC,aAAa,EAAE,gBAAAnC,EAAe;AAAA,EAC9B,MAAAV;AAAA,EAEA,UAAAf;AACF,MAAgC;AACxB,QAAA6D,IAASvB,EAAQ,MAAM;AAC3B,UAAMuB,IAA8B,CAAA;AAE/B,WAAA9C,EAAA,QAAQ,CAACE,MAAS;AACrB,MAAK4C,EAAO5C,EAAK,aAAa,MAC5B4C,EAAO5C,EAAK,aAAa,IAAI,KAG/B4C,EAAO5C,EAAK,aAAa,EAAE,KAAKA,CAAI;AAAA,IAAA,CACrC,GAEM4C;AAAAA,EAAA,GACN,CAAC9C,CAAI,CAAC,GAEH+C,IAAOxB;AAAA,IACX,MACE,OAAO,KAAKuB,CAAM,EAAE,IAAI,CAACE,OAChB;AAAA,MACL,IAAIA;AAAA,MACJ,OAAOA;AAAA,MACP,SACE,gBAAAxD;AAAA,QAACkD;AAAA,QAAA;AAAA,UACC,gBAAAhC;AAAA,UACA,OAAOoC,EAAOE,CAAS;AAAA,UACvB,UAAA/D;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,EAGL;AAAA,IACH,CAACyB,GAAgBoC,GAAQ7D,CAAQ;AAAA,EAAA;AAGnC,SACG,gBAAAO,EAAAyC,GAAA,EACC,UAAC,gBAAAzC,EAAAyD,GAAA,EAAK,MAAAF,GAAY,EACpB,CAAA;AAEJ,GChIMG,IAAgC3C,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAgBhC4C,IAAuB1C;AAAA,EAClC,CAAC;AAAA,IACC,aAAa,EAAE,gBAAAC,EAAe;AAAA,IAC9B,MAAAV;AAAA,IACA,KAAAC;AAAA,IACA,UAAAhB;AAAA,EAAA,MAC+B;AAC/B,UAAM,CAAC0B,GAAcC,CAAe,IAAIvB,EAAc,GAEhDwB,IAAab,EAAK,IAAI,CAACc,MAAQA,EAAI,SAAS,KAAK,IACjD,EAAE,GAAAC,EAAE,IAAIC,EAAkB,CAAC,GAAG,IAAI,IAAIH,CAAU,CAAC,CAAC,GAElDI,IAAuBN,KAAA,gBAAAA,EAAc,cACrCO,IAAaR,EAAeO,CAAoB,GAChDlC,IAAYmC,KAAA,gBAAAA,EAAY,WACxBlC,IAAWkC,KAAA,gBAAAA,EAAY,UAEvBC,IAASC;AAAA,MACb,CAACC,MAAmB;AACZ,cAAAnB,IAAOD,EAAIoB,CAAM;AAEvB,QACET,EADEV,KAGc,IAFI;AAAA,MAIxB;AAAA,MACA,CAACD,CAAG;AAAA,IAAA,GAGAqB,IAAiBC;AAAA,MACrB,MACEvB,EAAK,IAAI,CAACE,OACD;AAAA,QACL,GAAGA;AAAA,QACH,OAAOa,EAAE,GAAGb,EAAK,SAAS,IAAIA,EAAK,KAAK,IAAI,IAAIA,EAAK,KAAK,GAAG;AAAA,MAAA,EAEhE;AAAA,MACH,CAACF,GAAMe,CAAC;AAAA,IAAA;AAGV,6BACGmC,GACC,EAAA,UAAA;AAAA,MAAA,gBAAA1D,EAACgC,GAAe,EAAA,OAAOF,GAAgB,UAAUH,GAAQ;AAAA,MAExDpC,KAAaC,KACZ,gBAAAQ;AAAA,QAACV;AAAA,QAAA;AAAA,UACC,WAAAC;AAAA,UACA,UAAAC;AAAA,UACA,UAAAC;AAAA,UACA,OAAO,EAAE,YAAYkC,EAAO;AAAA,QAAA;AAAA,MAC9B;AAAA,IAEJ,EAAA,CAAA;AAAA,EAEJ;AACF,GCtEMiC,KAA2C;AAAA,EAC/C,KAAK,CAAClE,MAAe,gBAAAM,EAACkC,KAAkB,GAAGxC,GAAO,gBAAgB,IAAO;AAAA,EACzE,WAAWiE;AAAA,EACX,WAAWzB;AAAA,EACX,UAAU,CAACxC,MACT,gBAAAM,EAACqD,KAAoB,WAAU,YAAY,GAAG3D,GAAO;AAEzD,GAOamE,KACX5C,EAAa,CAAC,EAAE,SAAA6C,GAAS,UAAArE,QAAe;AAChC,QAAAsE,IAAchC,EAAQ,MAAMnB,EAAMkD,CAAO,GAAG,CAACA,CAAO,CAAC,GAErDP,IAAOxB;AAAA,IACX,MACE,OAAO,KAAKgC,EAAY,WAAW,EAChC;AAAA,MACC,CAAC3D,MACC,MAAM,QAAQ2D,EAAY,YAAY3D,CAAG,CAAC,KAC1C2D,EAAY,YAAY3D,CAAG,EAAE;AAAA,IAAA,EAEhC,IAAI,CAACA,MAAQ;AACN,YAAAT,IAAYiE,GAAoBxD,CAAG,KAAKY;AAEvC,aAAA;AAAA,QACL,IAAIZ;AAAA,QACJ,OAAOA;AAAA,QACP,SACE,gBAAAJ;AAAA,UAACL;AAAA,UAAA;AAAA,YAEC,aAAAoE;AAAA,YACA,MAAMA,EAAY,GAAG3D,CAAG,MAAM;AAAA,YAC9B,KAAK2D,EAAY,GAAG3D,CAAG,KAAK;AAAA,YAC5B,UAAAX;AAAA,UAAA;AAAA,UAJKW;AAAA,QAKP;AAAA,MAAA;AAAA,IAEJ,CACD;AAAA,IACL,CAAC;AAAA,EAAA;AAGH,SAAQ,gBAAAJ,EAAAgE,GAAA,EAAU,WAAU,IAAG,MAAAT,EAAY,CAAA;AAC7C,CAAC,GClDGU,KAA6BlD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAY7BmD,KAAoB,CAAC;AAAA,EAChC,aAAa,EAAE,qBAAAC,GAAqB,gBAAAC,GAAgB,eAAAC,EAAc;AAAA,EAClE,UAAA5E;AACF,MAA8B;AAC5B,QAAM,CAACgC,GAAsB6C,CAAuB,IAClDzE,EAASsE,CAAmB,GAExB5E,IAAY8E,EAAc5C,CAAoB,EAAE,WAChDjC,IAAW6E,EAAc5C,CAAoB,EAAE,UAE/C8C,IAAO3C,EAAY,CAAC4C,MAAyB;AACjD,IAAAF,EAAwBE,CAAY;AAAA,EACtC,GAAG,CAAE,CAAA;AAEL,2BACGP,IACC,EAAA,UAAA;AAAA,IAAA,gBAAAjE;AAAA,MAACyE;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAOL;AAAA,QACP,gBAAgB3C;AAAA,QAChB,mBAAkB;AAAA,QAClB,oBAAmB;AAAA,QACnB,QAAQ8C;AAAA,QACR,cAAchF;AAAA,MAAA;AAAA,IAChB;AAAA,IAEA,gBAAAS;AAAA,MAACV;AAAA,MAAA;AAAA,QACC,WAAAC;AAAA,QACA,UAAAC;AAAA,QACA,UAAAC;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ,GCnDeiF,KAAA,2kDCQTC,KAAe5D,EAAO;AAAA;AAAA;AAAA,GAKtB6D,KAAkB7D,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOzB8D,KAAsB9D,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAO7B+D,KAAa/D,EAAO;AAAA;AAAA,GAIpBgE,KAAchE,EAAO;AAAA;AAAA,GAIrBiE,KAAqB,MACDjD,EAAQ,MACiC;AAAA;AAAA,GAK9D,CAAE,CAAA,GAKMS,KAAS,MAAM;AAC1B,QAAMyC,IAAkBD;AAExB,SACG,gBAAAhF,EAAA2E,IAAA,EACC,UAAC,gBAAA3E,EAAAkF,GAAA,EACC,4BAACN,IACC,EAAA,UAAA;AAAA,IAAA,gBAAAtC,EAACuC,IACC,EAAA,UAAA;AAAA,MAAA,gBAAA7E,EAAC8E,MACC,UAAC,gBAAA9E,EAAA,OAAA,EAAI,KAAI,YAAW,KAAK0E,IAAS,EACpC,CAAA;AAAA,MACA,gBAAA1E,EAAC+E,MAAY,UAAc,iBAAA,CAAA;AAAA,IAAA,GAC7B;AAAA,IACA,gBAAA/E,EAACmF,GAAwB,EAAA,OAAOF,EAAiB,CAAA;AAAA,EAAA,GACnD,GACF,EACF,CAAA;AAEJ,GC5DMC,KAAYnE,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOnBqE,KAAOrE,EAAO;AAAA;AAAA;AAAA;AAAA,GAUPsE,KAAQpE,EAAa,CAAC,EAAE,UAAAqE,EAAS,wBAC3CJ,IACC,EAAA,UAAA;AAAA,EAAA,gBAAAlF,EAACwC,IAAO,EAAA;AAAA,EACR,gBAAAxC,EAACoF,MAAM,UAAAE,GAAS;AAAA,GAClB,CACD,GCfYC,KAAoB,CAAC,EAAE,UAAAD,QAAuC;AACnE,QAAA,EAAE,uBAAAE,MAA0BC;AAGhC,SAAA,gBAAAzF;AAAA,IAACqC;AAAA,IAAA;AAAA,MACC,SAASmD,MAA0B;AAAA,MACnC,MAAK;AAAA,MACL,MAAM;AAAA,MAEN,UACE,gBAAAlD,EAAAC,GAAA,EAAA,UAAA;AAAA,QAAA,gBAAAvC;AAAA,UAACwC;AAAAA,UAAA;AAAA,YACC,aACEgD,MAA0B,YAAYE,IAAa;AAAA,YAErD,SAASF,MAA0B;AAAA,YACnC,iBAAiB;AAAA,YACjB,gBAAgB;AAAA,YAChB,OAAM;AAAA,UAAA;AAAA,QACR;AAAA,QACCF;AAAA,MAAA,GACH;AAAA,IAAA;AAAA,EAAA;AAGN,GC7BaK,KAAoB,CAAC,EAAE,UAAAL,QAClCA,GCGWM,KAAwB,CAAC;AAAA,EACpC,UAAAN;AACF,wBACGtC,GACC,EAAA,UAAA;AAAA,EAAA,gBAAAhD,EAACiD,KAAmB,UAAO,UAAA,CAAA;AAAA,EAC1BqC;AAAA,EACH,CAAA,GCJWO,KAA0B,CAAC;AAAA,EACtC,UAAAP;AACF,MAAoC;AAC5B,QAAA,EAAE,uBAAAE,MAA0BC;AAGhC,SAAA,gBAAAzF;AAAA,IAACqC;AAAA,IAAA;AAAA,MACC,SAASmD,MAA0B;AAAA,MACnC,MAAK;AAAA,MACL,MAAM;AAAA,MAEN,UACE,gBAAAlD,EAAAC,GAAA,EAAA,UAAA;AAAA,QAAA,gBAAAvC;AAAA,UAACwC;AAAAA,UAAA;AAAA,YACC,aACEgD,MAA0B,YAAYE,IAAa;AAAA,YAErD,SAASF,MAA0B;AAAA,YACnC,iBAAiB;AAAA,YACjB,gBAAgB;AAAA,YAChB,OAAM;AAAA,UAAA;AAAA,QACR;AAAA,QACCF;AAAA,MAAA,GACH;AAAA,IAAA;AAAA,EAAA;AAGN,GC/BaQ,KAAwB,CAAC;AAAA,EACpC,UAAAR;AACF,MAAkCA;"}
|
|
1
|
+
{"version":3,"file":"dev.js","sources":["../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-component-view.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/utils/normalize.ts","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/utils/kos-metadata-parser.ts","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-basic.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-modal.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-settings.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-utilities.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/dynamic-view/dynamic-view-picker.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/shell/header/kos-logo.svg","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/shell/header/header.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/shell/shell.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/control-pour-story-container/control-pour-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/cui-story-container/cui-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/nav-story-container/nav-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/setting-story-container/setting-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/setup-step-story-container/setup-step-story-container.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/utility-story-container/utility-story-container.tsx"],"sourcesContent":["import { ElementType, useEffect, useState } from \"react\";\n\ninterface DynamicComponentViewProps {\n component: string;\n location: string;\n resolver: (location: string) => any;\n props?: any;\n}\n\nexport const DynamicComponentView = ({\n component,\n location,\n resolver,\n props,\n}: DynamicComponentViewProps) => {\n const [Component, setComponent] = useState<ElementType>();\n\n useEffect(() => {\n const load = async () => {\n const result = await resolver(location);\n\n setComponent(result[component]);\n };\n\n load();\n }, [component, location, resolver]);\n\n return Component ? <Component {...props} /> : null;\n};\n","export const normalize = (json: any): Record<string, any> =>\n Object.entries(json).reduce((parsed: Record<string, any>, [key, value]) => {\n if (Array.isArray(value) || (typeof value === \"object\" && value !== null)) {\n const listKey = `${key}List`;\n const mapKey = `${key}Map`;\n\n const list: any[] = [];\n const map: Record<string, any> = {};\n\n const items = Array.isArray(value) ? value : Object.values(value);\n items.forEach((item) => {\n const data = { ...item, label: item.title };\n list.push(data);\n map[data.id] = data;\n });\n\n parsed[listKey] = list;\n parsed[mapKey] = map;\n }\n\n return parsed;\n }, {});\n","import { normalize } from \"./normalize\";\n\nexport interface KOSMetadata {\n json: any;\n [key: string]: any;\n}\n\nexport const parse = (json: any): KOSMetadata => {\n const contributes = json.kosdev.ddk.ncui.plugin.contributes;\n\n const parsed: Record<string, any> = normalize(contributes);\n\n return {\n ...parsed,\n contributes,\n json,\n };\n};\n","import styled from \"@emotion/styled\";\nimport { CardButtonGrid } from \"@kosdev-code/kos-ddk-components\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\nimport { kosComponent, useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\n\nconst DynamicViewBasicContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\ninterface DynamicViewBasicProps {\n kOSMetadata: KOSMetadata;\n list: any[];\n map: Record<string, any>;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewBasic = kosComponent(\n ({\n kOSMetadata: { experiencesMap },\n list,\n map,\n resolver,\n }: DynamicViewBasicProps) => {\n const [selectedItem, setSelectedItem] = useState<any>();\n\n const namespaces = list.map((ext) => ext.namespace) || [];\n const { t } = useKosTranslation([...new Set(namespaces)]);\n\n const selectedExperienceID = selectedItem?.experienceId;\n const experience = experiencesMap[selectedExperienceID];\n const component = experience?.component;\n const location = experience?.location;\n\n const select = useCallback(\n (itemID: string) => {\n const item = map[itemID];\n\n setSelectedItem(item);\n },\n [map]\n );\n\n const translatedList = useMemo(\n () =>\n list.map((item) => {\n return {\n ...item,\n label: t(`${item.namespace}:${item.title}`, `\"${item.title}\"`),\n };\n }),\n [list, t]\n );\n\n return (\n <DynamicViewBasicContainer>\n <CardButtonGrid items={translatedList} onSelect={select} />\n\n {component && location && (\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n />\n )}\n </DynamicViewBasicContainer>\n );\n }\n);\n","import styled from \"@emotion/styled\";\nimport { CardButtonGrid, Header, Modal } from \"@kosdev-code/kos-ddk-components\";\nimport { kosComponent, useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\n\nconst DynamicViewModalContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\ninterface DynamicViewModalProps {\n kOSMetadata: KOSMetadata;\n list: any[];\n map: Record<string, any>;\n showOpenButton?: boolean;\n showCloseButton?: boolean;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewModal = kosComponent(\n ({\n kOSMetadata: { experiencesMap },\n list,\n map,\n showOpenButton = true,\n showCloseButton = true,\n resolver,\n }: DynamicViewModalProps) => {\n const [selectedItem, setSelectedItem] = useState<any>();\n\n const namespaces = list.map((ext) => ext.namespace) || [];\n const { t } = useKosTranslation([...new Set(namespaces)]);\n\n const selectedExperienceID = selectedItem?.experienceId;\n const experience = experiencesMap[selectedExperienceID];\n const component = experience?.component;\n const location = experience?.location;\n\n const select = useCallback(\n (itemID: string) => {\n const item = map[itemID];\n\n if (item) {\n setSelectedItem(item);\n } else {\n setSelectedItem(null);\n }\n },\n [map]\n );\n\n const translatedList = useMemo(\n () =>\n list.map((item) => {\n return {\n ...item,\n label: t(`${item.namespace}:${item.title}`, `\"${item.title}\"`),\n };\n }),\n [list, t]\n );\n\n return (\n <DynamicViewModalContainer>\n <CardButtonGrid items={translatedList} onSelect={select} />\n\n {component && location && (\n <Modal mode=\"maximized\" show={true}>\n <>\n <Header\n title={t(selectedItem.title, `\"${selectedItem.title}\"`)}\n showOpenButton={showOpenButton}\n showCloseButton={showCloseButton}\n onClose={() => {\n select(\"\");\n }}\n />\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n />\n </>\n </Modal>\n )}\n </DynamicViewModalContainer>\n );\n }\n);\n","import styled from \"@emotion/styled\";\nimport {\n SettingsSubheading,\n TabContainer,\n Tabs,\n} from \"@kosdev-code/kos-ddk-components\";\nimport { useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\nimport { useMemo } from \"react\";\nimport type { SettingsDefinition } from \"../../../../types/global\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\n\nconst DynamicViewSettingsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\nconst GroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n`;\n\ninterface Setting {\n id: string;\n title: string;\n namespace: string;\n settingsGroup: string;\n experienceId: string;\n}\n\ninterface SettingsViewProps {\n experiencesMap: any;\n resolver: (location: string) => any;\n setting: Setting;\n}\n\nconst SettingView = ({\n experiencesMap,\n resolver,\n setting: { experienceId, id, namespace, title },\n}: SettingsViewProps) => {\n const { t } = useKosTranslation(namespace);\n\n const experience = experiencesMap[experienceId];\n const component = experience?.component;\n const location = experience?.location;\n\n return (\n <TabContainer>\n <SettingsSubheading>{t(title, `\"${title}\"`)}</SettingsSubheading>\n <DynamicComponentView\n key={id}\n component={component}\n location={location}\n resolver={resolver}\n />\n </TabContainer>\n );\n};\n\ninterface GroupViewProps {\n experiencesMap: any;\n group: Setting[];\n resolver: (location: string) => any;\n}\n\nconst GroupView = ({ experiencesMap, group, resolver }: GroupViewProps) => (\n <GroupContainer>\n {group.map((setting) => (\n <SettingView\n key={setting.settingsGroup}\n experiencesMap={experiencesMap}\n resolver={resolver}\n setting={setting}\n />\n ))}\n </GroupContainer>\n);\n\ninterface DynamicViewSettingsProps {\n kOSMetadata: KOSMetadata;\n list: SettingsDefinition[];\n map: Record<string, any>;\n showOpenButton?: boolean;\n showCloseButton?: boolean;\n baseRoute?: string;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewSettings = ({\n kOSMetadata: { experiencesMap },\n list,\n\n resolver,\n}: DynamicViewSettingsProps) => {\n const groups = useMemo(() => {\n const groups: Record<string, any> = {};\n\n list.forEach((item) => {\n if (!groups[item.settingsGroup]) {\n groups[item.settingsGroup] = [];\n }\n\n groups[item.settingsGroup].push(item);\n });\n\n return groups;\n }, [list]);\n\n const tabs = useMemo(\n () =>\n Object.keys(groups).map((groupName) => {\n return {\n id: groupName,\n label: groupName,\n content: (\n <GroupView\n experiencesMap={experiencesMap}\n group={groups[groupName]}\n resolver={resolver}\n />\n ),\n };\n }),\n [experiencesMap, groups, resolver]\n );\n\n return (\n <DynamicViewSettingsContainer>\n <Tabs tabs={tabs} />\n </DynamicViewSettingsContainer>\n );\n};\n","import styled from \"@emotion/styled\";\nimport { CardButtonGrid } from \"@kosdev-code/kos-ddk-components\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { KOSMetadata } from \"../../utils\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\nimport { kosComponent, useKosTranslation } from \"@kosdev-code/kos-ui-sdk\";\n\nconst DynamicViewUtilitiesContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 24px;\n`;\n\ninterface DynamicViewUtilitiesProps {\n kOSMetadata: KOSMetadata;\n list: any[];\n map: Record<string, any>;\n showOpenButton?: boolean;\n showCloseButton?: boolean;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewUtilities = kosComponent(\n ({\n kOSMetadata: { experiencesMap },\n list,\n map,\n resolver,\n }: DynamicViewUtilitiesProps) => {\n const [selectedItem, setSelectedItem] = useState<any>();\n\n const namespaces = list.map((ext) => ext.namespace) || [];\n const { t } = useKosTranslation([...new Set(namespaces)]);\n\n const selectedExperienceID = selectedItem?.experienceId;\n const experience = experiencesMap[selectedExperienceID];\n const component = experience?.component;\n const location = experience?.location;\n\n const select = useCallback(\n (itemID: string) => {\n const item = map[itemID];\n\n if (item) {\n setSelectedItem(item);\n } else {\n setSelectedItem(null);\n }\n },\n [map]\n );\n\n const translatedList = useMemo(\n () =>\n list.map((item) => {\n return {\n ...item,\n label: t(`${item.namespace}:${item.title}`, `\"${item.title}\"`),\n };\n }),\n [list, t]\n );\n\n return (\n <DynamicViewUtilitiesContainer>\n <CardButtonGrid items={translatedList} onSelect={select} />\n\n {component && location && (\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n props={{ onComplete: select }}\n />\n )}\n </DynamicViewUtilitiesContainer>\n );\n }\n);\n","import { TabRouter } from \"@kosdev-code/kos-ddk-components\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { useMemo } from \"react\";\nimport { parse } from \"../../utils\";\nimport { DynamicViewBasic } from \"./dynamic-view-basic\";\nimport { DynamicViewModal } from \"./dynamic-view-modal\";\nimport { DynamicViewSettings } from \"./dynamic-view-settings\";\nimport { DynamicViewUtilities } from \"./dynamic-view-utilities\";\n\nconst contentComponentMap: Record<string, any> = {\n cui: (props: any) => <DynamicViewModal {...props} showOpenButton={false} />,\n utilities: DynamicViewUtilities,\n setupStep: DynamicViewModal,\n settings: (props: any) => (\n <DynamicViewSettings baseRoute=\"settings\" {...props} />\n ),\n};\n\ninterface DynamicContainerProps {\n kOSJSON: any;\n resolver: (location: string) => any;\n}\n\nexport const DynamicContainer: React.FunctionComponent<DynamicContainerProps> =\n kosComponent(({ kOSJSON, resolver }) => {\n const kOSMetadata = useMemo(() => parse(kOSJSON), [kOSJSON]);\n\n const tabs = useMemo(\n () =>\n Object.keys(kOSMetadata.contributes)\n .filter(\n (key) =>\n Array.isArray(kOSMetadata.contributes[key]) &&\n kOSMetadata.contributes[key].length\n )\n .map((key) => {\n const Component = contentComponentMap[key] || DynamicViewBasic;\n\n return {\n id: key,\n label: key,\n content: (\n <Component\n key={key}\n kOSMetadata={kOSMetadata}\n list={kOSMetadata[`${key}List`]}\n map={kOSMetadata[`${key}Map`]}\n resolver={resolver}\n />\n ),\n };\n }),\n []\n );\n\n return <TabRouter baseRoute=\"\" tabs={tabs} />;\n });\n","import styled from \"@emotion/styled\";\nimport { PickerCard } from \"@kosdev-code/kos-ddk-components\";\nimport { useCallback, useState } from \"react\";\nimport { DynamicComponentView } from \"./dynamic-component-view\";\nimport { KOSMetadata } from \"../../utils\";\n\nconst DynamicViewPickerContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n width: 100%;\n`;\n\ninterface DynamicViewPickerProps {\n kOSMetadata: KOSMetadata;\n resolver: (location: string) => any;\n}\n\nexport const DynamicViewPicker = ({\n kOSMetadata: { defaultExperienceId, experienceList, experienceMap },\n resolver,\n}: DynamicViewPickerProps) => {\n const [selectedExperienceID, setSelectedExperienceID] =\n useState(defaultExperienceId);\n\n const component = experienceMap[selectedExperienceID].component;\n const location = experienceMap[selectedExperienceID].location;\n\n const save = useCallback((experienceID: string) => {\n setSelectedExperienceID(experienceID);\n }, []);\n\n return (\n <DynamicViewPickerContainer>\n <PickerCard\n label=\"Experience\"\n items={experienceList}\n selectedItemId={selectedExperienceID}\n cancelButtonLabel=\"Cancel\"\n proceedButtonLabel=\"Select\"\n onSave={save}\n displayValue={component}\n />\n\n <DynamicComponentView\n component={component}\n location={location}\n resolver={resolver}\n />\n </DynamicViewPickerContainer>\n );\n};\n","export default \"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='kos_logo_full'%20data-name='kos_logo_full'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2041.58%2016.95'%20fill='%23fff'%3e%3cpath%20d='m21.49,12.39c-.7-.38-1.25-.91-1.64-1.59-.4-.68-.59-1.45-.59-2.32s.2-1.64.59-2.32c.4-.68.94-1.21,1.64-1.59.7-.38,1.49-.57,2.38-.57s1.68.19,2.38.57c.7.38,1.25.91,1.64,1.59.4.68.59,1.45.59,2.32s-.2,1.64-.59,2.32c-.4.68-.94,1.21-1.64,1.59-.7.38-1.49.57-2.38.57s-1.68-.19-2.38-.57Zm3.76-1.49c.4-.24.72-.56.95-.98.23-.42.34-.9.34-1.43s-.11-1.01-.34-1.43c-.23-.42-.54-.75-.95-.98-.4-.24-.86-.35-1.37-.35s-.97.12-1.37.35c-.4.24-.72.56-.95.98-.23.42-.34.9-.34,1.43s.11,1.01.34,1.43c.23.42.54.75.95.98.4.24.86.35,1.37.35s.97-.12,1.37-.35Zm6.34,1.67c-.73-.24-1.32-.56-1.76-.98l1.16-1.42c.81.72,1.77,1.08,2.89,1.08.51,0,.92-.1,1.24-.29.31-.19.47-.43.47-.71,0-.21-.09-.38-.28-.53-.18-.14-.5-.26-.94-.35l-1.84-.35c-.8-.15-1.4-.43-1.79-.83-.4-.4-.59-.91-.59-1.51,0-.54.16-1.02.47-1.42.32-.4.76-.71,1.32-.93s1.2-.32,1.91-.32c.67,0,1.32.1,1.93.29s1.15.49,1.6.9l-1.08,1.38c-.76-.62-1.6-.92-2.51-.92-.49,0-.89.08-1.22.25-.32.17-.49.38-.49.64,0,.17.08.32.25.44.16.13.48.24.94.32l1.7.31c.85.16,1.49.46,1.91.91.43.44.64.97.64,1.59,0,.55-.15,1.04-.44,1.46s-.71.75-1.25.98-1.17.35-1.88.35c-.86,0-1.65-.12-2.38-.35ZM41.5,1c0-.55-.46-1-1.01-1H1C.45,0,0,.45,0,1v14.95c0,.55.45,1,1,1h15.2v-.02s.06.02.1.02h24.29c.55,0,1-.45.99-1l-.08-14.95Zm-25.21,14.95l-.09-14.95h24.3s.09,14.95.09,14.95h-24.3Zm-8.34-7.1l-1.66,1.64v2.32h-1.88V4.16h1.88v4.09l4.1-4.09h2.27l-3.42,3.4,3.62,5.24h-2.23l-2.69-3.96Z'%20/%3e%3c/svg%3e\"","import styled from \"@emotion/styled\";\nimport {\n Container,\n TopNavigationButtonList,\n} from \"@kosdev-code/kos-ddk-components\";\nimport { ReactNode, useMemo } from \"react\";\nimport kosLogo from \"./kos-logo.svg\";\n\nconst HeaderStyles = styled.div`\n background-color: var(--ddk-component-top-navigation-background-color);\n color: var(--ddk-component-top-navigation-color);\n`;\n\nconst ContainerStyles = styled.div`\n padding: var(--ddk-component-top-navigation-padding);\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst LogoContainerStyles = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n`;\n\nconst LogoStyles = styled.div`\n width: 100px;\n`;\n\nconst TitleStyles = styled.h1`\n font-size: 16px;\n`;\n\nconst useNavigationItems = () => {\n const navigationItems = useMemo(() => {\n const navigationItems: { children: ReactNode; to: string }[] = [\n // { children: 'Develop', to: '/develop' }\n ];\n\n return navigationItems;\n }, []);\n\n return navigationItems;\n};\n\nexport const Header = () => {\n const navigationItems = useNavigationItems();\n\n return (\n <HeaderStyles>\n <Container>\n <ContainerStyles>\n <LogoContainerStyles>\n <LogoStyles>\n <img alt=\"KOS logo\" src={kosLogo} />\n </LogoStyles>\n <TitleStyles>Welcome to KOS</TitleStyles>\n </LogoContainerStyles>\n <TopNavigationButtonList items={navigationItems} />\n </ContainerStyles>\n </Container>\n </HeaderStyles>\n );\n};\n","import styled from \"@emotion/styled\";\nimport { kosComponent } from \"@kosdev-code/kos-ui-sdk\";\nimport { ReactNode } from \"react\";\nimport { Header } from \"./header\";\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100vh;\n`;\n\nconst Body = styled.div`\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n`;\n\ninterface ShellProps {\n children: ReactNode;\n}\n\nexport const Shell = kosComponent(({ children }: ShellProps) => (\n <Container>\n <Header />\n <Body>{children}</Body>\n </Container>\n));\n","import type { ReactNode } from \"react\";\n\ninterface ControlPourStoryContainerProps {\n children: ReactNode;\n}\n\nexport const ControlPourStoryContainer = ({\n children,\n}: ControlPourStoryContainerProps) => children;\n","import {\n BackButton,\n Header,\n Modal,\n useComponentConfigurationContext,\n} from \"@kosdev-code/kos-ddk-components\";\nimport type { ReactNode } from \"react\";\n\ninterface CUIStoryContainerProps {\n children: ReactNode;\n}\n\nexport const CUIStoryContainer = ({ children }: CUIStoryContainerProps) => {\n const { componentModeOverride } = useComponentConfigurationContext();\n\n return (\n <Modal\n contain={componentModeOverride !== \"compact\"}\n mode=\"maximized\"\n show={true}\n >\n <>\n <Header\n CloseButton={\n componentModeOverride === \"compact\" ? BackButton : undefined\n }\n contain={componentModeOverride === \"compact\"}\n showCloseButton={true}\n showOpenButton={false}\n title=\"CUI\"\n />\n {children}\n </>\n </Modal>\n );\n};\n","import type { ReactNode } from \"react\";\n\ninterface NavStoryContainerProps {\n children: ReactNode;\n}\n\nexport const NavStoryContainer = ({ children }: NavStoryContainerProps) =>\n children;\n","import {\n SettingsSubheading,\n TabContainer,\n} from \"@kosdev-code/kos-ddk-components\";\nimport type { ReactNode } from \"react\";\n\ninterface SettingStoryContainerProps {\n children: ReactNode;\n}\n\nexport const SettingStoryContainer = ({\n children,\n}: SettingStoryContainerProps) => (\n <TabContainer>\n <SettingsSubheading>Setting</SettingsSubheading>\n {children}\n </TabContainer>\n);\n","import {\n BackButton,\n Header,\n Modal,\n useComponentConfigurationContext,\n} from \"@kosdev-code/kos-ddk-components\";\nimport type { ReactNode } from \"react\";\n\ninterface SetupStepStoryContainerProps {\n children: ReactNode;\n}\n\nexport const SetupStepStoryContainer = ({\n children,\n}: SetupStepStoryContainerProps) => {\n const { componentModeOverride } = useComponentConfigurationContext();\n\n return (\n <Modal\n contain={componentModeOverride !== \"compact\"}\n mode=\"maximized\"\n show={true}\n >\n <>\n <Header\n CloseButton={\n componentModeOverride === \"compact\" ? BackButton : undefined\n }\n contain={componentModeOverride === \"compact\"}\n showCloseButton={true}\n showOpenButton={true}\n title=\"Setup Step\"\n />\n {children}\n </>\n </Modal>\n );\n};\n","import type { ReactNode } from \"react\";\n\ninterface UtilityStoryContainerProps {\n children: ReactNode;\n}\n\nexport const UtilityStoryContainer = ({\n children,\n}: UtilityStoryContainerProps) => children;\n"],"names":["DynamicComponentView","component","location","resolver","props","Component","setComponent","useState","useEffect","result","jsx","normalize","json","parsed","key","value","listKey","mapKey","list","map","item","data","parse","contributes","DynamicViewBasicContainer","styled","DynamicViewBasic","kosComponent","experiencesMap","selectedItem","setSelectedItem","namespaces","ext","t","useKosTranslation","selectedExperienceID","experience","select","useCallback","itemID","translatedList","useMemo","CardButtonGrid","DynamicViewModalContainer","DynamicViewModal","showOpenButton","showCloseButton","Modal","jsxs","Fragment","Header","DynamicViewSettingsContainer","GroupContainer","SettingView","experienceId","id","namespace","title","TabContainer","SettingsSubheading","GroupView","group","setting","DynamicViewSettings","groups","tabs","groupName","Tabs","DynamicViewUtilitiesContainer","DynamicViewUtilities","contentComponentMap","DynamicContainer","kOSJSON","kOSMetadata","TabRouter","DynamicViewPickerContainer","DynamicViewPicker","defaultExperienceId","experienceList","experienceMap","setSelectedExperienceID","save","experienceID","PickerCard","kosLogo","HeaderStyles","ContainerStyles","LogoContainerStyles","LogoStyles","TitleStyles","useNavigationItems","navigationItems","Container","TopNavigationButtonList","Body","Shell","children","ControlPourStoryContainer","CUIStoryContainer","componentModeOverride","useComponentConfigurationContext","BackButton","NavStoryContainer","SettingStoryContainer","SetupStepStoryContainer","UtilityStoryContainer"],"mappings":"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"}
|
package/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./emotion-react-jsx-runtime.browser.esm-UFFvJLiS.cjs"),d=require("@emotion/styled"),v=require("@kosdev-code/kos-ui-sdk"),i=require("react"),a=require("./resolve-best-extension-D5Ord7XK.cjs");require("react/jsx-runtime");const h=i.createContext(void 0),P=d.div`
|
|
2
2
|
padding-inline: 20px;
|
|
3
3
|
width: 100%;
|
|
4
4
|
height: 100vh;
|
|
@@ -11,19 +11,19 @@
|
|
|
11
11
|
top: 0;
|
|
12
12
|
left: 0;
|
|
13
13
|
z-index: 10000;
|
|
14
|
-
`,
|
|
14
|
+
`,w=({remotesOverride:e,children:t})=>{const[n,l]=i.useState();return i.useEffect(()=>{a.initPluginManager(e).then(r=>{l(r)})},[e]),c.jsx(h.Provider,{value:n,children:n?t:c.jsx(P,{children:"Loading remote plugins..."})})},p=()=>{const e=i.useContext(h);if(!e)throw new Error("useKosPluginsContext must be used within a KosPluginProvider");return e},j=e=>{var t;return((t=e==null?void 0:e.view)==null?void 0:t.component)!==void 0},x=({extension:e,module:t})=>{const{extensions:n}=p(),[l,r]=i.useState(null),[s,u]=i.useState(null);return i.useEffect(()=>{async function g(){const o=a.resolveBestExtension(n==null?void 0:n[e],t);u(o??null);const f=(o==null?void 0:o.remote)||"",m=j(o)?o.view.component:o==null?void 0:o.component,C=m?`./${m}`:"",y=i.lazy(()=>a.mf.loadRemoteModule(f,C));r(y)}g()},[n,t,e]),[l,s]},b=d.div`
|
|
15
15
|
align-items: center;
|
|
16
16
|
display: flex;
|
|
17
17
|
height: 100%;
|
|
18
18
|
justify-content: center;
|
|
19
19
|
width: 100%;
|
|
20
|
-
`,
|
|
20
|
+
`,S=d.div`
|
|
21
21
|
align-items: center;
|
|
22
22
|
background-color: transparent;
|
|
23
23
|
display: flex;
|
|
24
24
|
flex-direction: column;
|
|
25
|
-
height: ${
|
|
25
|
+
height: ${e=>e.height};
|
|
26
26
|
justify-content: center;
|
|
27
|
-
width: ${
|
|
28
|
-
`,
|
|
27
|
+
width: ${e=>e.width};
|
|
28
|
+
`,k=({extension:e,fallback:t,module:n,props:l})=>{const[r,s]=x({extension:e,module:n});if(!r)return null;const u=t||c.jsx(b,{children:`Dynamic component, ${e}, not found...`});return c.jsx(v.ErrorBoundaryWithFallback,{fallback:u,children:c.jsx(i.Suspense,{fallback:s!=null&&s.size?c.jsx(S,{width:s.size.width,height:s.size.height}):null,children:c.jsx(r,{...l})})})};exports.DynamicComponent=k;exports.KosPluginProvider=w;exports.RemotesContext=h;exports.useDynamicComponent=x;exports.useKosPluginsContext=p;
|
|
29
29
|
//# sourceMappingURL=index.cjs.map
|
package/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../packages/sdk/kos-ui-plugin/src/lib/contexts/plugins-provider/plugins-provider.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-dynamic-component.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/components/dynamic-component/dynamic-component.tsx"],"sourcesContent":["/**\n *\n *\n * @module remotes-provider\n * @description Provides a context for managing dynamic remotes and extensions in a React application.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n PropsWithChildren,\n createContext,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport type { DynamicRemotes } from \"../../../types/global\";\nimport type { PluginExtension } from \"../../../types/plugins\";\nimport { initPluginManager } from \"../../utils/plugin-extension-manager\";\n\ninterface PluginsType {\n remotes?: DynamicRemotes;\n extensions?: PluginExtensionsType;\n extensionPoints?: Record<string, PluginExtension[]>;\n getExtensions: (extensionPointId: string) => PluginExtension[];\n}\n\nexport interface PluginExtensionsType {\n [k: string]: {\n [k: string]: PluginExtension;\n };\n}\n\n/**\n * The context for managing dynamic remotes and extensions.\n */\nexport const RemotesContext = createContext<PluginsType | undefined>(undefined);\n\ninterface Props {\n remotesOverride?: DynamicRemotes;\n}\n\nconst MessageContainer = styled.div`\n padding-inline: 20px;\n width: 100%;\n height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: fixed;\n font-size: 14px;\n top: 0;\n left: 0;\n z-index: 10000;\n`;\n/**\n * The provider component for the RemotesContext.\n */\nexport const KosPluginProvider: React.FunctionComponent<\n PropsWithChildren<Props>\n> = ({ remotesOverride, children }) => {\n const [contextValue, setContextValue] = useState<PluginsType | undefined>();\n\n useEffect(() => {\n initPluginManager(remotesOverride).then((value) => {\n setContextValue(value);\n });\n }, [remotesOverride]);\n\n return (\n <RemotesContext.Provider value={contextValue}>\n {contextValue ? (\n children\n ) : (\n <MessageContainer>Loading remote plugins...</MessageContainer>\n )}\n </RemotesContext.Provider>\n );\n};\n\n/**\n * Custom hook for accessing the RemotesContext.\n */\nexport const useKosPluginsContext = () => {\n const context = useContext(RemotesContext);\n if (!context) {\n throw new Error(\n \"useKosPluginsContext must be used within a KosPluginProvider\"\n );\n }\n return context;\n};\n","import {
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../packages/sdk/kos-ui-plugin/src/lib/contexts/plugins-provider/plugins-provider.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-dynamic-component.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/components/dynamic-component/dynamic-component.tsx"],"sourcesContent":["/**\n *\n *\n * @module remotes-provider\n * @description Provides a context for managing dynamic remotes and extensions in a React application.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n PropsWithChildren,\n createContext,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport type { DynamicRemotes } from \"../../../types/global\";\nimport type { PluginExtension } from \"../../../types/plugins\";\nimport { initPluginManager } from \"../../utils/plugin-extension-manager\";\n\ninterface PluginsType {\n remotes?: DynamicRemotes;\n extensions?: PluginExtensionsType;\n extensionPoints?: Record<string, PluginExtension[]>;\n getExtensions: (extensionPointId: string) => PluginExtension[];\n}\n\nexport interface PluginExtensionsType {\n [k: string]: {\n [k: string]: PluginExtension;\n };\n}\n\n/**\n * The context for managing dynamic remotes and extensions.\n */\nexport const RemotesContext = createContext<PluginsType | undefined>(undefined);\n\ninterface Props {\n remotesOverride?: DynamicRemotes;\n}\n\nconst MessageContainer = styled.div`\n padding-inline: 20px;\n width: 100%;\n height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: fixed;\n font-size: 14px;\n top: 0;\n left: 0;\n z-index: 10000;\n`;\n/**\n * The provider component for the RemotesContext.\n */\nexport const KosPluginProvider: React.FunctionComponent<\n PropsWithChildren<Props>\n> = ({ remotesOverride, children }) => {\n const [contextValue, setContextValue] = useState<PluginsType | undefined>();\n\n useEffect(() => {\n initPluginManager(remotesOverride).then((value) => {\n setContextValue(value);\n });\n }, [remotesOverride]);\n\n return (\n <RemotesContext.Provider value={contextValue}>\n {contextValue ? (\n children\n ) : (\n <MessageContainer>Loading remote plugins...</MessageContainer>\n )}\n </RemotesContext.Provider>\n );\n};\n\n/**\n * Custom hook for accessing the RemotesContext.\n */\nexport const useKosPluginsContext = () => {\n const context = useContext(RemotesContext);\n if (!context) {\n throw new Error(\n \"useKosPluginsContext must be used within a KosPluginProvider\"\n );\n }\n return context;\n};\n","import { loadRemoteModule } from \"@nx/react/mf\";\n\nimport React, { useEffect, useState } from \"react\";\nimport type {\n BasePluginExtension,\n BaseViewPluginExtension,\n} from \"../../types/plugins\";\nimport { useKosPluginsContext } from \"../contexts\";\nimport { resolveBestExtension } from \"../utils/resolve-best-extension\";\n\ninterface Props {\n /**\n * The extension point ID to resolve plugin modules from.\n * Example: \"ddk.ncui.settings.tabView\"\n */\n extension: string;\n\n /**\n * Optional module ID to load a specific plugin.\n * If not provided, the plugin with the **lowest rank** for the extension point is used.\n */\n module?: string;\n}\n\ntype DynamicComponentResult = [\n React.FunctionComponent | null,\n BasePluginExtension | null\n];\n\n/**\n * Determines whether a plugin extension follows the \"view\" structure.\n * This allows resolving the correct field (`view.component` vs `component`) when loading.\n */\nconst isViewPlugin = (module: any): module is BaseViewPluginExtension =>\n module?.view?.component !== undefined;\n\n/**\n * React hook to resolve and lazily load a plugin component for a given extension point.\n *\n * - If `module` is provided, it directly loads that plugin.\n * - If `module` is not provided, it uses the **lowest-ranked plugin** from the extension point.\n * - Supports both standard plugins (`component`) and view-style plugins (`view.component`)\n * - Uses React.lazy + Module Federation to dynamically import the remote component.\n *\n * @param props.extension The extension point to resolve plugins from\n * @param props.module (Optional) Specific module ID to use, otherwise the highest-priority plugin is loaded\n * @returns A tuple: `[Component, PluginExtension]`\n */\nexport const useDynamicComponent = ({\n extension,\n module,\n}: Props): DynamicComponentResult => {\n const { extensions } = useKosPluginsContext();\n\n const [Component, setComponent] = useState<React.FunctionComponent | null>(\n null\n );\n const [extensionPoint, setExtensionPoint] =\n useState<BasePluginExtension | null>(null);\n\n useEffect(() => {\n async function loadComponent() {\n // Determine which plugin to use\n\n const _module = resolveBestExtension(extensions?.[extension], module);\n\n setExtensionPoint(_module ?? null);\n\n const remote = _module?.remote || \"\";\n\n // Resolve the component path for the module\n const componentName = isViewPlugin(_module)\n ? _module.view.component\n : _module?.component;\n\n const componentPath = componentName ? `./${componentName}` : \"\";\n\n // Load the component using Module Federation\n const Comp = React.lazy(() => loadRemoteModule(remote, componentPath));\n setComponent(Comp);\n }\n\n loadComponent();\n }, [extensions, module, extension]);\n\n return [Component, extensionPoint];\n};\n","import styled from \"@emotion/styled\";\nimport { ErrorBoundaryWithFallback } from \"@kosdev-code/kos-ui-sdk\";\nimport React, { Suspense } from \"react\";\nimport { useDynamicComponent } from \"../../hooks\";\n\nconst NotFound = styled.div`\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n width: 100%;\n`;\ninterface Props {\n extension: string;\n fallback?: React.ReactNode;\n module?: string;\n props?: any;\n}\n\nconst Skeleton = styled.div<{ width: string; height: string }>`\n align-items: center;\n background-color: transparent;\n display: flex;\n flex-direction: column;\n height: ${(props) => props.height};\n justify-content: center;\n width: ${(props) => props.width};\n`;\n\nexport const DynamicComponent: React.FunctionComponent<Props> = ({\n extension,\n fallback,\n module,\n props,\n}) => {\n // get the list of extensions from the context\n const [Component, extensionPoint] = useDynamicComponent({\n extension,\n module,\n });\n // get the module from the extension\n\n if (!Component) {\n return null;\n }\n\n const fb = fallback || (\n <NotFound>{`Dynamic component, ${extension}, not found...`}</NotFound>\n );\n\n return (\n <ErrorBoundaryWithFallback fallback={fb}>\n <Suspense\n fallback={\n extensionPoint?.size ? (\n <Skeleton\n width={extensionPoint.size.width}\n height={extensionPoint.size.height}\n />\n ) : null\n }\n >\n <Component {...props} />\n </Suspense>\n </ErrorBoundaryWithFallback>\n );\n};\n"],"names":["RemotesContext","createContext","MessageContainer","styled","KosPluginProvider","remotesOverride","children","contextValue","setContextValue","useState","useEffect","initPluginManager","value","jsx","useKosPluginsContext","context","useContext","isViewPlugin","module","_a","useDynamicComponent","extension","extensions","Component","setComponent","extensionPoint","setExtensionPoint","loadComponent","_module","resolveBestExtension","remote","componentName","componentPath","Comp","React","loadRemoteModule","NotFound","Skeleton","props","DynamicComponent","fallback","fb","ErrorBoundaryWithFallback","Suspense"],"mappings":"6TAmCa,MAAAA,EAAiBC,EAAAA,cAAuC,MAAS,EAMxEC,EAAmBC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBnBC,EAET,CAAC,CAAE,gBAAAC,EAAiB,SAAAC,KAAe,CACrC,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAkC,SAAA,EAE1EC,OAAAA,EAAAA,UAAU,IAAM,CACdC,EAAAA,kBAAkBN,CAAe,EAAE,KAAMO,GAAU,CACjDJ,EAAgBI,CAAK,CAAA,CACtB,CAAA,EACA,CAACP,CAAe,CAAC,EAGlBQ,EAAAA,IAACb,EAAe,SAAf,CAAwB,MAAOO,EAC7B,SAAAA,EACCD,EAEAO,EAAAA,IAACX,EAAiB,CAAA,SAAA,2BAAA,CAAyB,CAE/C,CAAA,CAEJ,EAKaY,EAAuB,IAAM,CAClC,MAAAC,EAAUC,aAAWhB,CAAc,EACzC,GAAI,CAACe,EACH,MAAM,IAAI,MACR,8DAAA,EAGG,OAAAA,CACT,EC1DME,EAAgBC,GACpB,OAAA,QAAAC,EAAAD,GAAA,YAAAA,EAAQ,OAAR,YAAAC,EAAc,aAAc,QAcjBC,EAAsB,CAAC,CAClC,UAAAC,EACA,OAAAH,CACF,IAAqC,CAC7B,KAAA,CAAE,WAAAI,GAAeR,IAEjB,CAACS,EAAWC,CAAY,EAAIf,EAAA,SAChC,IAAA,EAEI,CAACgB,EAAgBC,CAAiB,EACtCjB,WAAqC,IAAI,EAE3CC,OAAAA,EAAAA,UAAU,IAAM,CACd,eAAeiB,GAAgB,CAG7B,MAAMC,EAAUC,EAAAA,qBAAqBP,GAAA,YAAAA,EAAaD,GAAYH,CAAM,EAEpEQ,EAAkBE,GAAW,IAAI,EAE3B,MAAAE,GAASF,GAAA,YAAAA,EAAS,SAAU,GAG5BG,EAAgBd,EAAaW,CAAO,EACtCA,EAAQ,KAAK,UACbA,GAAA,YAAAA,EAAS,UAEPI,EAAgBD,EAAgB,KAAKA,CAAa,GAAK,GAGvDE,EAAOC,EAAM,KAAK,IAAMC,EAAAA,GAAAA,iBAAiBL,EAAQE,CAAa,CAAC,EACrER,EAAaS,CAAI,CACnB,CAEcN,GACb,EAAA,CAACL,EAAYJ,EAAQG,CAAS,CAAC,EAE3B,CAACE,EAAWE,CAAc,CACnC,ECjFMW,EAAWjC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAclBkC,EAAWlC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,YAKXmC,GAAUA,EAAM,MAAM;AAAA;AAAA,WAEvBA,GAAUA,EAAM,KAAK;AAAA,EAGpBC,EAAmD,CAAC,CAC/D,UAAAlB,EACA,SAAAmB,EACA,OAAAtB,EACA,MAAAoB,CACF,IAAM,CAEJ,KAAM,CAACf,EAAWE,CAAc,EAAIL,EAAoB,CACtD,UAAAC,EACA,OAAAH,CAAA,CACD,EAGD,GAAI,CAACK,EACI,OAAA,KAGT,MAAMkB,EAAKD,GACT3B,EAAA,IAACuB,EAAU,CAAA,SAAA,sBAAsBf,CAAS,gBAAiB,CAAA,EAI3D,OAAAR,EAAAA,IAAC6B,EAAAA,0BAA0B,CAAA,SAAUD,EACnC,SAAA5B,EAAA,IAAC8B,EAAA,SAAA,CACC,SACElB,GAAA,MAAAA,EAAgB,KACdZ,EAAA,IAACwB,EAAA,CACC,MAAOZ,EAAe,KAAK,MAC3B,OAAQA,EAAe,KAAK,MAAA,CAAA,EAE5B,KAGN,SAAAZ,EAAAA,IAACU,EAAW,CAAA,GAAGe,CAAO,CAAA,CAAA,CAE1B,CAAA,CAAA,CAEJ"}
|
package/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import { i as
|
|
1
|
+
import { j as s } from "./emotion-react-jsx-runtime.browser.esm-vwuMB3sI.js";
|
|
2
|
+
import u from "@emotion/styled";
|
|
3
|
+
import { ErrorBoundaryWithFallback as C } from "@kosdev-code/kos-ui-sdk";
|
|
4
|
+
import y, { createContext as v, useState as a, useEffect as p, useContext as w, Suspense as P } from "react";
|
|
5
|
+
import { i as b, r as z, m as j } from "./resolve-best-extension-DAJIkfJh.js";
|
|
6
6
|
import "react/jsx-runtime";
|
|
7
|
-
const
|
|
7
|
+
const d = v(void 0), k = u.div`
|
|
8
8
|
padding-inline: 20px;
|
|
9
9
|
width: 100%;
|
|
10
10
|
height: 100vh;
|
|
@@ -17,54 +17,46 @@ const h = j(void 0), M = d.div`
|
|
|
17
17
|
top: 0;
|
|
18
18
|
left: 0;
|
|
19
19
|
z-index: 10000;
|
|
20
|
-
`,
|
|
21
|
-
const [
|
|
22
|
-
return
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
`, L = ({ remotesOverride: t, children: n }) => {
|
|
21
|
+
const [e, r] = a();
|
|
22
|
+
return p(() => {
|
|
23
|
+
b(t).then((c) => {
|
|
24
|
+
r(c);
|
|
25
25
|
});
|
|
26
|
-
}, [t]), /* @__PURE__ */
|
|
26
|
+
}, [t]), /* @__PURE__ */ s(d.Provider, { value: e, children: e ? n : /* @__PURE__ */ s(k, { children: "Loading remote plugins..." }) });
|
|
27
27
|
}, E = () => {
|
|
28
|
-
const t =
|
|
28
|
+
const t = w(d);
|
|
29
29
|
if (!t)
|
|
30
30
|
throw new Error(
|
|
31
31
|
"useKosPluginsContext must be used within a KosPluginProvider"
|
|
32
32
|
);
|
|
33
33
|
return t;
|
|
34
|
-
},
|
|
35
|
-
var
|
|
36
|
-
return ((
|
|
37
|
-
},
|
|
38
|
-
const s = o.rank || 0, e = n.rank || 0;
|
|
39
|
-
return s === e ? (k.info(
|
|
40
|
-
`found same rank for extension ${o.id} and ${n.id} using id to sort`
|
|
41
|
-
), o.id.localeCompare(n.id)) : s - e;
|
|
42
|
-
}), V = ({
|
|
34
|
+
}, K = (t) => {
|
|
35
|
+
var n;
|
|
36
|
+
return ((n = t == null ? void 0 : t.view) == null ? void 0 : n.component) !== void 0;
|
|
37
|
+
}, $ = ({
|
|
43
38
|
extension: t,
|
|
44
|
-
module:
|
|
39
|
+
module: n
|
|
45
40
|
}) => {
|
|
46
|
-
const { extensions:
|
|
41
|
+
const { extensions: e } = E(), [r, c] = a(
|
|
47
42
|
null
|
|
48
|
-
), [
|
|
49
|
-
return
|
|
50
|
-
async function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
l(i ?? null);
|
|
56
|
-
const y = (i == null ? void 0 : i.remote) || "", u = D(i) ? i.view.component : i == null ? void 0 : i.component, v = u ? `./${u}` : "", w = b.lazy(() => K.loadRemoteModule(y, v));
|
|
57
|
-
e(w);
|
|
43
|
+
), [i, l] = a(null);
|
|
44
|
+
return p(() => {
|
|
45
|
+
async function h() {
|
|
46
|
+
const o = z(e == null ? void 0 : e[t], n);
|
|
47
|
+
l(o ?? null);
|
|
48
|
+
const f = (o == null ? void 0 : o.remote) || "", m = K(o) ? o.view.component : o == null ? void 0 : o.component, g = m ? `./${m}` : "", x = y.lazy(() => j.loadRemoteModule(f, g));
|
|
49
|
+
c(x);
|
|
58
50
|
}
|
|
59
|
-
|
|
60
|
-
}, [
|
|
61
|
-
},
|
|
51
|
+
h();
|
|
52
|
+
}, [e, n, t]), [r, i];
|
|
53
|
+
}, D = u.div`
|
|
62
54
|
align-items: center;
|
|
63
55
|
display: flex;
|
|
64
56
|
height: 100%;
|
|
65
57
|
justify-content: center;
|
|
66
58
|
width: 100%;
|
|
67
|
-
`,
|
|
59
|
+
`, M = u.div`
|
|
68
60
|
align-items: center;
|
|
69
61
|
background-color: transparent;
|
|
70
62
|
display: flex;
|
|
@@ -72,38 +64,38 @@ const h = j(void 0), M = d.div`
|
|
|
72
64
|
height: ${(t) => t.height};
|
|
73
65
|
justify-content: center;
|
|
74
66
|
width: ${(t) => t.width};
|
|
75
|
-
`,
|
|
67
|
+
`, W = ({
|
|
76
68
|
extension: t,
|
|
77
|
-
fallback:
|
|
78
|
-
module:
|
|
79
|
-
props:
|
|
69
|
+
fallback: n,
|
|
70
|
+
module: e,
|
|
71
|
+
props: r
|
|
80
72
|
}) => {
|
|
81
|
-
const [
|
|
73
|
+
const [c, i] = $({
|
|
82
74
|
extension: t,
|
|
83
|
-
module:
|
|
75
|
+
module: e
|
|
84
76
|
});
|
|
85
|
-
if (!
|
|
77
|
+
if (!c)
|
|
86
78
|
return null;
|
|
87
|
-
const l =
|
|
88
|
-
return /* @__PURE__ */
|
|
89
|
-
|
|
79
|
+
const l = n || /* @__PURE__ */ s(D, { children: `Dynamic component, ${t}, not found...` });
|
|
80
|
+
return /* @__PURE__ */ s(C, { fallback: l, children: /* @__PURE__ */ s(
|
|
81
|
+
P,
|
|
90
82
|
{
|
|
91
|
-
fallback:
|
|
92
|
-
|
|
83
|
+
fallback: i != null && i.size ? /* @__PURE__ */ s(
|
|
84
|
+
M,
|
|
93
85
|
{
|
|
94
|
-
width:
|
|
95
|
-
height:
|
|
86
|
+
width: i.size.width,
|
|
87
|
+
height: i.size.height
|
|
96
88
|
}
|
|
97
89
|
) : null,
|
|
98
|
-
children: /* @__PURE__ */ c
|
|
90
|
+
children: /* @__PURE__ */ s(c, { ...r })
|
|
99
91
|
}
|
|
100
92
|
) });
|
|
101
93
|
};
|
|
102
94
|
export {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
95
|
+
W as DynamicComponent,
|
|
96
|
+
L as KosPluginProvider,
|
|
97
|
+
d as RemotesContext,
|
|
98
|
+
$ as useDynamicComponent,
|
|
107
99
|
E as useKosPluginsContext
|
|
108
100
|
};
|
|
109
101
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../packages/sdk/kos-ui-plugin/src/lib/contexts/plugins-provider/plugins-provider.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-dynamic-component.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/components/dynamic-component/dynamic-component.tsx"],"sourcesContent":["/**\n *\n *\n * @module remotes-provider\n * @description Provides a context for managing dynamic remotes and extensions in a React application.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n PropsWithChildren,\n createContext,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport type { DynamicRemotes } from \"../../../types/global\";\nimport type { PluginExtension } from \"../../../types/plugins\";\nimport { initPluginManager } from \"../../utils/plugin-extension-manager\";\n\ninterface PluginsType {\n remotes?: DynamicRemotes;\n extensions?: PluginExtensionsType;\n extensionPoints?: Record<string, PluginExtension[]>;\n getExtensions: (extensionPointId: string) => PluginExtension[];\n}\n\nexport interface PluginExtensionsType {\n [k: string]: {\n [k: string]: PluginExtension;\n };\n}\n\n/**\n * The context for managing dynamic remotes and extensions.\n */\nexport const RemotesContext = createContext<PluginsType | undefined>(undefined);\n\ninterface Props {\n remotesOverride?: DynamicRemotes;\n}\n\nconst MessageContainer = styled.div`\n padding-inline: 20px;\n width: 100%;\n height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: fixed;\n font-size: 14px;\n top: 0;\n left: 0;\n z-index: 10000;\n`;\n/**\n * The provider component for the RemotesContext.\n */\nexport const KosPluginProvider: React.FunctionComponent<\n PropsWithChildren<Props>\n> = ({ remotesOverride, children }) => {\n const [contextValue, setContextValue] = useState<PluginsType | undefined>();\n\n useEffect(() => {\n initPluginManager(remotesOverride).then((value) => {\n setContextValue(value);\n });\n }, [remotesOverride]);\n\n return (\n <RemotesContext.Provider value={contextValue}>\n {contextValue ? (\n children\n ) : (\n <MessageContainer>Loading remote plugins...</MessageContainer>\n )}\n </RemotesContext.Provider>\n );\n};\n\n/**\n * Custom hook for accessing the RemotesContext.\n */\nexport const useKosPluginsContext = () => {\n const context = useContext(RemotesContext);\n if (!context) {\n throw new Error(\n \"useKosPluginsContext must be used within a KosPluginProvider\"\n );\n }\n return context;\n};\n","import {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/sdk/kos-ui-plugin/src/lib/contexts/plugins-provider/plugins-provider.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-dynamic-component.tsx","../../../../packages/sdk/kos-ui-plugin/src/lib/components/dynamic-component/dynamic-component.tsx"],"sourcesContent":["/**\n *\n *\n * @module remotes-provider\n * @description Provides a context for managing dynamic remotes and extensions in a React application.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n PropsWithChildren,\n createContext,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport type { DynamicRemotes } from \"../../../types/global\";\nimport type { PluginExtension } from \"../../../types/plugins\";\nimport { initPluginManager } from \"../../utils/plugin-extension-manager\";\n\ninterface PluginsType {\n remotes?: DynamicRemotes;\n extensions?: PluginExtensionsType;\n extensionPoints?: Record<string, PluginExtension[]>;\n getExtensions: (extensionPointId: string) => PluginExtension[];\n}\n\nexport interface PluginExtensionsType {\n [k: string]: {\n [k: string]: PluginExtension;\n };\n}\n\n/**\n * The context for managing dynamic remotes and extensions.\n */\nexport const RemotesContext = createContext<PluginsType | undefined>(undefined);\n\ninterface Props {\n remotesOverride?: DynamicRemotes;\n}\n\nconst MessageContainer = styled.div`\n padding-inline: 20px;\n width: 100%;\n height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: fixed;\n font-size: 14px;\n top: 0;\n left: 0;\n z-index: 10000;\n`;\n/**\n * The provider component for the RemotesContext.\n */\nexport const KosPluginProvider: React.FunctionComponent<\n PropsWithChildren<Props>\n> = ({ remotesOverride, children }) => {\n const [contextValue, setContextValue] = useState<PluginsType | undefined>();\n\n useEffect(() => {\n initPluginManager(remotesOverride).then((value) => {\n setContextValue(value);\n });\n }, [remotesOverride]);\n\n return (\n <RemotesContext.Provider value={contextValue}>\n {contextValue ? (\n children\n ) : (\n <MessageContainer>Loading remote plugins...</MessageContainer>\n )}\n </RemotesContext.Provider>\n );\n};\n\n/**\n * Custom hook for accessing the RemotesContext.\n */\nexport const useKosPluginsContext = () => {\n const context = useContext(RemotesContext);\n if (!context) {\n throw new Error(\n \"useKosPluginsContext must be used within a KosPluginProvider\"\n );\n }\n return context;\n};\n","import { loadRemoteModule } from \"@nx/react/mf\";\n\nimport React, { useEffect, useState } from \"react\";\nimport type {\n BasePluginExtension,\n BaseViewPluginExtension,\n} from \"../../types/plugins\";\nimport { useKosPluginsContext } from \"../contexts\";\nimport { resolveBestExtension } from \"../utils/resolve-best-extension\";\n\ninterface Props {\n /**\n * The extension point ID to resolve plugin modules from.\n * Example: \"ddk.ncui.settings.tabView\"\n */\n extension: string;\n\n /**\n * Optional module ID to load a specific plugin.\n * If not provided, the plugin with the **lowest rank** for the extension point is used.\n */\n module?: string;\n}\n\ntype DynamicComponentResult = [\n React.FunctionComponent | null,\n BasePluginExtension | null\n];\n\n/**\n * Determines whether a plugin extension follows the \"view\" structure.\n * This allows resolving the correct field (`view.component` vs `component`) when loading.\n */\nconst isViewPlugin = (module: any): module is BaseViewPluginExtension =>\n module?.view?.component !== undefined;\n\n/**\n * React hook to resolve and lazily load a plugin component for a given extension point.\n *\n * - If `module` is provided, it directly loads that plugin.\n * - If `module` is not provided, it uses the **lowest-ranked plugin** from the extension point.\n * - Supports both standard plugins (`component`) and view-style plugins (`view.component`)\n * - Uses React.lazy + Module Federation to dynamically import the remote component.\n *\n * @param props.extension The extension point to resolve plugins from\n * @param props.module (Optional) Specific module ID to use, otherwise the highest-priority plugin is loaded\n * @returns A tuple: `[Component, PluginExtension]`\n */\nexport const useDynamicComponent = ({\n extension,\n module,\n}: Props): DynamicComponentResult => {\n const { extensions } = useKosPluginsContext();\n\n const [Component, setComponent] = useState<React.FunctionComponent | null>(\n null\n );\n const [extensionPoint, setExtensionPoint] =\n useState<BasePluginExtension | null>(null);\n\n useEffect(() => {\n async function loadComponent() {\n // Determine which plugin to use\n\n const _module = resolveBestExtension(extensions?.[extension], module);\n\n setExtensionPoint(_module ?? null);\n\n const remote = _module?.remote || \"\";\n\n // Resolve the component path for the module\n const componentName = isViewPlugin(_module)\n ? _module.view.component\n : _module?.component;\n\n const componentPath = componentName ? `./${componentName}` : \"\";\n\n // Load the component using Module Federation\n const Comp = React.lazy(() => loadRemoteModule(remote, componentPath));\n setComponent(Comp);\n }\n\n loadComponent();\n }, [extensions, module, extension]);\n\n return [Component, extensionPoint];\n};\n","import styled from \"@emotion/styled\";\nimport { ErrorBoundaryWithFallback } from \"@kosdev-code/kos-ui-sdk\";\nimport React, { Suspense } from \"react\";\nimport { useDynamicComponent } from \"../../hooks\";\n\nconst NotFound = styled.div`\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n width: 100%;\n`;\ninterface Props {\n extension: string;\n fallback?: React.ReactNode;\n module?: string;\n props?: any;\n}\n\nconst Skeleton = styled.div<{ width: string; height: string }>`\n align-items: center;\n background-color: transparent;\n display: flex;\n flex-direction: column;\n height: ${(props) => props.height};\n justify-content: center;\n width: ${(props) => props.width};\n`;\n\nexport const DynamicComponent: React.FunctionComponent<Props> = ({\n extension,\n fallback,\n module,\n props,\n}) => {\n // get the list of extensions from the context\n const [Component, extensionPoint] = useDynamicComponent({\n extension,\n module,\n });\n // get the module from the extension\n\n if (!Component) {\n return null;\n }\n\n const fb = fallback || (\n <NotFound>{`Dynamic component, ${extension}, not found...`}</NotFound>\n );\n\n return (\n <ErrorBoundaryWithFallback fallback={fb}>\n <Suspense\n fallback={\n extensionPoint?.size ? (\n <Skeleton\n width={extensionPoint.size.width}\n height={extensionPoint.size.height}\n />\n ) : null\n }\n >\n <Component {...props} />\n </Suspense>\n </ErrorBoundaryWithFallback>\n );\n};\n"],"names":["RemotesContext","createContext","MessageContainer","styled","KosPluginProvider","remotesOverride","children","contextValue","setContextValue","useState","useEffect","initPluginManager","value","jsx","useKosPluginsContext","context","useContext","isViewPlugin","module","_a","useDynamicComponent","extension","extensions","Component","setComponent","extensionPoint","setExtensionPoint","loadComponent","_module","resolveBestExtension","remote","componentName","componentPath","Comp","React","loadRemoteModule","NotFound","Skeleton","props","DynamicComponent","fallback","fb","ErrorBoundaryWithFallback","Suspense"],"mappings":"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"}
|
package/lib/dev/components/storybook/control-pour-story-container/control-pour-story-container.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
interface ControlPourStoryContainerProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const ControlPourStoryContainer: ({ children, }: ControlPourStoryContainerProps) => ReactNode;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=control-pour-story-container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-pour-story-container.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/control-pour-story-container/control-pour-story-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,8BAA8B;IACtC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,yBAAyB,kBAEnC,8BAA8B,cAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/control-pour-story-container/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/sdk/kos-ui-plugin/src/lib/dev/components/storybook/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC"}
|
|
@@ -2,13 +2,33 @@ import { BasePluginExtension } from '../../types/plugins';
|
|
|
2
2
|
import { default as React } from 'react';
|
|
3
3
|
|
|
4
4
|
interface Props {
|
|
5
|
+
/**
|
|
6
|
+
* The extension point ID to resolve plugin modules from.
|
|
7
|
+
* Example: "ddk.ncui.settings.tabView"
|
|
8
|
+
*/
|
|
5
9
|
extension: string;
|
|
10
|
+
/**
|
|
11
|
+
* Optional module ID to load a specific plugin.
|
|
12
|
+
* If not provided, the plugin with the **lowest rank** for the extension point is used.
|
|
13
|
+
*/
|
|
6
14
|
module?: string;
|
|
7
15
|
}
|
|
8
16
|
type DynamicComponentResult = [
|
|
9
17
|
React.FunctionComponent | null,
|
|
10
18
|
BasePluginExtension | null
|
|
11
19
|
];
|
|
20
|
+
/**
|
|
21
|
+
* React hook to resolve and lazily load a plugin component for a given extension point.
|
|
22
|
+
*
|
|
23
|
+
* - If `module` is provided, it directly loads that plugin.
|
|
24
|
+
* - If `module` is not provided, it uses the **lowest-ranked plugin** from the extension point.
|
|
25
|
+
* - Supports both standard plugins (`component`) and view-style plugins (`view.component`)
|
|
26
|
+
* - Uses React.lazy + Module Federation to dynamically import the remote component.
|
|
27
|
+
*
|
|
28
|
+
* @param props.extension The extension point to resolve plugins from
|
|
29
|
+
* @param props.module (Optional) Specific module ID to use, otherwise the highest-priority plugin is loaded
|
|
30
|
+
* @returns A tuple: `[Component, PluginExtension]`
|
|
31
|
+
*/
|
|
12
32
|
export declare const useDynamicComponent: ({ extension, module, }: Props) => DynamicComponentResult;
|
|
13
33
|
export {};
|
|
14
34
|
//# sourceMappingURL=use-dynamic-component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dynamic-component.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-dynamic-component.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-dynamic-component.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-dynamic-component.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,qBAAqB,CAAC;AAI7B,UAAU,KAAK;IACb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,iBAAiB,GAAG,IAAI;IAC9B,mBAAmB,GAAG,IAAI;CAC3B,CAAC;AASF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,2BAG7B,KAAK,2BAmCP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contribution-reducer.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/utils/contribution-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,eAAO,MAAM,mBAAmB,YACpB,cAAc,WAAW,sBAAsB,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"contribution-reducer.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/utils/contribution-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,eAAO,MAAM,mBAAmB,YACpB,cAAc,WAAW,sBAAsB,OAAO,MAAM,2BA+IrE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const EXTENSION_POINT_CONTROL_POUR_DEF = "cui.control.pour";
|
|
2
|
+
export declare const EXTENSION_POINT_CONTROL_POUR_VIEW = "cui.control.pour.view";
|
|
3
|
+
export declare const EXTENSION_POINT_CONTROL_POUR = "cui.control.pour.config";
|
|
4
|
+
export declare const controlPourReducer: (experiences: Record<string, any>, contributions: import('../../types/plugins').ProcessedContributions) => (acc: import('../..').PluginExtensionsType, key: string) => import('../..').PluginExtensionsType;
|
|
5
|
+
//# sourceMappingURL=control-pour-reducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-pour-reducer.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/utils/control-pour-reducer.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,qBAAqB,CAAC;AACnE,eAAO,MAAM,iCAAiC,0BAA0B,CAAC;AACzE,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAEtE,eAAO,MAAM,kBAAkB,6MAQ7B,CAAC"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './initialize-plugins';
|
|
|
8
8
|
export * from './nav-view-reducer';
|
|
9
9
|
export * from './plugin-extension-manager';
|
|
10
10
|
export * from './process-kos-config';
|
|
11
|
+
export * from './resolve-best-extension';
|
|
11
12
|
export * from './settings-reducer';
|
|
12
13
|
export * from './setup-reducer';
|
|
13
14
|
export * from './state-action-reducer';
|