@storybook/web-components 11.0.0-alpha.1 → 11.0.0-alpha.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.
@@ -0,0 +1,172 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-4BE7D4DS.js";
4
+
5
+ // src/entry-preview.ts
6
+ var entry_preview_exports = {};
7
+ __export(entry_preview_exports, {
8
+ parameters: () => parameters,
9
+ render: () => render,
10
+ renderToCanvas: () => renderToCanvas
11
+ });
12
+
13
+ // src/render.ts
14
+ import { global } from "@storybook/global";
15
+ import { render as litRender } from "lit";
16
+ import { isTemplateResult } from "lit/directive-helpers.js";
17
+ import { simulateDOMContentLoaded, simulatePageLoad } from "storybook/preview-api";
18
+ import { dedent } from "ts-dedent";
19
+
20
+ // src/arg-keys.ts
21
+ var DEFAULT_SLOT_NAME = "default";
22
+ function parseArgKey(key) {
23
+ if (key.startsWith("--"))
24
+ return { category: "cssProperties", name: key };
25
+ for (let [category, suffix] of Object.entries(ARG_KEY_SUFFIXES))
26
+ if (key.endsWith(suffix))
27
+ return { category, name: key.slice(0, -suffix.length) };
28
+ }
29
+ var ARG_KEY_SUFFIXES = {
30
+ events: "-event",
31
+ methods: "-method",
32
+ slots: "-slot",
33
+ cssParts: "-part",
34
+ cssStates: "-state"
35
+ };
36
+
37
+ // src/bind-args.ts
38
+ var BINDERS = {
39
+ events: (element, name, value) => {
40
+ typeof value == "function" && element.addEventListener(name, value);
41
+ },
42
+ methods: () => {
43
+ },
44
+ slots: bindSlot,
45
+ cssParts: (element, name, value) => styleRule(`${element.localName}::part(${name})`, value),
46
+ cssStates: (element, name, value) => styleRule(`${element.localName}:state(${name})`, value)
47
+ };
48
+ function bindArgs(element, args) {
49
+ let observedAttributes = observedAttributesOf(element), styleRules = [];
50
+ for (let [key, value] of Object.entries(args)) {
51
+ let parsedKey = parseArgKey(key);
52
+ if (parsedKey?.category === "cssProperties") {
53
+ bindCssCustomProperty(element, key, value);
54
+ continue;
55
+ }
56
+ if (key in element) {
57
+ assignProperty(element, key, value);
58
+ continue;
59
+ }
60
+ if (observedAttributes.has(key) && isPrimitive(value)) {
61
+ bindAttribute(element, key, value);
62
+ continue;
63
+ }
64
+ if (parsedKey) {
65
+ let rule = BINDERS[parsedKey.category](element, parsedKey.name, value);
66
+ rule && styleRules.push(rule);
67
+ continue;
68
+ }
69
+ assignProperty(element, key, value);
70
+ }
71
+ return styleRules;
72
+ }
73
+ function observedAttributesOf(element) {
74
+ let observedAttributes = customElements.get(element.localName)?.observedAttributes;
75
+ return new Set(Array.isArray(observedAttributes) ? observedAttributes : []);
76
+ }
77
+ function isPrimitive(value) {
78
+ return value === null || typeof value != "object" && typeof value != "function";
79
+ }
80
+ function isUnset(value) {
81
+ return value == null || value === "";
82
+ }
83
+ function assignProperty(element, key, value) {
84
+ element[key] = value;
85
+ }
86
+ function bindAttribute(element, name, value) {
87
+ isUnset(value) || value === !1 || element.setAttribute(name, value === !0 ? "" : String(value));
88
+ }
89
+ function bindCssCustomProperty(element, name, value) {
90
+ isUnset(value) || element.style.setProperty(name, String(value));
91
+ }
92
+ function bindSlot(element, name, value) {
93
+ if (isUnset(value))
94
+ return;
95
+ let template = document.createElement("template");
96
+ template.innerHTML = String(value);
97
+ let nodes = Array.from(template.content.childNodes);
98
+ if (name === DEFAULT_SLOT_NAME) {
99
+ element.append(...nodes);
100
+ return;
101
+ }
102
+ for (let node of nodes) {
103
+ let slottedNode = toNamedSlotNode(node, name);
104
+ slottedNode && element.append(slottedNode);
105
+ }
106
+ }
107
+ function toNamedSlotNode(node, name) {
108
+ if (node.nodeType === Node.ELEMENT_NODE)
109
+ return node.slot = name, node;
110
+ if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
111
+ let span = document.createElement("span");
112
+ return span.slot = name, span.textContent = node.textContent, span;
113
+ }
114
+ }
115
+ function styleRule(selector, value) {
116
+ if (!isUnset(value))
117
+ return `${selector} { ${String(value)} }`;
118
+ }
119
+
120
+ // src/render.ts
121
+ var { Node: Node2 } = global, render = (args, context) => {
122
+ let { id, component } = context;
123
+ if (!component)
124
+ throw new Error(
125
+ `Unable to render story ${id} as the component annotation is missing from the default export`
126
+ );
127
+ let element = document.createElement(component);
128
+ if (!global.FEATURES?.experimentalDocgenServer)
129
+ return Object.assign(element, args);
130
+ let styleRules = bindArgs(element, args), fragment = document.createDocumentFragment();
131
+ if (styleRules.length > 0) {
132
+ let style = document.createElement("style");
133
+ style.textContent = `@scope {
134
+ ${styleRules.map((rule) => `:scope > style + ${rule}`).join(`
135
+ `)}
136
+ }`, fragment.append(style);
137
+ }
138
+ return fragment.append(element), fragment;
139
+ };
140
+ function renderToCanvas({ storyFn, kind, name, showMain, showError, forceRemount }, canvasElement) {
141
+ let element = storyFn();
142
+ if (showMain(), isTemplateResult(element)) {
143
+ (forceRemount || !canvasElement.querySelector('[id="root-inner"]')) && (canvasElement.innerHTML = '<div id="root-inner"></div>');
144
+ let renderTo = canvasElement.querySelector('[id="root-inner"]');
145
+ litRender(element, renderTo), simulatePageLoad(canvasElement);
146
+ } else if (typeof element == "string")
147
+ canvasElement.innerHTML = element, simulatePageLoad(canvasElement);
148
+ else if (element instanceof Node2) {
149
+ if (canvasElement.firstChild === element && !forceRemount)
150
+ return;
151
+ canvasElement.innerHTML = "", canvasElement.appendChild(element), simulateDOMContentLoaded();
152
+ } else
153
+ showError({
154
+ title: `Expecting an HTML snippet or DOM node from the story: "${name}" of "${kind}".`,
155
+ description: dedent`
156
+ Did you forget to return the HTML snippet from the story?
157
+ Use "() => <your snippet or node>" or when defining the story.
158
+ `
159
+ });
160
+ }
161
+
162
+ // src/entry-preview.ts
163
+ var parameters = {
164
+ renderer: "web-components"
165
+ };
166
+
167
+ export {
168
+ render,
169
+ renderToCanvas,
170
+ parameters,
171
+ entry_preview_exports
172
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  entry_preview_exports
3
- } from "./chunk-UN5GYDGC.js";
3
+ } from "./chunk-Z3YF52EY.js";
4
4
  import {
5
5
  entry_preview_docs_exports
6
6
  } from "./chunk-6ZSMINL7.js";
