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.
Files changed (138) hide show
  1. package/common.d.ts +2 -2
  2. package/components/ArgInput.svelte +52 -72
  3. package/components/ArgInput.svelte.d.ts +1 -3
  4. package/components/DisplayResult.svelte +17 -17
  5. package/components/Editor.svelte +0 -3
  6. package/components/Editor.svelte.d.ts +0 -1
  7. package/components/FieldHeader.svelte +0 -1
  8. package/components/FieldHeader.svelte.d.ts +0 -4
  9. package/components/FlowBuilder.svelte +6 -0
  10. package/components/FlowStatusViewer.svelte +7 -4
  11. package/components/FlowStatusViewer.svelte.d.ts +1 -0
  12. package/components/FlowViewer.svelte +0 -1
  13. package/components/InputTransformForm.svelte +0 -1
  14. package/components/LightweightArgInput.svelte +1 -14
  15. package/components/LightweightArgInput.svelte.d.ts +1 -3
  16. package/components/SimpleEditor.svelte +0 -1
  17. package/components/SimpleEditor.svelte.d.ts +0 -1
  18. package/components/TemplateEditor.svelte +0 -1
  19. package/components/Toggle.svelte +1 -1
  20. package/components/Toggle.svelte.d.ts +0 -1
  21. package/components/apps/components/buttons/AppButton.svelte +3 -17
  22. package/components/apps/components/buttons/AppForm.svelte +2 -10
  23. package/components/apps/components/buttons/AppFormButton.svelte +1 -13
  24. package/components/apps/components/display/AppDisplayComponent.svelte +23 -17
  25. package/components/apps/components/display/AppHtml.svelte +7 -1
  26. package/components/apps/components/display/AppHtml.svelte.d.ts +2 -0
  27. package/components/apps/components/display/AppMap.svelte +1 -1
  28. package/components/apps/components/display/AppPdf.svelte +1 -1
  29. package/components/apps/components/display/PlotlyHtml.svelte +20 -3
  30. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +2 -0
  31. package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
  32. package/components/apps/components/display/table/AppTable.svelte +75 -49
  33. package/components/apps/components/display/table/AppTable.svelte.d.ts +1 -1
  34. package/components/apps/components/display/table/AppTableFooter.svelte +2 -1
  35. package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +1 -0
  36. package/components/apps/components/display/table/tableOptions.js +1 -1
  37. package/components/apps/components/helpers/DebouncedInput.svelte +1 -0
  38. package/components/apps/components/helpers/DebouncedInput.svelte.d.ts +2 -0
  39. package/components/apps/components/helpers/HiddenComponent.svelte +3 -2
  40. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +2 -1
  41. package/components/apps/components/helpers/InputValue.svelte +3 -3
  42. package/components/apps/components/helpers/RefreshButton.svelte +3 -10
  43. package/components/apps/components/helpers/RefreshButton.svelte.d.ts +1 -0
  44. package/components/apps/components/helpers/RunnableComponent.svelte +19 -15
  45. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  46. package/components/apps/components/helpers/RunnableWrapper.svelte +3 -1
  47. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
  48. package/components/apps/components/helpers/eval.d.ts +4 -2
  49. package/components/apps/components/helpers/eval.js +6 -4
  50. package/components/apps/components/inputs/AppCheckbox.svelte +0 -4
  51. package/components/apps/components/inputs/AppDateInput.svelte +2 -2
  52. package/components/apps/components/inputs/AppMultiSelect.svelte +13 -5
  53. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +0 -2
  54. package/components/apps/components/inputs/AppNumberInput.svelte +3 -3
  55. package/components/apps/components/inputs/AppSelect.svelte +11 -4
  56. package/components/apps/components/inputs/AppSelect.svelte.d.ts +0 -2
  57. package/components/apps/components/inputs/AppSliderInputs.svelte +1 -1
  58. package/components/apps/components/inputs/AppTextInput.svelte +53 -43
  59. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +1 -1
  60. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +1 -1
  61. package/components/apps/components/layout/AppContainer.svelte +2 -2
  62. package/components/apps/components/layout/AppDrawer.svelte +1 -2
  63. package/components/apps/components/layout/AppSplitpanes.svelte +3 -3
  64. package/components/apps/components/layout/AppTabs.svelte +1 -1
  65. package/components/apps/editor/AppEditor.svelte +36 -10
  66. package/components/apps/editor/AppEditorHeader.svelte +5 -0
  67. package/components/apps/editor/AppPreview.svelte +17 -5
  68. package/components/apps/editor/ComponentHeader.svelte +1 -0
  69. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
  70. package/components/apps/editor/GridEditor.svelte +22 -12
  71. package/components/apps/editor/GridViewer.svelte +2 -2
  72. package/components/apps/editor/GridViewer.svelte.d.ts +1 -1
  73. package/components/apps/editor/RecomputeAllComponents.svelte +5 -7
  74. package/components/apps/editor/SettingsPanel.svelte +4 -4
  75. package/components/apps/editor/SubGridEditor.svelte +13 -12
  76. package/components/apps/editor/appUtils.d.ts +1 -0
  77. package/components/apps/editor/appUtils.js +19 -0
  78. package/components/apps/editor/component/Component.svelte +19 -8
  79. package/components/apps/editor/component/Component.svelte.d.ts +1 -1
  80. package/components/apps/editor/component/ComponentNavigation.svelte +55 -46
  81. package/components/apps/editor/component/components.d.ts +45 -28
  82. package/components/apps/editor/component/components.js +41 -27
  83. package/components/apps/editor/component/sets.js +2 -1
  84. package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
  85. package/components/apps/editor/componentsPanel/CssProperty.svelte +0 -26
  86. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +0 -2
  87. package/components/apps/editor/componentsPanel/CssSettings.svelte +1 -0
  88. package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +13 -10
  89. package/components/apps/editor/componentsPanel/quickStyleProperties.js +3 -0
  90. package/components/apps/editor/componentsPanel/store.js +4 -4
  91. package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -26
  92. package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +0 -1
  93. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +8 -6
  94. package/components/apps/editor/contextPanel/ContextPanel.svelte +7 -14
  95. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +2 -25
  96. package/components/apps/editor/contextPanel/components/OutputHeader.svelte +29 -40
  97. package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +1 -2
  98. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +2 -7
  99. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -1
  100. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +10 -11
  101. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +4 -3
  102. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  103. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +0 -1
  104. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +2 -2
  105. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +2 -0
  106. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +22 -19
  107. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +22 -3
  108. package/components/apps/editor/settingsPanel/GridTab.svelte +1 -2
  109. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
  110. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
  111. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -0
  112. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +1 -2
  113. package/components/apps/editor/settingsPanel/StylePanel.svelte +40 -2
  114. package/components/apps/editor/settingsPanel/TableActions.svelte +3 -3
  115. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +5 -1
  116. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +3 -3
  117. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +3 -2
  118. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +4 -1
  119. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -2
  120. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +1 -1
  121. package/components/apps/inputType.d.ts +2 -2
  122. package/components/apps/rx.d.ts +2 -2
  123. package/components/apps/svelte-grid/Grid.svelte +50 -34
  124. package/components/apps/svelte-grid/Grid.svelte.d.ts +14 -9
  125. package/components/apps/svelte-grid/MoveResize.svelte +76 -55
  126. package/components/apps/svelte-grid/MoveResize.svelte.d.ts +15 -9
  127. package/components/apps/svelte-grid/utils/helper.d.ts +0 -1
  128. package/components/apps/svelte-grid/utils/helper.js +0 -3
  129. package/components/apps/types.d.ts +7 -4
  130. package/components/apps/utils.d.ts +2 -0
  131. package/components/apps/utils.js +33 -1
  132. package/components/flows/map/MapItem.svelte +3 -3
  133. package/components/propertyPicker/ObjectViewer.svelte +0 -3
  134. package/components/scriptEditor/LogPanel.svelte +3 -3
  135. package/infer.js +6 -1
  136. package/package.json +1 -2
  137. package/components/apps/editor/contextPanel/components/MinMaxButton.svelte +0 -25
  138. 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] || ''}
