@particle-academy/fancy-slides 0.1.3 → 0.1.4
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,11 +1,13 @@
|
|
|
1
|
-
import { EChart } from '@particle-academy/fancy-echarts';
|
|
1
|
+
import { registerAll, registerBuiltinThemes, EChart } from '@particle-academy/fancy-echarts';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
// src/registry/element-renderers/chart-host.tsx
|
|
5
|
+
registerAll();
|
|
6
|
+
registerBuiltinThemes();
|
|
5
7
|
function ChartHost({ element }) {
|
|
6
8
|
return /* @__PURE__ */ jsx("div", { style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx(EChart, { option: element.option, theme: element.chartTheme }) });
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
export { ChartHost as default };
|
|
10
|
-
//# sourceMappingURL=chart-host-
|
|
11
|
-
//# sourceMappingURL=chart-host-
|
|
12
|
+
//# sourceMappingURL=chart-host-BHP6GUWO.js.map
|
|
13
|
+
//# sourceMappingURL=chart-host-BHP6GUWO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry/element-renderers/chart-host.tsx"],"names":[],"mappings":";;;;AAYA,WAAA,EAAY;AACZ,qBAAA,EAAsB;AAEP,SAAR,SAAA,CAA2B,EAAE,OAAA,EAAQ,EAAoD;AAC5F,EAAA,2BACK,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,QAAQ,MAAA,EAAQ,MAAA,EAAO,EACxC,QAAA,kBAAA,GAAA,CAAC,UAAO,MAAA,EAAQ,OAAA,CAAQ,QAAkD,KAAA,EAAO,OAAA,CAAQ,YAAY,CAAA,EACzG,CAAA;AAER","file":"chart-host-BHP6GUWO.js","sourcesContent":["import { EChart, registerAll, registerBuiltinThemes } from \"@particle-academy/fancy-echarts\";\nimport type { ChartElement } from \"../../types\";\n\n// fancy-echarts ships its chart types as opt-in tree-shake-friendly modules,\n// so the consumer normally calls `registerAll()` somewhere global. The\n// registry subpath here is the natural spot to wire it: this module only\n// loads when a deck actually contains a chart element (defaultElementRegistry\n// is React.lazy), so the registration cost is paid by chart-using hosts\n// only — non-chart consumers never even import this file.\n//\n// `registerAll()` is idempotent on echarts' side, so re-imports across\n// chunks are safe.\nregisterAll();\nregisterBuiltinThemes();\n\nexport default function ChartHost({ element }: { element: ChartElement; slideWidthPx: number }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <EChart option={element.option as Parameters<typeof EChart>[0][\"option\"]} theme={element.chartTheme} />\n </div>\n );\n}\n"]}
|
package/dist/registry.cjs
CHANGED
package/dist/registry.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registry/element-renderers/chart-host.tsx","../src/registry/element-renderers/code-host.tsx","../src/registry/element-renderers/table-host.tsx","../src/registry/element-renderers/embed-host.tsx","../src/registry/index.tsx"],"names":["jsx","EChart","CodeEditor","jsxs","Table","ChartHost","lazy","CodeHost","TableHost","EmbedHost","Suspense"],"mappings":"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","file":"registry.cjs","sourcesContent":["import { EChart } from \"@particle-academy/fancy-echarts\";\nimport type { ChartElement } from \"../../types\";\n\nexport default function ChartHost({ element }: { element: ChartElement; slideWidthPx: number }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <EChart option={element.option as Parameters<typeof EChart>[0][\"option\"]} theme={element.chartTheme} />\n </div>\n );\n}\n","import { CodeEditor } from \"@particle-academy/fancy-code\";\nimport type { CodeElement } from \"../../types\";\n\nexport default function CodeHost({ element }: { element: CodeElement }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\", overflow: \"hidden\", borderRadius: 8 }}>\n <CodeEditor\n value={element.code}\n language={element.language ?? \"javascript\"}\n theme={element.codeTheme ?? \"dark\"}\n readOnly\n lineNumbers={element.lineNumbers ?? true}\n >\n <CodeEditor.Panel />\n </CodeEditor>\n </div>\n );\n}\n","import { Table } from \"@particle-academy/react-fancy\";\nimport type { TableElement } from \"../../types\";\n\nexport default function TableHost({ element }: { element: TableElement }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\", overflow: \"auto\" }}>\n <Table className=\"w-full\">\n <Table.Head>\n <Table.Row>\n {element.columns.map((c) => (\n <Table.Cell key={c.key} header>\n {c.label}\n </Table.Cell>\n ))}\n </Table.Row>\n </Table.Head>\n <Table.Body>\n {element.rows.map((row, i) => (\n <Table.Row key={i}>\n {element.columns.map((c) => (\n <Table.Cell key={c.key}>{formatCell(row[c.key])}</Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </div>\n );\n}\n\nfunction formatCell(v: unknown): string {\n if (v == null) return \"\";\n if (typeof v === \"object\") return JSON.stringify(v);\n return String(v);\n}\n","import type { EmbedElement } from \"../../types\";\n\nexport default function EmbedHost({ element }: { element: EmbedElement }) {\n return (\n <iframe\n src={element.src}\n title={element.title ?? \"Embedded content\"}\n sandbox={element.sandbox ?? \"allow-scripts\"}\n style={{ width: \"100%\", height: \"100%\", border: 0, display: \"block\" }}\n />\n );\n}\n","/**\n * Default element registry. Wires up the element types fancy-slides doesn't\n * render natively (chart / code / table / embed) by composing the other\n * fancy packages as optional peer deps.\n *\n * Hosts opt into this by importing from the `/registry` subpath:\n *\n * import { defaultElementRegistry } from \"@particle-academy/fancy-slides/registry\";\n * <DeckEditor renderElement={defaultElementRegistry} … />\n *\n * Keeping it behind a subpath means consumers who only render decks with\n * built-in element types (text / image / shape) never pull fancy-echarts,\n * fancy-code, or react-fancy Table into their bundle.\n */\n\nimport { lazy, Suspense } from \"react\";\nimport type { ChartElement, CodeElement, SlideElement, EmbedElement, TableElement } from \"../types\";\n\nconst ChartHost = lazy(() => import(\"./element-renderers/chart-host\"));\nconst CodeHost = lazy(() => import(\"./element-renderers/code-host\"));\nconst TableHost = lazy(() => import(\"./element-renderers/table-host\"));\nconst EmbedHost = lazy(() => import(\"./element-renderers/embed-host\"));\n\nconst Loading = ({ label }: { label: string }) => (\n <div\n style={{\n display: \"grid\",\n placeItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n color: \"rgba(0,0,0,0.4)\",\n fontSize: 12,\n fontFamily: \"ui-sans-serif, system-ui, sans-serif\",\n }}\n >\n {label}…\n </div>\n);\n\n/**\n * Renderer signature compatible with `Slide`'s `renderElement` prop. Returns\n * `undefined` for element types fancy-slides handles itself, so the call\n * site falls back to the built-in renderer.\n */\nexport function defaultElementRegistry(element: SlideElement, slideWidthPx: number) {\n switch (element.type) {\n case \"chart\":\n return (\n <Suspense fallback={<Loading label=\"Loading chart\" />}>\n <ChartHost element={element as ChartElement} slideWidthPx={slideWidthPx} />\n </Suspense>\n );\n case \"code\":\n return (\n <Suspense fallback={<Loading label=\"Loading code\" />}>\n <CodeHost element={element as CodeElement} />\n </Suspense>\n );\n case \"table\":\n return (\n <Suspense fallback={<Loading label=\"Loading table\" />}>\n <TableHost element={element as TableElement} />\n </Suspense>\n );\n case \"embed\":\n return (\n <Suspense fallback={<Loading label=\"Loading embed\" />}>\n <EmbedHost element={element as EmbedElement} />\n </Suspense>\n );\n default:\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/registry/element-renderers/chart-host.tsx","../src/registry/element-renderers/code-host.tsx","../src/registry/element-renderers/table-host.tsx","../src/registry/element-renderers/embed-host.tsx","../src/registry/index.tsx"],"names":["jsx","EChart","registerAll","registerBuiltinThemes","CodeEditor","jsxs","Table","ChartHost","lazy","CodeHost","TableHost","EmbedHost","Suspense"],"mappings":"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","file":"registry.cjs","sourcesContent":["import { EChart, registerAll, registerBuiltinThemes } from \"@particle-academy/fancy-echarts\";\nimport type { ChartElement } from \"../../types\";\n\n// fancy-echarts ships its chart types as opt-in tree-shake-friendly modules,\n// so the consumer normally calls `registerAll()` somewhere global. The\n// registry subpath here is the natural spot to wire it: this module only\n// loads when a deck actually contains a chart element (defaultElementRegistry\n// is React.lazy), so the registration cost is paid by chart-using hosts\n// only — non-chart consumers never even import this file.\n//\n// `registerAll()` is idempotent on echarts' side, so re-imports across\n// chunks are safe.\nregisterAll();\nregisterBuiltinThemes();\n\nexport default function ChartHost({ element }: { element: ChartElement; slideWidthPx: number }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <EChart option={element.option as Parameters<typeof EChart>[0][\"option\"]} theme={element.chartTheme} />\n </div>\n );\n}\n","import { CodeEditor } from \"@particle-academy/fancy-code\";\nimport type { CodeElement } from \"../../types\";\n\nexport default function CodeHost({ element }: { element: CodeElement }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\", overflow: \"hidden\", borderRadius: 8 }}>\n <CodeEditor\n value={element.code}\n language={element.language ?? \"javascript\"}\n theme={element.codeTheme ?? \"dark\"}\n readOnly\n lineNumbers={element.lineNumbers ?? true}\n >\n <CodeEditor.Panel />\n </CodeEditor>\n </div>\n );\n}\n","import { Table } from \"@particle-academy/react-fancy\";\nimport type { TableElement } from \"../../types\";\n\nexport default function TableHost({ element }: { element: TableElement }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\", overflow: \"auto\" }}>\n <Table className=\"w-full\">\n <Table.Head>\n <Table.Row>\n {element.columns.map((c) => (\n <Table.Cell key={c.key} header>\n {c.label}\n </Table.Cell>\n ))}\n </Table.Row>\n </Table.Head>\n <Table.Body>\n {element.rows.map((row, i) => (\n <Table.Row key={i}>\n {element.columns.map((c) => (\n <Table.Cell key={c.key}>{formatCell(row[c.key])}</Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </div>\n );\n}\n\nfunction formatCell(v: unknown): string {\n if (v == null) return \"\";\n if (typeof v === \"object\") return JSON.stringify(v);\n return String(v);\n}\n","import type { EmbedElement } from \"../../types\";\n\nexport default function EmbedHost({ element }: { element: EmbedElement }) {\n return (\n <iframe\n src={element.src}\n title={element.title ?? \"Embedded content\"}\n sandbox={element.sandbox ?? \"allow-scripts\"}\n style={{ width: \"100%\", height: \"100%\", border: 0, display: \"block\" }}\n />\n );\n}\n","/**\n * Default element registry. Wires up the element types fancy-slides doesn't\n * render natively (chart / code / table / embed) by composing the other\n * fancy packages as optional peer deps.\n *\n * Hosts opt into this by importing from the `/registry` subpath:\n *\n * import { defaultElementRegistry } from \"@particle-academy/fancy-slides/registry\";\n * <DeckEditor renderElement={defaultElementRegistry} … />\n *\n * Keeping it behind a subpath means consumers who only render decks with\n * built-in element types (text / image / shape) never pull fancy-echarts,\n * fancy-code, or react-fancy Table into their bundle.\n */\n\nimport { lazy, Suspense } from \"react\";\nimport type { ChartElement, CodeElement, SlideElement, EmbedElement, TableElement } from \"../types\";\n\nconst ChartHost = lazy(() => import(\"./element-renderers/chart-host\"));\nconst CodeHost = lazy(() => import(\"./element-renderers/code-host\"));\nconst TableHost = lazy(() => import(\"./element-renderers/table-host\"));\nconst EmbedHost = lazy(() => import(\"./element-renderers/embed-host\"));\n\nconst Loading = ({ label }: { label: string }) => (\n <div\n style={{\n display: \"grid\",\n placeItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n color: \"rgba(0,0,0,0.4)\",\n fontSize: 12,\n fontFamily: \"ui-sans-serif, system-ui, sans-serif\",\n }}\n >\n {label}…\n </div>\n);\n\n/**\n * Renderer signature compatible with `Slide`'s `renderElement` prop. Returns\n * `undefined` for element types fancy-slides handles itself, so the call\n * site falls back to the built-in renderer.\n */\nexport function defaultElementRegistry(element: SlideElement, slideWidthPx: number) {\n switch (element.type) {\n case \"chart\":\n return (\n <Suspense fallback={<Loading label=\"Loading chart\" />}>\n <ChartHost element={element as ChartElement} slideWidthPx={slideWidthPx} />\n </Suspense>\n );\n case \"code\":\n return (\n <Suspense fallback={<Loading label=\"Loading code\" />}>\n <CodeHost element={element as CodeElement} />\n </Suspense>\n );\n case \"table\":\n return (\n <Suspense fallback={<Loading label=\"Loading table\" />}>\n <TableHost element={element as TableElement} />\n </Suspense>\n );\n case \"embed\":\n return (\n <Suspense fallback={<Loading label=\"Loading embed\" />}>\n <EmbedHost element={element as EmbedElement} />\n </Suspense>\n );\n default:\n return undefined;\n }\n}\n"]}
|
package/dist/registry.js
CHANGED
|
@@ -2,7 +2,7 @@ import { lazy, Suspense } from 'react';
|
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
// src/registry/index.tsx
|
|
5
|
-
var ChartHost = lazy(() => import('./chart-host-
|
|
5
|
+
var ChartHost = lazy(() => import('./chart-host-BHP6GUWO.js'));
|
|
6
6
|
var CodeHost = lazy(() => import('./code-host-IYT6QDLA.js'));
|
|
7
7
|
var TableHost = lazy(() => import('./table-host-LWPOQHTL.js'));
|
|
8
8
|
var EmbedHost = lazy(() => import('./embed-host-ZECUEAOU.js'));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@particle-academy/fancy-slides",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Presentation editor + web viewer for the fancy UI set — Google-Slides-style deck authoring with a JSON-friendly schema, full keyboard-driven viewer, and an agent bridge so LLMs can compose decks directly.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"react": "^18.0.0 || ^19.0.0",
|
|
36
36
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
37
37
|
"@particle-academy/react-fancy": "^3.0.0",
|
|
38
|
-
"@particle-academy/fancy-echarts": "^3.0.0",
|
|
38
|
+
"@particle-academy/fancy-echarts": "^3.0.0 || ^4.0.0",
|
|
39
39
|
"@particle-academy/fancy-code": "^0.4.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependenciesMeta": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@particle-academy/fancy-code": "^0.4.0",
|
|
47
|
-
"@particle-academy/fancy-echarts": "^
|
|
47
|
+
"@particle-academy/fancy-echarts": "^4.0.0",
|
|
48
48
|
"@particle-academy/react-fancy": "^3.0.0",
|
|
49
49
|
"@types/react": "^19.0.0",
|
|
50
50
|
"@types/react-dom": "^19.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registry/element-renderers/chart-host.tsx"],"names":[],"mappings":";;;;AAGe,SAAR,SAAA,CAA2B,EAAE,OAAA,EAAQ,EAAoD;AAC5F,EAAA,2BACK,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,QAAQ,MAAA,EAAQ,MAAA,EAAO,EACxC,QAAA,kBAAA,GAAA,CAAC,UAAO,MAAA,EAAQ,OAAA,CAAQ,QAAkD,KAAA,EAAO,OAAA,CAAQ,YAAY,CAAA,EACzG,CAAA;AAER","file":"chart-host-VIGM3J5Q.js","sourcesContent":["import { EChart } from \"@particle-academy/fancy-echarts\";\nimport type { ChartElement } from \"../../types\";\n\nexport default function ChartHost({ element }: { element: ChartElement; slideWidthPx: number }) {\n return (\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <EChart option={element.option as Parameters<typeof EChart>[0][\"option\"]} theme={element.chartTheme} />\n </div>\n );\n}\n"]}
|