@@ -0,0 +1,56 @@
1
+ import CJS_COMPAT_NODE_URL_rucz8cqr0ps from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_rucz8cqr0ps from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_rucz8cqr0ps from "node:module";
4
+
5
+ var __filename = CJS_COMPAT_NODE_URL_rucz8cqr0ps.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_rucz8cqr0ps.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_rucz8cqr0ps.createRequire(import.meta.url);
8
+
9
+ // ------------------------------------------------------------
10
+ // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
+ // ------------------------------------------------------------
12
+
13
+ // src/docgen/component-docgen/utils.ts
14
+ function isRecord(value) {
15
+ return value !== null && typeof value == "object";
16
+ }
17
+ function namedItems(value) {
18
+ return Array.isArray(value) ? value.filter((item) => isRecord(item) && typeof item.name == "string") : [];
19
+ }
20
+ function errorMessage(error) {
21
+ return error instanceof Error ? error.message : String(error);
22
+ }
23
+ var trimmedOrUndefined = (text) => typeof text == "string" && text.trim() || void 0;
24
+ function deprecationMessage(deprecated) {
25
+ if (deprecated)
26
+ return typeof deprecated == "string" ? trimmedOrUndefined(deprecated) : "deprecated";
27
+ }
28
+ function firstValue(sources, read) {
29
+ for (let source of sources) {
30
+ let value = read(source);
31
+ if (value !== void 0)
32
+ return value;
33
+ }
34
+ }
35
+
36
+ // src/docgen/component-docgen/arg-types/alt-type.ts
37
+ var DEFAULT_TYPE_PROPERTY = "parsedType";
38
+ function readTypeText(item, typeProperty) {
39
+ let alternate = Reflect.get(item, typeProperty);
40
+ return isRecord(alternate) && typeof alternate.text == "string" && alternate.text.trim() ? alternate.text : typeof item.type?.text == "string" ? item.type.text : void 0;
41
+ }
42
+ function readCssPropertySyntax(property, typeProperty) {
43
+ return property.syntax ?? readTypeText(property, typeProperty);
44
+ }
45
+
46
+ export {
47
+ isRecord,
48
+ namedItems,
49
+ errorMessage,
50
+ trimmedOrUndefined,
51
+ deprecationMessage,
52
+ firstValue,
53
+ DEFAULT_TYPE_PROPERTY,
54
+ readTypeText,
55
+ readCssPropertySyntax
56
+ };