simple-circuit-engine 0.0.12 → 0.0.13

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 (51) hide show
  1. package/AGENTS.md +2 -1
  2. package/CLAUDE.md +2 -0
  3. package/dist/core/index.js +83 -73
  4. package/dist/core/setup.d.ts +8 -0
  5. package/dist/core/simulation/behaviors/arithmetic/AdderBehavior.d.ts +28 -0
  6. package/dist/core/simulation/behaviors/arithmetic/ArithmeticBehaviorMixin.d.ts +63 -0
  7. package/dist/core/simulation/behaviors/arithmetic/EightBitAdderBehavior.d.ts +51 -0
  8. package/dist/core/simulation/behaviors/arithmetic/EightBitOnesComplementBehavior.d.ts +29 -0
  9. package/dist/core/simulation/behaviors/arithmetic/HalfAdderBehavior.d.ts +22 -0
  10. package/dist/core/simulation/behaviors/arithmetic/index.d.ts +7 -0
  11. package/dist/core/simulation/behaviors/index.d.ts +4 -0
  12. package/dist/core/simulation/states/arithmetic/AdderState.d.ts +16 -0
  13. package/dist/core/simulation/states/arithmetic/ArithmeticState.d.ts +53 -0
  14. package/dist/core/simulation/states/arithmetic/EightBitAdderState.d.ts +25 -0
  15. package/dist/core/simulation/states/arithmetic/EightBitOnesComplementState.d.ts +18 -0
  16. package/dist/core/simulation/states/arithmetic/HalfAdderState.d.ts +16 -0
  17. package/dist/core/simulation/states/arithmetic/index.d.ts +7 -0
  18. package/dist/core/simulation/states/index.d.ts +5 -0
  19. package/dist/core/simulation/types.d.ts +1 -1
  20. package/dist/core/topology/Component.d.ts +2 -1
  21. package/dist/core/topology/types.d.ts +19 -5
  22. package/dist/{core-Bjta9Y7_.js → core-b6Q8w2sn.js} +1505 -652
  23. package/dist/core-b6Q8w2sn.js.map +1 -0
  24. package/dist/i18n/index.d.ts +882 -0
  25. package/dist/i18n/locales/en.json.d.ts +268 -0
  26. package/dist/i18n/locales/fr.json.d.ts +268 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.js +137 -120
  29. package/dist/scene/CircuitEngine.d.ts +13 -0
  30. package/dist/scene/index.d.ts +1 -1
  31. package/dist/scene/index.js +50 -45
  32. package/dist/scene/setup.d.ts +8 -0
  33. package/dist/scene/shared/AbstractCircuitController.d.ts +6 -0
  34. package/dist/scene/shared/components/arithmetic/AdderVisualFactory.d.ts +54 -0
  35. package/dist/scene/shared/components/arithmetic/EightBitAdderVisualFactory.d.ts +45 -0
  36. package/dist/scene/shared/components/arithmetic/EightBitOnesComplementVisualFactory.d.ts +63 -0
  37. package/dist/scene/shared/components/arithmetic/HalfAdderVisualFactory.d.ts +55 -0
  38. package/dist/scene/shared/components/arithmetic/index.d.ts +4 -0
  39. package/dist/scene/shared/components/index.d.ts +4 -0
  40. package/dist/scene/shared/types.d.ts +0 -2
  41. package/dist/scene/shared/utils/GeometryUtils.d.ts +76 -0
  42. package/dist/scene/static/CircuitController.d.ts +1 -0
  43. package/dist/scene/static/PinTooltipWidget.d.ts +5 -0
  44. package/dist/scene/static/tools/BuildTool.d.ts +4 -0
  45. package/dist/scene/static/tools/ComponentPickerWidget.d.ts +7 -0
  46. package/dist/scene/static/tools/ConfigPanelWidget.d.ts +14 -0
  47. package/dist/{scene-CVsDdySt.js → scene-D4QcWeiq.js} +2487 -1099
  48. package/dist/scene-D4QcWeiq.js.map +1 -0
  49. package/package.json +14 -9
  50. package/dist/core-Bjta9Y7_.js.map +0 -1
  51. package/dist/scene-CVsDdySt.js.map +0 -1
