@teambit/preview 1.0.115 → 1.0.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/__bit_junit.xml +2 -2
- package/artifacts/preview/teambit_preview_preview-preview.js +1 -1
- package/dist/{preview-1704079387779.js → preview-1704113440840.js} +2 -2
- package/dist/preview.graphql.d.ts +6 -0
- package/dist/preview.graphql.js +15 -1
- package/dist/preview.graphql.js.map +1 -1
- package/dist/preview.main.runtime.d.ts +35 -1
- package/dist/preview.main.runtime.js +63 -5
- package/dist/preview.main.runtime.js.map +1 -1
- package/dist/preview.preview.runtime.js +2 -4
- package/dist/preview.preview.runtime.js.map +1 -1
- package/package.json +17 -17
- package/preview.main.runtime.tsx +79 -3
- package/preview.preview.runtime.tsx +2 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<testsuites>
|
|
3
|
-
<testsuite name="teambit.preview/preview@1.0.
|
|
4
|
-
<testcase classname="create-peer-link.spec.js" name="should output snapshot" time="0.
|
|
3
|
+
<testsuite name="teambit.preview/preview@1.0.116" timestamp="2024-01-01T13:22:10.923Z" tests="1" failures="0" errors="0" skipped="0">
|
|
4
|
+
<testcase classname="create-peer-link.spec.js" name="should output snapshot" time="0.204"/>
|
|
5
5
|
</testsuite>
|
|
6
6
|
</testsuites>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["teambit.preview/preview-preview"]=t():e["teambit.preview/preview-preview"]=t()}(self,(()=>(()=>{"use strict";var e={
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["teambit.preview/preview-preview"]=t():e["teambit.preview/preview-preview"]=t()}(self,(()=>(()=>{"use strict";var e={99967:(e,t,n)=>{var o={id:"teambit.preview/preview@1.0.116",homepage:"https://bit.cloud/teambit/preview/preview",exported:!0};function r(){const e=i(n(87363));return r=function(){return e},e}function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Logo=void 0,r.__bit_component=o,i.__bit_component=o;const a=()=>r().default.createElement("div",{style:{height:"100%",display:"flex",justifyContent:"center"}},r().default.createElement("img",{style:{width:70},src:"https://static.bit.dev/extensions-icons/preview.svg"}));a.__bit_component=o,t.Logo=a},68637:(e,t,n)=>{Object.defineProperty(t,"M",{enumerable:!0,get:function(){return o.default}});var o=r(n(43990));function r(e){return e&&e.__esModule?e:{default:e}}r.__bit_component={id:"teambit.preview/aspect-docs/preview@0.0.165",homepage:"https://bit.cloud/teambit/preview/aspect-docs/preview",exported:!0}},43990:(e,t,n)=>{var o={id:"teambit.preview/aspect-docs/preview@0.0.165",homepage:"https://bit.cloud/teambit/preview/aspect-docs/preview",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=m,a(n(87363));var r=n(40040),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function p(e,t){if(null==e)return{};var n,o,r=d(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function d(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,p.__bit_component=o,d.__bit_component=o;var l={},c="wrapper";function m(e){var t=e.components,n=p(e,i);return(0,r.mdx)(c,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"The Preview aspect handles the bundling and rendering of component compositions and documentation, for the Workspace UI and Scope UI."),(0,r.mdx)("p",null,"Preview is used to display components in development (on ",(0,r.mdx)("inlineCode",{parentName:"p"},"bit start"),") as well as in their released versions (assets for the release version are generated as part of the build process)."),(0,r.mdx)("p",null,"The Preview aspect handles each component according to the configurations set by the environment that is used by that component. That means both the documentation and the component compositions will be bundled and displayed differently for different environments."),(0,r.mdx)("h2",null,"Rational"),(0,r.mdx)("p",null,"In a standard web application, UI components ",(0,r.mdx)("em",{parentName:"p"},"serving the same application")," are bundled together to produce the necessary assets to make them renderable by the browser."),(0,r.mdx)("p",null,"Components in a Bit workspace are not all in the service of the same application. Each component is authored, tagged and exported as an independent component.\nThat means a few things:"),(0,r.mdx)("ol",null,(0,r.mdx)("li",{parentName:"ol"},(0,r.mdx)("p",{parentName:"li"},"Components in a Bit workspace are not consumed ,directly or indirectly, by a single entry file (e.g, the app's ",(0,r.mdx)("inlineCode",{parentName:"p"},"index.js"),"). That makes it impossible for the bundler to follow the files needed to be bundled.")),(0,r.mdx)("li",{parentName:"ol"},(0,r.mdx)("p",{parentName:"li"},"Different components in a single workspace may be implemented using different technologies and bundled using different configurations or even different bundlers."))),(0,r.mdx)("p",null,"Preview solves the above challenges by creating a temporary entry file for each group of components using the same environment.\nIt then serves this file to the Bundler, to be bundled according to the environment and the purpose of bundling. That is, to display components in development or to display the components' release versions (for a \"production-level\" exhibition of the component's documentation and compositions)."),(0,r.mdx)("h2",null,"Usage"),(0,r.mdx)("h3",null,"Extending the Preview aspect"),(0,r.mdx)("p",null,"The preview aspect can be extended to generate other renderable artifacts , either when running Bit's development server or as part of the build pipeline (for a component's tagged version).\nThese artifacts can present additional information that assists in inspecting a component (for example, showing the results of accessibility tests)."))}m.__bit_component=o,m.isMDXComponent=!0},40040:e=>{e.exports=MdxJsReact},87363:e=>{e.exports=React}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.r(o),n.d(o,{compositions:()=>m,compositions_metadata:()=>f,overview:()=>u});var e={};n.r(e),n.d(e,{default:()=>c});var t=n(99967),r=(n(87363),n(40040));const i=TeambitMdxUiMdxScopeContext;var a=n(68637),s=["components"];function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},p.apply(this,arguments)}var d={},l="wrapper";function c(e){var t=e.components,n=function(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}(e,s);return(0,r.mdx)(l,p({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)(i.MDXScopeProvider,{components:{Preview:a.M},mdxType:"MDXScopeProvider"},(0,r.mdx)(a.M,{mdxType:"Preview"})))}c.isMDXComponent=!0;const m=[t],u=[e],f={compositions:[{displayName:"Logo",identifier:"Logo"}]}})(),o})()));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@1.0.116/dist/preview.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@1.0.116/dist/preview.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -18,6 +18,12 @@ export declare function previewSchema(previewExtension: PreviewMain): {
|
|
|
18
18
|
legacyHeader: ({ component }: {
|
|
19
19
|
component: any;
|
|
20
20
|
}) => Promise<boolean>;
|
|
21
|
+
onlyOverview: ({ component }: {
|
|
22
|
+
component: any;
|
|
23
|
+
}) => Promise<boolean>;
|
|
24
|
+
useNameParam: ({ component }: {
|
|
25
|
+
component: any;
|
|
26
|
+
}) => Promise<boolean>;
|
|
21
27
|
skipIncludes: ({ component }: {
|
|
22
28
|
component: any;
|
|
23
29
|
}) => Promise<boolean>;
|
package/dist/preview.graphql.js
CHANGED
|
@@ -23,7 +23,12 @@ function previewSchema(previewExtension) {
|
|
|
23
23
|
isScaling: Boolean
|
|
24
24
|
includesEnvTemplate: Boolean
|
|
25
25
|
legacyHeader: Boolean
|
|
26
|
+
"""
|
|
27
|
+
@deprecated use onlyOverview
|
|
28
|
+
"""
|
|
26
29
|
skipIncludes: Boolean
|
|
30
|
+
onlyOverview: Boolean
|
|
31
|
+
useNameParam: Boolean
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
extend type Component {
|
|
@@ -55,10 +60,19 @@ function previewSchema(previewExtension) {
|
|
|
55
60
|
}) => {
|
|
56
61
|
return previewExtension.isLegacyHeader(component);
|
|
57
62
|
},
|
|
63
|
+
onlyOverview: ({
|
|
64
|
+
component
|
|
65
|
+
}) => {
|
|
66
|
+
return previewExtension.getOnlyOverview(component);
|
|
67
|
+
},
|
|
68
|
+
useNameParam: ({
|
|
69
|
+
component
|
|
70
|
+
}) => {
|
|
71
|
+
return previewExtension.getUseNameParam(component);
|
|
72
|
+
},
|
|
58
73
|
skipIncludes: ({
|
|
59
74
|
component
|
|
60
75
|
}) => {
|
|
61
|
-
// return true;
|
|
62
76
|
return previewExtension.isSupportSkipIncludes(component);
|
|
63
77
|
}
|
|
64
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_graphqlTag","data","_interopRequireDefault","require","obj","__esModule","default","previewSchema","previewExtension","typeDefs","gql","resolvers","Component","preview","component","Preview","includesEnvTemplate","isBundledWithEnv","isScaling","doesScaling","legacyHeader","isLegacyHeader","skipIncludes","isSupportSkipIncludes"],"sources":["preview.graphql.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport gql from 'graphql-tag';\n\nimport { PreviewMain } from './preview.main.runtime';\n\nexport function previewSchema(previewExtension: PreviewMain) {\n return {\n typeDefs: gql`\n type Preview {\n # url: String!\n \"\"\"\n Check if the component supports scaling\n \"\"\"\n isScaling: Boolean\n includesEnvTemplate: Boolean\n legacyHeader: Boolean\n skipIncludes: Boolean\n }\n\n extend type Component {\n preview: Preview\n }\n `,\n resolvers: {\n Component: {\n preview: (component: Component) => {\n // return previewExtension.getPreview(component);\n return { component };\n },\n },\n Preview: {\n includesEnvTemplate: ({ component }) => {\n return previewExtension.isBundledWithEnv(component);\n },\n isScaling: ({ component }) => {\n return previewExtension.doesScaling(component);\n },\n legacyHeader: ({ component }) => {\n return previewExtension.isLegacyHeader(component);\n },\n
|
|
1
|
+
{"version":3,"names":["_graphqlTag","data","_interopRequireDefault","require","obj","__esModule","default","previewSchema","previewExtension","typeDefs","gql","resolvers","Component","preview","component","Preview","includesEnvTemplate","isBundledWithEnv","isScaling","doesScaling","legacyHeader","isLegacyHeader","onlyOverview","getOnlyOverview","useNameParam","getUseNameParam","skipIncludes","isSupportSkipIncludes"],"sources":["preview.graphql.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport gql from 'graphql-tag';\n\nimport { PreviewMain } from './preview.main.runtime';\n\nexport function previewSchema(previewExtension: PreviewMain) {\n return {\n typeDefs: gql`\n type Preview {\n # url: String!\n \"\"\"\n Check if the component supports scaling\n \"\"\"\n isScaling: Boolean\n includesEnvTemplate: Boolean\n legacyHeader: Boolean\n \"\"\"\n @deprecated use onlyOverview\n \"\"\"\n skipIncludes: Boolean\n onlyOverview: Boolean\n useNameParam: Boolean\n }\n\n extend type Component {\n preview: Preview\n }\n `,\n resolvers: {\n Component: {\n preview: (component: Component) => {\n // return previewExtension.getPreview(component);\n return { component };\n },\n },\n Preview: {\n includesEnvTemplate: ({ component }) => {\n return previewExtension.isBundledWithEnv(component);\n },\n isScaling: ({ component }) => {\n return previewExtension.doesScaling(component);\n },\n legacyHeader: ({ component }) => {\n return previewExtension.isLegacyHeader(component);\n },\n onlyOverview: ({ component }) => {\n return previewExtension.getOnlyOverview(component);\n },\n useNameParam: ({ component }) => {\n return previewExtension.getUseNameParam(component);\n },\n skipIncludes: ({ component }) => {\n return previewExtension.isSupportSkipIncludes(component);\n },\n },\n },\n };\n}\n"],"mappings":";;;;;;AACA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8B,SAAAC,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAIvB,SAASG,aAAaA,CAACC,gBAA6B,EAAE;EAC3D,OAAO;IACLC,QAAQ,EAAE,IAAAC,qBAAG,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,SAAS,EAAE;QACTC,OAAO,EAAGC,SAAoB,IAAK;UACjC;UACA,OAAO;YAAEA;UAAU,CAAC;QACtB;MACF,CAAC;MACDC,OAAO,EAAE;QACPC,mBAAmB,EAAEA,CAAC;UAAEF;QAAU,CAAC,KAAK;UACtC,OAAON,gBAAgB,CAACS,gBAAgB,CAACH,SAAS,CAAC;QACrD,CAAC;QACDI,SAAS,EAAEA,CAAC;UAAEJ;QAAU,CAAC,KAAK;UAC5B,OAAON,gBAAgB,CAACW,WAAW,CAACL,SAAS,CAAC;QAChD,CAAC;QACDM,YAAY,EAAEA,CAAC;UAAEN;QAAU,CAAC,KAAK;UAC/B,OAAON,gBAAgB,CAACa,cAAc,CAACP,SAAS,CAAC;QACnD,CAAC;QACDQ,YAAY,EAAEA,CAAC;UAAER;QAAU,CAAC,KAAK;UAC/B,OAAON,gBAAgB,CAACe,eAAe,CAACT,SAAS,CAAC;QACpD,CAAC;QACDU,YAAY,EAAEA,CAAC;UAAEV;QAAU,CAAC,KAAK;UAC/B,OAAON,gBAAgB,CAACiB,eAAe,CAACX,SAAS,CAAC;QACpD,CAAC;QACDY,YAAY,EAAEA,CAAC;UAAEZ;QAAU,CAAC,KAAK;UAC/B,OAAON,gBAAgB,CAACmB,qBAAqB,CAACb,SAAS,CAAC;QAC1D;MACF;IACF;EACF,CAAC;AACH"}
|
|
@@ -58,6 +58,14 @@ export type PreviewAnyComponentData = {
|
|
|
58
58
|
* Calculated by the component's env
|
|
59
59
|
*/
|
|
60
60
|
splitComponentBundle?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* don't allow other aspects implementing a preview definition to be included in your preview.
|
|
63
|
+
*/
|
|
64
|
+
onlyOverview?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* use name query params to select a specific composition to render.
|
|
67
|
+
*/
|
|
68
|
+
useNameParam?: boolean;
|
|
61
69
|
/**
|
|
62
70
|
* don't allow other aspects implementing a preview definition to be included in your preview.
|
|
63
71
|
*/
|
|
@@ -68,6 +76,8 @@ export type PreviewAnyComponentData = {
|
|
|
68
76
|
*/
|
|
69
77
|
export type PreviewEnvComponentData = {
|
|
70
78
|
isScaling?: boolean;
|
|
79
|
+
supportsOnlyOverview?: boolean;
|
|
80
|
+
supportsUseNameParam?: boolean;
|
|
71
81
|
};
|
|
72
82
|
export type PreviewConfig = {
|
|
73
83
|
bundlingStrategy?: string;
|
|
@@ -78,6 +88,7 @@ export type PreviewConfig = {
|
|
|
78
88
|
* default - no limit.
|
|
79
89
|
*/
|
|
80
90
|
maxChunkSize?: number;
|
|
91
|
+
onlyOverview?: boolean;
|
|
81
92
|
};
|
|
82
93
|
export type EnvPreviewConfig = {
|
|
83
94
|
strategyName?: PreviewStrategyName;
|
|
@@ -137,6 +148,20 @@ export declare class PreviewMain {
|
|
|
137
148
|
* @returns
|
|
138
149
|
*/
|
|
139
150
|
getPreviewData(component: Component): PreviewComponentData | undefined;
|
|
151
|
+
/**
|
|
152
|
+
* check if the current version of env component supports skipping other included previews
|
|
153
|
+
* @param envComponent
|
|
154
|
+
* @returns
|
|
155
|
+
*/
|
|
156
|
+
doesEnvIncludesOnlyOverview(envComponent: Component): boolean;
|
|
157
|
+
/**
|
|
158
|
+
* check if the current version of env component supports name query param
|
|
159
|
+
* @param envComponent
|
|
160
|
+
* @returns
|
|
161
|
+
*/
|
|
162
|
+
doesEnvUseNameParam(envComponent: Component): boolean;
|
|
163
|
+
private calculateIncludeOnlyOverview;
|
|
164
|
+
private calculateUseNameParam;
|
|
140
165
|
/**
|
|
141
166
|
* Calculate preview data on component load
|
|
142
167
|
* @param component
|
|
@@ -148,7 +173,7 @@ export declare class PreviewMain {
|
|
|
148
173
|
* @param component
|
|
149
174
|
* @returns
|
|
150
175
|
*/
|
|
151
|
-
calcPreviewDataFromEnv(component: Component): Promise<Omit<PreviewAnyComponentData, 'doesScaling'> | undefined>;
|
|
176
|
+
calcPreviewDataFromEnv(component: Component): Promise<Omit<PreviewAnyComponentData, 'doesScaling' | 'onlyOverview' | 'useNameParam'> | undefined>;
|
|
152
177
|
/**
|
|
153
178
|
* calculate extra preview data for env components (on load)
|
|
154
179
|
* @param envComponent
|
|
@@ -192,6 +217,14 @@ export declare class PreviewMain {
|
|
|
192
217
|
*/
|
|
193
218
|
isEnvSupportScaling(envComponent: Component): boolean;
|
|
194
219
|
isSupportSkipIncludes(component: Component): Promise<boolean>;
|
|
220
|
+
/**
|
|
221
|
+
* check if the component preview should only include the overview (skipping rendering of the compostions and properties table)
|
|
222
|
+
*/
|
|
223
|
+
getOnlyOverview(component: Component): Promise<boolean>;
|
|
224
|
+
/**
|
|
225
|
+
* check if the component preview should include the name query param
|
|
226
|
+
*/
|
|
227
|
+
getUseNameParam(component: Component): Promise<boolean>;
|
|
195
228
|
/**
|
|
196
229
|
* This function is calculate the isScaling support flag for the component preview.
|
|
197
230
|
* This is calculated only for the env component and not for the component itself.
|
|
@@ -285,6 +318,7 @@ export declare class PreviewMain {
|
|
|
285
318
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
286
319
|
static defaultConfig: {
|
|
287
320
|
disabled: boolean;
|
|
321
|
+
onlyOverview: boolean;
|
|
288
322
|
};
|
|
289
323
|
static provider([bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain, dependencyResolver, graphql, watcher, scope,]: [
|
|
290
324
|
BundlerMain,
|
|
@@ -396,6 +396,40 @@ class PreviewMain {
|
|
|
396
396
|
return previewData;
|
|
397
397
|
}
|
|
398
398
|
|
|
399
|
+
/**
|
|
400
|
+
* check if the current version of env component supports skipping other included previews
|
|
401
|
+
* @param envComponent
|
|
402
|
+
* @returns
|
|
403
|
+
*/
|
|
404
|
+
doesEnvIncludesOnlyOverview(envComponent) {
|
|
405
|
+
const previewData = this.getPreviewData(envComponent);
|
|
406
|
+
return !!previewData?.supportsOnlyOverview;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* check if the current version of env component supports name query param
|
|
411
|
+
* @param envComponent
|
|
412
|
+
* @returns
|
|
413
|
+
*/
|
|
414
|
+
doesEnvUseNameParam(envComponent) {
|
|
415
|
+
const previewData = this.getPreviewData(envComponent);
|
|
416
|
+
return !!previewData?.supportsUseNameParam;
|
|
417
|
+
}
|
|
418
|
+
async calculateIncludeOnlyOverview(component) {
|
|
419
|
+
if (this.envs.isUsingCoreEnv(component)) {
|
|
420
|
+
return true;
|
|
421
|
+
}
|
|
422
|
+
const envComponent = await this.envs.getEnvComponent(component);
|
|
423
|
+
return this.doesEnvIncludesOnlyOverview(envComponent);
|
|
424
|
+
}
|
|
425
|
+
async calculateUseNameParam(component) {
|
|
426
|
+
if (this.envs.isUsingCoreEnv(component)) {
|
|
427
|
+
return true;
|
|
428
|
+
}
|
|
429
|
+
const envComponent = await this.envs.getEnvComponent(component);
|
|
430
|
+
return this.doesEnvUseNameParam(envComponent);
|
|
431
|
+
}
|
|
432
|
+
|
|
399
433
|
/**
|
|
400
434
|
* Calculate preview data on component load
|
|
401
435
|
* @param component
|
|
@@ -405,8 +439,12 @@ class PreviewMain {
|
|
|
405
439
|
const doesScaling = await this.calcDoesScalingForComponent(component);
|
|
406
440
|
const dataFromEnv = await this.calcPreviewDataFromEnv(component);
|
|
407
441
|
const envData = (await this.calculateDataForEnvComponent(component)) || {};
|
|
442
|
+
const onlyOverview = await this.calculateIncludeOnlyOverview(component);
|
|
443
|
+
const useNameParam = await this.calculateUseNameParam(component);
|
|
408
444
|
const data = _objectSpread(_objectSpread({
|
|
409
|
-
doesScaling
|
|
445
|
+
doesScaling,
|
|
446
|
+
onlyOverview,
|
|
447
|
+
useNameParam
|
|
410
448
|
}, dataFromEnv), envData);
|
|
411
449
|
return data;
|
|
412
450
|
}
|
|
@@ -441,14 +479,15 @@ class PreviewMain {
|
|
|
441
479
|
*/
|
|
442
480
|
async calculateDataForEnvComponent(envComponent) {
|
|
443
481
|
const isEnv = this.envs.isEnv(envComponent);
|
|
482
|
+
|
|
444
483
|
// If the component is not an env, we don't want to store anything in the data
|
|
445
484
|
if (!isEnv) return undefined;
|
|
446
485
|
const previewAspectConfig = this.getPreviewAspectConfig(envComponent);
|
|
447
486
|
const data = {
|
|
448
487
|
// default to true if the env doesn't have a preview config
|
|
449
|
-
isScaling: previewAspectConfig?.isScaling ?? true
|
|
450
|
-
|
|
451
|
-
|
|
488
|
+
isScaling: previewAspectConfig?.isScaling ?? true,
|
|
489
|
+
supportsOnlyOverview: true,
|
|
490
|
+
supportsUseNameParam: true
|
|
452
491
|
};
|
|
453
492
|
return data;
|
|
454
493
|
}
|
|
@@ -566,6 +605,7 @@ class PreviewMain {
|
|
|
566
605
|
return !!previewData?.isScaling;
|
|
567
606
|
}
|
|
568
607
|
async isSupportSkipIncludes(component) {
|
|
608
|
+
if (!this.config.onlyOverview) return false;
|
|
569
609
|
const isCore = this.envs.isUsingCoreEnv(component);
|
|
570
610
|
if (isCore) return false;
|
|
571
611
|
const envComponent = await this.envs.getEnvComponent(component);
|
|
@@ -573,6 +613,23 @@ class PreviewMain {
|
|
|
573
613
|
return !!previewData?.skipIncludes;
|
|
574
614
|
}
|
|
575
615
|
|
|
616
|
+
/**
|
|
617
|
+
* check if the component preview should only include the overview (skipping rendering of the compostions and properties table)
|
|
618
|
+
*/
|
|
619
|
+
async getOnlyOverview(component) {
|
|
620
|
+
if (!this.config.onlyOverview) return false;
|
|
621
|
+
const previewData = this.getPreviewData(component);
|
|
622
|
+
return previewData?.onlyOverview ?? false;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
/**
|
|
626
|
+
* check if the component preview should include the name query param
|
|
627
|
+
*/
|
|
628
|
+
async getUseNameParam(component) {
|
|
629
|
+
const previewData = this.getPreviewData(component);
|
|
630
|
+
return previewData?.useNameParam ?? false;
|
|
631
|
+
}
|
|
632
|
+
|
|
576
633
|
/**
|
|
577
634
|
* This function is calculate the isScaling support flag for the component preview.
|
|
578
635
|
* This is calculated only for the env component and not for the component itself.
|
|
@@ -869,7 +926,8 @@ _defineProperty(PreviewMain, "slots", [_harmony().Slot.withType(), _harmony().Sl
|
|
|
869
926
|
_defineProperty(PreviewMain, "runtime", _cli().MainRuntime);
|
|
870
927
|
_defineProperty(PreviewMain, "dependencies", [_bundler().BundlerAspect, _builder().BuilderAspect, _component().ComponentAspect, _ui().UIAspect, _envs().EnvsAspect, _workspace().default, _pkg().PkgAspect, _pubsub().PubsubAspect, _aspectLoader().AspectLoaderAspect, _logger().LoggerAspect, _dependencyResolver().DependencyResolverAspect, _graphql().default, _watcher().default, _scope().default]);
|
|
871
928
|
_defineProperty(PreviewMain, "defaultConfig", {
|
|
872
|
-
disabled: false
|
|
929
|
+
disabled: false,
|
|
930
|
+
onlyOverview: false
|
|
873
931
|
});
|
|
874
932
|
_preview().PreviewAspect.addRuntime(PreviewMain);
|
|
875
933
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_builder","data","require","_bundler","_pubsub","_cli","_component","_envs","_harmony","_ui","_constants","_bitError","_objectHash","_interopRequireDefault","_lodash","_fsExtra","_path","_pkg","_aspectLoader","_workspace","_logger","_dependencyResolver","_artifactFiles","_watcher","_graphql","_scope","_exceptions","_generateLink","_previewArtifact","_preview","_preview2","_preview3","_strategies","_executionRef","_preview4","_envPreviewTemplate","_envTemplate","_componentPreview","_preview5","_previewAssets","_preview6","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByAspectAndTaskName","PREVIEW_TASK_NAME","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getPreviewAspectConfig","state","aspects","getPreviewData","previewData","calcPreviewData","doesScaling","calcDoesScalingForComponent","dataFromEnv","calcPreviewDataFromEnv","envData","calculateDataForEnvComponent","toStringWithoutVersion","strategyName","COMPONENT_PREVIEW_STRATEGY_NAME","splitComponentBundle","envPreviewConfig","getEnvPreviewConfig","envComponent","isEnv","previewAspectConfig","isScaling","calcIsBundledWithEnv","envPreviewData","isBundledWithEnvBackward","ENV_PREVIEW_STRATEGY_NAME","getArtifactsVinylByAspectAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","isUsingCoreEnv","isNew","getEnvComponent","isEnvSupportScaling","inWorkspace","hasId","envSupportScaling","calculateIsEnvSupportScaling","isSupportSkipIncludes","isCore","skipIncludes","isLegacyHeader","ENV_WITH_LEGACY_DOCS","ENV_STRATEGY_ARTIFACT_NAME","envType","getEnvData","type","includes","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","getAspectDir","artifactDef","getEnvTemplateArtifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","existsSync","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","BitError","getDefs","values","writeLink","prefix","moduleMap","mainModulesMap","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","writeFileSync","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","defaultTemplatePath","renderTemplatePathByEnv","visitedEnvs","Set","envDefinition","getModuleMap","withPathsP","asyncMap","envDef","environment","has","modulePath","add","compilerInstance","getCompiler","getPreviewComponentRootPath","getRuntimeModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","withPaths","dirPath","mkdirSync","recursive","link","all","aspectsIdsToNotFilterOut","name","uiRoot","getUi","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","runtimeName","componentIds","opts","root","MainRuntime","Error","allComponentContextAspects","reduce","acc","curr","concat","ids","hostAspects","toObject","allAspectsToInclude","uniq","filtered","aspect","getId","isCoreAspect","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getPreviewConfig","getBundlingStrategy","defaultStrategies","strategyFromEnv","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","graphql","watcher","scope","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","registerOnComponentAdd","registerOnComponentLoad","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","registerOnCompAspectReCalc","registerService","PreviewService","previewSchema","exports","Slot","withType","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","WatcherAspect","ScopeAspect","addRuntime"],"sources":["preview.main.runtime.tsx"],"sourcesContent":["import { ArtifactFactory, BuilderAspect } from '@teambit/builder';\nimport type { BuilderMain } from '@teambit/builder';\nimport { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport {\n Component,\n ComponentAspect,\n ComponentMain,\n ComponentMap,\n ComponentID,\n ResolveAspectsOptions,\n} from '@teambit/component';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain, UIRoot } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectLoaderAspect, getAspectDir, getAspectDirFromBvm } from '@teambit/aspect-loader';\nimport type { AspectDefinition, AspectLoaderMain } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ArtifactFiles } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport WatcherAspect, { WatcherMain } from '@teambit/watcher';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink, MainModulesMap } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask, PREVIEW_TASK_NAME } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport {\n EnvBundlingStrategy,\n ComponentBundlingStrategy,\n COMPONENT_STRATEGY_ARTIFACT_NAME,\n COMPONENT_STRATEGY_SIZE_KEY_NAME,\n ENV_PREVIEW_STRATEGY_NAME,\n ENV_STRATEGY_ARTIFACT_NAME,\n COMPONENT_PREVIEW_STRATEGY_NAME,\n} from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\nimport {\n EnvPreviewTemplateTask,\n GENERATE_ENV_TEMPLATE_TASK_NAME,\n getArtifactDef as getEnvTemplateArtifactDef,\n} from './env-preview-template.task';\nimport { EnvTemplateRoute } from './env-template.route';\nimport { ComponentPreviewRoute } from './component-preview.route';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\nimport { PreviewService } from './preview.service';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\nexport type PreviewStrategyName = 'env' | 'component';\n\nexport type PreviewFiles = {\n files: string[];\n isBundledWithEnv: boolean;\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewVariantConfig = {\n isScaling?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load\n */\nexport type PreviewComponentData = PreviewAnyComponentData & PreviewEnvComponentData;\n\n/**\n * Preview data that stored on the component on load for any component\n */\nexport type PreviewAnyComponentData = {\n doesScaling?: boolean;\n /**\n * The strategy configured by the component's env\n */\n strategyName?: PreviewStrategyName;\n /**\n * Does the component has a bundle for the component itself (separated from the compositions/docs)\n * Calculated by the component's env\n */\n splitComponentBundle?: boolean;\n\n /**\n * don't allow other aspects implementing a preview definition to be included in your preview.\n */\n skipIncludes?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load if the component is an env\n */\nexport type PreviewEnvComponentData = {\n isScaling?: boolean;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n /**\n * limit concurrent components when running the bundling step for your bundler during generate components preview task.\n * this helps mitigate large memory consumption for the build pipeline. This may increase the overall time for the generate-preview task, but reduce memory footprint.\n * default - no limit.\n */\n maxChunkSize?: number;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: PreviewStrategyName;\n splitComponentBundle?: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport type GenerateLinkFn = (prefix: string, componentMap: ComponentMap<string[]>, defaultModule?: string) => string;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private componentAspect: ComponentMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n getComponentBundleSize(component: Component): ComponentPreviewSize | undefined {\n const data = this.builder.getDataByAspect(component, PreviewAspect.id);\n\n if (!data) return undefined;\n return data[COMPONENT_STRATEGY_SIZE_KEY_NAME];\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts) return undefined;\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * Get a list of all the artifact files generated during the GeneratePreview task\n * @param component\n * @returns\n */\n async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {\n const artifacts = await this.getPreview(component);\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n isBundledWithEnv,\n };\n }\n\n /**\n * Get the preview config of the component.\n * (config that was set by variants or on bitmap)\n * @param component\n * @returns\n */\n getPreviewAspectConfig(component: Component): PreviewVariantConfig | undefined {\n return component.state.aspects.get(PreviewAspect.id)?.config;\n }\n\n /**\n * Get the preview data of the component.\n * (data that was calculated during the on load process)\n * @param component\n * @returns\n */\n getPreviewData(component: Component): PreviewComponentData | undefined {\n const previewData = component.state.aspects.get(PreviewAspect.id)?.data;\n return previewData;\n }\n\n /**\n * Calculate preview data on component load\n * @param component\n * @returns\n */\n async calcPreviewData(component: Component): Promise<PreviewComponentData> {\n const doesScaling = await this.calcDoesScalingForComponent(component);\n const dataFromEnv = await this.calcPreviewDataFromEnv(component);\n const envData = (await this.calculateDataForEnvComponent(component)) || {};\n const data: PreviewComponentData = {\n doesScaling,\n ...dataFromEnv,\n ...envData,\n };\n return data;\n }\n\n /**\n * Calculate preview data on component that configured by its env\n * @param component\n * @returns\n */\n async calcPreviewDataFromEnv(\n component: Component\n ): Promise<Omit<PreviewAnyComponentData, 'doesScaling'> | undefined> {\n // Prevent infinite loop that caused by the fact that the env of the aspect env or the env env is the same as the component\n // so we can't load it since during load we are trying to get env component and load it again\n if (\n component.id.toStringWithoutVersion() === 'teambit.harmony/aspect' ||\n component.id.toStringWithoutVersion() === 'teambit.envs/env'\n ) {\n return {\n strategyName: COMPONENT_PREVIEW_STRATEGY_NAME,\n splitComponentBundle: false,\n };\n }\n\n const env = this.envs.getEnv(component).env;\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const data = {\n strategyName: envPreviewConfig?.strategyName,\n splitComponentBundle: envPreviewConfig?.splitComponentBundle ?? false,\n };\n return data;\n }\n\n /**\n * calculate extra preview data for env components (on load)\n * @param envComponent\n * @returns\n */\n private async calculateDataForEnvComponent(envComponent: Component): Promise<PreviewEnvComponentData | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n\n const data = {\n // default to true if the env doesn't have a preview config\n isScaling: previewAspectConfig?.isScaling ?? true,\n // disalbe it for now, we will re-enable it later\n // skipIncludes: true,\n };\n return data;\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * This should be used only for calculating the value on load.\n * otherwise, use the isBundledWithEnv function\n * @param component\n * @returns\n */\n async calcIsBundledWithEnv(component: Component): Promise<boolean> {\n const envPreviewData = await this.calcPreviewDataFromEnv(component);\n return envPreviewData?.strategyName !== 'component';\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * @param component\n * @returns\n */\n async isBundledWithEnv(component: Component): Promise<boolean> {\n const data = await this.getPreviewData(component);\n // For components that tagged in the past we didn't store the data, so we calculate it the old way\n // We comparing the strategyName to undefined to cover a specific case when it doesn't exist at all.\n if (!data || data.strategyName === undefined) return this.isBundledWithEnvBackward(component);\n return data.strategyName === ENV_PREVIEW_STRATEGY_NAME;\n }\n\n /**\n * This is a legacy calculation for the isBundledWithEnv\n * This calc is based on the component artifacts which is very expensive operation as it requires to fetch and load the artifacts\n * See the new implementation in the isBundledWithEnv method\n * @param component\n * @returns\n */\n private async isBundledWithEnvBackward(component: Component): Promise<boolean> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n COMPONENT_STRATEGY_ARTIFACT_NAME\n );\n if (!artifacts || !artifacts.length) return true;\n\n return false;\n }\n\n // This used on component load to calc the final result of support is scaling for a given component\n // This calc based on the env, env data, env preview config and more\n // if you want to get the final result use the `doesScaling` method below\n // This should be used only for component load\n private async calcDoesScalingForComponent(component: Component): Promise<boolean> {\n const isBundledWithEnv = await this.calcIsBundledWithEnv(component);\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n // For envs that bundled with the env return true always\n if (isBundledWithEnv) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.isEnvSupportScaling(envComponent);\n }\n\n /**\n * can the current component preview scale in size for different preview sizes.\n * this calculation is based on the env of the component and if the env of the component support it.\n */\n async doesScaling(component: Component): Promise<boolean> {\n const inWorkspace = await this.workspace?.hasId(component.id);\n // Support case when we have the dev server for the env, in that case we calc the data of the env as we can't rely on the env data from the scope\n // since we bundle it for the dev server again\n if (inWorkspace) {\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = await this.calculateIsEnvSupportScaling(envComponent);\n return envSupportScaling ?? true;\n }\n const previewData = this.getPreviewData(component);\n if (!previewData) return false;\n // Get the does scaling (the new calculation) or the old calc used in isScaling (between versions (about) 848 and 860)\n if (previewData.doesScaling !== undefined) return previewData.doesScaling;\n // in case this component were tagged with versions between 848 and 860 we need to use the old calculation\n // together with the env calculation\n // In that case it means the component already tagged, so we take the env calc from the env data and not re-calc it\n if (previewData.isScaling) {\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = this.isEnvSupportScaling(envComponent);\n return !!envSupportScaling;\n }\n return false;\n }\n\n /**\n * Check if the current version of the env support scaling\n * @param envComponent\n * @returns\n */\n isEnvSupportScaling(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.isScaling;\n }\n\n async isSupportSkipIncludes(component: Component) {\n const isCore = this.envs.isUsingCoreEnv(component);\n if (isCore) return false;\n\n const envComponent = await this.envs.getEnvComponent(component);\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.skipIncludes;\n }\n\n /**\n * This function is calculate the isScaling support flag for the component preview.\n * This is calculated only for the env component and not for the component itself.\n * It should be only used during the (env) component on load.\n * Once the component load, you should only use the `isEnvSupportScaling` to fetch it from the calculated data.\n * If you want to check if an env for a given component support scaling, use the `isScaling` function.\n * @param component\n * @returns\n */\n private async calculateIsEnvSupportScaling(envComponent: Component): Promise<boolean | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n // default to true if the env doesn't have a preview config\n return previewAspectConfig?.isScaling ?? true;\n }\n\n /**\n * Check if the component preview bundle contain the header inside of it (legacy)\n * today we are not including the header inside anymore\n * @param component\n * @returns\n */\n async isLegacyHeader(component: Component): Promise<boolean> {\n // these envs had header in their docs\n const ENV_WITH_LEGACY_DOCS = ['react', 'env', 'aspect', 'lit', 'html', 'node', 'mdx', 'react-native', 'readme'];\n\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n ENV_STRATEGY_ARTIFACT_NAME\n );\n const envType = this.envs.getEnvData(component).type;\n return !!artifacts && !!artifacts.length && ENV_WITH_LEGACY_DOCS.includes(envType || '');\n }\n\n /**\n * Getting the env template artifact\n * This should be called with the env itself or it will return undefined\n * If you want to get the env template from the env of the component,\n * use: getEnvTemplateFromComponentEnv below\n *\n * @param component\n * @returns\n */\n async getEnvTemplate(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n GENERATE_ENV_TEMPLATE_TASK_NAME\n );\n if (!artifacts || !artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * This is a special method to get a core env template\n * As the core envs doesn't exist in the scope we need to bring it from other place\n * We will bring it from the core env package files\n */\n private async getCoreEnvTemplate(envId: string): Promise<PreviewArtifact | undefined> {\n const coreEnvDir = getAspectDir(envId);\n // const finalDir = join(coreEnvDir, getEnvTemplateArtifactDirectory());\n const artifactDef = getEnvTemplateArtifactDef()[0];\n const artifactFactory = new ArtifactFactory();\n\n let rootDir = artifactFactory.getRootDir(coreEnvDir, artifactDef);\n if (!existsSync(rootDir)) {\n // fallback to the bvm folder\n const coreEnvDirFromBvm = getAspectDirFromBvm(envId);\n rootDir = artifactFactory.getRootDir(coreEnvDirFromBvm, artifactDef);\n }\n if (!existsSync(rootDir)) {\n return undefined;\n }\n const paths = artifactFactory.resolvePaths(rootDir, artifactDef);\n if (!paths || !paths.length) {\n return undefined;\n }\n const artifactFiles = new ArtifactFiles(paths);\n\n artifactFiles.populateVinylsFromPaths(rootDir);\n return new PreviewArtifact(artifactFiles.vinyls);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateFromComponentEnv(component: Component): Promise<PreviewArtifact | undefined> {\n const envId = this.envs.getEnvId(component);\n return this.getEnvTemplateByEnvId(envId);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateByEnvId(envId: string): Promise<PreviewArtifact | undefined> {\n // Special treatment for core envs\n if (this.aspectLoader.isCoreEnv(envId)) {\n return this.getCoreEnvTemplate(envId);\n }\n const host = this.componentAspect.getHost();\n const resolvedEnvId = await host.resolveComponentId(envId);\n const envComponent = await host.get(resolvedEnvId);\n if (!envComponent) {\n throw new BitError(`can't load env. env id is ${envId}`);\n }\n return this.getEnvTemplate(envComponent);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(\n prefix: string,\n moduleMap: ComponentMap<string[]>,\n mainModulesMap: MainModulesMap,\n dirName: string,\n isSplitComponentBundle: boolean\n ) {\n const contents = generateLink(prefix, moduleMap, mainModulesMap, isSplitComponentBundle);\n return this.writeLinkContents(contents, dirName, prefix);\n }\n\n writeLinkContents(contents: string, targetDir: string, prefix: string) {\n const hash = objectHash(contents);\n const targetPath = join(targetDir, `${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const defaultTemplatePath = await previewDef.renderTemplatePathByEnv?.(context.env);\n const visitedEnvs = new Set();\n const mainModulesMap: MainModulesMap = {\n // @ts-ignore\n default: defaultTemplatePath,\n [context.envDefinition.id]: defaultTemplatePath,\n };\n\n const map = await previewDef.getModuleMap(components);\n const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\n const withPathsP = map.asyncMap(async (files, component) => {\n const envDef = this.envs.getEnv(component);\n const environment = envDef.env;\n const envId = envDef.id;\n\n if (!mainModulesMap[envId] && !visitedEnvs.has(envId)) {\n const modulePath = await previewDef.renderTemplatePathByEnv?.(envDef.env);\n if (modulePath) {\n mainModulesMap[envId] = modulePath;\n }\n visitedEnvs.add(envId);\n }\n const compilerInstance = environment.getCompiler?.();\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getRuntimeModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n const withPaths = await withPathsP;\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, mainModulesMap, dirPath, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const [name, uiRoot] = this.getUi();\n const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n async resolveAspects(\n runtimeName?: string,\n componentIds?: ComponentID[],\n uiRoot?: UIRoot,\n opts?: ResolveAspectsOptions\n ): Promise<AspectDefinition[]> {\n const root = uiRoot || this.getUi()[1];\n runtimeName = runtimeName || MainRuntime.name;\n const resolvedAspects = await root.resolveAspects(runtimeName, componentIds, opts);\n return resolvedAspects;\n }\n\n private getUi() {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n return ui;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(\n aspects: AspectDefinition[],\n context: { components: Component[] },\n aspectsIdsToNotFilterOut: string[] = []\n ) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return (\n this.aspectLoader.isCoreAspect(aspect.getId) ||\n allAspectsToInclude.includes(aspect.getId) ||\n aspectsIdsToNotFilterOut.includes(aspect.getId)\n );\n });\n\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [\n new EnvBundlingStrategy(this, this.pkg, this.dependencyResolver),\n new ComponentBundlingStrategy(this, this.pkg, this.dependencyResolver),\n ];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n getEnvPreviewConfig(env?: PreviewEnv): EnvPreviewConfig {\n const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};\n\n return config;\n }\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(env?: PreviewEnv): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const strategyFromEnv = envPreviewConfig?.strategyName;\n const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n WatcherAspect,\n ScopeAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n watcher,\n scope,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain,\n WatcherMain,\n ScopeMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n // app.registerApp(new PreviewApp());\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver\n );\n\n if (workspace)\n uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger, watcher));\n\n componentExtension.registerRoute([\n new PreviewRoute(preview, logger),\n new ComponentPreviewRoute(preview, logger),\n // @ts-ignore\n new EnvTemplateRoute(preview, logger),\n new PreviewAssetsRoute(preview, logger),\n ]);\n\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled)\n builder.registerBuildTasks([\n new EnvPreviewTemplateTask(preview, envs, aspectLoader, dependencyResolver, logger),\n new PreviewTask(bundler, preview, dependencyResolver, logger),\n ]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentLoad(async (component) => {\n return preview.calcPreviewData(component);\n });\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n if (scope) {\n scope.registerOnCompAspectReCalc((c) => preview.calcPreviewData(c));\n }\n\n envs.registerService(new PreviewService());\n\n graphql.register(previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"],"mappings":";;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,SAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,KAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,IAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,WAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,UAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAQA,SAAAM,MAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,KAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,SAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,QAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,IAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,GAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,WAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,UAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,UAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,SAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,YAAA;EAAA,MAAAX,IAAA,GAAAY,sBAAA,CAAAX,OAAA;EAAAU,WAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,QAAA;EAAA,MAAAb,IAAA,GAAAC,OAAA;EAAAY,OAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,SAAA;EAAA,MAAAd,IAAA,GAAAC,OAAA;EAAAa,QAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,MAAA;EAAA,MAAAf,IAAA,GAAAC,OAAA;EAAAc,KAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgB,KAAA;EAAA,MAAAhB,IAAA,GAAAC,OAAA;EAAAe,IAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,cAAA;EAAA,MAAAjB,IAAA,GAAAC,OAAA;EAAAgB,aAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAkB,WAAA;EAAA,MAAAlB,IAAA,GAAAY,sBAAA,CAAAX,OAAA;EAAAiB,UAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmB,QAAA;EAAA,MAAAnB,IAAA,GAAAC,OAAA;EAAAkB,OAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,oBAAA;EAAA,MAAApB,IAAA,GAAAC,OAAA;EAAAmB,mBAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAqB,eAAA;EAAA,MAAArB,IAAA,GAAAC,OAAA;EAAAoB,cAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAsB,SAAA;EAAA,MAAAtB,IAAA,GAAAY,sBAAA,CAAAX,OAAA;EAAAqB,QAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAuB,SAAA;EAAA,MAAAvB,IAAA,GAAAY,sBAAA,CAAAX,OAAA;EAAAsB,QAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAwB,OAAA;EAAA,MAAAxB,IAAA,GAAAY,sBAAA,CAAAX,OAAA;EAAAuB,MAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAyB,YAAA;EAAA,MAAAzB,IAAA,GAAAC,OAAA;EAAAwB,WAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA0B,cAAA;EAAA,MAAA1B,IAAA,GAAAC,OAAA;EAAAyB,aAAA,YAAAA,CAAA;IAAA,OAAA1B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA2B,iBAAA;EAAA,MAAA3B,IAAA,GAAAC,OAAA;EAAA0B,gBAAA,YAAAA,CAAA;IAAA,OAAA3B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAA4B,SAAA;EAAA,MAAA5B,IAAA,GAAAC,OAAA;EAAA2B,QAAA,YAAAA,CAAA;IAAA,OAAA5B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA6B,UAAA;EAAA,MAAA7B,IAAA,GAAAC,OAAA;EAAA4B,SAAA,YAAAA,CAAA;IAAA,OAAA7B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA8B,UAAA;EAAA,MAAA9B,IAAA,GAAAC,OAAA;EAAA6B,SAAA,YAAAA,CAAA;IAAA,OAAA9B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAA+B,YAAA;EAAA,MAAA/B,IAAA,GAAAC,OAAA;EAAA8B,WAAA,YAAAA,CAAA;IAAA,OAAA/B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AASA,SAAAgC,cAAA;EAAA,MAAAhC,IAAA,GAAAC,OAAA;EAAA+B,aAAA,YAAAA,CAAA;IAAA,OAAAhC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiC,UAAA;EAAA,MAAAjC,IAAA,GAAAC,OAAA;EAAAgC,SAAA,YAAAA,CAAA;IAAA,OAAAjC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkC,oBAAA;EAAA,MAAAlC,IAAA,GAAAC,OAAA;EAAAiC,mBAAA,YAAAA,CAAA;IAAA,OAAAlC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAmC,aAAA;EAAA,MAAAnC,IAAA,GAAAC,OAAA;EAAAkC,YAAA,YAAAA,CAAA;IAAA,OAAAnC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoC,kBAAA;EAAA,MAAApC,IAAA,GAAAC,OAAA;EAAAmC,iBAAA,YAAAA,CAAA;IAAA,OAAApC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqC,UAAA;EAAA,MAAArC,IAAA,GAAAC,OAAA;EAAAoC,SAAA,YAAAA,CAAA;IAAA,OAAArC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAsC,eAAA;EAAA,MAAAtC,IAAA,GAAAC,OAAA;EAAAqC,cAAA,YAAAA,CAAA;IAAA,OAAAtC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAuC,UAAA;EAAA,MAAAvC,IAAA,GAAAC,OAAA;EAAAsC,SAAA,YAAAA,CAAA;IAAA,OAAAvC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAmD,SAAAY,uBAAA4B,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAgB,gBAAApB,GAAA,EAAAwB,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAxB,GAAA,IAAAO,MAAA,CAAAgB,cAAA,CAAAvB,GAAA,EAAAwB,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAZ,UAAA,QAAAc,YAAA,QAAAC,QAAA,oBAAA5B,GAAA,CAAAwB,GAAA,IAAAC,KAAA,WAAAzB,GAAA;AAAA,SAAA0B,eAAApB,CAAA,QAAAuB,CAAA,GAAAC,YAAA,CAAAxB,CAAA,uCAAAuB,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAxB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAA0B,MAAA,CAAAC,WAAA,kBAAA7B,CAAA,QAAAyB,CAAA,GAAAzB,CAAA,CAAA8B,IAAA,CAAA5B,CAAA,EAAAD,CAAA,uCAAAwB,CAAA,SAAAA,CAAA,YAAAM,SAAA,yEAAA9B,CAAA,GAAA0B,MAAA,GAAAK,MAAA,EAAA9B,CAAA;AAEnD,MAAM+B,UAAU,GAAG;EACjBC,OAAO,EAAE,EAAE;EACXC,QAAQ,EAAEA,CAAA,KAAO;AACnB,CAAC;AAED,MAAMC,gBAAgB,GAAG,IAAAC,YAAI,EAACC,uBAAU,EAAEC,wBAAa,CAACC,EAAE,CAAC;;AAgC3D;AACA;AACA;;AAGA;AACA;AACA;;AAmBA;AACA;AACA;;AAyBO,MAAMC,WAAW,CAAC;EACvBC,WAAWA;EACT;AACJ;AACA;EACYC,OAAgB;EAExB;AACJ;AACA;EACYC,WAAsC,EAEtCC,EAAU,EAEVC,IAAc,EAEdC,eAA8B,EAE9BC,GAAY,EAEZC,YAA8B,EAE7BC,MAAqB,EAEtBC,oBAA0C,EAE1CC,OAAoB,EAEpBC,SAAgC,EAEhCC,MAAc,EAEdC,kBAA0C,EAClD;IAAA,KA5BQZ,OAAgB,GAAhBA,OAAgB;IAAA,KAKhBC,WAAsC,GAAtCA,WAAsC;IAAA,KAEtCC,EAAU,GAAVA,EAAU;IAAA,KAEVC,IAAc,GAAdA,IAAc;IAAA,KAEdC,eAA8B,GAA9BA,eAA8B;IAAA,KAE9BC,GAAY,GAAZA,GAAY;IAAA,KAEZC,YAA8B,GAA9BA,YAA8B;IAAA,KAE7BC,MAAqB,GAArBA,MAAqB;IAAA,KAEtBC,oBAA0C,GAA1CA,oBAA0C;IAAA,KAE1CC,OAAoB,GAApBA,OAAoB;IAAA,KAEpBC,SAAgC,GAAhCA,SAAgC;IAAA,KAEhCC,MAAc,GAAdA,MAAc;IAAA,KAEdC,kBAA0C,GAA1CA,kBAA0C;IAAAvC,eAAA,oBAmXhC,IAAIwC,GAAG,CAAiB,CAAC;IAAAxC,eAAA,oBACzByC,IAAI,CAACC,GAAG,CAAC,CAAC;IAAA1C,eAAA,wBAiCN,IAAIwC,GAAG,CAAuB,CAAC;IAqIvD;IACA;IAAAxC,eAAA,gCACgC,OAAO2C,CAAY,EAAEC,OAAkD,KAAK;MAC1G,MAAMC,GAAG,GAAG,IAAI,CAACf,IAAI,CAACgB,MAAM,CAACH,CAAC,CAAC;MAC/B,MAAMI,KAAK,GAAGF,GAAG,CAACrB,EAAE,CAACL,QAAQ,CAAC,CAAC;MAE/B,MAAM6B,YAAY,GAAG,IAAI,CAACC,aAAa,CAACC,GAAG,CAACH,KAAK,CAAC;MAClD,IAAI,CAACC,YAAY,EAAE;QACjB,IAAI,CAACV,MAAM,CAACa,IAAI,CACb,6CAA4CR,CAAC,CAACnB,EAAE,CAACL,QAAQ,CAAC,CAAE,4CAA2C4B,KAAM,EAChH,CAAC;QACD,OAAO9B,UAAU;MACnB;;MAEA;MACA2B,OAAO,CAACI,YAAY,CAAC;MAErB,MAAM,IAAI,CAACI,eAAe,CAACJ,YAAY,CAACK,iBAAiB,EAAEL,YAAY,CAACM,YAAY,CAAC;MACrF,OAAOrC,UAAU;IACnB,CAAC;IAAAjB,eAAA,iCAEiCuD,GAAgB,IAAK;MACrD,IAAIC,SAAgC;MACpC,IAAI,CAACP,aAAa,CAAClD,OAAO,CAAE0D,UAAU,IAAK;QACzC,MAAMC,KAAK,GAAGD,UAAU,CAACP,GAAG,CAACK,GAAG,CAAC;QACjC,IAAIG,KAAK,EAAEF,SAAS,GAAGE,KAAK;MAC9B,CAAC,CAAC;MACF,IAAI,CAACF,SAAS,EAAE,OAAOG,OAAO,CAACC,OAAO,CAAC3C,UAAU,CAAC;MAElD,OAAO,IAAI,CAAC4C,qBAAqB,CAACL,SAAS,EAAGH,iBAAiB,IAAKA,iBAAiB,CAACS,MAAM,CAACP,GAAG,CAAC,CAAC;IACpG,CAAC;EAvjBE;EAEH,IAAIQ,UAAUA,CAAA,EAAW;IACvB,OAAO,IAAI,CAAC1B,SAAS,EAAE2B,UAAU,CAACzC,wBAAa,CAACC,EAAE,CAAC,IAAIJ,gBAAgB;EACzE;EAEA6C,sBAAsBA,CAACT,SAAoB,EAAoC;IAC7E,MAAMpH,IAAI,GAAG,IAAI,CAACgG,OAAO,CAAC8B,eAAe,CAACV,SAAS,EAAEjC,wBAAa,CAACC,EAAE,CAAC;IAEtE,IAAI,CAACpF,IAAI,EAAE,OAAO+H,SAAS;IAC3B,OAAO/H,IAAI,CAACgI,8CAAgC,CAAC;EAC/C;EAEA,MAAMC,UAAUA,CAACb,SAAoB,EAAwC;IAC3E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAAClC,OAAO,CAACmC,oCAAoC,CACvEf,SAAS,EACTjC,wBAAa,CAACC,EAAE,EAChBgD,6BACF,CAAC;IACD,IAAI,CAACF,SAAS,EAAE,OAAOH,SAAS;IAChC,OAAO,KAAIM,kCAAe,EAACH,SAAS,CAAC;EACvC;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMI,eAAeA,CAAClB,SAAoB,EAAqC;IAC7E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAACD,UAAU,CAACb,SAAS,CAAC;IAClD,MAAMmB,gBAAgB,GAAG,MAAM,IAAI,CAACA,gBAAgB,CAACnB,SAAS,CAAC;IAC/D,IAAI,CAACc,SAAS,EAAE,OAAOH,SAAS;IAChC,OAAO;MACLS,KAAK,EAAEN,SAAS,CAACO,QAAQ,CAAC,CAAC;MAC3BF;IACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEG,sBAAsBA,CAACtB,SAAoB,EAAoC;IAC7E,OAAOA,SAAS,CAACuB,KAAK,CAACC,OAAO,CAAC9B,GAAG,CAAC3B,wBAAa,CAACC,EAAE,CAAC,EAAEU,MAAM;EAC9D;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE+C,cAAcA,CAACzB,SAAoB,EAAoC;IACrE,MAAM0B,WAAW,GAAG1B,SAAS,CAACuB,KAAK,CAACC,OAAO,CAAC9B,GAAG,CAAC3B,wBAAa,CAACC,EAAE,CAAC,EAAEpF,IAAI;IACvE,OAAO8I,WAAW;EACpB;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMC,eAAeA,CAAC3B,SAAoB,EAAiC;IACzE,MAAM4B,WAAW,GAAG,MAAM,IAAI,CAACC,2BAA2B,CAAC7B,SAAS,CAAC;IACrE,MAAM8B,WAAW,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAAC/B,SAAS,CAAC;IAChE,MAAMgC,OAAO,GAAG,CAAC,MAAM,IAAI,CAACC,4BAA4B,CAACjC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAMpH,IAA0B,GAAAwD,aAAA,CAAAA,aAAA;MAC9BwF;IAAW,GACRE,WAAW,GACXE,OAAO,CACX;IACD,OAAOpJ,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMmJ,sBAAsBA,CAC1B/B,SAAoB,EAC+C;IACnE;IACA;IACA,IACEA,SAAS,CAAChC,EAAE,CAACkE,sBAAsB,CAAC,CAAC,KAAK,wBAAwB,IAClElC,SAAS,CAAChC,EAAE,CAACkE,sBAAsB,CAAC,CAAC,KAAK,kBAAkB,EAC5D;MACA,OAAO;QACLC,YAAY,EAAEC,6CAA+B;QAC7CC,oBAAoB,EAAE;MACxB,CAAC;IACH;IAEA,MAAMhD,GAAG,GAAG,IAAI,CAACf,IAAI,CAACgB,MAAM,CAACU,SAAS,CAAC,CAACX,GAAG;IAC3C,MAAMiD,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,CAAClD,GAAG,CAAC;IACtD,MAAMzG,IAAI,GAAG;MACXuJ,YAAY,EAAEG,gBAAgB,EAAEH,YAAY;MAC5CE,oBAAoB,EAAEC,gBAAgB,EAAED,oBAAoB,IAAI;IAClE,CAAC;IACD,OAAOzJ,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAcqJ,4BAA4BA,CAACO,YAAuB,EAAgD;IAChH,MAAMC,KAAK,GAAG,IAAI,CAACnE,IAAI,CAACmE,KAAK,CAACD,YAAY,CAAC;IAC3C;IACA,IAAI,CAACC,KAAK,EAAE,OAAO9B,SAAS;IAC5B,MAAM+B,mBAAmB,GAAG,IAAI,CAACpB,sBAAsB,CAACkB,YAAY,CAAC;IAErE,MAAM5J,IAAI,GAAG;MACX;MACA+J,SAAS,EAAED,mBAAmB,EAAEC,SAAS,IAAI;MAC7C;MACA;IACF,CAAC;IACD,OAAO/J,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMgK,oBAAoBA,CAAC5C,SAAoB,EAAoB;IACjE,MAAM6C,cAAc,GAAG,MAAM,IAAI,CAACd,sBAAsB,CAAC/B,SAAS,CAAC;IACnE,OAAO6C,cAAc,EAAEV,YAAY,KAAK,WAAW;EACrD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMhB,gBAAgBA,CAACnB,SAAoB,EAAoB;IAC7D,MAAMpH,IAAI,GAAG,MAAM,IAAI,CAAC6I,cAAc,CAACzB,SAAS,CAAC;IACjD;IACA;IACA,IAAI,CAACpH,IAAI,IAAIA,IAAI,CAACuJ,YAAY,KAAKxB,SAAS,EAAE,OAAO,IAAI,CAACmC,wBAAwB,CAAC9C,SAAS,CAAC;IAC7F,OAAOpH,IAAI,CAACuJ,YAAY,KAAKY,uCAAyB;EACxD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAcD,wBAAwBA,CAAC9C,SAAoB,EAAoB;IAC7E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAAClC,OAAO,CAACoE,gCAAgC,CACnEhD,SAAS,EACTjC,wBAAa,CAACC,EAAE,EAChBiF,8CACF,CAAC;IACD,IAAI,CAACnC,SAAS,IAAI,CAACA,SAAS,CAACxE,MAAM,EAAE,OAAO,IAAI;IAEhD,OAAO,KAAK;EACd;;EAEA;EACA;EACA;EACA;EACA,MAAcuF,2BAA2BA,CAAC7B,SAAoB,EAAoB;IAChF,MAAMmB,gBAAgB,GAAG,MAAM,IAAI,CAACyB,oBAAoB,CAAC5C,SAAS,CAAC;IACnE;IACA,IAAI,IAAI,CAAC1B,IAAI,CAAC4E,cAAc,CAAClD,SAAS,CAAC,EAAE;MACvC;MACA;MACA,MAAMmD,KAAK,GAAG,MAAMnD,SAAS,CAACmD,KAAK,CAAC,CAAC;MACrC,IAAIA,KAAK,EAAE;QACT,OAAO,IAAI;MACb;MACA,OAAOhC,gBAAgB,KAAK,KAAK;IACnC;IACA;IACA,IAAIA,gBAAgB,EAAE;MACpB,OAAO,IAAI;IACb;IACA,MAAMqB,YAAY,GAAG,MAAM,IAAI,CAAClE,IAAI,CAAC8E,eAAe,CAACpD,SAAS,CAAC;IAC/D,OAAO,IAAI,CAACqD,mBAAmB,CAACb,YAAY,CAAC;EAC/C;;EAEA;AACF;AACA;AACA;EACE,MAAMZ,WAAWA,CAAC5B,SAAoB,EAAoB;IACxD,MAAMsD,WAAW,GAAG,MAAM,IAAI,CAACzE,SAAS,EAAE0E,KAAK,CAACvD,SAAS,CAAChC,EAAE,CAAC;IAC7D;IACA;IACA,IAAIsF,WAAW,EAAE;MACf;MACA,IAAI,IAAI,CAAChF,IAAI,CAAC4E,cAAc,CAAClD,SAAS,CAAC,EAAE;QACvC,MAAMmB,gBAAgB,GAAG,MAAM,IAAI,CAACA,gBAAgB,CAACnB,SAAS,CAAC;QAC/D;QACA;QACA,MAAMmD,KAAK,GAAG,MAAMnD,SAAS,CAACmD,KAAK,CAAC,CAAC;QACrC,IAAIA,KAAK,EAAE;UACT,OAAO,IAAI;QACb;QACA,OAAOhC,gBAAgB,KAAK,KAAK;MACnC;MACA,MAAMqB,YAAY,GAAG,MAAM,IAAI,CAAClE,IAAI,CAAC8E,eAAe,CAACpD,SAAS,CAAC;MAC/D,MAAMwD,iBAAiB,GAAG,MAAM,IAAI,CAACC,4BAA4B,CAACjB,YAAY,CAAC;MAC/E,OAAOgB,iBAAiB,IAAI,IAAI;IAClC;IACA,MAAM9B,WAAW,GAAG,IAAI,CAACD,cAAc,CAACzB,SAAS,CAAC;IAClD,IAAI,CAAC0B,WAAW,EAAE,OAAO,KAAK;IAC9B;IACA,IAAIA,WAAW,CAACE,WAAW,KAAKjB,SAAS,EAAE,OAAOe,WAAW,CAACE,WAAW;IACzE;IACA;IACA;IACA,IAAIF,WAAW,CAACiB,SAAS,EAAE;MACzB,MAAMH,YAAY,GAAG,MAAM,IAAI,CAAClE,IAAI,CAAC8E,eAAe,CAACpD,SAAS,CAAC;MAC/D,MAAMwD,iBAAiB,GAAG,IAAI,CAACH,mBAAmB,CAACb,YAAY,CAAC;MAChE,OAAO,CAAC,CAACgB,iBAAiB;IAC5B;IACA,OAAO,KAAK;EACd;;EAEA;AACF;AACA;AACA;AACA;EACEH,mBAAmBA,CAACb,YAAuB,EAAW;IACpD,MAAMd,WAAW,GAAG,IAAI,CAACD,cAAc,CAACe,YAAY,CAAC;IACrD,OAAO,CAAC,CAACd,WAAW,EAAEiB,SAAS;EACjC;EAEA,MAAMe,qBAAqBA,CAAC1D,SAAoB,EAAE;IAChD,MAAM2D,MAAM,GAAG,IAAI,CAACrF,IAAI,CAAC4E,cAAc,CAAClD,SAAS,CAAC;IAClD,IAAI2D,MAAM,EAAE,OAAO,KAAK;IAExB,MAAMnB,YAAY,GAAG,MAAM,IAAI,CAAClE,IAAI,CAAC8E,eAAe,CAACpD,SAAS,CAAC;IAC/D,MAAM0B,WAAW,GAAG,IAAI,CAACD,cAAc,CAACe,YAAY,CAAC;IACrD,OAAO,CAAC,CAACd,WAAW,EAAEkC,YAAY;EACpC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAcH,4BAA4BA,CAACjB,YAAuB,EAAgC;IAChG,MAAMC,KAAK,GAAG,IAAI,CAACnE,IAAI,CAACmE,KAAK,CAACD,YAAY,CAAC;IAC3C;IACA,IAAI,CAACC,KAAK,EAAE,OAAO9B,SAAS;IAC5B,MAAM+B,mBAAmB,GAAG,IAAI,CAACpB,sBAAsB,CAACkB,YAAY,CAAC;IACrE;IACA,OAAOE,mBAAmB,EAAEC,SAAS,IAAI,IAAI;EAC/C;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMkB,cAAcA,CAAC7D,SAAoB,EAAoB;IAC3D;IACA,MAAM8D,oBAAoB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;IAE/G,MAAMhD,SAAS,GAAG,MAAM,IAAI,CAAClC,OAAO,CAACoE,gCAAgC,CACnEhD,SAAS,EACTjC,wBAAa,CAACC,EAAE,EAChB+F,wCACF,CAAC;IACD,MAAMC,OAAO,GAAG,IAAI,CAAC1F,IAAI,CAAC2F,UAAU,CAACjE,SAAS,CAAC,CAACkE,IAAI;IACpD,OAAO,CAAC,CAACpD,SAAS,IAAI,CAAC,CAACA,SAAS,CAACxE,MAAM,IAAIwH,oBAAoB,CAACK,QAAQ,CAACH,OAAO,IAAI,EAAE,CAAC;EAC1F;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMI,cAAcA,CAACpE,SAAoB,EAAwC;IAC/E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAAClC,OAAO,CAACmC,oCAAoC,CACvEf,SAAS,EACTjC,wBAAa,CAACC,EAAE,EAChBqG,qDACF,CAAC;IACD,IAAI,CAACvD,SAAS,IAAI,CAACA,SAAS,CAACxE,MAAM,EAAE,OAAOqE,SAAS;IAErD,OAAO,KAAIM,kCAAe,EAACH,SAAS,CAAC;EACvC;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAcwD,kBAAkBA,CAAC/E,KAAa,EAAwC;IACpF,MAAMgF,UAAU,GAAG,IAAAC,4BAAY,EAACjF,KAAK,CAAC;IACtC;IACA,MAAMkF,WAAW,GAAG,IAAAC,oCAAyB,EAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAMC,eAAe,GAAG,KAAIC,0BAAe,EAAC,CAAC;IAE7C,IAAIC,OAAO,GAAGF,eAAe,CAACG,UAAU,CAACP,UAAU,EAAEE,WAAW,CAAC;IACjE,IAAI,CAAC,IAAAM,qBAAU,EAACF,OAAO,CAAC,EAAE;MACxB;MACA,MAAMG,iBAAiB,GAAG,IAAAC,mCAAmB,EAAC1F,KAAK,CAAC;MACpDsF,OAAO,GAAGF,eAAe,CAACG,UAAU,CAACE,iBAAiB,EAAEP,WAAW,CAAC;IACtE;IACA,IAAI,CAAC,IAAAM,qBAAU,EAACF,OAAO,CAAC,EAAE;MACxB,OAAOlE,SAAS;IAClB;IACA,MAAMuE,KAAK,GAAGP,eAAe,CAACQ,YAAY,CAACN,OAAO,EAAEJ,WAAW,CAAC;IAChE,IAAI,CAACS,KAAK,IAAI,CAACA,KAAK,CAAC5I,MAAM,EAAE;MAC3B,OAAOqE,SAAS;IAClB;IACA,MAAMyE,aAAa,GAAG,KAAIC,8BAAa,EAACH,KAAK,CAAC;IAE9CE,aAAa,CAACE,uBAAuB,CAACT,OAAO,CAAC;IAC9C,OAAO,KAAI5D,kCAAe,EAACmE,aAAa,CAACG,MAAM,CAAC;EAClD;;EAEA;AACF;AACA;AACA;EACE,MAAMC,8BAA8BA,CAACxF,SAAoB,EAAwC;IAC/F,MAAMT,KAAK,GAAG,IAAI,CAACjB,IAAI,CAACmH,QAAQ,CAACzF,SAAS,CAAC;IAC3C,OAAO,IAAI,CAAC0F,qBAAqB,CAACnG,KAAK,CAAC;EAC1C;;EAEA;AACF;AACA;AACA;EACE,MAAMmG,qBAAqBA,CAACnG,KAAa,EAAwC;IAC/E;IACA,IAAI,IAAI,CAACd,YAAY,CAACkH,SAAS,CAACpG,KAAK,CAAC,EAAE;MACtC,OAAO,IAAI,CAAC+E,kBAAkB,CAAC/E,KAAK,CAAC;IACvC;IACA,MAAMqG,IAAI,GAAG,IAAI,CAACrH,eAAe,CAACsH,OAAO,CAAC,CAAC;IAC3C,MAAMC,aAAa,GAAG,MAAMF,IAAI,CAACG,kBAAkB,CAACxG,KAAK,CAAC;IAC1D,MAAMiD,YAAY,GAAG,MAAMoD,IAAI,CAAClG,GAAG,CAACoG,aAAa,CAAC;IAClD,IAAI,CAACtD,YAAY,EAAE;MACjB,MAAM,KAAIwD,oBAAQ,EAAE,6BAA4BzG,KAAM,EAAC,CAAC;IAC1D;IACA,OAAO,IAAI,CAAC6E,cAAc,CAAC5B,YAAY,CAAC;EAC1C;EAEAyD,OAAOA,CAAA,EAAwB;IAC7B,OAAO,IAAI,CAAC7H,WAAW,CAAC8H,MAAM,CAAC,CAAC;EAClC;EAKA;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,SAASA,CACPC,MAAc,EACdC,SAAiC,EACjCC,cAA8B,EAC9BC,OAAe,EACfC,sBAA+B,EAC/B;IACA,MAAMC,QAAQ,GAAG,IAAAC,4BAAY,EAACN,MAAM,EAAEC,SAAS,EAAEC,cAAc,EAAEE,sBAAsB,CAAC;IACxF,OAAO,IAAI,CAACG,iBAAiB,CAACF,QAAQ,EAAEF,OAAO,EAAEH,MAAM,CAAC;EAC1D;EAEAO,iBAAiBA,CAACF,QAAgB,EAAEG,SAAiB,EAAER,MAAc,EAAE;IACrE,MAAMS,IAAI,GAAG,IAAAC,qBAAU,EAACL,QAAQ,CAAC;IACjC,MAAMM,UAAU,GAAG,IAAAlJ,YAAI,EAAC+I,SAAS,EAAG,GAAER,MAAO,IAAG,IAAI,CAACY,SAAU,KAAI,CAAC;;IAEpE;IACA,IAAI,IAAI,CAACC,SAAS,CAACvH,GAAG,CAACqH,UAAU,CAAC,KAAKF,IAAI,EAAE;MAC3C,IAAAK,wBAAa,EAACH,UAAU,EAAEN,QAAQ,CAAC;MACnC,IAAI,CAACQ,SAAS,CAACE,GAAG,CAACJ,UAAU,EAAEF,IAAI,CAAC;IACtC;IAEA,OAAOE,UAAU;EACnB;EAIA,MAAcK,gBAAgBA,CAAA,CAC5B;EACAC,OAAyB,EACN;IACnB;IACA;IACA,CAACA,OAAO,CAACrJ,EAAE,EAAE,GAAGqJ,OAAO,CAACC,eAAe,CAAC,CAAC/K,OAAO,CAAEgL,KAAK,IAAK;MAC1D,IAAI,CAAC9H,aAAa,CAAC0H,GAAG,CAACI,KAAK,EAAE,KAAIC,4BAAY,EAACH,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAMI,cAAc,GAAG,MAAM,IAAI,CAACC,mBAAmB,CAACL,OAAO,CAAC;IAC9D,MAAMM,SAAS,GAAG,MAAM,IAAI,CAAC/H,eAAe,CAACyH,OAAO,CAACpH,UAAU,EAAEoH,OAAO,CAAC;IAEzE,OAAO,CAAC,GAAGM,SAAS,EAAEF,cAAc,CAAC;EACvC;EAEQ7H,eAAeA,CAACK,UAAuB,GAAG,EAAE,EAAEoH,OAAyB,EAAE;IAC/E,MAAMO,QAAQ,GAAG,IAAI,CAACxJ,WAAW,CAAC8H,MAAM,CAAC,CAAC;IAC1C,MAAMhB,KAAK,GAAG0C,QAAQ,CAACC,GAAG,CAAC,MAAOC,UAAU,IAAK;MAC/C,MAAMC,mBAAmB,GAAG,MAAMD,UAAU,CAACE,uBAAuB,GAAGX,OAAO,CAAChI,GAAG,CAAC;MACnF,MAAM4I,WAAW,GAAG,IAAIC,GAAG,CAAC,CAAC;MAC7B,MAAM5B,cAA8B,GAAG;QACrC;QACAhL,OAAO,EAAEyM,mBAAmB;QAC5B,CAACV,OAAO,CAACc,aAAa,CAACnK,EAAE,GAAG+J;MAC9B,CAAC;MAED,MAAMF,GAAG,GAAG,MAAMC,UAAU,CAACM,YAAY,CAACnI,UAAU,CAAC;MACrD,MAAMuG,sBAAsB,GAAG,IAAI,CAACjE,mBAAmB,CAAC,CAAC,CAACF,oBAAoB,IAAI,KAAK;MACvF,MAAMgG,UAAU,GAAGR,GAAG,CAACS,QAAQ,CAAC,OAAOlH,KAAK,EAAEpB,SAAS,KAAK;QAC1D,MAAMuI,MAAM,GAAG,IAAI,CAACjK,IAAI,CAACgB,MAAM,CAACU,SAAS,CAAC;QAC1C,MAAMwI,WAAW,GAAGD,MAAM,CAAClJ,GAAG;QAC9B,MAAME,KAAK,GAAGgJ,MAAM,CAACvK,EAAE;QAEvB,IAAI,CAACsI,cAAc,CAAC/G,KAAK,CAAC,IAAI,CAAC0I,WAAW,CAACQ,GAAG,CAAClJ,KAAK,CAAC,EAAE;UACrD,MAAMmJ,UAAU,GAAG,MAAMZ,UAAU,CAACE,uBAAuB,GAAGO,MAAM,CAAClJ,GAAG,CAAC;UACzE,IAAIqJ,UAAU,EAAE;YACdpC,cAAc,CAAC/G,KAAK,CAAC,GAAGmJ,UAAU;UACpC;UACAT,WAAW,CAACU,GAAG,CAACpJ,KAAK,CAAC;QACxB;QACA,MAAMqJ,gBAAgB,GAAGJ,WAAW,CAACK,WAAW,GAAG,CAAC;QACpD,MAAMH,UAAU,GACdE,gBAAgB,EAAEE,2BAA2B,GAAG9I,SAAS,CAAC,IAAI,IAAI,CAACxB,GAAG,CAACuK,oBAAoB,CAAC/I,SAAS,CAAC;QACxG,OAAOoB,KAAK,CAACyG,GAAG,CAAEmB,IAAI,IAAK;UACzB,IAAI,CAAC,IAAI,CAACnK,SAAS,IAAI,CAAC+J,gBAAgB,EAAE;YACxC,OAAOI,IAAI,CAACC,IAAI;UAClB;UACA,MAAMC,gBAAgB,GAAGN,gBAAgB,CAACO,oBAAoB,CAACH,IAAI,CAACI,QAAQ,CAAC;UAC7E,OAAO,IAAAvL,YAAI,EAAC,IAAI,CAACgB,SAAS,CAACoK,IAAI,EAAEP,UAAU,EAAEQ,gBAAgB,CAAC;QAChE,CAAC,CAAC;QACF;MACF,CAAC,CAAC;MACF,MAAMG,SAAS,GAAG,MAAMhB,UAAU;MAElC,MAAMiB,OAAO,GAAG,IAAAzL,YAAI,EAAC,IAAI,CAAC0C,UAAU,EAAE8G,OAAO,CAACrJ,EAAE,CAAC;MACjD,IAAI,CAAC,IAAA+G,qBAAU,EAACuE,OAAO,CAAC,EAAE,IAAAC,oBAAS,EAACD,OAAO,EAAE;QAAEE,SAAS,EAAE;MAAK,CAAC,CAAC;MAEjE,MAAMC,IAAI,GAAG,IAAI,CAACtD,SAAS,CAAC2B,UAAU,CAAC1B,MAAM,EAAEiD,SAAS,EAAE/C,cAAc,EAAEgD,OAAO,EAAE9C,sBAAsB,CAAC;MAC1G,OAAOiD,IAAI;IACb,CAAC,CAAC;IAEF,OAAOtJ,OAAO,CAACuJ,GAAG,CAACxE,KAAK,CAAC;EAC3B;EAEA,MAAMwC,mBAAmBA,CAACL,OAAoC,EAAEsC,wBAAkC,GAAG,EAAE,EAAE;IACvG,MAAM,CAACC,IAAI,EAAEC,MAAM,CAAC,GAAG,IAAI,CAACC,KAAK,CAAC,CAAC;IACnC,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACC,cAAc,CAACC,yBAAc,CAACL,IAAI,EAAEjJ,SAAS,EAAEkJ,MAAM,CAAC;IACzF,MAAMK,eAAe,GAAG,IAAI,CAACC,+BAA+B,CAACJ,eAAe,EAAE1C,OAAO,EAAEsC,wBAAwB,CAAC;IAChH,MAAMS,QAAQ,GAAG,MAAM,IAAI,CAAC/L,EAAE,CAACgM,YAAY,CAACH,eAAe,EAAEN,IAAI,EAAE,SAAS,EAAE7L,wBAAa,CAACC,EAAE,CAAC;IAC/F,OAAOoM,QAAQ;EACjB;EAEA,MAAMJ,cAAcA,CAClBM,WAAoB,EACpBC,YAA4B,EAC5BV,MAAe,EACfW,IAA4B,EACC;IAC7B,MAAMC,IAAI,GAAGZ,MAAM,IAAI,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtCQ,WAAW,GAAGA,WAAW,IAAII,kBAAW,CAACd,IAAI;IAC7C,MAAMG,eAAe,GAAG,MAAMU,IAAI,CAACT,cAAc,CAACM,WAAW,EAAEC,YAAY,EAAEC,IAAI,CAAC;IAClF,OAAOT,eAAe;EACxB;EAEQD,KAAKA,CAAA,EAAG;IACd,MAAMzL,EAAE,GAAG,IAAI,CAACA,EAAE,CAACyL,KAAK,CAAC,CAAC;IAC1B,IAAI,CAACzL,EAAE,EAAE,MAAM,IAAIsM,KAAK,CAAC,cAAc,CAAC;IACxC,OAAOtM,EAAE;EACX;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACU8L,+BAA+BA,CACrC3I,OAA2B,EAC3B6F,OAAoC,EACpCsC,wBAAkC,GAAG,EAAE,EACvC;IACA,IAAIiB,0BAAoC,GAAG,EAAE;IAC7CA,0BAA0B,GAAGvD,OAAO,CAACpH,UAAU,CAAC4K,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACpE,OAAOD,GAAG,CAACE,MAAM,CAACD,IAAI,CAACxJ,KAAK,CAACC,OAAO,CAACyJ,GAAG,CAAC;IAC3C,CAAC,EAAEL,0BAA0B,CAAC;IAC9B,MAAMM,WAAW,GAAGvP,MAAM,CAACC,IAAI,CAAC,IAAI,CAACuC,OAAO,CAACO,MAAM,CAACyM,QAAQ,CAAC,CAAC,CAAC;IAC/D,MAAMC,mBAAmB,GAAG,IAAAC,cAAI,EAACH,WAAW,CAACF,MAAM,CAACJ,0BAA0B,CAAC,CAAC;IAChF,MAAMU,QAAQ,GAAG9J,OAAO,CAACzF,MAAM,CAAEwP,MAAM,IAAK;MAC1C,IAAI,CAACA,MAAM,CAACC,KAAK,EAAE;QACjB,OAAO,KAAK;MACd;MACA,OACE,IAAI,CAAC/M,YAAY,CAACgN,YAAY,CAACF,MAAM,CAACC,KAAK,CAAC,IAC5CJ,mBAAmB,CAACjH,QAAQ,CAACoH,MAAM,CAACC,KAAK,CAAC,IAC1C7B,wBAAwB,CAACxF,QAAQ,CAACoH,MAAM,CAACC,KAAK,CAAC;IAEnD,CAAC,CAAC;IAEF,OAAOF,QAAQ;EACjB;EAEQI,oBAAoBA,CAAA,EAAG;IAC7B,OAAO,CACL,KAAIC,iCAAmB,EAAC,IAAI,EAAE,IAAI,CAACnN,GAAG,EAAE,IAAI,CAACO,kBAAkB,CAAC,EAChE,KAAI6M,uCAAyB,EAAC,IAAI,EAAE,IAAI,CAACpN,GAAG,EAAE,IAAI,CAACO,kBAAkB,CAAC,CACvE;EACH;EAkCAwD,mBAAmBA,CAAClD,GAAgB,EAAoB;IACtD,MAAMX,MAAM,GAAGW,GAAG,EAAEwM,gBAAgB,IAAI,OAAOxM,GAAG,EAAEwM,gBAAgB,KAAK,UAAU,GAAGxM,GAAG,EAAEwM,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC;IAElH,OAAOnN,MAAM;EACf;;EAEA;AACF;AACA;EACEoN,mBAAmBA,CAACzM,GAAgB,EAAoB;IACtD,MAAM0M,iBAAiB,GAAG,IAAI,CAACL,oBAAoB,CAAC,CAAC;IACrD,MAAMpJ,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,CAAClD,GAAG,CAAC;IACtD,MAAM2M,eAAe,GAAG1J,gBAAgB,EAAEH,YAAY;IACtD,MAAMA,YAAY,GAAG6J,eAAe,IAAI,IAAI,CAACtN,MAAM,CAACuN,gBAAgB,IAAI,KAAK;IAC7E,MAAMC,UAAU,GAAG,IAAI,CAACvN,oBAAoB,CAACuH,MAAM,CAAC,CAAC,CAAC8E,MAAM,CAACe,iBAAiB,CAAC;IAC/E,MAAMI,QAAQ,GAAGD,UAAU,CAACE,IAAI,CAAEC,QAAQ,IAAK;MAC7C,OAAOA,QAAQ,CAACzC,IAAI,KAAKzH,YAAY;IACvC,CAAC,CAAC;IAEF,IAAI,CAACgK,QAAQ,EAAE,MAAM,KAAIG,sCAAwB,EAACnK,YAAY,CAAC;IAE/D,OAAOgK,QAAQ;EACjB;;EAEA;AACF;AACA;EACEI,wBAAwBA,CAACN,gBAAkC,EAAE;IAC3D,IAAI,CAACtN,oBAAoB,CAAC6N,QAAQ,CAACP,gBAAgB,CAAC;IACpD,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEQ,kBAAkBA,CAAC3E,UAA6B,EAAE;IAChD,IAAI,CAAC1J,WAAW,CAACoO,QAAQ,CAAC1E,UAAU,CAAC;EACvC;EA0BA,aAAa4E,QAAQA;EACnB;EACA,CACEC,OAAO,EACP/N,OAAO,EACPgO,kBAAkB,EAClBC,MAAM,EACNvO,IAAI,EACJO,SAAS,EACTL,GAAG,EACHsO,MAAM,EACNrO,YAAY,EACZsO,UAAU,EACVhO,kBAAkB,EAClBiO,OAAO,EACPC,OAAO,EACPC,KAAK,CAgBN,EACDxO,MAAqB,EACrB,CAACN,WAAW,EAAEO,oBAAoB,CAAoD,EACtFR,OAAgB,EAChB;IACA,MAAMW,MAAM,GAAGiO,UAAU,CAACI,YAAY,CAACpP,wBAAa,CAACC,EAAE,CAAC;IACxD;IACA,MAAMoP,OAAO,GAAG,IAAInP,WAAW,CAC7BE,OAAO,EACPC,WAAW,EACXyO,MAAM,EACNvO,IAAI,EACJsO,kBAAkB,EAClBpO,GAAG,EACHC,YAAY,EACZC,MAAM,EACNC,oBAAoB,EACpBC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,kBACF,CAAC;IAED,IAAIF,SAAS,EACXgO,MAAM,CAACQ,mBAAmB,CAAC,KAAIC,8BAAkB,EAACzO,SAAS,EAAE8N,OAAO,EAAEE,MAAM,EAAEC,MAAM,EAAEhO,MAAM,EAAEmO,OAAO,CAAC,CAAC;IAEzGL,kBAAkB,CAACW,aAAa,CAAC,CAC/B,KAAIC,wBAAY,EAACJ,OAAO,EAAEtO,MAAM,CAAC,EACjC,KAAI2O,yCAAqB,EAACL,OAAO,EAAEtO,MAAM,CAAC;IAC1C;IACA,KAAI4O,+BAAgB,EAACN,OAAO,EAAEtO,MAAM,CAAC,EACrC,KAAI6O,mCAAkB,EAACP,OAAO,EAAEtO,MAAM,CAAC,CACxC,CAAC;IAEF6N,OAAO,CAACiB,cAAc,CAAC,CACrB;MACEC,KAAK,EAAET,OAAO,CAAChG,gBAAgB,CAAC0G,IAAI,CAACV,OAAO;IAC9C,CAAC,CACF,CAAC;IAEF,IAAI,CAAC1O,MAAM,CAACqP,QAAQ,EAClBnP,OAAO,CAACoP,kBAAkB,CAAC,CACzB,KAAIC,4CAAsB,EAACb,OAAO,EAAE9O,IAAI,EAAEG,YAAY,EAAEM,kBAAkB,EAAED,MAAM,CAAC,EACnF,KAAIoP,uBAAW,EAACvB,OAAO,EAAES,OAAO,EAAErO,kBAAkB,EAAED,MAAM,CAAC,CAC9D,CAAC;IAEJ,IAAID,SAAS,EAAE;MACbA,SAAS,CAACsP,sBAAsB,CAAEhP,CAAC,IACjCiO,OAAO,CAAC/M,qBAAqB,CAAClB,CAAC,EAAGU,iBAAiB,IAAKA,iBAAiB,CAAC8I,GAAG,CAACxJ,CAAC,CAAC,CAClF,CAAC;MACDN,SAAS,CAACuP,uBAAuB,CAAC,MAAOpO,SAAS,IAAK;QACrD,OAAOoN,OAAO,CAACzL,eAAe,CAAC3B,SAAS,CAAC;MAC3C,CAAC,CAAC;MACFnB,SAAS,CAACwP,yBAAyB,CAAElP,CAAC,IACpCiO,OAAO,CAAC/M,qBAAqB,CAAClB,CAAC,EAAGU,iBAAiB,IAAKA,iBAAiB,CAACyO,MAAM,CAACnP,CAAC,CAAC,CACrF,CAAC;MACDN,SAAS,CAAC0P,yBAAyB,CAAExO,GAAG,IAAKqN,OAAO,CAACoB,sBAAsB,CAACzO,GAAG,CAAC,CAAC;IACnF;IACA,IAAImN,KAAK,EAAE;MACTA,KAAK,CAACuB,0BAA0B,CAAEtP,CAAC,IAAKiO,OAAO,CAACzL,eAAe,CAACxC,CAAC,CAAC,CAAC;IACrE;IAEAb,IAAI,CAACoQ,eAAe,CAAC,KAAIC,0BAAc,EAAC,CAAC,CAAC;IAE1C3B,OAAO,CAACR,QAAQ,CAAC,IAAAoC,yBAAa,EAACxB,OAAO,CAAC,CAAC;IAExC,OAAOA,OAAO;EAChB;AACF;AAACyB,OAAA,CAAA5Q,WAAA,GAAAA,WAAA;AAAAzB,eAAA,CA7vBYyB,WAAW,WAioBP,CAAC6Q,eAAI,CAACC,QAAQ,CAAoB,CAAC,EAAED,eAAI,CAACC,QAAQ,CAAmB,CAAC,CAAC;AAAAvS,eAAA,CAjoB3EyB,WAAW,aAmoBLyM,kBAAW;AAAAlO,eAAA,CAnoBjByB,WAAW,kBAooBA,CACpB+Q,wBAAa,EACbC,wBAAa,EACbC,4BAAe,EACfC,cAAQ,EACRC,kBAAU,EACVC,oBAAe,EACfC,gBAAS,EACTC,sBAAY,EACZC,kCAAkB,EAClBC,sBAAY,EACZC,8CAAwB,EACxBC,kBAAa,EACbC,kBAAa,EACbC,gBAAW,CACZ;AAAArT,eAAA,CAnpBUyB,WAAW,mBAqpBC;EACrB8P,QAAQ,EAAE;AACZ,CAAC;AAwGHhQ,wBAAa,CAAC+R,UAAU,CAAC7R,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"names":["_builder","data","require","_bundler","_pubsub","_cli","_component","_envs","_harmony","_ui","_constants","_bitError","_objectHash","_interopRequireDefault","_lodash","_fsExtra","_path","_pkg","_aspectLoader","_workspace","_logger","_dependencyResolver","_artifactFiles","_watcher","_graphql","_scope","_exceptions","_generateLink","_previewArtifact","_preview","_preview2","_preview3","_strategies","_executionRef","_preview4","_envPreviewTemplate","_envTemplate","_componentPreview","_preview5","_previewAssets","_preview6","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByAspectAndTaskName","PREVIEW_TASK_NAME","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getPreviewAspectConfig","state","aspects","getPreviewData","previewData","doesEnvIncludesOnlyOverview","envComponent","supportsOnlyOverview","doesEnvUseNameParam","supportsUseNameParam","calculateIncludeOnlyOverview","isUsingCoreEnv","getEnvComponent","calculateUseNameParam","calcPreviewData","doesScaling","calcDoesScalingForComponent","dataFromEnv","calcPreviewDataFromEnv","envData","calculateDataForEnvComponent","onlyOverview","useNameParam","toStringWithoutVersion","strategyName","COMPONENT_PREVIEW_STRATEGY_NAME","splitComponentBundle","envPreviewConfig","getEnvPreviewConfig","isEnv","previewAspectConfig","isScaling","calcIsBundledWithEnv","envPreviewData","isBundledWithEnvBackward","ENV_PREVIEW_STRATEGY_NAME","getArtifactsVinylByAspectAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","isNew","isEnvSupportScaling","inWorkspace","hasId","envSupportScaling","calculateIsEnvSupportScaling","isSupportSkipIncludes","isCore","skipIncludes","getOnlyOverview","getUseNameParam","isLegacyHeader","ENV_WITH_LEGACY_DOCS","ENV_STRATEGY_ARTIFACT_NAME","envType","getEnvData","type","includes","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","getAspectDir","artifactDef","getEnvTemplateArtifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","existsSync","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","BitError","getDefs","values","writeLink","prefix","moduleMap","mainModulesMap","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","writeFileSync","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","defaultTemplatePath","renderTemplatePathByEnv","visitedEnvs","Set","envDefinition","getModuleMap","withPathsP","asyncMap","envDef","environment","has","modulePath","add","compilerInstance","getCompiler","getPreviewComponentRootPath","getRuntimeModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","withPaths","dirPath","mkdirSync","recursive","link","all","aspectsIdsToNotFilterOut","name","uiRoot","getUi","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","runtimeName","componentIds","opts","root","MainRuntime","Error","allComponentContextAspects","reduce","acc","curr","concat","ids","hostAspects","toObject","allAspectsToInclude","uniq","filtered","aspect","getId","isCoreAspect","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getPreviewConfig","getBundlingStrategy","defaultStrategies","strategyFromEnv","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","graphql","watcher","scope","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","registerOnComponentAdd","registerOnComponentLoad","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","registerOnCompAspectReCalc","registerService","PreviewService","previewSchema","exports","Slot","withType","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","WatcherAspect","ScopeAspect","addRuntime"],"sources":["preview.main.runtime.tsx"],"sourcesContent":["import { ArtifactFactory, BuilderAspect } from '@teambit/builder';\nimport type { BuilderMain } from '@teambit/builder';\nimport { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport {\n Component,\n ComponentAspect,\n ComponentMain,\n ComponentMap,\n ComponentID,\n ResolveAspectsOptions,\n} from '@teambit/component';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain, UIRoot } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectLoaderAspect, getAspectDir, getAspectDirFromBvm } from '@teambit/aspect-loader';\nimport type { AspectDefinition, AspectLoaderMain } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ArtifactFiles } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport WatcherAspect, { WatcherMain } from '@teambit/watcher';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink, MainModulesMap } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask, PREVIEW_TASK_NAME } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport {\n EnvBundlingStrategy,\n ComponentBundlingStrategy,\n COMPONENT_STRATEGY_ARTIFACT_NAME,\n COMPONENT_STRATEGY_SIZE_KEY_NAME,\n ENV_PREVIEW_STRATEGY_NAME,\n ENV_STRATEGY_ARTIFACT_NAME,\n COMPONENT_PREVIEW_STRATEGY_NAME,\n} from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\nimport {\n EnvPreviewTemplateTask,\n GENERATE_ENV_TEMPLATE_TASK_NAME,\n getArtifactDef as getEnvTemplateArtifactDef,\n} from './env-preview-template.task';\nimport { EnvTemplateRoute } from './env-template.route';\nimport { ComponentPreviewRoute } from './component-preview.route';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\nimport { PreviewService } from './preview.service';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\nexport type PreviewStrategyName = 'env' | 'component';\n\nexport type PreviewFiles = {\n files: string[];\n isBundledWithEnv: boolean;\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewVariantConfig = {\n isScaling?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load\n */\nexport type PreviewComponentData = PreviewAnyComponentData & PreviewEnvComponentData;\n\n/**\n * Preview data that stored on the component on load for any component\n */\nexport type PreviewAnyComponentData = {\n doesScaling?: boolean;\n /**\n * The strategy configured by the component's env\n */\n strategyName?: PreviewStrategyName;\n /**\n * Does the component has a bundle for the component itself (separated from the compositions/docs)\n * Calculated by the component's env\n */\n splitComponentBundle?: boolean;\n\n /**\n * don't allow other aspects implementing a preview definition to be included in your preview.\n */\n onlyOverview?: boolean;\n\n /**\n * use name query params to select a specific composition to render.\n */\n useNameParam?: boolean;\n\n /**\n * don't allow other aspects implementing a preview definition to be included in your preview.\n */\n skipIncludes?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load if the component is an env\n */\nexport type PreviewEnvComponentData = {\n isScaling?: boolean;\n supportsOnlyOverview?: boolean;\n supportsUseNameParam?: boolean;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n /**\n * limit concurrent components when running the bundling step for your bundler during generate components preview task.\n * this helps mitigate large memory consumption for the build pipeline. This may increase the overall time for the generate-preview task, but reduce memory footprint.\n * default - no limit.\n */\n maxChunkSize?: number;\n onlyOverview?: boolean;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: PreviewStrategyName;\n splitComponentBundle?: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport type GenerateLinkFn = (prefix: string, componentMap: ComponentMap<string[]>, defaultModule?: string) => string;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private componentAspect: ComponentMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n getComponentBundleSize(component: Component): ComponentPreviewSize | undefined {\n const data = this.builder.getDataByAspect(component, PreviewAspect.id);\n\n if (!data) return undefined;\n return data[COMPONENT_STRATEGY_SIZE_KEY_NAME];\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts) return undefined;\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * Get a list of all the artifact files generated during the GeneratePreview task\n * @param component\n * @returns\n */\n async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {\n const artifacts = await this.getPreview(component);\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n isBundledWithEnv,\n };\n }\n\n /**\n * Get the preview config of the component.\n * (config that was set by variants or on bitmap)\n * @param component\n * @returns\n */\n getPreviewAspectConfig(component: Component): PreviewVariantConfig | undefined {\n return component.state.aspects.get(PreviewAspect.id)?.config;\n }\n\n /**\n * Get the preview data of the component.\n * (data that was calculated during the on load process)\n * @param component\n * @returns\n */\n getPreviewData(component: Component): PreviewComponentData | undefined {\n const previewData = component.state.aspects.get(PreviewAspect.id)?.data;\n return previewData;\n }\n\n /**\n * check if the current version of env component supports skipping other included previews\n * @param envComponent\n * @returns\n */\n doesEnvIncludesOnlyOverview(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.supportsOnlyOverview;\n }\n\n /**\n * check if the current version of env component supports name query param\n * @param envComponent\n * @returns\n */\n doesEnvUseNameParam(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.supportsUseNameParam;\n }\n\n private async calculateIncludeOnlyOverview(component: Component): Promise<boolean> {\n if (this.envs.isUsingCoreEnv(component)) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.doesEnvIncludesOnlyOverview(envComponent);\n }\n\n private async calculateUseNameParam(component: Component): Promise<boolean> {\n if (this.envs.isUsingCoreEnv(component)) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.doesEnvUseNameParam(envComponent);\n }\n\n /**\n * Calculate preview data on component load\n * @param component\n * @returns\n */\n async calcPreviewData(component: Component): Promise<PreviewComponentData> {\n const doesScaling = await this.calcDoesScalingForComponent(component);\n const dataFromEnv = await this.calcPreviewDataFromEnv(component);\n const envData = (await this.calculateDataForEnvComponent(component)) || {};\n const onlyOverview = await this.calculateIncludeOnlyOverview(component);\n const useNameParam = await this.calculateUseNameParam(component);\n\n const data: PreviewComponentData = {\n doesScaling,\n onlyOverview,\n useNameParam,\n ...dataFromEnv,\n ...envData,\n };\n return data;\n }\n\n /**\n * Calculate preview data on component that configured by its env\n * @param component\n * @returns\n */\n async calcPreviewDataFromEnv(\n component: Component\n ): Promise<Omit<PreviewAnyComponentData, 'doesScaling' | 'onlyOverview' | 'useNameParam'> | undefined> {\n // Prevent infinite loop that caused by the fact that the env of the aspect env or the env env is the same as the component\n // so we can't load it since during load we are trying to get env component and load it again\n if (\n component.id.toStringWithoutVersion() === 'teambit.harmony/aspect' ||\n component.id.toStringWithoutVersion() === 'teambit.envs/env'\n ) {\n return {\n strategyName: COMPONENT_PREVIEW_STRATEGY_NAME,\n splitComponentBundle: false,\n };\n }\n\n const env = this.envs.getEnv(component).env;\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const data = {\n strategyName: envPreviewConfig?.strategyName,\n splitComponentBundle: envPreviewConfig?.splitComponentBundle ?? false,\n };\n return data;\n }\n\n /**\n * calculate extra preview data for env components (on load)\n * @param envComponent\n * @returns\n */\n private async calculateDataForEnvComponent(envComponent: Component): Promise<PreviewEnvComponentData | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n\n const data = {\n // default to true if the env doesn't have a preview config\n isScaling: previewAspectConfig?.isScaling ?? true,\n supportsOnlyOverview: true,\n supportsUseNameParam: true,\n };\n return data;\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * This should be used only for calculating the value on load.\n * otherwise, use the isBundledWithEnv function\n * @param component\n * @returns\n */\n async calcIsBundledWithEnv(component: Component): Promise<boolean> {\n const envPreviewData = await this.calcPreviewDataFromEnv(component);\n return envPreviewData?.strategyName !== 'component';\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * @param component\n * @returns\n */\n async isBundledWithEnv(component: Component): Promise<boolean> {\n const data = await this.getPreviewData(component);\n // For components that tagged in the past we didn't store the data, so we calculate it the old way\n // We comparing the strategyName to undefined to cover a specific case when it doesn't exist at all.\n if (!data || data.strategyName === undefined) return this.isBundledWithEnvBackward(component);\n return data.strategyName === ENV_PREVIEW_STRATEGY_NAME;\n }\n\n /**\n * This is a legacy calculation for the isBundledWithEnv\n * This calc is based on the component artifacts which is very expensive operation as it requires to fetch and load the artifacts\n * See the new implementation in the isBundledWithEnv method\n * @param component\n * @returns\n */\n private async isBundledWithEnvBackward(component: Component): Promise<boolean> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n COMPONENT_STRATEGY_ARTIFACT_NAME\n );\n if (!artifacts || !artifacts.length) return true;\n\n return false;\n }\n\n // This used on component load to calc the final result of support is scaling for a given component\n // This calc based on the env, env data, env preview config and more\n // if you want to get the final result use the `doesScaling` method below\n // This should be used only for component load\n private async calcDoesScalingForComponent(component: Component): Promise<boolean> {\n const isBundledWithEnv = await this.calcIsBundledWithEnv(component);\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n // For envs that bundled with the env return true always\n if (isBundledWithEnv) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.isEnvSupportScaling(envComponent);\n }\n\n /**\n * can the current component preview scale in size for different preview sizes.\n * this calculation is based on the env of the component and if the env of the component support it.\n */\n async doesScaling(component: Component): Promise<boolean> {\n const inWorkspace = await this.workspace?.hasId(component.id);\n // Support case when we have the dev server for the env, in that case we calc the data of the env as we can't rely on the env data from the scope\n // since we bundle it for the dev server again\n if (inWorkspace) {\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = await this.calculateIsEnvSupportScaling(envComponent);\n return envSupportScaling ?? true;\n }\n const previewData = this.getPreviewData(component);\n if (!previewData) return false;\n // Get the does scaling (the new calculation) or the old calc used in isScaling (between versions (about) 848 and 860)\n if (previewData.doesScaling !== undefined) return previewData.doesScaling;\n // in case this component were tagged with versions between 848 and 860 we need to use the old calculation\n // together with the env calculation\n // In that case it means the component already tagged, so we take the env calc from the env data and not re-calc it\n if (previewData.isScaling) {\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = this.isEnvSupportScaling(envComponent);\n return !!envSupportScaling;\n }\n return false;\n }\n\n /**\n * Check if the current version of the env support scaling\n * @param envComponent\n * @returns\n */\n isEnvSupportScaling(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.isScaling;\n }\n\n async isSupportSkipIncludes(component: Component) {\n if (!this.config.onlyOverview) return false;\n\n const isCore = this.envs.isUsingCoreEnv(component);\n if (isCore) return false;\n\n const envComponent = await this.envs.getEnvComponent(component);\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.skipIncludes;\n }\n\n /**\n * check if the component preview should only include the overview (skipping rendering of the compostions and properties table)\n */\n async getOnlyOverview(component: Component): Promise<boolean> {\n if (!this.config.onlyOverview) return false;\n const previewData = this.getPreviewData(component);\n return previewData?.onlyOverview ?? false;\n }\n\n /**\n * check if the component preview should include the name query param\n */\n async getUseNameParam(component: Component): Promise<boolean> {\n const previewData = this.getPreviewData(component);\n return previewData?.useNameParam ?? false;\n }\n\n /**\n * This function is calculate the isScaling support flag for the component preview.\n * This is calculated only for the env component and not for the component itself.\n * It should be only used during the (env) component on load.\n * Once the component load, you should only use the `isEnvSupportScaling` to fetch it from the calculated data.\n * If you want to check if an env for a given component support scaling, use the `isScaling` function.\n * @param component\n * @returns\n */\n private async calculateIsEnvSupportScaling(envComponent: Component): Promise<boolean | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n // default to true if the env doesn't have a preview config\n return previewAspectConfig?.isScaling ?? true;\n }\n\n /**\n * Check if the component preview bundle contain the header inside of it (legacy)\n * today we are not including the header inside anymore\n * @param component\n * @returns\n */\n async isLegacyHeader(component: Component): Promise<boolean> {\n // these envs had header in their docs\n const ENV_WITH_LEGACY_DOCS = ['react', 'env', 'aspect', 'lit', 'html', 'node', 'mdx', 'react-native', 'readme'];\n\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n ENV_STRATEGY_ARTIFACT_NAME\n );\n const envType = this.envs.getEnvData(component).type;\n return !!artifacts && !!artifacts.length && ENV_WITH_LEGACY_DOCS.includes(envType || '');\n }\n\n /**\n * Getting the env template artifact\n * This should be called with the env itself or it will return undefined\n * If you want to get the env template from the env of the component,\n * use: getEnvTemplateFromComponentEnv below\n *\n * @param component\n * @returns\n */\n async getEnvTemplate(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n GENERATE_ENV_TEMPLATE_TASK_NAME\n );\n if (!artifacts || !artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * This is a special method to get a core env template\n * As the core envs doesn't exist in the scope we need to bring it from other place\n * We will bring it from the core env package files\n */\n private async getCoreEnvTemplate(envId: string): Promise<PreviewArtifact | undefined> {\n const coreEnvDir = getAspectDir(envId);\n // const finalDir = join(coreEnvDir, getEnvTemplateArtifactDirectory());\n const artifactDef = getEnvTemplateArtifactDef()[0];\n const artifactFactory = new ArtifactFactory();\n\n let rootDir = artifactFactory.getRootDir(coreEnvDir, artifactDef);\n if (!existsSync(rootDir)) {\n // fallback to the bvm folder\n const coreEnvDirFromBvm = getAspectDirFromBvm(envId);\n rootDir = artifactFactory.getRootDir(coreEnvDirFromBvm, artifactDef);\n }\n if (!existsSync(rootDir)) {\n return undefined;\n }\n const paths = artifactFactory.resolvePaths(rootDir, artifactDef);\n if (!paths || !paths.length) {\n return undefined;\n }\n const artifactFiles = new ArtifactFiles(paths);\n\n artifactFiles.populateVinylsFromPaths(rootDir);\n return new PreviewArtifact(artifactFiles.vinyls);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateFromComponentEnv(component: Component): Promise<PreviewArtifact | undefined> {\n const envId = this.envs.getEnvId(component);\n return this.getEnvTemplateByEnvId(envId);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateByEnvId(envId: string): Promise<PreviewArtifact | undefined> {\n // Special treatment for core envs\n if (this.aspectLoader.isCoreEnv(envId)) {\n return this.getCoreEnvTemplate(envId);\n }\n const host = this.componentAspect.getHost();\n const resolvedEnvId = await host.resolveComponentId(envId);\n const envComponent = await host.get(resolvedEnvId);\n if (!envComponent) {\n throw new BitError(`can't load env. env id is ${envId}`);\n }\n return this.getEnvTemplate(envComponent);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(\n prefix: string,\n moduleMap: ComponentMap<string[]>,\n mainModulesMap: MainModulesMap,\n dirName: string,\n isSplitComponentBundle: boolean\n ) {\n const contents = generateLink(prefix, moduleMap, mainModulesMap, isSplitComponentBundle);\n return this.writeLinkContents(contents, dirName, prefix);\n }\n\n writeLinkContents(contents: string, targetDir: string, prefix: string) {\n const hash = objectHash(contents);\n const targetPath = join(targetDir, `${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const defaultTemplatePath = await previewDef.renderTemplatePathByEnv?.(context.env);\n const visitedEnvs = new Set();\n const mainModulesMap: MainModulesMap = {\n // @ts-ignore\n default: defaultTemplatePath,\n [context.envDefinition.id]: defaultTemplatePath,\n };\n\n const map = await previewDef.getModuleMap(components);\n const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\n const withPathsP = map.asyncMap(async (files, component) => {\n const envDef = this.envs.getEnv(component);\n const environment = envDef.env;\n const envId = envDef.id;\n\n if (!mainModulesMap[envId] && !visitedEnvs.has(envId)) {\n const modulePath = await previewDef.renderTemplatePathByEnv?.(envDef.env);\n if (modulePath) {\n mainModulesMap[envId] = modulePath;\n }\n visitedEnvs.add(envId);\n }\n const compilerInstance = environment.getCompiler?.();\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getRuntimeModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n const withPaths = await withPathsP;\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, mainModulesMap, dirPath, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const [name, uiRoot] = this.getUi();\n const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n async resolveAspects(\n runtimeName?: string,\n componentIds?: ComponentID[],\n uiRoot?: UIRoot,\n opts?: ResolveAspectsOptions\n ): Promise<AspectDefinition[]> {\n const root = uiRoot || this.getUi()[1];\n runtimeName = runtimeName || MainRuntime.name;\n const resolvedAspects = await root.resolveAspects(runtimeName, componentIds, opts);\n return resolvedAspects;\n }\n\n private getUi() {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n return ui;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(\n aspects: AspectDefinition[],\n context: { components: Component[] },\n aspectsIdsToNotFilterOut: string[] = []\n ) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return (\n this.aspectLoader.isCoreAspect(aspect.getId) ||\n allAspectsToInclude.includes(aspect.getId) ||\n aspectsIdsToNotFilterOut.includes(aspect.getId)\n );\n });\n\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [\n new EnvBundlingStrategy(this, this.pkg, this.dependencyResolver),\n new ComponentBundlingStrategy(this, this.pkg, this.dependencyResolver),\n ];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n getEnvPreviewConfig(env?: PreviewEnv): EnvPreviewConfig {\n const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};\n\n return config;\n }\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(env?: PreviewEnv): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const strategyFromEnv = envPreviewConfig?.strategyName;\n const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n WatcherAspect,\n ScopeAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n onlyOverview: false,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n watcher,\n scope,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain,\n WatcherMain,\n ScopeMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n // app.registerApp(new PreviewApp());\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver\n );\n\n if (workspace)\n uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger, watcher));\n\n componentExtension.registerRoute([\n new PreviewRoute(preview, logger),\n new ComponentPreviewRoute(preview, logger),\n // @ts-ignore\n new EnvTemplateRoute(preview, logger),\n new PreviewAssetsRoute(preview, logger),\n ]);\n\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled)\n builder.registerBuildTasks([\n new EnvPreviewTemplateTask(preview, envs, aspectLoader, dependencyResolver, logger),\n new PreviewTask(bundler, preview, dependencyResolver, logger),\n ]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentLoad(async (component) => {\n return preview.calcPreviewData(component);\n });\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n if (scope) {\n scope.registerOnCompAspectReCalc((c) => preview.calcPreviewData(c));\n }\n\n envs.registerService(new PreviewService());\n\n graphql.register(previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"],"mappings":"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"}
|
|
@@ -159,11 +159,9 @@ class PreviewPreview {
|
|
|
159
159
|
const inclPreviewModule = await this.getPreviewModule(inclPreviewName, componentId);
|
|
160
160
|
return includedPreview.selectPreviewModel?.(componentId.fullName, inclPreviewModule);
|
|
161
161
|
}));
|
|
162
|
-
|
|
163
|
-
// remove `includes` (including compositions) when skipIncludes = true.
|
|
164
162
|
const query = this.getQuery();
|
|
165
|
-
const
|
|
166
|
-
const includes =
|
|
163
|
+
const onlyOverview = this.getParam(query, 'onlyOverview');
|
|
164
|
+
const includes = onlyOverview === 'true' ? [] : includesAll.filter(module => !!module);
|
|
167
165
|
// during build / tag, the component is isolated, so all aspects are relevant, and do not require filtering
|
|
168
166
|
const componentAspects = this.isDev ? await this.getComponentAspects(componentId.toString()) : undefined;
|
|
169
167
|
const previewModule = await this.getPreviewModule(name, componentId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pubsub","data","_interopRequireDefault","require","_harmony","_componentId","_crossFetch","_memoizee","_lodash","_exceptions","_preview","_events","_renderingContext","_fetchComponentAspects","_previewModules","_htmlUtils","_sizeEvent","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","isReady","Promise","resolve","_setupPromise","PREVIEW_MODULES","onSet","add","rootExt","window","document","body","style","width","previewName","componentId","envId","getLocation","name","getDefault","isDev","preview","getPreview","PreviewNotFound","includesAll","all","include","map","inclPreviewName","includedPreview","undefined","inclPreviewModule","getPreviewModule","selectPreviewModel","fullName","query","getQuery","skipIncludes","getParam","includes","filter","module","componentAspects","getComponentAspects","toString","previewModule","render","getRenderingContext","reportSize","setViewport","memoize","fetchComponentAspects","max","maxAge","registerClickPubSub","addEventListener","timestamp","Date","now","clickEvent","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","has","includedReady","every","included","viewPort","maxWidth","parent","sendPubsubEvent","SizeEvent","offsetWidth","height","offsetHeight","debounce","counter","interval","setInterval","clearInterval","compShortId","relevantModel","get","Error","componentMap","componentPreviews","fetchComponentPreview","loadComponentPreviews","component","metadata","modulesMap","componentMapMetadata","previewFile","allFiles","fetchComponentPreviewFiles","file","endsWith","addComponentFileElement","loadPreviewScript","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","catch","err","previewAssetsRoute","stringId","url","res","crossFetch","status","parsed","json","isBundledWithEnv","files","length","previewRoute","src","loadScript","href","loadLink","globalId","toStringWithoutVersion","componentPreview","registerPreview","register","aspectsFilter","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","param","params","URLSearchParams","withoutHash","location","hash","substring","after","split","before","ComponentID","tryFromString","provider","config","exports","PreviewRuntime","PubsubAspect","Slot","withType","addRuntime"],"sources":["preview.preview.runtime.tsx"],"sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\nimport memoize from 'memoizee';\nimport { debounce } from 'lodash';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { ModuleFile, PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\nimport { fetchComponentAspects } from './gql/fetch-component-aspects';\nimport { PREVIEW_MODULES } from './preview-modules';\nimport { loadScript, loadLink } from './html-utils';\nimport { SizeEvent } from './size-event';\n\n// forward linkModules() for generate-link.ts\nexport { linkModules } from './preview-modules';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nexport type RenderingContextOptions = { aspectsFilter?: string[] };\nexport type RenderingContextProvider = (options: RenderingContextOptions) => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n private isDev = false;\n\n private isReady() {\n const { previewName } = this.getLocation();\n const name = previewName || this.getDefault();\n\n if (!PREVIEW_MODULES.has(name)) return false;\n const preview = this.getPreview(name);\n if (!preview) return false;\n const includedReady = preview.include?.every((included) => PREVIEW_MODULES.has(included)) ?? true;\n if (!includedReady) return false;\n\n return true;\n }\n\n private _setupPromise?: Promise<void>;\n setup = () => {\n if (this.isReady()) return Promise.resolve();\n\n this._setupPromise ??= new Promise((resolve) => {\n PREVIEW_MODULES.onSet.add(() => {\n if (this.isReady()) resolve();\n });\n });\n\n return this._setupPromise;\n };\n\n /**\n * render the preview.\n */\n render = async (rootExt?: string) => {\n // fit content always.\n window.document.body.style.width = 'fit-content';\n\n const { previewName, componentId, envId } = this.getLocation();\n const name = previewName || this.getDefault();\n if (rootExt) this.isDev = rootExt === 'teambit.workspace/workspace';\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n\n const includesAll = await Promise.all(\n (preview.include || []).map(async (inclPreviewName) => {\n const includedPreview = this.getPreview(inclPreviewName);\n if (!includedPreview) return undefined;\n\n const inclPreviewModule = await this.getPreviewModule(inclPreviewName, componentId);\n return includedPreview.selectPreviewModel?.(componentId.fullName, inclPreviewModule);\n })\n );\n\n // remove `includes` (including compositions) when skipIncludes = true.\n const query = this.getQuery();\n const skipIncludes = this.getParam(query, 'skipIncludes');\n\n const includes = skipIncludes === 'true' ? [] : includesAll.filter((module) => !!module);\n // during build / tag, the component is isolated, so all aspects are relevant, and do not require filtering\n const componentAspects = this.isDev ? await this.getComponentAspects(componentId.toString()) : undefined;\n const previewModule = await this.getPreviewModule(name, componentId);\n const render = preview.render(\n componentId,\n envId || '',\n previewModule,\n includes,\n this.getRenderingContext(componentAspects)\n );\n\n this.reportSize();\n this.setViewport();\n return render;\n };\n\n setViewport() {\n const query = this.getQuery();\n const viewPort = this.getParam(query, 'viewport');\n if (!viewPort) {\n window.document.body.style.width = '100%';\n return;\n }\n\n window.document.body.style.maxWidth = `${viewPort}px`;\n }\n\n reportSize() {\n if (!window?.parent || !window?.document) return;\n // TODO: discuss with gilad for a better way to resolve page loaded here.\n\n const sendPubsubEvent = () => {\n this.pubsub.pub(\n PreviewAspect.id,\n new SizeEvent({\n width: window.document.body.offsetWidth,\n height: window.document.body.offsetHeight,\n })\n );\n };\n\n window.document.body.addEventListener('resize', debounce(sendPubsubEvent, 300));\n\n let counter = 0;\n const interval = setInterval(() => {\n // TODO: think\n counter += 1;\n if (counter > 10) {\n clearInterval(interval);\n return;\n }\n this.pubsub.pub(\n PreviewAspect.id,\n new SizeEvent({\n width: window.document.body.offsetWidth,\n height: window.document.body.offsetHeight,\n })\n );\n }, 200);\n }\n\n async getPreviewModule(previewName: string, id: ComponentID): Promise<PreviewModule> {\n const compShortId = id.fullName;\n\n const relevantModel = PREVIEW_MODULES.get(previewName);\n if (!relevantModel) throw new Error(`[preview.preview] missing preview \"${previewName}\"`);\n if (relevantModel.componentMap[compShortId]) return relevantModel;\n\n const componentPreviews = await this.fetchComponentPreview(id, previewName);\n PREVIEW_MODULES.loadComponentPreviews(compShortId, componentPreviews);\n\n const component = componentPreviews[previewName];\n const metadata = componentPreviews[`${previewName}_metadata`];\n\n return {\n modulesMap: relevantModel.modulesMap,\n componentMap: {\n [id.fullName]: component,\n },\n componentMapMetadata: {\n [id.fullName]: metadata,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string): Promise<Record<string, ModuleFile[]>> {\n let previewFile: string | undefined;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n // It's a component bundled with the env\n if (allFiles === null) return {};\n\n await Promise.all(\n allFiles.map((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n return undefined;\n }\n\n return this.addComponentFileElement(id, file);\n })\n );\n\n if (!previewFile) return {};\n return this.loadPreviewScript(id, name, previewFile);\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n\n // TODO - should we load assets other than .css / .js?\n // if (previewBundleFileName.endsWith('.css')) {\n this.addComponentFileLinkElement(id, previewBundleFileName).catch((err) => {\n throw new Error(\n `[preview.preview] failed loading asset \"${previewBundleFileName}\". Error - \"${err?.toString()}\"`\n );\n });\n\n // do NOT await non js assets, as they might never load (like images), and not critical for rendering.\n return undefined;\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n // This is component bundled with the env, no reason to bring the files, as they will be the files of the env\n if (parsed.isBundledWithEnv) {\n return null;\n }\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const stringId = id.toString();\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadScript({ src });\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadLink({ href });\n }\n\n private async loadPreviewScript(id: ComponentID, previewName: string, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${id.toString()}/${previewRoute}/${previewBundleFileName}`;\n await loadScript({ src });\n\n // TODO - replace with jsonp\n const globalId = `${id.toStringWithoutVersion()}-preview`;\n const componentPreview = window[globalId];\n if (!componentPreview) throw new PreviewNotFound(previewName);\n\n return componentPreview as Record<string, ModuleFile[]>;\n }\n\n private getComponentAspects = memoize(fetchComponentAspects, {\n max: 100,\n maxAge: 12 * 60 * 60 * 1000,\n });\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext(aspectsFilter?: string[]) {\n return new RenderingContext(this.renderingContextSlot, { aspectsFilter });\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n getQuery() {\n const withoutHash = window.location.hash.substring(1);\n const [, after] = withoutHash.split('?');\n return after;\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n envId: this.getParam(after, 'env'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_pubsub","data","_interopRequireDefault","require","_harmony","_componentId","_crossFetch","_memoizee","_lodash","_exceptions","_preview","_events","_renderingContext","_fetchComponentAspects","_previewModules","_htmlUtils","_sizeEvent","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","isReady","Promise","resolve","_setupPromise","PREVIEW_MODULES","onSet","add","rootExt","window","document","body","style","width","previewName","componentId","envId","getLocation","name","getDefault","isDev","preview","getPreview","PreviewNotFound","includesAll","all","include","map","inclPreviewName","includedPreview","undefined","inclPreviewModule","getPreviewModule","selectPreviewModel","fullName","query","getQuery","onlyOverview","getParam","includes","filter","module","componentAspects","getComponentAspects","toString","previewModule","render","getRenderingContext","reportSize","setViewport","memoize","fetchComponentAspects","max","maxAge","registerClickPubSub","addEventListener","timestamp","Date","now","clickEvent","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","has","includedReady","every","included","viewPort","maxWidth","parent","sendPubsubEvent","SizeEvent","offsetWidth","height","offsetHeight","debounce","counter","interval","setInterval","clearInterval","compShortId","relevantModel","get","Error","componentMap","componentPreviews","fetchComponentPreview","loadComponentPreviews","component","metadata","modulesMap","componentMapMetadata","previewFile","allFiles","fetchComponentPreviewFiles","file","endsWith","addComponentFileElement","loadPreviewScript","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","catch","err","previewAssetsRoute","stringId","url","res","crossFetch","status","parsed","json","isBundledWithEnv","files","length","previewRoute","src","loadScript","href","loadLink","globalId","toStringWithoutVersion","componentPreview","registerPreview","register","aspectsFilter","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","param","params","URLSearchParams","withoutHash","location","hash","substring","after","split","before","ComponentID","tryFromString","provider","config","exports","PreviewRuntime","PubsubAspect","Slot","withType","addRuntime"],"sources":["preview.preview.runtime.tsx"],"sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\nimport memoize from 'memoizee';\nimport { debounce } from 'lodash';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { ModuleFile, PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\nimport { fetchComponentAspects } from './gql/fetch-component-aspects';\nimport { PREVIEW_MODULES } from './preview-modules';\nimport { loadScript, loadLink } from './html-utils';\nimport { SizeEvent } from './size-event';\n\n// forward linkModules() for generate-link.ts\nexport { linkModules } from './preview-modules';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nexport type RenderingContextOptions = { aspectsFilter?: string[] };\nexport type RenderingContextProvider = (options: RenderingContextOptions) => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n private isDev = false;\n\n private isReady() {\n const { previewName } = this.getLocation();\n const name = previewName || this.getDefault();\n\n if (!PREVIEW_MODULES.has(name)) return false;\n const preview = this.getPreview(name);\n if (!preview) return false;\n const includedReady = preview.include?.every((included) => PREVIEW_MODULES.has(included)) ?? true;\n if (!includedReady) return false;\n\n return true;\n }\n\n private _setupPromise?: Promise<void>;\n setup = () => {\n if (this.isReady()) return Promise.resolve();\n\n this._setupPromise ??= new Promise((resolve) => {\n PREVIEW_MODULES.onSet.add(() => {\n if (this.isReady()) resolve();\n });\n });\n\n return this._setupPromise;\n };\n\n /**\n * render the preview.\n */\n render = async (rootExt?: string) => {\n // fit content always.\n window.document.body.style.width = 'fit-content';\n\n const { previewName, componentId, envId } = this.getLocation();\n const name = previewName || this.getDefault();\n if (rootExt) this.isDev = rootExt === 'teambit.workspace/workspace';\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n\n const includesAll = await Promise.all(\n (preview.include || []).map(async (inclPreviewName) => {\n const includedPreview = this.getPreview(inclPreviewName);\n if (!includedPreview) return undefined;\n\n const inclPreviewModule = await this.getPreviewModule(inclPreviewName, componentId);\n return includedPreview.selectPreviewModel?.(componentId.fullName, inclPreviewModule);\n })\n );\n\n const query = this.getQuery();\n const onlyOverview = this.getParam(query, 'onlyOverview');\n\n const includes = onlyOverview === 'true' ? [] : includesAll.filter((module) => !!module);\n // during build / tag, the component is isolated, so all aspects are relevant, and do not require filtering\n const componentAspects = this.isDev ? await this.getComponentAspects(componentId.toString()) : undefined;\n const previewModule = await this.getPreviewModule(name, componentId);\n const render = preview.render(\n componentId,\n envId || '',\n previewModule,\n includes,\n this.getRenderingContext(componentAspects)\n );\n\n this.reportSize();\n this.setViewport();\n return render;\n };\n\n setViewport() {\n const query = this.getQuery();\n const viewPort = this.getParam(query, 'viewport');\n if (!viewPort) {\n window.document.body.style.width = '100%';\n return;\n }\n\n window.document.body.style.maxWidth = `${viewPort}px`;\n }\n\n reportSize() {\n if (!window?.parent || !window?.document) return;\n // TODO: discuss with gilad for a better way to resolve page loaded here.\n\n const sendPubsubEvent = () => {\n this.pubsub.pub(\n PreviewAspect.id,\n new SizeEvent({\n width: window.document.body.offsetWidth,\n height: window.document.body.offsetHeight,\n })\n );\n };\n\n window.document.body.addEventListener('resize', debounce(sendPubsubEvent, 300));\n\n let counter = 0;\n const interval = setInterval(() => {\n // TODO: think\n counter += 1;\n if (counter > 10) {\n clearInterval(interval);\n return;\n }\n this.pubsub.pub(\n PreviewAspect.id,\n new SizeEvent({\n width: window.document.body.offsetWidth,\n height: window.document.body.offsetHeight,\n })\n );\n }, 200);\n }\n\n async getPreviewModule(previewName: string, id: ComponentID): Promise<PreviewModule> {\n const compShortId = id.fullName;\n\n const relevantModel = PREVIEW_MODULES.get(previewName);\n if (!relevantModel) throw new Error(`[preview.preview] missing preview \"${previewName}\"`);\n if (relevantModel.componentMap[compShortId]) return relevantModel;\n\n const componentPreviews = await this.fetchComponentPreview(id, previewName);\n PREVIEW_MODULES.loadComponentPreviews(compShortId, componentPreviews);\n\n const component = componentPreviews[previewName];\n const metadata = componentPreviews[`${previewName}_metadata`];\n\n return {\n modulesMap: relevantModel.modulesMap,\n componentMap: {\n [id.fullName]: component,\n },\n componentMapMetadata: {\n [id.fullName]: metadata,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string): Promise<Record<string, ModuleFile[]>> {\n let previewFile: string | undefined;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n // It's a component bundled with the env\n if (allFiles === null) return {};\n\n await Promise.all(\n allFiles.map((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n return undefined;\n }\n\n return this.addComponentFileElement(id, file);\n })\n );\n\n if (!previewFile) return {};\n return this.loadPreviewScript(id, name, previewFile);\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n\n // TODO - should we load assets other than .css / .js?\n // if (previewBundleFileName.endsWith('.css')) {\n this.addComponentFileLinkElement(id, previewBundleFileName).catch((err) => {\n throw new Error(\n `[preview.preview] failed loading asset \"${previewBundleFileName}\". Error - \"${err?.toString()}\"`\n );\n });\n\n // do NOT await non js assets, as they might never load (like images), and not critical for rendering.\n return undefined;\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n // This is component bundled with the env, no reason to bring the files, as they will be the files of the env\n if (parsed.isBundledWithEnv) {\n return null;\n }\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const stringId = id.toString();\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadScript({ src });\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadLink({ href });\n }\n\n private async loadPreviewScript(id: ComponentID, previewName: string, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${id.toString()}/${previewRoute}/${previewBundleFileName}`;\n await loadScript({ src });\n\n // TODO - replace with jsonp\n const globalId = `${id.toStringWithoutVersion()}-preview`;\n const componentPreview = window[globalId];\n if (!componentPreview) throw new PreviewNotFound(previewName);\n\n return componentPreview as Record<string, ModuleFile[]>;\n }\n\n private getComponentAspects = memoize(fetchComponentAspects, {\n max: 100,\n maxAge: 12 * 60 * 60 * 1000,\n });\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext(aspectsFilter?: string[]) {\n return new RenderingContext(this.renderingContextSlot, { aspectsFilter });\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n getQuery() {\n const withoutHash = window.location.hash.substring(1);\n const [, after] = withoutHash.split('?');\n return after;\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n envId: this.getParam(after, 'env'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"],"mappings":";;;;;;;;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,SAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,aAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,YAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,YAAA;EAAA,MAAAL,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,UAAA;EAAA,MAAAN,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAI,SAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,QAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,YAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,WAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAS,SAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,QAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,QAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,OAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAW,kBAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,iBAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,uBAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,sBAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,gBAAA;EAAA,MAAAb,IAAA,GAAAE,OAAA;EAAAW,eAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,WAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,UAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,WAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,UAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyC,SAAAC,uBAAAe,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA,KAEzC;AASO,MAAMW,cAAc,CAAC;EAC1BC,WAAWA;EACT;AACJ;AACA;EACYC,MAAqB;EAE7B;AACJ;AACA;EACYC,WAAwB,EAExBC,oBAA0C,EAClD;IAAA,KARQF,MAAqB,GAArBA,MAAqB;IAAA,KAKrBC,WAAwB,GAAxBA,WAAwB;IAAA,KAExBC,oBAA0C,GAA1CA,oBAA0C;IAAAxB,eAAA,gBAapC,KAAK;IAAAA,eAAA;IAAAA,eAAA,gBAgBb,MAAM;MACZ,IAAI,IAAI,CAACyB,OAAO,CAAC,CAAC,EAAE,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;MAE5C,IAAI,CAACC,aAAa,KAAK,IAAIF,OAAO,CAAEC,OAAO,IAAK;QAC9CE,iCAAe,CAACC,KAAK,CAACC,GAAG,CAAC,MAAM;UAC9B,IAAI,IAAI,CAACN,OAAO,CAAC,CAAC,EAAEE,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF,OAAO,IAAI,CAACC,aAAa;IAC3B,CAAC;IAED;AACF;AACA;IAFE5B,eAAA,iBAGS,MAAOgC,OAAgB,IAAK;MACnC;MACAC,MAAM,CAACC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,KAAK,GAAG,aAAa;MAEhD,MAAM;QAAEC,WAAW;QAAEC,WAAW;QAAEC;MAAM,CAAC,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MAC9D,MAAMC,IAAI,GAAGJ,WAAW,IAAI,IAAI,CAACK,UAAU,CAAC,CAAC;MAC7C,IAAIX,OAAO,EAAE,IAAI,CAACY,KAAK,GAAGZ,OAAO,KAAK,6BAA6B;MAEnE,MAAMa,OAAO,GAAG,IAAI,CAACC,UAAU,CAACJ,IAAI,CAAC;MACrC,IAAI,CAACG,OAAO,IAAI,CAACN,WAAW,EAAE;QAC5B,MAAM,KAAIQ,6BAAe,EAACT,WAAW,CAAC;MACxC;MAEA,MAAMU,WAAW,GAAG,MAAMtB,OAAO,CAACuB,GAAG,CACnC,CAACJ,OAAO,CAACK,OAAO,IAAI,EAAE,EAAEC,GAAG,CAAC,MAAOC,eAAe,IAAK;QACrD,MAAMC,eAAe,GAAG,IAAI,CAACP,UAAU,CAACM,eAAe,CAAC;QACxD,IAAI,CAACC,eAAe,EAAE,OAAOC,SAAS;QAEtC,MAAMC,iBAAiB,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACJ,eAAe,EAAEb,WAAW,CAAC;QACnF,OAAOc,eAAe,CAACI,kBAAkB,GAAGlB,WAAW,CAACmB,QAAQ,EAAEH,iBAAiB,CAAC;MACtF,CAAC,CACH,CAAC;MAED,MAAMI,KAAK,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;MAC7B,MAAMC,YAAY,GAAG,IAAI,CAACC,QAAQ,CAACH,KAAK,EAAE,cAAc,CAAC;MAEzD,MAAMI,QAAQ,GAAGF,YAAY,KAAK,MAAM,GAAG,EAAE,GAAGb,WAAW,CAACgB,MAAM,CAAEC,MAAM,IAAK,CAAC,CAACA,MAAM,CAAC;MACxF;MACA,MAAMC,gBAAgB,GAAG,IAAI,CAACtB,KAAK,GAAG,MAAM,IAAI,CAACuB,mBAAmB,CAAC5B,WAAW,CAAC6B,QAAQ,CAAC,CAAC,CAAC,GAAGd,SAAS;MACxG,MAAMe,aAAa,GAAG,MAAM,IAAI,CAACb,gBAAgB,CAACd,IAAI,EAAEH,WAAW,CAAC;MACpE,MAAM+B,MAAM,GAAGzB,OAAO,CAACyB,MAAM,CAC3B/B,WAAW,EACXC,KAAK,IAAI,EAAE,EACX6B,aAAa,EACbN,QAAQ,EACR,IAAI,CAACQ,mBAAmB,CAACL,gBAAgB,CAC3C,CAAC;MAED,IAAI,CAACM,UAAU,CAAC,CAAC;MACjB,IAAI,CAACC,WAAW,CAAC,CAAC;MAClB,OAAOH,MAAM;IACf,CAAC;IAAAtE,eAAA,8BA6J6B,IAAA0E,mBAAO,EAACC,8CAAqB,EAAE;MAC3DC,GAAG,EAAE,GAAG;MACRC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzB,CAAC,CAAC;IAnPA,IAAI,CAACC,mBAAmB,CAAC,CAAC;EAC5B;EAEQA,mBAAmBA,CAAA,EAAG;IAC5B7C,MAAM,CAAC8C,gBAAgB,CAAC,OAAO,EAAGjE,CAAC,IAAK;MACtC,MAAMkE,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;MAC5B,MAAMC,UAAU,GAAG/E,MAAM,CAACgF,MAAM,CAAC,CAAC,CAAC,EAAEtE,CAAC,CAAC;MACvC,IAAI,CAACQ,MAAM,CAAC+D,GAAG,CAACC,wBAAa,CAACC,EAAE,EAAE,KAAIC,kCAAwB,EAACR,SAAS,EAAEG,UAAU,CAAC,CAAC;IACxF,CAAC,CAAC;EACJ;EAIQ1D,OAAOA,CAAA,EAAG;IAChB,MAAM;MAAEa;IAAY,CAAC,GAAG,IAAI,CAACG,WAAW,CAAC,CAAC;IAC1C,MAAMC,IAAI,GAAGJ,WAAW,IAAI,IAAI,CAACK,UAAU,CAAC,CAAC;IAE7C,IAAI,CAACd,iCAAe,CAAC4D,GAAG,CAAC/C,IAAI,CAAC,EAAE,OAAO,KAAK;IAC5C,MAAMG,OAAO,GAAG,IAAI,CAACC,UAAU,CAACJ,IAAI,CAAC;IACrC,IAAI,CAACG,OAAO,EAAE,OAAO,KAAK;IAC1B,MAAM6C,aAAa,GAAG7C,OAAO,CAACK,OAAO,EAAEyC,KAAK,CAAEC,QAAQ,IAAK/D,iCAAe,CAAC4D,GAAG,CAACG,QAAQ,CAAC,CAAC,IAAI,IAAI;IACjG,IAAI,CAACF,aAAa,EAAE,OAAO,KAAK;IAEhC,OAAO,IAAI;EACb;EA6DAjB,WAAWA,CAAA,EAAG;IACZ,MAAMd,KAAK,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;IAC7B,MAAMiC,QAAQ,GAAG,IAAI,CAAC/B,QAAQ,CAACH,KAAK,EAAE,UAAU,CAAC;IACjD,IAAI,CAACkC,QAAQ,EAAE;MACb5D,MAAM,CAACC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,KAAK,GAAG,MAAM;MACzC;IACF;IAEAJ,MAAM,CAACC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC0D,QAAQ,GAAI,GAAED,QAAS,IAAG;EACvD;EAEArB,UAAUA,CAAA,EAAG;IACX,IAAI,CAACvC,MAAM,EAAE8D,MAAM,IAAI,CAAC9D,MAAM,EAAEC,QAAQ,EAAE;IAC1C;;IAEA,MAAM8D,eAAe,GAAGA,CAAA,KAAM;MAC5B,IAAI,CAAC1E,MAAM,CAAC+D,GAAG,CACbC,wBAAa,CAACC,EAAE,EAChB,KAAIU,sBAAS,EAAC;QACZ5D,KAAK,EAAEJ,MAAM,CAACC,QAAQ,CAACC,IAAI,CAAC+D,WAAW;QACvCC,MAAM,EAAElE,MAAM,CAACC,QAAQ,CAACC,IAAI,CAACiE;MAC/B,CAAC,CACH,CAAC;IACH,CAAC;IAEDnE,MAAM,CAACC,QAAQ,CAACC,IAAI,CAAC4C,gBAAgB,CAAC,QAAQ,EAAE,IAAAsB,kBAAQ,EAACL,eAAe,EAAE,GAAG,CAAC,CAAC;IAE/E,IAAIM,OAAO,GAAG,CAAC;IACf,MAAMC,QAAQ,GAAGC,WAAW,CAAC,MAAM;MACjC;MACAF,OAAO,IAAI,CAAC;MACZ,IAAIA,OAAO,GAAG,EAAE,EAAE;QAChBG,aAAa,CAACF,QAAQ,CAAC;QACvB;MACF;MACA,IAAI,CAACjF,MAAM,CAAC+D,GAAG,CACbC,wBAAa,CAACC,EAAE,EAChB,KAAIU,sBAAS,EAAC;QACZ5D,KAAK,EAAEJ,MAAM,CAACC,QAAQ,CAACC,IAAI,CAAC+D,WAAW;QACvCC,MAAM,EAAElE,MAAM,CAACC,QAAQ,CAACC,IAAI,CAACiE;MAC/B,CAAC,CACH,CAAC;IACH,CAAC,EAAE,GAAG,CAAC;EACT;EAEA,MAAM5C,gBAAgBA,CAAClB,WAAmB,EAAEiD,EAAe,EAA0B;IACnF,MAAMmB,WAAW,GAAGnB,EAAE,CAAC7B,QAAQ;IAE/B,MAAMiD,aAAa,GAAG9E,iCAAe,CAAC+E,GAAG,CAACtE,WAAW,CAAC;IACtD,IAAI,CAACqE,aAAa,EAAE,MAAM,IAAIE,KAAK,CAAE,sCAAqCvE,WAAY,GAAE,CAAC;IACzF,IAAIqE,aAAa,CAACG,YAAY,CAACJ,WAAW,CAAC,EAAE,OAAOC,aAAa;IAEjE,MAAMI,iBAAiB,GAAG,MAAM,IAAI,CAACC,qBAAqB,CAACzB,EAAE,EAAEjD,WAAW,CAAC;IAC3ET,iCAAe,CAACoF,qBAAqB,CAACP,WAAW,EAAEK,iBAAiB,CAAC;IAErE,MAAMG,SAAS,GAAGH,iBAAiB,CAACzE,WAAW,CAAC;IAChD,MAAM6E,QAAQ,GAAGJ,iBAAiB,CAAE,GAAEzE,WAAY,WAAU,CAAC;IAE7D,OAAO;MACL8E,UAAU,EAAET,aAAa,CAACS,UAAU;MACpCN,YAAY,EAAE;QACZ,CAACvB,EAAE,CAAC7B,QAAQ,GAAGwD;MACjB,CAAC;MACDG,oBAAoB,EAAE;QACpB,CAAC9B,EAAE,CAAC7B,QAAQ,GAAGyD;MACjB;IACF,CAAC;EACH;EAEA,MAAMH,qBAAqBA,CAACzB,EAAe,EAAE7C,IAAY,EAAyC;IAChG,IAAI4E,WAA+B;IACnC,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,0BAA0B,CAACjC,EAAE,EAAE7C,IAAI,CAAC;IAChE;IACA,IAAI6E,QAAQ,KAAK,IAAI,EAAE,OAAO,CAAC,CAAC;IAEhC,MAAM7F,OAAO,CAACuB,GAAG,CACfsE,QAAQ,CAACpE,GAAG,CAAEsE,IAAI,IAAK;MACrB;MACA,IAAIA,IAAI,CAACC,QAAQ,CAAC,aAAa,CAAC,EAAE;QAChCJ,WAAW,GAAGG,IAAI;QAClB,OAAOnE,SAAS;MAClB;MAEA,OAAO,IAAI,CAACqE,uBAAuB,CAACpC,EAAE,EAAEkC,IAAI,CAAC;IAC/C,CAAC,CACH,CAAC;IAED,IAAI,CAACH,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,IAAI,CAACM,iBAAiB,CAACrC,EAAE,EAAE7C,IAAI,EAAE4E,WAAW,CAAC;EACtD;EAEQK,uBAAuBA,CAACpC,EAAe,EAAEsC,qBAA6B,EAAE;IAC9E,IAAIA,qBAAqB,CAACH,QAAQ,CAAC,KAAK,CAAC,EAAE;MACzC,OAAO,IAAI,CAACI,6BAA6B,CAACvC,EAAE,EAAEsC,qBAAqB,CAAC;IACtE;;IAEA;IACA;IACA,IAAI,CAACE,2BAA2B,CAACxC,EAAE,EAAEsC,qBAAqB,CAAC,CAACG,KAAK,CAAEC,GAAG,IAAK;MACzE,MAAM,IAAIpB,KAAK,CACZ,2CAA0CgB,qBAAsB,eAAcI,GAAG,EAAE7D,QAAQ,CAAC,CAAE,GACjG,CAAC;IACH,CAAC,CAAC;;IAEF;IACA,OAAOd,SAAS;EAClB;EAEA,MAAckE,0BAA0BA,CAACjC,EAAe,EAAEjD,WAAmB,EAA4B;IACvG,MAAM4F,kBAAkB,GAAI,wBAAuB;IACnD,MAAMC,QAAQ,GAAG5C,EAAE,CAACnB,QAAQ,CAAC,CAAC;IAC9B,MAAMgE,GAAG,GAAI,QAAOD,QAAS,IAAGD,kBAAmB,EAAC;IAEpD,MAAMG,GAAG,GAAG,MAAM,IAAAC,qBAAU,EAACF,GAAG,CAAC;IACjC,IAAIC,GAAG,CAACE,MAAM,IAAI,GAAG,EAAE;MACrB,MAAM,KAAIxF,6BAAe,EAACT,WAAW,CAAC;IACxC;IACA,MAAMkG,MAAM,GAAG,MAAMH,GAAG,CAACI,IAAI,CAAC,CAAC;IAC/B;IACA,IAAID,MAAM,CAACE,gBAAgB,EAAE;MAC3B,OAAO,IAAI;IACb;IACA,IAAI,CAACF,MAAM,CAACG,KAAK,IAAI,CAACH,MAAM,CAACG,KAAK,CAACC,MAAM,EAAE;MACzC,MAAM,KAAI7F,6BAAe,EAACT,WAAW,CAAC;IACxC;IACA,OAAOkG,MAAM,CAACG,KAAK;EACrB;EAEQb,6BAA6BA,CAACvC,EAAe,EAAEsC,qBAA6B,EAAE;IACpF,MAAMgB,YAAY,GAAI,2BAA0B;IAChD,MAAMV,QAAQ,GAAG5C,EAAE,CAACnB,QAAQ,CAAC,CAAC;IAC9B,MAAM0E,GAAG,GAAI,QAAOX,QAAS,IAAGU,YAAa,IAAGhB,qBAAsB,EAAC;IACvE,OAAO,IAAAkB,uBAAU,EAAC;MAAED;IAAI,CAAC,CAAC;EAC5B;EAEQf,2BAA2BA,CAACxC,EAAe,EAAEsC,qBAA6B,EAAE;IAClF,MAAMM,QAAQ,GAAG5C,EAAE,CAACnB,QAAQ,CAAC,CAAC;IAC9B,MAAMyE,YAAY,GAAI,2BAA0B;IAChD,MAAMG,IAAI,GAAI,QAAOb,QAAS,IAAGU,YAAa,IAAGhB,qBAAsB,EAAC;IACxE,OAAO,IAAAoB,qBAAQ,EAAC;MAAED;IAAK,CAAC,CAAC;EAC3B;EAEA,MAAcpB,iBAAiBA,CAACrC,EAAe,EAAEjD,WAAmB,EAAEuF,qBAA6B,EAAE;IACnG,MAAMgB,YAAY,GAAI,2BAA0B;IAChD,MAAMC,GAAG,GAAI,QAAOvD,EAAE,CAACnB,QAAQ,CAAC,CAAE,IAAGyE,YAAa,IAAGhB,qBAAsB,EAAC;IAC5E,MAAM,IAAAkB,uBAAU,EAAC;MAAED;IAAI,CAAC,CAAC;;IAEzB;IACA,MAAMI,QAAQ,GAAI,GAAE3D,EAAE,CAAC4D,sBAAsB,CAAC,CAAE,UAAS;IACzD,MAAMC,gBAAgB,GAAGnH,MAAM,CAACiH,QAAQ,CAAC;IACzC,IAAI,CAACE,gBAAgB,EAAE,MAAM,KAAIrG,6BAAe,EAACT,WAAW,CAAC;IAE7D,OAAO8G,gBAAgB;EACzB;EAOA;AACF;AACA;EACEC,eAAeA,CAACxG,OAAoB,EAAE;IACpC,IAAI,CAACtB,WAAW,CAAC+H,QAAQ,CAACzG,OAAO,CAAC;IAClC,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACE0B,mBAAmBA,CAACgF,aAAwB,EAAE;IAC5C,OAAO,KAAIC,oCAAgB,EAAC,IAAI,CAAChI,oBAAoB,EAAE;MAAE+H;IAAc,CAAC,CAAC;EAC3E;;EAEA;AACF;AACA;AACA;EACEE,qBAAqBA,CAACC,aAAuC,EAAE;IAC7D,IAAI,CAAClI,oBAAoB,CAAC8H,QAAQ,CAACI,aAAa,CAAC;IACjD,OAAO,IAAI;EACb;EAEA/G,UAAUA,CAAA,EAAG;IACX,MAAMgH,QAAQ,GAAG,IAAI,CAACpI,WAAW,CAACqI,MAAM,CAAC,CAAC;IAC1C,MAAMC,UAAU,GAAGF,QAAQ,CAACG,IAAI,CAAEC,gBAAgB,IAAKA,gBAAgB,CAAChK,OAAO,CAAC;IAEhF,OAAO8J,UAAU,EAAEnH,IAAI,IAAIiH,QAAQ,CAAC,CAAC,CAAC,CAACjH,IAAI;EAC7C;EAEQI,UAAUA,CAACR,WAAmB,EAA2B;IAC/D,MAAMqH,QAAQ,GAAG,IAAI,CAACpI,WAAW,CAACqI,MAAM,CAAC,CAAC;IAC1C,MAAM/G,OAAO,GAAG8G,QAAQ,CAACG,IAAI,CAAEC,gBAAgB,IAAKA,gBAAgB,CAACrH,IAAI,KAAKJ,WAAW,CAAC;IAE1F,OAAOO,OAAO;EAChB;EAEAiB,QAAQA,CAACH,KAAa,EAAEqG,KAAa,EAAE;IACrC,MAAMC,MAAM,GAAG,IAAIC,eAAe,CAACvG,KAAK,CAAC;IACzC,OAAOsG,MAAM,CAACrD,GAAG,CAACoD,KAAK,CAAC;EAC1B;EAEApG,QAAQA,CAAA,EAAG;IACT,MAAMuG,WAAW,GAAGlI,MAAM,CAACmI,QAAQ,CAACC,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC;IACrD,MAAM,GAAGC,KAAK,CAAC,GAAGJ,WAAW,CAACK,KAAK,CAAC,GAAG,CAAC;IACxC,OAAOD,KAAK;EACd;EAEQ9H,WAAWA,CAAA,EAAG;IACpB,MAAM0H,WAAW,GAAGlI,MAAM,CAACmI,QAAQ,CAACC,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC;IACrD,MAAM,CAACG,MAAM,EAAEF,KAAK,CAAC,GAAGJ,WAAW,CAACK,KAAK,CAAC,GAAG,CAAC;IAE9C,OAAO;MACLlI,WAAW,EAAE,IAAI,CAACwB,QAAQ,CAACyG,KAAK,EAAE,SAAS,CAAC;MAC5C/H,KAAK,EAAE,IAAI,CAACsB,QAAQ,CAACyG,KAAK,EAAE,KAAK,CAAC;MAClChI,WAAW,EAAEmI,0BAAW,CAACC,aAAa,CAACF,MAAM;IAC/C,CAAC;EACH;EAQA,aAAaG,QAAQA,CACnB,CAACtJ,MAAM,CAAkB,EACzBuJ,MAAM,EACN,CAACtJ,WAAW,EAAEC,oBAAoB,CAAsC,EACxE;IACA,MAAMqB,OAAO,GAAG,IAAIzB,cAAc,CAACE,MAAM,EAAEC,WAAW,EAAEC,oBAAoB,CAAC;IAE7ES,MAAM,CAAC8C,gBAAgB,CAAC,YAAY,EAAE,MAAM;MAC1C;MACAlC,OAAO,CAACyB,MAAM,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAOzB,OAAO;EAChB;AACF;AAACiI,OAAA,CAAA1J,cAAA,GAAAA,cAAA;AAAApB,eAAA,CAnVYoB,cAAc,aA+TR2J,yBAAc;AAAA/K,eAAA,CA/TpBoB,cAAc,kBAiUH,CAAC4J,iBAAY,CAAC;AAAAhL,eAAA,CAjUzBoB,cAAc,WAmUV,CAAC6J,eAAI,CAACC,QAAQ,CAAc,CAAC,EAAED,eAAI,CAACC,QAAQ,CAA2B,CAAC,CAAC;AAkB1F5F,wBAAa,CAAC6F,UAAU,CAAC/J,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/preview",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.116",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/preview/preview",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.preview",
|
|
8
8
|
"name": "preview",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.116"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"mime": "2.5.2",
|
|
@@ -25,26 +25,26 @@
|
|
|
25
25
|
"@teambit/bit-error": "0.0.404",
|
|
26
26
|
"@teambit/express": "0.0.941",
|
|
27
27
|
"@teambit/logger": "0.0.935",
|
|
28
|
-
"@teambit/builder": "1.0.
|
|
29
|
-
"@teambit/bundler": "1.0.
|
|
30
|
-
"@teambit/component": "1.0.
|
|
28
|
+
"@teambit/builder": "1.0.116",
|
|
29
|
+
"@teambit/bundler": "1.0.116",
|
|
30
|
+
"@teambit/component": "1.0.116",
|
|
31
31
|
"@teambit/preview.ui.component-preview": "1.0.3",
|
|
32
|
-
"@teambit/aspect-loader": "1.0.
|
|
32
|
+
"@teambit/aspect-loader": "1.0.116",
|
|
33
33
|
"@teambit/cli": "0.0.842",
|
|
34
|
-
"@teambit/dependency-resolver": "1.0.
|
|
35
|
-
"@teambit/envs": "1.0.
|
|
34
|
+
"@teambit/dependency-resolver": "1.0.116",
|
|
35
|
+
"@teambit/envs": "1.0.116",
|
|
36
36
|
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.494",
|
|
37
|
-
"@teambit/graphql": "1.0.
|
|
38
|
-
"@teambit/pkg": "1.0.
|
|
39
|
-
"@teambit/pubsub": "1.0.
|
|
40
|
-
"@teambit/scope": "1.0.
|
|
41
|
-
"@teambit/ui": "1.0.
|
|
42
|
-
"@teambit/watcher": "1.0.
|
|
43
|
-
"@teambit/workspace": "1.0.
|
|
44
|
-
"@teambit/compiler": "1.0.
|
|
37
|
+
"@teambit/graphql": "1.0.116",
|
|
38
|
+
"@teambit/pkg": "1.0.116",
|
|
39
|
+
"@teambit/pubsub": "1.0.116",
|
|
40
|
+
"@teambit/scope": "1.0.116",
|
|
41
|
+
"@teambit/ui": "1.0.116",
|
|
42
|
+
"@teambit/watcher": "1.0.116",
|
|
43
|
+
"@teambit/workspace": "1.0.116",
|
|
44
|
+
"@teambit/compiler": "1.0.116",
|
|
45
45
|
"@teambit/preview.cli.preview-server-status": "0.0.504",
|
|
46
46
|
"@teambit/preview.cli.webpack-events-listener": "0.0.172",
|
|
47
|
-
"@teambit/isolator": "1.0.
|
|
47
|
+
"@teambit/isolator": "1.0.116"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/mime": "2.0.3",
|
package/preview.main.runtime.tsx
CHANGED
|
@@ -119,6 +119,16 @@ export type PreviewAnyComponentData = {
|
|
|
119
119
|
*/
|
|
120
120
|
splitComponentBundle?: boolean;
|
|
121
121
|
|
|
122
|
+
/**
|
|
123
|
+
* don't allow other aspects implementing a preview definition to be included in your preview.
|
|
124
|
+
*/
|
|
125
|
+
onlyOverview?: boolean;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* use name query params to select a specific composition to render.
|
|
129
|
+
*/
|
|
130
|
+
useNameParam?: boolean;
|
|
131
|
+
|
|
122
132
|
/**
|
|
123
133
|
* don't allow other aspects implementing a preview definition to be included in your preview.
|
|
124
134
|
*/
|
|
@@ -130,6 +140,8 @@ export type PreviewAnyComponentData = {
|
|
|
130
140
|
*/
|
|
131
141
|
export type PreviewEnvComponentData = {
|
|
132
142
|
isScaling?: boolean;
|
|
143
|
+
supportsOnlyOverview?: boolean;
|
|
144
|
+
supportsUseNameParam?: boolean;
|
|
133
145
|
};
|
|
134
146
|
|
|
135
147
|
export type PreviewConfig = {
|
|
@@ -141,6 +153,7 @@ export type PreviewConfig = {
|
|
|
141
153
|
* default - no limit.
|
|
142
154
|
*/
|
|
143
155
|
maxChunkSize?: number;
|
|
156
|
+
onlyOverview?: boolean;
|
|
144
157
|
};
|
|
145
158
|
|
|
146
159
|
export type EnvPreviewConfig = {
|
|
@@ -244,6 +257,42 @@ export class PreviewMain {
|
|
|
244
257
|
return previewData;
|
|
245
258
|
}
|
|
246
259
|
|
|
260
|
+
/**
|
|
261
|
+
* check if the current version of env component supports skipping other included previews
|
|
262
|
+
* @param envComponent
|
|
263
|
+
* @returns
|
|
264
|
+
*/
|
|
265
|
+
doesEnvIncludesOnlyOverview(envComponent: Component): boolean {
|
|
266
|
+
const previewData = this.getPreviewData(envComponent);
|
|
267
|
+
return !!previewData?.supportsOnlyOverview;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* check if the current version of env component supports name query param
|
|
272
|
+
* @param envComponent
|
|
273
|
+
* @returns
|
|
274
|
+
*/
|
|
275
|
+
doesEnvUseNameParam(envComponent: Component): boolean {
|
|
276
|
+
const previewData = this.getPreviewData(envComponent);
|
|
277
|
+
return !!previewData?.supportsUseNameParam;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
private async calculateIncludeOnlyOverview(component: Component): Promise<boolean> {
|
|
281
|
+
if (this.envs.isUsingCoreEnv(component)) {
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
const envComponent = await this.envs.getEnvComponent(component);
|
|
285
|
+
return this.doesEnvIncludesOnlyOverview(envComponent);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
private async calculateUseNameParam(component: Component): Promise<boolean> {
|
|
289
|
+
if (this.envs.isUsingCoreEnv(component)) {
|
|
290
|
+
return true;
|
|
291
|
+
}
|
|
292
|
+
const envComponent = await this.envs.getEnvComponent(component);
|
|
293
|
+
return this.doesEnvUseNameParam(envComponent);
|
|
294
|
+
}
|
|
295
|
+
|
|
247
296
|
/**
|
|
248
297
|
* Calculate preview data on component load
|
|
249
298
|
* @param component
|
|
@@ -253,8 +302,13 @@ export class PreviewMain {
|
|
|
253
302
|
const doesScaling = await this.calcDoesScalingForComponent(component);
|
|
254
303
|
const dataFromEnv = await this.calcPreviewDataFromEnv(component);
|
|
255
304
|
const envData = (await this.calculateDataForEnvComponent(component)) || {};
|
|
305
|
+
const onlyOverview = await this.calculateIncludeOnlyOverview(component);
|
|
306
|
+
const useNameParam = await this.calculateUseNameParam(component);
|
|
307
|
+
|
|
256
308
|
const data: PreviewComponentData = {
|
|
257
309
|
doesScaling,
|
|
310
|
+
onlyOverview,
|
|
311
|
+
useNameParam,
|
|
258
312
|
...dataFromEnv,
|
|
259
313
|
...envData,
|
|
260
314
|
};
|
|
@@ -268,7 +322,7 @@ export class PreviewMain {
|
|
|
268
322
|
*/
|
|
269
323
|
async calcPreviewDataFromEnv(
|
|
270
324
|
component: Component
|
|
271
|
-
): Promise<Omit<PreviewAnyComponentData, 'doesScaling'> | undefined> {
|
|
325
|
+
): Promise<Omit<PreviewAnyComponentData, 'doesScaling' | 'onlyOverview' | 'useNameParam'> | undefined> {
|
|
272
326
|
// Prevent infinite loop that caused by the fact that the env of the aspect env or the env env is the same as the component
|
|
273
327
|
// so we can't load it since during load we are trying to get env component and load it again
|
|
274
328
|
if (
|
|
@@ -297,15 +351,17 @@ export class PreviewMain {
|
|
|
297
351
|
*/
|
|
298
352
|
private async calculateDataForEnvComponent(envComponent: Component): Promise<PreviewEnvComponentData | undefined> {
|
|
299
353
|
const isEnv = this.envs.isEnv(envComponent);
|
|
354
|
+
|
|
300
355
|
// If the component is not an env, we don't want to store anything in the data
|
|
301
356
|
if (!isEnv) return undefined;
|
|
357
|
+
|
|
302
358
|
const previewAspectConfig = this.getPreviewAspectConfig(envComponent);
|
|
303
359
|
|
|
304
360
|
const data = {
|
|
305
361
|
// default to true if the env doesn't have a preview config
|
|
306
362
|
isScaling: previewAspectConfig?.isScaling ?? true,
|
|
307
|
-
|
|
308
|
-
|
|
363
|
+
supportsOnlyOverview: true,
|
|
364
|
+
supportsUseNameParam: true,
|
|
309
365
|
};
|
|
310
366
|
return data;
|
|
311
367
|
}
|
|
@@ -429,6 +485,8 @@ export class PreviewMain {
|
|
|
429
485
|
}
|
|
430
486
|
|
|
431
487
|
async isSupportSkipIncludes(component: Component) {
|
|
488
|
+
if (!this.config.onlyOverview) return false;
|
|
489
|
+
|
|
432
490
|
const isCore = this.envs.isUsingCoreEnv(component);
|
|
433
491
|
if (isCore) return false;
|
|
434
492
|
|
|
@@ -437,6 +495,23 @@ export class PreviewMain {
|
|
|
437
495
|
return !!previewData?.skipIncludes;
|
|
438
496
|
}
|
|
439
497
|
|
|
498
|
+
/**
|
|
499
|
+
* check if the component preview should only include the overview (skipping rendering of the compostions and properties table)
|
|
500
|
+
*/
|
|
501
|
+
async getOnlyOverview(component: Component): Promise<boolean> {
|
|
502
|
+
if (!this.config.onlyOverview) return false;
|
|
503
|
+
const previewData = this.getPreviewData(component);
|
|
504
|
+
return previewData?.onlyOverview ?? false;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* check if the component preview should include the name query param
|
|
509
|
+
*/
|
|
510
|
+
async getUseNameParam(component: Component): Promise<boolean> {
|
|
511
|
+
const previewData = this.getPreviewData(component);
|
|
512
|
+
return previewData?.useNameParam ?? false;
|
|
513
|
+
}
|
|
514
|
+
|
|
440
515
|
/**
|
|
441
516
|
* This function is calculate the isScaling support flag for the component preview.
|
|
442
517
|
* This is calculated only for the env component and not for the component itself.
|
|
@@ -815,6 +890,7 @@ export class PreviewMain {
|
|
|
815
890
|
|
|
816
891
|
static defaultConfig = {
|
|
817
892
|
disabled: false,
|
|
893
|
+
onlyOverview: false,
|
|
818
894
|
};
|
|
819
895
|
|
|
820
896
|
static async provider(
|
|
@@ -104,11 +104,10 @@ export class PreviewPreview {
|
|
|
104
104
|
})
|
|
105
105
|
);
|
|
106
106
|
|
|
107
|
-
// remove `includes` (including compositions) when skipIncludes = true.
|
|
108
107
|
const query = this.getQuery();
|
|
109
|
-
const
|
|
108
|
+
const onlyOverview = this.getParam(query, 'onlyOverview');
|
|
110
109
|
|
|
111
|
-
const includes =
|
|
110
|
+
const includes = onlyOverview === 'true' ? [] : includesAll.filter((module) => !!module);
|
|
112
111
|
// during build / tag, the component is isolated, so all aspects are relevant, and do not require filtering
|
|
113
112
|
const componentAspects = this.isDev ? await this.getComponentAspects(componentId.toString()) : undefined;
|
|
114
113
|
const previewModule = await this.getPreviewModule(name, componentId);
|