windmill-components 1.22.0 → 1.28.2

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 (252) hide show
  1. package/components/AppConnect.svelte +93 -47
  2. package/components/AppConnect.svelte.d.ts +2 -2
  3. package/components/ArgInfo.svelte +0 -5
  4. package/components/ArgInput.svelte +91 -64
  5. package/components/ArgInput.svelte.d.ts +8 -3
  6. package/components/Button.svelte +4 -4
  7. package/components/CenteredPage.svelte +1 -1
  8. package/components/CollapseLink.svelte +12 -0
  9. package/components/CollapseLink.svelte.d.ts +19 -0
  10. package/components/CronInput.svelte +84 -0
  11. package/components/CronInput.svelte.d.ts +18 -0
  12. package/components/DisplayResult.svelte +28 -15
  13. package/components/Editor.svelte +144 -61
  14. package/components/Editor.svelte.d.ts +2 -0
  15. package/components/EditorBar.svelte +215 -0
  16. package/components/EditorBar.svelte.d.ts +23 -0
  17. package/components/FlowBuilder.svelte +155 -79
  18. package/components/FlowEditor.svelte +75 -200
  19. package/components/FlowEditor.svelte.d.ts +3 -2
  20. package/components/FlowJobResult.svelte +1 -1
  21. package/components/FlowPreview.svelte +18 -24
  22. package/components/FlowPreviewContent.svelte +68 -0
  23. package/components/FlowPreviewContent.svelte.d.ts +21 -0
  24. package/components/FlowStatusViewer.svelte +85 -37
  25. package/components/FlowStatusViewer.svelte.d.ts +3 -2
  26. package/components/FlowViewer.svelte +98 -26
  27. package/components/FlowViewer.svelte.d.ts +2 -2
  28. package/components/IconedResourceType.svelte +30 -5
  29. package/components/InputTransformForm.svelte +209 -0
  30. package/components/InputTransformForm.svelte.d.ts +26 -0
  31. package/components/InputTransformsViewer.svelte +19 -0
  32. package/components/InputTransformsViewer.svelte.d.ts +17 -0
  33. package/components/InviteGlobalUser.svelte +2 -2
  34. package/components/InviteUser.svelte +2 -2
  35. package/components/JobStatus.svelte +32 -25
  36. package/components/Modal.svelte +44 -42
  37. package/components/ModuleStep.svelte +99 -76
  38. package/components/ObjectResourceInput.svelte +58 -38
  39. package/components/ObjectTypeNarrowing.svelte +4 -19
  40. package/components/Path.svelte +1 -1
  41. package/components/Path.svelte.d.ts +1 -1
  42. package/components/RadioButton.svelte +11 -96
  43. package/components/RadioButton.svelte.d.ts +4 -2
  44. package/components/ResourceEditor.svelte +4 -5
  45. package/components/ResourceEditor.svelte.d.ts +2 -2
  46. package/components/ResourcePicker.svelte +25 -2
  47. package/components/ResourcePicker.svelte.d.ts +3 -0
  48. package/components/ResourceTypePicker.svelte +17 -29
  49. package/components/ResourceTypePicker.svelte.d.ts +1 -0
  50. package/components/RunForm.svelte +14 -15
  51. package/components/RunForm.svelte.d.ts +1 -1
  52. package/components/SchemaEditor.svelte +87 -71
  53. package/components/SchemaEditor.svelte.d.ts +2 -0
  54. package/components/SchemaEditorProperty.svelte +11 -0
  55. package/components/SchemaEditorProperty.svelte.d.ts +17 -0
  56. package/components/SchemaForm.svelte +21 -127
  57. package/components/SchemaForm.svelte.d.ts +3 -4
  58. package/components/SchemaModal.svelte +20 -33
  59. package/components/SchemaModal.svelte.d.ts +1 -1
  60. package/components/SchemaViewer.svelte +5 -7
  61. package/components/ScriptBuilder.svelte +40 -43
  62. package/components/ScriptEditor.svelte +76 -248
  63. package/components/ScriptPicker.svelte +13 -26
  64. package/components/ScriptPicker.svelte.d.ts +1 -1
  65. package/components/ScriptSchema.svelte +0 -5
  66. package/components/ShareModal.svelte +1 -1
  67. package/components/SharedBadge.svelte +12 -10
  68. package/components/StringTypeNarrowing.svelte +8 -4
  69. package/components/StringTypeNarrowing.svelte.d.ts +1 -0
  70. package/components/TableCustom.svelte +7 -9
  71. package/components/TableSimple.svelte +1 -1
  72. package/components/Toggle.svelte +8 -10
  73. package/components/Toggle.svelte.d.ts +5 -11
  74. package/components/Tooltip.svelte +3 -2
  75. package/components/VariableEditor.svelte +21 -6
  76. package/components/flows/CopyFirstStepSchema.svelte +7 -5
  77. package/components/flows/DynamicInputHelpBox.svelte +1 -1
  78. package/components/flows/FlowBox.svelte +3 -0
  79. package/components/flows/FlowBox.svelte.d.ts +23 -0
  80. package/components/flows/FlowBoxHeader.svelte +9 -0
  81. package/components/flows/FlowBoxHeader.svelte.d.ts +18 -0
  82. package/components/flows/FlowInput.svelte +20 -0
  83. package/components/flows/FlowInput.svelte.d.ts +14 -0
  84. package/components/flows/FlowInputs.svelte +7 -3
  85. package/components/flows/FlowModuleHeader.svelte +44 -41
  86. package/components/flows/FlowModuleHeader.svelte.d.ts +1 -1
  87. package/components/flows/FlowSettings.svelte +174 -0
  88. package/components/flows/FlowSettings.svelte.d.ts +21 -0
  89. package/components/flows/flowStore.d.ts +5 -2
  90. package/components/flows/flowStore.js +65 -9
  91. package/components/flows/pickers/FlowScriptPicker.svelte +6 -1
  92. package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -0
  93. package/components/flows/utils.d.ts +11 -11
  94. package/components/flows/utils.js +111 -64
  95. package/components/icons/AirtableIcon.svelte +17 -0
  96. package/components/icons/AirtableIcon.svelte.d.ts +17 -0
  97. package/components/icons/GCloudIcon.svelte +16 -0
  98. package/components/icons/GCloudIcon.svelte.d.ts +17 -0
  99. package/components/icons/GItlabIcon.svelte +16 -0
  100. package/components/icons/GItlabIcon.svelte.d.ts +17 -0
  101. package/components/icons/GSheetsIcon.svelte +16 -0
  102. package/components/icons/GSheetsIcon.svelte.d.ts +17 -0
  103. package/components/icons/GcalIcon.svelte +16 -0
  104. package/components/icons/GcalIcon.svelte.d.ts +17 -0
  105. package/components/icons/GdriveIcon.svelte +16 -0
  106. package/components/icons/GdriveIcon.svelte.d.ts +17 -0
  107. package/components/icons/GmailIcon.svelte +16 -0
  108. package/components/icons/GmailIcon.svelte.d.ts +17 -0
  109. package/components/icons/PostgresIcon.svelte +8 -49
  110. package/components/icons/Slack.svelte +9 -18
  111. package/components/icons/TogglIcon.svelte +59 -0
  112. package/components/icons/TogglIcon.svelte.d.ts +17 -0
  113. package/components/propertyPicker/ObjectViewer.svelte +35 -37
  114. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  115. package/components/propertyPicker/OverlayPropertyPicker.svelte +53 -53
  116. package/components/propertyPicker/OverlayPropertyPicker.svelte.d.ts +5 -2
  117. package/components/propertyPicker/PropPicker.svelte +13 -15
  118. package/components/propertyPicker/PropPicker.svelte.d.ts +1 -1
  119. package/components/propertyPicker/WarningMessage.svelte +14 -41
  120. package/components/propertyPicker/WarningMessage.svelte.d.ts +11 -8
  121. package/components/propertyPicker/utils.d.ts +1 -0
  122. package/components/propertyPicker/utils.js +25 -0
  123. package/gen/core/OpenAPI.js +1 -1
  124. package/gen/index.d.ts +12 -2
  125. package/gen/index.js +1 -2
  126. package/gen/models/CompletedJob.d.ts +1 -1
  127. package/gen/models/Flow.d.ts +3 -13
  128. package/gen/models/FlowMetadata.d.ts +9 -0
  129. package/gen/models/FlowMetadata.js +4 -0
  130. package/gen/models/FlowModuleValue.d.ts +5 -22
  131. package/gen/models/FlowModuleValue.js +1 -15
  132. package/gen/models/ForloopFlow.d.ts +8 -0
  133. package/gen/models/ForloopFlow.js +4 -0
  134. package/gen/models/InputTransform.d.ts +3 -12
  135. package/gen/models/InputTransform.js +1 -8
  136. package/gen/models/JavascriptTransform.d.ts +4 -0
  137. package/gen/models/JavascriptTransform.js +4 -0
  138. package/gen/models/MainArgSignature.d.ts +1 -1
  139. package/gen/models/NewSchedule.d.ts +1 -0
  140. package/gen/models/OpenFlow.d.ts +7 -0
  141. package/gen/models/OpenFlow.js +4 -0
  142. package/gen/models/OpenFlowWPath.d.ts +4 -0
  143. package/gen/models/OpenFlowWPath.js +4 -0
  144. package/gen/models/PathFlow.d.ts +4 -0
  145. package/gen/models/PathFlow.js +4 -0
  146. package/gen/models/PathScript.d.ts +4 -0
  147. package/gen/models/PathScript.js +4 -0
  148. package/gen/models/RawScript.d.ts +12 -0
  149. package/gen/models/RawScript.js +11 -0
  150. package/gen/models/Schedule.d.ts +1 -1
  151. package/gen/models/StaticTransform.d.ts +4 -0
  152. package/gen/models/StaticTransform.js +4 -0
  153. package/gen/models/TokenResponse.d.ts +3 -3
  154. package/gen/models/Usage.d.ts +5 -0
  155. package/gen/models/Usage.js +4 -0
  156. package/gen/models/User.d.ts +2 -0
  157. package/gen/schemas/$AuditLog.d.ts +32 -0
  158. package/gen/schemas/$AuditLog.js +35 -0
  159. package/gen/schemas/$CompletedJob.d.ts +98 -0
  160. package/gen/schemas/$CompletedJob.js +103 -0
  161. package/gen/schemas/$ContextualVariable.d.ts +16 -0
  162. package/gen/schemas/$ContextualVariable.js +19 -0
  163. package/gen/schemas/$CreateResource.d.ts +22 -0
  164. package/gen/schemas/$CreateResource.js +25 -0
  165. package/gen/schemas/$CreateVariable.d.ts +26 -0
  166. package/gen/schemas/$CreateVariable.js +29 -0
  167. package/gen/schemas/$CreateWorkspace.d.ts +20 -0
  168. package/gen/schemas/$CreateWorkspace.js +23 -0
  169. package/gen/schemas/$EditResource.d.ts +13 -0
  170. package/gen/schemas/$EditResource.js +16 -0
  171. package/gen/schemas/$EditResourceType.d.ts +10 -0
  172. package/gen/schemas/$EditResourceType.js +13 -0
  173. package/gen/schemas/$EditSchedule.d.ts +20 -0
  174. package/gen/schemas/$EditSchedule.js +23 -0
  175. package/gen/schemas/$EditVariable.d.ts +16 -0
  176. package/gen/schemas/$EditVariable.js +19 -0
  177. package/gen/schemas/$EditWorkspaceUser.d.ts +7 -0
  178. package/gen/schemas/$EditWorkspaceUser.js +10 -0
  179. package/gen/schemas/$Flow.d.ts +23 -0
  180. package/gen/schemas/$Flow.js +26 -0
  181. package/gen/schemas/$FlowMetadata.d.ts +31 -0
  182. package/gen/schemas/$FlowMetadata.js +34 -0
  183. package/gen/schemas/$FlowPreview.d.ts +80 -0
  184. package/gen/schemas/$FlowPreview.js +83 -0
  185. package/gen/schemas/$GlobalUserInfo.d.ts +26 -0
  186. package/gen/schemas/$GlobalUserInfo.js +29 -0
  187. package/gen/schemas/$Group.d.ts +23 -0
  188. package/gen/schemas/$Group.js +26 -0
  189. package/gen/schemas/$Job.d.ts +17 -0
  190. package/gen/schemas/$Job.js +20 -0
  191. package/gen/schemas/$ListableVariable.d.ts +35 -0
  192. package/gen/schemas/$ListableVariable.js +38 -0
  193. package/gen/schemas/$Login.d.ts +12 -0
  194. package/gen/schemas/$Login.js +15 -0
  195. package/gen/schemas/$MainArgSignature.d.ts +50 -0
  196. package/gen/schemas/$MainArgSignature.js +53 -0
  197. package/gen/schemas/$NewSchedule.d.ts +30 -0
  198. package/gen/schemas/$NewSchedule.js +33 -0
  199. package/gen/schemas/$NewToken.d.ts +11 -0
  200. package/gen/schemas/$NewToken.js +14 -0
  201. package/gen/schemas/$NewUser.d.ts +16 -0
  202. package/gen/schemas/$NewUser.js +19 -0
  203. package/gen/schemas/$Preview.d.ts +19 -0
  204. package/gen/schemas/$Preview.js +22 -0
  205. package/gen/schemas/$QueuedJob.d.ts +139 -0
  206. package/gen/schemas/$QueuedJob.js +144 -0
  207. package/gen/schemas/$Resource.d.ts +31 -0
  208. package/gen/schemas/$Resource.js +34 -0
  209. package/gen/schemas/$ResourceType.d.ts +17 -0
  210. package/gen/schemas/$ResourceType.js +20 -0
  211. package/gen/schemas/$Schedule.d.ts +47 -0
  212. package/gen/schemas/$Schedule.js +50 -0
  213. package/gen/schemas/$Script.d.ts +77 -0
  214. package/gen/schemas/$Script.js +80 -0
  215. package/gen/schemas/$ScriptArgs.d.ts +6 -0
  216. package/gen/schemas/$ScriptArgs.js +9 -0
  217. package/gen/schemas/$SlackToken.d.ts +24 -0
  218. package/gen/schemas/$SlackToken.js +27 -0
  219. package/gen/schemas/$TokenResponse.d.ts +23 -0
  220. package/gen/schemas/$TokenResponse.js +26 -0
  221. package/gen/schemas/$TruncatedToken.d.ts +25 -0
  222. package/gen/schemas/$TruncatedToken.js +28 -0
  223. package/gen/schemas/$Usage.d.ts +13 -0
  224. package/gen/schemas/$Usage.js +16 -0
  225. package/gen/schemas/$User.d.ts +42 -0
  226. package/gen/schemas/$User.js +45 -0
  227. package/gen/schemas/$UserWorkspaceList.d.ts +28 -0
  228. package/gen/schemas/$UserWorkspaceList.js +31 -0
  229. package/gen/schemas/$WorkerPing.d.ts +31 -0
  230. package/gen/schemas/$WorkerPing.js +34 -0
  231. package/gen/schemas/$Workspace.d.ts +19 -0
  232. package/gen/schemas/$Workspace.js +22 -0
  233. package/gen/schemas/$WorkspaceInvite.d.ts +16 -0
  234. package/gen/schemas/$WorkspaceInvite.js +19 -0
  235. package/gen/services/FlowService.d.ts +30 -16
  236. package/gen/services/FlowService.js +25 -0
  237. package/gen/services/JobService.d.ts +1 -1
  238. package/gen/services/ScriptService.d.ts +13 -8
  239. package/gen/services/WorkspaceService.d.ts +1 -1
  240. package/gen/services/WorkspaceService.js +1 -1
  241. package/infer.js +8 -1
  242. package/package.json +88 -16
  243. package/script_helpers.d.ts +1 -1
  244. package/script_helpers.js +11 -13
  245. package/sql.d.ts +89 -0
  246. package/sql.js +817 -0
  247. package/stores.d.ts +1 -1
  248. package/stores.js +0 -6
  249. package/utils.d.ts +26 -6
  250. package/utils.js +94 -7
  251. package/components/RadioButtonV2.svelte +0 -33
  252. package/components/RadioButtonV2.svelte.d.ts +0 -20
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { SchemaProperty } from '../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ property: SchemaProperty;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export declare type SchemaEditorPropertyProps = typeof __propDef.props;
13
+ export declare type SchemaEditorPropertyEvents = typeof __propDef.events;
14
+ export declare type SchemaEditorPropertySlots = typeof __propDef.slots;
15
+ export default class SchemaEditorProperty extends SvelteComponentTyped<SchemaEditorPropertyProps, SchemaEditorPropertyEvents, SchemaEditorPropertySlots> {
16
+ }
17
+ export {};
@@ -1,145 +1,39 @@
1
- <script>import { InputTransform } from '../gen';
2
- import { allTrue } from '../utils';
1
+ <script>import { allTrue } from '../utils';
3
2
  import ArgInput from './ArgInput.svelte';
