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