@@ -19,6 +19,6 @@ $: onLoad =
19
19
  bind:inlineScript={runnable.inlineScript}
20
20
  {onLoad}
21
21
  {doNotRecomputeOnInputChanged}
22
- id={$selectedComponent}
22
+ id={$selectedComponent?.[0]}
23
23
  {onClick}
24
24
  />
@@ -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
  }>;
@@ -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): any;
5
+ next(v: T): void;
6
6
  }
7
7
  export interface Observable<T> {
8
- subscribe(x: Subscriber<T>): any;
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 onTopId = undefined;
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 activeItem = getItemById(detail.id, citems);
88
- if (activeItem) {
89
- activeItem = {
90
- ...activeItem,
91
- [getComputedCols]: {
92
- ...activeItem[getComputedCols],
93
- ...detail.shadow
94
- }
95
- };
96
- sortedItems = moveItem(activeItem, citems, getComputedCols, getItemById(detail.id, citems));
97
- if (detail.onUpdate)
98
- detail.onUpdate();
99
- dispatch('change', {
100
- unsafeItem: activeItem,
101
- id: activeItem.id,
102
- cols: getComputedCols
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
- on:pointerup={pointerup}
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
- onTopId?: string | undefined;
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
- const inActivate = () => {
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
- }, 100);
61
- dispatch('pointerup', {
62
- id
63
- });
61
+ }, 50);
64
62
  }