4
- import Editor from './Editor.svelte';
5
- import FieldHeader from './FieldHeader.svelte';
6
- import DynamicInputHelpBox from './flows/DynamicInputHelpBox.svelte';
7
- import { getCodeInjectionExpr, getDefaultExpr, isCodeInjection } from './flows/utils';
8
- import OverlayPropertyPicker from './propertyPicker/OverlayPropertyPicker.svelte';
9
- import Toggle from './Toggle.svelte';
3
+ import InputTransformForm from './InputTransformForm.svelte';
10
4
  export let inputTransform = false;
11
5
  export let schema;
12
6
  export let args = {};
13
7
  export let editableSchema = false;
14
- export let extraLib = 'missing extraLib';
15
8
  export let isValid = true;
9
+ export let pickableProperties = undefined;
10
+ export let extraLib = 'missing extraLib';
16
11
  export let i = undefined;
17
- export let previousSchema = undefined;
18
12
  let inputCheck = {};
19
13
  $: isValid = allTrue(inputCheck) ?? false;
20
- let propertiesTypes = {};
21
- let inputCats = {};
22
- function setPropertyType(id, rawValue, isRaw) {
23
- const arg = args[id];
24
- if (!arg) {
25
- return;
26
- }
27
- if (isCodeInjection(rawValue)) {
28
- args[id].expr = getCodeInjectionExpr(rawValue, isRaw);
29
- args[id].type = InputTransform.type.JAVASCRIPT;
30
- propertiesTypes[id] = InputTransform.type.STATIC;
31
- }
32
- else {
33
- if (args[id].type === InputTransform.type.JAVASCRIPT &&
34
- propertiesTypes[id] === InputTransform.type.STATIC) {
35
- args[id].type = InputTransform.type.STATIC;
36
- if (inputCats[id] == 'number') {
37
- args[id].value = Number(args[id].value);
38
- }
14
+ function removeExtraKey() {
15
+ Object.keys(args).forEach((key) => {
16
+ if (!Object.keys(schema?.properties ?? {}).includes(key)) {
17
+ delete args[key];
39
18
  }
40
- if (arg.type) {
41
- propertiesTypes[id] = arg.type;
42
- }
43
- }
44
- }
45
- function hasOverlay(inputCat) {
46
- return inputCat === 'string' || inputCat === 'number';
19
+ });
47
20
  }
21
+ $: Object.keys(schema?.properties ?? {}).length > 0 && removeExtraKey();
48
22
  </script>
49
23
 
50
24
  <div class="w-full">
51
25
  {#if Object.keys(schema?.properties ?? {}).length > 0}
52
- {#each Object.keys(schema?.properties ?? {}) as argName, index}
53
- {#if inputTransform && args[argName] != undefined}
54
- <div class={index > 0 ? 'mt-8' : ''} />
55
- <div class="flex justify-between items-center">
56
- <div class="flex items-center">
57
- <FieldHeader
58
- label={argName}
59
- format={schema.properties[argName].format}
60
- contentEncoding={schema.properties[argName].contentEncoding}
61
- required={schema.required.includes(argName)}
62
- type={schema.properties[argName].type}
63
- itemsType={schema.properties[argName].items}
64
- />
65
- {#if propertiesTypes[argName] === InputTransform.type.STATIC && args[argName].type === InputTransform.type.JAVASCRIPT}
66
- <span
67
- class="bg-blue-100 text-blue-800 text-sm font-medium mr-2 px-2.5 py-0.5 rounded ml-2"
68
- >
69
- {'${...}'}
70
- </span>
71
- {/if}
72
- </div>
73
- <Toggle
74
- options={{
75
- left: { label: '', value: InputTransform.type.STATIC },
76
- right: { label: 'Raw Javascript Editor', value: InputTransform.type.JAVASCRIPT }
77
- }}
78
- bind:value={propertiesTypes[argName]}
79
- on:change={(e) => {
80
- if (e.detail === InputTransform.type.JAVASCRIPT) {
81
- args[argName].expr = getDefaultExpr(i ?? -1, argName)
82
- args[argName].value = undefined
83
- } else {
84
- args[argName].expr = undefined
85
- args[argName].value = undefined
86
- }
87
-
88
- args[argName].type = e.detail
89
- }}
90
- />
91
- </div>
92
- <div class="max-w-xs" />
93
-
94
- {#if propertiesTypes[argName] === undefined || propertiesTypes[argName] === InputTransform.type.STATIC}
95
- <OverlayPropertyPicker
96
- {previousSchema}
97
- disabled={!hasOverlay(inputCats[argName])}
98
- on:select={(event) => {
99
- const toAppend = `\$\{previous_result.${event.detail}}`
100
- args[argName].value = `${args[argName].value ?? ''}${toAppend}`
101
- setPropertyType(argName, args[argName].value, false)
102
- }}
103
- >
104
- <ArgInput
105
- label={argName}
106
- bind:description={schema.properties[argName].description}
107
- bind:value={args[argName].value}
108
- type={schema.properties[argName].type}
109
- required={schema.required.includes(argName)}
110
- bind:pattern={schema.properties[argName].pattern}
111
- bind:valid={inputCheck[argName]}
112
- defaultValue={schema.properties[argName].default}
113
- bind:enum_={schema.properties[argName].enum}
114
- bind:format={schema.properties[argName].format}
115
- contentEncoding={schema.properties[argName].contentEncoding}
116
- bind:itemsType={schema.properties[argName].items}
117
- displayHeader={false}
118
- bind:inputCat={inputCats[argName]}
119
- numberAsString={true}
120
- on:input={(e) => {
121
- if (hasOverlay(inputCats[argName])) {
122
- setPropertyType(argName, e.detail.rawValue, e.detail.isRaw)
123
- }
124
- }}
125
- />
126
- </OverlayPropertyPicker>
127
- {:else if propertiesTypes[argName] === InputTransform.type.JAVASCRIPT}
128
- {#if args[argName].expr != undefined}
129
- <div class="border rounded p-2 mt-2 border-gray-300">
130
- <Editor
131
- bind:code={args[argName].expr}
132
- lang="typescript"
133
- class="few-lines-editor"
134
- {extraLib}
135
- extraLibPath="file:///node_modules/@types/windmill@{i}/index.d.ts"
136
- />
137
- </div>
138
- <DynamicInputHelpBox />
139
- {/if}
140
- {:else}
141
- <p>Not recognized arg type {args[argName].type}</p>
142
- {/if}
26
+ {#each Object.keys(schema?.properties ?? {}) as argName}
27
+ {#if inputTransform}
28
+ <InputTransformForm
29
+ bind:arg={args[argName]}
30
+ bind:schema
31
+ bind:argName
32
+ bind:inputCheck
33
+ bind:pickableProperties
34
+ bind:extraLib
35
+ bind:i
36
+ />
143
37
  {:else}
144
38
  <ArgInput
145
39
  label={argName}
@@ -1,16 +1,15 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import type { Schema } from '../common';
3
- import { InputTransform } from '../gen';
4
3
  declare const __propDef: {
5
4
  props: {
6
5
  inputTransform?: boolean | undefined;
7
6
  schema: Schema;
8
- args?: Record<string, InputTransform> | undefined;
7
+ args?: Record<string, any> | undefined;
9
8
  editableSchema?: boolean | undefined;
10
- extraLib?: string | undefined;
11
9
  isValid?: boolean | undefined;
10
+ pickableProperties?: Object | undefined;
11
+ extraLib?: string | undefined;
12
12
  i?: number | undefined;
13
- previousSchema?: Object | undefined;
14
13
  };
15
14
  events: {
16
15
  [evt: string]: CustomEvent<any>;
@@ -1,15 +1,5 @@
1
1
  <script context="module">import Modal from './Modal.svelte';
2
2
  export const ARG_TYPES = ['integer', 'number', 'string', 'boolean', 'object', 'array'];
3
- export function modalToSchema(schema) {
4
- return {
5
- type: schema.selectedType,
6
- description: schema.description,
7
- pattern: schema.pattern,
8
- default: schema.default,
9
- enum: schema.enum_,
10
- items: schema.items
11
- };
12
- }
13
3
  export function schemaToModal(schema, name, required) {
14
4
  return {
15
5
  name,
@@ -17,6 +7,8 @@ export function schemaToModal(schema, name, required) {
17
7
  description: schema.description,
18
8
  pattern: schema.pattern,
19
9
  default: schema.default,
10
+ contentEncoding: schema.contentEncoding,
11
+ format: schema.format,
20
12
  required
21
13
  };
22
14
  }
@@ -33,14 +25,17 @@ import { createEventDispatcher } from 'svelte';
33
25
  import ArgInput from './ArgInput.svelte';
34
26
  import StringTypeNarrowing from './StringTypeNarrowing.svelte';
35
27
  import Required from './Required.svelte';
28
+ import ObjectTypeNarrowing from './ObjectTypeNarrowing.svelte';
36
29
  export let property = DEFAULT_PROPERTY;
37
30
  export let error = '';
38
31
  export let editing = false;
39
32
  export let oldArgName = undefined;
33
+ let resource_type = undefined;
40
34
  const dispatch = createEventDispatcher();
41
35
  let modal;
42
36
  export function openModal() {
43
37
  modal.openModal();
38
+ resource_type = property.format?.substring(5);
44
39
  }
45
40
  export function closeModal() {
46
41
  modal.closeModal();
@@ -54,6 +49,11 @@ function clearModal() {
54
49
  property.description = DEFAULT_PROPERTY.description;
55
50
  property.required = DEFAULT_PROPERTY.required;
56
51
  property.selectedType = DEFAULT_PROPERTY.selectedType;
52
+ property.format = undefined;
53
+ resource_type = undefined;
54
+ }
55
+ $: if (property.selectedType == 'object' && resource_type) {
56
+ property.format = resource_type ? `$res:${resource_type}` : undefined;
57
57
  }
58
58
  </script>
59
59
 
@@ -77,12 +77,16 @@ function clearModal() {
77
77
  />
78
78
  </label>
79
79
  <h3 class="font-semibold text-gray-700">Type<Required required={true} /></h3>
80
- <div class="grid sm:grid-cols-3 md:grid-cols-4 gap-x-2 gap-y-1 items-center mb-2">
80
+ <div class="grid sm:grid-cols-3 md:grid-cols-4 gap-x-2 gap-y-1 items-center mb-2 w-full">
81
81
  {#each ARG_TYPES as argType}
82
82
  <button
83
83
  class={argType == property.selectedType ? 'item-button-selected' : 'item-button'}
84
84
  on:click={() => {
85
85
  property.selectedType = argType
86
+ property.format = undefined
87
+ property.contentEncoding = undefined
88
+ property.enum_ = undefined
89
+ property.pattern = undefined
86
90
  }}>{argType}</button
87
91
  >
88
92
  {/each}
@@ -106,13 +110,14 @@ function clearModal() {
106
110
  pattern={property.pattern}
107
111
  />
108
112
  {#if property.selectedType !== 'boolean'}
109
- <h2 class="mb-2">Advanced</h2>
113
+ <h2 class="mb-2 mt-4">Advanced</h2>
110
114
 
111
115
  {#if property.selectedType == 'string'}
112
116
  <StringTypeNarrowing
113
117
  bind:format={property.format}
114
118
  bind:pattern={property.pattern}
115
119
  bind:enum_={property.enum_}
120
+ bind:contentEncoding={property.contentEncoding}
116
121
  />
117
122
  {:else if property.selectedType == 'array'}
118
123
  <select bind:value={property.items}>
@@ -120,6 +125,9 @@ function clearModal() {
120
125
  <option value={{ type: 'string' }}> Items are strings</option>
121
126
  <option value={{ type: 'number' }}>Items are numbers</option>
122
127
  </select>
128
+ {:else if property.selectedType == 'object'}
129
+ <h3 class="mb-2 font-bold mt-4">Resource type</h3>
130
+ <ObjectTypeNarrowing bind:format={property.format} />
123
131
  {:else}
124
132
  <p>No advanced configuration for this type</p>
125
133
  {/if}
@@ -137,24 +145,3 @@ function clearModal() {
137
145
  Save
138
146
  </button>
139
147
  </Modal>
140
-
141
- <style>
142
- .item-button {
143
- padding-top: 0.25rem;
144
- padding-bottom: 0.25rem;
145
- border-width: 1px;
146
- border-radius: 0.125rem
147
- }
148
- .item-button-selected {
149
- -webkit-text-decoration-line: underline;
150
- text-decoration-line: underline;
151
- font-weight: 700;
152
- padding-top: 0.25rem;
153
- padding-bottom: 0.25rem;
154
- border-width: 1px;
155
- --tw-border-opacity: 1;
156
- border-color: rgb(59 130 246 / var(--tw-border-opacity));
157
- --tw-bg-opacity: 1;
158
- background-color: rgb(239 246 255 / var(--tw-bg-opacity));
159
- border-radius: 0.125rem
160
- }</style>
@@ -14,8 +14,8 @@ export interface ModalSchemaProperty {
14
14
  items?: {
15
15
  type?: 'string' | 'number';
16
16
  };
17
+ contentEncoding?: 'base64' | 'binary';
17
18
  }
18
- export declare function modalToSchema(schema: ModalSchemaProperty): SchemaProperty;
19
19
  export declare function schemaToModal(schema: SchemaProperty, name: string, required: boolean): ModalSchemaProperty;
20
20
  export declare const DEFAULT_PROPERTY: ModalSchemaProperty;
21
21
  declare const __propDef: {
@@ -1,16 +1,11 @@
1
1
  <script>import { emptySchema } from '../utils';
2
2
  import Highlight from 'svelte-highlight';
3
3
  import json from 'svelte-highlight/languages/json';
4
- import github from 'svelte-highlight/styles/github';
5
4
  import TableCustom from './TableCustom.svelte';
6
5
  export let schema = emptySchema();
7
6
  let viewJsonSchema = false;
8
7
  </script>
9
8
 
10
- <svelte:head>
11
- {@html github}
12
- </svelte:head>
13
-
14
9
  <div class="w-full">
15
10
  <div class="flex flex-col sm:flex-row text-base">
16
11
  <button
@@ -59,7 +54,10 @@ let viewJsonSchema = false;
59
54
  ? JSON.stringify(property.default)
60
55
  : ''}</td
61
56
  >
62
- <td>{property.format ?? ''}</td>
57
+ <td
58
+ >{property.format ?? ''}
59
+ {property.contentEncoding ? `(encoding: ${property.contentEncoding})` : ''}</td
60
+ >
63
61
  <td>{schema.required.includes(name) ? 'required' : 'optional'}</td>
64
62
  </tr>
65
63
  {/each}
@@ -67,7 +65,7 @@ let viewJsonSchema = false;
67
65
  </TableCustom>
68
66
  </div>
69
67
  {:else}
70
- <div class="text-gray-700 text-xs italic">This script has no argument</div>
68
+ <div class="text-gray-700 text-xs italic">This script has no arguments</div>
71
69
  {/if}
72
70
  </div>
73
71
  <div class={viewJsonSchema ? '' : 'hidden'}>
@@ -1,26 +1,25 @@
1
1
  <script>import { ScriptService } from '../gen';
2
- import { emptySchema, sendUserToast, setQueryWithoutLoad } from '../utils';
3
- import { onDestroy } from 'svelte';
4
- import ScriptEditor from './ScriptEditor.svelte';
5
- import { page } from '$app/stores';
6
2
  import { goto } from '$app/navigation';
7
- import Path from './Path.svelte';
8
- import SvelteMarkdown from 'svelte-markdown';
9
- import { workspaceStore } from '../stores';
10
- import ScriptSchema from './ScriptSchema.svelte';
3
+ import { page } from '$app/stores';
11
4
  import { inferArgs } from '../infer';
12
- import Required from './Required.svelte';
13
- import RadioButton from './RadioButton.svelte';
14
5
  import { DENO_INIT_CODE, DENO_INIT_CODE_TRIGGER, initialCode } from '../script_helpers';
6
+ import { workspaceStore } from '../stores';
7
+ import { emptySchema, encodeState, sendUserToast, setQueryWithoutLoad } from '../utils';
8
+ import { Breadcrumb, BreadcrumbItem } from 'flowbite-svelte';
9
+ import { onDestroy } from 'svelte';
10
+ import SvelteMarkdown from 'svelte-markdown';
11
+ import Path from './Path.svelte';
12
+ import RadioButton from './RadioButton.svelte';
13
+ import Required from './Required.svelte';
14
+ import ScriptEditor from './ScriptEditor.svelte';
15
+ import ScriptSchema from './ScriptSchema.svelte';
15
16
  let editor;
16
17
  let scriptSchema;
17
18
  $: step = Number($page.url.searchParams.get('step')) || 1;
18
19
  export let script;
19
20
  export let initialPath = '';
20
21
  let pathError = '';
21
- $: {
22
- setQueryWithoutLoad($page.url, 'state', btoa(JSON.stringify(script)));
23
- }
22
+ $: setQueryWithoutLoad($page.url, 'state', encodeState(script));
24
23
  $: {
25
24
  if (script.language == 'python3') {
26
25
  script.is_trigger = false;
@@ -85,34 +84,33 @@ onDestroy(() => {
85
84
  <div class="flex flex-col h-screen max-w-screen-lg xl:-ml-20 xl:pl-4 w-full -mt-4 pt-4 md:mx-10 ">
86
85
  <!-- Nav between steps-->
87
86
  <div class="flex flex-col w-full">
88
- <div class="justify-between flex flex-row drop-shadow-sm w-full">
87
+ <div class="justify-between flex flex-row drop-shadow-sm w-full mt-4">
89
88
  <div class="wizard-nav flex flex-row w-full">
90
- <button
91
- class="{step === 1
92
- ? 'default-button-disabled text-gray-700'
93
- : 'default-button-secondary'} min-w-max ml-2"
94
- on:click={() => {
95
- changeStep(1)
96
- }}>Step 1: Metadata</button
97
- >
98
- <button
99
- disabled={pathError != ''}
100
- class="{step === 2
101
- ? 'default-button-disabled text-gray-700'
102
- : 'default-button-secondary'} min-w-max ml-2"
103
- on:click={() => {
104
- changeStep(2)
105
- }}>Step 2: Code</button
106
- >
107
- <button
108
- disabled={pathError != ''}
109
- class="{step === 3
110
- ? 'default-button-disabled text-gray-700'
111
- : 'default-button-secondary'} min-w-max ml-2"
112
- on:click={() => {
113
- changeStep(3)
114
- }}>Step 3: UI customisation</button
115
- >
89
+ <Breadcrumb>
90
+ <BreadcrumbItem>
91
+ <button on:click={() => changeStep(1)} class={step === 1 ? 'font-bold' : null}>
92
+ Metadata
93
+ </button>
94
+ </BreadcrumbItem>
95
+ <BreadcrumbItem>
96
+ <button
97
+ on:click={() => changeStep(2)}
98
+ class={step === 2 ? 'font-bold' : null}
99
+ disabled={pathError != ''}
100
+ >
101
+ Code
102
+ </button>
103
+ </BreadcrumbItem>
104
+ <BreadcrumbItem>
105
+ <button
106
+ on:click={() => changeStep(3)}
107
+ class={step === 3 ? 'font-bold' : null}
108
+ disabled={pathError != ''}
109
+ >
110
+ UI customisation
111
+ </button>
112
+ </BreadcrumbItem>
113
+ </Breadcrumb>
116
114
  </div>
117
115
  <div class="flex flex-row-reverse ml-2">
118
116
  {#if step != 3}
@@ -168,7 +166,6 @@ onDestroy(() => {
168
166
  <div class="max-w-md">
169
167
  <RadioButton
170
168
  label="Language"
171
- small={true}
172
169
  options={[
173
170
  ['Typescript (Deno)', 'deno'],
174
171
  ['Python 3.10', 'python3']
@@ -196,10 +193,11 @@ onDestroy(() => {
196
193
  rows="1"
197
194
  />
198
195
  </label>
199
- <label class="block ">
196
+ <label class="block" for="inp">
200
197
  <span class="text-gray-700"
201
198
  >Description<Required required={false} detail="accept markdown formatting" />
202
199
  <textarea
200
+ id="inp"
203
201
  bind:value={script.description}
204
202
  class="
205
203
  mt-1
@@ -268,7 +266,6 @@ onDestroy(() => {
268
266
  /* .wizard-nav {
269
267
  @apply w-1/2 sm:w-1/4;
270
268
  } */
271
-
272
269
  .wizard-nav button {
273
270
  max-height: 30px;
274
271
  }</style>