windmill-components 1.82.2 → 1.82.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.
- package/common.d.ts +2 -2
- package/components/ArgInput.svelte +52 -72
- package/components/ArgInput.svelte.d.ts +1 -3
- package/components/DisplayResult.svelte +17 -17
- package/components/Editor.svelte +0 -3
- package/components/Editor.svelte.d.ts +0 -1
- package/components/FieldHeader.svelte +0 -1
- package/components/FieldHeader.svelte.d.ts +0 -4
- package/components/FlowBuilder.svelte +6 -0
- package/components/FlowStatusViewer.svelte +7 -4
- package/components/FlowStatusViewer.svelte.d.ts +1 -0
- package/components/FlowViewer.svelte +0 -1
- package/components/InputTransformForm.svelte +0 -1
- package/components/LightweightArgInput.svelte +1 -14
- package/components/LightweightArgInput.svelte.d.ts +1 -3
- package/components/SimpleEditor.svelte +0 -1
- package/components/SimpleEditor.svelte.d.ts +0 -1
- package/components/TemplateEditor.svelte +0 -1
- package/components/Toggle.svelte +1 -1
- package/components/Toggle.svelte.d.ts +0 -1
- package/components/apps/components/buttons/AppButton.svelte +3 -17
- package/components/apps/components/buttons/AppForm.svelte +2 -10
- package/components/apps/components/buttons/AppFormButton.svelte +1 -13
- package/components/apps/components/display/AppDisplayComponent.svelte +23 -17
- package/components/apps/components/display/AppHtml.svelte +7 -1
- package/components/apps/components/display/AppHtml.svelte.d.ts +2 -0
- package/components/apps/components/display/AppMap.svelte +1 -1
- package/components/apps/components/display/AppPdf.svelte +1 -1
- package/components/apps/components/display/PlotlyHtml.svelte +20 -3
- package/components/apps/components/display/PlotlyHtml.svelte.d.ts +2 -0
- package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
- package/components/apps/components/display/table/AppTable.svelte +75 -49
- package/components/apps/components/display/table/AppTable.svelte.d.ts +1 -1
- package/components/apps/components/display/table/AppTableFooter.svelte +2 -1
- package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +1 -0
- package/components/apps/components/display/table/tableOptions.js +1 -1
- package/components/apps/components/helpers/DebouncedInput.svelte +1 -0
- package/components/apps/components/helpers/DebouncedInput.svelte.d.ts +2 -0
- package/components/apps/components/helpers/HiddenComponent.svelte +3 -2
- package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/InputValue.svelte +3 -3
- package/components/apps/components/helpers/RefreshButton.svelte +3 -10
- package/components/apps/components/helpers/RefreshButton.svelte.d.ts +1 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +19 -15
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte +3 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/components/apps/components/helpers/eval.d.ts +4 -2
- package/components/apps/components/helpers/eval.js +6 -4
- package/components/apps/components/inputs/AppCheckbox.svelte +0 -4
- package/components/apps/components/inputs/AppDateInput.svelte +2 -2
- package/components/apps/components/inputs/AppMultiSelect.svelte +13 -5
- package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppNumberInput.svelte +3 -3
- package/components/apps/components/inputs/AppSelect.svelte +11 -4
- package/components/apps/components/inputs/AppSelect.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppSliderInputs.svelte +1 -1
- package/components/apps/components/inputs/AppTextInput.svelte +53 -43
- package/components/apps/components/inputs/AppTextInput.svelte.d.ts +1 -1
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +1 -1
- package/components/apps/components/layout/AppContainer.svelte +2 -2
- package/components/apps/components/layout/AppDrawer.svelte +1 -2
- package/components/apps/components/layout/AppSplitpanes.svelte +3 -3
- package/components/apps/components/layout/AppTabs.svelte +1 -1
- package/components/apps/editor/AppEditor.svelte +36 -10
- package/components/apps/editor/AppEditorHeader.svelte +5 -0
- package/components/apps/editor/AppPreview.svelte +17 -5
- package/components/apps/editor/ComponentHeader.svelte +1 -0
- package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
- package/components/apps/editor/GridEditor.svelte +22 -12
- package/components/apps/editor/GridViewer.svelte +2 -2
- package/components/apps/editor/GridViewer.svelte.d.ts +1 -1
- package/components/apps/editor/RecomputeAllComponents.svelte +5 -7
- package/components/apps/editor/SettingsPanel.svelte +4 -4
- package/components/apps/editor/SubGridEditor.svelte +13 -12
- package/components/apps/editor/appUtils.d.ts +1 -0
- package/components/apps/editor/appUtils.js +19 -0
- package/components/apps/editor/component/Component.svelte +19 -8
- package/components/apps/editor/component/Component.svelte.d.ts +1 -1
- package/components/apps/editor/component/ComponentNavigation.svelte +55 -46
- package/components/apps/editor/component/components.d.ts +45 -28
- package/components/apps/editor/component/components.js +41 -27
- package/components/apps/editor/component/sets.js +2 -1
- package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
- package/components/apps/editor/componentsPanel/CssProperty.svelte +0 -26
- package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +0 -2
- package/components/apps/editor/componentsPanel/CssSettings.svelte +1 -0
- package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +13 -10
- package/components/apps/editor/componentsPanel/quickStyleProperties.js +3 -0
- package/components/apps/editor/componentsPanel/store.js +4 -4
- package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -26
- package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +0 -1
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +8 -6
- package/components/apps/editor/contextPanel/ContextPanel.svelte +7 -14
- package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +2 -25
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte +29 -40
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +1 -2
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +2 -7
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +10 -11
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +4 -3
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +0 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +2 -2
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +2 -0
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +22 -19
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +22 -3
- package/components/apps/editor/settingsPanel/GridTab.svelte +1 -2
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -0
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +1 -2
- package/components/apps/editor/settingsPanel/StylePanel.svelte +40 -2
- package/components/apps/editor/settingsPanel/TableActions.svelte +3 -3
- package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +5 -1
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +3 -3
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +3 -2
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +4 -1
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -2
- package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +1 -1
- package/components/apps/inputType.d.ts +2 -2
- package/components/apps/rx.d.ts +2 -2
- package/components/apps/svelte-grid/Grid.svelte +50 -34
- package/components/apps/svelte-grid/Grid.svelte.d.ts +14 -9
- package/components/apps/svelte-grid/MoveResize.svelte +76 -55
- package/components/apps/svelte-grid/MoveResize.svelte.d.ts +15 -9
- package/components/apps/svelte-grid/utils/helper.d.ts +0 -1
- package/components/apps/svelte-grid/utils/helper.js +0 -3
- package/components/apps/types.d.ts +7 -4
- package/components/apps/utils.d.ts +2 -0
- package/components/apps/utils.js +33 -1
- package/components/flows/map/MapItem.svelte +3 -3
- package/components/propertyPicker/ObjectViewer.svelte +0 -3
- package/components/scriptEditor/LogPanel.svelte +3 -3
- package/infer.js +6 -1
- package/package.json +1 -2
- package/components/apps/editor/contextPanel/components/MinMaxButton.svelte +0 -25
- package/components/apps/editor/contextPanel/components/MinMaxButton.svelte.d.ts +0 -16
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import SimpleEditor from '../../../../SimpleEditor.svelte';
|
|
2
3
|
declare const __propDef: {
|
|
3
4
|
props: {
|
|
4
|
-
code: string;
|
|
5
|
+
code: string | undefined;
|
|
5
6
|
value?: any;
|
|
6
7
|
error?: string | undefined;
|
|
8
|
+
editor?: SimpleEditor | undefined;
|
|
7
9
|
};
|
|
8
10
|
events: {
|
|
11
|
+
focus: CustomEvent<any>;
|
|
9
12
|
change: CustomEvent<any>;
|
|
10
13
|
} & {
|
|
11
14
|
[evt: string]: CustomEvent<any>;
|
|
@@ -21,7 +21,7 @@ $: componentInput && onchange?.();
|
|
|
21
21
|
</script>
|
|
22
22
|
|
|
23
23
|
{#if componentInput?.type === 'static'}
|
|
24
|
-
{#if fieldType === 'number'}
|
|
24
|
+
{#if fieldType === 'number' || fieldType === 'integer'}
|
|
25
25
|
<input on:keydown|stopPropagation type="number" bind:value={componentInput.value} />
|
|
26
26
|
{:else if fieldType === 'textarea'}
|
|
27
27
|
<textarea on:keydown|stopPropagation bind:value={componentInput.value} />
|
|
@@ -75,7 +75,7 @@ $: componentInput && onchange?.();
|
|
|
75
75
|
{/if}
|
|
76
76
|
{:else if fieldType === 'color'}
|
|
77
77
|
<ColorInput bind:value={componentInput.value} />
|
|
78
|
-
{:else if fieldType === 'object'}
|
|
78
|
+
{:else if fieldType === 'object' || fieldType == 'labeledselect'}
|
|
79
79
|
{#if format?.startsWith('resource-')}
|
|
80
80
|
<ResourcePicker
|
|
81
81
|
initialValue={componentInput.value?.split('$res:')[1] || ''}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReadFileAs } from '../common/fileInput/model';
|
|
2
2
|
import type { InlineScript } from './types';
|
|
3
|
-
export type InputType = 'text' | 'textarea' | 'template' | 'number' | 'boolean' | 'select' | 'icon-select' | 'color' | 'date' | 'time' | 'datetime' | 'object' | 'array' | 'any' | 'labeledresource' | 'tab-select';
|
|
3
|
+
export type InputType = 'integer' | 'text' | 'textarea' | 'template' | 'number' | 'boolean' | 'select' | 'icon-select' | 'color' | 'date' | 'time' | 'datetime' | 'object' | 'array' | 'any' | 'labeledresource' | 'labeledselect' | 'tab-select';
|
|
4
4
|
export type InputConnection = {
|
|
5
5
|
componentId: string;
|
|
6
6
|
path: string;
|
|
@@ -81,7 +81,7 @@ export type StaticOptions = {
|
|
|
81
81
|
label: string;
|
|
82
82
|
}[];
|
|
83
83
|
};
|
|
84
|
-
export type AppInput = AppInputSpec<'text', string> | AppInputSpec<'textarea', string> | AppInputSpec<'template', string> | AppInputSpec<'number', number> | AppInputSpec<'boolean', boolean> | AppInputSpec<'date', string> | AppInputSpec<'time', string> | AppInputSpec<'datetime', string> | AppInputSpec<'any', any> | AppInputSpec<'object', Record<string | number, any>> | AppInputSpec<'object', string> | (AppInputSpec<'select', string> & StaticOptions) | AppInputSpec<'icon-select', string> | AppInputSpec<'color', string> | AppInputSpec<'array', string[], 'text'> | AppInputSpec<'array', string[], 'textarea'> | AppInputSpec<'array', number[], 'number'> | AppInputSpec<'array', boolean[], 'boolean'> | AppInputSpec<'array', string[], 'date'> | AppInputSpec<'array', string[], 'time'> | AppInputSpec<'array', string[], 'datetime'> | AppInputSpec<'array', object[], 'object'> | (AppInputSpec<'array', string[], 'select'> & StaticOptions) | AppInputSpec<'array', object[], 'labeledresource'> | AppInputSpec<'labeledresource', object> | AppInputSpec<'array', object[], 'tab-select'>;
|
|
84
|
+
export type AppInput = AppInputSpec<'text', string> | AppInputSpec<'textarea', string> | AppInputSpec<'template', string> | AppInputSpec<'number', number> | AppInputSpec<'boolean', boolean> | AppInputSpec<'date', string> | AppInputSpec<'time', string> | AppInputSpec<'datetime', string> | AppInputSpec<'any', any> | AppInputSpec<'object', Record<string | number, any>> | AppInputSpec<'object', string> | (AppInputSpec<'select', string> & StaticOptions) | AppInputSpec<'icon-select', string> | AppInputSpec<'color', string> | AppInputSpec<'array', string[], 'text'> | AppInputSpec<'array', string[], 'textarea'> | AppInputSpec<'array', number[], 'number'> | AppInputSpec<'array', boolean[], 'boolean'> | AppInputSpec<'array', string[], 'date'> | AppInputSpec<'array', string[], 'time'> | AppInputSpec<'array', string[], 'datetime'> | AppInputSpec<'array', object[], 'object'> | (AppInputSpec<'array', string[], 'select'> & StaticOptions) | AppInputSpec<'array', object[], 'labeledresource'> | AppInputSpec<'array', object[], 'labeledselect'> | AppInputSpec<'labeledselect', object> | AppInputSpec<'labeledresource', object> | AppInputSpec<'array', object[], 'tab-select'>;
|
|
85
85
|
export type RowAppInput = Extract<AppInput, {
|
|
86
86
|
type: 'row';
|
|
87
87
|
}>;
|
package/components/apps/rx.d.ts
CHANGED
|
@@ -2,10 +2,10 @@ import type { AppInput } from './inputType';
|
|
|
2
2
|
import { type Writable } from 'svelte/store';
|
|
3
3
|
export interface Subscriber<T> {
|
|
4
4
|
id?: string;
|
|
5
|
-
next(v: T):
|
|
5
|
+
next(v: T): void;
|
|
6
6
|
}
|
|
7
7
|
export interface Observable<T> {
|
|
8
|
-
subscribe(x: Subscriber<T>):
|
|
8
|
+
subscribe(x: Subscriber<T>): void;
|
|
9
9
|
}
|
|
10
10
|
export interface Output<T> extends Observable<T> {
|
|
11
11
|
set(x: T, force?: boolean): void;
|
|
@@ -12,7 +12,8 @@ export let gap = [10, 10];
|
|
|
12
12
|
export let fastStart = false;
|
|
13
13
|
export let throttleUpdate = 100;
|
|
14
14
|
export let throttleResize = 100;
|
|
15
|
-
export let
|
|
15
|
+
export let selectedIds;
|
|
16
|
+
export let allIdsInPath;
|
|
16
17
|
export let containerWidth = undefined;
|
|
17
18
|
export let scroller = undefined;
|
|
18
19
|
export let sensor = 20;
|
|
@@ -23,12 +24,6 @@ $: [gapX, gapY] = gap;
|
|
|
23
24
|
let xPerPx = 0;
|
|
24
25
|
let yPerPx = rowHeight;
|
|
25
26
|
$: containerHeight = getContainerHeight(items, yPerPx, getComputedCols);
|
|
26
|
-
const pointerup = (ev) => {
|
|
27
|
-
dispatch('pointerup', {
|
|
28
|
-
id: ev.detail.id,
|
|
29
|
-
cols: getComputedCols
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
27
|
const onResize = throttle(() => {
|
|
33
28
|
items = specifyUndefinedColumns(items, getComputedCols, cols);
|
|
34
29
|
dispatch('resize', {
|
|
@@ -84,23 +79,28 @@ const updateMatrix = ({ detail }) => {
|
|
|
84
79
|
}
|
|
85
80
|
citems = JSON.parse(JSON.stringify(initItems));
|
|
86
81
|
}
|
|
87
|
-
let
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
82
|
+
let nselectedIds = selectedIds ?? [];
|
|
83
|
+
if (detail.id && !selectedIds?.includes(detail.id)) {
|
|
84
|
+
nselectedIds = [detail.id, ...(selectedIds ?? [])];
|
|
85
|
+
}
|
|
86
|
+
sortedItems = citems;
|
|
87
|
+
for (let id of nselectedIds) {
|
|
88
|
+
let activeItem = getItemById(id, sortedItems);
|
|
89
|
+
if (activeItem) {
|
|
90
|
+
activeItem = {
|
|
91
|
+
...activeItem,
|
|
92
|
+
[getComputedCols]: {
|
|
93
|
+
...activeItem[getComputedCols],
|
|
94
|
+
...shadows[id]
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
sortedItems = moveItem(activeItem, sortedItems, getComputedCols, getItemById(id, sortedItems));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
for (let id of nselectedIds ?? []) {
|
|
101
|
+
if (detail.activate) {
|
|
102
|
+
moveResizes?.[id]?.inActivate();
|
|
103
|
+
}
|
|
104
104
|
}
|
|
105
105
|
if (isPointerUp) {
|
|
106
106
|
dispatch('redraw', sortGridItemsPosition(JSON.parse(JSON.stringify(sortedItems)), getComputedCols));
|
|
@@ -115,15 +115,35 @@ const handleRepaint = ({ detail }) => {
|
|
|
115
115
|
updateMatrix({ detail });
|
|
116
116
|
}
|
|
117
117
|
};
|
|
118
|
+
let moveResizes = {};
|
|
119
|
+
let shadows = {};
|
|
120
|
+
export function handleMove({ detail }) {
|
|
121
|
+
Object.entries(moveResizes).forEach(([id, moveResize]) => {
|
|
122
|
+
if (selectedIds?.includes(id)) {
|
|
123
|
+
moveResize?.updateMove(JSON.parse(JSON.stringify(detail.cordDiff)), detail.eventY);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
throttleMatrix({ detail: { isPointerUp: false, activate: false } });
|
|
127
|
+
}
|
|
128
|
+
export function handleInitMove({ detail }) {
|
|
129
|
+
Object.entries(moveResizes).forEach(([id, moveResize]) => {
|
|
130
|
+
if (selectedIds?.includes(id)) {
|
|
131
|
+
moveResize?.initmove();
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
118
135
|
</script>
|
|
119
136
|
|
|
120
137
|
<div class="svlt-grid-container" style="height: {containerHeight}px" bind:this={container}>
|
|
121
138
|
{#if xPerPx || !fastStart}
|
|
122
139
|
{#each sortedItems as item (item.id)}
|
|
123
140
|
<MoveResize
|
|
141
|
+
on:initmove={handleInitMove}
|
|
142
|
+
on:move={handleMove}
|
|
143
|
+
bind:shadow={shadows[item.id]}
|
|
144
|
+
bind:this={moveResizes[item.id]}
|
|
124
145
|
on:repaint={handleRepaint}
|
|
125
|
-
|
|
126
|
-
onTop={item.id == onTopId}
|
|
146
|
+
onTop={Boolean(allIdsInPath?.includes(item.id))}
|
|
127
147
|
id={item.id}
|
|
128
148
|
{xPerPx}
|
|
129
149
|
{yPerPx}
|
|
@@ -140,16 +160,9 @@ const handleRepaint = ({ detail }) => {
|
|
|
140
160
|
{sensor}
|
|
141
161
|
container={scroller}
|
|
142
162
|
nativeContainer={container}
|
|
143
|
-
let:resizePointerDown
|
|
144
|
-
let:movePointerDown
|
|
145
163
|
>
|
|
146
164
|
{#if item[getComputedCols]}
|
|
147
|
-
<slot
|
|
148
|
-
{movePointerDown}
|
|
149
|
-
{resizePointerDown}
|
|
150
|
-
dataItem={item}
|
|
151
|
-
item={item[getComputedCols]}
|
|
152
|
-
/>
|
|
165
|
+
<slot dataItem={item} item={item[getComputedCols]} />
|
|
153
166
|
{/if}
|
|
154
167
|
</MoveResize>
|
|
155
168
|
{/each}
|
|
@@ -160,4 +173,7 @@ const handleRepaint = ({ detail }) => {
|
|
|
160
173
|
.svlt-grid-container {
|
|
161
174
|
position: relative;
|
|
162
175
|
width: 100%;
|
|
176
|
+
-webkit-user-select: none;
|
|
177
|
+
-moz-user-select: none;
|
|
178
|
+
user-select: none;
|
|
163
179
|
}</style>
|
|
@@ -9,29 +9,28 @@ declare class __sveltets_Render<T> {
|
|
|
9
9
|
fastStart?: boolean | undefined;
|
|
10
10
|
throttleUpdate?: number | undefined;
|
|
11
11
|
throttleResize?: number | undefined;
|
|
12
|
-
|
|
12
|
+
selectedIds: string[] | undefined;
|
|
13
|
+
allIdsInPath: string[] | undefined;
|
|
13
14
|
containerWidth?: number | undefined;
|
|
14
15
|
scroller?: HTMLElement | undefined;
|
|
15
16
|
sensor?: number | undefined;
|
|
16
17
|
parentWidth?: number | undefined;
|
|
18
|
+
handleMove?: (({ detail }: {
|
|
19
|
+
detail: any;
|
|
20
|
+
}) => void) | undefined;
|
|
21
|
+
handleInitMove?: (({ detail }: {
|
|
22
|
+
detail: any;
|
|
23
|
+
}) => void) | undefined;
|
|
17
24
|
};
|
|
18
25
|
events(): {
|
|
19
|
-
pointerup: CustomEvent<any>;
|
|
20
26
|
resize: CustomEvent<any>;
|
|
21
27
|
mount: CustomEvent<any>;
|
|
22
|
-
change: CustomEvent<any>;
|
|
23
28
|
redraw: CustomEvent<any>;
|
|
24
29
|
} & {
|
|
25
30
|
[evt: string]: CustomEvent<any>;
|
|
26
31
|
};
|
|
27
32
|
slots(): {
|
|
28
33
|
default: {
|
|
29
|
-
movePointerDown: ({ clientX, clientY, target }: {
|
|
30
|
-
clientX: any;
|
|
31
|
-
clientY: any;
|
|
32
|
-
target: any;
|
|
33
|
-
}) => void;
|
|
34
|
-
resizePointerDown: (e: any) => void;
|
|
35
34
|
dataItem: FilledItem<T>;
|
|
36
35
|
item: Required<import("./types").ItemLayout>;
|
|
37
36
|
};
|
|
@@ -41,5 +40,11 @@ export type GridProps<T> = ReturnType<__sveltets_Render<T>['props']>;
|
|
|
41
40
|
export type GridEvents<T> = ReturnType<__sveltets_Render<T>['events']>;
|
|
42
41
|
export type GridSlots<T> = ReturnType<__sveltets_Render<T>['slots']>;
|
|
43
42
|
export default class Grid<T> extends SvelteComponentTyped<GridProps<T>, GridEvents<T>, GridSlots<T>> {
|
|
43
|
+
get handleMove(): ({ detail }: {
|
|
44
|
+
detail: any;
|
|
45
|
+
}) => void;
|
|
46
|
+
get handleInitMove(): ({ detail }: {
|
|
47
|
+
detail: any;
|
|
48
|
+
}) => void;
|
|
44
49
|
}
|
|
45
50
|
export {};
|
|
@@ -15,8 +15,9 @@ export let item;
|
|
|
15
15
|
export let cols;
|
|
16
16
|
export let nativeContainer;
|
|
17
17
|
export let onTop;
|
|
18
|
+
export let shadow = undefined;
|
|
19
|
+
const divId = `component-${id}`;
|
|
18
20
|
let shadowElement;
|
|
19
|
-
let shadow = undefined;
|
|
20
21
|
let active = false;
|
|
21
22
|
let initX, initY;
|
|
22
23
|
let capturePos = {
|
|
@@ -27,7 +28,7 @@ let cordDiff = { x: 0, y: 0 };
|
|
|
27
28
|
let newSize = { width, height };
|
|
28
29
|
let trans = false;
|
|
29
30
|
let anima;
|
|
30
|
-
|
|
31
|
+
export function inActivate() {
|
|
31
32
|
if (shadowElement && shadow != undefined) {
|
|
32
33
|
let subgrid = shadowElement.closest('.subgrid');
|
|
33
34
|
let irect = shadowElement.getBoundingClientRect();
|
|
@@ -57,18 +58,14 @@ const inActivate = () => {
|
|
|
57
58
|
clearTimeout(anima);
|
|
58
59
|
anima = setTimeout(() => {
|
|
59
60
|
trans = false;
|
|
60
|
-
},
|
|
61
|
-
dispatch('pointerup', {
|
|
62
|
-
id
|
|
63
|
-
});
|
|
61
|
+
}, 50);
|
|
64
62
|
}
|
|
65
|
-
}
|
|
66
|
-
let repaint = (
|
|
63
|
+
}
|
|
64
|
+
let repaint = (activate, isPointerUp) => {
|
|
67
65
|
dispatch('repaint', {
|
|
68
66
|
id,
|
|
69
|
-
shadow,
|
|
70
67
|
isPointerUp,
|
|
71
|
-
|
|
68
|
+
activate
|
|
72
69
|
});
|
|
73
70
|
};
|
|
74
71
|
// Autoscroll
|
|
@@ -78,7 +75,7 @@ let rect;
|
|
|
78
75
|
let scrollElement;
|
|
79
76
|
const getContainerFrame = (element) => {
|
|
80
77
|
if (element === document.documentElement || !element) {
|
|
81
|
-
const {
|
|
78
|
+
const { top, bottom } = nativeContainer.getBoundingClientRect();
|
|
82
79
|
return {
|
|
83
80
|
top: Math.max(0, top),
|
|
84
81
|
bottom: Math.min(window.innerHeight, bottom)
|
|
@@ -87,11 +84,13 @@ const getContainerFrame = (element) => {
|
|
|
87
84
|
return element.getBoundingClientRect();
|
|
88
85
|
};
|
|
89
86
|
const getScroller = (element) => (!element ? document.documentElement : element);
|
|
90
|
-
function computeRect(
|
|
91
|
-
let gridItem =
|
|
87
|
+
function computeRect() {
|
|
88
|
+
let gridItem = document.getElementById(divId);
|
|
89
|
+
if (!gridItem)
|
|
90
|
+
return;
|
|
92
91
|
let subgrid = gridItem.closest('.subgrid');
|
|
93
92
|
let irect = gridItem.getBoundingClientRect();
|
|
94
|
-
if (subgrid) {
|
|
93
|
+
if (subgrid && subgrid.parentElement) {
|
|
95
94
|
let subGridParent = subgrid.parentElement;
|
|
96
95
|
let subGridParentRect = subGridParent.getBoundingClientRect();
|
|
97
96
|
let prect = subgrid.getBoundingClientRect();
|
|
@@ -109,25 +108,28 @@ function computeRect(target) {
|
|
|
109
108
|
}
|
|
110
109
|
}
|
|
111
110
|
let dragClosure = undefined;
|
|
112
|
-
const pointerdown = ({ clientX, clientY
|
|
111
|
+
const pointerdown = ({ clientX, clientY }) => {
|
|
113
112
|
dragClosure = () => {
|
|
114
113
|
dragClosure = undefined;
|
|
115
114
|
initX = clientX;
|
|
116
115
|
initY = clientY;
|
|
117
|
-
|
|
118
|
-
shadow = { x: item.x, y: item.y, w: item.w, h: item.h };
|
|
119
|
-
newSize = { width, height };
|
|
120
|
-
containerFrame = getContainerFrame(container);
|
|
121
|
-
scrollElement = getScroller(container);
|
|
122
|
-
cordDiff = { x: 0, y: 0 };
|
|
123
|
-
active = true;
|
|
124
|
-
trans = false;
|
|
125
|
-
computeRect(target);
|
|
126
|
-
_scrollTop = scrollElement.scrollTop;
|
|
116
|
+
dispatch('initmove');
|
|
127
117
|
};
|
|
128
118
|
window.addEventListener('pointermove', pointermove);
|
|
129
119
|
window.addEventListener('pointerup', pointerup);
|
|
130
120
|
};
|
|
121
|
+
export function initmove() {
|
|
122
|
+
computeRect();
|
|
123
|
+
newSize = { width, height };
|
|
124
|
+
capturePos = { x: left, y: top };
|
|
125
|
+
shadow = { x: item.x, y: item.y, w: item.w, h: item.h };
|
|
126
|
+
cordDiff = { x: 0, y: 0 };
|
|
127
|
+
active = true;
|
|
128
|
+
trans = false;
|
|
129
|
+
containerFrame = getContainerFrame(container);
|
|
130
|
+
scrollElement = getScroller(container);
|
|
131
|
+
_scrollTop = scrollElement.scrollTop;
|
|
132
|
+
}
|
|
131
133
|
let sign = { x: 0, y: 0 };
|
|
132
134
|
let vel = { x: 0, y: 0 };
|
|
133
135
|
let intervalId = undefined;
|
|
@@ -138,8 +140,8 @@ const stopAutoscroll = () => {
|
|
|
138
140
|
vel = { x: 0, y: 0 };
|
|
139
141
|
};
|
|
140
142
|
const update = () => {
|
|
141
|
-
const _newScrollTop = scrollElement.scrollTop - _scrollTop;
|
|
142
143
|
const boundX = capturePos.x + cordDiff.x;
|
|
144
|
+
const _newScrollTop = (scrollElement?.scrollTop ?? 0) - (_scrollTop ?? 0);
|
|
143
145
|
const boundY = capturePos.y + (cordDiff.y + _newScrollTop);
|
|
144
146
|
let gridX = Math.round(boundX / xPerPx);
|
|
145
147
|
let gridY = Math.round(boundY / yPerPx);
|
|
@@ -147,7 +149,6 @@ const update = () => {
|
|
|
147
149
|
shadow.x = Math.max(Math.min(gridX, cols - shadow.w), 0);
|
|
148
150
|
shadow.y = Math.max(gridY, 0);
|
|
149
151
|
}
|
|
150
|
-
repaint(undefined, false);
|
|
151
152
|
};
|
|
152
153
|
const pointermove = (event) => {
|
|
153
154
|
dragClosure && dragClosure();
|
|
@@ -155,49 +156,68 @@ const pointermove = (event) => {
|
|
|
155
156
|
event.stopPropagation();
|
|
156
157
|
event.stopImmediatePropagation();
|
|
157
158
|
const { clientX, clientY } = event;
|
|
158
|
-
cordDiff = { x: clientX - initX, y: clientY - initY };
|
|
159
|
+
const cordDiff = { x: clientX - initX, y: clientY - initY };
|
|
160
|
+
dispatch('move', { cordDiff, clientY });
|
|
161
|
+
};
|
|
162
|
+
export function updateMove(newCoordDiff, clientY) {
|
|
163
|
+
if (!active) {
|
|
164
|
+
active = true;
|
|
165
|
+
}
|
|
166
|
+
if (trans) {
|
|
167
|
+
trans = false;
|
|
168
|
+
}
|
|
169
|
+
cordDiff = newCoordDiff;
|
|
170
|
+
// console.log(cordDiff, id, 'B')
|
|
159
171
|
const Y_SENSOR = sensor;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
if (containerFrame) {
|
|
173
|
+
let velocityTop = Math.max(0, (containerFrame.top + Y_SENSOR - clientY) / Y_SENSOR);
|
|
174
|
+
let velocityBottom = Math.max(0, (clientY - (containerFrame.bottom - Y_SENSOR)) / Y_SENSOR);
|
|
175
|
+
const topSensor = velocityTop > 0 && velocityBottom === 0;
|
|
176
|
+
const bottomSensor = velocityBottom > 0 && velocityTop === 0;
|
|
177
|
+
sign.y = topSensor ? -1 : bottomSensor ? 1 : 0;
|
|
178
|
+
vel.y = sign.y === -1 ? velocityTop : velocityBottom;
|
|
179
|
+
if (vel.y > 0) {
|
|
180
|
+
if (!intervalId) {
|
|
181
|
+
// Start scrolling
|
|
182
|
+
// TODO Use requestAnimationFrame
|
|
183
|
+
intervalId = setInterval(() => {
|
|
184
|
+
scrollElement.scrollTop += 2 * (vel.y + Math.sign(vel.y)) * sign.y;
|
|
185
|
+
update();
|
|
186
|
+
}, 10);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else if (intervalId) {
|
|
190
|
+
stopAutoscroll();
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
update();
|
|
174
194
|
}
|
|
175
|
-
}
|
|
176
|
-
else if (intervalId) {
|
|
177
|
-
stopAutoscroll();
|
|
178
195
|
}
|
|
179
196
|
else {
|
|
180
197
|
update();
|
|
181
198
|
}
|
|
182
|
-
}
|
|
199
|
+
}
|
|
183
200
|
const pointerup = (e) => {
|
|
184
|
-
dragClosure = undefined;
|
|
185
201
|
stopAutoscroll();
|
|
186
202
|
window.removeEventListener('pointerdown', pointerdown);
|
|
187
203
|
window.removeEventListener('pointermove', pointermove);
|
|
188
204
|
window.removeEventListener('pointerup', pointerup);
|
|
189
|
-
|
|
205
|
+
if (!dragClosure) {
|
|
206
|
+
repaint(true, true);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
dragClosure = undefined;
|
|
210
|
+
}
|
|
190
211
|
};
|
|
191
|
-
// Resize
|
|
192
212
|
let resizeInitPos = { x: 0, y: 0 };
|
|
193
213
|
let initSize = { width: 0, height: 0 };
|
|
194
214
|
const resizePointerDown = (e) => {
|
|
195
215
|
e.stopPropagation();
|
|
196
|
-
const { pageX, pageY
|
|
216
|
+
const { pageX, pageY } = e;
|
|
197
217
|
resizeInitPos = { x: pageX, y: pageY };
|
|
198
218
|
initSize = { width, height };
|
|
199
219
|
cordDiff = { x: 0, y: 0 };
|
|
200
|
-
computeRect(
|
|
220
|
+
computeRect();
|
|
201
221
|
newSize = { width, height };
|
|
202
222
|
active = true;
|
|
203
223
|
trans = false;
|
|
@@ -219,12 +239,12 @@ const resizePointerMove = ({ pageX, pageY }) => {
|
|
|
219
239
|
// Limit col & row
|
|
220
240
|
shadow.w = Math.round((newSize.width + gapX * 2) / xPerPx);
|
|
221
241
|
shadow.h = Math.round((newSize.height + gapY * 2) / yPerPx);
|
|
222
|
-
repaint(
|
|
242
|
+
repaint(false, false);
|
|
223
243
|
}
|
|
224
244
|
};
|
|
225
245
|
const resizePointerUp = (e) => {
|
|
226
246
|
e.stopPropagation();
|
|
227
|
-
repaint(
|
|
247
|
+
repaint(true, true);
|
|
228
248
|
window.removeEventListener('pointermove', resizePointerMove);
|
|
229
249
|
window.removeEventListener('pointerup', resizePointerUp);
|
|
230
250
|
};
|
|
@@ -234,18 +254,19 @@ const resizePointerUp = (e) => {
|
|
|
234
254
|
<div
|
|
235
255
|
draggable="false"
|
|
236
256
|
on:pointerdown|stopPropagation|preventDefault={pointerdown}
|
|
257
|
+
id={divId}
|
|
237
258
|
class="svlt-grid-item"
|
|
238
259
|
class:svlt-grid-active={active || (trans && rect)}
|
|
239
260
|
style="width: {active ? newSize.width : width}px; height:{active
|
|
240
261
|
? newSize.height
|
|
241
262
|
: height}px; {onTop ? 'z-index: 1000;' : ''}
|
|
242
|
-
{active
|
|
263
|
+
{active && rect
|
|
243
264
|
? `transform: translate(${cordDiff.x}px, ${cordDiff.y}px);top:${rect.top}px;left:${rect.left}px;`
|
|
244
265
|
: trans
|
|
245
266
|
? `transform: translate(${cordDiff.x}px, ${cordDiff.y}px); position:absolute; transition: width 0.2s, height 0.2s;`
|
|
246
267
|
: `transition: transform 0.1s, opacity 0.1s; transform: translate(${left}px, ${top}px); `} "
|
|
247
268
|
>
|
|
248
|
-
<slot
|
|
269
|
+
<slot />
|
|
249
270
|
<div class="svlt-grid-resizer" on:pointerdown={resizePointerDown} />
|
|
250
271
|
</div>
|
|
251
272
|
|
|
@@ -16,27 +16,33 @@ declare const __propDef: {
|
|
|
16
16
|
cols: any;
|
|
17
17
|
nativeContainer: any;
|
|
18
18
|
onTop: any;
|
|
19
|
+
shadow?: {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
w: number;
|
|
23
|
+
h: number;
|
|
24
|
+
} | undefined;
|
|
25
|
+
inActivate?: (() => void) | undefined;
|
|
26
|
+
initmove?: (() => void) | undefined;
|
|
27
|
+
updateMove?: ((newCoordDiff: any, clientY: any) => void) | undefined;
|
|
19
28
|
};
|
|
20
29
|
events: {
|
|
21
|
-
pointerup: CustomEvent<any>;
|
|
22
30
|
repaint: CustomEvent<any>;
|
|
31
|
+
initmove: CustomEvent<any>;
|
|
32
|
+
move: CustomEvent<any>;
|
|
23
33
|
} & {
|
|
24
34
|
[evt: string]: CustomEvent<any>;
|
|
25
35
|
};
|
|
26
36
|
slots: {
|
|
27
|
-
default: {
|
|
28
|
-
movePointerDown: ({ clientX, clientY, target }: {
|
|
29
|
-
clientX: any;
|
|
30
|
-
clientY: any;
|
|
31
|
-
target: any;
|
|
32
|
-
}) => void;
|
|
33
|
-
resizePointerDown: (e: any) => void;
|
|
34
|
-
};
|
|
37
|
+
default: {};
|
|
35
38
|
};
|
|
36
39
|
};
|
|
37
40
|
export type MoveResizeProps = typeof __propDef.props;
|
|
38
41
|
export type MoveResizeEvents = typeof __propDef.events;
|
|
39
42
|
export type MoveResizeSlots = typeof __propDef.slots;
|
|
40
43
|
export default class MoveResize extends SvelteComponentTyped<MoveResizeProps, MoveResizeEvents, MoveResizeSlots> {
|
|
44
|
+
get inActivate(): () => void;
|
|
45
|
+
get initmove(): () => void;
|
|
46
|
+
get updateMove(): (newCoordDiff: any, clientY: any) => void;
|
|
41
47
|
}
|
|
42
48
|
export {};
|
|
@@ -92,11 +92,14 @@ export type AppViewerContext = {
|
|
|
92
92
|
worldStore: Writable<World>;
|
|
93
93
|
app: Writable<App>;
|
|
94
94
|
summary: Writable<string>;
|
|
95
|
-
selectedComponent: Writable<string | undefined>;
|
|
95
|
+
selectedComponent: Writable<string[] | undefined>;
|
|
96
96
|
mode: Writable<EditorMode>;
|
|
97
97
|
connectingInput: Writable<ConnectingInput>;
|
|
98
98
|
breakpoint: Writable<EditorBreakpoint>;
|
|
99
|
-
runnableComponents: Writable<Record<string,
|
|
99
|
+
runnableComponents: Writable<Record<string, {
|
|
100
|
+
autoRefresh: boolean;
|
|
101
|
+
cb: (inlineScript?: InlineScript) => Promise<void>;
|
|
102
|
+
}>>;
|
|
100
103
|
staticExporter: Writable<Record<string, () => any>>;
|
|
101
104
|
appPath: string;
|
|
102
105
|
workspace: string;
|
|
@@ -122,13 +125,14 @@ export type AppViewerContext = {
|
|
|
122
125
|
setTab?: (index: number) => void;
|
|
123
126
|
}>>;
|
|
124
127
|
hoverStore: Writable<string | undefined>;
|
|
128
|
+
allIdsInPath: Writable<string[]>;
|
|
125
129
|
};
|
|
126
130
|
export type AppEditorContext = {
|
|
127
131
|
history: History<App> | undefined;
|
|
128
132
|
pickVariableCallback: Writable<((path: string) => void) | undefined>;
|
|
129
133
|
ontextfocus: Writable<(() => void) | undefined>;
|
|
130
134
|
selectedComponentInEditor: Writable<string | undefined>;
|
|
131
|
-
|
|
135
|
+
movingcomponents: Writable<string[] | undefined>;
|
|
132
136
|
};
|
|
133
137
|
export type FocusedGrid = {
|
|
134
138
|
parentComponentId: string;
|
|
@@ -141,7 +145,6 @@ type ComponentID = string;
|
|
|
141
145
|
export type ContextPanelContext = {
|
|
142
146
|
search: Writable<string>;
|
|
143
147
|
manuallyOpened: Writable<Record<string, boolean>>;
|
|
144
|
-
expanded: Writable<boolean>;
|
|
145
148
|
hasResult: Writable<Record<string, boolean>>;
|
|
146
149
|
};
|
|
147
150
|
export {};
|
|
@@ -2,6 +2,8 @@ import type { Schema } from '../../common';
|
|
|
2
2
|
import type { App, ComponentCssProperty, GridItem } from './types';
|
|
3
3
|
import type { AppInput, InputType, ResultAppInput, StaticAppInput } from './inputType';
|
|
4
4
|
import type { Output } from './rx';
|
|
5
|
+
import { type Writable } from 'svelte/store';
|
|
6
|
+
export declare function selectId(e: PointerEvent, id: string, selectedComponent: Writable<string[] | undefined>, app: App): void;
|
|
5
7
|
export declare function allItems(grid: GridItem[], subgrids: Record<string, GridItem[]> | undefined): GridItem[];
|
|
6
8
|
export declare function loadSchema(workspace: string, path: string, runType: 'script' | 'flow' | 'hubscript'): Promise<Schema>;
|
|
7
9
|
export declare function schemaToInputsSpec(schema: Schema, defaultUserInput: boolean): Record<string, StaticAppInput>;
|