@lowdefy/docs 3.23.3 → 4.0.0-alpha.11

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 (274) hide show
  1. package/dist/operators/client/filter_default_value.js +55 -0
  2. package/{public/modules/connectDocsearch.js → dist/operatorsClient.js} +2 -20
  3. package/{templates/blocks/schemaTransformer.js → dist/types.js} +6 -11
  4. package/package.json +23 -8
  5. package/404.yaml +0 -26
  6. package/CHANGELOG.md +0 -672
  7. package/actions/CallMethod.yaml +0 -57
  8. package/actions/JsAction.yaml +0 -281
  9. package/actions/Link.yaml +0 -120
  10. package/actions/Login.yaml +0 -123
  11. package/actions/Logout.yaml +0 -44
  12. package/actions/Message.yaml +0 -68
  13. package/actions/Notification.yaml +0 -84
  14. package/actions/Request.yaml +0 -70
  15. package/actions/Reset.yaml +0 -42
  16. package/actions/ResetValidation.yaml +0 -102
  17. package/actions/ScrollTo.yaml +0 -100
  18. package/actions/SetGlobal.yaml +0 -78
  19. package/actions/SetState.yaml +0 -85
  20. package/actions/Throw.yaml +0 -89
  21. package/actions/Validate.yaml +0 -104
  22. package/actions/Wait.yaml +0 -40
  23. package/blocks/all_icons.yaml +0 -802
  24. package/blocks/container/Affix.yaml +0 -26
  25. package/blocks/container/Badge.yaml +0 -27
  26. package/blocks/container/Box.yaml +0 -27
  27. package/blocks/container/Card.yaml +0 -29
  28. package/blocks/container/Collapse.yaml +0 -38
  29. package/blocks/container/Comment.yaml +0 -43
  30. package/blocks/container/ConfirmModal.yaml +0 -36
  31. package/blocks/container/Drawer.yaml +0 -45
  32. package/blocks/container/Label.yaml +0 -29
  33. package/blocks/container/Modal.yaml +0 -46
  34. package/blocks/container/Result.yaml +0 -34
  35. package/blocks/container/Span.yaml +0 -27
  36. package/blocks/container/Spin.yaml +0 -27
  37. package/blocks/container/Tabs.yaml +0 -41
  38. package/blocks/container/Tooltip.yaml +0 -38
  39. package/blocks/context/Context.yaml +0 -27
  40. package/blocks/context/PageHCF.yaml +0 -28
  41. package/blocks/context/PageHCSF.yaml +0 -29
  42. package/blocks/context/PageHSCF.yaml +0 -29
  43. package/blocks/context/PageHeaderMenu.yaml +0 -52
  44. package/blocks/context/PageSHCF.yaml +0 -29
  45. package/blocks/context/PageSiderMenu.yaml +0 -53
  46. package/blocks/display/Alert.yaml +0 -26
  47. package/blocks/display/Anchor.yaml +0 -26
  48. package/blocks/display/Avatar.yaml +0 -24
  49. package/blocks/display/Breadcrumb.yaml +0 -29
  50. package/blocks/display/Button.yaml +0 -43
  51. package/blocks/display/DangerousHtml.yaml +0 -62
  52. package/blocks/display/DangerousMarkdown.yaml +0 -46
  53. package/blocks/display/Descriptions.yaml +0 -49
  54. package/blocks/display/Divider.yaml +0 -25
  55. package/blocks/display/EChart.yaml +0 -53
  56. package/blocks/display/Html.yaml +0 -50
  57. package/blocks/display/Icon.yaml +0 -25
  58. package/blocks/display/Img.yaml +0 -40
  59. package/blocks/display/Markdown.yaml +0 -32
  60. package/blocks/display/MarkdownWithCode.yaml +0 -48
  61. package/blocks/display/Menu.yaml +0 -48
  62. package/blocks/display/Message.yaml +0 -34
  63. package/blocks/display/MobileMenu.yaml +0 -48
  64. package/blocks/display/Notification.yaml +0 -34
  65. package/blocks/display/Paragraph.yaml +0 -32
  66. package/blocks/display/Progress.yaml +0 -53
  67. package/blocks/display/Skeleton.yaml +0 -28
  68. package/blocks/display/Statistic.yaml +0 -37
  69. package/blocks/display/Title.yaml +0 -32
  70. package/blocks/input/AutoComplete.yaml +0 -31
  71. package/blocks/input/ButtonSelector.yaml +0 -37
  72. package/blocks/input/CheckboxSelector.yaml +0 -37
  73. package/blocks/input/CheckboxSwitch.yaml +0 -56
  74. package/blocks/input/ChromeColorSelector.yaml +0 -25
  75. package/blocks/input/CircleColorSelector.yaml +0 -25
  76. package/blocks/input/ColorSelector.yaml +0 -25
  77. package/blocks/input/CompactColorSelector.yaml +0 -25
  78. package/blocks/input/DateRangeSelector.yaml +0 -27
  79. package/blocks/input/DateSelector.yaml +0 -27
  80. package/blocks/input/DateTimeSelector.yaml +0 -29
  81. package/blocks/input/GithubColorSelector.yaml +0 -25
  82. package/blocks/input/MonthSelector.yaml +0 -27
  83. package/blocks/input/MultipleSelector.yaml +0 -117
  84. package/blocks/input/NumberInput.yaml +0 -24
  85. package/blocks/input/Pagination.yaml +0 -33
  86. package/blocks/input/ParagraphInput.yaml +0 -32
  87. package/blocks/input/PasswordInput.yaml +0 -48
  88. package/blocks/input/RadioSelector.yaml +0 -36
  89. package/blocks/input/RatingSlider.yaml +0 -24
  90. package/blocks/input/S3UploadButton.yaml +0 -28
  91. package/blocks/input/Selector.yaml +0 -98
  92. package/blocks/input/SliderColorSelector.yaml +0 -24
  93. package/blocks/input/SwatchesColorSelector.yaml +0 -24
  94. package/blocks/input/Switch.yaml +0 -24
  95. package/blocks/input/TextArea.yaml +0 -28
  96. package/blocks/input/TextInput.yaml +0 -59
  97. package/blocks/input/TitleInput.yaml +0 -32
  98. package/blocks/input/TwitterColorSelector.yaml +0 -24
  99. package/blocks/input/WeekSelector.yaml +0 -26
  100. package/blocks/list/ControlledList.yaml +0 -191
  101. package/blocks/list/List.yaml +0 -158
  102. package/blocks/list/TimelineList.yaml +0 -135
  103. package/body.html +0 -1
  104. package/concepts/blocks.yaml +0 -249
  105. package/concepts/cli.yaml +0 -173
  106. package/concepts/connections-and-requests.yaml +0 -114
  107. package/concepts/context-and-state.yaml +0 -82
  108. package/concepts/custom-blocks.yaml +0 -176
  109. package/concepts/custom-code.yaml +0 -196
  110. package/concepts/events-and-actions.yaml +0 -224
  111. package/concepts/hosting-files.yaml +0 -50
  112. package/concepts/layout.yaml +0 -1464
  113. package/concepts/lists.yaml +0 -162
  114. package/concepts/lowdefy-schema.yaml +0 -244
  115. package/concepts/operators.yaml +0 -66
  116. package/concepts/overview.yaml +0 -48
  117. package/concepts/secrets.yaml +0 -56
  118. package/connections/AWSS3.yaml +0 -228
  119. package/connections/AmazonRedshift.yaml +0 -75
  120. package/connections/AxiosHttp.yaml +0 -194
  121. package/connections/Elasticsearch.yaml +0 -378
  122. package/connections/GoogleSheet.yaml +0 -332
  123. package/connections/Knex.yaml +0 -181
  124. package/connections/KnexRequests.md +0 -121
  125. package/connections/MSSQL.yaml +0 -90
  126. package/connections/MariaDB.yaml +0 -77
  127. package/connections/MongoDB.yaml +0 -452
  128. package/connections/MySQL.yaml +0 -92
  129. package/connections/OracleDB.yaml +0 -73
  130. package/connections/PostgreSQL.yaml +0 -99
  131. package/connections/SQLite.yaml +0 -94
  132. package/connections/SendGridMail.yaml +0 -113
  133. package/connections/Stripe.yaml +0 -139
  134. package/deployment/aws-lambda.yaml +0 -128
  135. package/deployment/docker.yaml +0 -118
  136. package/deployment/netlify.yaml +0 -69
  137. package/deployment/node-server.yaml +0 -111
  138. package/head.html +0 -7
  139. package/howto/generate-csv.yaml.njk +0 -251
  140. package/howto/generate-pdf.yaml.njk +0 -651
  141. package/howto/generateCsv/lowdefy.yaml +0 -63
  142. package/howto/generateCsv/public/csvMake.js +0 -27
  143. package/howto/generatePdf/inv_template.yaml +0 -200
  144. package/howto/generatePdf/lowdefy.yaml +0 -116
  145. package/howto/generatePdf/my_header.html +0 -1
  146. package/howto/generatePdf/public/logo_example.png +0 -0
  147. package/howto/generatePdf/public/modules/importUmd.js +0 -7
  148. package/howto/generatePdf/public/modules/pdfMake.js +0 -7
  149. package/howto/generatePdf/public/modules/vfs_fonts.js +0 -12
  150. package/introduction.yaml +0 -100
  151. package/lowdefy.yaml +0 -66
  152. package/menus.yaml +0 -841
  153. package/operators/_actions.yaml +0 -123
  154. package/operators/_and.yaml +0 -90
  155. package/operators/_args.yaml +0 -79
  156. package/operators/_array.yaml +0 -326
  157. package/operators/_base64.yaml +0 -56
  158. package/operators/_change_case.yaml +0 -347
  159. package/operators/_date.yaml +0 -71
  160. package/operators/_diff.yaml +0 -76
  161. package/operators/_divide.yaml +0 -46
  162. package/operators/_eq.yaml +0 -67
  163. package/operators/_event.yaml +0 -102
  164. package/operators/_format.yaml +0 -209
  165. package/operators/_function.yaml +0 -66
  166. package/operators/_get.yaml +0 -108
  167. package/operators/_global.yaml +0 -106
  168. package/operators/_gt.yaml +0 -65
  169. package/operators/_gte.yaml +0 -65
  170. package/operators/_hash.yaml +0 -109
  171. package/operators/_if.yaml +0 -44
  172. package/operators/_if_none.yaml +0 -61
  173. package/operators/_index.yaml +0 -64
  174. package/operators/_input.yaml +0 -113
  175. package/operators/_js.yaml +0 -189
  176. package/operators/_json.yaml +0 -128
  177. package/operators/_list_contexts.yaml +0 -37
  178. package/operators/_location.yaml +0 -59
  179. package/operators/_log.yaml +0 -36
  180. package/operators/_lt.yaml +0 -65
  181. package/operators/_lte.yaml +0 -65
  182. package/operators/_math.yaml +0 -374
  183. package/operators/_media.yaml +0 -86
  184. package/operators/_menu.yaml +0 -81
  185. package/operators/_mql.yaml +0 -101
  186. package/operators/_ne.yaml +0 -77
  187. package/operators/_not.yaml +0 -47
  188. package/operators/_number.yaml +0 -157
  189. package/operators/_nunjucks.yaml +0 -73
  190. package/operators/_object.yaml +0 -193
  191. package/operators/_operator.yaml +0 -47
  192. package/operators/_or.yaml +0 -81
  193. package/operators/_product.yaml +0 -59
  194. package/operators/_random.yaml +0 -104
  195. package/operators/_ref.yaml +0 -232
  196. package/operators/_regex.yaml +0 -83
  197. package/operators/_request.yaml +0 -50
  198. package/operators/_secret.yaml +0 -74
  199. package/operators/_state.yaml +0 -113
  200. package/operators/_string.yaml +0 -283
  201. package/operators/_subtract.yaml +0 -38
  202. package/operators/_sum.yaml +0 -59
  203. package/operators/_switch.yaml +0 -51
  204. package/operators/_type.yaml +0 -92
  205. package/operators/_uri.yaml +0 -56
  206. package/operators/_url_query.yaml +0 -119
  207. package/operators/_user.yaml +0 -107
  208. package/operators/_uuid.yaml +0 -114
  209. package/operators/_var.yaml +0 -105
  210. package/operators/_yaml.yaml +0 -83
  211. package/pages.yaml +0 -228
  212. package/public/images/authors/gervwyk.jpeg +0 -0
  213. package/public/images/authors/sandile.jpeg +0 -0
  214. package/public/images/howto/header_generate_csv.jpg +0 -0
  215. package/public/images/howto/header_generate_pdf.jpg +0 -0
  216. package/public/logo_example.png +0 -0
  217. package/public/lowdefy_app_schema.png +0 -0
  218. package/public/modules/csvMake.js +0 -27
  219. package/public/modules/filterDefaultValue.js +0 -48
  220. package/public/modules/importUmd.js +0 -7
  221. package/public/modules/index.js +0 -5
  222. package/public/modules/pdfMake.js +0 -7
  223. package/public/modules/test/filterDefaultValue.test.js +0 -91
  224. package/public/modules/vfs_fonts.js +0 -12
  225. package/public/sitemap.xml +0 -1024
  226. package/templates/actions.yaml.njk +0 -68
  227. package/templates/blocks/defaultValueTransformer.js +0 -51
  228. package/templates/blocks/exampleTransformer.js +0 -81
  229. package/templates/blocks/layout.yaml +0 -114
  230. package/templates/blocks/propertiesFormTransformer.js +0 -419
  231. package/templates/blocks/propertiesGetterTransformer.js +0 -132
  232. package/templates/blocks/schema.yaml.njk +0 -42
  233. package/templates/blocks/style.yaml +0 -26
  234. package/templates/blocks/template.yaml.njk +0 -496
  235. package/templates/blog.yaml.njk +0 -221
  236. package/templates/cli_command.yaml.njk +0 -37
  237. package/templates/footer.yaml.njk +0 -604
  238. package/templates/general.yaml.njk +0 -124
  239. package/templates/generateSitemap.js +0 -42
  240. package/templates/header.yaml +0 -138
  241. package/templates/navigation_buttons.yaml +0 -68
  242. package/templates/operators.yaml.njk +0 -82
  243. package/templates/operatorsMethodTransformer.js +0 -119
  244. package/templates/test/array.test.js +0 -1355
  245. package/templates/test/boolean.test.js +0 -102
  246. package/templates/test/button.test.js +0 -170
  247. package/templates/test/color.test.js +0 -128
  248. package/templates/test/enum.test.js +0 -109
  249. package/templates/test/icon.test.js +0 -113
  250. package/templates/test/integer.test.js +0 -103
  251. package/templates/test/manual.test.js +0 -246
  252. package/templates/test/number.test.js +0 -103
  253. package/templates/test/object.test.js +0 -442
  254. package/templates/test/oneOf.test.js +0 -806
  255. package/templates/test/string.test.js +0 -102
  256. package/templates/test/yaml.test.js +0 -621
  257. package/tutorial/next-steps.yaml +0 -83
  258. package/tutorial/tutorial-actions-operators-config.yaml +0 -142
  259. package/tutorial/tutorial-actions-operators.yaml +0 -436
  260. package/tutorial/tutorial-add-blocks-config.yaml +0 -109
  261. package/tutorial/tutorial-add-blocks.yaml +0 -195
  262. package/tutorial/tutorial-create-page-config.yaml +0 -77
  263. package/tutorial/tutorial-create-page.yaml +0 -196
  264. package/tutorial/tutorial-deploy.yaml +0 -146
  265. package/tutorial/tutorial-requests-config.yaml +0 -186
  266. package/tutorial/tutorial-requests.yaml +0 -338
  267. package/tutorial/tutorial-start.yaml +0 -282
  268. package/users/login-and-logout.yaml +0 -164
  269. package/users/openid-connect.yaml +0 -84
  270. package/users/protected-pages.yaml +0 -67
  271. package/users/roles.yaml +0 -70
  272. package/users/user-object.yaml +0 -73
  273. package/users/users-introduction.yaml +0 -80
  274. package/version.yaml +0 -1
