@pixerate/editor-svelte 0.43.0 → 0.44.1
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/dist/chart-node/ChartNodeView.svelte +62 -0
- package/dist/chart-node/ChartNodeView.svelte.d.ts +14 -0
- package/dist/chart-node/ChartNodeView.svelte.d.ts.map +1 -0
- package/dist/chart-node/createChartNodeView.svelte.d.ts +21 -0
- package/dist/chart-node/createChartNodeView.svelte.d.ts.map +1 -0
- package/dist/chart-node/createChartNodeView.svelte.js +28 -0
- package/dist/chart-node/index.d.ts +6 -0
- package/dist/chart-node/index.d.ts.map +1 -0
- package/dist/chart-node/index.js +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ChartNodeViewState } from '@pixerate/editor';
|
|
3
|
+
import type { ChartTheme } from '@pixerate/editor/chart';
|
|
4
|
+
import ChartCanvas from '../chart/ChartCanvas.svelte';
|
|
5
|
+
import ChartDataGrid from '../chart/ChartDataGrid.svelte';
|
|
6
|
+
import ChartInspector from '../chart/ChartInspector.svelte';
|
|
7
|
+
import { chartButtonClass } from '../chart/styles.js';
|
|
8
|
+
|
|
9
|
+
interface Props {
|
|
10
|
+
/** What the editor's `chart` node passes (see `ChartNodeViewState`). */
|
|
11
|
+
view: ChartNodeViewState;
|
|
12
|
+
/** Chart colours (default: the CSS-variable theme). */
|
|
13
|
+
theme?: Partial<ChartTheme>;
|
|
14
|
+
/** Show the data grid under the chart while editing (default `true`). */
|
|
15
|
+
showDataGrid?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let { view, theme, showDataGrid = true }: Props = $props();
|
|
19
|
+
|
|
20
|
+
const clickable = $derived(view.editable && !view.editing);
|
|
21
|
+
|
|
22
|
+
function open() {
|
|
23
|
+
if (clickable) view.setEditing(true);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function onkeydown(event: KeyboardEvent) {
|
|
27
|
+
if (view.editing && event.key === 'Escape') {
|
|
28
|
+
event.stopPropagation();
|
|
29
|
+
view.setEditing(false);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
35
|
+
<div
|
|
36
|
+
class="not-prose my-2 rounded-md border bg-background p-1 {view.selected ? 'border-primary ring-1 ring-primary' : 'border-border'}"
|
|
37
|
+
data-chart-node-view=""
|
|
38
|
+
data-editing={view.editing ? '' : undefined}
|
|
39
|
+
{onkeydown}
|
|
40
|
+
>
|
|
41
|
+
{#if view.editing}
|
|
42
|
+
<div class="mb-1 flex items-center justify-between gap-2 px-1" data-chart-node-toolbar="">
|
|
43
|
+
<span class="text-xs text-muted-foreground">Editing chart</span>
|
|
44
|
+
<button type="button" class={chartButtonClass} data-action="done" onclick={() => view.setEditing(false)}>Done</button>
|
|
45
|
+
</div>
|
|
46
|
+
{/if}
|
|
47
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
48
|
+
<div class={clickable ? 'cursor-pointer' : undefined} onclick={open} title={clickable ? 'Click to edit the chart' : undefined} data-chart-node-canvas="">
|
|
49
|
+
<ChartCanvas controller={view.controller} width={view.width ?? 640} height={view.height} responsive={view.width === null} editable={view.editing} {theme} />
|
|
50
|
+
</div>
|
|
51
|
+
{#if view.editing}
|
|
52
|
+
<!-- Wraps by the document's width, not the viewport's: side by side when there is room. -->
|
|
53
|
+
<div class="mt-2 flex flex-wrap items-start gap-2" data-chart-node-panel="">
|
|
54
|
+
{#if showDataGrid}
|
|
55
|
+
<div class="min-w-0 flex-[1_1_20rem] overflow-x-auto">
|
|
56
|
+
<ChartDataGrid controller={view.controller} />
|
|
57
|
+
</div>
|
|
58
|
+
{/if}
|
|
59
|
+
<ChartInspector controller={view.controller} class="max-h-96 min-w-0 flex-[1_1_16rem] overflow-y-auto rounded-md border border-border p-3" />
|
|
60
|
+
</div>
|
|
61
|
+
{/if}
|
|
62
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ChartNodeViewState } from '@pixerate/editor';
|
|
2
|
+
import type { ChartTheme } from '@pixerate/editor/chart';
|
|
3
|
+
interface Props {
|
|
4
|
+
/** What the editor's `chart` node passes (see `ChartNodeViewState`). */
|
|
5
|
+
view: ChartNodeViewState;
|
|
6
|
+
/** Chart colours (default: the CSS-variable theme). */
|
|
7
|
+
theme?: Partial<ChartTheme>;
|
|
8
|
+
/** Show the data grid under the chart while editing (default `true`). */
|
|
9
|
+
showDataGrid?: boolean;
|
|
10
|
+
}
|
|
11
|
+
declare const ChartNodeView: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type ChartNodeView = ReturnType<typeof ChartNodeView>;
|
|
13
|
+
export default ChartNodeView;
|
|
14
|
+
//# sourceMappingURL=ChartNodeView.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartNodeView.svelte.d.ts","sourceRoot":"","sources":["../../src/chart-node/ChartNodeView.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOvD,UAAU,KAAK;IACb,wEAAwE;IACxE,IAAI,EAAE,kBAAkB,CAAC;IACzB,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqDH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Component } from "svelte";
|
|
2
|
+
import type { ChartNodeViewMount, ChartNodeViewState } from "@pixerate/editor";
|
|
3
|
+
import type { ChartTheme } from "@pixerate/editor/chart";
|
|
4
|
+
export interface SvelteChartNodeViewOptions {
|
|
5
|
+
/** Chart colours (default: the CSS-variable theme). */
|
|
6
|
+
theme?: Partial<ChartTheme>;
|
|
7
|
+
/** Show the data grid under the chart while editing (default `true`). */
|
|
8
|
+
showDataGrid?: boolean;
|
|
9
|
+
/** Draw something else for each chart (default `ChartNodeView`; it receives `view`). */
|
|
10
|
+
component?: Component<{
|
|
11
|
+
view: ChartNodeViewState;
|
|
12
|
+
theme?: Partial<ChartTheme>;
|
|
13
|
+
showDataGrid?: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The `nodeView` for the core `chart` node, mounting `ChartNodeView` into each chart:
|
|
18
|
+
* `createRichTextPreset({ chart: { nodeView: createSvelteChartNodeView() } })`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createSvelteChartNodeView(options?: SvelteChartNodeViewOptions): ChartNodeViewMount;
|
|
21
|
+
//# sourceMappingURL=createChartNodeView.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createChartNodeView.svelte.d.ts","sourceRoot":"","sources":["../../src/chart-node/createChartNodeView.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,WAAW,0BAA0B;IACzC,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wFAAwF;IACxF,SAAS,CAAC,EAAE,SAAS,CAAC;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC1G;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,0BAA+B,GAAG,kBAAkB,CAqBtG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { mount, unmount } from "svelte";
|
|
2
|
+
import ChartNodeView from "./ChartNodeView.svelte";
|
|
3
|
+
/**
|
|
4
|
+
* The `nodeView` for the core `chart` node, mounting `ChartNodeView` into each chart:
|
|
5
|
+
* `createRichTextPreset({ chart: { nodeView: createSvelteChartNodeView() } })`.
|
|
6
|
+
*/
|
|
7
|
+
export function createSvelteChartNodeView(options = {}) {
|
|
8
|
+
const { component = ChartNodeView, theme, showDataGrid } = options;
|
|
9
|
+
return (dom, state) => {
|
|
10
|
+
let current = $state.raw(state);
|
|
11
|
+
const instance = mount(component, {
|
|
12
|
+
target: dom,
|
|
13
|
+
props: {
|
|
14
|
+
get view() {
|
|
15
|
+
return current;
|
|
16
|
+
},
|
|
17
|
+
theme,
|
|
18
|
+
showDataGrid,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
update: (next) => {
|
|
23
|
+
current = next;
|
|
24
|
+
},
|
|
25
|
+
destroy: () => void unmount(instance),
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentProps } from "svelte";
|
|
2
|
+
import type ChartNodeViewComponent from "./ChartNodeView.svelte";
|
|
3
|
+
export { default as ChartNodeView } from "./ChartNodeView.svelte";
|
|
4
|
+
export * from "./createChartNodeView.svelte.js";
|
|
5
|
+
export type ChartNodeViewProps = ComponentProps<typeof ChartNodeViewComponent>;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chart-node/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,sBAAsB,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,cAAc,iCAAiC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixerate/editor-svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.44.1",
|
|
4
4
|
"description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
|
|
5
5
|
"author": "Pixerate",
|
|
6
6
|
"license": "MIT",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"@tiptap/extension-bubble-menu": "^2.11.5",
|
|
116
116
|
"@tiptap/extension-placeholder": "^2.11.5",
|
|
117
117
|
"@tiptap/starter-kit": "^2.11.5",
|
|
118
|
-
"@pixerate/editor": "0.
|
|
118
|
+
"@pixerate/editor": "0.49.0"
|
|
119
119
|
},
|
|
120
120
|
"peerDependencies": {
|
|
121
121
|
"@dagrejs/dagre": "^1.1.4",
|