@teambit/compositions 0.0.881 → 0.0.882
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/dist/composition.compare.section.js +0 -13
- package/dist/composition.compare.section.js.map +1 -1
- package/dist/composition.js +0 -10
- package/dist/composition.js.map +1 -1
- package/dist/composition.section.js +0 -13
- package/dist/composition.section.js.map +1 -1
- package/dist/compositions.aspect.js +0 -5
- package/dist/compositions.aspect.js.map +1 -1
- package/dist/compositions.composition.js +0 -6
- package/dist/compositions.composition.js.map +1 -1
- package/dist/compositions.graphql.js +0 -5
- package/dist/compositions.graphql.js.map +1 -1
- package/dist/compositions.js +9 -94
- package/dist/compositions.js.map +1 -1
- package/dist/compositions.main.runtime.js +8 -75
- package/dist/compositions.main.runtime.js.map +1 -1
- package/dist/compositions.preview-definition.js +0 -12
- package/dist/compositions.preview-definition.js.map +1 -1
- package/dist/compositions.preview.runtime.js +3 -33
- package/dist/compositions.preview.runtime.js.map +1 -1
- package/dist/compositions.ui.runtime.js +1 -35
- package/dist/compositions.ui.runtime.js.map +1 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +1 -1
- package/dist/ui/composition-preview.js +5 -22
- package/dist/ui/composition-preview.js.map +1 -1
- package/dist/ui/compositions-overview/compositions-overview.js +0 -12
- package/dist/ui/compositions-overview/compositions-overview.js.map +1 -1
- package/dist/ui/compositions-overview/index.js +0 -2
- package/dist/ui/compositions-overview/index.js.map +1 -1
- package/dist/ui/compositions-panel/compositions-panel.js +10 -31
- package/dist/ui/compositions-panel/compositions-panel.js.map +1 -1
- package/dist/ui/compositions-panel-node/compositions-panel-node.js +5 -19
- package/dist/ui/compositions-panel-node/compositions-panel-node.js.map +1 -1
- package/dist/ui/compositions-panel-node/index.js +0 -2
- package/dist/ui/compositions-panel-node/index.js.map +1 -1
- package/dist/ui/index.js +0 -3
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/use-compositions.js +3 -0
- package/dist/ui/use-compositions.js.map +1 -1
- package/package-tar/teambit-compositions-0.0.882.tgz +0 -0
- package/package.json +11 -11
- package/{preview-1666409808293.js → preview-1666496165706.js} +2 -2
- package/package-tar/teambit-compositions-0.0.881.tgz +0 -0
package/dist/compositions.js.map
CHANGED
|
@@ -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","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":";;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;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;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AASO,SAASA,YAAT,CAAsB;EAAEC,cAAF;EAAkBC;AAAlB,CAAtB,EAAwE;EAAA;;EAC7E,MAAMC,SAAS,GAAG,IAAAC,mBAAA,EAAWC,6BAAX,CAAlB;EACA,MAAM,CAACC,QAAD,EAAWC,iBAAX,IAAgC,IAAAC,iBAAA,EAAS,IAAAC,iBAAA,EAAKN,SAAS,CAACO,YAAf,CAAT,CAAtC;EACA,MAAMC,WAAW,GAAG,IAAAC,eAAA,EAAON,QAAP,CAApB;EACAK,WAAW,CAACE,OAAZ,GAAsBP,QAAtB;EAEA,MAAMQ,UAAU,GAAG,IAAAC,wBAAA,EAAQZ,SAAS,CAACa,EAAlB,CAAnB,CAN6E,CAQ7E;EACA;;EACA,IAAAC,kBAAA,EAAU,MAAM;IAAA;;IACd,MAAMC,MAAM,2BAAGP,WAAW,CAACE,OAAf,yDAAG,qBAAqBM,UAApC;IACA,MAAMC,IAAI,GAAGjB,SAAS,CAACO,YAAV,CAAuBW,IAAvB,CAA6BC,CAAD,IAAOA,CAAC,CAACH,UAAF,KAAiBD,MAApD,KAA+Df,SAAS,CAACO,YAAV,CAAuB,CAAvB,CAA5E;IAEAH,iBAAiB,CAACa,IAAD,CAAjB;EACD,CALD,EAKG,CAACjB,SAAD,CALH;EAMA,MAAMoB,QAAQ,GAAG,IAAAC,kCAAA,GAAjB;EACA,MAAMC,WAAW,GAAG,CAACF,QAAD,IAAapB,SAAS,CAACO,YAAV,CAAuBgB,MAAvB,GAAgC,CAAjE;EACA,MAAM,CAACC,aAAD,EAAgBC,kBAAhB,IAAsC,IAAApB,iBAAA,EAASiB,WAAT,CAA5C;EAEA,MAAMI,eAAe,GAAGF,aAAa,GAAGG,iCAAA,CAAOC,GAAV,GAAgBD,iCAAA,CAAOE,IAA5D;EAEA,MAAMC,cAAc,GAAG,IAAAC,yBAAA,EAAa/B,SAAb,EAAwB,cAAxB,CAAvB;EACA,MAAMgC,SAAS,GAAGhC,SAAH,aAAGA,SAAH,6CAAGA,SAAS,CAAEiC,OAAd,uDAAG,mBAAoBD,SAAtC;EACA,MAAME,0BAA0B,GAAGF,SAAS,GAAI,QAAO7B,QAAR,aAAQA,QAAR,uBAAQA,QAAQ,CAAEa,UAAW,EAAhC,GAAoCb,QAApC,aAAoCA,QAApC,uBAAoCA,QAAQ,CAAEa,UAA1F;EACA,MAAMmB,yBAAyB,GAAG,IAAAJ,yBAAA,EAAa/B,SAAb,EAAwB,cAAxB,EAAwCkC,0BAAxC,CAAlC;EAEA,MAAM,CAACE,iBAAD,EAAoBC,oBAApB,IAA4C,IAAAhC,iBAAA,EAA8B,EAA9B,CAAlD;EACA,MAAMiC,WAAW,GAAG,IAAAC,gBAAA,EAAQ,MAAMC,sBAAA,CAAYC,SAAZ,CAAsBL,iBAAtB,CAAd,EAAwD,CAACA,iBAAD,CAAxD,CAApB,CA5B6E,CA8B7E;;EACA,IAAAtB,kBAAA,EAAU,MAAMW,kBAAkB,CAACH,WAAD,CAAlC,EAAiD,CAACA,WAAD,CAAjD;EACA,oBACE,+BAAC,iDAAD;IAA4B,WAAW,EAAEc,iBAAzC;IAA4D,cAAc,EAAEC;EAA5E,gBACE,+BAAC,oCAAD;IAAW,MAAM,EAAEX,eAAnB;IAAoC,IAAI,EAAC,KAAzC;IAA+C,SAAS,EAAEgB,6BAAA,CAAOC;EAAjE,gBACE,+BAAC,+BAAD;IAAM,SAAS,EAAED,6BAAA,CAAOb;EAAxB,gBACE,+BAAC,qCAAD;IAAqB,cAAc,EAAE/B,cAArC;IAAqD,SAAS,EAAE4C,6BAAA,CAAOE;EAAvE,gBACE,+BAAC,2BAAD;IAAM,QAAQ,MAAd;IAAe,IAAI,EAAET,yBAArB;IAAgD,SAAS,EAAEO,6BAAA,CAAOG;EAAlE,gBACE,+BAAC,6BAAD;IAAc,IAAI,EAAC;EAAnB,EADF,CADF,CADF,eAME,+BAAC,kBAAD;IACE,UAAU,EAAE9C,UADd;IAEE,SAAS,EAAEC,SAFb;IAGE,QAAQ,EAAEG,QAHZ;IAIE,WAAW,EAAEmC;EAJf,EANF,CADF,eAcE,+BAAC,yCAAD;IAAe,SAAS,EAAEI,6BAAA,CAAOI;EAAjC,gBACE,+BAAC,kCAAD;IACE,SAAS,EAAC,MADZ;IAEE,MAAM,EAAEtB,aAFV;IAGE,WAAW,EAAGuB,CAAD,IAAOA,CAAC,CAACC,eAAF,EAHtB,CAG2C;IAH3C;IAIE,OAAO,EAAE,MAAMvB,kBAAkB,CAAEwB,CAAD,IAAO,CAACA,CAAT,CAJnC;IAKE,cAAc,EAAG,GAAEzB,aAAa,GAAG,MAAH,GAAY,MAAO,oBALrD;IAME,SAAS,EAAEkB,6BAAA,CAAOQ;EANpB,EADF,CAdF,eAwBE,+BAAC,+BAAD;IAAM,SAAS,EAAER,6BAAA,CAAOS;EAAxB,gBACE,+BAAC,+BAAD,qBACE,+BAAC,sBAAD;IAAc,SAAS,EAAET,6BAAA,CAAOU;EAAhC,gBACE,+BAAC,iBAAD;IAAS,SAAS,EAAEV,6BAAA,CAAOW;EAA3B,gBACE,+BAAC,aAAD,uBADF,eAEE,+BAAC,aAAD,qBAFF,CADF,eAKE,+BAAC,kBAAD;IAAU,SAAS,EAAEX,6BAAA,CAAOY;EAA5B,gBACE,+BAAC,sCAAD;IACE,SAAS,EAAEtB,SADb;IAEE,mBAAmB,EAAE5B,iBAFvB;IAGE,GAAG,EAAE0B,cAHP;IAIE,YAAY,EAAE9B,SAAS,CAACO,YAJ1B;IAKE,MAAM,EAAEJ,QALV;IAME,SAAS,EAAEuC,6BAAA,CAAOa;EANpB,EADF,CALF,eAeE,+BAAC,kBAAD;IAAU,SAAS,EAAEb,6BAAA,CAAOY;EAA5B,GACG3C,UAAU,IAAIA,UAAU,CAACY,MAAX,GAAoB,CAAlC,gBAAsC,+BAAC,yBAAD;IAAW,IAAI,EAAEZ,UAAjB;IAA6B,YAAY;EAAzC,EAAtC,gBAAqF,2CADxF,CAfF,CADF,CADF,CAxBF,CADF,CADF;AAoDD;;AASM,SAAS6C,kBAAT,CAA4B;EAAExD,SAAF;EAAaG,QAAb;EAAuBmC,WAAvB;EAAoCvC;AAApC,CAA5B,EAAuG;EAAA;;EAC5G,MAAM0D,GAAG,4BAAGzD,SAAS,CAAC0D,WAAb,0DAAG,sBAAuB7C,EAAnC;EACA,MAAM8C,kBAAkB,GAAG5D,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAE6D,GAAZ,CAAgBH,GAAG,IAAI,EAAvB,CAA3B,CAF4G,CAErD;;EAEvD,IAAIzD,SAAS,CAACO,YAAV,CAAuBgB,MAAvB,KAAkC,CAAlC,IAAuCvB,SAAS,CAAC6D,IAAV,KAAmB,6BAA1D,IAA2FF,kBAA/F,EAAmH;IACjH,oBACE;MAAK,SAAS,EAAEjB,6BAAA,CAAOoB;IAAvB,gBACE,yDACE,+BAAC,mBAAD;MAAI,SAAS,EAAEpB,6BAAA,CAAOqB;IAAtB,kBADF,eAEE,+BAAC,sBAAD;MAAW,gBAAgB,MAA3B;MAA4B,SAAS,EAAErB,6BAAA,CAAOsB;IAA9C,EAFF,eAGE,+BAAC,sBAAD;MACE,KAAK,EAAC,MADR;MAEE,KAAK,EAAC;IAFR,gBAKE,+BAAC,kBAAD,qBACE,+BAAC,kBAAD,OADF,CALF,CAHF,CADF,CADF;EAiBD;;EAED,IAAI,CAAAhE,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEiE,WAAX,MAA2B,SAA3B,IAAwC,CAAAjE,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAE6D,IAAX,MAAoB,qBAAhE,EACE,oBACE,+BAAC,qCAAD;IAAmB,SAAS,EAAEnB,6BAAA,CAAOwB,kBAArC;IAAyD,MAAM,EAAC,YAAhE;IAA6E,KAAK,EAAC;EAAnF,+BADF;EAKF,IAAI,CAAAlE,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEiE,WAAX,MAA2B,QAA3B,IAAuC,CAAAjE,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAE6D,IAAX,MAAoB,qBAA/D,EACE,oBACE,+BAAC,qCAAD;IACE,SAAS,EAAEnB,6BAAA,CAAOwB,kBADpB;IAEE,MAAM,EAAC,SAFT;IAGE,KAAK,EAAC;EAHR,EADF,CA/B0G,CAuC5G;;EACA,IAAIlE,SAAS,CAACO,YAAV,CAAuBgB,MAAvB,KAAkC,CAAtC,EAAyC;IACvC,oBACE,+BAAC,oBAAD;MACE,KAAK,EAAC,+CADR;MAEE,QAAQ,EAAC,kCAFX;MAGE,IAAI,EAAG;IAHT,EADF;EAOD;;EAED,oBACE,+BAAC,0BAAD;IACE,SAAS,EAAEmB,6BAAA,CAAOyB,kBADpB,CAEE;IAFF;IAGE,QAAQ,EAAE,IAHZ;IAIE,SAAS,EAAEnE,SAJb;IAKE,WAAW,EAAC,MALd;IAME,WAAW,EAAEG,QANf;IAOE,iBAAiB,MAPnB;IAQE,MAAM,EAAE,IARV;IASE,WAAW,EAAEmC;EATf,EADF;AAaD"}
|
|
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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"}
|
|
@@ -1,178 +1,125 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.array.iterator.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.promise.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.regexp.exec.js");
|
|
10
|
-
|
|
11
7
|
Object.defineProperty(exports, "__esModule", {
|
|
12
8
|
value: true
|
|
13
9
|
});
|
|
14
10
|
exports.CompositionsMain = void 0;
|
|
15
|
-
|
|
16
11
|
function _defineProperty2() {
|
|
17
12
|
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
|
|
19
13
|
_defineProperty2 = function () {
|
|
20
14
|
return data;
|
|
21
15
|
};
|
|
22
|
-
|
|
23
16
|
return data;
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
function _cli() {
|
|
27
19
|
const data = require("@teambit/cli");
|
|
28
|
-
|
|
29
20
|
_cli = function () {
|
|
30
21
|
return data;
|
|
31
22
|
};
|
|
32
|
-
|
|
33
23
|
return data;
|
|
34
24
|
}
|
|
35
|
-
|
|
36
25
|
function _component() {
|
|
37
26
|
const data = require("@teambit/component");
|
|
38
|
-
|
|
39
27
|
_component = function () {
|
|
40
28
|
return data;
|
|
41
29
|
};
|
|
42
|
-
|
|
43
30
|
return data;
|
|
44
31
|
}
|
|
45
|
-
|
|
46
32
|
function _devFiles() {
|
|
47
33
|
const data = require("@teambit/dev-files");
|
|
48
|
-
|
|
49
34
|
_devFiles = function () {
|
|
50
35
|
return data;
|
|
51
36
|
};
|
|
52
|
-
|
|
53
37
|
return data;
|
|
54
38
|
}
|
|
55
|
-
|
|
56
39
|
function _envs() {
|
|
57
40
|
const data = _interopRequireDefault(require("@teambit/envs"));
|
|
58
|
-
|
|
59
41
|
_envs = function () {
|
|
60
42
|
return data;
|
|
61
43
|
};
|
|
62
|
-
|
|
63
44
|
return data;
|
|
64
45
|
}
|
|
65
|
-
|
|
66
46
|
function _graphql() {
|
|
67
47
|
const data = require("@teambit/graphql");
|
|
68
|
-
|
|
69
48
|
_graphql = function () {
|
|
70
49
|
return data;
|
|
71
50
|
};
|
|
72
|
-
|
|
73
51
|
return data;
|
|
74
52
|
}
|
|
75
|
-
|
|
76
53
|
function _utils() {
|
|
77
54
|
const data = require("@teambit/legacy/dist/utils");
|
|
78
|
-
|
|
79
55
|
_utils = function () {
|
|
80
56
|
return data;
|
|
81
57
|
};
|
|
82
|
-
|
|
83
58
|
return data;
|
|
84
59
|
}
|
|
85
|
-
|
|
86
60
|
function _preview() {
|
|
87
61
|
const data = require("@teambit/preview");
|
|
88
|
-
|
|
89
62
|
_preview = function () {
|
|
90
63
|
return data;
|
|
91
64
|
};
|
|
92
|
-
|
|
93
65
|
return data;
|
|
94
66
|
}
|
|
95
|
-
|
|
96
67
|
function _schema() {
|
|
97
68
|
const data = require("@teambit/schema");
|
|
98
|
-
|
|
99
69
|
_schema = function () {
|
|
100
70
|
return data;
|
|
101
71
|
};
|
|
102
|
-
|
|
103
72
|
return data;
|
|
104
73
|
}
|
|
105
|
-
|
|
106
74
|
function _toolboxPath() {
|
|
107
75
|
const data = require("@teambit/toolbox.path.match-patterns");
|
|
108
|
-
|
|
109
76
|
_toolboxPath = function () {
|
|
110
77
|
return data;
|
|
111
78
|
};
|
|
112
|
-
|
|
113
79
|
return data;
|
|
114
80
|
}
|
|
115
|
-
|
|
116
81
|
function _workspace() {
|
|
117
82
|
const data = require("@teambit/workspace");
|
|
118
|
-
|
|
119
83
|
_workspace = function () {
|
|
120
84
|
return data;
|
|
121
85
|
};
|
|
122
|
-
|
|
123
86
|
return data;
|
|
124
87
|
}
|
|
125
|
-
|
|
126
88
|
function _path() {
|
|
127
89
|
const data = require("path");
|
|
128
|
-
|
|
129
90
|
_path = function () {
|
|
130
91
|
return data;
|
|
131
92
|
};
|
|
132
|
-
|
|
133
93
|
return data;
|
|
134
94
|
}
|
|
135
|
-
|
|
136
95
|
function _composition() {
|
|
137
96
|
const data = require("./composition");
|
|
138
|
-
|
|
139
97
|
_composition = function () {
|
|
140
98
|
return data;
|
|
141
99
|
};
|
|
142
|
-
|
|
143
100
|
return data;
|
|
144
101
|
}
|
|
145
|
-
|
|
146
102
|
function _compositions() {
|
|
147
103
|
const data = require("./compositions.aspect");
|
|
148
|
-
|
|
149
104
|
_compositions = function () {
|
|
150
105
|
return data;
|
|
151
106
|
};
|
|
152
|
-
|
|
153
107
|
return data;
|
|
154
108
|
}
|
|
155
|
-
|
|
156
109
|
function _compositions2() {
|
|
157
110
|
const data = require("./compositions.graphql");
|
|
158
|
-
|
|
159
111
|
_compositions2 = function () {
|
|
160
112
|
return data;
|
|
161
113
|
};
|
|
162
|
-
|
|
163
114
|
return data;
|
|
164
115
|
}
|
|
165
|
-
|
|
166
116
|
function _compositions3() {
|
|
167
117
|
const data = require("./compositions.preview-definition");
|
|
168
|
-
|
|
169
118
|
_compositions3 = function () {
|
|
170
119
|
return data;
|
|
171
120
|
};
|
|
172
|
-
|
|
173
121
|
return data;
|
|
174
122
|
}
|
|
175
|
-
|
|
176
123
|
/**
|
|
177
124
|
* the component documentation extension.
|
|
178
125
|
*/
|
|
@@ -206,26 +153,25 @@ class CompositionsMain {
|
|
|
206
153
|
this.devFiles = devFiles;
|
|
207
154
|
this.envs = envs;
|
|
208
155
|
}
|
|
156
|
+
|
|
209
157
|
/**
|
|
210
158
|
* returns an array of doc file paths for a set of components.
|
|
211
159
|
*/
|
|
212
|
-
|
|
213
|
-
|
|
214
160
|
getPreviewFiles(components) {
|
|
215
161
|
return _component().ComponentMap.as(components, component => {
|
|
216
162
|
// this includes non executables, like `button.compositions.module.scss` or `presets.compositions.json`
|
|
217
|
-
const compositionFiles = component.state.filesystem.byGlob(this.compositionFilePattern);
|
|
163
|
+
const compositionFiles = component.state.filesystem.byGlob(this.compositionFilePattern);
|
|
218
164
|
|
|
165
|
+
// select only relevant preview files (.tsx, etc)
|
|
219
166
|
const previewFiles = new Set(component.state.filesystem.byGlob(this.previewFilePattern).map(file => file.relative));
|
|
220
167
|
const files = compositionFiles.filter(file => previewFiles.has(file.relative));
|
|
221
168
|
return files;
|
|
222
169
|
});
|
|
223
170
|
}
|
|
171
|
+
|
|
224
172
|
/**
|
|
225
173
|
* checks if a file matches the composition file pattern.
|
|
226
174
|
*/
|
|
227
|
-
|
|
228
|
-
|
|
229
175
|
isCompositionFile(filePath) {
|
|
230
176
|
const {
|
|
231
177
|
includePatterns,
|
|
@@ -233,11 +179,10 @@ class CompositionsMain {
|
|
|
233
179
|
} = (0, _toolboxPath().splitPatterns)(this.compositionFilePattern);
|
|
234
180
|
return (0, _toolboxPath().matchPatterns)(filePath, includePatterns, excludePatterns);
|
|
235
181
|
}
|
|
182
|
+
|
|
236
183
|
/**
|
|
237
184
|
* get component compositions.
|
|
238
185
|
*/
|
|
239
|
-
|
|
240
|
-
|
|
241
186
|
getCompositions(component) {
|
|
242
187
|
const entry = component.get(_compositions().CompositionsAspect.id);
|
|
243
188
|
if (!entry) return [];
|
|
@@ -245,11 +190,10 @@ class CompositionsMain {
|
|
|
245
190
|
if (!compositions) return [];
|
|
246
191
|
return _composition().Composition.fromArray(compositions);
|
|
247
192
|
}
|
|
193
|
+
|
|
248
194
|
/**
|
|
249
195
|
* read composition from the component source code.
|
|
250
196
|
*/
|
|
251
|
-
|
|
252
|
-
|
|
253
197
|
readCompositions(component) {
|
|
254
198
|
const maybeFiles = this.getPreviewFiles([component]).byComponent(component);
|
|
255
199
|
if (!maybeFiles) return [];
|
|
@@ -258,22 +202,18 @@ class CompositionsMain {
|
|
|
258
202
|
return this.computeCompositions(component, file);
|
|
259
203
|
}));
|
|
260
204
|
}
|
|
261
|
-
|
|
262
205
|
getCompositionFilePattern() {
|
|
263
206
|
return this.compositionFilePattern;
|
|
264
207
|
}
|
|
265
|
-
|
|
266
208
|
getComponentDevPatterns(component) {
|
|
267
209
|
const env = this.envs.calculateEnv(component).env;
|
|
268
210
|
const componentEnvCompositionsDevPatterns = env.getCompositionsDevPatterns ? env.getCompositionsDevPatterns(component) : [];
|
|
269
211
|
const componentPatterns = componentEnvCompositionsDevPatterns.concat(this.getCompositionFilePattern());
|
|
270
212
|
return componentPatterns;
|
|
271
213
|
}
|
|
272
|
-
|
|
273
214
|
getDevPatternToRegister() {
|
|
274
215
|
return this.getComponentDevPatterns.bind(this);
|
|
275
216
|
}
|
|
276
|
-
|
|
277
217
|
async onComponentLoad(component, loadOpts) {
|
|
278
218
|
if ((loadOpts === null || loadOpts === void 0 ? void 0 : loadOpts.loadCompositions) === false) return undefined;
|
|
279
219
|
const compositions = this.readCompositions(component);
|
|
@@ -281,7 +221,6 @@ class CompositionsMain {
|
|
|
281
221
|
compositions: compositions.map(composition => composition.toObject())
|
|
282
222
|
};
|
|
283
223
|
}
|
|
284
|
-
|
|
285
224
|
computeCompositions(component, file) {
|
|
286
225
|
// :TODO hacked for a specific file extension now until david will take care in the compiler.
|
|
287
226
|
const pathArray = file.path.split('.');
|
|
@@ -289,28 +228,23 @@ class CompositionsMain {
|
|
|
289
228
|
const exports = this.schema.parseModule((0, _path().join)(this.workspace.componentDir(component.id), file.relative));
|
|
290
229
|
return exports.map(exportModel => {
|
|
291
230
|
var _exportModel$staticPr;
|
|
292
|
-
|
|
293
231
|
const displayName = (_exportModel$staticPr = exportModel.staticProperties) === null || _exportModel$staticPr === void 0 ? void 0 : _exportModel$staticPr.get('compositionName');
|
|
294
232
|
return new (_composition().Composition)(exportModel.identifier, file.relative, typeof displayName === 'string' ? displayName : undefined);
|
|
295
233
|
});
|
|
296
234
|
}
|
|
297
|
-
|
|
298
235
|
static async provider([preview, graphql, workspace, schema, devFiles, envs], config) {
|
|
299
|
-
const compositions = new CompositionsMain(config.compositionFilePattern, config.compositionPreviewFilePattern, preview, workspace, schema, devFiles, envs);
|
|
236
|
+
const compositions = new CompositionsMain(config.compositionFilePattern, config.compositionPreviewFilePattern, preview, workspace, schema, devFiles, envs);
|
|
300
237
|
|
|
238
|
+
// TODO: use the docs implementation to allow component specific pattern
|
|
301
239
|
devFiles.registerDevPattern(compositions.getDevPatternToRegister());
|
|
302
240
|
graphql.register((0, _compositions2().compositionsSchema)(compositions));
|
|
303
241
|
preview.registerDefinition(new (_compositions3().CompositionPreviewDefinition)(compositions));
|
|
304
|
-
|
|
305
242
|
if (workspace) {
|
|
306
243
|
workspace.onComponentLoad(compositions.onComponentLoad.bind(compositions));
|
|
307
244
|
}
|
|
308
|
-
|
|
309
245
|
return compositions;
|
|
310
246
|
}
|
|
311
|
-
|
|
312
247
|
}
|
|
313
|
-
|
|
314
248
|
exports.CompositionsMain = CompositionsMain;
|
|
315
249
|
(0, _defineProperty2().default)(CompositionsMain, "defaultConfig", {
|
|
316
250
|
compositionFilePattern: ['**/*.composition?(s).*'],
|
|
@@ -318,7 +252,6 @@ exports.CompositionsMain = CompositionsMain;
|
|
|
318
252
|
});
|
|
319
253
|
(0, _defineProperty2().default)(CompositionsMain, "runtime", _cli().MainRuntime);
|
|
320
254
|
(0, _defineProperty2().default)(CompositionsMain, "dependencies", [_preview().PreviewAspect, _graphql().GraphqlAspect, _workspace().WorkspaceAspect, _schema().SchemaAspect, _devFiles().DevFilesAspect, _envs().default]);
|
|
321
|
-
|
|
322
255
|
_compositions().CompositionsAspect.addRuntime(CompositionsMain);
|
|
323
256
|
|
|
324
257
|
//# sourceMappingURL=compositions.main.runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CompositionsMain","constructor","compositionFilePattern","previewFilePattern","preview","workspace","schema","devFiles","envs","getPreviewFiles","components","ComponentMap","as","component","compositionFiles","state","filesystem","byGlob","previewFiles","Set","map","file","relative","files","filter","has","isCompositionFile","filePath","includePatterns","excludePatterns","splitPatterns","matchPatterns","getCompositions","entry","get","CompositionsAspect","id","compositions","data","Composition","fromArray","readCompositions","maybeFiles","byComponent","flatten","computeCompositions","getCompositionFilePattern","getComponentDevPatterns","env","calculateEnv","componentEnvCompositionsDevPatterns","getCompositionsDevPatterns","componentPatterns","concat","getDevPatternToRegister","bind","onComponentLoad","loadOpts","loadCompositions","undefined","composition","toObject","pathArray","path","split","length","exports","parseModule","join","componentDir","exportModel","displayName","staticProperties","identifier","provider","graphql","config","compositionPreviewFilePattern","registerDevPattern","register","compositionsSchema","registerDefinition","CompositionPreviewDefinition","MainRuntime","PreviewAspect","GraphqlAspect","WorkspaceAspect","SchemaAspect","DevFilesAspect","EnvsAspect","addRuntime"],"sources":["compositions.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { AspectData, Component, ComponentMap, IComponent } from '@teambit/component';\nimport { DevFilesAspect, DevFilesMain } from '@teambit/dev-files';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from '@teambit/legacy/dist/utils';\nimport { PreviewAspect, PreviewMain } from '@teambit/preview';\nimport { SchemaAspect, SchemaMain } from '@teambit/schema';\nimport { matchPatterns, splitPatterns } from '@teambit/toolbox.path.match-patterns';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { join } from 'path';\nimport { Composition } from './composition';\nimport { CompositionsAspect } from './compositions.aspect';\nimport { compositionsSchema } from './compositions.graphql';\nimport { CompositionPreviewDefinition } from './compositions.preview-definition';\n\nexport type CompositionsConfig = {\n /**\n * glob pattern to detect composition files. This includes all related files, like styles and jsons.\n * @example ['/*.composition?(s).*']\n */\n compositionFilePattern: string[];\n /**\n * glob pattern to select Preview files. this will only include files matched by compositionFilePattern.\n * @example ['*.{t,j}s', '*.{t,j}sx']\n */\n compositionPreviewFilePattern: string[];\n};\n\n/**\n * the component documentation extension.\n */\nexport class CompositionsMain {\n constructor(\n /**\n * Glob pattern to select all composition files\n */\n private compositionFilePattern: string[],\n\n /**\n * Glob pattern to select composition preview files\n */\n private previewFilePattern: string[],\n\n /**\n * envs extension.\n */\n private preview: PreviewMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * schema extension.\n */\n private schema: SchemaMain,\n\n private devFiles: DevFilesMain,\n\n private envs: EnvsMain\n ) {}\n\n /**\n * returns an array of doc file paths for a set of components.\n */\n getPreviewFiles(components: Component[]): ComponentMap<AbstractVinyl[]> {\n return ComponentMap.as<AbstractVinyl[]>(components, (component) => {\n // this includes non executables, like `button.compositions.module.scss` or `presets.compositions.json`\n const compositionFiles = component.state.filesystem.byGlob(this.compositionFilePattern);\n\n // select only relevant preview files (.tsx, etc)\n const previewFiles = new Set(\n component.state.filesystem.byGlob(this.previewFilePattern).map((file) => file.relative)\n );\n const files = compositionFiles.filter((file) => previewFiles.has(file.relative));\n\n return files;\n });\n }\n\n /**\n * checks if a file matches the composition file pattern.\n */\n isCompositionFile(filePath: string): boolean {\n const { includePatterns, excludePatterns } = splitPatterns(this.compositionFilePattern);\n return matchPatterns(filePath, includePatterns, excludePatterns);\n }\n\n /**\n * get component compositions.\n */\n getCompositions(component: IComponent): Composition[] {\n const entry = component.get(CompositionsAspect.id);\n if (!entry) return [];\n const compositions = entry.data.compositions;\n if (!compositions) return [];\n\n return Composition.fromArray(compositions);\n }\n\n /**\n * read composition from the component source code.\n */\n readCompositions(component: Component): Composition[] {\n const maybeFiles = this.getPreviewFiles([component]).byComponent(component);\n\n if (!maybeFiles) return [];\n const [, files] = maybeFiles;\n return flatten(\n files.map((file) => {\n return this.computeCompositions(component, file);\n })\n );\n }\n\n getCompositionFilePattern() {\n return this.compositionFilePattern;\n }\n\n getComponentDevPatterns(component: Component) {\n const env = this.envs.calculateEnv(component).env;\n const componentEnvCompositionsDevPatterns: string[] = env.getCompositionsDevPatterns\n ? env.getCompositionsDevPatterns(component)\n : [];\n const componentPatterns = componentEnvCompositionsDevPatterns.concat(this.getCompositionFilePattern());\n return componentPatterns;\n }\n\n getDevPatternToRegister() {\n return this.getComponentDevPatterns.bind(this);\n }\n\n async onComponentLoad(component: Component, loadOpts?: ComponentLoadOptions): Promise<AspectData | undefined> {\n if (loadOpts?.loadCompositions === false) return undefined;\n const compositions = this.readCompositions(component);\n return {\n compositions: compositions.map((composition) => composition.toObject()),\n };\n }\n\n private computeCompositions(component: Component, file: AbstractVinyl): Composition[] {\n // :TODO hacked for a specific file extension now until david will take care in the compiler.\n const pathArray = file.path.split('.');\n pathArray[pathArray.length - 1] = 'js';\n\n const exports = this.schema.parseModule(join(this.workspace.componentDir(component.id), file.relative));\n return exports.map((exportModel) => {\n const displayName = exportModel.staticProperties?.get('compositionName');\n\n return new Composition(\n exportModel.identifier,\n file.relative,\n typeof displayName === 'string' ? displayName : undefined\n );\n });\n }\n\n static defaultConfig: CompositionsConfig = {\n compositionFilePattern: ['**/*.composition?(s).*'],\n compositionPreviewFilePattern: ['**/*.{t,j}s?(x)'],\n };\n\n static runtime = MainRuntime;\n static dependencies = [PreviewAspect, GraphqlAspect, WorkspaceAspect, SchemaAspect, DevFilesAspect, EnvsAspect];\n\n static async provider(\n [preview, graphql, workspace, schema, devFiles, envs]: [\n PreviewMain,\n GraphqlMain,\n Workspace,\n SchemaMain,\n DevFilesMain,\n EnvsMain\n ],\n config: CompositionsConfig\n ) {\n const compositions = new CompositionsMain(\n config.compositionFilePattern,\n config.compositionPreviewFilePattern,\n preview,\n workspace,\n schema,\n devFiles,\n envs\n );\n\n // TODO: use the docs implementation to allow component specific pattern\n devFiles.registerDevPattern(compositions.getDevPatternToRegister());\n\n graphql.register(compositionsSchema(compositions));\n preview.registerDefinition(new CompositionPreviewDefinition(compositions));\n\n if (workspace) {\n workspace.onComponentLoad(compositions.onComponentLoad.bind(compositions));\n }\n\n return compositions;\n }\n}\n\nCompositionsAspect.addRuntime(CompositionsMain);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["CompositionsMain","constructor","compositionFilePattern","previewFilePattern","preview","workspace","schema","devFiles","envs","getPreviewFiles","components","ComponentMap","as","component","compositionFiles","state","filesystem","byGlob","previewFiles","Set","map","file","relative","files","filter","has","isCompositionFile","filePath","includePatterns","excludePatterns","splitPatterns","matchPatterns","getCompositions","entry","get","CompositionsAspect","id","compositions","data","Composition","fromArray","readCompositions","maybeFiles","byComponent","flatten","computeCompositions","getCompositionFilePattern","getComponentDevPatterns","env","calculateEnv","componentEnvCompositionsDevPatterns","getCompositionsDevPatterns","componentPatterns","concat","getDevPatternToRegister","bind","onComponentLoad","loadOpts","loadCompositions","undefined","composition","toObject","pathArray","path","split","length","exports","parseModule","join","componentDir","exportModel","displayName","staticProperties","identifier","provider","graphql","config","compositionPreviewFilePattern","registerDevPattern","register","compositionsSchema","registerDefinition","CompositionPreviewDefinition","MainRuntime","PreviewAspect","GraphqlAspect","WorkspaceAspect","SchemaAspect","DevFilesAspect","EnvsAspect","addRuntime"],"sources":["compositions.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { AspectData, Component, ComponentMap, IComponent } from '@teambit/component';\nimport { DevFilesAspect, DevFilesMain } from '@teambit/dev-files';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from '@teambit/legacy/dist/utils';\nimport { PreviewAspect, PreviewMain } from '@teambit/preview';\nimport { SchemaAspect, SchemaMain } from '@teambit/schema';\nimport { matchPatterns, splitPatterns } from '@teambit/toolbox.path.match-patterns';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { join } from 'path';\nimport { Composition } from './composition';\nimport { CompositionsAspect } from './compositions.aspect';\nimport { compositionsSchema } from './compositions.graphql';\nimport { CompositionPreviewDefinition } from './compositions.preview-definition';\n\nexport type CompositionsConfig = {\n /**\n * glob pattern to detect composition files. This includes all related files, like styles and jsons.\n * @example ['/*.composition?(s).*']\n */\n compositionFilePattern: string[];\n /**\n * glob pattern to select Preview files. this will only include files matched by compositionFilePattern.\n * @example ['*.{t,j}s', '*.{t,j}sx']\n */\n compositionPreviewFilePattern: string[];\n};\n\n/**\n * the component documentation extension.\n */\nexport class CompositionsMain {\n constructor(\n /**\n * Glob pattern to select all composition files\n */\n private compositionFilePattern: string[],\n\n /**\n * Glob pattern to select composition preview files\n */\n private previewFilePattern: string[],\n\n /**\n * envs extension.\n */\n private preview: PreviewMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * schema extension.\n */\n private schema: SchemaMain,\n\n private devFiles: DevFilesMain,\n\n private envs: EnvsMain\n ) {}\n\n /**\n * returns an array of doc file paths for a set of components.\n */\n getPreviewFiles(components: Component[]): ComponentMap<AbstractVinyl[]> {\n return ComponentMap.as<AbstractVinyl[]>(components, (component) => {\n // this includes non executables, like `button.compositions.module.scss` or `presets.compositions.json`\n const compositionFiles = component.state.filesystem.byGlob(this.compositionFilePattern);\n\n // select only relevant preview files (.tsx, etc)\n const previewFiles = new Set(\n component.state.filesystem.byGlob(this.previewFilePattern).map((file) => file.relative)\n );\n const files = compositionFiles.filter((file) => previewFiles.has(file.relative));\n\n return files;\n });\n }\n\n /**\n * checks if a file matches the composition file pattern.\n */\n isCompositionFile(filePath: string): boolean {\n const { includePatterns, excludePatterns } = splitPatterns(this.compositionFilePattern);\n return matchPatterns(filePath, includePatterns, excludePatterns);\n }\n\n /**\n * get component compositions.\n */\n getCompositions(component: IComponent): Composition[] {\n const entry = component.get(CompositionsAspect.id);\n if (!entry) return [];\n const compositions = entry.data.compositions;\n if (!compositions) return [];\n\n return Composition.fromArray(compositions);\n }\n\n /**\n * read composition from the component source code.\n */\n readCompositions(component: Component): Composition[] {\n const maybeFiles = this.getPreviewFiles([component]).byComponent(component);\n\n if (!maybeFiles) return [];\n const [, files] = maybeFiles;\n return flatten(\n files.map((file) => {\n return this.computeCompositions(component, file);\n })\n );\n }\n\n getCompositionFilePattern() {\n return this.compositionFilePattern;\n }\n\n getComponentDevPatterns(component: Component) {\n const env = this.envs.calculateEnv(component).env;\n const componentEnvCompositionsDevPatterns: string[] = env.getCompositionsDevPatterns\n ? env.getCompositionsDevPatterns(component)\n : [];\n const componentPatterns = componentEnvCompositionsDevPatterns.concat(this.getCompositionFilePattern());\n return componentPatterns;\n }\n\n getDevPatternToRegister() {\n return this.getComponentDevPatterns.bind(this);\n }\n\n async onComponentLoad(component: Component, loadOpts?: ComponentLoadOptions): Promise<AspectData | undefined> {\n if (loadOpts?.loadCompositions === false) return undefined;\n const compositions = this.readCompositions(component);\n return {\n compositions: compositions.map((composition) => composition.toObject()),\n };\n }\n\n private computeCompositions(component: Component, file: AbstractVinyl): Composition[] {\n // :TODO hacked for a specific file extension now until david will take care in the compiler.\n const pathArray = file.path.split('.');\n pathArray[pathArray.length - 1] = 'js';\n\n const exports = this.schema.parseModule(join(this.workspace.componentDir(component.id), file.relative));\n return exports.map((exportModel) => {\n const displayName = exportModel.staticProperties?.get('compositionName');\n\n return new Composition(\n exportModel.identifier,\n file.relative,\n typeof displayName === 'string' ? displayName : undefined\n );\n });\n }\n\n static defaultConfig: CompositionsConfig = {\n compositionFilePattern: ['**/*.composition?(s).*'],\n compositionPreviewFilePattern: ['**/*.{t,j}s?(x)'],\n };\n\n static runtime = MainRuntime;\n static dependencies = [PreviewAspect, GraphqlAspect, WorkspaceAspect, SchemaAspect, DevFilesAspect, EnvsAspect];\n\n static async provider(\n [preview, graphql, workspace, schema, devFiles, envs]: [\n PreviewMain,\n GraphqlMain,\n Workspace,\n SchemaMain,\n DevFilesMain,\n EnvsMain\n ],\n config: CompositionsConfig\n ) {\n const compositions = new CompositionsMain(\n config.compositionFilePattern,\n config.compositionPreviewFilePattern,\n preview,\n workspace,\n schema,\n devFiles,\n envs\n );\n\n // TODO: use the docs implementation to allow component specific pattern\n devFiles.registerDevPattern(compositions.getDevPatternToRegister());\n\n graphql.register(compositionsSchema(compositions));\n preview.registerDefinition(new CompositionPreviewDefinition(compositions));\n\n if (workspace) {\n workspace.onComponentLoad(compositions.onComponentLoad.bind(compositions));\n }\n\n return compositions;\n }\n}\n\nCompositionsAspect.addRuntime(CompositionsMain);\n"],"mappings":"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"}
|
|
@@ -1,44 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.promise.js");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.CompositionPreviewDefinition = void 0;
|
|
11
|
-
|
|
12
9
|
function _defineProperty2() {
|
|
13
10
|
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
-
|
|
15
11
|
_defineProperty2 = function () {
|
|
16
12
|
return data;
|
|
17
13
|
};
|
|
18
|
-
|
|
19
14
|
return data;
|
|
20
15
|
}
|
|
21
|
-
|
|
22
16
|
class CompositionPreviewDefinition {
|
|
23
17
|
constructor(compositions) {
|
|
24
18
|
this.compositions = compositions;
|
|
25
19
|
(0, _defineProperty2().default)(this, "prefix", 'compositions');
|
|
26
20
|
(0, _defineProperty2().default)(this, "includePeers", true);
|
|
27
21
|
}
|
|
28
|
-
|
|
29
22
|
async renderTemplatePath(context) {
|
|
30
23
|
return this.renderTemplatePathByEnv(context.env);
|
|
31
24
|
}
|
|
32
|
-
|
|
33
25
|
async renderTemplatePathByEnv(env) {
|
|
34
26
|
return env.getMounter();
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
async getModuleMap(components) {
|
|
38
29
|
const map = this.compositions.getPreviewFiles(components);
|
|
39
30
|
return map;
|
|
40
31
|
}
|
|
41
|
-
|
|
42
32
|
async getMetadata(component) {
|
|
43
33
|
const compositions = this.compositions.getCompositions(component).map(composition => ({
|
|
44
34
|
displayName: composition.displayName,
|
|
@@ -48,9 +38,7 @@ class CompositionPreviewDefinition {
|
|
|
48
38
|
compositions
|
|
49
39
|
};
|
|
50
40
|
}
|
|
51
|
-
|
|
52
41
|
}
|
|
53
|
-
|
|
54
42
|
exports.CompositionPreviewDefinition = CompositionPreviewDefinition;
|
|
55
43
|
|
|
56
44
|
//# sourceMappingURL=compositions.preview-definition.js.map
|
|
@@ -1 +1 @@
|
|
|
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\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":"
|
|
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\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":";;;;;;;;;;;;;;;AAQO,MAAMA,4BAA4B,CAA8B;EAIrEC,WAAW,CAASC,YAA8B,EAAE;IAAA,KAAhCA,YAA8B,GAA9BA,YAA8B;IAAA,gDAHhC,cAAc;IAAA,sDACR,IAAI;EAEyB;EAErD,MAAMC,kBAAkB,CAACC,OAAyB,EAAmB;IACnE,OAAO,IAAI,CAACC,uBAAuB,CAACD,OAAO,CAACE,GAAG,CAAC;EAClD;EAEA,MAAMD,uBAAuB,CAACC,GAAgB,EAAE;IAC9C,OAAOA,GAAG,CAACC,UAAU,EAAE;EACzB;EAEA,MAAMC,YAAY,CAACC,UAAuB,EAA0C;IAClF,MAAMC,GAAG,GAAG,IAAI,CAACR,YAAY,CAACS,eAAe,CAACF,UAAU,CAAC;IACzD,OAAOC,GAAG;EACZ;EAEA,MAAME,WAAW,CAACC,SAAoB,EAA6C;IACjF,MAAMX,YAAY,GAAG,IAAI,CAACA,YAAY,CACnCY,eAAe,CAACD,SAAS,CAAC,CAC1BH,GAAG,CAAEK,WAAW,KAAM;MAAEC,WAAW,EAAED,WAAW,CAACC,WAAW;MAAEC,UAAU,EAAEF,WAAW,CAACE;IAAW,CAAC,CAAC,CAAC;IACvG,OAAO;MACLf;IACF,CAAC;EACH;AACF;AAAC"}
|
|
@@ -1,58 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.array.iterator.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.promise.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.regexp.exec.js");
|
|
10
|
-
|
|
11
7
|
Object.defineProperty(exports, "__esModule", {
|
|
12
8
|
value: true
|
|
13
9
|
});
|
|
14
10
|
exports.CompositionsPreview = void 0;
|
|
15
|
-
|
|
16
11
|
function _defineProperty2() {
|
|
17
12
|
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
|
|
19
13
|
_defineProperty2 = function () {
|
|
20
14
|
return data;
|
|
21
15
|
};
|
|
22
|
-
|
|
23
16
|
return data;
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
function _preview() {
|
|
27
19
|
const data = require("@teambit/preview");
|
|
28
|
-
|
|
29
20
|
_preview = function () {
|
|
30
21
|
return data;
|
|
31
22
|
};
|
|
32
|
-
|
|
33
23
|
return data;
|
|
34
24
|
}
|
|
35
|
-
|
|
36
25
|
function _lodash() {
|
|
37
26
|
const data = _interopRequireDefault(require("lodash.head"));
|
|
38
|
-
|
|
39
27
|
_lodash = function () {
|
|
40
28
|
return data;
|
|
41
29
|
};
|
|
42
|
-
|
|
43
30
|
return data;
|
|
44
31
|
}
|
|
45
|
-
|
|
46
32
|
function _compositions() {
|
|
47
33
|
const data = require("./compositions.aspect");
|
|
48
|
-
|
|
49
34
|
_compositions = function () {
|
|
50
35
|
return data;
|
|
51
36
|
};
|
|
52
|
-
|
|
53
37
|
return data;
|
|
54
38
|
}
|
|
55
|
-
|
|
56
39
|
class CompositionsPreview {
|
|
57
40
|
constructor(
|
|
58
41
|
/**
|
|
@@ -61,7 +44,6 @@ class CompositionsPreview {
|
|
|
61
44
|
preview) {
|
|
62
45
|
this.preview = preview;
|
|
63
46
|
}
|
|
64
|
-
|
|
65
47
|
render(componentId, modules, otherPreviewDefs, context) {
|
|
66
48
|
if (!modules.componentMap[componentId.fullName]) return;
|
|
67
49
|
const compositions = this.selectPreviewModel(componentId.fullName, modules);
|
|
@@ -69,48 +51,39 @@ class CompositionsPreview {
|
|
|
69
51
|
const active = this.getActiveComposition(compositions, metadata);
|
|
70
52
|
modules.mainModule.default(active, context);
|
|
71
53
|
}
|
|
72
|
-
/** gets relevant information for this preview to render */
|
|
73
|
-
|
|
74
54
|
|
|
55
|
+
/** gets relevant information for this preview to render */
|
|
75
56
|
selectPreviewModel(componentFullName, previewModule) {
|
|
76
|
-
const files = previewModule.componentMap[componentFullName] || [];
|
|
57
|
+
const files = previewModule.componentMap[componentFullName] || [];
|
|
77
58
|
|
|
59
|
+
// allow compositions to come from many files. It is assumed they will have unique named
|
|
78
60
|
const combined = Object.assign({}, ...files);
|
|
79
61
|
return combined;
|
|
80
62
|
}
|
|
81
|
-
|
|
82
63
|
getMetadata(componentFullName, previewModule) {
|
|
83
64
|
const metadata = previewModule !== null && previewModule !== void 0 && previewModule.componentMapMetadata ? previewModule.componentMapMetadata[componentFullName] : undefined;
|
|
84
|
-
|
|
85
65
|
if (metadata) {
|
|
86
66
|
return metadata;
|
|
87
67
|
}
|
|
88
|
-
|
|
89
68
|
return undefined;
|
|
90
69
|
}
|
|
91
|
-
|
|
92
70
|
getActiveComposition(module, metadata) {
|
|
93
71
|
const firstQueryParam = window.location.hash.split('&')[1];
|
|
94
72
|
const query = this.preview.getQuery();
|
|
95
73
|
const compositionId = this.preview.getParam(query, 'name') || firstQueryParam;
|
|
96
|
-
|
|
97
74
|
if (compositionId && module[compositionId]) {
|
|
98
75
|
return module[compositionId];
|
|
99
76
|
}
|
|
100
|
-
|
|
101
77
|
if (metadata && metadata.compositions) {
|
|
102
78
|
const first = (0, _lodash().default)(metadata.compositions);
|
|
103
79
|
const firstId = first === null || first === void 0 ? void 0 : first.identifier;
|
|
104
|
-
|
|
105
80
|
if (firstId && module[firstId]) {
|
|
106
81
|
return module[firstId];
|
|
107
82
|
}
|
|
108
83
|
}
|
|
109
|
-
|
|
110
84
|
const first = (0, _lodash().default)(Object.values(module));
|
|
111
85
|
return first;
|
|
112
86
|
}
|
|
113
|
-
|
|
114
87
|
static async provider([preview]) {
|
|
115
88
|
const compPreview = new CompositionsPreview(preview);
|
|
116
89
|
preview.registerPreview({
|
|
@@ -121,13 +94,10 @@ class CompositionsPreview {
|
|
|
121
94
|
});
|
|
122
95
|
return compPreview;
|
|
123
96
|
}
|
|
124
|
-
|
|
125
97
|
}
|
|
126
|
-
|
|
127
98
|
exports.CompositionsPreview = CompositionsPreview;
|
|
128
99
|
(0, _defineProperty2().default)(CompositionsPreview, "runtime", _preview().PreviewRuntime);
|
|
129
100
|
(0, _defineProperty2().default)(CompositionsPreview, "dependencies", [_preview().PreviewAspect]);
|
|
130
|
-
|
|
131
101
|
_compositions().CompositionsAspect.addRuntime(CompositionsPreview);
|
|
132
102
|
|
|
133
103
|
//# sourceMappingURL=compositions.preview.runtime.js.map
|