@willwade/aac-processors 0.0.8 → 0.0.10

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 (58) hide show
  1. package/README.md +116 -11
  2. package/dist/cli/index.js +87 -0
  3. package/dist/core/analyze.js +1 -0
  4. package/dist/core/baseProcessor.d.ts +3 -0
  5. package/dist/core/fileProcessor.js +1 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +3 -0
  8. package/dist/optional/symbolTools.js +4 -2
  9. package/dist/processors/gridset/helpers.d.ts +3 -1
  10. package/dist/processors/gridset/helpers.js +24 -5
  11. package/dist/processors/gridset/password.d.ts +11 -0
  12. package/dist/processors/gridset/password.js +37 -0
  13. package/dist/processors/gridset/resolver.d.ts +1 -1
  14. package/dist/processors/gridset/resolver.js +8 -4
  15. package/dist/processors/gridset/wordlistHelpers.d.ts +2 -2
  16. package/dist/processors/gridset/wordlistHelpers.js +7 -4
  17. package/dist/processors/gridsetProcessor.d.ts +15 -1
  18. package/dist/processors/gridsetProcessor.js +64 -22
  19. package/dist/processors/index.d.ts +1 -0
  20. package/dist/processors/index.js +5 -2
  21. package/dist/processors/obfProcessor.d.ts +7 -0
  22. package/dist/processors/obfProcessor.js +9 -0
  23. package/dist/processors/snap/helpers.d.ts +2 -0
  24. package/dist/processors/snap/helpers.js +2 -0
  25. package/dist/processors/snapProcessor.d.ts +7 -0
  26. package/dist/processors/snapProcessor.js +9 -0
  27. package/dist/processors/touchchatProcessor.d.ts +7 -0
  28. package/dist/processors/touchchatProcessor.js +9 -0
  29. package/dist/utilities/screenshotConverter.d.ts +69 -0
  30. package/dist/utilities/screenshotConverter.js +453 -0
  31. package/dist/validation/baseValidator.d.ts +80 -0
  32. package/dist/validation/baseValidator.js +160 -0
  33. package/dist/validation/gridsetValidator.d.ts +36 -0
  34. package/dist/validation/gridsetValidator.js +288 -0
  35. package/dist/validation/index.d.ts +13 -0
  36. package/dist/validation/index.js +69 -0
  37. package/dist/validation/obfValidator.d.ts +44 -0
  38. package/dist/validation/obfValidator.js +530 -0
  39. package/dist/validation/snapValidator.d.ts +33 -0
  40. package/dist/validation/snapValidator.js +237 -0
  41. package/dist/validation/touchChatValidator.d.ts +33 -0
  42. package/dist/validation/touchChatValidator.js +229 -0
  43. package/dist/validation/validationTypes.d.ts +64 -0
  44. package/dist/validation/validationTypes.js +15 -0
  45. package/examples/README.md +7 -0
  46. package/examples/demo.js +143 -0
  47. package/examples/obf/aboutme.json +376 -0
  48. package/examples/obf/array.json +6 -0
  49. package/examples/obf/hash.json +4 -0
  50. package/examples/obf/links.obz +0 -0
  51. package/examples/obf/simple.obf +53 -0
  52. package/examples/package-lock.json +1326 -0
  53. package/examples/package.json +10 -0
  54. package/examples/styling-example.ts +316 -0
  55. package/examples/translate.js +39 -0
  56. package/examples/translate_demo.js +254 -0
  57. package/examples/typescript-demo.ts +251 -0
  58. package/package.json +3 -1
