windmill-components 1.352.9 → 1.362.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/assets/app.css +8 -45
- package/package/components/ApiConnectForm.svelte +1 -0
- package/package/components/ArgInput.svelte +5 -1
- package/package/components/ChangeInstanceUsername.svelte +20 -12
- package/package/components/ContentSearchInner.svelte +359 -0
- package/package/components/{ContentSearch.svelte.d.ts → ContentSearchInner.svelte.d.ts} +9 -5
- package/package/components/CustomPopover.svelte +73 -0
- package/package/components/CustomPopover.svelte.d.ts +29 -0
- package/package/components/DateTimeInput.svelte +29 -3
- package/package/components/DateTimeInput.svelte.d.ts +4 -0
- package/package/components/Dev.svelte +8 -3
- package/package/components/DurationMs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +122 -24
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +2 -2
- package/package/components/FlowJobResult.svelte +5 -3
- package/package/components/FlowStatusViewer.svelte +4 -3
- package/package/components/FlowStatusViewerInner.svelte +265 -160
- package/package/components/FlowStatusViewerInner.svelte.d.ts +15 -2
- package/package/components/HighlightTheme.svelte +75 -77
- package/package/components/InputTransformForm.svelte +2 -0
- package/package/components/JobArgs.svelte +59 -44
- package/package/components/JobArgs.svelte.d.ts +2 -0
- package/package/components/LightweightArgInput.svelte +27 -2
- package/package/components/Path.svelte +3 -8
- package/package/components/Popover.svelte +1 -1
- package/package/components/ResourceEditor.svelte +3 -2
- package/package/components/ResourceEditorDrawer.svelte +4 -1
- package/package/components/ResourcePicker.svelte +1 -0
- package/package/components/RunChart.svelte +6 -3
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +24 -23
- package/package/components/RunForm.svelte.d.ts +0 -2
- package/package/components/SavedInputs.svelte +50 -39
- package/package/components/ScheduleEditorInner.svelte +26 -4
- package/package/components/ScriptBuilder.svelte +47 -22
- package/package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/package/components/SearchItems.svelte +5 -4
- package/package/components/Summary.svelte +74 -0
- package/package/components/Summary.svelte.d.ts +16 -0
- package/package/components/apps/components/display/AppMarkdown.svelte +3 -2
- package/package/components/apps/components/display/AppMenu.svelte +2 -2
- package/package/components/apps/components/display/AppNavbar.svelte +94 -0
- package/package/components/apps/components/display/AppNavbar.svelte.d.ts +24 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte +146 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte.d.ts +27 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +21 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte.d.ts +20 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +16 -0
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +12 -16
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +5 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +28 -6
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +68 -43
- package/package/components/apps/components/inputs/AppDateSelect.svelte +284 -0
- package/package/components/apps/components/inputs/AppDateSelect.svelte.d.ts +21 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +2 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +22 -27
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -30
- package/package/components/apps/components/layout/AppModal.svelte +17 -6
- package/package/components/apps/editor/AppDeploymentHistory.svelte +2 -3
- package/package/components/apps/editor/AppDeploymentHistory.svelte.d.ts +3 -2
- package/package/components/apps/editor/AppEditor.svelte +9 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +7 -10
- package/package/components/apps/editor/AppPreview.svelte +12 -3
- package/package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
- package/package/components/apps/editor/DecisionTreeDebug.svelte +92 -68
- package/package/components/apps/editor/DeploymentHistory.svelte +0 -2
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +17 -0
- package/package/components/apps/editor/component/Component.svelte +23 -0
- package/package/components/apps/editor/component/components.d.ts +205 -3
- package/package/components/apps/editor/component/components.js +160 -1
- package/package/components/apps/editor/component/default-codes.js +13 -13
- package/package/components/apps/editor/component/sets.js +4 -2
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -12
- package/package/components/apps/editor/componentsPanel/cssUtils.js +39 -3
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte +6 -0
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +11 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +21 -8
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -20
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +48 -15
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +25 -5
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +192 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte +17 -0
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte.d.ts +16 -0
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +81 -38
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +12 -5
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +11 -12
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +4 -1
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +7 -1
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -3
- package/package/components/apps/types.d.ts +3 -0
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -2
- package/package/components/common/CloseButton.svelte +10 -10
- package/package/components/common/CloseButton.svelte.d.ts +6 -14
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +7 -1
- package/package/components/common/fileInput/FileInput.svelte +2 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +4 -3
- package/package/components/common/popup/Popup.svelte.d.ts +1 -0
- package/package/components/common/table/AppRow.svelte +3 -10
- package/package/components/common/table/FlowRow.svelte +12 -1
- package/package/components/copilot/IteratorGen.svelte +1 -1
- package/package/components/copilot/PredicateGen.svelte +1 -1
- package/package/components/copilot/StepInputGen.svelte +8 -3
- package/package/components/copilot/StepInputsGen.svelte +5 -2
- package/package/components/details/WebhooksPanel.svelte +32 -1
- package/package/components/details/WebhooksPanel.svelte.d.ts +2 -11
- package/package/components/flows/FlowHistory.svelte +208 -0
- package/package/components/flows/FlowHistory.svelte.d.ts +21 -0
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +23 -26
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -18
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -4
- package/package/components/flows/content/FlowModuleHeader.svelte +3 -4
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/SuspendDrawer.svelte +7 -7
- package/package/components/flows/flowStateUtils.js +2 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/header/FlowImportExportMenu.svelte +3 -16
- package/package/components/flows/header/FlowImportExportMenu.svelte.d.ts +4 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +69 -0
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +22 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -4
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +20 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +9 -0
- package/package/components/flows/map/VirtualItem.svelte +4 -2
- package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -0
- package/package/components/flows/previousResults.d.ts +9 -0
- package/package/components/flows/previousResults.js +42 -8
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +1 -1
- package/package/components/graph/FlowGraph.svelte +80 -42
- package/package/components/graph/FlowGraph.svelte.d.ts +1 -0
- package/package/components/graph/model.d.ts +6 -1
- package/package/components/graph/svelvet/container/controllers/middleware.js +4 -4
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +24 -25
- package/package/components/graph/util.d.ts +1 -1
- package/package/components/graph/util.js +1 -2
- package/package/components/home/ItemsList.svelte +22 -19
- package/package/components/jobs/JobPreview.svelte +11 -2
- package/package/components/propertyPicker/PropPicker.svelte +30 -0
- package/package/components/propertyPicker/PropPickerResult.svelte +14 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +21 -8
- package/package/components/runs/JobLoader.svelte.d.ts +2 -0
- package/package/components/runs/JobPreview.svelte +5 -1
- package/package/components/runs/RunRow.svelte +12 -8
- package/package/components/runs/RunsFilter.svelte +2 -4
- package/package/components/runs/RunsFilter.svelte.d.ts +0 -1
- package/package/components/runs/RunsTable.svelte +63 -29
- package/package/components/runs/RunsTable.svelte.d.ts +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +9 -1
- package/package/components/schema/PropertyEditor.svelte +1 -1
- package/package/components/search/GlobalSearchModal.svelte +559 -0
- package/package/components/search/GlobalSearchModal.svelte.d.ts +17 -0
- package/package/components/search/QuickMenuItem.svelte +76 -0
- package/package/components/search/QuickMenuItem.svelte.d.ts +27 -0
- package/package/components/sidebar/MenuButton.svelte +11 -0
- package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
- package/package/components/sidebar/changelogs.js +35 -0
- package/package/components/wizards/AppPicker.svelte +68 -0
- package/package/components/wizards/AppPicker.svelte.d.ts +17 -0
- package/package/components/wizards/NavbarWizard.svelte +131 -0
- package/package/components/wizards/NavbarWizard.svelte.d.ts +19 -0
- package/package/defaults.d.ts +1 -1
- package/package/defaults.js +1 -1
- package/package/es6.d.ts.txt +370 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +42 -3
- package/package/gen/schemas.gen.js +42 -3
- package/package/gen/services.gen.d.ts +80 -5
- package/package/gen/services.gen.js +149 -8
- package/package/gen/types.gen.d.ts +265 -11
- package/package/inferArgSig.js +4 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +46 -22
- package/package/stores.d.ts +1 -1
- package/package/stores.js +1 -1
- package/package/utils.d.ts +7 -23
- package/package/utils.js +54 -33
- package/package/windmill_fetch.d.ts.txt +6 -6
- package/package.json +3 -11
- package/package/components/ContentSearch.svelte +0 -355
package/package/stores.js
CHANGED
|
@@ -18,7 +18,7 @@ export const enterpriseLicense = writable(undefined);
|
|
|
18
18
|
export const workerTags = writable(undefined);
|
|
19
19
|
export const usageStore = writable(0);
|
|
20
20
|
export const workspaceUsageStore = writable(0);
|
|
21
|
-
export const
|
|
21
|
+
export const initialArgsStore = writable(undefined);
|
|
22
22
|
export const oauthStore = writable(undefined);
|
|
23
23
|
export const userStore = writable(undefined);
|
|
24
24
|
export const workspaceStore = writable(persistedWorkspace ? String(persistedWorkspace) : undefined);
|
package/package/utils.d.ts
CHANGED
|
@@ -2,14 +2,17 @@ import type { UserExt } from './stores';
|
|
|
2
2
|
import { sendUserToast } from './toast';
|
|
3
3
|
import type { Script } from './gen';
|
|
4
4
|
import type { EnumType } from './common';
|
|
5
|
+
import type { Schema } from './common';
|
|
5
6
|
export { sendUserToast };
|
|
6
7
|
export declare function validateUsername(username: string): string;
|
|
7
8
|
export declare function parseQueryParams(url: string | undefined): Record<string, string>;
|
|
8
9
|
export declare function displayDateOnly(dateString: string | Date | undefined): string;
|
|
10
|
+
export declare function subtractDaysFromDateString(dateString: string | undefined, days: number): string | undefined;
|
|
9
11
|
export declare function displayDate(dateString: string | Date | undefined, displaySecond?: boolean, displayDate?: boolean): string;
|
|
10
12
|
export declare function displayTime(dateString: string | Date | undefined): string;
|
|
11
13
|
export declare function displaySize(sizeInBytes: number | undefined): string | undefined;
|
|
12
14
|
export declare function msToSec(ms: number | undefined, maximumFractionDigits?: number): string;
|
|
15
|
+
export declare function msToReadableTime(ms: number | undefined): string;
|
|
13
16
|
export declare function getToday(): Date;
|
|
14
17
|
export declare function truncateHash(hash: string): string;
|
|
15
18
|
export declare function sleep(ms: number): Promise<void>;
|
|
@@ -30,23 +33,8 @@ export interface DropdownItem {
|
|
|
30
33
|
icon?: any | undefined;
|
|
31
34
|
}
|
|
32
35
|
export declare const DELETE: "delete";
|
|
33
|
-
export declare function emptySchema():
|
|
34
|
-
|
|
35
|
-
properties: {};
|
|
36
|
-
required: never[];
|
|
37
|
-
type: string;
|
|
38
|
-
};
|
|
39
|
-
export declare function simpleSchema(): {
|
|
40
|
-
$schema: string;
|
|
41
|
-
type: string;
|
|
42
|
-
properties: {
|
|
43
|
-
name: {
|
|
44
|
-
description: string;
|
|
45
|
-
type: string;
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
required: never[];
|
|
49
|
-
};
|
|
36
|
+
export declare function emptySchema(): Schema;
|
|
37
|
+
export declare function simpleSchema(): Schema;
|
|
50
38
|
export declare function removeItemAll<T>(arr: T[], value: T): T[];
|
|
51
39
|
export declare function emptyString(str: string | undefined | null): boolean;
|
|
52
40
|
export declare function defaultIfEmptyString(str: string | undefined, dflt: string): string;
|
|
@@ -59,11 +47,6 @@ export declare function pathIsEmpty(path: string): boolean;
|
|
|
59
47
|
export declare function encodeState(state: any): string;
|
|
60
48
|
export declare function decodeState(query: string): any;
|
|
61
49
|
export declare function itemsExists<T>(arr: T[] | undefined, item: T): boolean;
|
|
62
|
-
export declare function decodeArgs(queryArgs: string | undefined): any;
|
|
63
|
-
export declare function setQueryWithoutLoad(url: URL, args: {
|
|
64
|
-
key: string;
|
|
65
|
-
value: string | null | undefined;
|
|
66
|
-
}[], bounceTime?: number): void;
|
|
67
50
|
export declare function groupBy<K, V>(items: V[], toGroup: (t: V) => K, toSort: (t: V) => string, dflts?: K[]): [K, V[]][];
|
|
68
51
|
export declare function removeMarkdown(text: string): string;
|
|
69
52
|
export declare function truncate(s: string, n: number, suffix?: string): string;
|
|
@@ -90,8 +73,9 @@ export declare function canWrite(path: string, extra_perms: Record<string, boole
|
|
|
90
73
|
export declare function isOwner(path: string, user: UserExt | undefined, workspace: string | undefined): boolean;
|
|
91
74
|
export declare function isObviousOwner(path: string, user?: UserExt): boolean;
|
|
92
75
|
export declare function extractCustomProperties(styleStr: string): string;
|
|
76
|
+
export declare function computeSharableHash(args: any): string;
|
|
93
77
|
export declare function toCamel(s: string): string;
|
|
94
|
-
export declare function cleanExpr(expr: string): string;
|
|
78
|
+
export declare function cleanExpr(expr: string | undefined): string;
|
|
95
79
|
export declare function isCodeInjection(expr: string | undefined): boolean;
|
|
96
80
|
export declare function tryEvery({ tryCode, timeoutCode, interval, timeout }: {
|
|
97
81
|
tryCode: () => Promise<any>;
|
package/package/utils.js
CHANGED
|
@@ -45,6 +45,14 @@ export function displayDateOnly(dateString) {
|
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
export function subtractDaysFromDateString(dateString, days) {
|
|
49
|
+
if (dateString == undefined) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
let date = new Date(dateString);
|
|
53
|
+
date.setDate(date.getDate() - days);
|
|
54
|
+
return date.toISOString();
|
|
55
|
+
}
|
|
48
56
|
export function displayDate(dateString, displaySecond = false, displayDate = true) {
|
|
49
57
|
const date = new Date(dateString ?? '');
|
|
50
58
|
if (date.toString() === 'Invalid Date') {
|
|
@@ -92,6 +100,26 @@ export function msToSec(ms, maximumFractionDigits) {
|
|
|
92
100
|
minimumFractionDigits: maximumFractionDigits
|
|
93
101
|
});
|
|
94
102
|
}
|
|
103
|
+
export function msToReadableTime(ms) {
|
|
104
|
+
if (ms === undefined)
|
|
105
|
+
return '?';
|
|
106
|
+
const seconds = Math.floor(ms / 1000);
|
|
107
|
+
const minutes = Math.floor(seconds / 60);
|
|
108
|
+
const hours = Math.floor(minutes / 60);
|
|
109
|
+
const days = Math.floor(hours / 24);
|
|
110
|
+
if (days > 0) {
|
|
111
|
+
return `${days}d ${hours % 24}h ${minutes % 60}m ${seconds % 60}s`;
|
|
112
|
+
}
|
|
113
|
+
else if (hours > 0) {
|
|
114
|
+
return `${hours}h ${minutes % 60}m ${seconds % 60}s`;
|
|
115
|
+
}
|
|
116
|
+
else if (minutes > 0) {
|
|
117
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
return `${seconds}s`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
95
123
|
export function getToday() {
|
|
96
124
|
var today = new Date();
|
|
97
125
|
return today;
|
|
@@ -216,39 +244,6 @@ export function itemsExists(arr, item) {
|
|
|
216
244
|
}
|
|
217
245
|
return false;
|
|
218
246
|
}
|
|
219
|
-
export function decodeArgs(queryArgs) {
|
|
220
|
-
if (queryArgs) {
|
|
221
|
-
const parsed = decodeState(queryArgs);
|
|
222
|
-
Object.entries(parsed).forEach(([k, v]) => {
|
|
223
|
-
if (v == '<function call>') {
|
|
224
|
-
parsed[k] = undefined;
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
return parsed;
|
|
228
|
-
}
|
|
229
|
-
return {};
|
|
230
|
-
}
|
|
231
|
-
let debounced = undefined;
|
|
232
|
-
export function setQueryWithoutLoad(url, args, bounceTime) {
|
|
233
|
-
debounced && clearTimeout(debounced);
|
|
234
|
-
debounced = setTimeout(() => {
|
|
235
|
-
const nurl = new URL(url.toString());
|
|
236
|
-
for (const { key, value } of args) {
|
|
237
|
-
if (value) {
|
|
238
|
-
nurl.searchParams.set(key, value);
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
nurl.searchParams.delete(key);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
try {
|
|
245
|
-
history.replaceState(history.state, '', nurl.toString());
|
|
246
|
-
}
|
|
247
|
-
catch (e) {
|
|
248
|
-
console.error(e);
|
|
249
|
-
}
|
|
250
|
-
}, bounceTime ?? 200);
|
|
251
|
-
}
|
|
252
247
|
export function groupBy(items, toGroup, toSort, dflts = []) {
|
|
253
248
|
let r = new Map();
|
|
254
249
|
for (const dflt of dflts) {
|
|
@@ -564,12 +559,38 @@ export function extractCustomProperties(styleStr) {
|
|
|
564
559
|
let customStyleStr = customProperties.join(';');
|
|
565
560
|
return customStyleStr;
|
|
566
561
|
}
|
|
562
|
+
export function computeSharableHash(args) {
|
|
563
|
+
let nargs = {};
|
|
564
|
+
for (let k in args) {
|
|
565
|
+
let v = args[k];
|
|
566
|
+
if (v !== undefined) {
|
|
567
|
+
// if
|
|
568
|
+
let size = roughSizeOfObject(v) > 1000000;
|
|
569
|
+
if (size) {
|
|
570
|
+
console.error(`Value at key ${k} too big (${size}) to be shared`);
|
|
571
|
+
return '';
|
|
572
|
+
}
|
|
573
|
+
nargs[k] = JSON.stringify(v);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
try {
|
|
577
|
+
let r = new URLSearchParams(nargs).toString();
|
|
578
|
+
return r.length > 1000000 ? '' : r;
|
|
579
|
+
}
|
|
580
|
+
catch (e) {
|
|
581
|
+
console.error('Error computing sharable hash', e);
|
|
582
|
+
return '';
|
|
583
|
+
}
|
|
584
|
+
}
|
|
567
585
|
export function toCamel(s) {
|
|
568
586
|
return s.replace(/([-_][a-z])/gi, ($1) => {
|
|
569
587
|
return $1.toUpperCase().replace('-', '').replace('_', '');
|
|
570
588
|
});
|
|
571
589
|
}
|
|
572
590
|
export function cleanExpr(expr) {
|
|
591
|
+
if (!expr) {
|
|
592
|
+
return '';
|
|
593
|
+
}
|
|
573
594
|
return expr
|
|
574
595
|
.split('\n')
|
|
575
596
|
.filter((x) => x != '' && !x.startsWith(`import `))
|
|
@@ -6017,10 +6017,10 @@ export type ListScriptsData = {
|
|
|
6017
6017
|
firstParentHash?: string;
|
|
6018
6018
|
/**
|
|
6019
6019
|
* (default false)
|
|
6020
|
-
*
|
|
6020
|
+
* include scripts without an exported main function
|
|
6021
6021
|
*
|
|
6022
6022
|
*/
|
|
6023
|
-
|
|
6023
|
+
includeWithoutMain?: boolean;
|
|
6024
6024
|
/**
|
|
6025
6025
|
* (default regardless)
|
|
6026
6026
|
* if true show only the templates
|
|
@@ -10651,10 +10651,10 @@ export type $OpenApiTs = {
|
|
|
10651
10651
|
firstParentHash?: string;
|
|
10652
10652
|
/**
|
|
10653
10653
|
* (default false)
|
|
10654
|
-
*
|
|
10654
|
+
* include scripts without an exported main function
|
|
10655
10655
|
*
|
|
10656
10656
|
*/
|
|
10657
|
-
|
|
10657
|
+
includeWithoutMain?: boolean;
|
|
10658
10658
|
/**
|
|
10659
10659
|
* (default regardless)
|
|
10660
10660
|
* if true show only the templates
|
|
@@ -15268,8 +15268,8 @@ export declare class ScriptService {
|
|
|
15268
15268
|
* are
|
|
15269
15269
|
* ed.
|
|
15270
15270
|
*
|
|
15271
|
-
* @param data.
|
|
15272
|
-
*
|
|
15271
|
+
* @param data.includeWithoutMain (default false)
|
|
15272
|
+
* include scripts without an exported main function
|
|
15273
15273
|
*
|
|
15274
15274
|
* @param data.isTemplate (default regardless)
|
|
15275
15275
|
* if true show only the templates
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "windmill-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.362.1",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "vite dev",
|
|
6
6
|
"build": "vite build",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"quill": "^1.3.7",
|
|
124
124
|
"svelte-carousel": "^1.0.25",
|
|
125
125
|
"svelte-chartjs": "^3.1.5",
|
|
126
|
-
"svelte-exmarkdown": "^3.0.
|
|
126
|
+
"svelte-exmarkdown": "^3.0.5",
|
|
127
127
|
"svelte-infinite-loading": "^1.3.8",
|
|
128
128
|
"svelte-portal": "^2.2.1",
|
|
129
129
|
"svelte-tiny-virtual-list": "^2.0.5",
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"vscode-languageclient": "~9.0.1",
|
|
133
133
|
"vscode-uri": "~3.0.8",
|
|
134
134
|
"vscode-ws-jsonrpc": "~3.1.0",
|
|
135
|
-
"windmill-parser-wasm": "^1.
|
|
135
|
+
"windmill-parser-wasm": "^1.355.4",
|
|
136
136
|
"windmill-sql-datatype-parser-wasm": "^1.318.0",
|
|
137
137
|
"y-monaco": "^0.1.4",
|
|
138
138
|
"y-websocket": "^1.5.0",
|
|
@@ -204,11 +204,6 @@
|
|
|
204
204
|
"svelte": "./package/components/common/tabs/Tab.svelte",
|
|
205
205
|
"default": "./package/components/common/tabs/Tab.svelte"
|
|
206
206
|
},
|
|
207
|
-
"./components/common/tabs/AppTheme.svelte": {
|
|
208
|
-
"types": "./package/components/AppTheme.svelte.d.ts",
|
|
209
|
-
"svelte": "./package/components/AppTheme.svelte",
|
|
210
|
-
"default": "./package/components/AppTheme.svelte"
|
|
211
|
-
},
|
|
212
207
|
"./components/common/alert/Alert.svelte": {
|
|
213
208
|
"types": "./package/components/common/alert/Alert.svelte.d.ts",
|
|
214
209
|
"svelte": "./package/components/common/alert/Alert.svelte",
|
|
@@ -399,9 +394,6 @@
|
|
|
399
394
|
"components/SchemaEditor.svelte": [
|
|
400
395
|
"./package/components/SchemaEditor.svelte.d.ts"
|
|
401
396
|
],
|
|
402
|
-
"components/AppTheme.svelte": [
|
|
403
|
-
"./package/components/AppTheme.svelte.d.ts"
|
|
404
|
-
],
|
|
405
397
|
"components/EditableSchemaWrapper.svelte": [
|
|
406
398
|
"./package/components/schema/EditableSchemaWrapper.svelte.d.ts"
|
|
407
399
|
],
|
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
<script>import { AppService, FlowService, ResourceService, ScriptService } from '../gen';
|
|
2
|
-
import { enterpriseLicense, workspaceStore } from '../stores';
|
|
3
|
-
import { clickOutside } from '../utils';
|
|
4
|
-
import { Boxes, Code2, Edit, LayoutDashboard, Loader2, X } from 'lucide-svelte';
|
|
5
|
-
import Portal from 'svelte-portal';
|
|
6
|
-
import { twMerge } from 'tailwind-merge';
|
|
7
|
-
import SearchItems from './SearchItems.svelte';
|
|
8
|
-
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
9
|
-
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
10
|
-
import FlowIcon from './home/FlowIcon.svelte';
|
|
11
|
-
import { Alert, Button } from './common';
|
|
12
|
-
import YAML from 'yaml';
|
|
13
|
-
let search = '';
|
|
14
|
-
export async function open(nsearch) {
|
|
15
|
-
isOpen = true;
|
|
16
|
-
await Promise.all([loadScripts(), loadResources(), loadApps(), loadFlows()]);
|
|
17
|
-
if (nsearch) {
|
|
18
|
-
search = nsearch;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export async function loadScripts() {
|
|
22
|
-
scripts = await ScriptService.listSearchScript({ workspace: $workspaceStore ?? '' });
|
|
23
|
-
}
|
|
24
|
-
export async function loadResources() {
|
|
25
|
-
resources = await ResourceService.listSearchResource({ workspace: $workspaceStore ?? '' });
|
|
26
|
-
}
|
|
27
|
-
export async function loadApps() {
|
|
28
|
-
apps = await AppService.listSearchApp({ workspace: $workspaceStore ?? '' });
|
|
29
|
-
}
|
|
30
|
-
export async function loadFlows() {
|
|
31
|
-
flows = await FlowService.listSearchFlow({ workspace: $workspaceStore ?? '' });
|
|
32
|
-
}
|
|
33
|
-
let searchKind = 'all';
|
|
34
|
-
let isOpen = false;
|
|
35
|
-
let inputElement;
|
|
36
|
-
// Reactive statement to focus the input when the modal opens
|
|
37
|
-
$: if (isOpen && inputElement) {
|
|
38
|
-
// Use a timeout to ensure focus after any animations or rendering
|
|
39
|
-
setTimeout(() => inputElement.focus(), 0);
|
|
40
|
-
}
|
|
41
|
-
let scripts = undefined;
|
|
42
|
-
let filteredScriptItems = [];
|
|
43
|
-
let resources = undefined;
|
|
44
|
-
let filteredResourceItems = [];
|
|
45
|
-
let flows = undefined;
|
|
46
|
-
let filteredFlowItems = [];
|
|
47
|
-
let apps = undefined;
|
|
48
|
-
let filteredAppItems = [];
|
|
49
|
-
function getCounts(n) {
|
|
50
|
-
return ` (${n})`;
|
|
51
|
-
}
|
|
52
|
-
$: counts =
|
|
53
|
-
search == '' ||
|
|
54
|
-
!scripts ||
|
|
55
|
-
!resources ||
|
|
56
|
-
!flows ||
|
|
57
|
-
!apps ||
|
|
58
|
-
!filteredAppItems ||
|
|
59
|
-
!filteredFlowItems ||
|
|
60
|
-
!filteredResourceItems ||
|
|
61
|
-
!filteredScriptItems
|
|
62
|
-
? {
|
|
63
|
-
all: '',
|
|
64
|
-
apps: '',
|
|
65
|
-
flows: '',
|
|
66
|
-
resources: '',
|
|
67
|
-
scripts: ''
|
|
68
|
-
}
|
|
69
|
-
: {
|
|
70
|
-
all: getCounts(filteredAppItems.length +
|
|
71
|
-
filteredFlowItems.length +
|
|
72
|
-
filteredResourceItems.length +
|
|
73
|
-
filteredScriptItems.length),
|
|
74
|
-
apps: getCounts(filteredAppItems.length),
|
|
75
|
-
resources: getCounts(filteredResourceItems.length),
|
|
76
|
-
flows: getCounts(filteredFlowItems.length),
|
|
77
|
-
scripts: getCounts(filteredScriptItems.length)
|
|
78
|
-
};
|
|
79
|
-
</script>
|
|
80
|
-
|
|
81
|
-
<SearchItems
|
|
82
|
-
filter={search}
|
|
83
|
-
items={scripts}
|
|
84
|
-
f={(s) => {
|
|
85
|
-
return s.content
|
|
86
|
-
}}
|
|
87
|
-
bind:filteredItems={filteredScriptItems}
|
|
88
|
-
/>
|
|
89
|
-
|
|
90
|
-
<SearchItems
|
|
91
|
-
filter={search}
|
|
92
|
-
items={resources}
|
|
93
|
-
f={(s) => {
|
|
94
|
-
return YAML.stringify(s.value)
|
|
95
|
-
}}
|
|
96
|
-
bind:filteredItems={filteredResourceItems}
|
|
97
|
-
/>
|
|
98
|
-
|
|
99
|
-
<SearchItems
|
|
100
|
-
filter={search}
|
|
101
|
-
items={flows}
|
|
102
|
-
f={(s) => {
|
|
103
|
-
return YAML.stringify(s.value, null, 4)
|
|
104
|
-
}}
|
|
105
|
-
bind:filteredItems={filteredFlowItems}
|
|
106
|
-
/>
|
|
107
|
-
|
|
108
|
-
<SearchItems
|
|
109
|
-
filter={search}
|
|
110
|
-
items={apps}
|
|
111
|
-
f={(s) => {
|
|
112
|
-
return YAML.stringify(s.value, null, 4)
|
|
113
|
-
}}
|
|
114
|
-
bind:filteredItems={filteredAppItems}
|
|
115
|
-
/>
|
|
116
|
-
|
|
117
|
-
{#if isOpen}
|
|
118
|
-
<Portal>
|
|
119
|
-
<div
|
|
120
|
-
class={twMerge(
|
|
121
|
-
`fixed top-0 bottom-0 left-0 right-0 transition-all duration-50`,
|
|
122
|
-
' bg-black bg-opacity-60',
|
|
123
|
-
'z-[1100]'
|
|
124
|
-
)}
|
|
125
|
-
>
|
|
126
|
-
<div
|
|
127
|
-
class={'max-w-4xl lg:mx-auto mx-10 mt-8 bg-surface rounded-lg relative'}
|
|
128
|
-
use:clickOutside={false}
|
|
129
|
-
on:click_outside={() => {
|
|
130
|
-
isOpen = false
|
|
131
|
-
}}
|
|
132
|
-
>
|
|
133
|
-
<div class="px-4 py-2 border-b flex justify-between items-center">
|
|
134
|
-
<div>Search by content</div>
|
|
135
|
-
<div class="w-8">
|
|
136
|
-
<button
|
|
137
|
-
on:click|stopPropagation={() => {
|
|
138
|
-
isOpen = false
|
|
139
|
-
}}
|
|
140
|
-
class="hover:bg-surface-hover bg-surface-secondary rounded-full w-8 h-8 flex items-center justify-center transition-all"
|
|
141
|
-
>
|
|
142
|
-
<X class="text-tertiary" />
|
|
143
|
-
</button>
|
|
144
|
-
</div>
|
|
145
|
-
</div>
|
|
146
|
-
<div class="px-2 py-2 overflow-auto">
|
|
147
|
-
<div class="flex gap-2 flex-wrap">
|
|
148
|
-
<div class="flex justify-start">
|
|
149
|
-
<ToggleButtonGroup bind:selected={searchKind} class="h-10">
|
|
150
|
-
<ToggleButton small light value="all" label={'All' + counts.all} />
|
|
151
|
-
<ToggleButton
|
|
152
|
-
small
|
|
153
|
-
light
|
|
154
|
-
value="scripts"
|
|
155
|
-
icon={Code2}
|
|
156
|
-
label={'Scripts' + counts.scripts}
|
|
157
|
-
/>
|
|
158
|
-
<ToggleButton
|
|
159
|
-
small
|
|
160
|
-
light
|
|
161
|
-
value="resources"
|
|
162
|
-
icon={Boxes}
|
|
163
|
-
label={'Resources' + counts.resources}
|
|
164
|
-
/>
|
|
165
|
-
<ToggleButton
|
|
166
|
-
small
|
|
167
|
-
light
|
|
168
|
-
value="flows"
|
|
169
|
-
label={'Flows' + counts.flows}
|
|
170
|
-
icon={FlowIcon}
|
|
171
|
-
selectedColor="#14b8a6"
|
|
172
|
-
/>
|
|
173
|
-
<ToggleButton
|
|
174
|
-
small
|
|
175
|
-
light
|
|
176
|
-
value="apps"
|
|
177
|
-
label={'Apps' + counts.apps}
|
|
178
|
-
icon={LayoutDashboard}
|
|
179
|
-
selectedColor="#fb923c"
|
|
180
|
-
/>
|
|
181
|
-
</ToggleButtonGroup>
|
|
182
|
-
</div>
|
|
183
|
-
<div class="relative text-tertiary grow min-w-[100px]">
|
|
184
|
-
<!-- svelte-ignore a11y-autofocus -->
|
|
185
|
-
<input
|
|
186
|
-
bind:this={inputElement}
|
|
187
|
-
placeholder="Search in the content of resources, scripts, flows and apps"
|
|
188
|
-
bind:value={search}
|
|
189
|
-
class="bg-surface !h-10 !px-4 !pr-10 !rounded-lg text-sm focus:outline-none"
|
|
190
|
-
/>
|
|
191
|
-
<button type="submit" class="absolute right-0 top-0 mt-3 mr-4">
|
|
192
|
-
<svg
|
|
193
|
-
class="h-4 w-4 fill-current"
|
|
194
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
195
|
-
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
196
|
-
version="1.1"
|
|
197
|
-
id="Capa_1"
|
|
198
|
-
x="0px"
|
|
199
|
-
y="0px"
|
|
200
|
-
viewBox="0 0 56.966 56.966"
|
|
201
|
-
style="enable-background:new 0 0 56.966 56.966;"
|
|
202
|
-
xml:space="preserve"
|
|
203
|
-
width="512px"
|
|
204
|
-
height="512px"
|
|
205
|
-
>
|
|
206
|
-
<path
|
|
207
|
-
d="M55.146,51.887L41.588,37.786c3.486-4.144,5.396-9.358,5.396-14.786c0-12.682-10.318-23-23-23s-23,10.318-23,23 s10.318,23,23,23c4.761,0,9.298-1.436,13.177-4.162l13.661,14.208c0.571,0.593,1.339,0.92,2.162,0.92 c0.779,0,1.518-0.297,2.079-0.837C56.255,54.982,56.293,53.08,55.146,51.887z M23.984,6c9.374,0,17,7.626,17,17s-7.626,17-17,17 s-17-7.626-17-17S14.61,6,23.984,6z"
|
|
208
|
-
/>
|
|
209
|
-
</svg>
|
|
210
|
-
</button>
|
|
211
|
-
</div>
|
|
212
|
-
</div>
|
|
213
|
-
<div class="mt-1">
|
|
214
|
-
<div class="text-xs text-secondary"
|
|
215
|
-
>Searching among <div class="inline-flex"
|
|
216
|
-
>{#if scripts}{scripts?.length}{:else}
|
|
217
|
-
<Loader2 size={10} class="animate-spin " />
|
|
218
|
-
{/if}</div
|
|
219
|
-
>
|
|
220
|
-
scripts,
|
|
221
|
-
<div class="inline-flex"
|
|
222
|
-
>{#if resources}{resources?.length}{:else}
|
|
223
|
-
<Loader2 size={10} class="animate-spin " />
|
|
224
|
-
{/if}</div
|
|
225
|
-
>
|
|
226
|
-
resources,
|
|
227
|
-
<div class="inline-flex"
|
|
228
|
-
>{#if flows}{flows?.length}{:else}
|
|
229
|
-
<Loader2 size={10} class="animate-spin " />
|
|
230
|
-
{/if}</div
|
|
231
|
-
>
|
|
232
|
-
flows,
|
|
233
|
-
<div class="inline-flex"
|
|
234
|
-
>{#if apps}{apps?.length}{:else}
|
|
235
|
-
<Loader2 size={10} class="animate-spin " />
|
|
236
|
-
{/if}</div
|
|
237
|
-
>
|
|
238
|
-
apps</div
|
|
239
|
-
>
|
|
240
|
-
</div>
|
|
241
|
-
|
|
242
|
-
<div class="mt-1 overflow-auto max-h-[80vh]">
|
|
243
|
-
{#if !$enterpriseLicense}
|
|
244
|
-
<div class="py-1" />
|
|
245
|
-
|
|
246
|
-
<Alert title="Content Search is an EE feature" type="warning">
|
|
247
|
-
Without EE, content search will only search among 10 scripts, 3 flows, 3 apps and 3
|
|
248
|
-
resources.
|
|
249
|
-
</Alert>
|
|
250
|
-
<div class="py-1" />
|
|
251
|
-
{/if}
|
|
252
|
-
|
|
253
|
-
{#if search.length > 0}
|
|
254
|
-
<div class="flex flex-col gap-4">
|
|
255
|
-
{#if (searchKind == 'all' || searchKind == 'scripts') && filteredScriptItems?.length > 0}
|
|
256
|
-
{#each filteredScriptItems ?? [] as item}
|
|
257
|
-
<div>
|
|
258
|
-
<div class="text-sm font-semibold"
|
|
259
|
-
><a href="/scripts/get/{item.path}">Script: {item.path}</a></div
|
|
260
|
-
>
|
|
261
|
-
<div class="flex gap-2 justify-between">
|
|
262
|
-
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
263
|
-
><code>{@html item.marked}</code></pre
|
|
264
|
-
>
|
|
265
|
-
<div>
|
|
266
|
-
<div class="flex gap-2">
|
|
267
|
-
<Button
|
|
268
|
-
on:click|once={() => {
|
|
269
|
-
window
|
|
270
|
-
.open(`/scripts/edit/${item.path}?no_draft=true`, '_blank')
|
|
271
|
-
?.focus()
|
|
272
|
-
}}
|
|
273
|
-
color="light"
|
|
274
|
-
size="sm"
|
|
275
|
-
startIcon={{ icon: Edit }}
|
|
276
|
-
>
|
|
277
|
-
Edit
|
|
278
|
-
</Button>
|
|
279
|
-
</div>
|
|
280
|
-
</div>
|
|
281
|
-
</div>
|
|
282
|
-
</div>
|
|
283
|
-
{/each}
|
|
284
|
-
{/if}
|
|
285
|
-
{#if (searchKind == 'all' || searchKind == 'resources') && filteredResourceItems?.length > 0}
|
|
286
|
-
{#each filteredResourceItems ?? [] as item}
|
|
287
|
-
<div>
|
|
288
|
-
<div class="text-sm font-semibold">Resource: {item.path}</div>
|
|
289
|
-
<div class="flex gap-2 justify-between">
|
|
290
|
-
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
291
|
-
><code>{@html item.marked}</code></pre
|
|
292
|
-
>
|
|
293
|
-
</div>
|
|
294
|
-
</div>
|
|
295
|
-
{/each}
|
|
296
|
-
{/if}
|
|
297
|
-
{#if (searchKind == 'all' || searchKind == 'flows') && filteredFlowItems?.length > 0}
|
|
298
|
-
{#each filteredFlowItems ?? [] as item}
|
|
299
|
-
<div>
|
|
300
|
-
<div class="text-sm font-semibold"
|
|
301
|
-
><a href="/flows/get/{item.path}">Flow: {item.path}</a></div
|
|
302
|
-
>
|
|
303
|
-
<div class="flex gap-2 justify-between">
|
|
304
|
-
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
305
|
-
><code>{@html item.marked}</code></pre
|
|
306
|
-
>
|
|
307
|
-
<div>
|
|
308
|
-
<div class="flex gap-2">
|
|
309
|
-
<Button
|
|
310
|
-
on:click|once={() => {
|
|
311
|
-
window
|
|
312
|
-
.open(`/flows/edit/${item.path}?no_draft=true`, '_blank')
|
|
313
|
-
?.focus()
|
|
314
|
-
}}
|
|
315
|
-
color="light"
|
|
316
|
-
size="sm"
|
|
317
|
-
startIcon={{ icon: Edit }}>Edit</Button
|
|
318
|
-
>
|
|
319
|
-
</div>
|
|
320
|
-
</div>
|
|
321
|
-
</div>
|
|
322
|
-
</div>
|
|
323
|
-
{/each}
|
|
324
|
-
{/if}
|
|
325
|
-
{#if (searchKind == 'all' || searchKind == 'apps') && filteredAppItems?.length > 0}
|
|
326
|
-
{#each filteredAppItems ?? [] as item}
|
|
327
|
-
<div>
|
|
328
|
-
<div class="text-sm font-semibold"
|
|
329
|
-
><a href="/apps/get/{item.path}">App: {item.path}</a></div
|
|
330
|
-
>
|
|
331
|
-
<div class="flex gap-2 justify-between">
|
|
332
|
-
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
333
|
-
><code>{@html item.marked}</code></pre
|
|
334
|
-
>
|
|
335
|
-
</div>
|
|
336
|
-
</div>
|
|
337
|
-
{/each}
|
|
338
|
-
{/if}
|
|
339
|
-
</div>
|
|
340
|
-
{:else}
|
|
341
|
-
<div class="flex justify-center items-center h-48">
|
|
342
|
-
<div class="text-tertiary text-center">
|
|
343
|
-
<div class="text-2xl font-bold">Empty Search Filter</div>
|
|
344
|
-
<div class="text-sm"
|
|
345
|
-
>Start writing, search everywhere a path is referenced for instance</div
|
|
346
|
-
>
|
|
347
|
-
</div>
|
|
348
|
-
</div>
|
|
349
|
-
{/if}
|
|
350
|
-
</div>
|
|
351
|
-
</div></div
|
|
352
|
-
></div
|
|
353
|
-
></Portal
|
|
354
|
-
>
|
|
355
|
-
{/if}
|