@teambit/component 1.0.136 → 1.0.137
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/artifacts/preview/teambit_component_component-preview.js +1 -1
- package/component.ui.runtime.tsx +32 -3
- package/dist/aspect.section.d.ts +0 -1
- package/dist/component.composition.d.ts +0 -1
- package/dist/component.ui.runtime.d.ts +15 -6
- package/dist/component.ui.runtime.js +13 -4
- package/dist/component.ui.runtime.js.map +1 -1
- package/dist/{preview-1705288527738.js → preview-1705406853442.js} +2 -2
- package/dist/ui/aspect-page/aspect-page.d.ts +0 -1
- package/dist/ui/component-error/component-error.d.ts +0 -1
- package/dist/ui/component.js +2 -1
- package/dist/ui/component.js.map +1 -1
- package/dist/ui/menu/index.d.ts +1 -1
- package/dist/ui/menu/index.js +12 -0
- package/dist/ui/menu/index.js.map +1 -1
- package/dist/ui/menu/menu.d.ts +13 -3
- package/dist/ui/menu/menu.js +7 -2
- package/dist/ui/menu/menu.js.map +1 -1
- package/dist/ui/top-bar-nav/top-bar-nav.d.ts +0 -1
- package/dist/ui/use-component-from-location.d.ts +1 -1
- package/dist/ui/use-component-from-location.js +6 -1
- package/dist/ui/use-component-from-location.js.map +1 -1
- package/package.json +17 -17
- package/ui/component.tsx +2 -1
- package/ui/menu/index.ts +1 -1
- package/ui/menu/menu.tsx +17 -4
- package/ui/use-component-from-location.tsx +8 -2
package/dist/ui/menu/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","data","_interopRequireWildcard","require","_reactRouterDom","_classnames","_interopRequireDefault","_lodash","semver","_componentUi","_uiFoundationUi","_baseReactNavigation","_uiFoundationUiUseBox","_lanesHooks","_uiFoundationUiUseBox2","_useComponent","_menuNav","_useComponentFromLocation","_","_menuModule","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","getComponentIdStr","componentIdStr","isFunction","ComponentMenu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","skipRightSide","RightNode","useComponent","path","useComponentFilters","idFromLocation","useIdFromLocation","_componentIdStr","componentId","ComponentID","fromString","undefined","resolvedComponentIdStr","mainMenuItems","useMemo","groupBy","flatten","values","componentFilters","useComponentVersions","defaultLoadVersions","toString","RightSide","createElement","styles","rightSide","Fragment","VersionRelatedDropdowns","consumeMethods","MainDropdown","hideOnMobile","menuItems","Routes","Route","element","classnames","topBar","leftSide","CollapsibleMenuNav","loadingFromProps","React","useCallback","_props","skip","initialLoad","fetchOptions","logFilters","log","limit","customUseComponent","component","loading","loadingComponent","componentLogs","useComponentQuery","logs","snaps","tag","map","snap","version","hash","tags","tagLookup","Map","compact","toArray","reverse","id","packageName","latestVersion","latest","currentVersion","buildStatus","defaultLoadCurrentVersion","props","_version","isTag","valid","find","exports","updatedPropsWithDefaults","useLanes","defaultUseLanes","dropdownOptions","showVersionDetails","loadVersion","_currentVersion","location","useLocation","lanesModel","lanes","getLanesByComponentId","lane","isDefault","viewedLane","isWorkspace","isNew","localVersion","isViewingCurrentLane","search","includes","consumeMethodProps","options","disableInstall","methods","useConsumeMethods","hasMethods","UseBoxDropdown","position","useBox","Menu","componentName","name","VersionDropdown","hasMoreVersions","useCurrentVersionLog","currentLane","menuClassName","componentVersionMenu","getActiveTabIndex","consumePluginProps","method","x","Component","Title"],"sources":["menu.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Routes, Route } from 'react-router-dom';\nimport classnames from 'classnames';\nimport { compact, flatten, groupBy, isFunction } from 'lodash';\nimport * as semver from 'semver';\nimport { DropdownComponentVersion, GetActiveTabIndex, VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-react.navigation.link';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { useLanes as defaultUseLanes } from '@teambit/lanes.hooks.use-lanes';\nimport { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { useComponent as useComponentQuery, UseComponentType, Filters } from '../use-component';\nimport { CollapsibleMenuNav } from './menu-nav';\nimport { OrderedNavigationSlot, ConsumeMethodSlot, ConsumePluginProps } from './nav-plugin';\nimport { useIdFromLocation } from '../use-component-from-location';\nimport { ComponentID } from '../..';\nimport styles from './menu.module.scss';\n\nexport type MenuProps = {\n className?: string;\n /**\n * skip the right side.\n */\n skipRightSide?: boolean;\n /**\n * custom render the right side\n */\n RightNode?: React.ReactNode;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n /**\n * workspace or scope\n */\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n\n componentIdStr?: string | (() => string | undefined);\n\n useComponent?: UseComponentType;\n\n useComponentFilters?: () => Filters;\n\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n\n path?: string;\n};\nfunction getComponentIdStr(componentIdStr?: string | (() => string | undefined)): string | undefined {\n if (isFunction(componentIdStr)) return componentIdStr();\n return componentIdStr;\n}\n/**\n * top bar menu.\n */\nexport function ComponentMenu({\n navigationSlot,\n widgetSlot,\n className,\n host,\n menuItemSlot,\n consumeMethodSlot,\n componentIdStr,\n skipRightSide,\n RightNode,\n useComponent,\n path,\n useComponentFilters,\n}: MenuProps) {\n const idFromLocation = useIdFromLocation();\n const _componentIdStr = getComponentIdStr(componentIdStr);\n const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;\n const resolvedComponentIdStr = path || idFromLocation;\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n const componentFilters = useComponentFilters?.() || {};\n const useComponentVersions = defaultLoadVersions(\n host,\n componentId?.toString() || idFromLocation,\n componentFilters,\n useComponent\n );\n\n const RightSide = (\n <div className={styles.rightSide}>\n {RightNode || (\n <>\n <VersionRelatedDropdowns\n host={host}\n consumeMethods={consumeMethodSlot}\n componentId={componentId?.toString() || idFromLocation}\n useComponent={useComponentVersions}\n componentFilters={componentFilters}\n // loading={loading}\n />\n <MainDropdown className={styles.hideOnMobile} menuItems={mainMenuItems} />\n </>\n )}\n </div>\n );\n\n return (\n <Routes>\n <Route\n path={`${resolvedComponentIdStr}/*`}\n element={\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <CollapsibleMenuNav navigationSlot={navigationSlot} widgetSlot={widgetSlot} />\n </div>\n {!skipRightSide && <div className={styles.rightSide}>{RightSide}</div>}\n </div>\n }\n />\n </Routes>\n );\n}\n\nexport type VersionRelatedDropdownsProps = {\n componentId?: string;\n consumeMethods?: ConsumeMethodSlot;\n componentFilters?: Filters;\n useComponent?: UseComponentVersions;\n className?: string;\n loading?: boolean;\n host: string;\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n dropdownOptions?: {\n showVersionDetails?: boolean;\n getActiveTabIndex?: GetActiveTabIndex;\n };\n};\nexport type UseComponentVersionsProps = {\n skip?: boolean;\n id?: string;\n initialLoad?: boolean;\n};\nexport type UseComponentVersionProps = {\n skip?: boolean;\n version?: string;\n};\nexport type UseComponentVersions = (props?: UseComponentVersionsProps) => UseComponentVersionsResult;\nexport type UseComponentVersion = (props?: UseComponentVersionProps) => DropdownComponentVersion | undefined;\nexport type UseComponentVersionsResult = {\n tags?: DropdownComponentVersion[];\n snaps?: DropdownComponentVersion[];\n id?: ComponentID;\n packageName?: string;\n latest?: string;\n currentVersion?: string;\n loading?: boolean;\n};\n\nexport function defaultLoadVersions(\n host: string,\n componentId?: string,\n componentFilters: Filters = {},\n useComponent?: UseComponentType,\n loadingFromProps?: boolean\n): UseComponentVersions {\n return React.useCallback(\n (_props) => {\n const { skip, initialLoad } = _props || {};\n const fetchOptions = {\n logFilters: {\n ...componentFilters,\n log: {\n ...componentFilters.log,\n limit: initialLoad ? 3 : undefined,\n },\n },\n skip: loadingFromProps || skip,\n customUseComponent: useComponent,\n };\n const {\n component,\n loading: loadingComponent,\n componentLogs = {},\n } = useComponentQuery(host, componentId, fetchOptions);\n const logs = componentLogs?.logs;\n const loading = React.useMemo(\n () => loadingComponent || loadingFromProps || componentLogs.loading,\n [loadingComponent, loadingFromProps, componentLogs.loading]\n );\n\n const snaps = useMemo(() => {\n return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));\n }, [logs]);\n\n const tags = useMemo(() => {\n const tagLookup = new Map<string, LegacyComponentLog>();\n (logs || [])\n .filter((log) => log.tag)\n .forEach((tag) => {\n tagLookup.set(tag?.tag as string, tag);\n });\n return compact(\n (component?.tags?.toArray() || []).reverse().map((tag) => tagLookup.get(tag.version.version))\n ).map((tag) => ({ ...tag, version: tag.tag as string }));\n }, [logs]);\n\n return {\n loading,\n id: component?.id,\n packageName: component?.packageName,\n latestVersion: component?.latest,\n currentVersion: component?.version,\n snaps,\n tags,\n buildStatus: component?.buildStatus,\n };\n },\n [componentId, loadingFromProps, componentFilters]\n );\n}\n\nexport const defaultLoadCurrentVersion: (props: VersionRelatedDropdownsProps) => UseComponentVersion = (props) => {\n return (_props) => {\n const { skip, version: _version } = _props || {};\n const { snaps, tags, currentVersion, loading } = props.useComponent?.({ skip, id: props.componentId }) ?? {};\n const version = _version ?? currentVersion;\n const isTag = React.useMemo(() => semver.valid(version), [loading, version]);\n if (isTag) {\n return React.useMemo(() => tags?.find((tag) => tag.tag === version), [loading, tags?.length, version]);\n }\n return React.useMemo(() => snaps?.find((snap) => snap.version === version), [loading, snaps?.length, version]);\n };\n};\n\nexport function VersionRelatedDropdowns(props: VersionRelatedDropdownsProps) {\n const updatedPropsWithDefaults = {\n ...props,\n useLanes: props.useLanes ?? defaultUseLanes,\n dropdownOptions: {\n ...props.dropdownOptions,\n showVersionDetails: props?.dropdownOptions?.showVersionDetails ?? true,\n },\n };\n\n const loadVersion = defaultLoadCurrentVersion(updatedPropsWithDefaults);\n\n const { useLanes, consumeMethods, className, dropdownOptions, host } = updatedPropsWithDefaults;\n const {\n loading,\n id,\n tags,\n snaps,\n latest,\n packageName,\n currentVersion: _currentVersion,\n } = props.useComponent?.({ initialLoad: true }) || {};\n const location = useLocation();\n const { lanesModel } = useLanes();\n const lanes = id ? lanesModel?.getLanesByComponentId(id as any)?.filter((lane) => !lane.id.isDefault()) || [] : [];\n const viewedLane =\n lanesModel?.viewedLane?.id && !lanesModel?.viewedLane?.id.isDefault() ? lanesModel.viewedLane : undefined;\n\n const isWorkspace = host === 'teambit.workspace/workspace';\n\n const isNew = tags?.length === 0 && snaps?.length === 0;\n\n const localVersion = isWorkspace && !isNew && (!viewedLane || lanesModel?.isViewingCurrentLane());\n\n const currentVersion =\n isWorkspace && !isNew && !location?.search.includes('version') ? 'workspace' : _currentVersion ?? '';\n\n const consumeMethodProps: ConsumePluginProps | undefined = React.useMemo(() => {\n return id\n ? {\n id,\n packageName: packageName ?? '',\n latest,\n options: { viewedLane, disableInstall: !packageName },\n }\n : undefined;\n }, [id, packageName, latest, viewedLane]);\n\n const methods = useConsumeMethods(consumeMethods, consumeMethodProps);\n const hasMethods = methods?.length > 0;\n\n return (\n <>\n {consumeMethods && id && hasMethods && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={classnames(styles.useBox, styles.hideOnMobile)}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={id.name} />}\n />\n )}\n <VersionDropdown\n lanes={lanes}\n loading={loading}\n useComponentVersions={props.useComponent}\n hasMoreVersions={!isNew}\n useCurrentVersionLog={loadVersion}\n localVersion={localVersion}\n currentVersion={currentVersion}\n latestVersion={latest}\n currentLane={viewedLane}\n className={className}\n menuClassName={styles.componentVersionMenu}\n getActiveTabIndex={dropdownOptions?.getActiveTabIndex}\n showVersionDetails={dropdownOptions?.showVersionDetails}\n />\n </>\n );\n}\n\nfunction useConsumeMethods(\n consumeMethods?: ConsumeMethodSlot,\n consumePluginProps?: ConsumePluginProps\n): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods?.values())\n .map((method) => {\n if (!consumePluginProps) return undefined;\n return method?.(consumePluginProps);\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, consumePluginProps]\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","data","_interopRequireWildcard","require","_reactRouterDom","_classnames","_interopRequireDefault","_lodash","semver","_componentUi","_uiFoundationUi","_baseReactNavigation","_uiFoundationUiUseBox","_lanesHooks","_uiFoundationUiUseBox2","_useComponent","_menuNav","_useComponentFromLocation","_","_menuModule","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","getComponentIdStr","componentIdStr","isFunction","ComponentMenu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","rightSideMenuSlot","skipRightSide","RightNode","useComponent","path","useComponentFilters","idFromLocation","useIdFromLocation","componentIdStrWithScopeFromLocation","undefined","_componentIdStr","componentId","ComponentID","fromString","resolvedComponentIdStr","mainMenuItems","useMemo","groupBy","flatten","values","rightSideItems","orderBy","componentFilters","useComponentVersions","defaultLoadVersions","toString","RightSide","createElement","styles","rightSide","Fragment","VersionRelatedDropdowns","consumeMethods","map","item","MainDropdown","hideOnMobile","menuItems","Routes","Route","element","classnames","topBar","leftSide","CollapsibleMenuNav","loadingFromProps","React","useCallback","_props","skip","initialLoad","fetchOptions","logFilters","log","limit","customUseComponent","component","loading","loadingComponent","componentLogs","useComponentQuery","logs","snaps","tag","snap","version","hash","tags","tagLookup","Map","compact","toArray","reverse","id","packageName","latestVersion","latest","currentVersion","buildStatus","defaultLoadCurrentVersion","props","_version","isTag","valid","find","exports","updatedPropsWithDefaults","useLanes","defaultUseLanes","dropdownOptions","showVersionDetails","loadVersion","_currentVersion","location","useLocation","lanesModel","lanes","getLanesByComponentId","lane","isDefault","viewedLane","isWorkspace","isNew","localVersion","isViewingCurrentLane","search","includes","consumeMethodProps","options","disableInstall","methods","useConsumeMethods","hasMethods","UseBoxDropdown","position","useBox","Menu","componentName","name","VersionDropdown","hasMoreVersions","useCurrentVersionLog","currentLane","menuClassName","componentVersionMenu","getActiveTabIndex","consumePluginProps","method","x","Component","Title"],"sources":["menu.tsx"],"sourcesContent":["import React, { useMemo, ReactNode } from 'react';\nimport { Routes, Route } from 'react-router-dom';\nimport classnames from 'classnames';\nimport { compact, flatten, groupBy, isFunction, orderBy } from 'lodash';\nimport * as semver from 'semver';\nimport { SlotRegistry } from '@teambit/harmony';\nimport { DropdownComponentVersion, GetActiveTabIndex, VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-react.navigation.link';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { useLanes as defaultUseLanes } from '@teambit/lanes.hooks.use-lanes';\nimport { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { useComponent as useComponentQuery, UseComponentType, Filters } from '../use-component';\nimport { CollapsibleMenuNav } from './menu-nav';\nimport { OrderedNavigationSlot, ConsumeMethodSlot, ConsumePluginProps } from './nav-plugin';\nimport { useIdFromLocation } from '../use-component-from-location';\nimport { ComponentID } from '../..';\nimport styles from './menu.module.scss';\n\nexport type RightSideMenuItem = { item: ReactNode; order: number };\nexport type RightSideMenuSlot = SlotRegistry<RightSideMenuItem[]>;\n\nexport type MenuProps = {\n className?: string;\n /**\n * skip the right side.\n */\n skipRightSide?: boolean;\n /**\n * custom render the right side\n */\n RightNode?: React.ReactNode;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side navigation menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n\n /**\n * right side menu item slot\n */\n rightSideMenuSlot: RightSideMenuSlot;\n /**\n * workspace or scope\n */\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n\n componentIdStr?: string | (() => string | undefined);\n\n useComponent?: UseComponentType;\n\n useComponentFilters?: () => Filters;\n\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n\n path?: string;\n};\nfunction getComponentIdStr(componentIdStr?: string | (() => string | undefined)): string | undefined {\n if (isFunction(componentIdStr)) return componentIdStr();\n return componentIdStr;\n}\n/**\n * top bar menu.\n */\nexport function ComponentMenu({\n navigationSlot,\n widgetSlot,\n className,\n host,\n menuItemSlot,\n consumeMethodSlot,\n rightSideMenuSlot,\n componentIdStr,\n skipRightSide,\n RightNode,\n useComponent,\n path,\n useComponentFilters,\n}: MenuProps) {\n const idFromLocation = useIdFromLocation();\n const componentIdStrWithScopeFromLocation = useIdFromLocation(undefined, true);\n const _componentIdStr = getComponentIdStr(componentIdStr);\n const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;\n const resolvedComponentIdStr = path || idFromLocation;\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n const rightSideItems = useMemo(() => orderBy(flatten(rightSideMenuSlot.values()), 'order'), [rightSideMenuSlot]);\n const componentFilters = useComponentFilters?.() || {};\n const useComponentVersions = defaultLoadVersions(\n host,\n componentId?.toString() || componentIdStrWithScopeFromLocation,\n componentFilters,\n useComponent\n );\n\n const RightSide = (\n <div className={styles.rightSide}>\n {RightNode || (\n <>\n <VersionRelatedDropdowns\n host={host}\n consumeMethods={consumeMethodSlot}\n componentId={componentId?.toString() || idFromLocation}\n useComponent={useComponentVersions}\n componentFilters={componentFilters}\n // loading={loading}\n />\n {rightSideItems.map(({ item }) => item)}\n <MainDropdown className={styles.hideOnMobile} menuItems={mainMenuItems} />\n </>\n )}\n </div>\n );\n\n return (\n <Routes>\n <Route\n path={`${resolvedComponentIdStr}/*`}\n element={\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <CollapsibleMenuNav navigationSlot={navigationSlot} widgetSlot={widgetSlot} />\n </div>\n {!skipRightSide && <div className={styles.rightSide}>{RightSide}</div>}\n </div>\n }\n />\n </Routes>\n );\n}\n\nexport type VersionRelatedDropdownsProps = {\n componentId?: string;\n consumeMethods?: ConsumeMethodSlot;\n componentFilters?: Filters;\n useComponent?: UseComponentVersions;\n className?: string;\n loading?: boolean;\n host: string;\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n dropdownOptions?: {\n showVersionDetails?: boolean;\n getActiveTabIndex?: GetActiveTabIndex;\n };\n};\nexport type UseComponentVersionsProps = {\n skip?: boolean;\n id?: string;\n initialLoad?: boolean;\n};\nexport type UseComponentVersionProps = {\n skip?: boolean;\n version?: string;\n};\nexport type UseComponentVersions = (props?: UseComponentVersionsProps) => UseComponentVersionsResult;\nexport type UseComponentVersion = (props?: UseComponentVersionProps) => DropdownComponentVersion | undefined;\nexport type UseComponentVersionsResult = {\n tags?: DropdownComponentVersion[];\n snaps?: DropdownComponentVersion[];\n id?: ComponentID;\n packageName?: string;\n latest?: string;\n currentVersion?: string;\n loading?: boolean;\n};\n\nexport function defaultLoadVersions(\n host: string,\n componentId?: string,\n componentFilters: Filters = {},\n useComponent?: UseComponentType,\n loadingFromProps?: boolean\n): UseComponentVersions {\n return React.useCallback(\n (_props) => {\n const { skip, initialLoad } = _props || {};\n const fetchOptions = {\n logFilters: {\n ...componentFilters,\n log: {\n ...componentFilters.log,\n limit: initialLoad ? 3 : undefined,\n },\n },\n skip: loadingFromProps || skip,\n customUseComponent: useComponent,\n };\n const {\n component,\n loading: loadingComponent,\n componentLogs = {},\n } = useComponentQuery(host, componentId, fetchOptions);\n const logs = componentLogs?.logs;\n const loading = React.useMemo(\n () => loadingComponent || loadingFromProps || componentLogs.loading,\n [loadingComponent, loadingFromProps, componentLogs.loading]\n );\n\n const snaps = useMemo(() => {\n return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));\n }, [logs]);\n\n const tags = useMemo(() => {\n const tagLookup = new Map<string, LegacyComponentLog>();\n (logs || [])\n .filter((log) => log.tag)\n .forEach((tag) => {\n tagLookup.set(tag?.tag as string, tag);\n });\n return compact(\n (component?.tags?.toArray() || []).reverse().map((tag) => tagLookup.get(tag.version.version))\n ).map((tag) => ({ ...tag, version: tag.tag as string }));\n }, [logs]);\n\n return {\n loading,\n id: component?.id,\n packageName: component?.packageName,\n latestVersion: component?.latest,\n currentVersion: component?.version,\n snaps,\n tags,\n buildStatus: component?.buildStatus,\n };\n },\n [componentId, loadingFromProps, componentFilters]\n );\n}\n\nexport const defaultLoadCurrentVersion: (props: VersionRelatedDropdownsProps) => UseComponentVersion = (props) => {\n return (_props) => {\n const { skip, version: _version } = _props || {};\n const { snaps, tags, currentVersion, loading } = props.useComponent?.({ skip, id: props.componentId }) ?? {};\n const version = _version ?? currentVersion;\n const isTag = React.useMemo(() => semver.valid(version), [loading, version]);\n if (isTag) {\n return React.useMemo(() => tags?.find((tag) => tag.tag === version), [loading, tags?.length, version]);\n }\n return React.useMemo(() => snaps?.find((snap) => snap.version === version), [loading, snaps?.length, version]);\n };\n};\n\nexport function VersionRelatedDropdowns(props: VersionRelatedDropdownsProps) {\n const updatedPropsWithDefaults = {\n ...props,\n useLanes: props.useLanes ?? defaultUseLanes,\n dropdownOptions: {\n ...props.dropdownOptions,\n showVersionDetails: props?.dropdownOptions?.showVersionDetails ?? true,\n },\n };\n\n const loadVersion = defaultLoadCurrentVersion(updatedPropsWithDefaults);\n\n const { useLanes, consumeMethods, className, dropdownOptions, host } = updatedPropsWithDefaults;\n const {\n loading,\n id,\n tags,\n snaps,\n latest,\n packageName,\n currentVersion: _currentVersion,\n } = props.useComponent?.({ initialLoad: true }) || {};\n const location = useLocation();\n const { lanesModel } = useLanes();\n const lanes = id ? lanesModel?.getLanesByComponentId(id as any)?.filter((lane) => !lane.id.isDefault()) || [] : [];\n const viewedLane =\n lanesModel?.viewedLane?.id && !lanesModel?.viewedLane?.id.isDefault() ? lanesModel.viewedLane : undefined;\n\n const isWorkspace = host === 'teambit.workspace/workspace';\n\n const isNew = tags?.length === 0 && snaps?.length === 0;\n\n const localVersion = isWorkspace && !isNew && (!viewedLane || lanesModel?.isViewingCurrentLane());\n\n const currentVersion =\n isWorkspace && !isNew && !location?.search.includes('version') ? 'workspace' : _currentVersion ?? '';\n\n const consumeMethodProps: ConsumePluginProps | undefined = React.useMemo(() => {\n return id\n ? {\n id,\n packageName: packageName ?? '',\n latest,\n options: { viewedLane, disableInstall: !packageName },\n }\n : undefined;\n }, [id, packageName, latest, viewedLane]);\n\n const methods = useConsumeMethods(consumeMethods, consumeMethodProps);\n const hasMethods = methods?.length > 0;\n\n return (\n <>\n {consumeMethods && id && hasMethods && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={classnames(styles.useBox, styles.hideOnMobile)}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={id.name} />}\n />\n )}\n <VersionDropdown\n lanes={lanes}\n loading={loading}\n useComponentVersions={props.useComponent}\n hasMoreVersions={!isNew}\n useCurrentVersionLog={loadVersion}\n localVersion={localVersion}\n currentVersion={currentVersion}\n latestVersion={latest}\n currentLane={viewedLane}\n className={className}\n menuClassName={styles.componentVersionMenu}\n getActiveTabIndex={dropdownOptions?.getActiveTabIndex}\n showVersionDetails={dropdownOptions?.showVersionDetails}\n />\n </>\n );\n}\n\nfunction useConsumeMethods(\n consumeMethods?: ConsumeMethodSlot,\n consumePluginProps?: ConsumePluginProps\n): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods?.values())\n .map((method) => {\n if (!consumePluginProps) return undefined;\n return method?.(consumePluginProps);\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, consumePluginProps]\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function useIdFromLocation(url?: string): string | undefined;
|
|
1
|
+
export declare function useIdFromLocation(url?: string, deriveScopeFromSearchParams?: boolean): string | undefined;
|
|
@@ -13,8 +13,10 @@ function _reactRouterDom() {
|
|
|
13
13
|
}
|
|
14
14
|
/** component url is comprised of letters, numbers, "_", "-", "/" but should not include trailing "/", and should not include "~" */
|
|
15
15
|
const componentRegex = /^[\w/-]*[\w-]/;
|
|
16
|
-
function useIdFromLocation(url) {
|
|
16
|
+
function useIdFromLocation(url, deriveScopeFromSearchParams) {
|
|
17
17
|
const params = (0, _reactRouterDom().useParams)();
|
|
18
|
+
const [searchParams] = (0, _reactRouterDom().useSearchParams)();
|
|
19
|
+
const scopeFromQueryParams = searchParams.get('scope') ?? undefined;
|
|
18
20
|
const splat = url || params['*'];
|
|
19
21
|
if (!splat) return undefined;
|
|
20
22
|
const [maybeOrgWithScope, ...maybeFullName] = splat.split('/');
|
|
@@ -24,6 +26,9 @@ function useIdFromLocation(url) {
|
|
|
24
26
|
if (hasScope) {
|
|
25
27
|
scope = maybeOrgWithScope;
|
|
26
28
|
}
|
|
29
|
+
if (!hasScope && deriveScopeFromSearchParams) {
|
|
30
|
+
scope = scopeFromQueryParams;
|
|
31
|
+
}
|
|
27
32
|
const match = componentRegex.exec(fullNameFromUrl);
|
|
28
33
|
if (!match?.[0]) return undefined;
|
|
29
34
|
if (scope) return `${scope}/${match[0]}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactRouterDom","data","require","componentRegex","useIdFromLocation","url","params","useParams","
|
|
1
|
+
{"version":3,"names":["_reactRouterDom","data","require","componentRegex","useIdFromLocation","url","deriveScopeFromSearchParams","params","useParams","searchParams","useSearchParams","scopeFromQueryParams","get","undefined","splat","maybeOrgWithScope","maybeFullName","split","hasScope","length","fullNameFromUrl","join","scope","match","exec"],"sources":["use-component-from-location.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\n\n/** component url is comprised of letters, numbers, \"_\", \"-\", \"/\" but should not include trailing \"/\", and should not include \"~\" */\nconst componentRegex = /^[\\w/-]*[\\w-]/;\n\nexport function useIdFromLocation(url?: string, deriveScopeFromSearchParams?: boolean): string | undefined {\n const params = useParams();\n const [searchParams] = useSearchParams();\n const scopeFromQueryParams = searchParams.get('scope') ?? undefined;\n\n const splat = url || params['*'];\n if (!splat) return undefined;\n\n const [maybeOrgWithScope, ...maybeFullName] = splat.split('/');\n const hasScope = maybeOrgWithScope.split('.').length > 1;\n const fullNameFromUrl = hasScope ? maybeFullName.join('/') : splat;\n let scope: string | undefined;\n if (hasScope) {\n scope = maybeOrgWithScope;\n }\n if (!hasScope && deriveScopeFromSearchParams) {\n scope = scopeFromQueryParams;\n }\n const match = componentRegex.exec(fullNameFromUrl);\n if (!match?.[0]) return undefined;\n if (scope) return `${scope}/${match[0]}`;\n return match[0];\n}\n"],"mappings":";;;;;;AAAA,SAAAA,gBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,eAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA,MAAME,cAAc,GAAG,eAAe;AAE/B,SAASC,iBAAiBA,CAACC,GAAY,EAAEC,2BAAqC,EAAsB;EACzG,MAAMC,MAAM,GAAG,IAAAC,2BAAS,EAAC,CAAC;EAC1B,MAAM,CAACC,YAAY,CAAC,GAAG,IAAAC,iCAAe,EAAC,CAAC;EACxC,MAAMC,oBAAoB,GAAGF,YAAY,CAACG,GAAG,CAAC,OAAO,CAAC,IAAIC,SAAS;EAEnE,MAAMC,KAAK,GAAGT,GAAG,IAAIE,MAAM,CAAC,GAAG,CAAC;EAChC,IAAI,CAACO,KAAK,EAAE,OAAOD,SAAS;EAE5B,MAAM,CAACE,iBAAiB,EAAE,GAAGC,aAAa,CAAC,GAAGF,KAAK,CAACG,KAAK,CAAC,GAAG,CAAC;EAC9D,MAAMC,QAAQ,GAAGH,iBAAiB,CAACE,KAAK,CAAC,GAAG,CAAC,CAACE,MAAM,GAAG,CAAC;EACxD,MAAMC,eAAe,GAAGF,QAAQ,GAAGF,aAAa,CAACK,IAAI,CAAC,GAAG,CAAC,GAAGP,KAAK;EAClE,IAAIQ,KAAyB;EAC7B,IAAIJ,QAAQ,EAAE;IACZI,KAAK,GAAGP,iBAAiB;EAC3B;EACA,IAAI,CAACG,QAAQ,IAAIZ,2BAA2B,EAAE;IAC5CgB,KAAK,GAAGX,oBAAoB;EAC9B;EACA,MAAMY,KAAK,GAAGpB,cAAc,CAACqB,IAAI,CAACJ,eAAe,CAAC;EAClD,IAAI,CAACG,KAAK,GAAG,CAAC,CAAC,EAAE,OAAOV,SAAS;EACjC,IAAIS,KAAK,EAAE,OAAQ,GAAEA,KAAM,IAAGC,KAAK,CAAC,CAAC,CAAE,EAAC;EACxC,OAAOA,KAAK,CAAC,CAAC,CAAC;AACjB"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/component",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.137",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/component/component",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.component",
|
|
8
8
|
"name": "component",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.137"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@teambit/any-fs": "0.0.5",
|
|
@@ -43,31 +43,31 @@
|
|
|
43
43
|
"@teambit/explorer.ui.command-bar": "2.0.14",
|
|
44
44
|
"@teambit/design.navigation.responsive-navbar": "0.0.7",
|
|
45
45
|
"@teambit/base-ui.layout.breakpoints": "1.0.0",
|
|
46
|
-
"@teambit/component.ui.version-dropdown": "0.0.853",
|
|
47
|
-
"@teambit/lanes.hooks.use-lanes": "0.0.257",
|
|
48
|
-
"@teambit/lanes.ui.models.lanes-model": "0.0.210",
|
|
49
46
|
"@teambit/ui-foundation.ui.use-box.dropdown": "0.0.141",
|
|
50
|
-
"@teambit/aspect-loader": "1.0.
|
|
51
|
-
"@teambit/graph": "1.0.
|
|
47
|
+
"@teambit/aspect-loader": "1.0.137",
|
|
48
|
+
"@teambit/graph": "1.0.137",
|
|
52
49
|
"@teambit/toolbox.path.match-patterns": "0.0.15",
|
|
53
50
|
"@teambit/toolbox.string.capitalize": "0.0.496",
|
|
54
51
|
"@teambit/cli": "0.0.848",
|
|
55
52
|
"@teambit/express": "0.0.947",
|
|
56
|
-
"@teambit/graphql": "1.0.
|
|
57
|
-
"@teambit/command-bar": "1.0.
|
|
53
|
+
"@teambit/graphql": "1.0.137",
|
|
54
|
+
"@teambit/command-bar": "1.0.137",
|
|
58
55
|
"@teambit/component-package-version": "0.0.433",
|
|
59
|
-
"@teambit/preview": "1.0.
|
|
60
|
-
"@teambit/pubsub": "1.0.
|
|
61
|
-
"@teambit/react-router": "1.0.
|
|
62
|
-
"@teambit/ui": "1.0.
|
|
56
|
+
"@teambit/preview": "1.0.137",
|
|
57
|
+
"@teambit/pubsub": "1.0.137",
|
|
58
|
+
"@teambit/react-router": "1.0.137",
|
|
59
|
+
"@teambit/ui": "1.0.137",
|
|
63
60
|
"@teambit/component-issues": "0.0.140",
|
|
64
|
-
"@teambit/cli-table": "0.0.48",
|
|
65
61
|
"@teambit/component-descriptor": "0.0.413",
|
|
62
|
+
"@teambit/cli-table": "0.0.48",
|
|
66
63
|
"@teambit/harmony.ui.aspect-box": "0.0.507",
|
|
67
64
|
"@teambit/envs.ui.env-icon": "0.0.505",
|
|
68
|
-
"@teambit/
|
|
69
|
-
"@teambit/
|
|
70
|
-
"@teambit/
|
|
65
|
+
"@teambit/component.ui.version-dropdown": "0.0.854",
|
|
66
|
+
"@teambit/lanes.hooks.use-lanes": "0.0.258",
|
|
67
|
+
"@teambit/lanes.ui.models.lanes-model": "0.0.212",
|
|
68
|
+
"@teambit/compositions": "1.0.137",
|
|
69
|
+
"@teambit/deprecation": "1.0.137",
|
|
70
|
+
"@teambit/envs": "1.0.137"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@types/lodash": "4.14.165",
|
package/ui/component.tsx
CHANGED
|
@@ -50,6 +50,7 @@ export function Component({
|
|
|
50
50
|
useComponentFilters,
|
|
51
51
|
}: ComponentProps) {
|
|
52
52
|
const idFromLocation = useIdFromLocation();
|
|
53
|
+
const componentIdStrWithScopeFromLocation = useIdFromLocation(undefined, true);
|
|
53
54
|
const _componentIdStr = getComponentIdStr(componentIdStr);
|
|
54
55
|
const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;
|
|
55
56
|
const resolvedComponentIdStr = path || idFromLocation;
|
|
@@ -73,7 +74,7 @@ export function Component({
|
|
|
73
74
|
|
|
74
75
|
const { component, componentDescriptor, error } = useComponentQuery(
|
|
75
76
|
host,
|
|
76
|
-
componentId?.toString() ||
|
|
77
|
+
componentId?.toString() || componentIdStrWithScopeFromLocation,
|
|
77
78
|
useComponentOptions
|
|
78
79
|
);
|
|
79
80
|
|
package/ui/menu/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CollapsibleMenuNav, MenuNavProps } from './menu-nav';
|
|
2
|
-
export { ComponentMenu, VersionRelatedDropdowns } from './menu';
|
|
2
|
+
export { ComponentMenu, VersionRelatedDropdowns, RightSideMenuItem, RightSideMenuSlot } from './menu';
|
|
3
3
|
export type {
|
|
4
4
|
NavPlugin,
|
|
5
5
|
OrderedNavigationSlot,
|
package/ui/menu/menu.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
1
|
+
import React, { useMemo, ReactNode } from 'react';
|
|
2
2
|
import { Routes, Route } from 'react-router-dom';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
|
-
import { compact, flatten, groupBy, isFunction } from 'lodash';
|
|
4
|
+
import { compact, flatten, groupBy, isFunction, orderBy } from 'lodash';
|
|
5
5
|
import * as semver from 'semver';
|
|
6
|
+
import { SlotRegistry } from '@teambit/harmony';
|
|
6
7
|
import { DropdownComponentVersion, GetActiveTabIndex, VersionDropdown } from '@teambit/component.ui.version-dropdown';
|
|
7
8
|
import { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';
|
|
8
9
|
import type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';
|
|
@@ -19,6 +20,9 @@ import { useIdFromLocation } from '../use-component-from-location';
|
|
|
19
20
|
import { ComponentID } from '../..';
|
|
20
21
|
import styles from './menu.module.scss';
|
|
21
22
|
|
|
23
|
+
export type RightSideMenuItem = { item: ReactNode; order: number };
|
|
24
|
+
export type RightSideMenuSlot = SlotRegistry<RightSideMenuItem[]>;
|
|
25
|
+
|
|
22
26
|
export type MenuProps = {
|
|
23
27
|
className?: string;
|
|
24
28
|
/**
|
|
@@ -34,9 +38,14 @@ export type MenuProps = {
|
|
|
34
38
|
*/
|
|
35
39
|
navigationSlot: OrderedNavigationSlot;
|
|
36
40
|
/**
|
|
37
|
-
* right side menu item slot
|
|
41
|
+
* right side navigation menu item slot
|
|
38
42
|
*/
|
|
39
43
|
widgetSlot: OrderedNavigationSlot;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* right side menu item slot
|
|
47
|
+
*/
|
|
48
|
+
rightSideMenuSlot: RightSideMenuSlot;
|
|
40
49
|
/**
|
|
41
50
|
* workspace or scope
|
|
42
51
|
*/
|
|
@@ -75,6 +84,7 @@ export function ComponentMenu({
|
|
|
75
84
|
host,
|
|
76
85
|
menuItemSlot,
|
|
77
86
|
consumeMethodSlot,
|
|
87
|
+
rightSideMenuSlot,
|
|
78
88
|
componentIdStr,
|
|
79
89
|
skipRightSide,
|
|
80
90
|
RightNode,
|
|
@@ -83,14 +93,16 @@ export function ComponentMenu({
|
|
|
83
93
|
useComponentFilters,
|
|
84
94
|
}: MenuProps) {
|
|
85
95
|
const idFromLocation = useIdFromLocation();
|
|
96
|
+
const componentIdStrWithScopeFromLocation = useIdFromLocation(undefined, true);
|
|
86
97
|
const _componentIdStr = getComponentIdStr(componentIdStr);
|
|
87
98
|
const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;
|
|
88
99
|
const resolvedComponentIdStr = path || idFromLocation;
|
|
89
100
|
const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);
|
|
101
|
+
const rightSideItems = useMemo(() => orderBy(flatten(rightSideMenuSlot.values()), 'order'), [rightSideMenuSlot]);
|
|
90
102
|
const componentFilters = useComponentFilters?.() || {};
|
|
91
103
|
const useComponentVersions = defaultLoadVersions(
|
|
92
104
|
host,
|
|
93
|
-
componentId?.toString() ||
|
|
105
|
+
componentId?.toString() || componentIdStrWithScopeFromLocation,
|
|
94
106
|
componentFilters,
|
|
95
107
|
useComponent
|
|
96
108
|
);
|
|
@@ -107,6 +119,7 @@ export function ComponentMenu({
|
|
|
107
119
|
componentFilters={componentFilters}
|
|
108
120
|
// loading={loading}
|
|
109
121
|
/>
|
|
122
|
+
{rightSideItems.map(({ item }) => item)}
|
|
110
123
|
<MainDropdown className={styles.hideOnMobile} menuItems={mainMenuItems} />
|
|
111
124
|
</>
|
|
112
125
|
)}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { useParams } from 'react-router-dom';
|
|
1
|
+
import { useParams, useSearchParams } from 'react-router-dom';
|
|
2
2
|
|
|
3
3
|
/** component url is comprised of letters, numbers, "_", "-", "/" but should not include trailing "/", and should not include "~" */
|
|
4
4
|
const componentRegex = /^[\w/-]*[\w-]/;
|
|
5
5
|
|
|
6
|
-
export function useIdFromLocation(url?: string): string | undefined {
|
|
6
|
+
export function useIdFromLocation(url?: string, deriveScopeFromSearchParams?: boolean): string | undefined {
|
|
7
7
|
const params = useParams();
|
|
8
|
+
const [searchParams] = useSearchParams();
|
|
9
|
+
const scopeFromQueryParams = searchParams.get('scope') ?? undefined;
|
|
10
|
+
|
|
8
11
|
const splat = url || params['*'];
|
|
9
12
|
if (!splat) return undefined;
|
|
10
13
|
|
|
@@ -15,6 +18,9 @@ export function useIdFromLocation(url?: string): string | undefined {
|
|
|
15
18
|
if (hasScope) {
|
|
16
19
|
scope = maybeOrgWithScope;
|
|
17
20
|
}
|
|
21
|
+
if (!hasScope && deriveScopeFromSearchParams) {
|
|
22
|
+
scope = scopeFromQueryParams;
|
|
23
|
+
}
|
|
18
24
|
const match = componentRegex.exec(fullNameFromUrl);
|
|
19
25
|
if (!match?.[0]) return undefined;
|
|
20
26
|
if (scope) return `${scope}/${match[0]}`;
|