@@ -0,0 +1,882 @@
1
+ import { i18n } from 'i18next';
2
+ /** Namespace used for all simple-circuit-engine translations. */
3
+ export declare const SCE_NS: "sce";
4
+ declare const bundles: {
5
+ readonly en: {
6
+ components: {
7
+ groups: {
8
+ basic: {
9
+ name: string;
10
+ };
11
+ gates: {
12
+ name: string;
13
+ };
14
+ arithmetic: {
15
+ name: string;
16
+ };
17
+ };
18
+ battery: {
19
+ name: string;
20
+ };
21
+ clock: {
22
+ name: string;
23
+ config: {
24
+ fields: {
25
+ startHigh: {
26
+ name: string;
27
+ };
28
+ halfPeriod: {
29
+ name: string;
30
+ };
31
+ };
32
+ };
33
+ };
34
+ label: {
35
+ name: string;
36
+ config: {
37
+ fields: {
38
+ text: {
39
+ name: string;
40
+ };
41
+ size: {
42
+ name: string;
43
+ };
44
+ };
45
+ };
46
+ };
47
+ switch: {
48
+ name: string;
49
+ config: {
50
+ fields: {
51
+ initialState: {
52
+ name: string;
53
+ };
54
+ transitionSpan: {
55
+ name: string;
56
+ };
57
+ size: {
58
+ name: string;
59
+ };
60
+ };
61
+ };
62
+ };
63
+ doubleThrowSwitch: {
64
+ name: string;
65
+ config: {
66
+ fields: {
67
+ initialState: {
68
+ name: string;
69
+ };
70
+ transitionSpan: {
71
+ name: string;
72
+ };
73
+ size: {
74
+ name: string;
75
+ };
76
+ };
77
+ };
78
+ };
79
+ lightbulb: {
80
+ name: string;
81
+ config: {
82
+ fields: {
83
+ transitionSpan: {
84
+ name: string;
85
+ };
86
+ size: {
87
+ name: string;
88
+ };
89
+ };
90
+ };
91
+ };
92
+ rectangleLED: {
93
+ name: string;
94
+ config: {
95
+ fields: {
96
+ transitionSpan: {
97
+ name: string;
98
+ };
99
+ idleColor: {
100
+ name: string;
101
+ };
102
+ activeColor: {
103
+ name: string;
104
+ };
105
+ size: {
106
+ name: string;
107
+ };
108
+ hwRatio: {
109
+ name: string;
110
+ };
111
+ ywRatio: {
112
+ name: string;
113
+ };
114
+ };
115
+ };
116
+ };
117
+ relay: {
118
+ name: string;
119
+ config: {
120
+ fields: {
121
+ activationLogic: {
122
+ name: string;
123
+ };
124
+ transitionSpan: {
125
+ name: string;
126
+ };
127
+ size: {
128
+ name: string;
129
+ };
130
+ initializationOrder: {
131
+ name: string;
132
+ };
133
+ };
134
+ };
135
+ };
136
+ smallLED: {
137
+ name: string;
138
+ config: {
139
+ fields: {
140
+ transitionSpan: {
141
+ name: string;
142
+ };
143
+ idleColor: {
144
+ name: string;
145
+ };
146
+ activeColor: {
147
+ name: string;
148
+ };
149
+ size: {
150
+ name: string;
151
+ };
152
+ ywRatio: {
153
+ name: string;
154
+ };
155
+ };
156
+ };
157
+ };
158
+ inverter: {
159
+ name: string;
160
+ config: {
161
+ fields: {
162
+ defaultLogicFamily: {
163
+ name: string;
164
+ };
165
+ activationLogic: {
166
+ name: string;
167
+ };
168
+ transitionSpan: {
169
+ name: string;
170
+ };
171
+ initializationOrder: {
172
+ name: string;
173
+ };
174
+ };
175
+ };
176
+ };
177
+ nandGate: {
178
+ name: string;
179
+ config: {
180
+ fields: {
181
+ defaultLogicFamily: {
182
+ name: string;
183
+ };
184
+ activationLogic: {
185
+ name: string;
186
+ };
187
+ transitionSpan: {
188
+ name: string;
189
+ };
190
+ initializationOrder: {
191
+ name: string;
192
+ };
193
+ };
194
+ };
195
+ };
196
+ nand4Gate: {
197
+ name: string;
198
+ config: {
199
+ fields: {
200
+ defaultLogicFamily: {
201
+ name: string;
202
+ };
203
+ activationLogic: {
204
+ name: string;
205
+ };
206
+ transitionSpan: {
207
+ name: string;
208
+ };
209
+ initializationOrder: {
210
+ name: string;
211
+ };
212
+ };
213
+ };
214
+ };
215
+ nand8Gate: {
216
+ name: string;
217
+ config: {
218
+ fields: {
219
+ defaultLogicFamily: {
220
+ name: string;
221
+ };
222
+ activationLogic: {
223
+ name: string;
224
+ };
225
+ transitionSpan: {
226
+ name: string;
227
+ };
228
+ initializationOrder: {
229
+ name: string;
230
+ };
231
+ };
232
+ };
233
+ };
234
+ norGate: {
235
+ name: string;
236
+ config: {
237
+ fields: {
238
+ defaultLogicFamily: {
239
+ name: string;
240
+ };
241
+ activationLogic: {
242
+ name: string;
243
+ };
244
+ transitionSpan: {
245
+ name: string;
246
+ };
247
+ initializationOrder: {
248
+ name: string;
249
+ };
250
+ };
251
+ };
252
+ };
253
+ nor4Gate: {
254
+ name: string;
255
+ config: {
256
+ fields: {
257
+ defaultLogicFamily: {
258
+ name: string;
259
+ };
260
+ activationLogic: {
261
+ name: string;
262
+ };
263
+ transitionSpan: {
264
+ name: string;
265
+ };
266
+ initializationOrder: {
267
+ name: string;
268
+ };
269
+ };
270
+ };
271
+ };
272
+ nor8Gate: {
273
+ name: string;
274
+ config: {
275
+ fields: {
276
+ defaultLogicFamily: {
277
+ name: string;
278
+ };
279
+ activationLogic: {
280
+ name: string;
281
+ };
282
+ transitionSpan: {
283
+ name: string;
284
+ };
285
+ initializationOrder: {
286
+ name: string;
287
+ };
288
+ };
289
+ };
290
+ };
291
+ xorGate: {
292
+ name: string;
293
+ config: {
294
+ fields: {
295
+ defaultLogicFamily: {
296
+ name: string;
297
+ };
298
+ activationLogic: {
299
+ name: string;
300
+ };
301
+ transitionSpan: {
302
+ name: string;
303
+ };
304
+ initializationOrder: {
305
+ name: string;
306
+ };
307
+ };
308
+ };
309
+ };
310
+ xor4Gate: {
311
+ name: string;
312
+ config: {
313
+ fields: {
314
+ defaultLogicFamily: {
315
+ name: string;
316
+ };
317
+ activationLogic: {
318
+ name: string;
319
+ };
320
+ transitionSpan: {
321
+ name: string;
322
+ };
323
+ initializationOrder: {
324
+ name: string;
325
+ };
326
+ };
327
+ };
328
+ };
329
+ xor8Gate: {
330
+ name: string;
331
+ config: {
332
+ fields: {
333
+ defaultLogicFamily: {
334
+ name: string;
335
+ };
336
+ activationLogic: {
337
+ name: string;
338
+ };
339
+ transitionSpan: {
340
+ name: string;
341
+ };
342
+ initializationOrder: {
343
+ name: string;
344
+ };
345
+ };
346
+ };
347
+ };
348
+ halfAdder: {
349
+ name: string;
350
+ config: {
351
+ fields: {
352
+ defaultLogicFamily: {
353
+ name: string;
354
+ };
355
+ transitionSpan: {
356
+ name: string;
357
+ };
358
+ initializationOrder: {
359
+ name: string;
360
+ };
361
+ };
362
+ };
363
+ };
364
+ adder: {
365
+ name: string;
366
+ config: {
367
+ fields: {
368
+ defaultLogicFamily: {
369
+ name: string;
370
+ };
371
+ transitionSpan: {
372
+ name: string;
373
+ };
374
+ initializationOrder: {
375
+ name: string;
376
+ };
377
+ };
378
+ };
379
+ };
380
+ eightBitAdder: {
381
+ name: string;
382
+ config: {
383
+ fields: {
384
+ defaultLogicFamily: {
385
+ name: string;
386
+ };
387
+ transitionSpan: {
388
+ name: string;
389
+ };
390
+ initializationOrder: {
391
+ name: string;
392
+ };
393
+ };
394
+ };
395
+ };
396
+ eightBitOnesComplement: {
397
+ name: string;
398
+ config: {
399
+ fields: {
400
+ defaultLogicFamily: {
401
+ name: string;
402
+ };
403
+ transitionSpan: {
404
+ name: string;
405
+ };
406
+ initializationOrder: {
407
+ name: string;
408
+ };
409
+ };
410
+ };
411
+ };
412
+ default: {
413
+ config: {
414
+ fields: {
415
+ color: {
416
+ name: string;
417
+ };
418
+ };
419
+ };
420
+ };
421
+ };
422
+ picker: {
423
+ title: string;
424
+ branchingPoint: string;
425
+ };
426
+ config: {
427
+ title: string;
428
+ };
429
+ };
430
+ readonly fr: {
431
+ components: {
432
+ groups: {
433
+ basic: {
434
+ name: string;
435
+ };
436
+ gates: {
437
+ name: string;
438
+ };
439
+ arithmetic: {
440
+ name: string;
441
+ };
442
+ };
443
+ battery: {
444
+ name: string;
445
+ };
446
+ clock: {
447
+ name: string;
448
+ config: {
449
+ fields: {
450
+ startHigh: {
451
+ name: string;
452
+ };
453
+ halfPeriod: {
454
+ name: string;
455
+ };
456
+ };
457
+ };
458
+ };
459
+ label: {
460
+ name: string;
461
+ config: {
462
+ fields: {
463
+ text: {
464
+ name: string;
465
+ };
466
+ size: {
467
+ name: string;
468
+ };
469
+ };
470
+ };
471
+ };
472
+ switch: {
473
+ name: string;
474
+ config: {
475
+ fields: {
476
+ initialState: {
477
+ name: string;
478
+ };
479
+ transitionSpan: {
480
+ name: string;
481
+ };
482
+ size: {
483
+ name: string;
484
+ };
485
+ };
486
+ };
487
+ };
488
+ doubleThrowSwitch: {
489
+ name: string;
490
+ config: {
491
+ fields: {
492
+ initialState: {
493
+ name: string;
494
+ };
495
+ transitionSpan: {
496
+ name: string;
497
+ };
498
+ size: {
499
+ name: string;
500
+ };
501
+ };
502
+ };
503
+ };
504
+ lightbulb: {
505
+ name: string;
506
+ config: {
507
+ fields: {
508
+ transitionSpan: {
509
+ name: string;
510
+ };
511
+ size: {
512
+ name: string;
513
+ };
514
+ };
515
+ };
516
+ };
517
+ rectangleLED: {
518
+ name: string;
519
+ config: {
520
+ fields: {
521
+ transitionSpan: {
522
+ name: string;
523
+ };
524
+ idleColor: {
525
+ name: string;
526
+ };
527
+ activeColor: {
528
+ name: string;
529
+ };
530
+ size: {
531
+ name: string;
532
+ };
533
+ hwRatio: {
534
+ name: string;
535
+ };
536
+ ywRatio: {
537
+ name: string;
538
+ };
539
+ };
540
+ };
541
+ };
542
+ relay: {
543
+ name: string;
544
+ config: {
545
+ fields: {
546
+ activationLogic: {
547
+ name: string;
548
+ };
549
+ transitionSpan: {
550
+ name: string;
551
+ };
552
+ size: {
553
+ name: string;
554
+ };
555
+ initializationOrder: {
556
+ name: string;
557
+ };
558
+ };
559
+ };
560
+ };
561
+ smallLED: {
562
+ name: string;
563
+ config: {
564
+ fields: {
565
+ transitionSpan: {
566
+ name: string;
567
+ };
568
+ idleColor: {
569
+ name: string;
570
+ };
571
+ activeColor: {
572
+ name: string;
573
+ };
574
+ size: {
575
+ name: string;
576
+ };
577
+ ywRatio: {
578
+ name: string;
579
+ };
580
+ };
581
+ };
582
+ };
583
+ inverter: {
584
+ name: string;
585
+ config: {
586
+ fields: {
587
+ defaultLogicFamily: {
588
+ name: string;
589
+ };
590
+ activationLogic: {
591
+ name: string;
592
+ };
593
+ transitionSpan: {
594
+ name: string;
595
+ };
596
+ initializationOrder: {
597
+ name: string;
598
+ };
599
+ };
600
+ };
601
+ };
602
+ nandGate: {
603
+ name: string;
604
+ config: {
605
+ fields: {
606
+ defaultLogicFamily: {
607
+ name: string;
608
+ };
609
+ activationLogic: {
610
+ name: string;
611
+ };
612
+ transitionSpan: {
613
+ name: string;
614
+ };
615
+ initializationOrder: {
616
+ name: string;
617
+ };
618
+ };
619
+ };
620
+ };
621
+ nand4Gate: {
622
+ name: string;
623
+ config: {
624
+ fields: {
625
+ defaultLogicFamily: {
626
+ name: string;
627
+ };
628
+ activationLogic: {
629
+ name: string;
630
+ };
631
+ transitionSpan: {
632
+ name: string;
633
+ };
634
+ initializationOrder: {
635
+ name: string;
636
+ };
637
+ };
638
+ };
639
+ };
640
+ nand8Gate: {
641
+ name: string;
642
+ config: {
643
+ fields: {
644
+ defaultLogicFamily: {
645
+ name: string;
646
+ };
647
+ activationLogic: {
648
+ name: string;
649
+ };
650
+ transitionSpan: {
651
+ name: string;
652
+ };
653
+ initializationOrder: {
654
+ name: string;
655
+ };
656
+ };
657
+ };
658
+ };
659
+ norGate: {
660
+ name: string;
661
+ config: {
662
+ fields: {
663
+ defaultLogicFamily: {
664
+ name: string;
665
+ };
666
+ activationLogic: {
667
+ name: string;
668
+ };
669
+ transitionSpan: {
670
+ name: string;
671
+ };
672
+ initializationOrder: {
673
+ name: string;
674
+ };
675
+ };
676
+ };
677
+ };
678
+ nor4Gate: {
679
+ name: string;
680
+ config: {
681
+ fields: {
682
+ defaultLogicFamily: {
683
+ name: string;
684
+ };
685
+ activationLogic: {
686
+ name: string;
687
+ };
688
+ transitionSpan: {
689
+ name: string;
690
+ };
691
+ initializationOrder: {
692
+ name: string;
693
+ };
694
+ };
695
+ };
696
+ };
697
+ nor8Gate: {
698
+ name: string;
699
+ config: {
700
+ fields: {
701
+ defaultLogicFamily: {
702
+ name: string;
703
+ };
704
+ activationLogic: {
705
+ name: string;
706
+ };
707
+ transitionSpan: {
708
+ name: string;
709
+ };
710
+ initializationOrder: {
711
+ name: string;
712
+ };
713
+ };
714
+ };
715
+ };
716
+ xorGate: {
717
+ name: string;
718
+ config: {
719
+ fields: {
720
+ defaultLogicFamily: {
721
+ name: string;
722
+ };
723
+ activationLogic: {
724
+ name: string;
725
+ };
726
+ transitionSpan: {
727
+ name: string;
728
+ };
729
+ initializationOrder: {
730
+ name: string;
731
+ };
732
+ };
733
+ };
734
+ };
735
+ xor4Gate: {
736
+ name: string;
737
+ config: {
738
+ fields: {
739
+ defaultLogicFamily: {
740
+ name: string;
741
+ };
742
+ activationLogic: {
743
+ name: string;
744
+ };
745
+ transitionSpan: {
746
+ name: string;
747
+ };
748
+ initializationOrder: {
749
+ name: string;
750
+ };
751
+ };
752
+ };
753
+ };
754
+ xor8Gate: {
755
+ name: string;
756
+ config: {
757
+ fields: {
758
+ defaultLogicFamily: {
759
+ name: string;
760
+ };
761
+ activationLogic: {
762
+ name: string;
763
+ };
764
+ transitionSpan: {
765
+ name: string;
766
+ };
767
+ initializationOrder: {
768
+ name: string;
769
+ };
770
+ };
771
+ };
772
+ };
773
+ halfAdder: {
774
+ name: string;
775
+ config: {
776
+ fields: {
777
+ defaultLogicFamily: {
778
+ name: string;
779
+ };
780
+ transitionSpan: {
781
+ name: string;
782
+ };
783
+ initializationOrder: {
784
+ name: string;
785
+ };
786
+ };
787
+ };
788
+ };
789
+ adder: {
790
+ name: string;
791
+ config: {
792
+ fields: {
793
+ defaultLogicFamily: {
794
+ name: string;
795
+ };
796
+ transitionSpan: {
797
+ name: string;
798
+ };
799
+ initializationOrder: {
800
+ name: string;
801
+ };
802
+ };
803
+ };
804
+ };
805
+ eightBitAdder: {
806
+ name: string;
807
+ config: {
808
+ fields: {
809
+ defaultLogicFamily: {
810
+ name: string;
811
+ };
812
+ transitionSpan: {
813
+ name: string;
814
+ };
815
+ initializationOrder: {
816
+ name: string;
817
+ };
818
+ };
819
+ };
820
+ };
821
+ eightBitOnesComplement: {
822
+ name: string;
823
+ config: {
824
+ fields: {
825
+ defaultLogicFamily: {
826
+ name: string;
827
+ };
828
+ transitionSpan: {
829
+ name: string;
830
+ };
831
+ initializationOrder: {
832
+ name: string;
833
+ };
834
+ };
835
+ };
836
+ };
837
+ default: {
838
+ config: {
839
+ fields: {
840
+ color: {
841
+ name: string;
842
+ };
843
+ };
844
+ };
845
+ };
846
+ };
847
+ picker: {
848
+ title: string;
849
+ branchingPoint: string;
850
+ };
851
+ config: {
852
+ title: string;
853
+ };
854
+ };
855
+ };
856
+ /** Locales shipped with simple-circuit-engine. */
857
+ export type SceLocale = keyof typeof bundles;
858
+ /**
859
+ * Register simple-circuit-engine translations into the consumer's i18next
860
+ * instance under the `sce` namespace.
861
+ *
862
+ * Must be called after the consumer has initialized i18next. Safe to call
863
+ * multiple times; existing bundles in the `sce` namespace are NOT overwritten
864
+ * so consumers can register their own overrides first.
865
+ *
866
+ * @param instance - The consumer's i18next singleton
867
+ */
868
+ export declare function registerSceTranslations(instance: i18n): void;
869
+ /**
870
+ * Translate a key inside the sce namespace using the shared i18next singleton.
871
+ *
872
+ * Uses a direct import of the i18next singleton rather than an injected
873
+ * instance — this avoids module-state duplication when Vite pre-bundles the
874
+ * library's subpath exports separately. i18next is declared as a
875
+ * peerDependency so the consumer and library always share the same module.
876
+ *
877
+ * Internal helper — not re-exported from src/index.ts.
878
+ */
879
+ export declare function sceT(key: string, options?: {
880
+ defaultValue?: string;
881
+ } & Record<string, unknown>): string;
882
+ export {};