@digipair/skill-web-editor 0.90.0 → 0.91.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.swcrc +28 -0
  2. package/README.md +7 -0
  3. package/eslint.config.mjs +22 -0
  4. package/package.json +21 -5
  5. package/rollup.config.cjs +28 -0
  6. package/src/lib/blocks/json.ts +145 -0
  7. package/src/lib/editor.element.ts +279 -0
  8. package/src/lib/generator/blockly-to-json.ts +360 -0
  9. package/src/lib/generator/json-to-blockly.ts +757 -0
  10. package/src/lib/generator/pins-to-blockly.ts +927 -0
  11. package/src/lib/schemas/web.fr.schema.ts +34473 -0
  12. package/src/lib/schemas/web.schema.ts +34473 -0
  13. package/src/lib/skill-web-editor.spec.ts +7 -0
  14. package/src/lib/skill-web-editor.ts +1 -0
  15. package/tsconfig.json +13 -0
  16. package/tsconfig.lib.json +19 -0
  17. package/blockly-to-json.cjs.js +0 -338
  18. package/blockly-to-json.esm.js +0 -336
  19. package/index.cjs.d.ts +0 -1
  20. package/index.cjs.js +0 -12
  21. package/index.cjs2.js +0 -72611
  22. package/index.esm.js +0 -1
  23. package/index.esm2.js +0 -72608
  24. package/libs/skill-web-editor/src/lib/blocks/json.d.ts +0 -145
  25. package/libs/skill-web-editor/src/lib/editor.element.d.ts +0 -24
  26. package/libs/skill-web-editor/src/lib/generator/blockly-to-json.d.ts +0 -1
  27. package/libs/skill-web-editor/src/lib/generator/json-to-blockly.d.ts +0 -1
  28. package/libs/skill-web-editor/src/lib/generator/pins-to-blockly.d.ts +0 -139
  29. package/libs/skill-web-editor/src/lib/schemas/web.fr.schema.d.ts +0 -4028
  30. package/libs/skill-web-editor/src/lib/schemas/web.schema.d.ts +0 -4028
  31. package/libs/skill-web-editor/src/lib/skill-web-editor.d.ts +0 -1
  32. package/pins-to-blockly.cjs.js +0 -628
  33. package/pins-to-blockly.esm.js +0 -624
  34. /package/{index.d.ts → src/index.d.ts} +0 -0
  35. /package/{libs/skill-web-editor/src/index.d.ts → src/index.ts} +0 -0
  36. /package/{schema.fr.json → src/schema.fr.json} +0 -0
  37. /package/{schema.json → src/schema.json} +0 -0
