windmill-components 1.75.0 → 1.78.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/components/ArgInput.svelte +4 -14
- package/components/DisplayResult.svelte +1 -1
- package/components/Dropdown.svelte +14 -4
- package/components/FlowGraphViewer.svelte +1 -1
- package/components/FolderUsageInfo.svelte +16 -6
- package/components/FolderUsageInfo.svelte.d.ts +2 -0
- package/components/LightweightArgInput.svelte +315 -0
- package/components/LightweightArgInput.svelte.d.ts +47 -0
- package/components/LightweightSchemaForm.svelte +31 -0
- package/components/LightweightSchemaForm.svelte.d.ts +18 -0
- package/components/ModulePreview.svelte +1 -0
- package/components/Multiselect.svelte.d.ts +2 -2
- package/components/PageHeader.svelte +1 -1
- package/components/Path.svelte +26 -3
- package/components/Range.svelte.d.ts +2 -2
- package/components/ScriptBuilder.svelte +122 -122
- package/components/SettingSection.svelte +44 -0
- package/components/SettingSection.svelte.d.ts +21 -0
- package/components/SimpleEditor.svelte +1 -1
- package/components/SimpleEditor.svelte.d.ts +2 -0
- package/components/TemplateEditor.svelte +3 -0
- package/components/TemplateEditor.svelte.d.ts +0 -204
- package/components/Tooltip.svelte +3 -1
- package/components/VariableEditor.svelte +2 -1
- package/components/WhitelistIp.svelte +1 -3
- package/components/apps/components/buttons/AppButton.svelte +16 -8
- package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -2
- package/components/apps/components/buttons/AppForm.svelte +3 -7
- package/components/apps/components/buttons/AppFormButton.svelte +3 -7
- package/components/apps/components/display/AppBarChart.svelte +7 -3
- package/components/apps/components/display/AppBarChart.svelte.d.ts +0 -2
- package/components/apps/components/display/AppDisplayComponent.svelte +7 -3
- package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +0 -2
- package/components/apps/components/display/AppHtml.svelte +7 -11
- package/components/apps/components/display/AppHtml.svelte.d.ts +0 -2
- package/components/apps/components/display/AppIcon.svelte +0 -1
- package/components/apps/components/display/AppIcon.svelte.d.ts +0 -2
- package/components/apps/components/display/AppImage.svelte +0 -1
- package/components/apps/components/display/AppImage.svelte.d.ts +0 -2
- package/components/apps/components/display/AppMap.svelte +10 -3
- package/components/apps/components/display/AppMap.svelte.d.ts +0 -2
- package/components/apps/components/display/AppPdf.svelte +8 -3
- package/components/apps/components/display/AppPdf.svelte.d.ts +0 -2
- package/components/apps/components/display/AppPieChart.svelte +7 -3
- package/components/apps/components/display/AppPieChart.svelte.d.ts +0 -2
- package/components/apps/components/display/AppScatterChart.svelte +7 -3
- package/components/apps/components/display/AppScatterChart.svelte.d.ts +0 -2
- package/components/apps/components/display/AppText.svelte +41 -17
- package/components/apps/components/display/AppText.svelte.d.ts +0 -2
- package/components/apps/components/display/AppTimeseries.svelte +7 -3
- package/components/apps/components/display/AppTimeseries.svelte.d.ts +0 -2
- package/components/apps/components/display/PlotlyHtml.svelte +9 -4
- package/components/apps/components/display/PlotlyHtml.svelte.d.ts +0 -2
- package/components/apps/components/display/VegaLiteHtml.svelte +8 -3
- package/components/apps/components/display/VegaLiteHtml.svelte.d.ts +0 -2
- package/components/apps/components/display/table/AppAggridTable.svelte +13 -5
- package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +0 -2
- package/components/apps/components/display/table/AppTable.svelte +19 -13
- package/components/apps/components/display/table/AppTable.svelte.d.ts +0 -2
- package/components/apps/components/helpers/HiddenComponent.svelte +11 -2
- package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +1 -2
- package/components/apps/components/helpers/InputValue.svelte +26 -43
- package/components/apps/components/helpers/InputValue.svelte.d.ts +4 -3
- package/components/apps/components/helpers/NonRunnableComponent.svelte +2 -2
- package/components/apps/components/helpers/RefreshButton.svelte +2 -3
- package/components/apps/components/helpers/ResizeWrapper.svelte +3 -4
- package/components/apps/components/helpers/RunnableComponent.svelte +63 -51
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
- package/components/apps/components/helpers/eval.d.ts +5 -0
- package/components/apps/components/helpers/eval.js +57 -0
- package/components/apps/components/inputs/AppCheckbox.svelte +4 -2
- package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppDateInput.svelte +4 -2
- package/components/apps/components/inputs/AppDateInput.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppFileInput.svelte +4 -2
- package/components/apps/components/inputs/AppFileInput.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppMultiSelect.svelte +4 -2
- package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppNumberInput.svelte +4 -2
- package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppRangeInput.svelte +5 -2
- package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppSelect.svelte +4 -2
- package/components/apps/components/inputs/AppSelect.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppSliderInputs.svelte +4 -2
- package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +0 -2
- package/components/apps/components/inputs/AppTextInput.svelte +5 -3
- package/components/apps/components/inputs/AppTextInput.svelte.d.ts +0 -2
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +5 -2
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +0 -2
- package/components/apps/components/layout/AppContainer.svelte +1 -7
- package/components/apps/components/layout/AppContainer.svelte.d.ts +0 -2
- package/components/apps/components/layout/AppDrawer.svelte +0 -3
- package/components/apps/components/layout/AppSplitpanes.svelte +1 -6
- package/components/apps/components/layout/AppTabs.svelte +62 -34
- package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -2
- package/components/apps/editor/AppComponentInput.svelte +2 -1
- package/components/apps/editor/AppEditor.svelte +145 -143
- package/components/apps/editor/AppEditorHeader.svelte +43 -35
- package/components/apps/editor/AppPreview.svelte +68 -15
- package/components/apps/editor/ComponentHeader.svelte +3 -1
- package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -0
- package/components/apps/editor/GridEditor.svelte +58 -77
- package/components/apps/editor/GridPanel.svelte +3 -1
- package/components/apps/editor/GridViewer.svelte +91 -0
- package/components/apps/editor/GridViewer.svelte.d.ts +32 -0
- package/components/apps/editor/RecomputeAllComponents.svelte +7 -1
- package/components/apps/editor/SettingsPanel.svelte +23 -10
- package/components/apps/editor/SubGridEditor.svelte +95 -68
- package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -4
- package/components/apps/editor/appUtils.d.ts +13 -3
- package/components/apps/editor/appUtils.js +106 -37
- package/components/apps/editor/component/Component.svelte +6 -52
- package/components/apps/editor/component/ComponentNavigation.svelte +101 -51
- package/components/apps/editor/component/components.d.ts +3 -3
- package/components/apps/editor/component/components.js +59 -115
- package/components/apps/editor/componentsPanel/ComponentList.svelte +5 -4
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -1
- package/components/apps/editor/componentsPanel/componentStaticValues.js +1 -0
- package/components/apps/editor/contextPanel/ComponentOutput.svelte +67 -0
- package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +21 -0
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +15 -10
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte.d.ts +0 -1
- package/components/apps/editor/contextPanel/ContextPanel.svelte +73 -136
- package/components/apps/editor/contextPanel/SubGridOutput.svelte +66 -0
- package/components/apps/editor/contextPanel/SubGridOutput.svelte.d.ts +19 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +41 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte.d.ts +18 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +9 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte.d.ts +16 -0
- package/components/apps/editor/contextPanel/components/MinMaxButton.svelte +25 -0
- package/components/apps/editor/contextPanel/components/MinMaxButton.svelte.d.ts +16 -0
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte +99 -0
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +24 -0
- package/components/apps/editor/contextPanel/components/TableActionOutput.svelte +17 -0
- package/components/apps/editor/contextPanel/components/TableActionOutput.svelte.d.ts +17 -0
- package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +13 -0
- package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte.d.ts +17 -0
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +55 -23
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +74 -44
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +5 -9
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +2 -2
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +43 -37
- package/components/apps/editor/settingsPanel/GridPane.svelte +1 -3
- package/components/apps/editor/settingsPanel/GridTab.svelte +5 -15
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -16
- package/components/apps/editor/settingsPanel/Recompute.svelte +1 -0
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +6 -0
- package/components/apps/editor/settingsPanel/TableActions.svelte +4 -6
- package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -8
- package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +2 -2
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +58 -46
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +2 -0
- package/components/apps/gridUtils.d.ts +1 -3
- package/components/apps/gridUtils.js +1 -15
- package/components/apps/rx.d.ts +7 -5
- package/components/apps/rx.js +37 -19
- package/components/apps/svelte-grid/Grid.svelte +167 -0
- package/components/apps/svelte-grid/Grid.svelte.d.ts +45 -0
- package/components/apps/svelte-grid/LICENSE +23 -0
- package/components/apps/svelte-grid/MoveResize.svelte +328 -0
- package/components/apps/svelte-grid/MoveResize.svelte.d.ts +46 -0
- package/components/apps/svelte-grid/types.d.ts +21 -0
- package/components/apps/svelte-grid/utils/container.d.ts +1 -0
- package/components/apps/svelte-grid/utils/container.js +4 -0
- package/components/apps/svelte-grid/utils/helper.d.ts +10 -0
- package/components/apps/svelte-grid/utils/helper.js +36 -0
- package/components/apps/svelte-grid/utils/item.d.ts +14 -0
- package/components/apps/svelte-grid/utils/item.js +192 -0
- package/components/apps/svelte-grid/utils/matrix.d.ts +6 -0
- package/components/apps/svelte-grid/utils/matrix.js +53 -0
- package/components/apps/svelte-grid/utils/other.d.ts +3 -0
- package/components/apps/svelte-grid/utils/other.js +30 -0
- package/components/apps/types.d.ts +19 -14
- package/components/apps/utils.d.ts +1 -1
- package/components/apps/utils.js +15 -9
- package/components/common/CloseButton.svelte +18 -0
- package/components/common/CloseButton.svelte.d.ts +27 -0
- package/components/common/badge/Badge.svelte +6 -1
- package/components/common/badge/Badge.svelte.d.ts +1 -0
- package/components/common/button/Button.svelte.d.ts +1 -1
- package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
- package/components/common/drawer/DrawerContent.svelte +2 -6
- package/components/common/languageIcons/JavaScript.svelte +11 -0
- package/components/common/languageIcons/JavaScript.svelte.d.ts +25 -0
- package/components/common/languageIcons/LanguageIcon.svelte +3 -1
- package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
- package/components/common/menu/Menu.svelte +1 -1
- package/components/common/menu/Menu.svelte.d.ts +1 -1
- package/components/common/popup/Popup.svelte +2 -1
- package/components/common/popup/Popup.svelte.d.ts +9 -0
- package/components/common/table/AppRow.svelte +1 -4
- package/components/common/table/FlowRow.svelte +1 -4
- package/components/common/table/ScriptRow.svelte +1 -4
- package/components/common/tabs/Tab.svelte +1 -0
- package/components/common/tabs/Tab.svelte.d.ts +2 -0
- package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/components/graph/FlowGraph.svelte +1 -1
- package/components/propertyPicker/ObjectViewer.svelte +1 -1
- package/components/propertyPicker/PropPicker.svelte +4 -1
- package/components/sidebar/SidebarContent.svelte +2 -2
- package/consts.js +1 -1
- package/history.js +8 -1
- package/package.json +24 -28
- package/utils.js +0 -1
- package/components/apps/editor/AppComponentInputs.svelte +0 -13
- package/components/apps/editor/AppComponentInputs.svelte.d.ts +0 -20
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +0 -92
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +0 -18
- package/components/graph/svelvet/d3/controllers/README.md +0 -3
- package/components/graph/svelvet/d3/controllers/d3Old.d.ts +0 -1
- package/components/graph/svelvet/d3/controllers/d3Old.js +0 -43
- package/components/graph/svelvet/docs/CHANGELOG.md +0 -145
- package/components/graph/svelvet/docs/DESIGN_PATTERNS.md +0 -44
- package/components/graph/svelvet/docs/DOCUMENTATION.md +0 -5
- package/components/graph/svelvet/docs/README.md +0 -34
- package/components/graph/svelvet/docs/TODO.md +0 -14
- package/components/graph/svelvet/docs/Tutorials.md +0 -25
- package/components/graph/svelvet/docs/images/css-background-after.png +0 -0
- package/components/graph/svelvet/docs/images/css-background-before.png +0 -0
- package/components/graph/svelvet/docs/images/custom-edges-after.png +0 -0
- package/components/graph/svelvet/docs/images/custom-edges-before.png +0 -0
- package/components/graph/svelvet/docs/images/custom-nodes-after.png +0 -0
- package/components/graph/svelvet/docs/images/custom-nodes-before.png +0 -0
- package/components/graph/svelvet/docs/images/custom-svelte-components-after.png +0 -0
- package/components/graph/svelvet/docs/images/custom-svelte-components-before.png +0 -0
- package/components/graph/svelvet/docs/images/html-docs-after.png +0 -0
- package/components/graph/svelvet/docs/images/html-docs-before.png +0 -0
- package/components/graph/svelvet/docs/images/minimap-after.png +0 -0
- package/components/graph/svelvet/docs/images/minimap-before.png +0 -0
- package/components/graph/svelvet/docs/images/node-classes-after.png +0 -0
- package/components/graph/svelvet/docs/images/node-classes-before.png +0 -0
- package/components/graph/svelvet/docs/images/node-create-after.png +0 -0
- package/components/graph/svelvet/docs/images/node-create-before.png +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import Toggle from '../../Toggle.svelte';
|
|
2
|
+
import { getContext } from 'svelte';
|
|
2
3
|
import GridPanel from './GridPanel.svelte';
|
|
3
4
|
import PanelSection from './settingsPanel/common/PanelSection.svelte';
|
|
4
5
|
import InputsSpecsEditor from './settingsPanel/InputsSpecsEditor.svelte';
|
|
@@ -17,15 +18,27 @@ const { selectedComponent, app, stateId } = getContext('AppViewerContext');
|
|
|
17
18
|
|
|
18
19
|
{#each $app?.hiddenInlineScripts ?? [] as script, index (script.name)}
|
|
19
20
|
{#if $selectedComponent === `bg_${index}`}
|
|
20
|
-
<
|
|
21
|
-
{
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
bind:inputSpecs={script.fields}
|
|
26
|
-
userInputEnabled={false}
|
|
21
|
+
<div class="min-h-full flex flex-col divide-y">
|
|
22
|
+
<PanelSection title={`Configuration`}>
|
|
23
|
+
<Toggle
|
|
24
|
+
bind:checked={script.autoRefresh}
|
|
25
|
+
options={{ right: 'Run on start and app refresh' }}
|
|
27
26
|
/>
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
</PanelSection>
|
|
28
|
+
|
|
29
|
+
{#if Object.keys(script.fields).length > 0}
|
|
30
|
+
<PanelSection title={`Inputs`}>
|
|
31
|
+
{#key $stateId}
|
|
32
|
+
<InputsSpecsEditor
|
|
33
|
+
id={`bg_${index}`}
|
|
34
|
+
shouldCapitalize={false}
|
|
35
|
+
bind:inputSpecs={script.fields}
|
|
36
|
+
userInputEnabled={false}
|
|
37
|
+
/>
|
|
38
|
+
{/key}
|
|
39
|
+
</PanelSection>
|
|
40
|
+
{/if}
|
|
41
|
+
<div class="grow shrink" />
|
|
42
|
+
</div>
|
|
30
43
|
{/if}
|
|
31
44
|
{/each}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
<script>import { classNames } from '../../../utils';
|
|
2
2
|
import { createEventDispatcher, getContext } from 'svelte';
|
|
3
|
-
import Grid from '@windmill-labs/svelte-grid';
|
|
4
3
|
import { twMerge } from 'tailwind-merge';
|
|
5
4
|
import { columnConfiguration, isFixed, toggleFixed } from '../gridUtils';
|
|
6
5
|
import Component from './component/Component.svelte';
|
|
7
|
-
import { expandGriditem, findGridItem } from './appUtils';
|
|
6
|
+
import { expandGriditem, findGridItem, sortGridItemsPosition } from './appUtils';
|
|
8
7
|
import { push } from '../../../history';
|
|
8
|
+
import Grid from '../svelte-grid/Grid.svelte';
|
|
9
|
+
import GridViewer from './GridViewer.svelte';
|
|
9
10
|
export let containerHeight;
|
|
11
|
+
export let containerWidth = undefined;
|
|
10
12
|
let classes = '';
|
|
11
13
|
export { classes as class };
|
|
12
14
|
export let style = '';
|
|
@@ -37,27 +39,26 @@ const onpointerup = () => {
|
|
|
37
39
|
function selectComponent(id) {
|
|
38
40
|
onComponent = id;
|
|
39
41
|
if (!$connectingInput.opened) {
|
|
40
|
-
$selectedComponent
|
|
41
|
-
|
|
42
|
-
$focusedGrid = {
|
|
43
|
-
parentComponentId: parentId,
|
|
44
|
-
subGridIndex: index
|
|
42
|
+
if (id !== $selectedComponent) {
|
|
43
|
+
$selectedComponent = id;
|
|
45
44
|
}
|
|
46
|
-
*/
|
|
47
45
|
}
|
|
48
46
|
}
|
|
49
|
-
function lock(
|
|
50
|
-
let fComponent = findGridItem($app,
|
|
47
|
+
function lock(dataItem) {
|
|
48
|
+
let fComponent = findGridItem($app, dataItem.data.id);
|
|
51
49
|
if (fComponent) {
|
|
52
50
|
fComponent = toggleFixed(fComponent);
|
|
53
51
|
}
|
|
52
|
+
$app = $app;
|
|
54
53
|
}
|
|
55
54
|
// @ts-ignore
|
|
56
55
|
let container;
|
|
57
56
|
</script>
|
|
58
57
|
|
|
59
58
|
<div
|
|
60
|
-
class="relative w-full subgrid {visible
|
|
59
|
+
class="translate-x-0 translate-y-0 relative w-full subgrid {visible
|
|
60
|
+
? 'visible'
|
|
61
|
+
: 'invisible h-0 overflow-hidden'} "
|
|
61
62
|
bind:this={container}
|
|
62
63
|
>
|
|
63
64
|
<div
|
|
@@ -72,68 +73,94 @@ let container;
|
|
|
72
73
|
on:pointerup={onpointerup}
|
|
73
74
|
style="height: {containerHeight}px; {style ?? ''}"
|
|
74
75
|
>
|
|
75
|
-
|
|
76
|
-
<
|
|
77
|
-
|
|
76
|
+
{#if $mode !== 'preview'}
|
|
77
|
+
<div class={highlight ? 'border-gray-400 border border-dashed' : ''}>
|
|
78
|
+
<Grid
|
|
79
|
+
items={subGrid}
|
|
80
|
+
on:redraw={(e) => {
|
|
81
|
+
push(history, $app)
|
|
82
|
+
subGrid = e.detail
|
|
83
|
+
}}
|
|
84
|
+
let:dataItem
|
|
85
|
+
rowHeight={36}
|
|
86
|
+
cols={columnConfiguration}
|
|
87
|
+
fastStart={true}
|
|
88
|
+
gap={[4, 2]}
|
|
89
|
+
scroller={container}
|
|
90
|
+
parentWidth={$parentWidth - 17}
|
|
91
|
+
{containerWidth}
|
|
92
|
+
>
|
|
93
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
94
|
+
{#if $connectingInput.opened}
|
|
95
|
+
<div
|
|
96
|
+
on:pointerenter={() => ($connectingInput.hoveredComponent = dataItem.data.id)}
|
|
97
|
+
on:pointerleave={() => ($connectingInput.hoveredComponent = undefined)}
|
|
98
|
+
class="absolute w-full h-full bg-black border-2 bg-opacity-25 z-20 flex justify-center items-center"
|
|
99
|
+
/>
|
|
100
|
+
<div
|
|
101
|
+
style="transform: translate(-50%, -50%);"
|
|
102
|
+
class="absolute w-fit justify-center bg-indigo-500/90 left-[50%] top-[50%] z-50 px-6 rounded border text-white py-2 text-5xl center-center"
|
|
103
|
+
>
|
|
104
|
+
{dataItem.data.id}
|
|
105
|
+
</div>
|
|
106
|
+
{/if}
|
|
107
|
+
|
|
108
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
109
|
+
<div
|
|
110
|
+
on:pointerdown={() => selectComponent(dataItem.data.id)}
|
|
111
|
+
class={classNames(
|
|
112
|
+
'h-full w-full center-center',
|
|
113
|
+
$selectedComponent === dataItem.data.id ? 'active-grid-item' : '',
|
|
114
|
+
'top-0'
|
|
115
|
+
)}
|
|
116
|
+
>
|
|
117
|
+
<Component
|
|
118
|
+
render={visible}
|
|
119
|
+
{pointerdown}
|
|
120
|
+
component={dataItem.data}
|
|
121
|
+
selected={$selectedComponent === dataItem.data.id}
|
|
122
|
+
locked={isFixed(dataItem)}
|
|
123
|
+
on:lock={() => lock(dataItem)}
|
|
124
|
+
on:expand={() => {
|
|
125
|
+
const parentGridItem = findGridItem($app, id)
|
|
126
|
+
|
|
127
|
+
if (!parentGridItem) {
|
|
128
|
+
return
|
|
129
|
+
}
|
|
130
|
+
$selectedComponent = dataItem.data.id
|
|
131
|
+
push(history, $app)
|
|
132
|
+
|
|
133
|
+
expandGriditem(subGrid, dataItem, $breakpoint, parentGridItem)
|
|
134
|
+
$app = $app
|
|
135
|
+
}}
|
|
136
|
+
/>
|
|
137
|
+
</div>
|
|
138
|
+
</Grid>
|
|
139
|
+
</div>
|
|
140
|
+
{:else}
|
|
141
|
+
<GridViewer
|
|
142
|
+
items={subGrid}
|
|
78
143
|
let:dataItem
|
|
79
144
|
rowHeight={36}
|
|
80
145
|
cols={columnConfiguration}
|
|
81
|
-
fastStart={true}
|
|
82
146
|
gap={[4, 2]}
|
|
83
|
-
scroller={container}
|
|
84
147
|
parentWidth={$parentWidth - 17}
|
|
148
|
+
{containerWidth}
|
|
85
149
|
>
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
{/if}
|
|
102
|
-
|
|
103
|
-
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
104
|
-
<div
|
|
105
|
-
on:pointerdown={() => selectComponent(dataItem.data.id)}
|
|
106
|
-
class={classNames(
|
|
107
|
-
'h-full w-full center-center',
|
|
108
|
-
$selectedComponent === dataItem.data.id ? 'active-grid-item' : '',
|
|
109
|
-
gridComponent.data.card ? 'border border-gray-100' : '',
|
|
110
|
-
'top-0'
|
|
111
|
-
)}
|
|
112
|
-
>
|
|
113
|
-
<Component
|
|
114
|
-
render={visible}
|
|
115
|
-
{pointerdown}
|
|
116
|
-
component={gridComponent.data}
|
|
117
|
-
selected={$selectedComponent === dataItem.data.id}
|
|
118
|
-
locked={isFixed(gridComponent)}
|
|
119
|
-
on:lock={() => lock(gridComponent)}
|
|
120
|
-
on:expand={() => {
|
|
121
|
-
const parentGridItem = findGridItem($app, id)
|
|
122
|
-
|
|
123
|
-
if (!parentGridItem) {
|
|
124
|
-
return
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
push(history, $app)
|
|
128
|
-
|
|
129
|
-
expandGriditem(subGrid, gridComponent, $breakpoint, parentGridItem)
|
|
130
|
-
$app = { ...$app }
|
|
131
|
-
}}
|
|
132
|
-
/>
|
|
133
|
-
</div>
|
|
134
|
-
{/if}
|
|
135
|
-
{/each}
|
|
136
|
-
</Grid>
|
|
137
|
-
</div>
|
|
150
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
151
|
+
<div
|
|
152
|
+
on:pointerdown={() => selectComponent(dataItem.data.id)}
|
|
153
|
+
class={classNames('h-full w-full center-center', 'top-0')}
|
|
154
|
+
>
|
|
155
|
+
<Component
|
|
156
|
+
render={visible}
|
|
157
|
+
{pointerdown}
|
|
158
|
+
component={dataItem.data}
|
|
159
|
+
selected={$selectedComponent === dataItem.data.id}
|
|
160
|
+
locked={isFixed(dataItem)}
|
|
161
|
+
/>
|
|
162
|
+
</div>
|
|
163
|
+
</GridViewer>
|
|
164
|
+
{/if}
|
|
138
165
|
</div>
|
|
139
166
|
</div>
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { GridItem } from '../types';
|
|
2
3
|
declare const __propDef: {
|
|
3
4
|
props: {
|
|
4
5
|
containerHeight: number;
|
|
6
|
+
containerWidth?: number | undefined;
|
|
5
7
|
class?: string | undefined;
|
|
6
8
|
style?: string | undefined;
|
|
7
9
|
noPadding?: boolean | undefined;
|
|
8
10
|
noYPadding?: boolean | undefined;
|
|
9
|
-
subGrid?:
|
|
10
|
-
data: import("./component").AppComponent;
|
|
11
|
-
id: string;
|
|
12
|
-
}>[] | undefined;
|
|
11
|
+
subGrid?: GridItem[] | undefined;
|
|
13
12
|
visible?: boolean | undefined;
|
|
14
13
|
id: string;
|
|
15
14
|
shouldHighlight?: boolean | undefined;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type { App, EditorBreakpoint, FocusedGrid, GridItem } from '../types';
|
|
1
|
+
import type { App, ConnectingInput, EditorBreakpoint, FocusedGrid, GridItem } from '../types';
|
|
2
2
|
import { type AppComponent } from './component';
|
|
3
|
-
|
|
3
|
+
import type { Output, World } from '../rx';
|
|
4
|
+
import type { FilledItem } from '../svelte-grid/types';
|
|
5
|
+
export declare function findGridItemParentGrid(app: App, id: string): string | undefined;
|
|
6
|
+
export declare function allsubIds(app: App, parentId: string): string[];
|
|
4
7
|
export declare function findGridItem(app: App, id: string): GridItem | undefined;
|
|
5
8
|
export declare function getNextGridItemId(app: App): string;
|
|
6
9
|
export declare function createNewGridItem(grid: GridItem[], id: string, data: AppComponent): GridItem;
|
|
10
|
+
export declare function getGridItems(app: App, focusedGrid: FocusedGrid | undefined): GridItem[];
|
|
7
11
|
export declare function insertNewGridItem(app: App, data: AppComponent, focusedGrid: FocusedGrid | undefined, keepId?: boolean): string;
|
|
8
12
|
export declare function getAllSubgridsAndComponentIds(app: App, component: AppComponent): [string[], string[]];
|
|
9
13
|
export declare function deleteGridItem(app: App, component: AppComponent, parent: string | undefined, shouldKeepSubGrid: boolean): string[];
|
|
10
|
-
export declare function duplicateGridItem(app: App, parent: string | undefined, id: string): string | undefined;
|
|
11
14
|
type AvailableSpace = {
|
|
12
15
|
left: number;
|
|
13
16
|
right: number;
|
|
@@ -15,5 +18,12 @@ type AvailableSpace = {
|
|
|
15
18
|
bottom: number;
|
|
16
19
|
};
|
|
17
20
|
export declare function findAvailableSpace(grid: GridItem[], gridItem: GridItem, editorBreakpoint: EditorBreakpoint, parentGridItem?: GridItem | undefined): AvailableSpace | undefined;
|
|
21
|
+
type Outputtable<Type> = {
|
|
22
|
+
-readonly [Property in keyof Type]: Output<Type[Property]>;
|
|
23
|
+
};
|
|
24
|
+
export declare function initOutput<I extends Record<string, any>>(world: World | undefined, id: string, init: I): Outputtable<I>;
|
|
18
25
|
export declare function expandGriditem(grid: GridItem[], gridComponent: GridItem, $breakpoint: EditorBreakpoint, parentGridItem?: GridItem | undefined): void;
|
|
26
|
+
export declare function sortGridItemsPosition<T>(gridItems: FilledItem<T>[], width: number): FilledItem<T>[];
|
|
27
|
+
export declare function connectInput(connectingInput: ConnectingInput, componentId: string, path: string): ConnectingInput;
|
|
28
|
+
export declare function recursivelyFilterKeyInJSON(json: object, search: string, extraSearch?: string | undefined): object;
|
|
19
29
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getNextId } from '../../flows/flowStateUtils';
|
|
2
2
|
import { getRecommendedDimensionsByComponent } from './component';
|
|
3
|
-
import gridHelp from '@windmill-labs/svelte-grid/src/utils/helper';
|
|
4
3
|
import { gridColumns } from '../gridUtils';
|
|
5
4
|
import { allItems } from '../utils';
|
|
5
|
+
import gridHelp from '../svelte-grid/utils/helper';
|
|
6
6
|
function findGridItemById(root, subGrids, id) {
|
|
7
7
|
for (const gridItem of allItems(root, subGrids)) {
|
|
8
8
|
if (gridItem.id === id) {
|
|
@@ -11,7 +11,7 @@ function findGridItemById(root, subGrids, id) {
|
|
|
11
11
|
}
|
|
12
12
|
return undefined;
|
|
13
13
|
}
|
|
14
|
-
export function
|
|
14
|
+
export function findGridItemParentGrid(app, id) {
|
|
15
15
|
const gridItem = app.grid.find((x) => x.id === id);
|
|
16
16
|
if (gridItem) {
|
|
17
17
|
return undefined;
|
|
@@ -21,11 +21,18 @@ export function findGridItemParentId(app, id) {
|
|
|
21
21
|
const subGrid = app.subgrids[key];
|
|
22
22
|
const gridItem = subGrid.find((x) => x.id === id);
|
|
23
23
|
if (gridItem) {
|
|
24
|
-
return key
|
|
24
|
+
return key;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
export function allsubIds(app, parentId) {
|
|
30
|
+
let item = findGridItem(app, parentId);
|
|
31
|
+
if (!item?.data.numberOfSubgrids) {
|
|
32
|
+
return [parentId];
|
|
33
|
+
}
|
|
34
|
+
return getAllSubgridsAndComponentIds(app, item?.data)[1];
|
|
35
|
+
}
|
|
29
36
|
export function findGridItem(app, id) {
|
|
30
37
|
return findGridItemById(app.grid, app.subgrids, id);
|
|
31
38
|
}
|
|
@@ -36,21 +43,20 @@ export function getNextGridItemId(app) {
|
|
|
36
43
|
return id;
|
|
37
44
|
}
|
|
38
45
|
export function createNewGridItem(grid, id, data) {
|
|
39
|
-
const appComponent = data;
|
|
40
|
-
appComponent.id = id;
|
|
41
46
|
const newComponent = {
|
|
42
47
|
resizable: true,
|
|
43
48
|
draggable: true,
|
|
44
49
|
x: 0,
|
|
45
50
|
y: 0
|
|
46
51
|
};
|
|
47
|
-
let newData = JSON.parse(JSON.stringify(
|
|
52
|
+
let newData = JSON.parse(JSON.stringify(data));
|
|
53
|
+
newData.id = id;
|
|
48
54
|
const newItem = {
|
|
49
55
|
data: newData,
|
|
50
56
|
id: id
|
|
51
57
|
};
|
|
52
58
|
gridColumns.forEach((column) => {
|
|
53
|
-
const rec = getRecommendedDimensionsByComponent(
|
|
59
|
+
const rec = getRecommendedDimensionsByComponent(newData.type, column);
|
|
54
60
|
newItem[column] = {
|
|
55
61
|
...newComponent,
|
|
56
62
|
min: { w: 1, h: 1 },
|
|
@@ -66,21 +72,20 @@ export function createNewGridItem(grid, id, data) {
|
|
|
66
72
|
});
|
|
67
73
|
return newItem;
|
|
68
74
|
}
|
|
69
|
-
export function
|
|
70
|
-
const id = keepId ? data.id : getNextGridItemId(app);
|
|
71
|
-
if (!app.subgrids) {
|
|
72
|
-
app.subgrids = {};
|
|
73
|
-
}
|
|
75
|
+
export function getGridItems(app, focusedGrid) {
|
|
74
76
|
if (!focusedGrid) {
|
|
75
|
-
|
|
76
|
-
app.grid.push(newItem);
|
|
77
|
+
return app.grid;
|
|
77
78
|
}
|
|
78
79
|
else {
|
|
79
80
|
const { parentComponentId, subGridIndex } = focusedGrid;
|
|
80
81
|
const key = `${parentComponentId}-${subGridIndex ?? 0}`;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
return app?.subgrids?.[key] ?? [];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export function insertNewGridItem(app, data, focusedGrid, keepId) {
|
|
86
|
+
const id = keepId ? data.id : getNextGridItemId(app);
|
|
87
|
+
if (!app.subgrids) {
|
|
88
|
+
app.subgrids = {};
|
|
84
89
|
}
|
|
85
90
|
// We only want to set subgrids when we are not moving
|
|
86
91
|
if (!keepId) {
|
|
@@ -88,6 +93,15 @@ export function insertNewGridItem(app, data, focusedGrid, keepId) {
|
|
|
88
93
|
app.subgrids[`${id}-${i}`] = [];
|
|
89
94
|
}
|
|
90
95
|
}
|
|
96
|
+
const key = focusedGrid
|
|
97
|
+
? `${focusedGrid?.parentComponentId}-${focusedGrid?.subGridIndex ?? 0}`
|
|
98
|
+
: undefined;
|
|
99
|
+
let grid = focusedGrid ? app.subgrids[key] : app.grid;
|
|
100
|
+
const newItem = createNewGridItem(grid, id, data);
|
|
101
|
+
grid.push(newItem);
|
|
102
|
+
if (focusedGrid) {
|
|
103
|
+
app.subgrids[key] = grid;
|
|
104
|
+
}
|
|
91
105
|
return id;
|
|
92
106
|
}
|
|
93
107
|
export function getAllSubgridsAndComponentIds(app, component) {
|
|
@@ -131,24 +145,10 @@ export function deleteGridItem(app, component, parent, shouldKeepSubGrid) {
|
|
|
131
145
|
}
|
|
132
146
|
return components;
|
|
133
147
|
}
|
|
134
|
-
export function duplicateGridItem(app, parent, id) {
|
|
135
|
-
const gridItem = findGridItem(app, id);
|
|
136
|
-
if (gridItem) {
|
|
137
|
-
const newId = getNextGridItemId(app);
|
|
138
|
-
const newItem = JSON.parse(JSON.stringify(gridItem));
|
|
139
|
-
newItem.id = newId;
|
|
140
|
-
newItem.data.id = newId;
|
|
141
|
-
let focusedGrid = parent
|
|
142
|
-
? { parentComponentId: parent.split('-')[0], subGridIndex: Number(parent.split('-')[1]) }
|
|
143
|
-
: undefined;
|
|
144
|
-
return insertNewGridItem(app, newItem.data, focusedGrid);
|
|
145
|
-
}
|
|
146
|
-
return undefined;
|
|
147
|
-
}
|
|
148
148
|
export function findAvailableSpace(grid, gridItem, editorBreakpoint, parentGridItem = undefined) {
|
|
149
149
|
if (gridItem) {
|
|
150
150
|
const breakpoint = editorBreakpoint === 'sm' ? 3 : 12;
|
|
151
|
-
const maxHeight = parentGridItem ? parentGridItem[breakpoint].h - 1 :
|
|
151
|
+
const maxHeight = parentGridItem ? parentGridItem[breakpoint].h - 1 : 16;
|
|
152
152
|
const maxWidth = 12;
|
|
153
153
|
const availableSpace = {
|
|
154
154
|
left: 0,
|
|
@@ -226,6 +226,12 @@ function isOverlapping(item1, item2) {
|
|
|
226
226
|
item1.y < item2.y + item2.h &&
|
|
227
227
|
item1.y + item1.h > item2.y);
|
|
228
228
|
}
|
|
229
|
+
export function initOutput(world, id, init) {
|
|
230
|
+
if (!world) {
|
|
231
|
+
return {};
|
|
232
|
+
}
|
|
233
|
+
return Object.fromEntries(Object.entries(init).map(([key, value]) => [key, world.newOutput(id, key, value)]));
|
|
234
|
+
}
|
|
229
235
|
export function expandGriditem(grid, gridComponent, $breakpoint, parentGridItem = undefined) {
|
|
230
236
|
const availableSpace = findAvailableSpace(grid, gridComponent, $breakpoint, parentGridItem);
|
|
231
237
|
if (!availableSpace) {
|
|
@@ -233,9 +239,72 @@ export function expandGriditem(grid, gridComponent, $breakpoint, parentGridItem
|
|
|
233
239
|
}
|
|
234
240
|
const { left, right, top, bottom } = availableSpace;
|
|
235
241
|
const width = $breakpoint === 'sm' ? 3 : 12;
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
242
|
+
const item = gridComponent[width];
|
|
243
|
+
item.x = item.x - left;
|
|
244
|
+
item.y = item.y - top;
|
|
245
|
+
item.w = item.w + left + right;
|
|
246
|
+
item.h = item.h + top + bottom;
|
|
247
|
+
}
|
|
248
|
+
export function sortGridItemsPosition(gridItems, width) {
|
|
249
|
+
return gridItems.sort((a, b) => {
|
|
250
|
+
const aX = a[width].x;
|
|
251
|
+
const aY = a[width].y;
|
|
252
|
+
const bX = b[width].x;
|
|
253
|
+
const bY = b[width].y;
|
|
254
|
+
if (aY < bY) {
|
|
255
|
+
return -1;
|
|
256
|
+
}
|
|
257
|
+
else if (aY > bY) {
|
|
258
|
+
return 1;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
if (aX < bX) {
|
|
262
|
+
return -1;
|
|
263
|
+
}
|
|
264
|
+
else if (aX > bX) {
|
|
265
|
+
return 1;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
return 0;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
export function connectInput(connectingInput, componentId, path) {
|
|
274
|
+
if (connectingInput) {
|
|
275
|
+
connectingInput = {
|
|
276
|
+
opened: false,
|
|
277
|
+
input: {
|
|
278
|
+
connection: {
|
|
279
|
+
componentId,
|
|
280
|
+
path
|
|
281
|
+
},
|
|
282
|
+
type: 'connected'
|
|
283
|
+
},
|
|
284
|
+
hoveredComponent: undefined
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
return connectingInput;
|
|
288
|
+
}
|
|
289
|
+
export function recursivelyFilterKeyInJSON(json, search, extraSearch) {
|
|
290
|
+
if (!search || search == '') {
|
|
291
|
+
return json;
|
|
292
|
+
}
|
|
293
|
+
let filteredJSON = {};
|
|
294
|
+
Object.keys(json).forEach((key) => {
|
|
295
|
+
if (key.toLowerCase().includes(search.toLowerCase()) ||
|
|
296
|
+
extraSearch?.toLowerCase().includes(search.toLowerCase()) ||
|
|
297
|
+
(typeof json[key] === 'string' && json[key].toLowerCase().includes(search.toLowerCase())) ||
|
|
298
|
+
(typeof json[key] === 'number' &&
|
|
299
|
+
json[key].toString().toLowerCase().includes(search.toLowerCase()))) {
|
|
300
|
+
filteredJSON[key] = json[key];
|
|
301
|
+
}
|
|
302
|
+
else if (typeof json[key] === 'object') {
|
|
303
|
+
const res = recursivelyFilterKeyInJSON(json[key], search, extraSearch);
|
|
304
|
+
if (Object.keys(res).length !== 0) {
|
|
305
|
+
filteredJSON[key] = res;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
return filteredJSON;
|
|
241
310
|
}
|