ember-storybook 0.1.1 → 0.1.2

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
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/client/render.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI3E,eAAO,MAAM,MAAM,EAAE,WAAW,CAAC,aAAa,CAc7C,CAAC;AAiDF,wBAAsB,cAAc,CAClC,EACE,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG;IAAE,YAAY,EAAE,YAAY,CAAA;CAAE,EAChE,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,uBA8E9C"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/client/render.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI3E,eAAO,MAAM,MAAM,EAAE,WAAW,CAAC,aAAa,CAc7C,CAAC;AAiDF,wBAAsB,cAAc,CAClC,EACE,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG;IAAE,YAAY,EAAE,YAAY,CAAA;CAAE,EAChE,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,uBAiF9C"}
@@ -1,4 +1,4 @@
1
- import { n as renderToCanvas, t as render } from "../render-BfcEkM_k.mjs";
1
+ import { n as renderToCanvas, t as render } from "../render-UnP87BCQ.mjs";
2
2
  import { enhanceArgTypes } from "storybook/internal/docs-tools";
3
3
  //#region src/client/config.ts
4
4
  const parameters = {
@@ -1,3 +1,3 @@
1
- import { n as renderToCanvas } from "../render-BfcEkM_k.mjs";
2
- import { n as setProjectAnnotations, t as RenderStory } from "../client-my_ACjFV.mjs";
1
+ import { n as renderToCanvas } from "../render-UnP87BCQ.mjs";
2
+ import { n as setProjectAnnotations, t as RenderStory } from "../client-Cn86nY-K.mjs";
3
3
  export { RenderStory, renderToCanvas, setProjectAnnotations };
@@ -1,4 +1,4 @@
1
- import { r as render_exports } from "./render-BfcEkM_k.mjs";
1
+ import { r as render_exports } from "./render-UnP87BCQ.mjs";
2
2
  import { setDefaultProjectAnnotations, setProjectAnnotations } from "storybook/preview-api";
3
3
  import { template } from "@ember/template-compiler";
4
4
  import Component from "@glimmer/component";
@@ -59,4 +59,4 @@ var RenderStory = class extends Component {
59
59
  //#endregion
60
60
  export { setProjectAnnotations$1 as n, RenderStory as t };
61
61
 
62
- //# sourceMappingURL=client-my_ACjFV.mjs.map
62
+ //# sourceMappingURL=client-Cn86nY-K.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-my_ACjFV.mjs","names":["globalThis","STORYBOOK_ENV","setDefaultProjectAnnotations","setProjectAnnotations","originalSetProjectAnnotations","INTERNAL_DEFAULT_PROJECT_ANNOTATIONS","projectAnnotations"],"sources":["../src/client/globals.ts","../src/client/portable-stories.ts","../src/client/render-story.gts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n// eslint-disable-next-line unicorn/no-global-object-property-assignment\nglobalThis.STORYBOOK_ENV = 'ember';\n","import {\n setDefaultProjectAnnotations,\n setProjectAnnotations as originalSetProjectAnnotations\n} from 'storybook/preview-api';\n\nimport * as INTERNAL_DEFAULT_PROJECT_ANNOTATIONS from './render';\n\nimport type { EmberRenderer } from './types';\nimport type {\n NamedOrDefaultProjectAnnotations,\n NormalizedProjectAnnotations\n} from 'storybook/internal/types';\n\n/**\n * Function that sets the globalConfig of your storybook. The global config is the preview module of\n * your .storybook folder.\n *\n * It should be run a single time, so that your global config (e.g. decorators) is applied to your\n * stories when using `composeStories` or `composeStory`.\n *\n * Example:\n *\n * ```jsx\n * // setup-file.js\n * import { setProjectAnnotations } from '@storybook/preact';\n * import projectAnnotations from './.storybook/preview';\n *\n * setProjectAnnotations(projectAnnotations);\n * ```\n *\n * @param projectAnnotations - E.g. (import projectAnnotations from '../.storybook/preview')\n */\nexport function setProjectAnnotations(\n projectAnnotations:\n | NamedOrDefaultProjectAnnotations<EmberRenderer>\n | NamedOrDefaultProjectAnnotations<EmberRenderer>[]\n): NormalizedProjectAnnotations<EmberRenderer> {\n setDefaultProjectAnnotations(INTERNAL_DEFAULT_PROJECT_ANNOTATIONS);\n\n return originalSetProjectAnnotations(projectAnnotations);\n}\n","import Component from '@glimmer/component';\nimport { getOwner } from '@ember/owner';\nimport { renderComponent } from '@ember/renderer';\n\nimport { modifier } from 'ember-modifier';\n\ninterface RenderStorySignature {\n Args: {\n story: () => object;\n args: Record<string, unknown>;\n };\n Element: HTMLDivElement;\n}\n\nexport class RenderStory extends Component<RenderStorySignature> {\n render = modifier((element: HTMLDivElement) => {\n const component = this.args.story();\n const owner = getOwner(this);\n const result = renderComponent(component, {\n args: this.args.args,\n into: element,\n owner\n });\n\n return () => {\n result.destroy();\n };\n });\n\n <template>\n <div {{this.render}}></div>\n </template>\n}\n"],"mappings":";;;;;;;;AAGAA,WAAWC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;AC6B3B,SAAgBE,wBACdG,oBAG6C;CAC7CJ,6BAA6BG,cAAoC;CAEjE,OAAOD,sBAA8BE,kBAAkB;AACzD;;;AC1BA,IAAa,cAAb,cAAiC,UAAU;CACzC,SAAS,UAAU,YAAS;EAC1B,MAAM,YAAY,KAAK,KAAK,MAAK;EACjC,MAAM,QAAQ,SAAS,IAAI;EAC3B,MAAM,SAAS,gBAAgB,WAAW;GACxC,MAAM,KAAK,KAAK;GAChB,MAAM;GACN;EACF,CAAA;EAEA,aAAO;GACL,OAAO,QAAO;EAChB;CACF,CAAA;CAEA;EAAA,SAAU,+BAEV;GAAA,WAAA;GAAA,OAAA;IAAA,OAAA,KAAA,UAAA,EAAW;GAAD;EAAA,CAAA;CAAA;AACZ"}
1
+ {"version":3,"file":"client-Cn86nY-K.mjs","names":["globalThis","STORYBOOK_ENV","setDefaultProjectAnnotations","setProjectAnnotations","originalSetProjectAnnotations","INTERNAL_DEFAULT_PROJECT_ANNOTATIONS","projectAnnotations"],"sources":["../src/client/globals.ts","../src/client/portable-stories.ts","../src/client/render-story.gts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n// eslint-disable-next-line unicorn/no-global-object-property-assignment\nglobalThis.STORYBOOK_ENV = 'ember';\n","import {\n setDefaultProjectAnnotations,\n setProjectAnnotations as originalSetProjectAnnotations\n} from 'storybook/preview-api';\n\nimport * as INTERNAL_DEFAULT_PROJECT_ANNOTATIONS from './render';\n\nimport type { EmberRenderer } from './types';\nimport type {\n NamedOrDefaultProjectAnnotations,\n NormalizedProjectAnnotations\n} from 'storybook/internal/types';\n\n/**\n * Function that sets the globalConfig of your storybook. The global config is the preview module of\n * your .storybook folder.\n *\n * It should be run a single time, so that your global config (e.g. decorators) is applied to your\n * stories when using `composeStories` or `composeStory`.\n *\n * Example:\n *\n * ```jsx\n * // setup-file.js\n * import { setProjectAnnotations } from '@storybook/preact';\n * import projectAnnotations from './.storybook/preview';\n *\n * setProjectAnnotations(projectAnnotations);\n * ```\n *\n * @param projectAnnotations - E.g. (import projectAnnotations from '../.storybook/preview')\n */\nexport function setProjectAnnotations(\n projectAnnotations:\n | NamedOrDefaultProjectAnnotations<EmberRenderer>\n | NamedOrDefaultProjectAnnotations<EmberRenderer>[]\n): NormalizedProjectAnnotations<EmberRenderer> {\n setDefaultProjectAnnotations(INTERNAL_DEFAULT_PROJECT_ANNOTATIONS);\n\n return originalSetProjectAnnotations(projectAnnotations);\n}\n","import Component from '@glimmer/component';\nimport { getOwner } from '@ember/owner';\nimport { renderComponent } from '@ember/renderer';\n\nimport { modifier } from 'ember-modifier';\n\ninterface RenderStorySignature {\n Args: {\n story: () => object;\n args: Record<string, unknown>;\n };\n Element: HTMLDivElement;\n}\n\nexport class RenderStory extends Component<RenderStorySignature> {\n render = modifier((element: HTMLDivElement) => {\n const component = this.args.story();\n const owner = getOwner(this);\n const result = renderComponent(component, {\n args: this.args.args,\n into: element,\n owner\n });\n\n return () => {\n result.destroy();\n };\n });\n\n <template>\n <div {{this.render}}></div>\n </template>\n}\n"],"mappings":";;;;;;;;AAGAA,WAAWC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;AC6B3B,SAAgBE,wBACdG,oBAG6C;CAC7CJ,6BAA6BG,cAAoC;CAEjE,OAAOD,sBAA8BE,kBAAkB;AACzD;;;AC1BA,IAAa,cAAb,cAAiC,UAAU;CACzC,SAAS,UAAU,YAAS;EAC1B,MAAM,YAAY,KAAK,KAAK,MAAK;EACjC,MAAM,QAAQ,SAAS,IAAI;EAC3B,MAAM,SAAS,gBAAgB,WAAW;GACxC,MAAM,KAAK,KAAK;GAChB,MAAM;GACN;EACF,CAAA;EAEA,aAAO;GACL,OAAO,QAAO;EAChB;CACF,CAAA;CAEA;EAAA,SAAU,+BAEV;GAAA,WAAA;GAAA,OAAA;IAAA,OAAA,KAAA,UAAA,EAAW;GAAD;EAAA,CAAA;CAAA;AACZ"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { n as renderToCanvas } from "./render-BfcEkM_k.mjs";
2
- import { n as setProjectAnnotations, t as RenderStory } from "./client-my_ACjFV.mjs";
1
+ import { n as renderToCanvas } from "./render-UnP87BCQ.mjs";
2
+ import { n as setProjectAnnotations, t as RenderStory } from "./client-Cn86nY-K.mjs";
3
3
  export { RenderStory, renderToCanvas, setProjectAnnotations };
@@ -61,13 +61,12 @@ async function renderToCanvas({ storyFn, showMain, storyContext, forceRemount },
61
61
  const appOption = storyContext.parameters.ember.app;
62
62
  application = initApp(appOption, { rootElement: canvasElement });
63
63
  }
64
- if (storyContext.parameters.ember?.owner) {
65
- application ??= buildAppInstance(Application, { rootElement: canvasElement });
66
- for (const [key, obj] of Object.entries(storyContext.parameters.ember.owner)) {
67
- application.unregister(key);
68
- application.register(key, obj);
69
- }
64
+ application ??= buildAppInstance(Application, { rootElement: canvasElement });
65
+ if (storyContext.parameters.ember?.owner) for (const [key, obj] of Object.entries(storyContext.parameters.ember.owner)) {
66
+ application.unregister(key);
67
+ application.register(key, obj);
70
68
  }
69
+ await application.boot();
71
70
  const trackedArgs = trackedObject({ ...args });
72
71
  const result = renderComponent(Component, {
73
72
  args: trackedArgs,
@@ -85,4 +84,4 @@ async function renderToCanvas({ storyFn, showMain, storyContext, forceRemount },
85
84
  //#endregion
86
85
  export { renderToCanvas as n, render_exports as r, render as t };
87
86
 
88
- //# sourceMappingURL=render-BfcEkM_k.mjs.map
87
+ //# sourceMappingURL=render-UnP87BCQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-UnP87BCQ.mjs","names":["Application","ApplicationInstance","render","args","context","id","component","Error","contexts","Map","getAppOptions","opts","autoboot","buildAppInstance","application","create","buildInstance","isApplication","maybeApp","undefined","superclass","name","initApp","appOption","renderToCanvas","storyFn","showMain","storyContext","forceRemount","canvasElement","trackedObject","renderComponent","destroy","Component","unmount","element","get","delete","renderer","parameters","ember","app","rootElement","owner","key","obj","Object","entries","unregister","register","boot","trackedArgs","result","into","set"],"sources":["../src/client/render.ts"],"sourcesContent":["import Application from '@ember/application';\nimport ApplicationInstance from '@ember/application/instance';\n\nimport type { AppParamater, EmberRenderer, StoryContext } from './types';\nimport type { RenderResult } from '@ember/-internals/glimmer/lib/renderer';\nimport type { ArgsStoryFn, RenderContext } from 'storybook/internal/types';\n\ntype Args = Record<string, unknown>;\n\nexport const render: ArgsStoryFn<EmberRenderer> = (args, context) => {\n const { id, component } = context;\n\n if (typeof component === 'function') {\n return component;\n }\n\n if (typeof component === 'object') {\n return component;\n }\n\n throw new Error(\n `Unable to render story ${id} as the component annotation is missing from the default export`\n );\n};\n\nconst contexts = new Map<\n EmberRenderer['canvasElement'],\n {\n application: ApplicationInstance | undefined;\n renderer: RenderResult;\n args: Args;\n }\n>();\n\nfunction getAppOptions(opts: { rootElement: HTMLElement }) {\n return {\n ...opts,\n autoboot: false\n };\n}\n\nfunction buildAppInstance(application: typeof Application, opts: { rootElement: HTMLElement }) {\n return application.create(getAppOptions(opts)).buildInstance();\n}\n\nfunction isApplication(maybeApp: object): maybeApp is typeof Application {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error well, ember types\n maybeApp.create !== undefined &&\n // @ts-expect-error well, ember types\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n maybeApp.superclass &&\n // @ts-expect-error well, ember types\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n maybeApp.superclass.name === 'EmberApp'\n );\n}\n\nfunction initApp(appOption: AppParamater, opts: { rootElement: HTMLElement }): ApplicationInstance {\n if (appOption instanceof ApplicationInstance) {\n return appOption;\n }\n\n if (isApplication(appOption)) {\n return buildAppInstance(appOption, opts);\n }\n\n // eslint-disable-next-line unicorn/no-useless-recursion\n return initApp(appOption(getAppOptions(opts)), opts);\n}\n\nexport async function renderToCanvas(\n {\n storyFn,\n showMain,\n storyContext,\n forceRemount\n }: RenderContext<EmberRenderer> & { storyContext: StoryContext },\n canvasElement: EmberRenderer['canvasElement']\n) {\n const { trackedObject } = await import('@ember/reactive/collections');\n const { renderComponent } = await import('@ember/renderer');\n const { destroy } = await import('@ember/destroyable');\n\n const args = storyContext.args;\n const Component = storyFn();\n\n function unmount(element: EmberRenderer['canvasElement']) {\n const context = contexts.get(element);\n\n if (!context) {\n return;\n }\n\n contexts.delete(element);\n context.renderer.destroy();\n\n if (context.application) {\n destroy(context.application);\n }\n }\n\n if (forceRemount) {\n unmount(canvasElement);\n }\n\n // this check does not work:\n // when globals are updated, that are interesting for a decorato\n // this check would prevent that update\n\n // const context = contexts.get(canvasElement);\n // if (context && !forceRemount && args) {\n // updateArgs(context.args, args);\n // return () => {\n // unmount(canvasElement);\n // };\n // }\n\n // find the ember app for the story\n let application: ApplicationInstance | undefined;\n\n if (storyContext.parameters.ember?.app) {\n const appOption = storyContext.parameters.ember.app;\n\n application = initApp(appOption, { rootElement: canvasElement });\n }\n\n application ??= buildAppInstance(Application, { rootElement: canvasElement });\n\n // modify the owner for the story\n if (storyContext.parameters.ember?.owner) {\n for (const [key, obj] of Object.entries(storyContext.parameters.ember.owner) as [\n `${string}:${string}`,\n object\n ][]) {\n application.unregister(key);\n application.register(key, obj);\n }\n }\n\n // boot the instance so ember registers necessary environments\n await application.boot();\n\n const trackedArgs = trackedObject({ ...args });\n const result = renderComponent(Component, {\n args: trackedArgs,\n into: canvasElement,\n owner: application\n });\n\n contexts.set(canvasElement, { application, renderer: result, args: trackedArgs });\n\n showMain();\n\n // eslint-disable-next-line unicorn/consistent-function-scoping\n return () => {\n // needs fix:\n // unmount(canvasElement);\n };\n}\n\n// function updateArgs(currentArgs: Args, nextArgs: Args) {\n// for (const key of Object.keys(currentArgs)) {\n// if (!(key in nextArgs)) {\n// delete currentArgs[key];\n// }\n// }\n\n// Object.assign(currentArgs, nextArgs);\n// }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AASA,MAAaE,UAAsCC,MAAMC,YAAY;CACnE,MAAM,EAAEC,IAAIC,cAAcF;CAE1B,IAAI,OAAOE,cAAc,YACvB,OAAOA;CAGT,IAAI,OAAOA,cAAc,UACvB,OAAOA;CAGT,MAAM,IAAIC,MACR,0BAA0BF,GAAE,gEAC9B;AACF;AAEA,MAAMG,2BAAW,IAAIC,IAOnB;AAEF,SAASC,cAAcC,MAAoC;CACzD,OAAO;EACL,GAAGA;EACHC,UAAU;CACZ;AACF;AAEA,SAASC,iBAAiBC,aAAiCH,MAAoC;CAC7F,OAAOG,YAAYC,OAAOL,cAAcC,IAAI,CAAC,CAAC,CAACK,cAAc;AAC/D;AAEA,SAASC,cAAcC,UAAkD;CAEvE,OAEEA,SAASH,WAAWI,KAAAA,KAGpBD,SAASE,cAGTF,SAASE,WAAWC,SAAS;AAEjC;AAEA,SAASC,QAAQC,WAAyBZ,MAAyD;CACjG,IAAIY,qBAAqBtB,qBACvB,OAAOsB;CAGT,IAAIN,cAAcM,SAAS,GACzB,OAAOV,iBAAiBU,WAAWZ,IAAI;CAIzC,OAAOW,QAAQC,UAAUb,cAAcC,IAAI,CAAC,GAAGA,IAAI;AACrD;AAEA,eAAsBa,eACpB,EACEC,SACAC,UACAC,cACAC,gBAEFC,eACA;CACA,MAAM,EAAEC,kBAAkB,MAAM,OAAO;CACvC,MAAM,EAAEC,oBAAoB,MAAM,OAAO;CACzC,MAAM,EAAEC,YAAY,MAAM,OAAO;CAEjC,MAAM7B,OAAOwB,aAAaxB;CAC1B,MAAM8B,YAAYR,QAAQ;CAE1B,SAASS,QAAQC,SAAyC;EACxD,MAAM/B,UAAUI,SAAS4B,IAAID,OAAO;EAEpC,IAAI,CAAC/B,SACH;EAGFI,SAAS6B,OAAOF,OAAO;EACvB/B,QAAQkC,SAASN,QAAQ;EAEzB,IAAI5B,QAAQU,aACVkB,QAAQ5B,QAAQU,WAAW;CAE/B;CAEA,IAAIc,cACFM,QAAQL,aAAa;CAgBvB,IAAIf;CAEJ,IAAIa,aAAaY,WAAWC,OAAOC,KAAK;EACtC,MAAMlB,YAAYI,aAAaY,WAAWC,MAAMC;EAEhD3B,cAAcQ,QAAQC,WAAW,EAAEmB,aAAab,cAAc,CAAC;CACjE;CAEAf,gBAAgBD,iBAAiBb,aAAa,EAAE0C,aAAab,cAAc,CAAC;CAG5E,IAAIF,aAAaY,WAAWC,OAAOG,OACjC,KAAK,MAAM,CAACC,KAAKC,QAAQC,OAAOC,QAAQpB,aAAaY,WAAWC,MAAMG,KAAK,GAGtE;EACH7B,YAAYkC,WAAWJ,GAAG;EAC1B9B,YAAYmC,SAASL,KAAKC,GAAG;CAC/B;CAIF,MAAM/B,YAAYoC,KAAK;CAEvB,MAAMC,cAAcrB,cAAc,EAAE,GAAG3B,KAAK,CAAC;CAC7C,MAAMiD,SAASrB,gBAAgBE,WAAW;EACxC9B,MAAMgD;EACNE,MAAMxB;EACNc,OAAO7B;CACT,CAAC;CAEDN,SAAS8C,IAAIzB,eAAe;EAAEf;EAAawB,UAAUc;EAAQjD,MAAMgD;CAAY,CAAC;CAEhFzB,SAAS;CAGT,aAAa,CAEX;AAEJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-storybook",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "description": "Storybook for Ember: Develop, document, and test UI components in isolation",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-BfcEkM_k.mjs","names":["Application","ApplicationInstance","render","args","context","id","component","Error","contexts","Map","getAppOptions","opts","autoboot","buildAppInstance","application","create","buildInstance","isApplication","maybeApp","undefined","superclass","name","initApp","appOption","renderToCanvas","storyFn","showMain","storyContext","forceRemount","canvasElement","trackedObject","renderComponent","destroy","Component","unmount","element","get","delete","renderer","parameters","ember","app","rootElement","owner","key","obj","Object","entries","unregister","register","trackedArgs","result","into","set"],"sources":["../src/client/render.ts"],"sourcesContent":["import Application from '@ember/application';\nimport ApplicationInstance from '@ember/application/instance';\n\nimport type { AppParamater, EmberRenderer, StoryContext } from './types';\nimport type { RenderResult } from '@ember/-internals/glimmer/lib/renderer';\nimport type { ArgsStoryFn, RenderContext } from 'storybook/internal/types';\n\ntype Args = Record<string, unknown>;\n\nexport const render: ArgsStoryFn<EmberRenderer> = (args, context) => {\n const { id, component } = context;\n\n if (typeof component === 'function') {\n return component;\n }\n\n if (typeof component === 'object') {\n return component;\n }\n\n throw new Error(\n `Unable to render story ${id} as the component annotation is missing from the default export`\n );\n};\n\nconst contexts = new Map<\n EmberRenderer['canvasElement'],\n {\n application: ApplicationInstance | undefined;\n renderer: RenderResult;\n args: Args;\n }\n>();\n\nfunction getAppOptions(opts: { rootElement: HTMLElement }) {\n return {\n ...opts,\n autoboot: false\n };\n}\n\nfunction buildAppInstance(application: typeof Application, opts: { rootElement: HTMLElement }) {\n return application.create(getAppOptions(opts)).buildInstance();\n}\n\nfunction isApplication(maybeApp: object): maybeApp is typeof Application {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error well, ember types\n maybeApp.create !== undefined &&\n // @ts-expect-error well, ember types\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n maybeApp.superclass &&\n // @ts-expect-error well, ember types\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n maybeApp.superclass.name === 'EmberApp'\n );\n}\n\nfunction initApp(appOption: AppParamater, opts: { rootElement: HTMLElement }): ApplicationInstance {\n if (appOption instanceof ApplicationInstance) {\n return appOption;\n }\n\n if (isApplication(appOption)) {\n return buildAppInstance(appOption, opts);\n }\n\n // eslint-disable-next-line unicorn/no-useless-recursion\n return initApp(appOption(getAppOptions(opts)), opts);\n}\n\nexport async function renderToCanvas(\n {\n storyFn,\n showMain,\n storyContext,\n forceRemount\n }: RenderContext<EmberRenderer> & { storyContext: StoryContext },\n canvasElement: EmberRenderer['canvasElement']\n) {\n const { trackedObject } = await import('@ember/reactive/collections');\n const { renderComponent } = await import('@ember/renderer');\n const { destroy } = await import('@ember/destroyable');\n\n const args = storyContext.args;\n const Component = storyFn();\n\n function unmount(element: EmberRenderer['canvasElement']) {\n const context = contexts.get(element);\n\n if (!context) {\n return;\n }\n\n contexts.delete(element);\n context.renderer.destroy();\n\n if (context.application) {\n destroy(context.application);\n }\n }\n\n if (forceRemount) {\n unmount(canvasElement);\n }\n\n // this check does not work:\n // when globals are updated, that are interesting for a decorato\n // this check would prevent that update\n\n // const context = contexts.get(canvasElement);\n // if (context && !forceRemount && args) {\n // updateArgs(context.args, args);\n // return () => {\n // unmount(canvasElement);\n // };\n // }\n\n // find the ember app for the story\n let application: ApplicationInstance | undefined;\n\n if (storyContext.parameters.ember?.app) {\n const appOption = storyContext.parameters.ember.app;\n\n application = initApp(appOption, { rootElement: canvasElement });\n }\n\n // modify the owner for the story\n if (storyContext.parameters.ember?.owner) {\n application ??= buildAppInstance(Application, { rootElement: canvasElement });\n\n for (const [key, obj] of Object.entries(storyContext.parameters.ember.owner) as [\n `${string}:${string}`,\n object\n ][]) {\n application.unregister(key);\n application.register(key, obj);\n }\n }\n\n const trackedArgs = trackedObject({ ...args });\n const result = renderComponent(Component, {\n args: trackedArgs,\n into: canvasElement,\n owner: application\n });\n\n contexts.set(canvasElement, { application, renderer: result, args: trackedArgs });\n\n showMain();\n\n // eslint-disable-next-line unicorn/consistent-function-scoping\n return () => {\n // needs fix:\n // unmount(canvasElement);\n };\n}\n\n// function updateArgs(currentArgs: Args, nextArgs: Args) {\n// for (const key of Object.keys(currentArgs)) {\n// if (!(key in nextArgs)) {\n// delete currentArgs[key];\n// }\n// }\n\n// Object.assign(currentArgs, nextArgs);\n// }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AASA,MAAaE,UAAsCC,MAAMC,YAAY;CACnE,MAAM,EAAEC,IAAIC,cAAcF;CAE1B,IAAI,OAAOE,cAAc,YACvB,OAAOA;CAGT,IAAI,OAAOA,cAAc,UACvB,OAAOA;CAGT,MAAM,IAAIC,MACR,0BAA0BF,GAAE,gEAC9B;AACF;AAEA,MAAMG,2BAAW,IAAIC,IAOnB;AAEF,SAASC,cAAcC,MAAoC;CACzD,OAAO;EACL,GAAGA;EACHC,UAAU;CACZ;AACF;AAEA,SAASC,iBAAiBC,aAAiCH,MAAoC;CAC7F,OAAOG,YAAYC,OAAOL,cAAcC,IAAI,CAAC,CAAC,CAACK,cAAc;AAC/D;AAEA,SAASC,cAAcC,UAAkD;CAEvE,OAEEA,SAASH,WAAWI,KAAAA,KAGpBD,SAASE,cAGTF,SAASE,WAAWC,SAAS;AAEjC;AAEA,SAASC,QAAQC,WAAyBZ,MAAyD;CACjG,IAAIY,qBAAqBtB,qBACvB,OAAOsB;CAGT,IAAIN,cAAcM,SAAS,GACzB,OAAOV,iBAAiBU,WAAWZ,IAAI;CAIzC,OAAOW,QAAQC,UAAUb,cAAcC,IAAI,CAAC,GAAGA,IAAI;AACrD;AAEA,eAAsBa,eACpB,EACEC,SACAC,UACAC,cACAC,gBAEFC,eACA;CACA,MAAM,EAAEC,kBAAkB,MAAM,OAAO;CACvC,MAAM,EAAEC,oBAAoB,MAAM,OAAO;CACzC,MAAM,EAAEC,YAAY,MAAM,OAAO;CAEjC,MAAM7B,OAAOwB,aAAaxB;CAC1B,MAAM8B,YAAYR,QAAQ;CAE1B,SAASS,QAAQC,SAAyC;EACxD,MAAM/B,UAAUI,SAAS4B,IAAID,OAAO;EAEpC,IAAI,CAAC/B,SACH;EAGFI,SAAS6B,OAAOF,OAAO;EACvB/B,QAAQkC,SAASN,QAAQ;EAEzB,IAAI5B,QAAQU,aACVkB,QAAQ5B,QAAQU,WAAW;CAE/B;CAEA,IAAIc,cACFM,QAAQL,aAAa;CAgBvB,IAAIf;CAEJ,IAAIa,aAAaY,WAAWC,OAAOC,KAAK;EACtC,MAAMlB,YAAYI,aAAaY,WAAWC,MAAMC;EAEhD3B,cAAcQ,QAAQC,WAAW,EAAEmB,aAAab,cAAc,CAAC;CACjE;CAGA,IAAIF,aAAaY,WAAWC,OAAOG,OAAO;EACxC7B,gBAAgBD,iBAAiBb,aAAa,EAAE0C,aAAab,cAAc,CAAC;EAE5E,KAAK,MAAM,CAACe,KAAKC,QAAQC,OAAOC,QAAQpB,aAAaY,WAAWC,MAAMG,KAAK,GAGtE;GACH7B,YAAYkC,WAAWJ,GAAG;GAC1B9B,YAAYmC,SAASL,KAAKC,GAAG;EAC/B;CACF;CAEA,MAAMK,cAAcpB,cAAc,EAAE,GAAG3B,KAAK,CAAC;CAC7C,MAAMgD,SAASpB,gBAAgBE,WAAW;EACxC9B,MAAM+C;EACNE,MAAMvB;EACNc,OAAO7B;CACT,CAAC;CAEDN,SAAS6C,IAAIxB,eAAe;EAAEf;EAAawB,UAAUa;EAAQhD,MAAM+C;CAAY,CAAC;CAEhFxB,SAAS;CAGT,aAAa,CAEX;AAEJ"}