@teambit/preview 0.0.629 → 0.0.633

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.
@@ -1 +1 @@
1
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.629/dist/preview.docs.mdx')]
1
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.633/dist/preview.docs.mdx')]
@@ -255,7 +255,7 @@ class PreviewPreview {
255
255
  const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];
256
256
  if (!componentPreview) return reject(new (_exceptions().PreviewNotFound)(name));
257
257
  const targetPreview = componentPreview[name];
258
- if (!targetPreview) return reject(new (_exceptions().PreviewNotFound)(name));
258
+ if (!targetPreview) return resolve(undefined);
259
259
  return resolve(targetPreview);
260
260
  };
261
261
 
@@ -1 +1 @@
1
- {"version":3,"sources":["preview.preview.runtime.tsx"],"names":["PREVIEW_MODULES","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","previewName","componentId","getLocation","name","getDefault","preview","getPreview","PreviewNotFound","includesAll","Promise","all","include","map","prevName","includedPreview","undefined","selectPreviewModel","fullName","getPreviewModule","includes","filter","module","render","getRenderingContext","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","componentMap","component","fetchComponentPreview","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","forEach","file","endsWith","addComponentFileElement","resolve","reject","previewScriptElement","getPreviewScriptElement","document","head","appendChild","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","previewAssetsRoute","stringId","toString","url","res","status","parsed","json","files","length","script","createElement","setAttribute","previewRoute","src","link","href","onload","componentPreview","toStringWithoutVersion","targetPreview","registerPreview","register","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","get","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","linkModules","defaultModule","isSplitComponentBundle","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nconst PREVIEW_MODULES: Record<string, PreviewModule> = {};\n\nexport type RenderingContextProvider = () => { [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 /**\n * render the preview.\n */\n render = async () => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n const includesAll = await Promise.all(\n (preview.include || []).map(async (prevName) => {\n const includedPreview = this.getPreview(prevName);\n if (!includedPreview) return undefined;\n\n return includedPreview.selectPreviewModel?.(\n componentId.fullName,\n await this.getPreviewModule(prevName, componentId)\n );\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n\n return preview.render(\n componentId.fullName,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext()\n );\n };\n\n async getPreviewModule(name: string, id: ComponentID): Promise<PreviewModule> {\n if (PREVIEW_MODULES[name].componentMap[id.fullName]) return PREVIEW_MODULES[name];\n // if (!window[name]) throw new PreviewNotFound(name);\n // const isSplitComponentBundle = PREVIEW_MODULES[name].isSplitComponentBundle ?? false;\n // const component = window[id.toStringWithoutVersion()];\n const component: any = await this.fetchComponentPreview(id, name);\n\n return {\n mainModule: PREVIEW_MODULES[name].mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string) {\n let previewFile;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n allFiles.forEach((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n } else {\n this.addComponentFileElement(id, file);\n }\n });\n return new Promise((resolve, reject) => {\n const previewScriptElement = this.getPreviewScriptElement(id, name, previewFile, resolve, reject);\n document.head.appendChild(previewScriptElement);\n });\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n return this.addComponentFileLinkElement(id, previewBundleFileName);\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[]> {\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 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 script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src;\n document.head.appendChild(script);\n return script;\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const link = document.createElement('link');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n link.setAttribute('href', href);\n if (previewBundleFileName.endsWith('.css')) {\n link.setAttribute('rel', 'stylesheet');\n }\n document.head.appendChild(link);\n return link;\n }\n\n private getPreviewScriptElement(id: ComponentID, name: string, previewBundleFileName: string, resolve, reject) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n // const previewRoute = `~aspect/preview`;\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src; // generate path to remote scope. [scope url]/\n script.onload = () => {\n const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];\n if (!componentPreview) return reject(new PreviewNotFound(name));\n const targetPreview = componentPreview[name];\n if (!targetPreview) return reject(new PreviewNotFound(name));\n\n return resolve(targetPreview);\n };\n return script;\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() {\n return new RenderingContext(this.renderingContextSlot);\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 private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\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 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\nexport function linkModules(\n previewName: string,\n defaultModule: any,\n isSplitComponentBundle: boolean,\n componentMap: { [key: string]: any }\n) {\n PREVIEW_MODULES[previewName] = {\n mainModule: defaultModule,\n isSplitComponentBundle,\n componentMap,\n };\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"]}
1
+ {"version":3,"sources":["preview.preview.runtime.tsx"],"names":["PREVIEW_MODULES","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","previewName","componentId","getLocation","name","getDefault","preview","getPreview","PreviewNotFound","includesAll","Promise","all","include","map","prevName","includedPreview","undefined","selectPreviewModel","fullName","getPreviewModule","includes","filter","module","render","getRenderingContext","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","componentMap","component","fetchComponentPreview","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","forEach","file","endsWith","addComponentFileElement","resolve","reject","previewScriptElement","getPreviewScriptElement","document","head","appendChild","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","previewAssetsRoute","stringId","toString","url","res","status","parsed","json","files","length","script","createElement","setAttribute","previewRoute","src","link","href","onload","componentPreview","toStringWithoutVersion","targetPreview","registerPreview","register","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","get","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","linkModules","defaultModule","isSplitComponentBundle","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nconst PREVIEW_MODULES: Record<string, PreviewModule> = {};\n\nexport type RenderingContextProvider = () => { [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 /**\n * render the preview.\n */\n render = async () => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n const includesAll = await Promise.all(\n (preview.include || []).map(async (prevName) => {\n const includedPreview = this.getPreview(prevName);\n if (!includedPreview) return undefined;\n\n return includedPreview.selectPreviewModel?.(\n componentId.fullName,\n await this.getPreviewModule(prevName, componentId)\n );\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n\n return preview.render(\n componentId.fullName,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext()\n );\n };\n\n async getPreviewModule(name: string, id: ComponentID): Promise<PreviewModule> {\n if (PREVIEW_MODULES[name].componentMap[id.fullName]) return PREVIEW_MODULES[name];\n // if (!window[name]) throw new PreviewNotFound(name);\n // const isSplitComponentBundle = PREVIEW_MODULES[name].isSplitComponentBundle ?? false;\n // const component = window[id.toStringWithoutVersion()];\n const component: any = await this.fetchComponentPreview(id, name);\n\n return {\n mainModule: PREVIEW_MODULES[name].mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string) {\n let previewFile;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n allFiles.forEach((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n } else {\n this.addComponentFileElement(id, file);\n }\n });\n return new Promise((resolve, reject) => {\n const previewScriptElement = this.getPreviewScriptElement(id, name, previewFile, resolve, reject);\n document.head.appendChild(previewScriptElement);\n });\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n return this.addComponentFileLinkElement(id, previewBundleFileName);\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[]> {\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 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 script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src;\n document.head.appendChild(script);\n return script;\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const link = document.createElement('link');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n link.setAttribute('href', href);\n if (previewBundleFileName.endsWith('.css')) {\n link.setAttribute('rel', 'stylesheet');\n }\n document.head.appendChild(link);\n return link;\n }\n\n private getPreviewScriptElement(id: ComponentID, name: string, previewBundleFileName: string, resolve, reject) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n // const previewRoute = `~aspect/preview`;\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src; // generate path to remote scope. [scope url]/\n script.onload = () => {\n const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];\n if (!componentPreview) return reject(new PreviewNotFound(name));\n const targetPreview = componentPreview[name];\n if (!targetPreview) return resolve(undefined);\n\n return resolve(targetPreview);\n };\n return script;\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() {\n return new RenderingContext(this.renderingContextSlot);\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 private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\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 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\nexport function linkModules(\n previewName: string,\n defaultModule: any,\n isSplitComponentBundle: boolean,\n componentMap: { [key: string]: any }\n) {\n PREVIEW_MODULES[previewName] = {\n mainModule: defaultModule,\n isSplitComponentBundle,\n componentMap,\n };\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/preview",
3
- "version": "0.0.629",
3
+ "version": "0.0.633",
4
4
  "homepage": "https://bit.dev/teambit/preview/preview",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.preview",
8
8
  "name": "preview",
9
- "version": "0.0.629"
9
+ "version": "0.0.633"
10
10
  },
11
11
  "dependencies": {
12
12
  "mime": "2.5.2",
@@ -18,26 +18,26 @@
18
18
  "cross-fetch": "3.0.6",
19
19
  "@babel/runtime": "7.12.18",
20
20
  "core-js": "^3.0.0",
21
- "@teambit/express": "0.0.526",
22
- "@teambit/logger": "0.0.522",
21
+ "@teambit/express": "0.0.528",
22
+ "@teambit/logger": "0.0.524",
23
23
  "@teambit/ui-foundation.ui.pages.static-error": "0.0.70",
24
- "@teambit/builder": "0.0.629",
25
- "@teambit/bundler": "0.0.629",
26
- "@teambit/component": "0.0.629",
27
- "@teambit/envs": "0.0.629",
28
- "@teambit/isolator": "0.0.629",
24
+ "@teambit/builder": "0.0.633",
25
+ "@teambit/bundler": "0.0.633",
26
+ "@teambit/component": "0.0.633",
27
+ "@teambit/envs": "0.0.633",
28
+ "@teambit/isolator": "0.0.633",
29
29
  "@teambit/toolbox.path.to-windows-compatible-path": "0.0.482",
30
- "@teambit/aspect-loader": "0.0.629",
30
+ "@teambit/aspect-loader": "0.0.633",
31
31
  "@teambit/bit-error": "0.0.394",
32
- "@teambit/cli": "0.0.433",
33
- "@teambit/dependency-resolver": "0.0.629",
34
- "@teambit/graphql": "0.0.629",
35
- "@teambit/pkg": "0.0.629",
36
- "@teambit/pubsub": "0.0.629",
37
- "@teambit/ui": "0.0.629",
38
- "@teambit/workspace": "0.0.629",
32
+ "@teambit/cli": "0.0.434",
33
+ "@teambit/dependency-resolver": "0.0.633",
34
+ "@teambit/graphql": "0.0.633",
35
+ "@teambit/pkg": "0.0.633",
36
+ "@teambit/pubsub": "0.0.633",
37
+ "@teambit/ui": "0.0.633",
38
+ "@teambit/workspace": "0.0.633",
39
39
  "@teambit/component-id": "0.0.400",
40
- "@teambit/compiler": "0.0.629",
40
+ "@teambit/compiler": "0.0.633",
41
41
  "@teambit/preview.cli.preview-server-status": "0.0.490",
42
42
  "@teambit/preview.cli.webpack-events-listener": "0.0.160"
43
43
  },
@@ -55,7 +55,7 @@
55
55
  "@teambit/preview.aspect-docs.preview": "0.0.131"
56
56
  },
57
57
  "peerDependencies": {
58
- "@teambit/legacy": "1.0.209",
58
+ "@teambit/legacy": "1.0.210",
59
59
  "react-dom": "^16.8.0 || ^17.0.0",
60
60
  "react": "^16.8.0 || ^17.0.0"
61
61
  },
@@ -83,7 +83,7 @@
83
83
  "react": "-"
84
84
  },
85
85
  "peerDependencies": {
86
- "@teambit/legacy": "1.0.209",
86
+ "@teambit/legacy": "1.0.210",
87
87
  "react-dom": "^16.8.0 || ^17.0.0",
88
88
  "react": "^16.8.0 || ^17.0.0"
89
89
  }
@@ -166,7 +166,7 @@ export class PreviewPreview {
166
166
  const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];
167
167
  if (!componentPreview) return reject(new PreviewNotFound(name));
168
168
  const targetPreview = componentPreview[name];
169
- if (!targetPreview) return reject(new PreviewNotFound(name));
169
+ if (!targetPreview) return resolve(undefined);
170
170
 
171
171
  return resolve(targetPreview);
172
172
  };