@@ -1,336 +0,0 @@
1
- import { _ as _extends } from './index.esm2.js';
2
-
3
- const jsonGenerator = new Blockly.Generator('JSON');
4
- jsonGenerator.PRECEDENCE = 0;
5
- jsonGenerator['generic-scene-block'] = function(block) {
6
- function safeParse(jsonString, defaultValue) {
7
- try {
8
- if (jsonString && jsonString.trim() !== '') {
9
- return JSON.parse(jsonString);
10
- }
11
- } catch (e) {
12
- console.error('JSON parsing error:', e);
13
- }
14
- return defaultValue;
15
- }
16
- const pinsCode = jsonGenerator.valueToCode(block, 'EXECUTE_PINS', jsonGenerator.PRECEDENCE) || 'null';
17
- const metadataCode = jsonGenerator.valueToCode(block, 'METADATA_INPUT', jsonGenerator.PRECEDENCE) || '{}';
18
- const eventsCode = jsonGenerator.valueToCode(block, 'EVENTS_INPUT', jsonGenerator.PRECEDENCE) || '{}';
19
- const pinsData = safeParse(pinsCode, null);
20
- const metadata = safeParse(metadataCode, {});
21
- const events = safeParse(eventsCode, {});
22
- const objectToSerialize = _extends({
23
- type: block.getFieldValue('SCENE_TYPE') || null,
24
- metadata: metadata
25
- }, pinsData !== null ? pinsData : {}, {
26
- events: events
27
- });
28
- const serializedCode = JSON.stringify(objectToSerialize);
29
- return [
30
- serializedCode,
31
- jsonGenerator.PRECEDENCE
32
- ];
33
- };
34
- jsonGenerator['logic_null'] = function(block) {
35
- return [
36
- 'null',
37
- jsonGenerator.PRECEDENCE
38
- ];
39
- };
40
- jsonGenerator['text_multiline'] = function(block) {
41
- const textValue = block.getFieldValue('TEXT');
42
- const code = `${JSON.stringify(textValue)}`;
43
- return [
44
- code,
45
- jsonGenerator.PRECEDENCE
46
- ];
47
- };
48
- jsonGenerator['math_number'] = function(block) {
49
- const code = String(block.getFieldValue('NUM'));
50
- return [
51
- code,
52
- jsonGenerator.PRECEDENCE
53
- ];
54
- };
55
- jsonGenerator['logic_boolean'] = function(block) {
56
- const code = block.getFieldValue('BOOL') === 'TRUE' ? 'true' : 'false';
57
- return [
58
- code,
59
- jsonGenerator.PRECEDENCE
60
- ];
61
- };
62
- jsonGenerator['member'] = function(block) {
63
- const name = block.getFieldValue('MEMBER_NAME');
64
- const value = jsonGenerator.valueToCode(block, 'MEMBER_VALUE', jsonGenerator.PRECEDENCE);
65
- const code = `"${name}": ${value}`;
66
- return [
67
- code,
68
- jsonGenerator.PRECEDENCE
69
- ];
70
- };
71
- jsonGenerator['array-input'] = function(block) {
72
- const value = jsonGenerator.valueToCode(block, 'MEMBER_VALUE', jsonGenerator.PRECEDENCE);
73
- const code = `${value}`;
74
- return [
75
- code,
76
- jsonGenerator.PRECEDENCE
77
- ];
78
- };
79
- jsonGenerator['array'] = function(block) {
80
- const statementMembers = jsonGenerator.customStatementToCode(block, 'MEMBERS');
81
- const code = '[\n' + statementMembers + '\n]';
82
- return [
83
- code,
84
- jsonGenerator.PRECEDENCE
85
- ];
86
- };
87
- jsonGenerator['object'] = function(block) {
88
- const statementMembers = jsonGenerator.customStatementToCode(block, 'MEMBERS');
89
- const code = '{\n' + statementMembers + '\n}';
90
- return [
91
- code,
92
- jsonGenerator.PRECEDENCE
93
- ];
94
- };
95
- jsonGenerator['unknown-format'] = function(block) {
96
- const code = '"unknown-format"';
97
- return [
98
- code,
99
- jsonGenerator.PRECEDENCE
100
- ];
101
- };
102
- jsonGenerator['unknown-pins'] = function(block) {
103
- const code = '"unknown-pins"';
104
- return [
105
- code,
106
- jsonGenerator.PRECEDENCE
107
- ];
108
- };
109
- jsonGenerator['unknown-component'] = function(block) {
110
- const code = '"unknown-component"';
111
- return [
112
- code,
113
- jsonGenerator.PRECEDENCE
114
- ];
115
- };
116
- jsonGenerator.scrub_ = function(block, code, thisOnly) {
117
- const nextBlock = block.nextConnection && block.nextConnection.targetBlock();
118
- if (nextBlock && !thisOnly) {
119
- return code + ',\n' + jsonGenerator.blockToCode(nextBlock);
120
- }
121
- return code;
122
- };
123
- jsonGenerator.generatePin = function(block) {
124
- let code = '{\n';
125
- const elementName = block.type.split('/__PINS__/')[1];
126
- const libraryName = block.type.split('/__PINS__/')[0];
127
- code += ` "library": "${libraryName}",`;
128
- code += `\n "element": "${elementName}",`;
129
- let propertiesCode = '';
130
- let eventCode = '';
131
- let conditionCode = '';
132
- for(let i = 0, input; input = block.inputList[i]; i++){
133
- const inputName = input.name;
134
- const connectedBlock = input.connection && input.connection.targetBlock();
135
- if (connectedBlock) {
136
- if (inputName !== 'pins' && input.type == 3) {
137
- const inputCode = jsonGenerator.customStatementToCode(block, inputName);
138
- if (inputName.includes('__EVENT__/')) {
139
- eventCode += ` "${inputName.split('__EVENT__/')[1]}": [${inputCode}],`;
140
- } else if (inputName.includes('__CONDITION__/')) {
141
- conditionCode += ` "${inputName.split('__CONDITION__/')[1]}": [${inputCode}],`;
142
- } else {
143
- propertiesCode += ` "${inputName}": [${inputCode}],`;
144
- }
145
- } else {
146
- const codeToAdd = getCodeFromBlock(connectedBlock);
147
- const inputCode = jsonGenerator.customStatementToCode(block, inputName);
148
- if (inputName === 'pins') {
149
- code += ` "${inputName}": [${inputCode}],`;
150
- } else if (inputName.includes('__CONDITION__/')) {
151
- conditionCode += ` "${inputName.split('__CONDITION__/')[1].replace(/__EVALUATE$/g, '')}": ${inputCode},`;
152
- } else if (codeToAdd !== 'undefined') {
153
- propertiesCode += ` "${inputName.replace(/__EVALUATE$/g, '')}": ${codeToAdd},`;
154
- }
155
- }
156
- }
157
- }
158
- if (propertiesCode !== '') {
159
- if (propertiesCode.endsWith(',')) {
160
- propertiesCode = propertiesCode.slice(0, -1);
161
- }
162
- code += '\n"properties": {\n' + propertiesCode + '\n },';
163
- }
164
- if (eventCode !== '') {
165
- if (eventCode.endsWith(',')) {
166
- eventCode = eventCode.slice(0, -1);
167
- }
168
- code += '\n"events": {\n' + eventCode + '\n },';
169
- }
170
- if (conditionCode !== '') {
171
- if (conditionCode.endsWith(',')) {
172
- conditionCode = conditionCode.slice(0, -1);
173
- }
174
- code += '\n"conditions": {\n' + conditionCode + '\n },';
175
- }
176
- if (code.endsWith(',')) {
177
- code = code.slice(0, -1);
178
- }
179
- code += '}';
180
- return [
181
- code,
182
- jsonGenerator.PRECEDENCE
183
- ];
184
- };
185
- jsonGenerator.generateComponent = function(block) {
186
- let code = '{\n';
187
- for(let i = 0, input; input = block.inputList[i]; i++){
188
- const inputName = input.name;
189
- const connectedBlock = input.connection && input.connection.targetBlock();
190
- let codeToAdd;
191
- if (connectedBlock) {
192
- if (input.type == 3) {
193
- const code = jsonGenerator.customStatementToCode(block, inputName);
194
- codeToAdd = '[' + code + ']';
195
- } else {
196
- codeToAdd = getCodeFromBlock(connectedBlock);
197
- }
198
- if (codeToAdd !== 'undefined') {
199
- code += ` "${inputName.replace(/__EVALUATE$/g, '')}": ${codeToAdd},`;
200
- }
201
- }
202
- }
203
- if (code.endsWith(',')) {
204
- code = code.slice(0, -1);
205
- }
206
- code += '\n}';
207
- return [
208
- code,
209
- jsonGenerator.PRECEDENCE
210
- ];
211
- };
212
- Blockly.Generator.prototype.blockToCode = function(block) {
213
- if (!block) {
214
- return '';
215
- }
216
- if (isPins(block)) {
217
- return this.generatePin(block);
218
- } else if (isComponent(block)) {
219
- return this.generateComponent(block);
220
- } else if (isSceneBlock(block)) {
221
- return this.generateSceneBlock(block);
222
- }
223
- const func = this[block.type];
224
- if (typeof func === 'function') {
225
- const result = func.call(this, block);
226
- if (Array.isArray(result) && result.length === 2) {
227
- return result;
228
- } else {
229
- console.log('Unexpected result from generator for block type:', block.type, result);
230
- return [
231
- '',
232
- 0
233
- ];
234
- }
235
- }
236
- };
237
- jsonGenerator.customStatementToCode = function(block, inputName) {
238
- let code = '';
239
- let connectedBlock = block.getInputTargetBlock(inputName);
240
- while(connectedBlock){
241
- code += getCodeFromBlock(connectedBlock) + ',';
242
- connectedBlock = connectedBlock.nextConnection && connectedBlock.nextConnection.targetBlock();
243
- }
244
- if (code.endsWith(',')) {
245
- code = code.slice(0, -1);
246
- }
247
- return code;
248
- };
249
- function isPins(block) {
250
- const blockType = block.type;
251
- if (blockType.includes('/__PINS__/')) {
252
- return true;
253
- }
254
- return false;
255
- }
256
- function isComponent(block) {
257
- const blockType = block.type;
258
- if (blockType.includes('/__COMPONENTS__/')) {
259
- return true;
260
- }
261
- return false;
262
- }
263
- function isSceneBlock(block) {
264
- const blockType = block.type;
265
- if (blockType.includes('/__SCENEBLOCK__/')) {
266
- return true;
267
- }
268
- return false;
269
- }
270
- jsonGenerator.generateSceneBlock = function(block) {
271
- function safeParse(jsonString, defaultValue) {
272
- try {
273
- if (jsonString && jsonString.trim() !== '') {
274
- return JSON.parse(jsonString);
275
- }
276
- } catch (e) {
277
- console.error('JSON parsing error:', e);
278
- }
279
- return defaultValue;
280
- }
281
- const pinsCode = jsonGenerator.customStatementToCode(block, 'EXECUTE_PINS', jsonGenerator.PRECEDENCE) || '';
282
- const pinsData = safeParse('[' + pinsCode + ']', null);
283
- const metadata = {};
284
- const properties = {};
285
- block.inputList.forEach(function(input) {
286
- if (input.name !== 'EXECUTE_PINS') {
287
- const isMetadata = input.name.startsWith('metadata--');
288
- const target = isMetadata ? metadata : properties;
289
- const name = isMetadata ? input.name.replace('metadata--', '') : input.name;
290
- const fieldValue = valueToCode(block, input);
291
- if (fieldValue) {
292
- target[name.replace(/__EVALUATE$/g, '')] = safeParse(fieldValue, {});
293
- }
294
- }
295
- });
296
- const element = block.type.split('/__SCENEBLOCK__/')[1];
297
- const library = block.type.split('/__SCENEBLOCK__/')[0];
298
- const objectToSerialize = {
299
- library,
300
- element,
301
- metadata,
302
- properties,
303
- pins: pinsData !== null ? pinsData : []
304
- };
305
- const serializedCode = JSON.stringify(objectToSerialize);
306
- return [
307
- serializedCode,
308
- jsonGenerator.PRECEDENCE
309
- ];
310
- };
311
- function getCodeFromBlock(block) {
312
- let code = '';
313
- if (isPins(block)) {
314
- const pinCode = jsonGenerator.generatePin(block);
315
- code += pinCode[0];
316
- } else if (isComponent(block)) {
317
- const componentCode = jsonGenerator.generateComponent(block);
318
- code += componentCode[0];
319
- } else {
320
- const generalCode = jsonGenerator[block.type](block);
321
- code += generalCode[0];
322
- }
323
- return code;
324
- }
325
- function valueToCode(block, input) {
326
- let result = '';
327
- if (input.type === 3) {
328
- const code = jsonGenerator.customStatementToCode(block, input.name);
329
- result = '[' + code + ']';
330
- } else {
331
- result = jsonGenerator.valueToCode(block, input.name, jsonGenerator.PRECEDENCE);
332
- }
333
- return result;
334
- }
335
-
336
- export { jsonGenerator };
package/index.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./src/index";
package/index.cjs.js DELETED
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var index = require('./index.cjs2.js');
6
-
7
-
8
-
9
- Object.defineProperty(exports, 'EditorElement', {
10
- enumerable: true,
11
- get: function () { return index.EditorElement; }
12
- });