@aurelia/storybook 1.0.1 → 2.0.0
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/README.md +12 -20
- package/apps/hello-world/.storybook/main.ts +27 -5
- package/apps/hello-world/package-lock.json +781 -3474
- package/apps/hello-world/package.json +12 -8
- package/apps/hello-world/src/stories/hello-world.stories.ts +6 -6
- package/apps/hello-world-webpack/.storybook/main.ts +0 -1
- package/apps/hello-world-webpack/package-lock.json +229 -2042
- package/apps/hello-world-webpack/package.json +8 -7
- package/apps/hello-world-webpack/src/hello-world.html +6 -0
- package/apps/hello-world-webpack/src/hello-world.ts +17 -0
- package/apps/hello-world-webpack/src/my-app.stories.ts +10 -7
- package/apps/hello-world-webpack/src/stories/hello-world.stories.ts +54 -0
- package/dist/index.js +65 -121
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +62 -115
- package/dist/index.mjs.map +1 -1
- package/dist/preset.js +17 -10
- package/dist/preset.js.map +1 -1
- package/dist/preset.mjs +15 -1
- package/dist/preset.mjs.map +1 -1
- package/dist/preview/render.js +44 -124
- package/dist/preview/render.js.map +1 -1
- package/dist/preview/render.mjs +41 -116
- package/dist/preview/render.mjs.map +1 -1
- package/dist/preview/types.js +0 -1
- package/dist/preview/types.js.map +1 -1
- package/dist/preview.js +84 -44
- package/dist/preview.js.map +1 -1
- package/dist/preview.mjs +81 -39
- package/dist/preview.mjs.map +1 -1
- package/dist/webpack.js +1 -3
- package/dist/webpack.js.map +1 -1
- package/package.json +16 -19
- package/rollup.config.mjs +10 -8
- package/src/index.ts +28 -0
- package/src/preset.ts +20 -2
- package/src/preview/render.ts +49 -47
- package/src/preview.ts +1 -50
- package/tsconfig.json +1 -1
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
},
|
|
9
9
|
"license": "UNLICENSED",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@aurelia/router": "
|
|
12
|
-
"aurelia": "2.0.0-beta.
|
|
11
|
+
"@aurelia/router": "2.0.0-beta.25",
|
|
12
|
+
"aurelia": "2.0.0-beta.25"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@aurelia/storybook": "
|
|
16
|
-
"@aurelia/testing": "
|
|
17
|
-
"@aurelia/webpack-loader": "
|
|
15
|
+
"@aurelia/storybook": "^1.0.2",
|
|
16
|
+
"@aurelia/testing": "2.0.0-beta.25",
|
|
17
|
+
"@aurelia/webpack-loader": "2.0.0-beta.25",
|
|
18
|
+
"@storybook/addon-actions": "^9.0.8",
|
|
18
19
|
"@storybook/addon-links": "^9.0.0",
|
|
19
|
-
"@storybook/
|
|
20
|
-
"storybook": "^9.0.0",
|
|
20
|
+
"@storybook/test": "^9.0.0-alpha.2",
|
|
21
21
|
"@types/node": "^22.10.2",
|
|
22
22
|
"autoprefixer": "^10.4.20",
|
|
23
23
|
"css-loader": "^7.1.2",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"html-webpack-plugin": "^5.6.3",
|
|
28
28
|
"postcss": "^8.4.49",
|
|
29
29
|
"postcss-loader": "^8.1.1",
|
|
30
|
+
"storybook": "^9.0.0",
|
|
30
31
|
"style-loader": "^4.0.0",
|
|
31
32
|
"stylelint": "^16.12.0",
|
|
32
33
|
"stylelint-config-standard": "^36.0.1",
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { bindable } from 'aurelia';
|
|
2
|
+
|
|
3
|
+
export class HelloWorld {
|
|
4
|
+
@bindable() message = 'Hello from Aurelia!';
|
|
5
|
+
// New reactive counter property to track number of clicks
|
|
6
|
+
counter = 0;
|
|
7
|
+
// New bindable event callback for the increment action
|
|
8
|
+
@bindable() onIncrement;
|
|
9
|
+
|
|
10
|
+
// Method to increment the counter and fire the onIncrement callback if provided.
|
|
11
|
+
increment() {
|
|
12
|
+
this.counter++;
|
|
13
|
+
if (this.onIncrement) {
|
|
14
|
+
this.onIncrement(this.counter);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { MyApp } from './my-app';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
title: '
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Example/MyApp',
|
|
5
5
|
component: MyApp,
|
|
6
|
+
render: () => ({
|
|
7
|
+
template: `<my-app></my-app>`,
|
|
8
|
+
}),
|
|
6
9
|
};
|
|
7
10
|
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
11
|
+
export default meta;
|
|
12
|
+
|
|
13
|
+
export const Default = {
|
|
14
|
+
args: {}
|
|
15
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { HelloWorld } from '../hello-world';
|
|
2
|
+
import { fn } from '@storybook/test';
|
|
3
|
+
import { userEvent, within } from '@storybook/test';
|
|
4
|
+
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Example/HelloWorld',
|
|
7
|
+
component: HelloWorld,
|
|
8
|
+
render: () => ({
|
|
9
|
+
template: `<hello-world message.bind="message" on-increment.bind="onIncrement"></hello-world>`,
|
|
10
|
+
}),
|
|
11
|
+
argTypes: {
|
|
12
|
+
message: { control: 'text' },
|
|
13
|
+
onIncrement: { action: 'increment' }
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default meta;
|
|
18
|
+
|
|
19
|
+
export const DefaultHelloWorld = {
|
|
20
|
+
args: {
|
|
21
|
+
message: "Hello frof",
|
|
22
|
+
onIncrement: fn()
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const InteractiveHelloWorld = {
|
|
27
|
+
args: {
|
|
28
|
+
message: "kjkjk",
|
|
29
|
+
onIncrement: fn()
|
|
30
|
+
},
|
|
31
|
+
play: async ({ canvasElement }: { canvasElement: HTMLElement }) => {
|
|
32
|
+
const canvas = within(canvasElement);
|
|
33
|
+
const button = canvas.getByRole('button');
|
|
34
|
+
// Simulate three button clicks
|
|
35
|
+
await userEvent.click(button);
|
|
36
|
+
await userEvent.click(button);
|
|
37
|
+
await userEvent.click(button);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export const NoArgs = {
|
|
42
|
+
render: () => ({
|
|
43
|
+
template: `<hello-world></hello-world>`
|
|
44
|
+
})
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export const WithCustomTemplate = {
|
|
48
|
+
render: () => ({
|
|
49
|
+
template: `<hello-world message.bind="message">Click me!</hello-world>`
|
|
50
|
+
}),
|
|
51
|
+
args: {
|
|
52
|
+
message: "This is a custom messageddd"
|
|
53
|
+
}
|
|
54
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -1,91 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import Aurelia, { CustomElement } from 'aurelia';
|
|
2
2
|
|
|
3
|
-
var Aurelia = require('aurelia');
|
|
4
|
-
|
|
5
|
-
// src/core-events/index.ts
|
|
6
|
-
var R = /* @__PURE__ */ ((E) => (E.CHANNEL_WS_DISCONNECT = "channelWSDisconnect", E.CHANNEL_CREATED = "channelCreated", E.CONFIG_ERROR = "co\
|
|
7
|
-
nfigError", E.STORY_INDEX_INVALIDATED = "storyIndexInvalidated", E.STORY_SPECIFIED = "storySpecified", E.SET_CONFIG = "setConfig", E.SET_STORIES =
|
|
8
|
-
"setStories", E.SET_INDEX = "setIndex", E.SET_CURRENT_STORY = "setCurrentStory", E.CURRENT_STORY_WAS_SET = "currentStoryWasSet", E.FORCE_RE_RENDER =
|
|
9
|
-
"forceReRender", E.FORCE_REMOUNT = "forceRemount", E.PRELOAD_ENTRIES = "preloadStories", E.STORY_PREPARED = "storyPrepared", E.DOCS_PREPARED =
|
|
10
|
-
"docsPrepared", E.STORY_CHANGED = "storyChanged", E.STORY_UNCHANGED = "storyUnchanged", E.STORY_RENDERED = "storyRendered", E.STORY_FINISHED =
|
|
11
|
-
"storyFinished", E.STORY_MISSING = "storyMissing", E.STORY_ERRORED = "storyErrored", E.STORY_THREW_EXCEPTION = "storyThrewException", E.STORY_RENDER_PHASE_CHANGED =
|
|
12
|
-
"storyRenderPhaseChanged", E.STORY_HOT_UPDATED = "storyHotUpdated", E.PLAY_FUNCTION_THREW_EXCEPTION = "playFunctionThrewException", E.UNHANDLED_ERRORS_WHILE_PLAYING =
|
|
13
|
-
"unhandledErrorsWhilePlaying", E.UPDATE_STORY_ARGS = "updateStoryArgs", E.STORY_ARGS_UPDATED = "storyArgsUpdated", E.RESET_STORY_ARGS = "res\
|
|
14
|
-
etStoryArgs", E.SET_FILTER = "setFilter", E.SET_GLOBALS = "setGlobals", E.UPDATE_GLOBALS = "updateGlobals", E.GLOBALS_UPDATED = "globalsUpda\
|
|
15
|
-
ted", E.REGISTER_SUBSCRIPTION = "registerSubscription", E.PREVIEW_KEYDOWN = "previewKeydown", E.PREVIEW_BUILDER_PROGRESS = "preview_builder_\
|
|
16
|
-
progress", E.SELECT_STORY = "selectStory", E.STORIES_COLLAPSE_ALL = "storiesCollapseAll", E.STORIES_EXPAND_ALL = "storiesExpandAll", E.DOCS_RENDERED =
|
|
17
|
-
"docsRendered", E.SHARED_STATE_CHANGED = "sharedStateChanged", E.SHARED_STATE_SET = "sharedStateSet", E.NAVIGATE_URL = "navigateUrl", E.UPDATE_QUERY_PARAMS =
|
|
18
|
-
"updateQueryParams", E.REQUEST_WHATS_NEW_DATA = "requestWhatsNewData", E.RESULT_WHATS_NEW_DATA = "resultWhatsNewData", E.SET_WHATS_NEW_CACHE =
|
|
19
|
-
"setWhatsNewCache", E.TOGGLE_WHATS_NEW_NOTIFICATIONS = "toggleWhatsNewNotifications", E.TELEMETRY_ERROR = "telemetryError", E.FILE_COMPONENT_SEARCH_REQUEST =
|
|
20
|
-
"fileComponentSearchRequest", E.FILE_COMPONENT_SEARCH_RESPONSE = "fileComponentSearchResponse", E.SAVE_STORY_REQUEST = "saveStoryRequest", E.
|
|
21
|
-
SAVE_STORY_RESPONSE = "saveStoryResponse", E.ARGTYPES_INFO_REQUEST = "argtypesInfoRequest", E.ARGTYPES_INFO_RESPONSE = "argtypesInfoResponse",
|
|
22
|
-
E.CREATE_NEW_STORYFILE_REQUEST = "createNewStoryfileRequest", E.CREATE_NEW_STORYFILE_RESPONSE = "createNewStoryfileResponse", E))(R || {}), {
|
|
23
|
-
CHANNEL_WS_DISCONNECT: _,
|
|
24
|
-
CHANNEL_CREATED: T,
|
|
25
|
-
CONFIG_ERROR: O,
|
|
26
|
-
CREATE_NEW_STORYFILE_REQUEST: A,
|
|
27
|
-
CREATE_NEW_STORYFILE_RESPONSE: N,
|
|
28
|
-
CURRENT_STORY_WAS_SET: r,
|
|
29
|
-
DOCS_PREPARED: D,
|
|
30
|
-
DOCS_RENDERED: I,
|
|
31
|
-
FILE_COMPONENT_SEARCH_REQUEST: o,
|
|
32
|
-
FILE_COMPONENT_SEARCH_RESPONSE: C,
|
|
33
|
-
FORCE_RE_RENDER: P,
|
|
34
|
-
FORCE_REMOUNT: L,
|
|
35
|
-
GLOBALS_UPDATED: Y,
|
|
36
|
-
NAVIGATE_URL: a,
|
|
37
|
-
PLAY_FUNCTION_THREW_EXCEPTION: U,
|
|
38
|
-
UNHANDLED_ERRORS_WHILE_PLAYING: H,
|
|
39
|
-
PRELOAD_ENTRIES: G,
|
|
40
|
-
PREVIEW_BUILDER_PROGRESS: W,
|
|
41
|
-
PREVIEW_KEYDOWN: d,
|
|
42
|
-
REGISTER_SUBSCRIPTION: t,
|
|
43
|
-
RESET_STORY_ARGS: p,
|
|
44
|
-
SELECT_STORY: i,
|
|
45
|
-
SET_CONFIG: F,
|
|
46
|
-
SET_CURRENT_STORY: l,
|
|
47
|
-
SET_FILTER: y,
|
|
48
|
-
SET_GLOBALS: e,
|
|
49
|
-
SET_INDEX: c,
|
|
50
|
-
SET_STORIES: h,
|
|
51
|
-
SHARED_STATE_CHANGED: f,
|
|
52
|
-
SHARED_STATE_SET: g,
|
|
53
|
-
STORIES_COLLAPSE_ALL: u,
|
|
54
|
-
STORIES_EXPAND_ALL: s,
|
|
55
|
-
STORY_ARGS_UPDATED: x,
|
|
56
|
-
STORY_CHANGED: m,
|
|
57
|
-
STORY_ERRORED: M,
|
|
58
|
-
STORY_INDEX_INVALIDATED: Q,
|
|
59
|
-
STORY_MISSING: V,
|
|
60
|
-
STORY_PREPARED: w,
|
|
61
|
-
STORY_RENDER_PHASE_CHANGED: B,
|
|
62
|
-
STORY_RENDERED: X,
|
|
63
|
-
STORY_FINISHED: b,
|
|
64
|
-
STORY_SPECIFIED: q,
|
|
65
|
-
STORY_THREW_EXCEPTION: K,
|
|
66
|
-
STORY_UNCHANGED: j,
|
|
67
|
-
STORY_HOT_UPDATED: k,
|
|
68
|
-
UPDATE_GLOBALS: z,
|
|
69
|
-
UPDATE_QUERY_PARAMS: J,
|
|
70
|
-
UPDATE_STORY_ARGS: Z,
|
|
71
|
-
REQUEST_WHATS_NEW_DATA: $,
|
|
72
|
-
RESULT_WHATS_NEW_DATA: n,
|
|
73
|
-
SET_WHATS_NEW_CACHE: v,
|
|
74
|
-
TOGGLE_WHATS_NEW_NOTIFICATIONS: EE,
|
|
75
|
-
TELEMETRY_ERROR: RE,
|
|
76
|
-
SAVE_STORY_REQUEST: SE,
|
|
77
|
-
SAVE_STORY_RESPONSE: _E,
|
|
78
|
-
ARGTYPES_INFO_REQUEST: TE,
|
|
79
|
-
ARGTYPES_INFO_RESPONSE: OE
|
|
80
|
-
} = R;
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Merges multiple sources into a single object.
|
|
84
|
-
* Sources can be story parameters, args, or story.props.
|
|
85
|
-
*/
|
|
86
|
-
function mergeStoryProps(...sources) {
|
|
87
|
-
return Object.assign({}, ...sources);
|
|
88
|
-
}
|
|
89
3
|
// Track Aurelia apps for cleanup
|
|
90
4
|
const appMap = new Map();
|
|
91
5
|
async function teardown(element) {
|
|
@@ -98,10 +12,29 @@ async function teardown(element) {
|
|
|
98
12
|
}
|
|
99
13
|
}
|
|
100
14
|
async function renderToCanvas({ storyFn, title, name, showMain, showError, storyContext, forceRemount, }, canvasElement, bootstrapAppFn) {
|
|
101
|
-
|
|
15
|
+
// Store reference to the original storybook root element
|
|
16
|
+
const rootElement = canvasElement;
|
|
17
|
+
// Ensure we have (or create) a single container inside the root where the Aurelia app actually renders
|
|
18
|
+
let hostElement;
|
|
19
|
+
if (rootElement.id === 'storybook-root') {
|
|
20
|
+
hostElement = rootElement.querySelector('.aurelia-story-container');
|
|
21
|
+
if (!hostElement) {
|
|
22
|
+
hostElement = document.createElement('div');
|
|
23
|
+
hostElement.className = 'aurelia-story-container';
|
|
24
|
+
hostElement.style.height = '100%';
|
|
25
|
+
rootElement.appendChild(hostElement);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
hostElement = rootElement;
|
|
30
|
+
}
|
|
31
|
+
// All app instances are now tracked by the *root* element, ensuring we only ever have one per story iframe
|
|
32
|
+
const appBootstrapFn = bootstrapAppFn ?? createAureliaApp;
|
|
102
33
|
const { parameters, component, args } = storyContext;
|
|
103
|
-
let app = appMap.get(
|
|
34
|
+
let app = appMap.get(rootElement);
|
|
104
35
|
const story = storyFn();
|
|
36
|
+
// Temporary debug logging
|
|
37
|
+
console.log(`[DEBUG] Story: ${name}, forceRemount: ${forceRemount}, hasExistingApp: ${!!app}, canvasId: ${canvasElement.className}`);
|
|
105
38
|
if (!story) {
|
|
106
39
|
showError({
|
|
107
40
|
title: `Expecting an Aurelia component from the story: "${name}" of "${title}".`,
|
|
@@ -113,43 +46,32 @@ async function renderToCanvas({ storyFn, title, name, showMain, showError, story
|
|
|
113
46
|
return () => { };
|
|
114
47
|
}
|
|
115
48
|
showMain();
|
|
116
|
-
let mergedProps;
|
|
117
|
-
// Use full merge (including story.props) when bootstrapping a new app or force remounting.
|
|
118
49
|
if (!app || forceRemount) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
50
|
+
if (forceRemount && app) {
|
|
51
|
+
await teardown(rootElement);
|
|
52
|
+
app = undefined;
|
|
122
53
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
54
|
+
// Clear container before mounting new app
|
|
55
|
+
hostElement.innerHTML = '';
|
|
56
|
+
const mergedProps = { ...parameters?.args, ...args, ...story.props };
|
|
57
|
+
const aureliaApp = appBootstrapFn(story, mergedProps, hostElement, component);
|
|
58
|
+
await aureliaApp.start();
|
|
59
|
+
appMap.set(rootElement, aureliaApp);
|
|
60
|
+
app = aureliaApp;
|
|
126
61
|
}
|
|
127
62
|
else {
|
|
128
|
-
//
|
|
129
|
-
mergedProps =
|
|
130
|
-
if (app
|
|
63
|
+
// update existing app props
|
|
64
|
+
const mergedProps = { ...parameters?.args, ...args, ...story.props };
|
|
65
|
+
if (app?.root?.controller?.viewModel) {
|
|
131
66
|
Object.assign(app.root.controller.viewModel, mergedProps);
|
|
132
67
|
}
|
|
133
68
|
}
|
|
134
|
-
//
|
|
135
|
-
const channel = storyContext.viewMode === 'story' ? storyContext.channel : null;
|
|
136
|
-
let onStoryChange;
|
|
137
|
-
if (channel) {
|
|
138
|
-
onStoryChange = () => {
|
|
139
|
-
// When the story changes, clean up the Aurelia app
|
|
140
|
-
teardown(canvasElement);
|
|
141
|
-
};
|
|
142
|
-
channel.on(m, onStoryChange);
|
|
143
|
-
}
|
|
144
|
-
// Return teardown function that also unsubscribes from STORY_CHANGED
|
|
69
|
+
// Return cleanup fn
|
|
145
70
|
return async () => {
|
|
146
|
-
|
|
147
|
-
channel.off(m, onStoryChange);
|
|
148
|
-
}
|
|
149
|
-
await teardown(canvasElement);
|
|
71
|
+
await teardown(rootElement);
|
|
150
72
|
};
|
|
151
73
|
}
|
|
152
|
-
function
|
|
74
|
+
function createAureliaApp(story, args, domElement, component) {
|
|
153
75
|
const aurelia = new Aurelia(story.container);
|
|
154
76
|
if (story.items?.length) {
|
|
155
77
|
aurelia.register(...story.items);
|
|
@@ -162,8 +84,8 @@ function bootstrapAureliaApp(story, args, domElement, component) {
|
|
|
162
84
|
template = template ?? createComponentTemplate(component, story.innerHtml);
|
|
163
85
|
aurelia.register(component);
|
|
164
86
|
}
|
|
165
|
-
const App =
|
|
166
|
-
name: '
|
|
87
|
+
const App = CustomElement.define({
|
|
88
|
+
name: 'sb-app',
|
|
167
89
|
template,
|
|
168
90
|
containerless: true,
|
|
169
91
|
}, class {
|
|
@@ -175,14 +97,36 @@ function bootstrapAureliaApp(story, args, domElement, component) {
|
|
|
175
97
|
});
|
|
176
98
|
}
|
|
177
99
|
function createComponentTemplate(component, innerHtml) {
|
|
178
|
-
const def =
|
|
100
|
+
const def = CustomElement.getDefinition(component);
|
|
179
101
|
return `<${def.name} ${Object.values(def.bindables)
|
|
180
102
|
.map((bindable) => `${bindable.attribute}.bind="${bindable.name}"`)
|
|
181
103
|
.join(' ')}>${innerHtml ?? ''}</${def.name}>`;
|
|
182
104
|
}
|
|
183
105
|
|
|
184
106
|
const render = renderToCanvas;
|
|
107
|
+
// Define the framework
|
|
108
|
+
const framework = {
|
|
109
|
+
name: '@aurelia/storybook',
|
|
110
|
+
options: {}
|
|
111
|
+
};
|
|
112
|
+
// Framework configuration for Storybook
|
|
113
|
+
const frameworkOptions = {
|
|
114
|
+
builder: {
|
|
115
|
+
name: '@storybook/builder-vite',
|
|
116
|
+
options: {}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
// Export a complete framework configuration
|
|
120
|
+
const aureliaFramework = {
|
|
121
|
+
name: '@aurelia/storybook',
|
|
122
|
+
options: {},
|
|
123
|
+
builder: '@storybook/builder-vite'
|
|
124
|
+
};
|
|
125
|
+
// Provide external dependencies configuration
|
|
126
|
+
const externals = {
|
|
127
|
+
'react': 'React',
|
|
128
|
+
'react-dom': 'ReactDOM'
|
|
129
|
+
};
|
|
185
130
|
|
|
186
|
-
|
|
187
|
-
exports.renderToCanvas = renderToCanvas;
|
|
131
|
+
export { aureliaFramework, externals, framework, frameworkOptions, render, renderToCanvas };
|
|
188
132
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/storybook/dist/core-events/index.js","../src/preview/render.ts","../src/index.ts"],"sourcesContent":["// src/core-events/index.ts\nvar R = /* @__PURE__ */ ((E) => (E.CHANNEL_WS_DISCONNECT = \"channelWSDisconnect\", E.CHANNEL_CREATED = \"channelCreated\", E.CONFIG_ERROR = \"co\\\nnfigError\", E.STORY_INDEX_INVALIDATED = \"storyIndexInvalidated\", E.STORY_SPECIFIED = \"storySpecified\", E.SET_CONFIG = \"setConfig\", E.SET_STORIES =\n\"setStories\", E.SET_INDEX = \"setIndex\", E.SET_CURRENT_STORY = \"setCurrentStory\", E.CURRENT_STORY_WAS_SET = \"currentStoryWasSet\", E.FORCE_RE_RENDER =\n\"forceReRender\", E.FORCE_REMOUNT = \"forceRemount\", E.PRELOAD_ENTRIES = \"preloadStories\", E.STORY_PREPARED = \"storyPrepared\", E.DOCS_PREPARED =\n\"docsPrepared\", E.STORY_CHANGED = \"storyChanged\", E.STORY_UNCHANGED = \"storyUnchanged\", E.STORY_RENDERED = \"storyRendered\", E.STORY_FINISHED =\n\"storyFinished\", E.STORY_MISSING = \"storyMissing\", E.STORY_ERRORED = \"storyErrored\", E.STORY_THREW_EXCEPTION = \"storyThrewException\", E.STORY_RENDER_PHASE_CHANGED =\n\"storyRenderPhaseChanged\", E.STORY_HOT_UPDATED = \"storyHotUpdated\", E.PLAY_FUNCTION_THREW_EXCEPTION = \"playFunctionThrewException\", E.UNHANDLED_ERRORS_WHILE_PLAYING =\n\"unhandledErrorsWhilePlaying\", E.UPDATE_STORY_ARGS = \"updateStoryArgs\", E.STORY_ARGS_UPDATED = \"storyArgsUpdated\", E.RESET_STORY_ARGS = \"res\\\netStoryArgs\", E.SET_FILTER = \"setFilter\", E.SET_GLOBALS = \"setGlobals\", E.UPDATE_GLOBALS = \"updateGlobals\", E.GLOBALS_UPDATED = \"globalsUpda\\\nted\", E.REGISTER_SUBSCRIPTION = \"registerSubscription\", E.PREVIEW_KEYDOWN = \"previewKeydown\", E.PREVIEW_BUILDER_PROGRESS = \"preview_builder_\\\nprogress\", E.SELECT_STORY = \"selectStory\", E.STORIES_COLLAPSE_ALL = \"storiesCollapseAll\", E.STORIES_EXPAND_ALL = \"storiesExpandAll\", E.DOCS_RENDERED =\n\"docsRendered\", E.SHARED_STATE_CHANGED = \"sharedStateChanged\", E.SHARED_STATE_SET = \"sharedStateSet\", E.NAVIGATE_URL = \"navigateUrl\", E.UPDATE_QUERY_PARAMS =\n\"updateQueryParams\", E.REQUEST_WHATS_NEW_DATA = \"requestWhatsNewData\", E.RESULT_WHATS_NEW_DATA = \"resultWhatsNewData\", E.SET_WHATS_NEW_CACHE =\n\"setWhatsNewCache\", E.TOGGLE_WHATS_NEW_NOTIFICATIONS = \"toggleWhatsNewNotifications\", E.TELEMETRY_ERROR = \"telemetryError\", E.FILE_COMPONENT_SEARCH_REQUEST =\n\"fileComponentSearchRequest\", E.FILE_COMPONENT_SEARCH_RESPONSE = \"fileComponentSearchResponse\", E.SAVE_STORY_REQUEST = \"saveStoryRequest\", E.\nSAVE_STORY_RESPONSE = \"saveStoryResponse\", E.ARGTYPES_INFO_REQUEST = \"argtypesInfoRequest\", E.ARGTYPES_INFO_RESPONSE = \"argtypesInfoResponse\",\nE.CREATE_NEW_STORYFILE_REQUEST = \"createNewStoryfileRequest\", E.CREATE_NEW_STORYFILE_RESPONSE = \"createNewStoryfileResponse\", E))(R || {}), S = R,\n{\n CHANNEL_WS_DISCONNECT: _,\n CHANNEL_CREATED: T,\n CONFIG_ERROR: O,\n CREATE_NEW_STORYFILE_REQUEST: A,\n CREATE_NEW_STORYFILE_RESPONSE: N,\n CURRENT_STORY_WAS_SET: r,\n DOCS_PREPARED: D,\n DOCS_RENDERED: I,\n FILE_COMPONENT_SEARCH_REQUEST: o,\n FILE_COMPONENT_SEARCH_RESPONSE: C,\n FORCE_RE_RENDER: P,\n FORCE_REMOUNT: L,\n GLOBALS_UPDATED: Y,\n NAVIGATE_URL: a,\n PLAY_FUNCTION_THREW_EXCEPTION: U,\n UNHANDLED_ERRORS_WHILE_PLAYING: H,\n PRELOAD_ENTRIES: G,\n PREVIEW_BUILDER_PROGRESS: W,\n PREVIEW_KEYDOWN: d,\n REGISTER_SUBSCRIPTION: t,\n RESET_STORY_ARGS: p,\n SELECT_STORY: i,\n SET_CONFIG: F,\n SET_CURRENT_STORY: l,\n SET_FILTER: y,\n SET_GLOBALS: e,\n SET_INDEX: c,\n SET_STORIES: h,\n SHARED_STATE_CHANGED: f,\n SHARED_STATE_SET: g,\n STORIES_COLLAPSE_ALL: u,\n STORIES_EXPAND_ALL: s,\n STORY_ARGS_UPDATED: x,\n STORY_CHANGED: m,\n STORY_ERRORED: M,\n STORY_INDEX_INVALIDATED: Q,\n STORY_MISSING: V,\n STORY_PREPARED: w,\n STORY_RENDER_PHASE_CHANGED: B,\n STORY_RENDERED: X,\n STORY_FINISHED: b,\n STORY_SPECIFIED: q,\n STORY_THREW_EXCEPTION: K,\n STORY_UNCHANGED: j,\n STORY_HOT_UPDATED: k,\n UPDATE_GLOBALS: z,\n UPDATE_QUERY_PARAMS: J,\n UPDATE_STORY_ARGS: Z,\n REQUEST_WHATS_NEW_DATA: $,\n RESULT_WHATS_NEW_DATA: n,\n SET_WHATS_NEW_CACHE: v,\n TOGGLE_WHATS_NEW_NOTIFICATIONS: EE,\n TELEMETRY_ERROR: RE,\n SAVE_STORY_REQUEST: SE,\n SAVE_STORY_RESPONSE: _E,\n ARGTYPES_INFO_REQUEST: TE,\n ARGTYPES_INFO_RESPONSE: OE\n} = R;\nexport {\n TE as ARGTYPES_INFO_REQUEST,\n OE as ARGTYPES_INFO_RESPONSE,\n T as CHANNEL_CREATED,\n _ as CHANNEL_WS_DISCONNECT,\n O as CONFIG_ERROR,\n A as CREATE_NEW_STORYFILE_REQUEST,\n N as CREATE_NEW_STORYFILE_RESPONSE,\n r as CURRENT_STORY_WAS_SET,\n D as DOCS_PREPARED,\n I as DOCS_RENDERED,\n o as FILE_COMPONENT_SEARCH_REQUEST,\n C as FILE_COMPONENT_SEARCH_RESPONSE,\n L as FORCE_REMOUNT,\n P as FORCE_RE_RENDER,\n Y as GLOBALS_UPDATED,\n a as NAVIGATE_URL,\n U as PLAY_FUNCTION_THREW_EXCEPTION,\n G as PRELOAD_ENTRIES,\n W as PREVIEW_BUILDER_PROGRESS,\n d as PREVIEW_KEYDOWN,\n t as REGISTER_SUBSCRIPTION,\n $ as REQUEST_WHATS_NEW_DATA,\n p as RESET_STORY_ARGS,\n n as RESULT_WHATS_NEW_DATA,\n SE as SAVE_STORY_REQUEST,\n _E as SAVE_STORY_RESPONSE,\n i as SELECT_STORY,\n F as SET_CONFIG,\n l as SET_CURRENT_STORY,\n y as SET_FILTER,\n e as SET_GLOBALS,\n c as SET_INDEX,\n h as SET_STORIES,\n v as SET_WHATS_NEW_CACHE,\n f as SHARED_STATE_CHANGED,\n g as SHARED_STATE_SET,\n u as STORIES_COLLAPSE_ALL,\n s as STORIES_EXPAND_ALL,\n x as STORY_ARGS_UPDATED,\n m as STORY_CHANGED,\n M as STORY_ERRORED,\n b as STORY_FINISHED,\n k as STORY_HOT_UPDATED,\n Q as STORY_INDEX_INVALIDATED,\n V as STORY_MISSING,\n w as STORY_PREPARED,\n X as STORY_RENDERED,\n B as STORY_RENDER_PHASE_CHANGED,\n q as STORY_SPECIFIED,\n K as STORY_THREW_EXCEPTION,\n j as STORY_UNCHANGED,\n RE as TELEMETRY_ERROR,\n EE as TOGGLE_WHATS_NEW_NOTIFICATIONS,\n H as UNHANDLED_ERRORS_WHILE_PLAYING,\n z as UPDATE_GLOBALS,\n J as UPDATE_QUERY_PARAMS,\n Z as UPDATE_STORY_ARGS,\n S as default\n};\n","import { STORY_CHANGED } from 'storybook/internal/core-events';\nimport type { RenderContext, ArgsStoryFn } from 'storybook/internal/types';\nimport type { AureliaRenderer } from './types';\nimport Aurelia, { Constructable, CustomElement } from 'aurelia';\n\ninterface AureliaStoryResult {\n template: string;\n components?: unknown[];\n Component?: unknown;\n container?: any;\n items?: unknown[];\n innerHtml?: string;\n props?: Record<string, any>;\n}\n\n/**\n * Merges multiple sources into a single object.\n * Sources can be story parameters, args, or story.props.\n */\nfunction mergeStoryProps(\n ...sources: Array<Record<string, any> | undefined>\n): Record<string, any> {\n return Object.assign({}, ...sources);\n}\n\n// Track Aurelia apps for cleanup\nconst appMap = new Map<HTMLElement, Aurelia>();\n\nasync function teardown(element: HTMLElement) {\n if (appMap.has(element)) {\n const app = appMap.get(element);\n if (app) {\n await app.stop();\n appMap.delete(element);\n }\n }\n}\n\nexport const render: ArgsStoryFn<AureliaRenderer> = (args, { id, component: Component }) => {\n if (!Component) {\n throw new Error(\n `Unable to render story ${id} as the component annotation is missing from the default export`\n );\n }\n return { Component, props: args, template: '' };\n};\n\nexport async function renderToCanvas(\n {\n storyFn,\n title,\n name,\n showMain,\n showError,\n storyContext,\n forceRemount,\n }: RenderContext<AureliaRenderer>,\n canvasElement: HTMLElement,\n bootstrapAppFn?: typeof bootstrapAureliaApp\n) {\n const appBootstrapFn = bootstrapAppFn || bootstrapAureliaApp;\n\n const { parameters, component, args } = storyContext;\n let app = appMap.get(canvasElement);\n\n const story = storyFn() as AureliaStoryResult;\n\n if (!story) {\n showError({\n title: `Expecting an Aurelia component from the story: \"${name}\" of \"${title}\".`,\n description: `\n Did you forget to return the Aurelia component from the story?\n Use \"() => ({ template: '<custom-component></custom-component>' })\" when defining the story.\n `,\n });\n return () => {};\n }\n\n showMain();\n\n let mergedProps;\n // Use full merge (including story.props) when bootstrapping a new app or force remounting.\n if (!app || forceRemount) {\n mergedProps = mergeStoryProps(parameters?.args, args, story.props);\n if (app) {\n await teardown(canvasElement);\n }\n app = appBootstrapFn(\n story,\n mergedProps,\n canvasElement,\n component as Constructable\n ) as Aurelia;\n await app.start();\n appMap.set(canvasElement, app);\n } else {\n // Update the existing app viewModel only with parameters and args (exclude story.props).\n mergedProps = mergeStoryProps(parameters?.args, args);\n if (app.root?.controller?.viewModel) {\n Object.assign(app.root.controller.viewModel, mergedProps);\n }\n }\n\n // Set up story change listener for cleanup\n const channel = storyContext.viewMode === 'story' ? storyContext.channel : null;\n let onStoryChange: () => void;\n if (channel) {\n onStoryChange = () => {\n // When the story changes, clean up the Aurelia app\n teardown(canvasElement);\n };\n channel.on(STORY_CHANGED, onStoryChange);\n }\n\n // Return teardown function that also unsubscribes from STORY_CHANGED\n return async () => {\n if (channel && onStoryChange) {\n channel.off(STORY_CHANGED, onStoryChange);\n }\n await teardown(canvasElement);\n };\n}\n\nexport function bootstrapAureliaApp(\n story: AureliaStoryResult,\n args: Record<string, any>,\n domElement: HTMLElement,\n component?: Constructable\n) {\n const aurelia = new Aurelia(story.container);\n\n if (story.items?.length) {\n aurelia.register(...story.items);\n }\n\n if (story.components?.length) {\n aurelia.register(...story.components);\n }\n\n let { template } = story;\n\n if (component) {\n template = template ?? createComponentTemplate(component, story.innerHtml);\n aurelia.register(component);\n }\n\n const App = CustomElement.define(\n {\n name: 'au-storybook',\n template,\n containerless: true,\n },\n class {}\n );\n\n const app = Object.assign(new App(), args);\n\n return aurelia.app({\n host: domElement,\n component: app,\n });\n}\n\nexport function createComponentTemplate(\n component: Constructable,\n innerHtml?: string\n): string {\n const def = CustomElement.getDefinition(component);\n\n return `<${def.name} ${Object.values(def.bindables)\n .map((bindable) => `${bindable.attribute}.bind=\"${bindable.name}\"`)\n .join(' ')}>${innerHtml ?? ''}</${def.name}>`;\n}","import { renderToCanvas } from './preview/render';\n\nexport { renderToCanvas };\nexport const render = renderToCanvas;\n"],"names":["STORY_CHANGED","CustomElement"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/preview/render.ts","../src/index.ts"],"sourcesContent":["import { STORY_CHANGED } from 'storybook/internal/core-events';\nimport type { RenderContext, ArgsStoryFn } from 'storybook/internal/types';\nimport type { AureliaRenderer } from './types';\nimport Aurelia, { Constructable, CustomElement } from 'aurelia';\n\ninterface AureliaStoryResult {\n template: string;\n components?: unknown[];\n Component?: unknown;\n container?: any;\n items?: unknown[];\n innerHtml?: string;\n props?: Record<string, any>;\n}\n\n// Track Aurelia apps for cleanup\nconst appMap = new Map<HTMLElement, any>();\n\nasync function teardown(element: HTMLElement) {\n if (appMap.has(element)) {\n const app = appMap.get(element);\n if (app) {\n await app.stop();\n appMap.delete(element);\n }\n }\n}\n\nexport const render: ArgsStoryFn<AureliaRenderer> = (args, context) => {\n const { id, component: Component } = context;\n \n if (!Component) {\n throw new Error(\n `Unable to render story ${id} as the component annotation is missing from the default export`\n );\n }\n return { Component, props: args, template: '' };\n};\n\nexport async function renderToCanvas(\n {\n storyFn,\n title,\n name,\n showMain,\n showError,\n storyContext,\n forceRemount,\n }: RenderContext<AureliaRenderer>,\n canvasElement: HTMLElement,\n bootstrapAppFn?: typeof createAureliaApp\n) {\n // Store reference to the original storybook root element\n const rootElement = canvasElement;\n\n // Ensure we have (or create) a single container inside the root where the Aurelia app actually renders\n let hostElement: HTMLElement;\n if (rootElement.id === 'storybook-root') {\n hostElement = rootElement.querySelector('.aurelia-story-container') as HTMLElement;\n if (!hostElement) {\n hostElement = document.createElement('div');\n hostElement.className = 'aurelia-story-container';\n hostElement.style.height = '100%';\n rootElement.appendChild(hostElement);\n }\n } else {\n hostElement = rootElement;\n }\n\n // All app instances are now tracked by the *root* element, ensuring we only ever have one per story iframe\n const appBootstrapFn = bootstrapAppFn ?? createAureliaApp;\n const { parameters, component, args } = storyContext;\n \n let app = appMap.get(rootElement);\n const story = storyFn() as AureliaStoryResult;\n \n // Temporary debug logging\n console.log(`[DEBUG] Story: ${name}, forceRemount: ${forceRemount}, hasExistingApp: ${!!app}, canvasId: ${canvasElement.className}`);\n\n if (!story) {\n showError({\n title: `Expecting an Aurelia component from the story: \"${name}\" of \"${title}\".`,\n description: `\n Did you forget to return the Aurelia component from the story?\n Use \"() => ({ template: '<custom-component></custom-component>' })\" when defining the story.\n `,\n });\n return () => {};\n }\n\n showMain();\n\n if (!app || forceRemount) {\n if (forceRemount && app) {\n await teardown(rootElement);\n app = undefined;\n }\n // Clear container before mounting new app\n hostElement.innerHTML = '';\n\n const mergedProps = { ...parameters?.args, ...args, ...story.props };\n\n const aureliaApp = appBootstrapFn(\n story,\n mergedProps,\n hostElement,\n component as Constructable\n );\n await aureliaApp.start();\n appMap.set(rootElement, aureliaApp);\n app = aureliaApp;\n } else {\n // update existing app props\n const mergedProps = { ...parameters?.args, ...args, ...story.props };\n if (app?.root?.controller?.viewModel) {\n Object.assign(app.root.controller.viewModel, mergedProps);\n }\n }\n\n // Return cleanup fn\n return async () => {\n await teardown(rootElement);\n };\n}\n\nexport function createAureliaApp(\n story: AureliaStoryResult,\n args: Record<string, any>,\n domElement: HTMLElement,\n component?: Constructable\n) {\n const aurelia = new Aurelia(story.container);\n\n if (story.items?.length) {\n aurelia.register(...story.items);\n }\n\n if (story.components?.length) {\n aurelia.register(...story.components);\n }\n\n let { template } = story;\n\n if (component) {\n template = template ?? createComponentTemplate(component, story.innerHtml);\n aurelia.register(component);\n }\n\n const App = CustomElement.define(\n {\n name: 'sb-app',\n template,\n containerless: true,\n },\n class {}\n );\n\n const app = Object.assign(new App(), args);\n\n return aurelia.app({\n host: domElement,\n component: app,\n });\n}\n\nexport function createComponentTemplate(\n component: Constructable,\n innerHtml?: string\n): string {\n const def = CustomElement.getDefinition(component);\n\n return `<${def.name} ${Object.values(def.bindables)\n .map((bindable) => `${bindable.attribute}.bind=\"${bindable.name}\"`)\n .join(' ')}>${innerHtml ?? ''}</${def.name}>`;\n}","import type { StorybookConfig } from 'storybook/internal/types';\nimport { renderToCanvas } from './preview/render';\n\nexport { renderToCanvas };\nexport const render = renderToCanvas;\n\n// Define the framework\nexport const framework = {\n name: '@aurelia/storybook',\n options: {}\n};\n\n// Framework configuration for Storybook\nexport const frameworkOptions = {\n builder: {\n name: '@storybook/builder-vite',\n options: {}\n }\n};\n\n// Export a complete framework configuration\nexport const aureliaFramework = {\n name: '@aurelia/storybook',\n options: {},\n builder: '@storybook/builder-vite'\n};\n\n// Provide external dependencies configuration\nexport const externals = {\n 'react': 'React',\n 'react-dom': 'ReactDOM'\n};\n"],"names":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,89 +1,5 @@
|
|
|
1
1
|
import Aurelia, { CustomElement } from 'aurelia';
|
|
2
2
|
|
|
3
|
-
// src/core-events/index.ts
|
|
4
|
-
var R = /* @__PURE__ */ ((E) => (E.CHANNEL_WS_DISCONNECT = "channelWSDisconnect", E.CHANNEL_CREATED = "channelCreated", E.CONFIG_ERROR = "co\
|
|
5
|
-
nfigError", E.STORY_INDEX_INVALIDATED = "storyIndexInvalidated", E.STORY_SPECIFIED = "storySpecified", E.SET_CONFIG = "setConfig", E.SET_STORIES =
|
|
6
|
-
"setStories", E.SET_INDEX = "setIndex", E.SET_CURRENT_STORY = "setCurrentStory", E.CURRENT_STORY_WAS_SET = "currentStoryWasSet", E.FORCE_RE_RENDER =
|
|
7
|
-
"forceReRender", E.FORCE_REMOUNT = "forceRemount", E.PRELOAD_ENTRIES = "preloadStories", E.STORY_PREPARED = "storyPrepared", E.DOCS_PREPARED =
|
|
8
|
-
"docsPrepared", E.STORY_CHANGED = "storyChanged", E.STORY_UNCHANGED = "storyUnchanged", E.STORY_RENDERED = "storyRendered", E.STORY_FINISHED =
|
|
9
|
-
"storyFinished", E.STORY_MISSING = "storyMissing", E.STORY_ERRORED = "storyErrored", E.STORY_THREW_EXCEPTION = "storyThrewException", E.STORY_RENDER_PHASE_CHANGED =
|
|
10
|
-
"storyRenderPhaseChanged", E.STORY_HOT_UPDATED = "storyHotUpdated", E.PLAY_FUNCTION_THREW_EXCEPTION = "playFunctionThrewException", E.UNHANDLED_ERRORS_WHILE_PLAYING =
|
|
11
|
-
"unhandledErrorsWhilePlaying", E.UPDATE_STORY_ARGS = "updateStoryArgs", E.STORY_ARGS_UPDATED = "storyArgsUpdated", E.RESET_STORY_ARGS = "res\
|
|
12
|
-
etStoryArgs", E.SET_FILTER = "setFilter", E.SET_GLOBALS = "setGlobals", E.UPDATE_GLOBALS = "updateGlobals", E.GLOBALS_UPDATED = "globalsUpda\
|
|
13
|
-
ted", E.REGISTER_SUBSCRIPTION = "registerSubscription", E.PREVIEW_KEYDOWN = "previewKeydown", E.PREVIEW_BUILDER_PROGRESS = "preview_builder_\
|
|
14
|
-
progress", E.SELECT_STORY = "selectStory", E.STORIES_COLLAPSE_ALL = "storiesCollapseAll", E.STORIES_EXPAND_ALL = "storiesExpandAll", E.DOCS_RENDERED =
|
|
15
|
-
"docsRendered", E.SHARED_STATE_CHANGED = "sharedStateChanged", E.SHARED_STATE_SET = "sharedStateSet", E.NAVIGATE_URL = "navigateUrl", E.UPDATE_QUERY_PARAMS =
|
|
16
|
-
"updateQueryParams", E.REQUEST_WHATS_NEW_DATA = "requestWhatsNewData", E.RESULT_WHATS_NEW_DATA = "resultWhatsNewData", E.SET_WHATS_NEW_CACHE =
|
|
17
|
-
"setWhatsNewCache", E.TOGGLE_WHATS_NEW_NOTIFICATIONS = "toggleWhatsNewNotifications", E.TELEMETRY_ERROR = "telemetryError", E.FILE_COMPONENT_SEARCH_REQUEST =
|
|
18
|
-
"fileComponentSearchRequest", E.FILE_COMPONENT_SEARCH_RESPONSE = "fileComponentSearchResponse", E.SAVE_STORY_REQUEST = "saveStoryRequest", E.
|
|
19
|
-
SAVE_STORY_RESPONSE = "saveStoryResponse", E.ARGTYPES_INFO_REQUEST = "argtypesInfoRequest", E.ARGTYPES_INFO_RESPONSE = "argtypesInfoResponse",
|
|
20
|
-
E.CREATE_NEW_STORYFILE_REQUEST = "createNewStoryfileRequest", E.CREATE_NEW_STORYFILE_RESPONSE = "createNewStoryfileResponse", E))(R || {}), {
|
|
21
|
-
CHANNEL_WS_DISCONNECT: _,
|
|
22
|
-
CHANNEL_CREATED: T,
|
|
23
|
-
CONFIG_ERROR: O,
|
|
24
|
-
CREATE_NEW_STORYFILE_REQUEST: A,
|
|
25
|
-
CREATE_NEW_STORYFILE_RESPONSE: N,
|
|
26
|
-
CURRENT_STORY_WAS_SET: r,
|
|
27
|
-
DOCS_PREPARED: D,
|
|
28
|
-
DOCS_RENDERED: I,
|
|
29
|
-
FILE_COMPONENT_SEARCH_REQUEST: o,
|
|
30
|
-
FILE_COMPONENT_SEARCH_RESPONSE: C,
|
|
31
|
-
FORCE_RE_RENDER: P,
|
|
32
|
-
FORCE_REMOUNT: L,
|
|
33
|
-
GLOBALS_UPDATED: Y,
|
|
34
|
-
NAVIGATE_URL: a,
|
|
35
|
-
PLAY_FUNCTION_THREW_EXCEPTION: U,
|
|
36
|
-
UNHANDLED_ERRORS_WHILE_PLAYING: H,
|
|
37
|
-
PRELOAD_ENTRIES: G,
|
|
38
|
-
PREVIEW_BUILDER_PROGRESS: W,
|
|
39
|
-
PREVIEW_KEYDOWN: d,
|
|
40
|
-
REGISTER_SUBSCRIPTION: t,
|
|
41
|
-
RESET_STORY_ARGS: p,
|
|
42
|
-
SELECT_STORY: i,
|
|
43
|
-
SET_CONFIG: F,
|
|
44
|
-
SET_CURRENT_STORY: l,
|
|
45
|
-
SET_FILTER: y,
|
|
46
|
-
SET_GLOBALS: e,
|
|
47
|
-
SET_INDEX: c,
|
|
48
|
-
SET_STORIES: h,
|
|
49
|
-
SHARED_STATE_CHANGED: f,
|
|
50
|
-
SHARED_STATE_SET: g,
|
|
51
|
-
STORIES_COLLAPSE_ALL: u,
|
|
52
|
-
STORIES_EXPAND_ALL: s,
|
|
53
|
-
STORY_ARGS_UPDATED: x,
|
|
54
|
-
STORY_CHANGED: m,
|
|
55
|
-
STORY_ERRORED: M,
|
|
56
|
-
STORY_INDEX_INVALIDATED: Q,
|
|
57
|
-
STORY_MISSING: V,
|
|
58
|
-
STORY_PREPARED: w,
|
|
59
|
-
STORY_RENDER_PHASE_CHANGED: B,
|
|
60
|
-
STORY_RENDERED: X,
|
|
61
|
-
STORY_FINISHED: b,
|
|
62
|
-
STORY_SPECIFIED: q,
|
|
63
|
-
STORY_THREW_EXCEPTION: K,
|
|
64
|
-
STORY_UNCHANGED: j,
|
|
65
|
-
STORY_HOT_UPDATED: k,
|
|
66
|
-
UPDATE_GLOBALS: z,
|
|
67
|
-
UPDATE_QUERY_PARAMS: J,
|
|
68
|
-
UPDATE_STORY_ARGS: Z,
|
|
69
|
-
REQUEST_WHATS_NEW_DATA: $,
|
|
70
|
-
RESULT_WHATS_NEW_DATA: n,
|
|
71
|
-
SET_WHATS_NEW_CACHE: v,
|
|
72
|
-
TOGGLE_WHATS_NEW_NOTIFICATIONS: EE,
|
|
73
|
-
TELEMETRY_ERROR: RE,
|
|
74
|
-
SAVE_STORY_REQUEST: SE,
|
|
75
|
-
SAVE_STORY_RESPONSE: _E,
|
|
76
|
-
ARGTYPES_INFO_REQUEST: TE,
|
|
77
|
-
ARGTYPES_INFO_RESPONSE: OE
|
|
78
|
-
} = R;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Merges multiple sources into a single object.
|
|
82
|
-
* Sources can be story parameters, args, or story.props.
|
|
83
|
-
*/
|
|
84
|
-
function mergeStoryProps(...sources) {
|
|
85
|
-
return Object.assign({}, ...sources);
|
|
86
|
-
}
|
|
87
3
|
// Track Aurelia apps for cleanup
|
|
88
4
|
const appMap = new Map();
|
|
89
5
|
async function teardown(element) {
|
|
@@ -96,10 +12,29 @@ async function teardown(element) {
|
|
|
96
12
|
}
|
|
97
13
|
}
|
|
98
14
|
async function renderToCanvas({ storyFn, title, name, showMain, showError, storyContext, forceRemount, }, canvasElement, bootstrapAppFn) {
|
|
99
|
-
|
|
15
|
+
// Store reference to the original storybook root element
|
|
16
|
+
const rootElement = canvasElement;
|
|
17
|
+
// Ensure we have (or create) a single container inside the root where the Aurelia app actually renders
|
|
18
|
+
let hostElement;
|
|
19
|
+
if (rootElement.id === 'storybook-root') {
|
|
20
|
+
hostElement = rootElement.querySelector('.aurelia-story-container');
|
|
21
|
+
if (!hostElement) {
|
|
22
|
+
hostElement = document.createElement('div');
|
|
23
|
+
hostElement.className = 'aurelia-story-container';
|
|
24
|
+
hostElement.style.height = '100%';
|
|
25
|
+
rootElement.appendChild(hostElement);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
hostElement = rootElement;
|
|
30
|
+
}
|
|
31
|
+
// All app instances are now tracked by the *root* element, ensuring we only ever have one per story iframe
|
|
32
|
+
const appBootstrapFn = bootstrapAppFn ?? createAureliaApp;
|
|
100
33
|
const { parameters, component, args } = storyContext;
|
|
101
|
-
let app = appMap.get(
|
|
34
|
+
let app = appMap.get(rootElement);
|
|
102
35
|
const story = storyFn();
|
|
36
|
+
// Temporary debug logging
|
|
37
|
+
console.log(`[DEBUG] Story: ${name}, forceRemount: ${forceRemount}, hasExistingApp: ${!!app}, canvasId: ${canvasElement.className}`);
|
|
103
38
|
if (!story) {
|
|
104
39
|
showError({
|
|
105
40
|
title: `Expecting an Aurelia component from the story: "${name}" of "${title}".`,
|
|
@@ -111,43 +46,32 @@ async function renderToCanvas({ storyFn, title, name, showMain, showError, story
|
|
|
111
46
|
return () => { };
|
|
112
47
|
}
|
|
113
48
|
showMain();
|
|
114
|
-
let mergedProps;
|
|
115
|
-
// Use full merge (including story.props) when bootstrapping a new app or force remounting.
|
|
116
49
|
if (!app || forceRemount) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
50
|
+
if (forceRemount && app) {
|
|
51
|
+
await teardown(rootElement);
|
|
52
|
+
app = undefined;
|
|
120
53
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
54
|
+
// Clear container before mounting new app
|
|
55
|
+
hostElement.innerHTML = '';
|
|
56
|
+
const mergedProps = { ...parameters?.args, ...args, ...story.props };
|
|
57
|
+
const aureliaApp = appBootstrapFn(story, mergedProps, hostElement, component);
|
|
58
|
+
await aureliaApp.start();
|
|
59
|
+
appMap.set(rootElement, aureliaApp);
|
|
60
|
+
app = aureliaApp;
|
|
124
61
|
}
|
|
125
62
|
else {
|
|
126
|
-
//
|
|
127
|
-
mergedProps =
|
|
128
|
-
if (app
|
|
63
|
+
// update existing app props
|
|
64
|
+
const mergedProps = { ...parameters?.args, ...args, ...story.props };
|
|
65
|
+
if (app?.root?.controller?.viewModel) {
|
|
129
66
|
Object.assign(app.root.controller.viewModel, mergedProps);
|
|
130
67
|
}
|
|
131
68
|
}
|
|
132
|
-
//
|
|
133
|
-
const channel = storyContext.viewMode === 'story' ? storyContext.channel : null;
|
|
134
|
-
let onStoryChange;
|
|
135
|
-
if (channel) {
|
|
136
|
-
onStoryChange = () => {
|
|
137
|
-
// When the story changes, clean up the Aurelia app
|
|
138
|
-
teardown(canvasElement);
|
|
139
|
-
};
|
|
140
|
-
channel.on(m, onStoryChange);
|
|
141
|
-
}
|
|
142
|
-
// Return teardown function that also unsubscribes from STORY_CHANGED
|
|
69
|
+
// Return cleanup fn
|
|
143
70
|
return async () => {
|
|
144
|
-
|
|
145
|
-
channel.off(m, onStoryChange);
|
|
146
|
-
}
|
|
147
|
-
await teardown(canvasElement);
|
|
71
|
+
await teardown(rootElement);
|
|
148
72
|
};
|
|
149
73
|
}
|
|
150
|
-
function
|
|
74
|
+
function createAureliaApp(story, args, domElement, component) {
|
|
151
75
|
const aurelia = new Aurelia(story.container);
|
|
152
76
|
if (story.items?.length) {
|
|
153
77
|
aurelia.register(...story.items);
|
|
@@ -161,7 +85,7 @@ function bootstrapAureliaApp(story, args, domElement, component) {
|
|
|
161
85
|
aurelia.register(component);
|
|
162
86
|
}
|
|
163
87
|
const App = CustomElement.define({
|
|
164
|
-
name: '
|
|
88
|
+
name: 'sb-app',
|
|
165
89
|
template,
|
|
166
90
|
containerless: true,
|
|
167
91
|
}, class {
|
|
@@ -180,6 +104,29 @@ function createComponentTemplate(component, innerHtml) {
|
|
|
180
104
|
}
|
|
181
105
|
|
|
182
106
|
const render = renderToCanvas;
|
|
107
|
+
// Define the framework
|
|
108
|
+
const framework = {
|
|
109
|
+
name: '@aurelia/storybook',
|
|
110
|
+
options: {}
|
|
111
|
+
};
|
|
112
|
+
// Framework configuration for Storybook
|
|
113
|
+
const frameworkOptions = {
|
|
114
|
+
builder: {
|
|
115
|
+
name: '@storybook/builder-vite',
|
|
116
|
+
options: {}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
// Export a complete framework configuration
|
|
120
|
+
const aureliaFramework = {
|
|
121
|
+
name: '@aurelia/storybook',
|
|
122
|
+
options: {},
|
|
123
|
+
builder: '@storybook/builder-vite'
|
|
124
|
+
};
|
|
125
|
+
// Provide external dependencies configuration
|
|
126
|
+
const externals = {
|
|
127
|
+
'react': 'React',
|
|
128
|
+
'react-dom': 'ReactDOM'
|
|
129
|
+
};
|
|
183
130
|
|
|
184
|
-
export { render, renderToCanvas };
|
|
131
|
+
export { aureliaFramework, externals, framework, frameworkOptions, render, renderToCanvas };
|
|
185
132
|
//# sourceMappingURL=index.mjs.map
|