@teambit/compositions 0.0.849 → 0.0.852

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/compositions.tsx CHANGED
@@ -56,21 +56,22 @@ export function Compositions({ menuBarWidgets, emptyState }: CompositionsProp) {
56
56
 
57
57
  const sidebarOpenness = isSidebarOpen ? Layout.row : Layout.left;
58
58
 
59
- const compositionUrl = toPreviewUrl(component, 'compositions');
60
- const currentCompositionUrl = toPreviewUrl(component, 'compositions', selected?.identifier);
59
+ const compositionUrl = toPreviewUrl(component, 'compositions');
60
+ const isScaling = component?.preview?.isScaling;
61
+ const compositionIdentifierParam = isScaling ? `name=${selected?.identifier}` : selected?.identifier;
62
+ const currentCompositionFullUrl = toPreviewUrl(component, 'compositions', compositionIdentifierParam);
61
63
 
62
64
  const [compositionParams, setCompositionParams] = useState<Record<string, any>>({});
63
65
  const queryParams = useMemo(() => queryString.stringify(compositionParams), [compositionParams]);
64
66
 
65
67
  // collapse sidebar when empty, reopen when not
66
68
  useEffect(() => setSidebarOpenness(showSidebar), [showSidebar]);
67
-
68
69
  return (
69
70
  <CompositionContextProvider queryParams={compositionParams} setQueryParams={setCompositionParams}>
70
71
  <SplitPane layout={sidebarOpenness} size="85%" className={styles.compositionsPage}>
71
72
  <Pane className={styles.left}>
72
73
  <CompositionsMenuBar menuBarWidgets={menuBarWidgets} className={styles.menuBar}>
73
- <Link external href={currentCompositionUrl} className={styles.openInNewTab}>
74
+ <Link external href={currentCompositionFullUrl} className={styles.openInNewTab}>
74
75
  <OptionButton icon="open-tab" />
75
76
  </Link>
76
77
  </CompositionsMenuBar>
@@ -78,7 +79,7 @@ export function Compositions({ menuBarWidgets, emptyState }: CompositionsProp) {
78
79
  emptyState={emptyState}
79
80
  component={component}
80
81
  selected={selected}
81
- queryParams={component.preview?.isScaling ? `name=${queryParams}`: queryParams}
82
+ queryParams={queryParams}
82
83
  />
83
84
  </Pane>
84
85
  <HoverSplitter className={styles.splitter}>
@@ -100,6 +101,7 @@ export function Compositions({ menuBarWidgets, emptyState }: CompositionsProp) {
100
101
  </TabList>
101
102
  <TabPanel className={styles.tabContent}>
102
103
  <CompositionsPanel
104
+ isScaling={isScaling}
103
105
  onSelectComposition={selectComposition}
104
106
  url={compositionUrl}
105
107
  compositions={component.compositions}
@@ -3,6 +3,13 @@ export declare type CompositionProps = {
3
3
  filepath?: string;
4
4
  displayName?: string;
5
5
  };
6
+ export declare type CompositionBrowserMetadata = {
7
+ displayName?: string;
8
+ identifier: string;
9
+ };
10
+ export declare type CompositionBrowserMetadataObject = {
11
+ compositions: CompositionBrowserMetadata[];
12
+ };
6
13
  export declare class Composition {
7
14
  /**
8
15
  * identifier of the composition
@@ -35,5 +42,6 @@ export declare class Composition {
35
42
  filepath: string | undefined;
36
43
  displayName: string | undefined;
37
44
  };
45
+ toBrowserMetaDataObject(): CompositionBrowserMetadata;
38
46
  static fromArray(compositions: CompositionProps[]): Composition[];
39
47
  }
@@ -46,6 +46,13 @@ class Composition {
46
46
  };
47
47
  }
48
48
 
49
+ toBrowserMetaDataObject() {
50
+ return {
51
+ identifier: this.identifier,
52
+ displayName: this._displayName
53
+ };
54
+ }
55
+
49
56
  static fromArray(compositions) {
50
57
  return compositions.map(composition => {
51
58
  return new Composition(composition.identifier, composition.filepath, composition.displayName);
@@ -1 +1 @@
1
- {"version":3,"names":["Composition","constructor","identifier","filepath","_displayName","displayName","humanizeCompositionId","toObject","fromArray","compositions","map","composition"],"sources":["composition.ts"],"sourcesContent":["import { humanizeCompositionId } from '@teambit/compositions.model.composition-id';\n\nexport type CompositionProps = {\n identifier: string;\n filepath?: string;\n displayName?: string;\n};\n\nexport class Composition {\n constructor(\n /**\n * identifier of the composition\n */\n readonly identifier: string,\n\n /**\n * file path in which the composition is contained.\n */\n readonly filepath?: string,\n\n /**\n * set explicit display name\n */\n private _displayName?: string\n ) {}\n\n get displayName() {\n return this._displayName || humanizeCompositionId(this.identifier);\n }\n\n toObject() {\n return {\n identifier: this.identifier,\n filepath: this.filepath,\n displayName: this._displayName,\n };\n }\n\n static fromArray(compositions: CompositionProps[]): Composition[] {\n return compositions.map((composition) => {\n return new Composition(composition.identifier, composition.filepath, composition.displayName);\n });\n }\n}\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAQO,MAAMA,WAAN,CAAkB;EACvBC,WAAW;EACT;AACJ;AACA;EACaC,UAJA;EAMT;AACJ;AACA;EACaC,QATA;EAWT;AACJ;AACA;EACYC,YAdC,EAeT;IAAA,KAXSF,UAWT,GAXSA,UAWT;IAAA,KANSC,QAMT,GANSA,QAMT;IAAA,KADQC,YACR,GADQA,YACR;EAAE;;EAEW,IAAXC,WAAW,GAAG;IAChB,OAAO,KAAKD,YAAL,IAAqB,IAAAE,0CAAA,EAAsB,KAAKJ,UAA3B,CAA5B;EACD;;EAEDK,QAAQ,GAAG;IACT,OAAO;MACLL,UAAU,EAAE,KAAKA,UADZ;MAELC,QAAQ,EAAE,KAAKA,QAFV;MAGLE,WAAW,EAAE,KAAKD;IAHb,CAAP;EAKD;;EAEe,OAATI,SAAS,CAACC,YAAD,EAAkD;IAChE,OAAOA,YAAY,CAACC,GAAb,CAAkBC,WAAD,IAAiB;MACvC,OAAO,IAAIX,WAAJ,CAAgBW,WAAW,CAACT,UAA5B,EAAwCS,WAAW,CAACR,QAApD,EAA8DQ,WAAW,CAACN,WAA1E,CAAP;IACD,CAFM,CAAP;EAGD;;AAlCsB"}
1
+ {"version":3,"names":["Composition","constructor","identifier","filepath","_displayName","displayName","humanizeCompositionId","toObject","toBrowserMetaDataObject","fromArray","compositions","map","composition"],"sources":["composition.ts"],"sourcesContent":["import { humanizeCompositionId } from '@teambit/compositions.model.composition-id';\n\nexport type CompositionProps = {\n identifier: string;\n filepath?: string;\n displayName?: string;\n};\n\nexport type CompositionBrowserMetadata = {\n displayName?: string;\n identifier: string;\n}\n\nexport type CompositionBrowserMetadataObject = {\n compositions: CompositionBrowserMetadata[]\n}\n\nexport class Composition {\n constructor(\n /**\n * identifier of the composition\n */\n readonly identifier: string,\n\n /**\n * file path in which the composition is contained.\n */\n readonly filepath?: string,\n\n /**\n * set explicit display name\n */\n private _displayName?: string\n ) {}\n\n get displayName() {\n return this._displayName || humanizeCompositionId(this.identifier);\n }\n\n toObject() {\n return {\n identifier: this.identifier,\n filepath: this.filepath,\n displayName: this._displayName,\n };\n }\n\n toBrowserMetaDataObject(): CompositionBrowserMetadata {\n return {\n identifier: this.identifier,\n displayName: this._displayName,\n };\n }\n\n static fromArray(compositions: CompositionProps[]): Composition[] {\n return compositions.map((composition) => {\n return new Composition(composition.identifier, composition.filepath, composition.displayName);\n });\n }\n}\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAiBO,MAAMA,WAAN,CAAkB;EACvBC,WAAW;EACT;AACJ;AACA;EACaC,UAJA;EAMT;AACJ;AACA;EACaC,QATA;EAWT;AACJ;AACA;EACYC,YAdC,EAeT;IAAA,KAXSF,UAWT,GAXSA,UAWT;IAAA,KANSC,QAMT,GANSA,QAMT;IAAA,KADQC,YACR,GADQA,YACR;EAAE;;EAEW,IAAXC,WAAW,GAAG;IAChB,OAAO,KAAKD,YAAL,IAAqB,IAAAE,0CAAA,EAAsB,KAAKJ,UAA3B,CAA5B;EACD;;EAEDK,QAAQ,GAAG;IACT,OAAO;MACLL,UAAU,EAAE,KAAKA,UADZ;MAELC,QAAQ,EAAE,KAAKA,QAFV;MAGLE,WAAW,EAAE,KAAKD;IAHb,CAAP;EAKD;;EAEDI,uBAAuB,GAA+B;IACpD,OAAO;MACLN,UAAU,EAAE,KAAKA,UADZ;MAELG,WAAW,EAAE,KAAKD;IAFb,CAAP;EAID;;EAEe,OAATK,SAAS,CAACC,YAAD,EAAkD;IAChE,OAAOA,YAAY,CAACC,GAAb,CAAkBC,WAAD,IAAiB;MACvC,OAAO,IAAIZ,WAAJ,CAAgBY,WAAW,CAACV,UAA5B,EAAwCU,WAAW,CAACT,QAApD,EAA8DS,WAAW,CAACP,WAA1E,CAAP;IACD,CAFM,CAAP;EAGD;;AAzCsB"}
@@ -299,7 +299,9 @@ function Compositions({
299
299
  const [isSidebarOpen, setSidebarOpenness] = (0, _react().useState)(showSidebar);
300
300
  const sidebarOpenness = isSidebarOpen ? _baseUiSurfacesSplitPane().Layout.row : _baseUiSurfacesSplitPane().Layout.left;
301
301
  const compositionUrl = (0, _previewUi().toPreviewUrl)(component, 'compositions');
302
- const currentCompositionUrl = (0, _previewUi().toPreviewUrl)(component, 'compositions', selected === null || selected === void 0 ? void 0 : selected.identifier);
302
+ const isScaling = component === null || component === void 0 ? void 0 : (_component$preview = component.preview) === null || _component$preview === void 0 ? void 0 : _component$preview.isScaling;
303
+ const compositionIdentifierParam = isScaling ? `name=${selected === null || selected === void 0 ? void 0 : selected.identifier}` : selected === null || selected === void 0 ? void 0 : selected.identifier;
304
+ const currentCompositionFullUrl = (0, _previewUi().toPreviewUrl)(component, 'compositions', compositionIdentifierParam);
303
305
  const [compositionParams, setCompositionParams] = (0, _react().useState)({});
304
306
  const queryParams = (0, _react().useMemo)(() => _queryString().default.stringify(compositionParams), [compositionParams]); // collapse sidebar when empty, reopen when not
305
307
 
@@ -318,7 +320,7 @@ function Compositions({
318
320
  className: _compositionsModule().default.menuBar
319
321
  }, /*#__PURE__*/_react().default.createElement(_baseReactNavigation().Link, {
320
322
  external: true,
321
- href: currentCompositionUrl,
323
+ href: currentCompositionFullUrl,
322
324
  className: _compositionsModule().default.openInNewTab
323
325
  }, /*#__PURE__*/_react().default.createElement(_designUiInput().OptionButton, {
324
326
  icon: "open-tab"
@@ -326,7 +328,7 @@ function Compositions({
326
328
  emptyState: emptyState,
327
329
  component: component,
328
330
  selected: selected,
329
- queryParams: (_component$preview = component.preview) !== null && _component$preview !== void 0 && _component$preview.isScaling ? `name=${queryParams}` : queryParams
331
+ queryParams: queryParams
330
332
  })), /*#__PURE__*/_react().default.createElement(_baseUiSurfacesSplitPane2().HoverSplitter, {
331
333
  className: _compositionsModule().default.splitter
332
334
  }, /*#__PURE__*/_react().default.createElement(_uiFoundationUiButtons().Collapser, {
@@ -346,6 +348,7 @@ function Compositions({
346
348
  }, /*#__PURE__*/_react().default.createElement(_panels().Tab, null, "compositions"), /*#__PURE__*/_react().default.createElement(_panels().Tab, null, "properties")), /*#__PURE__*/_react().default.createElement(_panels().TabPanel, {
347
349
  className: _compositionsModule().default.tabContent
348
350
  }, /*#__PURE__*/_react().default.createElement(_compositionsPanel().CompositionsPanel, {
351
+ isScaling: isScaling,
349
352
  onSelectComposition: selectComposition,
350
353
  url: compositionUrl,
351
354
  compositions: component.compositions,
@@ -1 +1 @@
1
- {"version":3,"names":["Compositions","menuBarWidgets","emptyState","component","useContext","ComponentContext","selected","selectComposition","useState","head","compositions","selectedRef","useRef","current","properties","useDocs","id","useEffect","prevId","identifier","next","find","c","isMobile","useIsMobile","showSidebar","length","isSidebarOpen","setSidebarOpenness","sidebarOpenness","Layout","row","left","compositionUrl","toPreviewUrl","currentCompositionUrl","compositionParams","setCompositionParams","queryParams","useMemo","queryString","stringify","styles","compositionsPage","menuBar","openInNewTab","preview","isScaling","splitter","e","stopPropagation","x","collapser","right","tabsContainer","tabs","tabContent","compost","CompositionContent","env","environment","EmptyStateTemplate","get","host","noCompositionsPage","title","separator","buildStatus","buildStatusMessage","compositionsIframe"],"sources":["compositions.tsx"],"sourcesContent":["import React, { useContext, useEffect, useState, useMemo, useRef, ReactNode } from 'react';\nimport head from 'lodash.head';\nimport queryString from 'query-string';\nimport { ThemeContext } from '@teambit/documenter.theme.theme-context';\nimport { SplitPane, Pane, Layout } from '@teambit/base-ui.surfaces.split-pane.split-pane';\nimport { HoverSplitter } from '@teambit/base-ui.surfaces.split-pane.hover-splitter';\nimport { ComponentContext, ComponentModel } from '@teambit/component';\nimport { PropTable } from '@teambit/documenter.ui.property-table';\nimport { Tab, TabContainer, TabList, TabPanel } from '@teambit/panels';\nimport { useDocs } from '@teambit/docs.ui.queries.get-docs';\nimport { Collapser } from '@teambit/ui-foundation.ui.buttons.collapser';\nimport { EmptyBox } from '@teambit/design.ui.empty-box';\nimport { toPreviewUrl } from '@teambit/preview.ui.component-preview';\nimport { useIsMobile } from '@teambit/ui-foundation.ui.hooks.use-is-mobile';\nimport { CompositionsMenuBar } from '@teambit/compositions.ui.compositions-menu-bar';\nimport { CompositionContextProvider } from '@teambit/compositions.ui.hooks.use-composition';\nimport { MDXLayout } from '@teambit/mdx.ui.mdx-layout';\nimport { Separator } from '@teambit/design.ui.separator';\nimport { H1 } from '@teambit/documenter.ui.heading';\nimport { AlertCard } from '@teambit/design.ui.alert-card';\nimport { Link } from '@teambit/base-react.navigation.link';\nimport { OptionButton } from '@teambit/design.ui.input.option-button';\nimport { StatusMessageCard } from '@teambit/design.ui.surfaces.status-message-card';\nimport { EmptyStateSlot } from './compositions.ui.runtime';\nimport { Composition } from './composition';\nimport styles from './compositions.module.scss';\nimport { ComponentComposition } from './ui';\nimport { CompositionsPanel } from './ui/compositions-panel/compositions-panel';\nimport type { CompositionsMenuSlot } from './compositions.ui.runtime';\n\nexport type MenuBarWidget = {\n location: 'start' | 'end';\n content: ReactNode;\n};\nexport type CompositionsProp = { menuBarWidgets?: CompositionsMenuSlot; emptyState?: EmptyStateSlot };\n\nexport function Compositions({ menuBarWidgets, emptyState }: CompositionsProp) {\n const component = useContext(ComponentContext);\n const [selected, selectComposition] = useState(head(component.compositions));\n const selectedRef = useRef(selected);\n selectedRef.current = selected;\n\n const properties = useDocs(component.id);\n\n // reset selected composition when component changes.\n // this does trigger renderer, but perf seems to be ok\n useEffect(() => {\n const prevId = selectedRef.current?.identifier;\n const next = component.compositions.find((c) => c.identifier === prevId) || component.compositions[0];\n\n selectComposition(next);\n }, [component]);\n const isMobile = useIsMobile();\n const showSidebar = !isMobile && component.compositions.length > 0;\n const [isSidebarOpen, setSidebarOpenness] = useState(showSidebar);\n\n const sidebarOpenness = isSidebarOpen ? Layout.row : Layout.left;\n\n const compositionUrl = toPreviewUrl(component, 'compositions');\n const currentCompositionUrl = toPreviewUrl(component, 'compositions', selected?.identifier);\n\n const [compositionParams, setCompositionParams] = useState<Record<string, any>>({});\n const queryParams = useMemo(() => queryString.stringify(compositionParams), [compositionParams]);\n\n // collapse sidebar when empty, reopen when not\n useEffect(() => setSidebarOpenness(showSidebar), [showSidebar]);\n\n return (\n <CompositionContextProvider queryParams={compositionParams} setQueryParams={setCompositionParams}>\n <SplitPane layout={sidebarOpenness} size=\"85%\" className={styles.compositionsPage}>\n <Pane className={styles.left}>\n <CompositionsMenuBar menuBarWidgets={menuBarWidgets} className={styles.menuBar}>\n <Link external href={currentCompositionUrl} className={styles.openInNewTab}>\n <OptionButton icon=\"open-tab\" />\n </Link>\n </CompositionsMenuBar>\n <CompositionContent\n emptyState={emptyState}\n component={component}\n selected={selected}\n queryParams={component.preview?.isScaling ? `name=${queryParams}`: queryParams}\n />\n </Pane>\n <HoverSplitter className={styles.splitter}>\n <Collapser\n placement=\"left\"\n isOpen={isSidebarOpen}\n onMouseDown={(e) => e.stopPropagation()} // avoid split-pane drag\n onClick={() => setSidebarOpenness((x) => !x)}\n tooltipContent={`${isSidebarOpen ? 'Hide' : 'Show'} side compositions`}\n className={styles.collapser}\n />\n </HoverSplitter>\n <Pane className={styles.right}>\n <ThemeContext>\n <TabContainer className={styles.tabsContainer}>\n <TabList className={styles.tabs}>\n <Tab>compositions</Tab>\n <Tab>properties</Tab>\n </TabList>\n <TabPanel className={styles.tabContent}>\n <CompositionsPanel\n onSelectComposition={selectComposition}\n url={compositionUrl}\n compositions={component.compositions}\n active={selected}\n className={styles.compost}\n />\n </TabPanel>\n <TabPanel className={styles.tabContent}>\n {properties && properties.length > 0 ? <PropTable rows={properties} showListView /> : <div />}\n </TabPanel>\n </TabContainer>\n </ThemeContext>\n </Pane>\n </SplitPane>\n </CompositionContextProvider>\n );\n}\n\nexport type CompositionContentProps = {\n component: ComponentModel;\n selected?: Composition;\n queryParams?: string | string[];\n emptyState?: EmptyStateSlot;\n};\n\nexport function CompositionContent({ component, selected, queryParams, emptyState }: CompositionContentProps) {\n const env = component.environment?.id;\n const EmptyStateTemplate = emptyState?.get(env || ''); // || defaultTemplate;\n\n if (component.compositions.length === 0 && component.host === 'teambit.workspace/workspace' && EmptyStateTemplate) {\n return (\n <div className={styles.noCompositionsPage}>\n <div>\n <H1 className={styles.title}>Compositions</H1>\n <Separator isPresentational className={styles.separator} />\n <AlertCard\n level=\"info\"\n title=\"There are no\n compositions for this Component. Learn how to add compositions:\"\n >\n <MDXLayout>\n <EmptyStateTemplate />\n </MDXLayout>\n </AlertCard>\n </div>\n </div>\n );\n }\n\n if (component?.buildStatus === 'pending' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard className={styles.buildStatusMessage} status=\"PROCESSING\" title=\"component preview pending\">\n this might take some time\n </StatusMessageCard>\n );\n if (component?.buildStatus === 'failed' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard\n className={styles.buildStatusMessage}\n status=\"FAILURE\"\n title=\"failed to get component preview \"\n ></StatusMessageCard>\n );\n\n // TODO: get the docs domain from the community aspect and pass it here as a prop\n if (component.compositions.length === 0) {\n return (\n <EmptyBox\n title=\"There are no compositions for this component.\"\n linkText=\"Learn how to create compositions\"\n link={`https://bit.dev/docs/dev-services-overview/compositions/compositions-overview`}\n />\n );\n }\n\n return (\n <ComponentComposition\n className={styles.compositionsIframe}\n // TODO: Oded to add control for viewport.\n viewport={null}\n component={component}\n forceHeight=\"100%\"\n composition={selected}\n fullContentHeight\n pubsub={true}\n queryParams={queryParams}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Compositions","menuBarWidgets","emptyState","component","useContext","ComponentContext","selected","selectComposition","useState","head","compositions","selectedRef","useRef","current","properties","useDocs","id","useEffect","prevId","identifier","next","find","c","isMobile","useIsMobile","showSidebar","length","isSidebarOpen","setSidebarOpenness","sidebarOpenness","Layout","row","left","compositionUrl","toPreviewUrl","isScaling","preview","compositionIdentifierParam","currentCompositionFullUrl","compositionParams","setCompositionParams","queryParams","useMemo","queryString","stringify","styles","compositionsPage","menuBar","openInNewTab","splitter","e","stopPropagation","x","collapser","right","tabsContainer","tabs","tabContent","compost","CompositionContent","env","environment","EmptyStateTemplate","get","host","noCompositionsPage","title","separator","buildStatus","buildStatusMessage","compositionsIframe"],"sources":["compositions.tsx"],"sourcesContent":["import React, { useContext, useEffect, useState, useMemo, useRef, ReactNode } from 'react';\nimport head from 'lodash.head';\nimport queryString from 'query-string';\nimport { ThemeContext } from '@teambit/documenter.theme.theme-context';\nimport { SplitPane, Pane, Layout } from '@teambit/base-ui.surfaces.split-pane.split-pane';\nimport { HoverSplitter } from '@teambit/base-ui.surfaces.split-pane.hover-splitter';\nimport { ComponentContext, ComponentModel } from '@teambit/component';\nimport { PropTable } from '@teambit/documenter.ui.property-table';\nimport { Tab, TabContainer, TabList, TabPanel } from '@teambit/panels';\nimport { useDocs } from '@teambit/docs.ui.queries.get-docs';\nimport { Collapser } from '@teambit/ui-foundation.ui.buttons.collapser';\nimport { EmptyBox } from '@teambit/design.ui.empty-box';\nimport { toPreviewUrl } from '@teambit/preview.ui.component-preview';\nimport { useIsMobile } from '@teambit/ui-foundation.ui.hooks.use-is-mobile';\nimport { CompositionsMenuBar } from '@teambit/compositions.ui.compositions-menu-bar';\nimport { CompositionContextProvider } from '@teambit/compositions.ui.hooks.use-composition';\nimport { MDXLayout } from '@teambit/mdx.ui.mdx-layout';\nimport { Separator } from '@teambit/design.ui.separator';\nimport { H1 } from '@teambit/documenter.ui.heading';\nimport { AlertCard } from '@teambit/design.ui.alert-card';\nimport { Link } from '@teambit/base-react.navigation.link';\nimport { OptionButton } from '@teambit/design.ui.input.option-button';\nimport { StatusMessageCard } from '@teambit/design.ui.surfaces.status-message-card';\nimport { EmptyStateSlot } from './compositions.ui.runtime';\nimport { Composition } from './composition';\nimport styles from './compositions.module.scss';\nimport { ComponentComposition } from './ui';\nimport { CompositionsPanel } from './ui/compositions-panel/compositions-panel';\nimport type { CompositionsMenuSlot } from './compositions.ui.runtime';\n\nexport type MenuBarWidget = {\n location: 'start' | 'end';\n content: ReactNode;\n};\nexport type CompositionsProp = { menuBarWidgets?: CompositionsMenuSlot; emptyState?: EmptyStateSlot };\n\nexport function Compositions({ menuBarWidgets, emptyState }: CompositionsProp) {\n const component = useContext(ComponentContext);\n const [selected, selectComposition] = useState(head(component.compositions));\n const selectedRef = useRef(selected);\n selectedRef.current = selected;\n\n const properties = useDocs(component.id);\n\n // reset selected composition when component changes.\n // this does trigger renderer, but perf seems to be ok\n useEffect(() => {\n const prevId = selectedRef.current?.identifier;\n const next = component.compositions.find((c) => c.identifier === prevId) || component.compositions[0];\n\n selectComposition(next);\n }, [component]);\n const isMobile = useIsMobile();\n const showSidebar = !isMobile && component.compositions.length > 0;\n const [isSidebarOpen, setSidebarOpenness] = useState(showSidebar);\n\n const sidebarOpenness = isSidebarOpen ? Layout.row : Layout.left;\n\n const compositionUrl = toPreviewUrl(component, 'compositions'); \n const isScaling = component?.preview?.isScaling;\n const compositionIdentifierParam = isScaling ? `name=${selected?.identifier}` : selected?.identifier;\n const currentCompositionFullUrl = toPreviewUrl(component, 'compositions', compositionIdentifierParam);\n\n const [compositionParams, setCompositionParams] = useState<Record<string, any>>({});\n const queryParams = useMemo(() => queryString.stringify(compositionParams), [compositionParams]);\n\n // collapse sidebar when empty, reopen when not\n useEffect(() => setSidebarOpenness(showSidebar), [showSidebar]);\n return (\n <CompositionContextProvider queryParams={compositionParams} setQueryParams={setCompositionParams}>\n <SplitPane layout={sidebarOpenness} size=\"85%\" className={styles.compositionsPage}>\n <Pane className={styles.left}>\n <CompositionsMenuBar menuBarWidgets={menuBarWidgets} className={styles.menuBar}>\n <Link external href={currentCompositionFullUrl} className={styles.openInNewTab}>\n <OptionButton icon=\"open-tab\" />\n </Link>\n </CompositionsMenuBar>\n <CompositionContent\n emptyState={emptyState}\n component={component}\n selected={selected}\n queryParams={queryParams}\n />\n </Pane>\n <HoverSplitter className={styles.splitter}>\n <Collapser\n placement=\"left\"\n isOpen={isSidebarOpen}\n onMouseDown={(e) => e.stopPropagation()} // avoid split-pane drag\n onClick={() => setSidebarOpenness((x) => !x)}\n tooltipContent={`${isSidebarOpen ? 'Hide' : 'Show'} side compositions`}\n className={styles.collapser}\n />\n </HoverSplitter>\n <Pane className={styles.right}>\n <ThemeContext>\n <TabContainer className={styles.tabsContainer}>\n <TabList className={styles.tabs}>\n <Tab>compositions</Tab>\n <Tab>properties</Tab>\n </TabList>\n <TabPanel className={styles.tabContent}>\n <CompositionsPanel\n isScaling={isScaling}\n onSelectComposition={selectComposition}\n url={compositionUrl}\n compositions={component.compositions}\n active={selected}\n className={styles.compost}\n />\n </TabPanel>\n <TabPanel className={styles.tabContent}>\n {properties && properties.length > 0 ? <PropTable rows={properties} showListView /> : <div />}\n </TabPanel>\n </TabContainer>\n </ThemeContext>\n </Pane>\n </SplitPane>\n </CompositionContextProvider>\n );\n}\n\nexport type CompositionContentProps = {\n component: ComponentModel;\n selected?: Composition;\n queryParams?: string | string[];\n emptyState?: EmptyStateSlot;\n};\n\nexport function CompositionContent({ component, selected, queryParams, emptyState }: CompositionContentProps) {\n const env = component.environment?.id;\n const EmptyStateTemplate = emptyState?.get(env || ''); // || defaultTemplate;\n\n if (component.compositions.length === 0 && component.host === 'teambit.workspace/workspace' && EmptyStateTemplate) {\n return (\n <div className={styles.noCompositionsPage}>\n <div>\n <H1 className={styles.title}>Compositions</H1>\n <Separator isPresentational className={styles.separator} />\n <AlertCard\n level=\"info\"\n title=\"There are no\n compositions for this Component. Learn how to add compositions:\"\n >\n <MDXLayout>\n <EmptyStateTemplate />\n </MDXLayout>\n </AlertCard>\n </div>\n </div>\n );\n }\n\n if (component?.buildStatus === 'pending' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard className={styles.buildStatusMessage} status=\"PROCESSING\" title=\"component preview pending\">\n this might take some time\n </StatusMessageCard>\n );\n if (component?.buildStatus === 'failed' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard\n className={styles.buildStatusMessage}\n status=\"FAILURE\"\n title=\"failed to get component preview \"\n ></StatusMessageCard>\n );\n\n // TODO: get the docs domain from the community aspect and pass it here as a prop\n if (component.compositions.length === 0) {\n return (\n <EmptyBox\n title=\"There are no compositions for this component.\"\n linkText=\"Learn how to create compositions\"\n link={`https://bit.dev/docs/dev-services-overview/compositions/compositions-overview`}\n />\n );\n }\n\n return (\n <ComponentComposition\n className={styles.compositionsIframe}\n // TODO: Oded to add control for viewport.\n viewport={null}\n component={component}\n forceHeight=\"100%\"\n composition={selected}\n fullContentHeight\n pubsub={true}\n queryParams={queryParams}\n />\n );\n}\n"],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { ExecutionContext, Environment } from '@teambit/envs';
3
3
  import { PreviewDefinition } from '@teambit/preview';
4
4
  import { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';
5
5
  import { CompositionsMain } from './compositions.main.runtime';
6
+ import { CompositionBrowserMetadataObject } from './composition';
6
7
  export declare class CompositionPreviewDefinition implements PreviewDefinition {
7
8
  private compositions;
8
9
  readonly prefix = "compositions";
@@ -11,4 +12,5 @@ export declare class CompositionPreviewDefinition implements PreviewDefinition {
11
12
  renderTemplatePath(context: ExecutionContext): Promise<string>;
12
13
  renderTemplatePathByEnv(env: Environment): Promise<any>;
13
14
  getModuleMap(components: Component[]): Promise<ComponentMap<AbstractVinyl[]>>;
15
+ getMetadata(component: Component): Promise<CompositionBrowserMetadataObject>;
14
16
  }
@@ -39,6 +39,16 @@ class CompositionPreviewDefinition {
39
39
  return map;
40
40
  }
41
41
 
42
+ async getMetadata(component) {
43
+ const compositions = this.compositions.getCompositions(component).map(composition => ({
44
+ displayName: composition.displayName,
45
+ identifier: composition.identifier
46
+ }));
47
+ return {
48
+ compositions
49
+ };
50
+ }
51
+
42
52
  }
43
53
 
44
54
  exports.CompositionPreviewDefinition = CompositionPreviewDefinition;
@@ -1 +1 @@
1
- {"version":3,"names":["CompositionPreviewDefinition","constructor","compositions","renderTemplatePath","context","renderTemplatePathByEnv","env","getMounter","getModuleMap","components","map","getPreviewFiles"],"sources":["compositions.preview-definition.ts"],"sourcesContent":["import { Component, ComponentMap } from '@teambit/component';\nimport type { ExecutionContext, Environment } from '@teambit/envs';\nimport { PreviewDefinition } from '@teambit/preview';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\n\nimport { CompositionsMain } from './compositions.main.runtime';\n\nexport class CompositionPreviewDefinition implements PreviewDefinition {\n readonly prefix = 'compositions';\n readonly includePeers = true;\n\n constructor(private compositions: CompositionsMain) {}\n\n async renderTemplatePath(context: ExecutionContext): Promise<string> {\n return this.renderTemplatePathByEnv(context.env);\n }\n\n async renderTemplatePathByEnv(env: Environment) {\n return env.getMounter();\n }\n\n async getModuleMap(components: Component[]): Promise<ComponentMap<AbstractVinyl[]>> {\n const map = this.compositions.getPreviewFiles(components);\n return map;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOO,MAAMA,4BAAN,CAAgE;EAIrEC,WAAW,CAASC,YAAT,EAAyC;IAAA,KAAhCA,YAAgC,GAAhCA,YAAgC;IAAA,gDAHlC,cAGkC;IAAA,sDAF5B,IAE4B;EAAE;;EAE9B,MAAlBC,kBAAkB,CAACC,OAAD,EAA6C;IACnE,OAAO,KAAKC,uBAAL,CAA6BD,OAAO,CAACE,GAArC,CAAP;EACD;;EAE4B,MAAvBD,uBAAuB,CAACC,GAAD,EAAmB;IAC9C,OAAOA,GAAG,CAACC,UAAJ,EAAP;EACD;;EAEiB,MAAZC,YAAY,CAACC,UAAD,EAAkE;IAClF,MAAMC,GAAG,GAAG,KAAKR,YAAL,CAAkBS,eAAlB,CAAkCF,UAAlC,CAAZ;IACA,OAAOC,GAAP;EACD;;AAjBoE"}
1
+ {"version":3,"names":["CompositionPreviewDefinition","constructor","compositions","renderTemplatePath","context","renderTemplatePathByEnv","env","getMounter","getModuleMap","components","map","getPreviewFiles","getMetadata","component","getCompositions","composition","displayName","identifier"],"sources":["compositions.preview-definition.ts"],"sourcesContent":["import { Component, ComponentMap } from '@teambit/component';\nimport type { ExecutionContext, Environment } from '@teambit/envs';\nimport { PreviewDefinition } from '@teambit/preview';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\n\nimport { CompositionsMain } from './compositions.main.runtime';\nimport { CompositionBrowserMetadataObject } from './composition';\n\n\nexport class CompositionPreviewDefinition implements PreviewDefinition {\n readonly prefix = 'compositions';\n readonly includePeers = true;\n\n constructor(private compositions: CompositionsMain) {}\n\n async renderTemplatePath(context: ExecutionContext): Promise<string> {\n return this.renderTemplatePathByEnv(context.env);\n }\n\n async renderTemplatePathByEnv(env: Environment) {\n return env.getMounter();\n }\n\n async getModuleMap(components: Component[]): Promise<ComponentMap<AbstractVinyl[]>> {\n const map = this.compositions.getPreviewFiles(components);\n return map;\n }\n\n async getMetadata(component: Component): Promise<CompositionBrowserMetadataObject> {\n const compositions = this.compositions\n .getCompositions(component)\n .map((composition) => ({displayName: composition.displayName, identifier: composition.identifier}));\n return {\n compositions,\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AASO,MAAMA,4BAAN,CAAgE;EAIrEC,WAAW,CAASC,YAAT,EAAyC;IAAA,KAAhCA,YAAgC,GAAhCA,YAAgC;IAAA,gDAHlC,cAGkC;IAAA,sDAF5B,IAE4B;EAAE;;EAE9B,MAAlBC,kBAAkB,CAACC,OAAD,EAA6C;IACnE,OAAO,KAAKC,uBAAL,CAA6BD,OAAO,CAACE,GAArC,CAAP;EACD;;EAE4B,MAAvBD,uBAAuB,CAACC,GAAD,EAAmB;IAC9C,OAAOA,GAAG,CAACC,UAAJ,EAAP;EACD;;EAEiB,MAAZC,YAAY,CAACC,UAAD,EAAkE;IAClF,MAAMC,GAAG,GAAG,KAAKR,YAAL,CAAkBS,eAAlB,CAAkCF,UAAlC,CAAZ;IACA,OAAOC,GAAP;EACD;;EAEgB,MAAXE,WAAW,CAACC,SAAD,EAAkE;IACjF,MAAMX,YAAY,GAAG,KAAKA,YAAL,CAClBY,eADkB,CACFD,SADE,EAElBH,GAFkB,CAEbK,WAAD,KAAkB;MAACC,WAAW,EAAED,WAAW,CAACC,WAA1B;MAAuCC,UAAU,EAAEF,WAAW,CAACE;IAA/D,CAAlB,CAFc,CAArB;IAGA,OAAO;MACLf;IADK,CAAP;EAGD;;AA1BoE"}
@@ -1,5 +1,6 @@
1
1
  import { ComponentID } from '@teambit/component-id';
2
2
  import { PreviewPreview, RenderingContext, PreviewModule } from '@teambit/preview';
3
+ import { CompositionBrowserMetadataObject } from './composition';
3
4
  export declare class CompositionsPreview {
4
5
  /**
5
6
  * preview extension.
@@ -12,7 +13,8 @@ export declare class CompositionsPreview {
12
13
  preview: PreviewPreview);
13
14
  render(componentId: ComponentID, modules: PreviewModule, otherPreviewDefs: any, context: RenderingContext): void;
14
15
  /** gets relevant information for this preview to render */
15
- selectPreviewModel(componentId: string, previewModule: PreviewModule): any;
16
+ selectPreviewModel(componentFullName: string, previewModule: PreviewModule): any;
17
+ getMetadata(componentFullName: string, previewModule: PreviewModule): CompositionBrowserMetadataObject | undefined;
16
18
  private getActiveComposition;
17
19
  static runtime: import("@teambit/harmony").RuntimeDefinition;
18
20
  static dependencies: import("@teambit/harmony").Aspect[];
@@ -63,20 +63,31 @@ class CompositionsPreview {
63
63
  render(componentId, modules, otherPreviewDefs, context) {
64
64
  if (!modules.componentMap[componentId.fullName]) return;
65
65
  const compositions = this.selectPreviewModel(componentId.fullName, modules);
66
- const active = this.getActiveComposition(compositions);
66
+ const metadata = this.getMetadata(componentId.fullName, modules);
67
+ const active = this.getActiveComposition(compositions, metadata);
67
68
  modules.mainModule.default(active, context);
68
69
  }
69
70
  /** gets relevant information for this preview to render */
70
71
 
71
72
 
72
- selectPreviewModel(componentId, previewModule) {
73
- const files = previewModule.componentMap[componentId] || []; // allow compositions to come from many files. It is assumed they will have unique named
73
+ selectPreviewModel(componentFullName, previewModule) {
74
+ const files = previewModule.componentMap[componentFullName] || []; // allow compositions to come from many files. It is assumed they will have unique named
74
75
 
75
76
  const combined = Object.assign({}, ...files);
76
77
  return combined;
77
78
  }
78
79
 
79
- getActiveComposition(module) {
80
+ getMetadata(componentFullName, previewModule) {
81
+ const metadata = previewModule !== null && previewModule !== void 0 && previewModule.componentMapMetadata ? previewModule.componentMapMetadata[componentFullName] : undefined;
82
+
83
+ if (metadata) {
84
+ return metadata;
85
+ }
86
+
87
+ return undefined;
88
+ }
89
+
90
+ getActiveComposition(module, metadata) {
80
91
  // const chosen = window.location.hash.split('&')[1];
81
92
  const query = this.preview.getQuery();
82
93
  const param = this.preview.getParam(query, 'name');
@@ -85,6 +96,15 @@ class CompositionsPreview {
85
96
  return module[param];
86
97
  }
87
98
 
99
+ if (metadata && metadata.compositions) {
100
+ const first = (0, _lodash().default)(metadata.compositions);
101
+ const firstId = first === null || first === void 0 ? void 0 : first.identifier;
102
+
103
+ if (firstId && module[firstId]) {
104
+ return module[firstId];
105
+ }
106
+ }
107
+
88
108
  const first = (0, _lodash().default)(Object.values(module));
89
109
  return first;
90
110
  }
@@ -1 +1 @@
1
- {"version":3,"names":["CompositionsPreview","constructor","preview","render","componentId","modules","otherPreviewDefs","context","componentMap","fullName","compositions","selectPreviewModel","active","getActiveComposition","mainModule","default","previewModule","files","combined","Object","assign","module","query","getQuery","param","getParam","first","head","values","provider","compPreview","registerPreview","name","bind","PreviewRuntime","PreviewAspect","CompositionsAspect","addRuntime"],"sources":["compositions.preview.runtime.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport {\n PreviewAspect,\n PreviewPreview,\n RenderingContext,\n PreviewRuntime,\n PreviewModule,\n ModuleFile,\n} from '@teambit/preview';\nimport head from 'lodash.head';\n\nimport { CompositionsAspect } from './compositions.aspect';\n\nexport class CompositionsPreview {\n constructor(\n /**\n * preview extension.\n */\n private preview: PreviewPreview\n ) {}\n\n render(componentId: ComponentID, modules: PreviewModule, otherPreviewDefs, context: RenderingContext) {\n if (!modules.componentMap[componentId.fullName]) return;\n\n const compositions = this.selectPreviewModel(componentId.fullName, modules);\n const active = this.getActiveComposition(compositions);\n\n modules.mainModule.default(active, context);\n }\n\n /** gets relevant information for this preview to render */\n selectPreviewModel(componentId: string, previewModule: PreviewModule) {\n const files = previewModule.componentMap[componentId] || [];\n\n // allow compositions to come from many files. It is assumed they will have unique named\n const combined = Object.assign({}, ...files);\n return combined;\n }\n\n private getActiveComposition(module: ModuleFile) {\n // const chosen = window.location.hash.split('&')[1];\n const query = this.preview.getQuery();\n const param = this.preview.getParam(query, 'name');\n\n if (param && module[param]) {\n return module[param];\n }\n \n const first = head(Object.values(module));\n return first;\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PreviewAspect];\n\n static async provider([preview]: [PreviewPreview]) {\n const compPreview = new CompositionsPreview(preview);\n preview.registerPreview({\n name: 'compositions',\n render: compPreview.render.bind(compPreview),\n selectPreviewModel: compPreview.selectPreviewModel.bind(compPreview),\n default: true,\n });\n\n return compPreview;\n }\n}\n\nCompositionsAspect.addRuntime(CompositionsPreview);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAQA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,mBAAN,CAA0B;EAC/BC,WAAW;EACT;AACJ;AACA;EACYC,OAJC,EAKT;IAAA,KADQA,OACR,GADQA,OACR;EAAE;;EAEJC,MAAM,CAACC,WAAD,EAA2BC,OAA3B,EAAmDC,gBAAnD,EAAqEC,OAArE,EAAgG;IACpG,IAAI,CAACF,OAAO,CAACG,YAAR,CAAqBJ,WAAW,CAACK,QAAjC,CAAL,EAAiD;IAEjD,MAAMC,YAAY,GAAG,KAAKC,kBAAL,CAAwBP,WAAW,CAACK,QAApC,EAA8CJ,OAA9C,CAArB;IACA,MAAMO,MAAM,GAAG,KAAKC,oBAAL,CAA0BH,YAA1B,CAAf;IAEAL,OAAO,CAACS,UAAR,CAAmBC,OAAnB,CAA2BH,MAA3B,EAAmCL,OAAnC;EACD;EAED;;;EACAI,kBAAkB,CAACP,WAAD,EAAsBY,aAAtB,EAAoD;IACpE,MAAMC,KAAK,GAAGD,aAAa,CAACR,YAAd,CAA2BJ,WAA3B,KAA2C,EAAzD,CADoE,CAGpE;;IACA,MAAMc,QAAQ,GAAGC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,GAAGH,KAArB,CAAjB;IACA,OAAOC,QAAP;EACD;;EAEOL,oBAAoB,CAACQ,MAAD,EAAqB;IAC/C;IACA,MAAMC,KAAK,GAAG,KAAKpB,OAAL,CAAaqB,QAAb,EAAd;IACA,MAAMC,KAAK,GAAG,KAAKtB,OAAL,CAAauB,QAAb,CAAsBH,KAAtB,EAA6B,MAA7B,CAAd;;IAEA,IAAIE,KAAK,IAAIH,MAAM,CAACG,KAAD,CAAnB,EAA4B;MAC1B,OAAOH,MAAM,CAACG,KAAD,CAAb;IACD;;IAED,MAAME,KAAK,GAAG,IAAAC,iBAAA,EAAKR,MAAM,CAACS,MAAP,CAAcP,MAAd,CAAL,CAAd;IACA,OAAOK,KAAP;EACD;;EAMoB,aAARG,QAAQ,CAAC,CAAC3B,OAAD,CAAD,EAA8B;IACjD,MAAM4B,WAAW,GAAG,IAAI9B,mBAAJ,CAAwBE,OAAxB,CAApB;IACAA,OAAO,CAAC6B,eAAR,CAAwB;MACtBC,IAAI,EAAE,cADgB;MAEtB7B,MAAM,EAAE2B,WAAW,CAAC3B,MAAZ,CAAmB8B,IAAnB,CAAwBH,WAAxB,CAFc;MAGtBnB,kBAAkB,EAAEmB,WAAW,CAACnB,kBAAZ,CAA+BsB,IAA/B,CAAoCH,WAApC,CAHE;MAItBf,OAAO,EAAE;IAJa,CAAxB;IAOA,OAAOe,WAAP;EACD;;AArD8B;;;gCAApB9B,mB,aAuCMkC,yB;gCAvCNlC,mB,kBAyCW,CAACmC,wBAAD,C;;AAexBC,kCAAA,CAAmBC,UAAnB,CAA8BrC,mBAA9B"}
1
+ {"version":3,"names":["CompositionsPreview","constructor","preview","render","componentId","modules","otherPreviewDefs","context","componentMap","fullName","compositions","selectPreviewModel","metadata","getMetadata","active","getActiveComposition","mainModule","default","componentFullName","previewModule","files","combined","Object","assign","componentMapMetadata","undefined","module","query","getQuery","param","getParam","first","head","firstId","identifier","values","provider","compPreview","registerPreview","name","bind","PreviewRuntime","PreviewAspect","CompositionsAspect","addRuntime"],"sources":["compositions.preview.runtime.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport {\n PreviewAspect,\n PreviewPreview,\n RenderingContext,\n PreviewRuntime,\n PreviewModule,\n ModuleFile,\n} from '@teambit/preview';\nimport head from 'lodash.head';\nimport { CompositionBrowserMetadataObject } from './composition';\n\nimport { CompositionsAspect } from './compositions.aspect';\n\nexport class CompositionsPreview {\n constructor(\n /**\n * preview extension.\n */\n private preview: PreviewPreview\n ) {}\n\n render(componentId: ComponentID, modules: PreviewModule, otherPreviewDefs, context: RenderingContext) {\n if (!modules.componentMap[componentId.fullName]) return;\n\n\n const compositions = this.selectPreviewModel(componentId.fullName, modules);\n const metadata = this.getMetadata(componentId.fullName, modules);\n const active = this.getActiveComposition(compositions, metadata);\n\n modules.mainModule.default(active, context);\n }\n\n /** gets relevant information for this preview to render */\n selectPreviewModel(componentFullName: string, previewModule: PreviewModule) {\n const files = previewModule.componentMap[componentFullName] || [];\n\n // allow compositions to come from many files. It is assumed they will have unique named\n const combined = Object.assign({}, ...files);\n return combined;\n }\n\n getMetadata(componentFullName: string, previewModule: PreviewModule): CompositionBrowserMetadataObject | undefined {\n const metadata = previewModule?.componentMapMetadata\n ? previewModule.componentMapMetadata[componentFullName]\n : undefined;\n if (metadata){\n return metadata as CompositionBrowserMetadataObject\n }\n return undefined;\n }\n\n private getActiveComposition(module: ModuleFile, metadata?: CompositionBrowserMetadataObject) {\n // const chosen = window.location.hash.split('&')[1];\n const query = this.preview.getQuery();\n const param = this.preview.getParam(query, 'name');\n\n if (param && module[param]) {\n return module[param];\n }\n\n if (metadata && metadata.compositions) {\n const first = head(metadata.compositions);\n const firstId = first?.identifier;\n if (firstId && module[firstId]) {\n return module[firstId];\n }\n }\n\n const first = head(Object.values(module));\n return first;\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PreviewAspect];\n\n static async provider([preview]: [PreviewPreview]) {\n const compPreview = new CompositionsPreview(preview);\n preview.registerPreview({\n name: 'compositions',\n render: compPreview.render.bind(compPreview),\n selectPreviewModel: compPreview.selectPreviewModel.bind(compPreview),\n default: true,\n });\n\n return compPreview;\n }\n}\n\nCompositionsAspect.addRuntime(CompositionsPreview);\n"],"mappings":"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"}
@@ -1,9 +1,25 @@
1
1
  import React from 'react';
2
2
  import { Composition } from '../../composition';
3
3
  export declare type CompositionsPanelProps = {
4
+ /**
5
+ * list of compositions
6
+ */
4
7
  compositions: Composition[];
8
+ /**
9
+ * select composition to display
10
+ */
5
11
  onSelectComposition: (composition: Composition) => void;
12
+ /**
13
+ * the currently active composition
14
+ */
6
15
  active?: Composition;
16
+ /**
17
+ * the url to the base composition. doesntc contain the current composition params
18
+ */
7
19
  url: string;
20
+ /**
21
+ * checks if a component is using the new preview api. if false, doesnt scale to support new preview
22
+ */
23
+ isScaling?: boolean;
8
24
  } & React.HTMLAttributes<HTMLUListElement>;
9
- export declare function CompositionsPanel({ url, compositions, onSelectComposition: onSelect, active, className, ...rest }: CompositionsPanelProps): JSX.Element;
25
+ export declare function CompositionsPanel({ url, compositions, isScaling, onSelectComposition: onSelect, active, className, ...rest }: CompositionsPanelProps): JSX.Element;
@@ -75,18 +75,20 @@ function CompositionsPanel(_ref) {
75
75
  let {
76
76
  url,
77
77
  compositions,
78
+ isScaling,
78
79
  onSelectComposition: onSelect,
79
80
  active,
80
81
  className
81
82
  } = _ref,
82
- rest = (0, _objectWithoutProperties2().default)(_ref, ["url", "compositions", "onSelectComposition", "active", "className"]);
83
+ rest = (0, _objectWithoutProperties2().default)(_ref, ["url", "compositions", "isScaling", "onSelectComposition", "active", "className"]);
83
84
  const handleSelect = (0, _react().useCallback)(selected => {
84
85
  onSelect && onSelect(selected);
85
86
  }, [onSelect]);
86
87
  return /*#__PURE__*/_react().default.createElement("ul", (0, _extends2().default)({}, rest, {
87
88
  className: (0, _classnames().default)(className)
88
89
  }), compositions.map(composition => {
89
- // TODO - move to composition panel node
90
+ const href = isScaling ? `${url}&name=${composition.identifier}` : `${url}&${composition.identifier}`; // TODO - move to composition panel node
91
+
90
92
  return /*#__PURE__*/_react().default.createElement("li", {
91
93
  key: composition.identifier,
92
94
  className: (0, _classnames().default)(_compositionsPanelModule().default.linkWrapper, composition === active && _compositionsPanelModule().default.active)
@@ -103,7 +105,7 @@ function CompositionsPanel(_ref) {
103
105
  className: _compositionsPanelModule().default.panelLink,
104
106
  target: "_blank",
105
107
  rel: "noopener noreferrer",
106
- href: `${url}&${composition.identifier}`
108
+ href: href
107
109
  }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
108
110
  className: _compositionsPanelModule().default.icon,
109
111
  of: "open-tab"
@@ -1 +1 @@
1
- {"version":3,"names":["CompositionsPanel","url","compositions","onSelectComposition","onSelect","active","className","rest","handleSelect","useCallback","selected","classNames","map","composition","identifier","styles","linkWrapper","panelLink","box","name","displayName","right","icon"],"sources":["compositions-panel.tsx"],"sourcesContent":["import { Icon } from '@teambit/evangelist.elements.icon';\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\n\nimport { Composition } from '../../composition';\nimport styles from './compositions-panel.module.scss';\n\nexport type CompositionsPanelProps = {\n compositions: Composition[];\n onSelectComposition: (composition: Composition) => void;\n active?: Composition;\n url: string;\n} & React.HTMLAttributes<HTMLUListElement>;\n\nexport function CompositionsPanel({\n url,\n compositions,\n onSelectComposition: onSelect,\n active,\n className,\n ...rest\n}: CompositionsPanelProps) {\n const handleSelect = useCallback(\n (selected: Composition) => {\n onSelect && onSelect(selected);\n },\n [onSelect]\n );\n\n return (\n <ul {...rest} className={classNames(className)}>\n {compositions.map((composition) => {\n // TODO - move to composition panel node\n return (\n <li\n key={composition.identifier}\n className={classNames(styles.linkWrapper, composition === active && styles.active)}\n >\n <a className={styles.panelLink} onClick={() => handleSelect(composition)}>\n <span className={styles.box}></span>\n <span className={styles.name}>{composition.displayName}</span>\n </a>\n <div className={styles.right}>\n <a\n className={styles.panelLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`${url}&${composition.identifier}`}\n >\n <Icon className={styles.icon} of=\"open-tab\" />\n </a>\n </div>\n </li>\n );\n })}\n </ul>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AASO,SAASA,iBAAT,OAOoB;EAAA,IAPO;IAChCC,GADgC;IAEhCC,YAFgC;IAGhCC,mBAAmB,EAAEC,QAHW;IAIhCC,MAJgC;IAKhCC;EALgC,CAOP;EAAA,IADtBC,IACsB;EACzB,MAAMC,YAAY,GAAG,IAAAC,oBAAA,EAClBC,QAAD,IAA2B;IACzBN,QAAQ,IAAIA,QAAQ,CAACM,QAAD,CAApB;EACD,CAHkB,EAInB,CAACN,QAAD,CAJmB,CAArB;EAOA,oBACE,kEAAQG,IAAR;IAAc,SAAS,EAAE,IAAAI,qBAAA,EAAWL,SAAX;EAAzB,IACGJ,YAAY,CAACU,GAAb,CAAkBC,WAAD,IAAiB;IACjC;IACA,oBACE;MACE,GAAG,EAAEA,WAAW,CAACC,UADnB;MAEE,SAAS,EAAE,IAAAH,qBAAA,EAAWI,kCAAA,CAAOC,WAAlB,EAA+BH,WAAW,KAAKR,MAAhB,IAA0BU,kCAAA,CAAOV,MAAhE;IAFb,gBAIE;MAAG,SAAS,EAAEU,kCAAA,CAAOE,SAArB;MAAgC,OAAO,EAAE,MAAMT,YAAY,CAACK,WAAD;IAA3D,gBACE;MAAM,SAAS,EAAEE,kCAAA,CAAOG;IAAxB,EADF,eAEE;MAAM,SAAS,EAAEH,kCAAA,CAAOI;IAAxB,GAA+BN,WAAW,CAACO,WAA3C,CAFF,CAJF,eAQE;MAAK,SAAS,EAAEL,kCAAA,CAAOM;IAAvB,gBACE;MACE,SAAS,EAAEN,kCAAA,CAAOE,SADpB;MAEE,MAAM,EAAC,QAFT;MAGE,GAAG,EAAC,qBAHN;MAIE,IAAI,EAAG,GAAEhB,GAAI,IAAGY,WAAW,CAACC,UAAW;IAJzC,gBAME,+BAAC,0BAAD;MAAM,SAAS,EAAEC,kCAAA,CAAOO,IAAxB;MAA8B,EAAE,EAAC;IAAjC,EANF,CADF,CARF,CADF;EAqBD,CAvBA,CADH,CADF;AA4BD"}
1
+ {"version":3,"names":["CompositionsPanel","url","compositions","isScaling","onSelectComposition","onSelect","active","className","rest","handleSelect","useCallback","selected","classNames","map","composition","href","identifier","styles","linkWrapper","panelLink","box","name","displayName","right","icon"],"sources":["compositions-panel.tsx"],"sourcesContent":["import { Icon } from '@teambit/evangelist.elements.icon';\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\n\nimport { Composition } from '../../composition';\nimport styles from './compositions-panel.module.scss';\n\nexport type CompositionsPanelProps = {\n /**\n * list of compositions\n */\n compositions: Composition[];\n /**\n * select composition to display\n */\n onSelectComposition: (composition: Composition) => void;\n /**\n * the currently active composition\n */\n active?: Composition;\n /**\n * the url to the base composition. doesntc contain the current composition params\n */\n url: string;\n /**\n * checks if a component is using the new preview api. if false, doesnt scale to support new preview\n */\n isScaling?: boolean;\n} & React.HTMLAttributes<HTMLUListElement>;\n\nexport function CompositionsPanel({\n url,\n compositions,\n isScaling,\n onSelectComposition: onSelect,\n active,\n className,\n ...rest\n}: CompositionsPanelProps) {\n const handleSelect = useCallback(\n (selected: Composition) => {\n onSelect && onSelect(selected);\n },\n [onSelect]\n );\n\n return (\n <ul {...rest} className={classNames(className)}>\n {compositions.map((composition) => {\n\n const href = isScaling ? `${url}&name=${composition.identifier}` : `${url}&${composition.identifier}`;\n\n // TODO - move to composition panel node\n return (\n <li\n key={composition.identifier}\n className={classNames(styles.linkWrapper, composition === active && styles.active)}\n >\n <a className={styles.panelLink} onClick={() => handleSelect(composition)}>\n <span className={styles.box}></span>\n <span className={styles.name}>{composition.displayName}</span>\n </a>\n <div className={styles.right}>\n <a\n className={styles.panelLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={href}\n >\n <Icon className={styles.icon} of=\"open-tab\" />\n </a>\n </div>\n </li>\n );\n })}\n </ul>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AAyBO,SAASA,iBAAT,OAQoB;EAAA,IARO;IAChCC,GADgC;IAEhCC,YAFgC;IAGhCC,SAHgC;IAIhCC,mBAAmB,EAAEC,QAJW;IAKhCC,MALgC;IAMhCC;EANgC,CAQP;EAAA,IADtBC,IACsB;EACzB,MAAMC,YAAY,GAAG,IAAAC,oBAAA,EAClBC,QAAD,IAA2B;IACzBN,QAAQ,IAAIA,QAAQ,CAACM,QAAD,CAApB;EACD,CAHkB,EAInB,CAACN,QAAD,CAJmB,CAArB;EAOA,oBACE,kEAAQG,IAAR;IAAc,SAAS,EAAE,IAAAI,qBAAA,EAAWL,SAAX;EAAzB,IACGL,YAAY,CAACW,GAAb,CAAkBC,WAAD,IAAiB;IAEjC,MAAMC,IAAI,GAAGZ,SAAS,GAAI,GAAEF,GAAI,SAAQa,WAAW,CAACE,UAAW,EAAzC,GAA8C,GAAEf,GAAI,IAAGa,WAAW,CAACE,UAAW,EAApG,CAFiC,CAIjC;;IACA,oBACE;MACE,GAAG,EAAEF,WAAW,CAACE,UADnB;MAEE,SAAS,EAAE,IAAAJ,qBAAA,EAAWK,kCAAA,CAAOC,WAAlB,EAA+BJ,WAAW,KAAKR,MAAhB,IAA0BW,kCAAA,CAAOX,MAAhE;IAFb,gBAIE;MAAG,SAAS,EAAEW,kCAAA,CAAOE,SAArB;MAAgC,OAAO,EAAE,MAAMV,YAAY,CAACK,WAAD;IAA3D,gBACE;MAAM,SAAS,EAAEG,kCAAA,CAAOG;IAAxB,EADF,eAEE;MAAM,SAAS,EAAEH,kCAAA,CAAOI;IAAxB,GAA+BP,WAAW,CAACQ,WAA3C,CAFF,CAJF,eAQE;MAAK,SAAS,EAAEL,kCAAA,CAAOM;IAAvB,gBACE;MACE,SAAS,EAAEN,kCAAA,CAAOE,SADpB;MAEE,MAAM,EAAC,QAFT;MAGE,GAAG,EAAC,qBAHN;MAIE,IAAI,EAAEJ;IAJR,gBAME,+BAAC,0BAAD;MAAM,SAAS,EAAEE,kCAAA,CAAOO,IAAxB;MAA8B,EAAE,EAAC;IAAjC,EANF,CADF,CARF,CADF;EAqBD,CA1BA,CADH,CADF;AA+BD"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/compositions",
3
- "version": "0.0.849",
3
+ "version": "0.0.852",
4
4
  "homepage": "https://bit.dev/teambit/compositions/compositions",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.compositions",
8
8
  "name": "compositions",
9
- "version": "0.0.849"
9
+ "version": "0.0.852"
10
10
  },
11
11
  "dependencies": {
12
12
  "graphql-tag": "2.12.1",
@@ -15,18 +15,18 @@
15
15
  "classnames": "2.2.6",
16
16
  "@babel/runtime": "7.12.18",
17
17
  "core-js": "^3.0.0",
18
- "@teambit/component": "0.0.849",
18
+ "@teambit/component": "0.0.852",
19
19
  "@teambit/compositions.ui.composition-compare": "0.0.81",
20
20
  "@teambit/compositions.model.composition-id": "0.0.494",
21
21
  "@teambit/harmony": "0.3.3",
22
- "@teambit/graphql": "0.0.849",
22
+ "@teambit/graphql": "0.0.852",
23
23
  "@teambit/cli": "0.0.566",
24
- "@teambit/dev-files": "0.0.849",
25
- "@teambit/envs": "0.0.849",
26
- "@teambit/preview": "0.0.849",
27
- "@teambit/schema": "0.0.849",
24
+ "@teambit/dev-files": "0.0.852",
25
+ "@teambit/envs": "0.0.852",
26
+ "@teambit/preview": "0.0.852",
27
+ "@teambit/schema": "0.0.852",
28
28
  "@teambit/toolbox.path.match-patterns": "0.0.7",
29
- "@teambit/workspace": "0.0.849",
29
+ "@teambit/workspace": "0.0.852",
30
30
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.494",
31
31
  "@teambit/component-id": "0.0.417",
32
32
  "@teambit/base-react.navigation.link": "2.0.27",
@@ -45,14 +45,14 @@
45
45
  "@teambit/documenter.ui.property-table": "4.1.3",
46
46
  "@teambit/mdx.ui.mdx-layout": "0.0.507",
47
47
  "@teambit/panels": "0.0.567",
48
- "@teambit/preview.ui.component-preview": "0.0.501",
48
+ "@teambit/preview.ui.component-preview": "0.0.502",
49
49
  "@teambit/ui-foundation.ui.buttons.collapser": "0.0.201",
50
50
  "@teambit/ui-foundation.ui.hooks.use-is-mobile": "0.0.185",
51
- "@teambit/component-compare": "0.0.97",
52
- "@teambit/ui": "0.0.849",
53
- "@teambit/evangelist.elements.icon": "1.0.2",
51
+ "@teambit/component-compare": "0.0.100",
52
+ "@teambit/ui": "0.0.852",
54
53
  "@teambit/compositions.model.composition-type": "0.0.495",
55
- "@teambit/compositions.ui.composition-card": "0.0.502"
54
+ "@teambit/compositions.ui.composition-card": "0.0.502",
55
+ "@teambit/evangelist.elements.icon": "1.0.2"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/react": "^17.0.8",
@@ -1,5 +1,7 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.compositions_compositions@0.0.849/dist/compositions.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.compositions_compositions@0.0.849/dist/compositions.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.compositions_compositions@0.0.852/dist/compositions.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.compositions_compositions@0.0.852/dist/compositions.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
6
+
7
+ export const compositions_metadata = {"compositions":[{"displayName":"Logo","identifier":"Logo"}]};
@@ -6,15 +6,32 @@ import { Composition } from '../../composition';
6
6
  import styles from './compositions-panel.module.scss';
7
7
 
8
8
  export type CompositionsPanelProps = {
9
+ /**
10
+ * list of compositions
11
+ */
9
12
  compositions: Composition[];
13
+ /**
14
+ * select composition to display
15
+ */
10
16
  onSelectComposition: (composition: Composition) => void;
17
+ /**
18
+ * the currently active composition
19
+ */
11
20
  active?: Composition;
21
+ /**
22
+ * the url to the base composition. doesntc contain the current composition params
23
+ */
12
24
  url: string;
25
+ /**
26
+ * checks if a component is using the new preview api. if false, doesnt scale to support new preview
27
+ */
28
+ isScaling?: boolean;
13
29
  } & React.HTMLAttributes<HTMLUListElement>;
14
30
 
15
31
  export function CompositionsPanel({
16
32
  url,
17
33
  compositions,
34
+ isScaling,
18
35
  onSelectComposition: onSelect,
19
36
  active,
20
37
  className,
@@ -30,6 +47,9 @@ export function CompositionsPanel({
30
47
  return (
31
48
  <ul {...rest} className={classNames(className)}>
32
49
  {compositions.map((composition) => {
50
+
51
+ const href = isScaling ? `${url}&name=${composition.identifier}` : `${url}&${composition.identifier}`;
52
+
33
53
  // TODO - move to composition panel node
34
54
  return (
35
55
  <li
@@ -45,7 +65,7 @@ export function CompositionsPanel({
45
65
  className={styles.panelLink}
46
66
  target="_blank"
47
67
  rel="noopener noreferrer"
48
- href={`${url}&${composition.identifier}`}
68
+ href={href}
49
69
  >
50
70
  <Icon className={styles.icon} of="open-tab" />
51
71
  </a>