@@ -1,419 +0,0 @@
1
- /*
2
- Copyright 2020-2021 Lowdefy, Inc
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- const avatar = (path) => ({
18
- id: `${path}_avatar_card`,
19
- type: 'Card',
20
- layout: {
21
- contentGutter: 0,
22
- },
23
- properties: {
24
- size: 'small',
25
- title: 'avatar:',
26
- inner: true,
27
- },
28
- blocks: [
29
- {
30
- id: `${path}.color`,
31
- type: 'CircleColorSelector',
32
- layout: {
33
- _global: 'settings_input_layout',
34
- },
35
- properties: {
36
- title: 'color',
37
- size: 'small',
38
- label: {
39
- span: 8,
40
- align: 'right',
41
- extra: 'The background color of the avatar. Should be a hex color string.',
42
- },
43
- circleSize: 14,
44
- circleSpacing: 8,
45
- colors: [
46
- '#f5222d',
47
- '#fa541c',
48
- '#fa8c16',
49
- '#faad14',
50
- '#fadb14',
51
- '#a0d911',
52
- '#52c41a',
53
- '#13c2c2',
54
- '#1890ff',
55
- '#2f54eb',
56
- '#722ed1',
57
- '#eb2f96',
58
- '#595959',
59
- '#bfbfbf',
60
- '#d9d9d9',
61
- ],
62
- },
63
- },
64
- {
65
- id: `${path}.content`,
66
- type: 'TextInput',
67
- layout: {
68
- _global: 'settings_input_layout',
69
- },
70
- properties: {
71
- title: 'content',
72
- size: 'small',
73
- label: {
74
- span: 8,
75
- align: 'right',
76
- extra: 'Text to display inside avatar.',
77
- },
78
- },
79
- },
80
- ],
81
- });
82
-
83
- const button = (path) => ({
84
- id: `${path}_button_card`,
85
- type: 'Card',
86
- layout: {
87
- contentGutter: 0,
88
- },
89
- properties: {
90
- size: 'small',
91
- title: `${path}:`,
92
- inner: true,
93
- },
94
- blocks: [
95
- {
96
- id: `${path}.icon`,
97
- type: 'Selector',
98
- layout: {
99
- _global: 'settings_input_layout',
100
- },
101
- properties: {
102
- title: 'icon',
103
- size: 'small',
104
- label: {
105
- span: 8,
106
- align: 'right',
107
- extra: 'Name of an Ant Design Icon or properties of an Icon block to use icon in button.',
108
- },
109
- showSearch: true,
110
- allowClear: true,
111
- options: { _global: 'all_icons' },
112
- },
113
- },
114
- {
115
- id: `${path}.title`,
116
- type: 'TextInput',
117
- layout: {
118
- _global: 'settings_input_layout',
119
- },
120
- properties: {
121
- title: 'title',
122
- size: 'small',
123
- label: {
124
- span: 8,
125
- align: 'right',
126
- extra: 'Title text on the button.',
127
- },
128
- },
129
- },
130
- {
131
- id: `${path}.type`,
132
- type: 'ButtonSelector',
133
- layout: {
134
- _global: 'settings_input_layout',
135
- },
136
- properties: {
137
- title: 'type',
138
- size: 'small',
139
- options: ['primary', 'default', 'dashed', 'danger', 'link', 'text'],
140
- label: {
141
- span: 8,
142
- align: 'right',
143
- extra: 'The button type.',
144
- },
145
- },
146
- },
147
- ],
148
- });
149
-
150
- const oneOf = ({ propertyName, propertyDescription, nameSpace }) => {
151
- const block = {
152
- id: propertyName,
153
- type: 'Card',
154
- layout: {
155
- contentGutter: 0,
156
- },
157
- properties: {
158
- size: 'small',
159
- title: `Select ${propertyName} type`,
160
- inner: true,
161
- bodyStyle: { padding: 0 },
162
- headerStyle: { color: 'rgba(0, 0, 0, 0.45)', background: 'rgba(0, 0, 0, 0.06)' },
163
- },
164
- };
165
- block.areas = {
166
- extra: {
167
- blocks: [
168
- {
169
- id: `__type_${nameSpace}${propertyName}`,
170
- type: 'ButtonSelector',
171
- properties: {
172
- options: propertyDescription.oneOf.map((item) =>
173
- item.type === 'array' ? `${item.items.type}[]` : item.type
174
- ),
175
- size: 'small',
176
- color: 'rgba(0, 0, 0, 0.1)',
177
- buttonStyle: 'outlined',
178
- label: {
179
- disabled: true,
180
- },
181
- },
182
- },
183
- ],
184
- },
185
- content: {
186
- blocks: propertyDescription.oneOf.map((item) => {
187
- const bl = makeBlockDefinition({
188
- propertyName: propertyName,
189
- propertyDescription: item,
190
- requiredProperties: [],
191
- nameSpace: `__${
192
- item.type === 'array' ? `${item.items.type}_arr` : item.type
193
- }_${nameSpace}`,
194
- });
195
- bl.visible = {
196
- _if: {
197
- test: {
198
- _eq: [
199
- { _state: `__type_${nameSpace}${propertyName}` },
200
- item.type === 'array' ? `${item.items.type}[]` : item.type,
201
- ],
202
- },
203
- then: true,
204
- else: false,
205
- },
206
- };
207
- return bl;
208
- }),
209
- },
210
- };
211
- return block;
212
- };
213
-
214
- function makeBlockDefinition({
215
- propertyName,
216
- propertyDescription,
217
- requiredProperties,
218
- nameSpace,
219
- labelDisabled,
220
- }) {
221
- let block = {
222
- id: `${nameSpace}${propertyName}`,
223
- layout: { _global: 'settings_input_layout' },
224
- required: requiredProperties.includes(propertyName),
225
- properties: {
226
- title: propertyName,
227
- size: 'small',
228
- label: labelDisabled
229
- ? { disabled: true }
230
- : {
231
- span: 8,
232
- align: 'right',
233
- extra: propertyDescription.description,
234
- },
235
- },
236
- };
237
-
238
- if (
239
- propertyDescription.docs &&
240
- propertyDescription.docs.label &&
241
- propertyDescription.docs.label.span
242
- ) {
243
- block.properties.label.span = propertyDescription.docs.label.span;
244
- }
245
-
246
- // displayType
247
- if (propertyDescription.docs && propertyDescription.docs.displayType) {
248
- switch (propertyDescription.docs.displayType) {
249
- case 'manual':
250
- return propertyDescription.docs.block;
251
- case 'icon':
252
- block.type = 'Selector';
253
- block.properties = {
254
- ...block.properties,
255
- showSearch: true,
256
- allowClear: true,
257
- options: { _global: 'all_icons' },
258
- };
259
- return block;
260
- case 'color':
261
- block.type = 'CircleColorSelector';
262
- block.properties.circleSize = 14;
263
- block.properties.circleSpacing = 8;
264
- block.properties.colors = [
265
- '#f5222d',
266
- '#fa541c',
267
- '#fa8c16',
268
- '#faad14',
269
- '#fadb14',
270
- '#a0d911',
271
- '#52c41a',
272
- '#13c2c2',
273
- '#1890ff',
274
- '#2f54eb',
275
- '#722ed1',
276
- '#eb2f96',
277
- '#595959',
278
- '#bfbfbf',
279
- '#d9d9d9',
280
- ];
281
- block.properties.showValue = true;
282
- return block;
283
- case 'date':
284
- block.type = 'DateSelector';
285
- return block;
286
- case 'dateRange':
287
- block.type = 'DateRangeSelector';
288
- return block;
289
- case 'yaml':
290
- block.type = 'TextArea';
291
- block.properties.placeholder = 'Type YAML here';
292
- block.properties.autoSize = { minRows: 2 };
293
- return block;
294
- case 'text-area':
295
- block.type = 'TextArea';
296
- return block;
297
- case 'button':
298
- return button(`${nameSpace}${propertyName}`);
299
- case 'avatar':
300
- return avatar(`${nameSpace}${propertyName}`);
301
- default:
302
- propertyDescription.type = propertyDescription.docs.displayType;
303
- break;
304
- }
305
- }
306
-
307
- // enums
308
- if (propertyDescription.enum) {
309
- block.type = 'ButtonSelector';
310
- if (propertyDescription.enum.length >= 5) {
311
- block.type = 'Selector';
312
- }
313
- block.properties.options = propertyDescription.enum;
314
- return block;
315
- }
316
-
317
- // defaults for type
318
- switch (propertyDescription.type) {
319
- case 'boolean':
320
- block.type = 'Switch';
321
- return block;
322
- case 'string':
323
- block.type = 'TextInput';
324
- return block;
325
- case 'number':
326
- block.type = 'NumberInput';
327
- block.properties.step = propertyDescription.step ? propertyDescription.step : 0.1;
328
- if (propertyDescription.maximum != null) {
329
- block.properties.max = propertyDescription.maximum;
330
- }
331
- if (propertyDescription.minimum != null) {
332
- block.properties.min = propertyDescription.minimum;
333
- }
334
- return block;
335
- case 'integer':
336
- block.type = 'NumberInput';
337
- block.properties.step = propertyDescription.step ? propertyDescription.step : 1;
338
- if (propertyDescription.maximum != null) {
339
- block.properties.max = propertyDescription.maximum;
340
- }
341
- if (propertyDescription.minimum != null) {
342
- block.properties.min = propertyDescription.minimum;
343
- }
344
- return block;
345
- case 'object':
346
- block = {
347
- id: `${nameSpace}${propertyName}`,
348
- type: 'Card',
349
- layout: {
350
- contentGutter: 0,
351
- },
352
- properties: {
353
- size: 'small',
354
- title: !labelDisabled && `${propertyName}:`,
355
- bodyStyle: { padding: 0 },
356
- },
357
- };
358
- block.blocks = Object.keys(propertyDescription.properties)
359
- .sort()
360
- .map((objectPropertyName) => {
361
- const bl = makeBlockDefinition({
362
- propertyName: objectPropertyName,
363
- propertyDescription: propertyDescription.properties[objectPropertyName],
364
- requiredProperties: propertyDescription.required || [],
365
- nameSpace: `${nameSpace}${propertyName}.`,
366
- });
367
- return bl;
368
- });
369
- return block;
370
- case 'array':
371
- block = {
372
- id: `${nameSpace}${propertyName}`,
373
- type: 'ControlledList',
374
- layout: {
375
- contentGutter: 0,
376
- },
377
- properties: {
378
- size: 'small',
379
- title: !labelDisabled && `${propertyName}:`,
380
- itemStyle: { padding: 0 },
381
- },
382
- };
383
- block.blocks = [
384
- makeBlockDefinition({
385
- propertyName: `$`,
386
- propertyDescription: propertyDescription.items,
387
- requiredProperties: [],
388
- nameSpace: `${nameSpace}${propertyName}.`,
389
- labelDisabled: true,
390
- }),
391
- ];
392
- return block;
393
- case undefined:
394
- if (propertyDescription.oneOf) {
395
- return oneOf({ propertyName, propertyDescription, nameSpace });
396
- }
397
- return block;
398
- default:
399
- return block;
400
- }
401
- }
402
-
403
- function transformer(obj) {
404
- const blockProperties = obj.schema.properties.properties;
405
- const requiredProperties = obj.schema.properties.required || [];
406
- const blocks = Object.keys(blockProperties)
407
- .sort()
408
- .map((propertyName) => {
409
- return makeBlockDefinition({
410
- propertyName,
411
- propertyDescription: blockProperties[propertyName],
412
- requiredProperties,
413
- nameSpace: 'block.properties.',
414
- });
415
- });
416
- return blocks;
417
- }
418
-
419
- module.exports = transformer;
@@ -1,132 +0,0 @@
1
- /*
2
- Copyright 2020-2021 Lowdefy, Inc
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- const oneOfGetter = ({ contextId, options, path, underscores }) => {
18
- const types = options.map((option) => {
19
- if (option.type === 'array') {
20
- return { data: `${option.items.type}_arr`, selector: `${option.items.type}[]` };
21
- }
22
- return { data: option.type, selector: option.type };
23
- });
24
- const branches = types.map((type, index) => {
25
- const getter = propertyGetter({
26
- contextId,
27
- data: 'state',
28
- path: `__${type.data}_${path}`,
29
- property: options[index],
30
- underscores: underscores,
31
- });
32
- return {
33
- case: { _eq: [{ _state: `__type_${path}` }, type.selector] },
34
- then: getter || { _state: { key: `__${type.data}_${path}`, contextId } },
35
- };
36
- });
37
- return {
38
- '_mql.expr': {
39
- on: {},
40
- expr: {
41
- $switch: {
42
- branches,
43
- default: null,
44
- },
45
- },
46
- },
47
- };
48
- };
49
-
50
- const arrayGetter = ({ contextId, data, items, path, underscores }) => {
51
- const getter = propertyGetter({
52
- contextId: undefined, // Cannot use contextId with _args
53
- data: 'args',
54
- path: '0',
55
- property: items,
56
- underscores: underscores + '_',
57
- });
58
- if (getter) {
59
- return {
60
- [`${underscores}array.map`]: {
61
- on: {
62
- [`${underscores}if_none`]: [{ [`${underscores}${data}`]: { key: path, contextId } }, []],
63
- },
64
- callback: {
65
- [`${underscores}function`]: getter,
66
- },
67
- },
68
- };
69
- }
70
- };
71
-
72
- const propertyGetter = ({ contextId, data, path, property, underscores }) => {
73
- if (property.docs && property.docs.displayType === 'yaml') {
74
- return {
75
- [`${underscores}yaml.parse`]: {
76
- [`${underscores}if_none`]: [{ [`${underscores}${data}`]: { key: path, contextId } }, ''],
77
- },
78
- };
79
- }
80
- if (property.docs && property.docs.displayType === 'manual' && property.docs.getter != null) {
81
- return property.docs.getter;
82
- }
83
- if (property.type === 'object' && property.properties) {
84
- return objectGetter({
85
- contextId,
86
- data,
87
- path,
88
- properties: property.properties,
89
- underscores,
90
- });
91
- }
92
- if (property.type === 'array' && property.items) {
93
- return arrayGetter({ contextId, data, items: property.items, path, underscores });
94
- }
95
- if (property.oneOf) {
96
- return oneOfGetter({ contextId, data, options: property.oneOf, path, underscores });
97
- }
98
- };
99
-
100
- const objectGetter = ({ contextId, data, path, properties, underscores }) => {
101
- const getters = [];
102
- Object.keys(properties).forEach((key) => {
103
- const getter = propertyGetter({
104
- contextId,
105
- data,
106
- path: `${path}.${key}`,
107
- property: properties[key],
108
- underscores,
109
- });
110
- if (getter) {
111
- getters.push({ [key]: getter });
112
- }
113
- });
114
- return {
115
- [`${underscores}object.assign`]: [
116
- { [`${underscores}${data}`]: { key: path, contextId, default: {} } },
117
- ].concat(getters),
118
- };
119
- };
120
-
121
- const transformer = (obj, vars) => {
122
- const contextId = `${vars.block_type}:${vars.block_type}:{}`;
123
- return objectGetter({
124
- contextId,
125
- data: 'state',
126
- path: 'block.properties',
127
- properties: obj.schema.properties.properties,
128
- underscores: '_',
129
- });
130
- };
131
-
132
- module.exports = transformer;
@@ -1,42 +0,0 @@
1
- # Copyright 2020-2021 Lowdefy, Inc
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
-
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
-
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- id: schema_definition
16
- type: Box
17
- layout:
18
- contentGutter: 16
19
- blocks:
20
- - id: schema_divider_start
21
- type: Divider
22
- properties:
23
- title: '{{ block_type }} JSON Schema Definition'
24
- - id: schema_yaml
25
- type: MarkdownWithCode
26
- properties:
27
- content:
28
- _nunjucks:
29
- template: |
30
- {% raw %}
31
- ```yaml
32
- type: object
33
- properties:
34
- {{ schema | safe | indent(2) }}
35
- ```
36
- {% endraw %}
37
- on:
38
- schema:
39
- _yaml.stringify:
40
- - _var: schema_definition.schema
41
- - id: schema_divider_end
42
- type: Divider
@@ -1,26 +0,0 @@
1
- # Copyright 2020-2021 Lowdefy, Inc
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
-
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
-
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- - id: style_block_input
16
- type: TextArea
17
- layout:
18
- _global: settings_input_layout
19
- properties:
20
- title: block
21
- rows: 3
22
- size: small
23
- label:
24
- span: 8
25
- align: right
26
- extra: CSS Object style properties. Should be in YAML format.