65
- };
66
- let repaint = (cb, isPointerUp) => {
63
+ }
64
+ let repaint = (activate, isPointerUp) => {
67
65
  dispatch('repaint', {
68
66
  id,
69
- shadow,
70
67
  isPointerUp,
71
- onUpdate: cb
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 { height, top, right, bottom, left } = nativeContainer.getBoundingClientRect();
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(target) {
91
- let gridItem = target.closest('.svlt-grid-item');
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, target }) => {
111
+ const pointerdown = ({ clientX, clientY }) => {
113
112
  dragClosure = () => {
114
113
  dragClosure = undefined;
115
114
  initX = clientX;
116
115
  initY = clientY;
117
- capturePos = { x: left, y: top };
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
- let velocityTop = Math.max(0, (containerFrame.top + Y_SENSOR - clientY) / Y_SENSOR);
161
- let velocityBottom = Math.max(0, (clientY - (containerFrame.bottom - Y_SENSOR)) / Y_SENSOR);
162
- const topSensor = velocityTop > 0 && velocityBottom === 0;
163
- const bottomSensor = velocityBottom > 0 && velocityTop === 0;
164
- sign.y = topSensor ? -1 : bottomSensor ? 1 : 0;
165
- vel.y = sign.y === -1 ? velocityTop : velocityBottom;
166
- if (vel.y > 0) {
167
- if (!intervalId) {
168
- // Start scrolling
169
- // TODO Use requestAnimationFrame
170
- intervalId = setInterval(() => {
171
- scrollElement.scrollTop += 2 * (vel.y + Math.sign(vel.y)) * sign.y;
172
- update();
173
- }, 10);
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
- repaint(inActivate, true);
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, target } = e;
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(target);
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(undefined, false);
242
+ repaint(false, false);
223
243
  }
224
244
  };
225
245
  const resizePointerUp = (e) => {
226
246
  e.stopPropagation();
227
- repaint(inActivate, true);
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 movePointerDown={pointerdown} {resizePointerDown} />
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 {};
@@ -1,5 +1,4 @@
1
1
  declare const gridHelp: {
2
- normalize(items: any, col: any): any;
3
2
  adjust(items: any, col: any): import("../types").FilledItem<unknown>[];
4
3
  item(obj: any): any;
5
4
  findSpace(item: any, items: any, cols: any): {
@@ -14,9 +14,6 @@ function makeItem(item) {
14
14
  };
15
15
  }
16
16
  const gridHelp = {
17
- normalize(items, col) {
18
- return normalize(items, col);
19
- },
20
17
  adjust(items, col) {
21
18
  return adjust(items, col);
22
19
  },
@@ -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, (inlineScript?: InlineScript) => Promise<void>>>;
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
- movingcomponent: Writable<string | undefined>;
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>;