@@ -0,0 +1,143 @@
1
+ // AACProcessors Demo: Showcase all engines and features
2
+ const path = require('path');
3
+
4
+ // Import processors
5
+ const { DotProcessor, OpmlProcessor, SnapProcessor, GridsetProcessor, TouchChatProcessor, ApplePanelsProcessor, ObfProcessor } = require('../dist/processors');
6
+
7
+ // Optional: pretty printer
8
+ let prettyPrint;
9
+ try {
10
+ prettyPrint = require('../dist/viewer/prettyPrint');
11
+ } catch {}
12
+
13
+ // Optional: symbol tools
14
+ let symbolTools;
15
+ try {
16
+ symbolTools = require('../dist/optional/symbolTools');
17
+ } catch {}
18
+
19
+ // --- DotProcessor ---
20
+ console.log('\n=== DOT Example ===');
21
+ try {
22
+ const dotFile = path.join(__dirname, 'example.dot');
23
+ const dotProcessor = new DotProcessor();
24
+ const dotTree = dotProcessor.loadIntoTree(dotFile);
25
+ console.log('DOT tree:', dotTree);
26
+ console.log('DOT texts:', dotProcessor.extractTexts ? dotProcessor.extractTexts(dotFile) : '(no extractTexts)');
27
+ if (prettyPrint) prettyPrint.printTree(dotTree, { showNavigation: true });
28
+ } catch (e) {
29
+ console.warn('DOT demo error:', e.message);
30
+ }
31
+
32
+ // --- OPMLProcessor ---
33
+ console.log('\n=== OPML Example ===');
34
+ try {
35
+ const opmlFile = path.join(__dirname, 'example.opml');
36
+ const opmlProcessor = new OpmlProcessor();
37
+ const opmlTree = opmlProcessor.loadIntoTree(opmlFile);
38
+ console.log('OPML tree:', opmlTree);
39
+ console.log('OPML texts:', opmlProcessor.extractTexts ? opmlProcessor.extractTexts(opmlFile) : '(no extractTexts)');
40
+ if (prettyPrint) prettyPrint.printTree(opmlTree, { showNavigation: true });
41
+ } catch (e) {
42
+ console.warn('OPML demo error:', e.message);
43
+ }
44
+
45
+
46
+
47
+ // --- SnapProcessor (SPB) ---
48
+ console.log('\n=== Snap Example (.spb) ===');
49
+ try {
50
+ const spbFile = path.join(__dirname, 'example.spb');
51
+ const snapProcessor = new SnapProcessor();
52
+ const snapTree = snapProcessor.loadIntoTree(spbFile);
53
+ console.log('Snap tree (.spb):', snapTree);
54
+ console.log('Snap texts (.spb):', snapProcessor.extractTexts(spbFile));
55
+ if (prettyPrint) prettyPrint.printTree(snapTree, { showNavigation: true });
56
+ } catch (e) {
57
+ console.warn('Snap demo error (.spb):', e.message);
58
+ }
59
+
60
+ // // --- SnapProcessor (SPS) ---
61
+ // console.log('\n=== Snap Example (.sps) ===');
62
+ // try {
63
+ // const spsFile = path.join(__dirname, 'example.sps');
64
+ // const snapProcessor = new SnapProcessor();
65
+ // const snapTree = snapProcessor.loadIntoTree(spsFile);
66
+ // console.log('Snap tree (.sps):', snapTree);
67
+ // console.log('Snap texts (.sps):', snapProcessor.extractTexts(spsFile));
68
+ // if (prettyPrint) prettyPrint.printTree(snapTree, { showNavigation: true });
69
+ // } catch (e) {
70
+ // console.warn('Snap demo error (.sps):', e.message);
71
+ // }
72
+
73
+ // --- GridsetProcessor ---
74
+ console.log('\n=== Gridset Example ===');
75
+ try {
76
+ const gridsetFile = path.join(__dirname, 'example.gridset');
77
+ const gridsetProcessor = new GridsetProcessor();
78
+ const gridTree = gridsetProcessor.loadIntoTree(gridsetFile);
79
+ console.log('Gridset tree:', gridTree);
80
+ console.log('Gridset texts:', gridsetProcessor.extractTexts(gridsetFile));
81
+ if (prettyPrint) prettyPrint.printTree(gridTree, { showNavigation: true });
82
+ } catch (e) {
83
+ console.warn('Gridset demo error:', e.message);
84
+ }
85
+
86
+ // --- TouchChatProcessor ---
87
+ console.log('\n=== TouchChat Example ===');
88
+ try {
89
+ const touchchatFile = path.join(__dirname, 'example.ce');
90
+ const touchchatProcessor = new TouchChatProcessor();
91
+ const tcTree = touchchatProcessor.loadIntoTree(touchchatFile);
92
+ console.log('TouchChat tree:', tcTree);
93
+ console.log('TouchChat texts:', touchchatProcessor.extractTexts(touchchatFile));
94
+ if (prettyPrint) prettyPrint.printTree(tcTree, { showNavigation: true });
95
+ } catch (e) {
96
+ console.warn('TouchChat demo error:', e.message);
97
+ }
98
+
99
+ // --- OBF/OBZ Processor ---
100
+ console.log('\n=== OBF/OBZ Example ===');
101
+ try {
102
+ // Use ObfProcessor from dist, matching others
103
+ const obfProcessor = new ObfProcessor();
104
+ const obzFile = path.join(__dirname, 'example.obz');
105
+ // If loadIntoTree is async, use then/catch. If not, call directly.
106
+ let obTree;
107
+ try {
108
+ obTree = obfProcessor.loadIntoTree(obzFile);
109
+ console.log('OBZ tree:', obTree);
110
+ // Try extractTexts if available
111
+ if (obfProcessor.extractTexts) {
112
+ try {
113
+ const texts = obfProcessor.extractTexts(obzFile);
114
+ console.log('OBZ texts:', texts);
115
+ } catch (e) {
116
+ console.warn('OBZ extractTexts error:', e.message);
117
+ }
118
+ }
119
+ if (prettyPrint) prettyPrint.printTree(obTree, { showNavigation: true });
120
+ console.log('\nDemo complete.');
121
+ } catch (e) {
122
+ console.warn('OBZ demo error:', e.message);
123
+ console.log('\nDemo complete.');
124
+ }
125
+ // Return here so the rest of the demo waits for async
126
+ return;
127
+ } catch (e) {
128
+ console.warn('OBZ demo error:', e.message);
129
+ }
130
+
131
+ // --- ApplePanelsProcessor (if implemented) ---
132
+ // console.log('\n=== Apple Panels Example ===');
133
+ // try {
134
+ // const applePanelsFile = path.join(__dirname, 'example.ascconfig');
135
+ // const applePanelsProcessor = new ApplePanelsProcessor();
136
+ // const apTree = applePanelsProcessor.loadIntoTree(applePanelsFile);
137
+ // console.log('Apple Panels tree:', apTree);
138
+ // if (prettyPrint) prettyPrint.printTree(apTree, { showNavigation: true });
139
+ // } catch (e) {
140
+ // console.warn('Apple Panels demo error:', e.message);
141
+ // }
142
+
143
+ console.log('\nDemo complete.');
@@ -0,0 +1,376 @@
1
+ {
2
+ "id": "aboutme",
3
+ "format": "open-board-0.1",
4
+ "name": "CommuniKate About Me",
5
+ "license": {
6
+ "type": "CC-By",
7
+ "copyright_notice_url": "http://creativecommons.org/licenses/by/3.0/",
8
+ "author_name": "Kate McCallum",
9
+ "author_url": "https://twitter.com/KateMcCallumuk"
10
+ },
11
+ "buttons": [
12
+ {
13
+ "label": "Top Page",
14
+ "load_board": {
15
+ "id": "page1",
16
+ "path": "boards/page1.obf"
17
+ },
18
+ "id": 0,
19
+ "border_color": "#444",
20
+ "background_color": "#ffff32",
21
+ "image_id": 0
22
+ },
23
+ {
24
+ "label": "Name",
25
+ "id": 1,
26
+ "border_color": "#444",
27
+ "background_color": "#c0c0c0",
28
+ "image_id": 1
29
+ },
30
+ {
31
+ "label": "I live in...",
32
+ "id": 2,
33
+ "border_color": "#444",
34
+ "background_color": "#c0c0c0",
35
+ "image_id": 2
36
+ },
37
+ {
38
+ "label": "Birthday...",
39
+ "id": 3,
40
+ "border_color": "#444",
41
+ "background_color": "#c0c0c0",
42
+ "image_id": 3
43
+ },
44
+ {
45
+ "label": "age...",
46
+ "id": 4,
47
+ "border_color": "#444",
48
+ "background_color": "#c0c0c0",
49
+ "image_id": 4
50
+ },
51
+ {
52
+ "label": "I live with...",
53
+ "id": 5,
54
+ "border_color": "#444",
55
+ "background_color": "#c0c0c0",
56
+ "image_id": 5
57
+ },
58
+ {
59
+ "label": "pet.. ",
60
+ "id": 6,
61
+ "border_color": "#444",
62
+ "background_color": "#c0c0c0",
63
+ "image_id": 6
64
+ },
65
+ {
66
+ "label": "School college...",
67
+ "id": 7,
68
+ "border_color": "#444",
69
+ "background_color": "#c0c0c0",
70
+ "image_id": 7
71
+ },
72
+ {
73
+ "label": "email..",
74
+ "id": 8,
75
+ "border_color": "#444",
76
+ "background_color": "#c0c0c0",
77
+ "image_id": 8
78
+ },
79
+ {
80
+ "label": "work...",
81
+ "id": 9,
82
+ "border_color": "#444",
83
+ "background_color": "#c0c0c0",
84
+ "image_id": 9
85
+ },
86
+ {
87
+ "label": "communication aid..",
88
+ "id": 10,
89
+ "border_color": "#444",
90
+ "background_color": "#c0c0c0",
91
+ "image_id": 10
92
+ },
93
+ {
94
+ "label": "music..",
95
+ "id": 11,
96
+ "border_color": "#444",
97
+ "background_color": "#c0c0c0",
98
+ "image_id": 11
99
+ },
100
+ {
101
+ "label": "film..",
102
+ "id": 12,
103
+ "border_color": "#444",
104
+ "background_color": "#c0c0c0",
105
+ "image_id": 12
106
+ },
107
+ {
108
+ "label": "hobby..",
109
+ "id": 13,
110
+ "border_color": "#444",
111
+ "background_color": "#c0c0c0",
112
+ "image_id": 13
113
+ },
114
+ {
115
+ "label": "tv...",
116
+ "id": 14,
117
+ "border_color": "#444",
118
+ "background_color": "#c0c0c0",
119
+ "image_id": 14
120
+ },
121
+ {
122
+ "label": "disability...",
123
+ "id": 15,
124
+ "border_color": "#444",
125
+ "background_color": "#c0c0c0",
126
+ "image_id": 15
127
+ },
128
+ {
129
+ "label": "mobile...",
130
+ "id": 16,
131
+ "border_color": "#444",
132
+ "background_color": "#c0c0c0",
133
+ "image_id": 16
134
+ },
135
+ {
136
+ "label": "About You",
137
+ "load_board": {
138
+ "id": "aboutyou",
139
+ "path": "boards/aboutyou.obf"
140
+ },
141
+ "id": 17,
142
+ "border_color": "rgb(255, 255, 0)",
143
+ "background_color": "rgba(120, 113, 255, 0.5)",
144
+ "image_id": 17
145
+ }
146
+ ],
147
+ "images": [
148
+ {
149
+ "id": 0,
150
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/communication aid 2.svg",
151
+ "content_type": "image/svg",
152
+ "license": {
153
+ "type": "CC BY-SA",
154
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
155
+ "source_url": null,
156
+ "author_name": "Paxtoncrafts Charitable Trust ",
157
+ "author_url": null
158
+ }
159
+ },
160
+ {
161
+ "id": 1,
162
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/sclera/name.png",
163
+ "content_type": "image/png",
164
+ "license": {
165
+ "type": "CC BY-NC",
166
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-nc/2.0/",
167
+ "source_url": null,
168
+ "author_name": "Sclera",
169
+ "author_url": null
170
+ }
171
+ },
172
+ {
173
+ "id": 2,
174
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/chicken live.svg",
175
+ "content_type": "image/svg",
176
+ "license": {
177
+ "type": "CC BY-SA",
178
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
179
+ "source_url": null,
180
+ "author_name": "Paxtoncrafts Charitable Trust ",
181
+ "author_url": null
182
+ }
183
+ },
184
+ {
185
+ "id": 3,
186
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/birthday cake.svg",
187
+ "content_type": "image/svg",
188
+ "license": {
189
+ "type": "CC BY-SA",
190
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
191
+ "source_url": null,
192
+ "author_name": "Paxtoncrafts Charitable Trust ",
193
+ "author_url": null
194
+ }
195
+ },
196
+ {
197
+ "id": 4,
198
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/sclera/Age 16+.png",
199
+ "content_type": "image/png",
200
+ "license": {
201
+ "type": "CC BY-NC",
202
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-nc/2.0/",
203
+ "source_url": null,
204
+ "author_name": "Sclera",
205
+ "author_url": null
206
+ }
207
+ },
208
+ {
209
+ "id": 5,
210
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/chicken live.svg",
211
+ "content_type": "image/svg",
212
+ "license": {
213
+ "type": "CC BY-SA",
214
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
215
+ "source_url": null,
216
+ "author_name": "Paxtoncrafts Charitable Trust ",
217
+ "author_url": null
218
+ }
219
+ },
220
+ {
221
+ "id": 6,
222
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/pet brush.svg",
223
+ "content_type": "image/svg",
224
+ "license": {
225
+ "type": "CC BY-SA",
226
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
227
+ "source_url": null,
228
+ "author_name": "Paxtoncrafts Charitable Trust ",
229
+ "author_url": null
230
+ }
231
+ },
232
+ {
233
+ "id": 7,
234
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/school.svg",
235
+ "content_type": "image/svg",
236
+ "license": {
237
+ "type": "CC BY-SA",
238
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
239
+ "source_url": null,
240
+ "author_name": "Paxtoncrafts Charitable Trust ",
241
+ "author_url": null
242
+ }
243
+ },
244
+ {
245
+ "id": 8,
246
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/email attachment.svg",
247
+ "content_type": "image/svg",
248
+ "license": {
249
+ "type": "CC BY-SA",
250
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
251
+ "source_url": null,
252
+ "author_name": "Paxtoncrafts Charitable Trust ",
253
+ "author_url": null
254
+ }
255
+ },
256
+ {
257
+ "id": 9,
258
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/work , to.svg",
259
+ "content_type": "image/svg",
260
+ "license": {
261
+ "type": "CC BY-SA",
262
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
263
+ "source_url": null,
264
+ "author_name": "Paxtoncrafts Charitable Trust ",
265
+ "author_url": null
266
+ }
267
+ },
268
+ {
269
+ "id": 10,
270
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/communication aid 2.svg",
271
+ "content_type": "image/svg",
272
+ "license": {
273
+ "type": "CC BY-SA",
274
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
275
+ "source_url": null,
276
+ "author_name": "Paxtoncrafts Charitable Trust ",
277
+ "author_url": null
278
+ }
279
+ },
280
+ {
281
+ "id": 11,
282
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/music class.svg",
283
+ "content_type": "image/svg",
284
+ "license": {
285
+ "type": "CC BY-SA",
286
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
287
+ "source_url": null,
288
+ "author_name": "Paxtoncrafts Charitable Trust ",
289
+ "author_url": null
290
+ }
291
+ },
292
+ {
293
+ "id": 12,
294
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/sclera/film roll film.png",
295
+ "content_type": "image/png",
296
+ "license": {
297
+ "type": "CC BY-NC",
298
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-nc/2.0/",
299
+ "source_url": null,
300
+ "author_name": "Sclera",
301
+ "author_url": null
302
+ }
303
+ },
304
+ {
305
+ "id": 13,
306
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/arasaac/hobby-horses.png",
307
+ "content_type": "image/png",
308
+ "license": {
309
+ "type": "CC BY-NC-SA",
310
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-nc-sa/3.0/",
311
+ "source_url": null,
312
+ "author_name": "Sergio Palao",
313
+ "author_url": null
314
+ }
315
+ },
316
+ {
317
+ "id": 14,
318
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/change tv channel , to.svg",
319
+ "content_type": "image/svg",
320
+ "license": {
321
+ "type": "CC BY-SA",
322
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
323
+ "source_url": null,
324
+ "author_name": "Paxtoncrafts Charitable Trust ",
325
+ "author_url": null
326
+ }
327
+ },
328
+ {
329
+ "id": 15,
330
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/arasaac/movement disability.png",
331
+ "content_type": "image/png",
332
+ "license": {
333
+ "type": "CC BY-NC-SA",
334
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-nc-sa/3.0/",
335
+ "source_url": null,
336
+ "author_name": "Sergio Palao",
337
+ "author_url": null
338
+ }
339
+ },
340
+ {
341
+ "id": 16,
342
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/mulberry/mobile phone silent.svg",
343
+ "content_type": "image/svg",
344
+ "license": {
345
+ "type": "CC BY-SA",
346
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-sa/2.0/uk",
347
+ "source_url": null,
348
+ "author_name": "Paxtoncrafts Charitable Trust ",
349
+ "author_url": null
350
+ }
351
+ },
352
+ {
353
+ "id": 17,
354
+ "url": "https://s3.amazonaws.com/opensymbols/libraries/arasaac/to forget about something.png",
355
+ "content_type": "image/png",
356
+ "license": {
357
+ "type": "CC BY-NC-SA",
358
+ "copyright_notice_url": "http://creativecommons.org/licenses/by-nc-sa/3.0/",
359
+ "source_url": null,
360
+ "author_name": "Sergio Palao",
361
+ "author_url": null
362
+ }
363
+ }
364
+ ],
365
+ "sounds": [],
366
+ "grid": {
367
+ "rows": 4,
368
+ "columns": 5,
369
+ "order": [
370
+ [0, 1, 2, 3, 4],
371
+ [5, 6, 7, 8, 9],
372
+ [10, 11, 12, 13, 14],
373
+ [15, 16, 17, null, null]
374
+ ]
375
+ }
376
+ }
@@ -0,0 +1,6 @@
1
+ [
2
+ {
3
+ "a": 1,
4
+ "b": 2
5
+ }
6
+ ]
@@ -0,0 +1,4 @@
1
+ {
2
+ "a": 1,
3
+ "b": 2
4
+ }
Binary file
@@ -0,0 +1,53 @@
1
+ {
2
+ "format": "open-board-0.1",
3
+ "id": "inline_images",
4
+ "locale": "en",
5
+ "name": "Simple Images Board",
6
+ "description_html": "This is an .obf file with images included as data attributes within the file. It also includes some simple styling.",
7
+ "grid": {
8
+ "rows": 2,
9
+ "columns": 2,
10
+ "order": [
11
+ [1, null],
12
+ [null, 2]
13
+ ]
14
+ },
15
+ "buttons": [
16
+ {
17
+ "id": 1,
18
+ "label": "kids",
19
+ "vocalization": "children",
20
+ "ext_speaker_best": true,
21
+ "image_id": "12345",
22
+ "background_color": "rgb(255, 255, 255)",
23
+ "border_color": "rgba(150, 150, 150, 0.5)"
24
+ },
25
+ {
26
+ "id": 2,
27
+ "label": "cat",
28
+ "vocalization": "feline",
29
+ "image_id": 119,
30
+ "background_color": "rgba(0, 255, 0, 0.5)",
31
+ "border_color": "rgb(150, 150, 150)"
32
+ }
33
+ ],
34
+ "images": [
35
+
36
+ {
37
+ "id":"12345",
38
+ "width":100,
39
+ "height":100,
40
+ "url":"https://d18vdu4p71yql0.cloudfront.net/libraries/noun-project/No-09d75d7313.svg",
41
+ "data":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjEwMHB4IiBoZWlnaHQ9IjEwMHB4IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAwIDEwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBzdHlsZT0iZmlsbDojMDEwMTAxOyIgZD0iTTUwLDBDMjIuMzg4LDAsMCwyMi4zODgsMCw1MHMyMi4zODgsNTAsNTAsNTBzNTAtMjIuMzg4LDUwLTUwUzc3LjYxMiwwLDUwLDB6IE01MCwxMi41ICBjOC4wOTQsMCwxNS41MzksMi42MzcsMjEuNjY4LDcuMDA3TDE5LjQ5NCw3MS42NTVDMTUuMTI1LDY1LjUyNywxMi41LDU4LjA4MSwxMi41LDUwQzEyLjUsMjkuMzIxLDI5LjMyMSwxMi41LDUwLDEyLjV6IE01MCw4Ny41ICBjLTguMDk0LDAtMTUuNTM5LTIuNjM3LTIxLjY2OC03LjAwN2w1Mi4xNzQtNTIuMTQ4Qzg0Ljg3NSwzNC40NzMsODcuNSw0MS45MTksODcuNSw1MEM4Ny41LDcwLjY3OSw3MC42NzksODcuNSw1MCw4Ny41eiIvPgo8L3N2Zz4K",
42
+ "content_type":"image/svg+xml"
43
+ },
44
+ {
45
+ "id":119,
46
+ "width":100,
47
+ "height":100,
48
+ "url":"https://d18vdu4p71yql0.cloudfront.net/libraries/noun-project/No-09d75d7313.svg",
49
+ "content_type":"image/svg+xml"
50
+ }
51
+ ],
52
+ "sounds": []
53
+ }