@teambit/compositions 0.0.880 → 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.
Files changed (44) hide show
  1. package/dist/composition.compare.section.js +0 -13
  2. package/dist/composition.compare.section.js.map +1 -1
  3. package/dist/composition.js +0 -10
  4. package/dist/composition.js.map +1 -1
  5. package/dist/composition.section.js +0 -13
  6. package/dist/composition.section.js.map +1 -1
  7. package/dist/compositions.aspect.js +0 -5
  8. package/dist/compositions.aspect.js.map +1 -1
  9. package/dist/compositions.composition.js +0 -6
  10. package/dist/compositions.composition.js.map +1 -1
  11. package/dist/compositions.graphql.js +0 -5
  12. package/dist/compositions.graphql.js.map +1 -1
  13. package/dist/compositions.js +9 -94
  14. package/dist/compositions.js.map +1 -1
  15. package/dist/compositions.main.runtime.js +8 -75
  16. package/dist/compositions.main.runtime.js.map +1 -1
  17. package/dist/compositions.preview-definition.js +0 -12
  18. package/dist/compositions.preview-definition.js.map +1 -1
  19. package/dist/compositions.preview.runtime.js +3 -33
  20. package/dist/compositions.preview.runtime.js.map +1 -1
  21. package/dist/compositions.ui.runtime.js +1 -35
  22. package/dist/compositions.ui.runtime.js.map +1 -1
  23. package/dist/index.js +0 -17
  24. package/dist/index.js.map +1 -1
  25. package/dist/ui/composition-preview.js +5 -22
  26. package/dist/ui/composition-preview.js.map +1 -1
  27. package/dist/ui/compositions-overview/compositions-overview.js +0 -12
  28. package/dist/ui/compositions-overview/compositions-overview.js.map +1 -1
  29. package/dist/ui/compositions-overview/index.js +0 -2
  30. package/dist/ui/compositions-overview/index.js.map +1 -1
  31. package/dist/ui/compositions-panel/compositions-panel.js +10 -31
  32. package/dist/ui/compositions-panel/compositions-panel.js.map +1 -1
  33. package/dist/ui/compositions-panel-node/compositions-panel-node.js +5 -19
  34. package/dist/ui/compositions-panel-node/compositions-panel-node.js.map +1 -1
  35. package/dist/ui/compositions-panel-node/index.js +0 -2
  36. package/dist/ui/compositions-panel-node/index.js.map +1 -1
  37. package/dist/ui/index.js +0 -3
  38. package/dist/ui/index.js.map +1 -1
  39. package/dist/ui/use-compositions.js +3 -0
  40. package/dist/ui/use-compositions.js.map +1 -1
  41. package/package-tar/teambit-compositions-0.0.882.tgz +0 -0
  42. package/package.json +15 -15
  43. package/{preview-1666312873430.js → preview-1666496165706.js} +2 -2
  44. package/package-tar/teambit-compositions-0.0.880.tgz +0 -0
@@ -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":"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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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"}
@@ -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); // select only relevant preview files (.tsx, etc)
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); // TODO: use the docs implementation to allow component specific pattern
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":";;;;;;;;;;;;;;;;;;;;;AAQO,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;MAAEC,WAAW,EAAED,WAAW,CAACC,WAA3B;MAAwCC,UAAU,EAAEF,WAAW,CAACE;IAAhE,CAAlB,CAFc,CAArB;IAGA,OAAO;MACLf;IADK,CAAP;EAGD;;AA1BoE"}
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] || []; // allow compositions to come from many files. It is assumed they will have unique named
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