@tscircuit/pcb-viewer 1.10.8 → 1.10.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.
package/dist/index.js CHANGED
@@ -408,20 +408,6 @@ function _ts_generator(thisArg, body) {
408
408
  };
409
409
  }
410
410
  }
411
- function _ts_values(o) {
412
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
413
- if (m) return m.call(o);
414
- if (o && typeof o.length === "number") return {
415
- next: function() {
416
- if (o && i >= o.length) o = void 0;
417
- return {
418
- value: o && o[i++],
419
- done: !o
420
- };
421
- }
422
- };
423
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
424
- }
425
411
  var _loop = function(letter) {
426
412
  lineAlphabet[letter] = [];
427
413
  var segs = svgAlphabet[letter].split("M").slice(1).map(function(seg) {
@@ -2953,1048 +2939,25 @@ var require_lib = __commonJS({
2953
2939
  });
2954
2940
  });
2955
2941
  } else {
2956
- measure = measure || this.origin.measure;
2957
- each(measures[measure], function(units, system) {
2958
- if (system == "_anchors") return false;
2959
- possibilities = possibilities.concat(keys(units));
2960
- });
2961
- }
2962
- return possibilities;
2963
- };
2964
- Converter.prototype.measures = function() {
2965
- return keys(measures);
2966
- };
2967
- convert = function convert(value) {
2968
- return new Converter(value);
2969
- };
2970
- module2.exports = convert;
2971
- }
2972
- });
2973
- // node_modules/parsel-js/dist/parsel.min.cjs
2974
- var require_parsel_min = __commonJS({
2975
- "node_modules/parsel-js/dist/parsel.min.cjs": function(exports2) {
2976
- "use strict";
2977
- Object.defineProperty(exports2, "__esModule", {
2978
- value: true
2979
- });
2980
- var e = {
2981
- attribute: RegExp("\\[\\s*(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)\\s*(?:(?<operator>\\W?=)\\s*(?<value>.+?)\\s*(\\s(?<caseSensitive>[iIsS]))?\\s*)?\\]", "gu"),
2982
- id: RegExp("#(?<name>[-\\w\\P{ASCII}]+)", "gu"),
2983
- class: RegExp("\\.(?<name>[-\\w\\P{ASCII}]+)", "gu"),
2984
- comma: /\s*,\s*/g,
2985
- combinator: /\s*[\s>+~]\s*/g,
2986
- "pseudo-element": RegExp("::(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>\xb6*)\\))?", "gu"),
2987
- "pseudo-class": RegExp(":(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>\xb6*)\\))?", "gu"),
2988
- universal: RegExp("(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?\\*", "gu"),
2989
- type: RegExp("(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)", "gu")
2990
- };
2991
- var t = /* @__PURE__ */ new Set([
2992
- "combinator",
2993
- "comma"
2994
- ]);
2995
- var n = /* @__PURE__ */ new Set([
2996
- "not",
2997
- "is",
2998
- "where",
2999
- "has",
3000
- "matches",
3001
- "-moz-any",
3002
- "-webkit-any",
3003
- "nth-child",
3004
- "nth-last-child"
3005
- ]);
3006
- var s = RegExp("(?<index>[\\dn+-]+)\\s+of\\s+(?<subtree>.+)");
3007
- var o = {
3008
- "nth-child": s,
3009
- "nth-last-child": s
3010
- };
3011
- var r = function(t2) {
3012
- switch(t2){
3013
- case "pseudo-element":
3014
- case "pseudo-class":
3015
- return new RegExp(e[t2].source.replace("(?<argument>\xb6*)", "(?<argument>.*)"), "gu");
3016
- default:
3017
- return e[t2];
3018
- }
3019
- };
3020
- function c(e2, t2) {
3021
- var n2 = 0, s2 = "";
3022
- for(; t2 < e2.length; t2++){
3023
- var o2 = e2[t2];
3024
- switch(o2){
3025
- case "(":
3026
- ++n2;
3027
- break;
3028
- case ")":
3029
- --n2;
3030
- }
3031
- if (s2 += o2, 0 === n2) return s2;
3032
- }
3033
- return s2;
3034
- }
3035
- function i(n2) {
3036
- var s2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e;
3037
- if (!n2) return [];
3038
- var o2 = [
3039
- n2
3040
- ];
3041
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
3042
- try {
3043
- for(var _iterator = Object.entries(s2)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
3044
- var _step_value = _sliced_to_array(_step.value, 2), e2 = _step_value[0], t2 = _step_value[1];
3045
- for(var n3 = 0; n3 < o2.length; n3++){
3046
- var _o2;
3047
- var s3 = o2[n3];
3048
- if ("string" != typeof s3) continue;
3049
- t2.lastIndex = 0;
3050
- var r3 = t2.exec(s3);
3051
- if (!r3) continue;
3052
- var c2 = r3.index - 1, i2 = [], a2 = r3[0], l2 = s3.slice(0, c2 + 1);
3053
- l2 && i2.push(l2), i2.push(_object_spread_props(_object_spread({}, r3.groups), {
3054
- type: e2,
3055
- content: a2
3056
- }));
3057
- var u2 = s3.slice(c2 + a2.length + 1);
3058
- u2 && i2.push(u2), (_o2 = o2).splice.apply(_o2, [
3059
- n3,
3060
- 1
3061
- ].concat(_to_consumable_array(i2)));
3062
- }
3063
- }
3064
- } catch (err) {
3065
- _didIteratorError = true;
3066
- _iteratorError = err;
3067
- } finally{
3068
- try {
3069
- if (!_iteratorNormalCompletion && _iterator.return != null) {
3070
- _iterator.return();
3071
- }
3072
- } finally{
3073
- if (_didIteratorError) {
3074
- throw _iteratorError;
3075
- }
3076
- }
3077
- }
3078
- var r2 = 0;
3079
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
3080
- try {
3081
- for(var _iterator1 = o2[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
3082
- var e21 = _step1.value;
3083
- switch(typeof e21 === "undefined" ? "undefined" : _type_of(e21)){
3084
- case "string":
3085
- throw new Error("Unexpected sequence ".concat(e21, " found at index ").concat(r2));
3086
- case "object":
3087
- r2 += e21.content.length, e21.pos = [
3088
- r2 - e21.content.length,
3089
- r2
3090
- ], t.has(e21.type) && (e21.content = e21.content.trim() || " ");
3091
- }
3092
- }
3093
- } catch (err) {
3094
- _didIteratorError1 = true;
3095
- _iteratorError1 = err;
3096
- } finally{
3097
- try {
3098
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
3099
- _iterator1.return();
3100
- }
3101
- } finally{
3102
- if (_didIteratorError1) {
3103
- throw _iteratorError1;
3104
- }
3105
- }
3106
- }
3107
- return o2;
3108
- }
3109
- var a = /(['"])([^\\\n]+?)\1/g;
3110
- var l = /\\./g;
3111
- function u(t2) {
3112
- var n2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e;
3113
- if ("" === (t2 = t2.trim())) return [];
3114
- var s2 = [];
3115
- t2 = (t2 = t2.replace(l, function(e2, t3) {
3116
- return s2.push({
3117
- value: e2,
3118
- offset: t3
3119
- }), "".repeat(e2.length);
3120
- })).replace(a, function(e2, t3, n3, o3) {
3121
- return s2.push({
3122
- value: e2,
3123
- offset: o3
3124
- }), "".concat(t3).concat("".repeat(n3.length)).concat(t3);
3125
- });
3126
- {
3127
- var e2, n3 = 0;
3128
- for(; (e2 = t2.indexOf("(", n3)) > -1;){
3129
- var o3 = c(t2, e2);
3130
- s2.push({
3131
- value: o3,
3132
- offset: e2
3133
- }), t2 = "".concat(t2.substring(0, e2), "(").concat("\xb6".repeat(o3.length - 2), ")").concat(t2.substring(e2 + o3.length)), n3 = e2 + o3.length;
3134
- }
3135
- }
3136
- var o2 = i(t2, n2), u2 = /* @__PURE__ */ new Set();
3137
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined, _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
3138
- try {
3139
- for(var _iterator = s2.reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true){
3140
- var e21 = _step.value;
3141
- try {
3142
- for(var _iterator1 = o2[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true){
3143
- var t3 = _step1.value;
3144
- var n31 = e21.offset, s3 = e21.value;
3145
- if (!(t3.pos[0] <= n31 && n31 + s3.length <= t3.pos[1])) continue;
3146
- var o31 = t3.content, r2 = n31 - t3.pos[0];
3147
- t3.content = o31.slice(0, r2) + s3 + o31.slice(r2 + s3.length), t3.content !== o31 && u2.add(t3);
3148
- }
3149
- } catch (err) {
3150
- _didIteratorError = true;
3151
- _iteratorError = err;
3152
- } finally{
3153
- try {
3154
- if (!_iteratorNormalCompletion && _iterator1.return != null) {
3155
- _iterator1.return();
3156
- }
3157
- } finally{
3158
- if (_didIteratorError) {
3159
- throw _iteratorError;
3160
- }
3161
- }
3162
- }
3163
- }
3164
- } catch (err) {
3165
- _didIteratorError1 = true;
3166
- _iteratorError1 = err;
3167
- } finally{
3168
- try {
3169
- if (!_iteratorNormalCompletion1 && _iterator.return != null) {
3170
- _iterator.return();
3171
- }
3172
- } finally{
3173
- if (_didIteratorError1) {
3174
- throw _iteratorError1;
3175
- }
3176
- }
3177
- }
3178
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
3179
- try {
3180
- for(var _iterator2 = u2[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
3181
- var e22 = _step2.value;
3182
- var t31 = r(e22.type);
3183
- if (!t31) throw new Error("Unknown token type: ".concat(e22.type));
3184
- t31.lastIndex = 0;
3185
- var n32 = t31.exec(e22.content);
3186
- if (!n32) throw new Error("Unable to parse content for ".concat(e22.type, ": ").concat(e22.content));
3187
- Object.assign(e22, n32.groups);
3188
- }
3189
- } catch (err) {
3190
- _didIteratorError2 = true;
3191
- _iteratorError2 = err;
3192
- } finally{
3193
- try {
3194
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
3195
- _iterator2.return();
3196
- }
3197
- } finally{
3198
- if (_didIteratorError2) {
3199
- throw _iteratorError2;
3200
- }
3201
- }
3202
- }
3203
- return o2;
3204
- }
3205
- function p(e2) {
3206
- var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, tmp = _ref.list, t2 = tmp === void 0 ? true : tmp;
3207
- if (t2 && e2.find(function(e3) {
3208
- return "comma" === e3.type;
3209
- })) {
3210
- var t3 = [], n2 = [];
3211
- for(var s2 = 0; s2 < e2.length; s2++)if ("comma" === e2[s2].type) {
3212
- if (0 === n2.length) throw new Error("Incorrect comma at " + s2);
3213
- t3.push(p(n2, {
3214
- list: false
3215
- })), n2.length = 0;
3216
- } else n2.push(e2[s2]);
3217
- if (0 === n2.length) throw new Error("Trailing comma");
3218
- return t3.push(p(n2, {
3219
- list: false
3220
- })), {
3221
- type: "list",
3222
- list: t3
3223
- };
3224
- }
3225
- for(var t31 = e2.length - 1; t31 >= 0; t31--){
3226
- var n21 = e2[t31];
3227
- if ("combinator" === n21.type) {
3228
- var s21 = e2.slice(0, t31), o2 = e2.slice(t31 + 1);
3229
- return {
3230
- type: "complex",
3231
- combinator: n21.content,
3232
- left: p(s21),
3233
- right: p(o2)
3234
- };
3235
- }
3236
- }
3237
- switch(e2.length){
3238
- case 0:
3239
- throw new Error("Could not build AST.");
3240
- case 1:
3241
- return e2[0];
3242
- default:
3243
- return {
3244
- type: "compound",
3245
- list: _to_consumable_array(e2)
3246
- };
3247
- }
3248
- }
3249
- function f(e2, t2) {
3250
- var _, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, t3, err;
3251
- return _ts_generator(this, function(_state) {
3252
- switch(_state.label){
3253
- case 0:
3254
- _ = e2.type;
3255
- switch(_){
3256
- case "list":
3257
- return [
3258
- 3,
3259
- 1
3260
- ];
3261
- case "complex":
3262
- return [
3263
- 3,
3264
- 10
3265
- ];
3266
- case "compound":
3267
- return [
3268
- 3,
3269
- 13
3270
- ];
3271
- }
3272
- return [
3273
- 3,
3274
- 15
3275
- ];
3276
- case 1:
3277
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
3278
- _state.label = 2;
3279
- case 2:
3280
- _state.trys.push([
3281
- 2,
3282
- 7,
3283
- 8,
3284
- 9
3285
- ]);
3286
- _iterator = e2.list[Symbol.iterator]();
3287
- _state.label = 3;
3288
- case 3:
3289
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
3290
- 3,
3291
- 6
3292
- ];
3293
- t3 = _step.value;
3294
- return [
3295
- 5,
3296
- _ts_values(f(t3, e2))
3297
- ];
3298
- case 4:
3299
- _state.sent();
3300
- _state.label = 5;
3301
- case 5:
3302
- _iteratorNormalCompletion = true;
3303
- return [
3304
- 3,
3305
- 3
3306
- ];
3307
- case 6:
3308
- return [
3309
- 3,
3310
- 9
3311
- ];
3312
- case 7:
3313
- err = _state.sent();
3314
- _didIteratorError = true;
3315
- _iteratorError = err;
3316
- return [
3317
- 3,
3318
- 9
3319
- ];
3320
- case 8:
3321
- try {
3322
- if (!_iteratorNormalCompletion && _iterator.return != null) {
3323
- _iterator.return();
3324
- }
3325
- } finally{
3326
- if (_didIteratorError) {
3327
- throw _iteratorError;
3328
- }
3329
- }
3330
- return [
3331
- 7
3332
- ];
3333
- case 9:
3334
- return [
3335
- 3,
3336
- 17
3337
- ];
3338
- case 10:
3339
- return [
3340
- 5,
3341
- _ts_values(f(e2.left, e2))
3342
- ];
3343
- case 11:
3344
- _state.sent();
3345
- return [
3346
- 5,
3347
- _ts_values(f(e2.right, e2))
3348
- ];
3349
- case 12:
3350
- _state.sent();
3351
- return [
3352
- 3,
3353
- 17
3354
- ];
3355
- case 13:
3356
- return [
3357
- 5,
3358
- _ts_values(e2.list.map(function(t3) {
3359
- return [
3360
- t3,
3361
- e2
3362
- ];
3363
- }))
3364
- ];
3365
- case 14:
3366
- _state.sent();
3367
- return [
3368
- 3,
3369
- 17
3370
- ];
3371
- case 15:
3372
- return [
3373
- 4,
3374
- [
3375
- e2,
3376
- t2
3377
- ]
3378
- ];
3379
- case 16:
3380
- _state.sent();
3381
- _state.label = 17;
3382
- case 17:
3383
- return [
3384
- 2
3385
- ];
3386
- }
3387
- });
3388
- }
3389
- function h(e2) {
3390
- var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, tmp = _ref.recursive, t2 = tmp === void 0 ? true : tmp, tmp1 = _ref.list, s2 = tmp1 === void 0 ? true : tmp1;
3391
- var r2 = u(e2);
3392
- if (!r2) return;
3393
- var c2 = p(r2, {
3394
- list: s2
3395
- });
3396
- if (!t2) return c2;
3397
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
3398
- try {
3399
- for(var _iterator = f(c2)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
3400
- var _step_value = _sliced_to_array(_step.value, 1), e3 = _step_value[0];
3401
- if ("pseudo-class" !== e3.type || !e3.argument) continue;
3402
- if (!n.has(e3.name)) continue;
3403
- var t3 = e3.argument;
3404
- var s3 = o[e3.name];
3405
- if (s3) {
3406
- var n2 = s3.exec(t3);
3407
- if (!n2) continue;
3408
- Object.assign(e3, n2.groups), t3 = n2.groups.subtree;
3409
- }
3410
- t3 && Object.assign(e3, {
3411
- subtree: h(t3, {
3412
- recursive: true,
3413
- list: true
3414
- })
3415
- });
3416
- }
3417
- } catch (err) {
3418
- _didIteratorError = true;
3419
- _iteratorError = err;
3420
- } finally{
3421
- try {
3422
- if (!_iteratorNormalCompletion && _iterator.return != null) {
3423
- _iterator.return();
3424
- }
3425
- } finally{
3426
- if (_didIteratorError) {
3427
- throw _iteratorError;
3428
- }
3429
- }
3430
- }
3431
- return c2;
3432
- }
3433
- function m(e2, t2) {
3434
- var _Math;
3435
- return t2 = t2 || (_Math = Math).max.apply(_Math, _to_consumable_array(e2)) + 1, e2[0] * (t2 << 1) + e2[1] * t2 + e2[2];
3436
- }
3437
- exports2.RECURSIVE_PSEUDO_CLASSES = n, exports2.RECURSIVE_PSEUDO_CLASSES_ARGS = o, exports2.TOKENS = e, exports2.TRIM_TOKENS = t, exports2.flatten = f, exports2.gobbleParens = c, exports2.parse = h, exports2.specificity = function e2(t2) {
3438
- var s2 = t2;
3439
- if ("string" == typeof s2 && (s2 = h(s2, {
3440
- recursive: true
3441
- })), !s2) return [];
3442
- if ("list" === s2.type && "list" in s2) {
3443
- var _Math;
3444
- var t3 = 10;
3445
- var n2 = s2.list.map(function(n3) {
3446
- var _Math;
3447
- var s3 = e2(n3);
3448
- return t3 = (_Math = Math).max.apply(_Math, [
3449
- t3
3450
- ].concat(_to_consumable_array(e2(n3)))), s3;
3451
- }), o3 = n2.map(function(e3) {
3452
- return m(e3, t3);
3453
- });
3454
- return n2[o3.indexOf((_Math = Math).max.apply(_Math, _to_consumable_array(o3)))];
3455
- }
3456
- var o2 = [
3457
- 0,
3458
- 0,
3459
- 0
3460
- ];
3461
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
3462
- try {
3463
- for(var _iterator = f(s2)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
3464
- var _step_value = _sliced_to_array(_step.value, 1), t31 = _step_value[0];
3465
- switch(t31.type){
3466
- case "id":
3467
- o2[0]++;
3468
- break;
3469
- case "class":
3470
- case "attribute":
3471
- o2[1]++;
3472
- break;
3473
- case "pseudo-element":
3474
- case "type":
3475
- o2[2]++;
3476
- break;
3477
- case "pseudo-class":
3478
- if ("where" === t31.name) break;
3479
- if (!n.has(t31.name) || !t31.subtree) {
3480
- o2[1]++;
3481
- break;
3482
- }
3483
- e2(t31.subtree).forEach(function(e3, t4) {
3484
- return o2[t4] += e3;
3485
- }), "nth-child" !== t31.name && "nth-last-child" !== t31.name || o2[1]++;
3486
- }
3487
- }
3488
- } catch (err) {
3489
- _didIteratorError = true;
3490
- _iteratorError = err;
3491
- } finally{
3492
- try {
3493
- if (!_iteratorNormalCompletion && _iterator.return != null) {
3494
- _iterator.return();
3495
- }
3496
- } finally{
3497
- if (_didIteratorError) {
3498
- throw _iteratorError;
3499
- }
3500
- }
3501
- }
3502
- return o2;
3503
- }, exports2.specificityToNumber = m, exports2.stringify = function(e2) {
3504
- var t2;
3505
- return t2 = Array.isArray(e2) ? e2 : _to_consumable_array(f(e2)).map(function(param) {
3506
- var _param = _sliced_to_array(param, 1), e3 = _param[0];
3507
- return e3;
3508
- }), t2.map(function(e3) {
3509
- return e3.content;
3510
- }).join("");
3511
- }, exports2.tokenize = u, exports2.tokenizeBy = i, exports2.walk = function(e2, t2, n2) {
3512
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
3513
- if (e2) try {
3514
- for(var _iterator = f(e2, n2)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
3515
- var _step_value = _sliced_to_array(_step.value, 2), s2 = _step_value[0], o2 = _step_value[1];
3516
- t2(s2, o2);
3517
- }
3518
- } catch (err) {
3519
- _didIteratorError = true;
3520
- _iteratorError = err;
3521
- } finally{
3522
- try {
3523
- if (!_iteratorNormalCompletion && _iterator.return != null) {
3524
- _iterator.return();
3525
- }
3526
- } finally{
3527
- if (_didIteratorError) {
3528
- throw _iteratorError;
3529
- }
3530
- }
3531
- }
3532
- };
3533
- }
3534
- });
3535
- // node_modules/@tscircuit/soup-util/dist/index.cjs
3536
- var require_dist = __commonJS({
3537
- "node_modules/@tscircuit/soup-util/dist/index.cjs": function(exports2, module2) {
3538
- "use strict";
3539
- var __create2 = Object.create;
3540
- var __defProp2 = Object.defineProperty;
3541
- var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
3542
- var __getOwnPropNames2 = Object.getOwnPropertyNames;
3543
- var __getProtoOf2 = Object.getPrototypeOf;
3544
- var __hasOwnProp2 = Object.prototype.hasOwnProperty;
3545
- var __export2 = function(target, all) {
3546
- for(var name in all)__defProp2(target, name, {
3547
- get: all[name],
3548
- enumerable: true
3549
- });
3550
- };
3551
- var __copyProps2 = function(to, from, except, desc) {
3552
- if (from && typeof from === "object" || typeof from === "function") {
3553
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
3554
- try {
3555
- var _loop = function() {
3556
- var key = _step.value;
3557
- if (!__hasOwnProp2.call(to, key) && key !== except) __defProp2(to, key, {
3558
- get: function() {
3559
- return from[key];
3560
- },
3561
- enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable
3562
- });
3563
- };
3564
- for(var _iterator = __getOwnPropNames2(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
3565
- } catch (err) {
3566
- _didIteratorError = true;
3567
- _iteratorError = err;
3568
- } finally{
3569
- try {
3570
- if (!_iteratorNormalCompletion && _iterator.return != null) {
3571
- _iterator.return();
3572
- }
3573
- } finally{
3574
- if (_didIteratorError) {
3575
- throw _iteratorError;
3576
- }
3577
- }
3578
- }
3579
- }
3580
- return to;
3581
- };
3582
- var __toESM2 = function(mod, isNodeMode, target) {
3583
- return target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(// If the importer is in node compatibility mode or this is not an ESM
3584
- // file that has been converted to a CommonJS file using a Babel-
3585
- // compatible transform (i.e. "__esModule" has not been set), then set
3586
- // "default" to the CommonJS "module.exports" for node compatibility.
3587
- isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", {
3588
- value: mod,
3589
- enumerable: true
3590
- }) : target, mod);
3591
- };
3592
- var __toCommonJS2 = function(mod) {
3593
- return __copyProps2(__defProp2({}, "__esModule", {
3594
- value: true
3595
- }), mod);
3596
- };
3597
- var soup_util_exports = {};
3598
- __export2(soup_util_exports, {
3599
- applySelector: function() {
3600
- return applySelector;
3601
- },
3602
- applySelectorAST: function() {
3603
- return applySelectorAST;
3604
- },
3605
- directionToVec: function() {
3606
- return directionToVec;
3607
- },
3608
- oppositeDirection: function() {
3609
- return oppositeDirection;
3610
- },
3611
- oppositeSide: function() {
3612
- return oppositeSide;
3613
- },
3614
- rotateClockwise: function() {
3615
- return rotateClockwise;
3616
- },
3617
- rotateCounterClockwise: function() {
3618
- return rotateCounterClockwise;
3619
- },
3620
- rotateDirection: function() {
3621
- return rotateDirection;
3622
- },
3623
- su: function() {
3624
- return su_default;
3625
- },
3626
- transformPCBElement: function() {
3627
- return transformPCBElement2;
3628
- },
3629
- transformPCBElements: function() {
3630
- return transformPCBElements2;
3631
- },
3632
- transformSchematicElement: function() {
3633
- return transformSchematicElement;
3634
- },
3635
- transformSchematicElements: function() {
3636
- return transformSchematicElements;
3637
- },
3638
- vecToDirection: function() {
3639
- return vecToDirection;
3640
- }
3641
- });
3642
- module2.exports = __toCommonJS2(soup_util_exports);
3643
- var su5 = function(soup) {
3644
- var su22 = new Proxy({}, {
3645
- get: function(proxy_target, component_type) {
3646
- return {
3647
- get: function(id) {
3648
- return soup.find(function(e) {
3649
- return e.type === component_type && e["".concat(component_type, "_id")] === id;
3650
- });
3651
- },
3652
- getUsing: function(using) {
3653
- var keys = Object.keys(using);
3654
- if (keys.length !== 1) {
3655
- throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");
3656
- }
3657
- var join_key = keys[0];
3658
- var join_type = join_key.replace("_id", "");
3659
- var joiner = soup.find(function(e) {
3660
- return e.type === join_type && e[join_key] === using[join_key];
3661
- });
3662
- if (!joiner) return null;
3663
- return soup.find(function(e) {
3664
- return e.type === component_type && e["".concat(component_type, "_id")] === joiner["".concat(component_type, "_id")];
3665
- });
3666
- },
3667
- getWhere: function(where) {
3668
- var keys = Object.keys(where);
3669
- return soup.find(function(e) {
3670
- return e.type === component_type && keys.every(function(key) {
3671
- return e[key] === where[key];
3672
- });
3673
- });
3674
- },
3675
- list: function(where) {
3676
- var keys = !where ? [] : Object.keys(where);
3677
- return soup.filter(function(e) {
3678
- return e.type === component_type && keys.every(function(key) {
3679
- return e[key] === where[key];
3680
- });
3681
- });
3682
- },
3683
- select: function(selector) {
3684
- if (component_type === "source_component") {
3685
- return soup.find(function(e) {
3686
- return e.type === "source_component" && e.name === selector.replace(/\./g, "");
3687
- });
3688
- } else if (component_type === "pcb_port" || component_type === "source_port" || component_type === "schematic_port") {
3689
- var _selector_replace_split = _sliced_to_array(selector.replace(/\./g, "").split(/[\s\>]+/), 2), component_name = _selector_replace_split[0], port_selector = _selector_replace_split[1];
3690
- var source_component = soup.find(function(e) {
3691
- return e.type === "source_component" && e.name === component_name;
3692
- });
3693
- if (!source_component) return null;
3694
- var source_port2 = soup.find(function(e) {
3695
- var _e_port_hints;
3696
- return e.type === "source_port" && e.source_component_id === source_component.source_component_id && (e.name === port_selector || ((_e_port_hints = e.port_hints) !== null && _e_port_hints !== void 0 ? _e_port_hints : []).includes(port_selector));
3697
- });
3698
- if (!source_port2) return null;
3699
- if (component_type === "source_port") return source_port2;
3700
- if (component_type === "pcb_port") {
3701
- return soup.find(function(e) {
3702
- return e.type === "pcb_port" && e.source_port_id === source_port2.source_port_id;
3703
- });
3704
- } else if (component_type === "schematic_port") {
3705
- return soup.find(function(e) {
3706
- return e.type === "schematic_port" && e.source_port_id === source_port2.source_port_id;
3707
- });
3708
- }
3709
- }
3710
- }
3711
- };
3712
- }
3713
- });
3714
- return su22;
3715
- };
3716
- su5.unparsed = su5;
3717
- var su_default = su5;
3718
- var directionToVec = function(direction) {
3719
- if (direction === "up") return {
3720
- x: 0,
3721
- y: 1
3722
- };
3723
- else if (direction === "down") return {
3724
- x: 0,
3725
- y: -1
3726
- };
3727
- else if (direction === "left") return {
3728
- x: -1,
3729
- y: 0
3730
- };
3731
- else if (direction === "right") return {
3732
- x: 1,
3733
- y: 0
3734
- };
3735
- else throw new Error("Invalid direction");
3736
- };
3737
- var vecToDirection = function(param) {
3738
- var x = param.x, y = param.y;
3739
- if (x > y) y = 0;
3740
- if (y > x) x = 0;
3741
- if (x > 0 && y === 0) return "right";
3742
- else if (x < 0 && y === 0) return "left";
3743
- else if (x === 0 && y > 0) return "up";
3744
- else if (x === 0 && y < 0) return "down";
3745
- else throw new Error("Invalid vector for direction conversion (".concat(x, ", ").concat(y, ")"));
3746
- };
3747
- var rotateClockwise = function(direction) {
3748
- if (direction === "up") return "right";
3749
- else if (direction === "right") return "down";
3750
- else if (direction === "down") return "left";
3751
- else if (direction === "left") return "up";
3752
- throw new Error("Invalid direction: ".concat(direction));
3753
- };
3754
- var rotateCounterClockwise = function(direction) {
3755
- if (direction === "up") return "left";
3756
- else if (direction === "left") return "down";
3757
- else if (direction === "down") return "right";
3758
- else if (direction === "right") return "up";
3759
- throw new Error("Invalid direction: ".concat(direction));
3760
- };
3761
- var rotateDirection = function(direction, num90DegreeClockwiseTurns) {
3762
- while(num90DegreeClockwiseTurns > 0){
3763
- direction = rotateClockwise(direction);
3764
- num90DegreeClockwiseTurns--;
3765
- }
3766
- while(num90DegreeClockwiseTurns < 0){
3767
- direction = rotateCounterClockwise(direction);
3768
- num90DegreeClockwiseTurns++;
3769
- }
3770
- return direction;
3771
- };
3772
- var oppositeDirection = function(direction) {
3773
- if (direction === "up") return "down";
3774
- else if (direction === "down") return "up";
3775
- else if (direction === "left") return "right";
3776
- else if (direction === "right") return "left";
3777
- throw new Error("Invalid direction: ".concat(direction));
3778
- };
3779
- var oppositeSide = function(sideOrDir) {
3780
- if (sideOrDir === "top" || sideOrDir === "up") return "bottom";
3781
- else if (sideOrDir === "bottom" || sideOrDir === "down") return "top";
3782
- else if (sideOrDir === "left") return "right";
3783
- else if (sideOrDir === "right") return "left";
3784
- throw new Error("Invalid sideOrDir: ".concat(sideOrDir));
3785
- };
3786
- var import_transformation_matrix10 = require("transformation-matrix");
3787
- var transformSchematicElement = function(elm, matrix) {
3788
- if (elm.type === "schematic_component") {
3789
- elm.center = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.center);
3790
- } else if (elm.type === "schematic_port") {
3791
- elm.center = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.center);
3792
- if (elm.facing_direction) {
3793
- elm.facing_direction = rotateDirection(elm.facing_direction, -(Math.atan2(matrix.b, matrix.a) / Math.PI) * 2);
3794
- }
3795
- } else if (elm.type === "schematic_text") {
3796
- elm.position = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.position);
3797
- } else if (elm.type === "schematic_trace") {} else if (elm.type === "schematic_box") {
3798
- var _ref = (0, import_transformation_matrix10.applyToPoint)(matrix, {
3799
- x: elm.x,
3800
- y: elm.y
3801
- }), x = _ref.x, y = _ref.y;
3802
- elm.x = x;
3803
- elm.y = y;
3804
- } else if (elm.type === "schematic_line") {
3805
- var _ref1 = (0, import_transformation_matrix10.applyToPoint)(matrix, {
3806
- x: elm.x1,
3807
- y: elm.y1
3808
- }), x1 = _ref1.x, y1 = _ref1.y;
3809
- var _ref2 = (0, import_transformation_matrix10.applyToPoint)(matrix, {
3810
- x: elm.x2,
3811
- y: elm.y2
3812
- }), x2 = _ref2.x, y2 = _ref2.y;
3813
- elm.x1 = x1;
3814
- elm.y1 = y1;
3815
- elm.x2 = x2;
3816
- elm.y2 = y2;
3817
- }
3818
- return elm;
3819
- };
3820
- var transformSchematicElements = function(elms, matrix) {
3821
- return elms.map(function(elm) {
3822
- return transformSchematicElement(elm, matrix);
3823
- });
3824
- };
3825
- var transformPCBElement2 = function(elm, matrix) {
3826
- if (elm.type === "pcb_plated_hole" || elm.type === "pcb_hole" || elm.type === "pcb_via" || elm.type === "pcb_smtpad" || elm.type === "pcb_port") {
3827
- var _ref = (0, import_transformation_matrix10.applyToPoint)(matrix, {
3828
- x: elm.x,
3829
- y: elm.y
3830
- }), x = _ref.x, y = _ref.y;
3831
- elm.x = x;
3832
- elm.y = y;
3833
- } else if (elm.type === "pcb_silkscreen_text" || elm.type === "pcb_fabrication_note_text") {
3834
- elm.anchor_position = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.anchor_position);
3835
- } else if (elm.type === "pcb_silkscreen_circle" || elm.type === "pcb_silkscreen_rect" || elm.type === "pcb_component") {
3836
- elm.center = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.center);
3837
- } else if (elm.type === "pcb_silkscreen_path" || elm.type === "pcb_trace" || elm.type === "pcb_fabrication_note_path") {
3838
- elm.route = elm.route.map(function(rp) {
3839
- var tp = (0, import_transformation_matrix10.applyToPoint)(matrix, rp);
3840
- rp.x = tp.x;
3841
- rp.y = tp.y;
3842
- return rp;
3843
- });
3844
- } else if (elm.type === "pcb_silkscreen_line") {
3845
- var p1 = {
3846
- x: elm.x1,
3847
- y: elm.y1
3848
- };
3849
- var p2 = {
3850
- x: elm.x2,
3851
- y: elm.y2
3852
- };
3853
- var p1t = (0, import_transformation_matrix10.applyToPoint)(matrix, p1);
3854
- var p2t = (0, import_transformation_matrix10.applyToPoint)(matrix, p2);
3855
- elm.x1 = p1t.x;
3856
- elm.y1 = p1t.y;
3857
- elm.x2 = p2t.x;
3858
- elm.y2 = p2t.y;
3859
- } else if (elm.type === "cad_component") {
3860
- var newPos = (0, import_transformation_matrix10.applyToPoint)(matrix, {
3861
- x: elm.position.x,
3862
- y: elm.position.y
3863
- });
3864
- elm.position.x = newPos.x;
3865
- elm.position.y = newPos.y;
3866
- }
3867
- return elm;
3868
- };
3869
- var transformPCBElements2 = function(elms, matrix) {
3870
- var tsr = (0, import_transformation_matrix10.decomposeTSR)(matrix);
3871
- var flipPadWidthHeight = Math.round(tsr.rotation.angle / (Math.PI / 2)) % 2 === 1;
3872
- var transformedElms = elms.map(function(elm) {
3873
- return transformPCBElement2(elm, matrix);
3874
- });
3875
- if (flipPadWidthHeight) {
3876
- transformedElms = transformedElms.map(function(elm) {
3877
- if (elm.type === "pcb_smtpad" && elm.shape === "rect") {
3878
- ;
3879
- var ref;
3880
- ref = [
3881
- elm.height,
3882
- elm.width
3883
- ], elm.width = ref[0], elm.height = ref[1], ref;
3884
- }
3885
- return elm;
2942
+ measure = measure || this.origin.measure;
2943
+ each(measures[measure], function(units, system) {
2944
+ if (system == "_anchors") return false;
2945
+ possibilities = possibilities.concat(keys(units));
3886
2946
  });
3887
2947
  }
3888
- return transformedElms;
3889
- };
3890
- var parsel = __toESM2(require_parsel_min(), 1);
3891
- var convertAbbrToType = function(abbr) {
3892
- switch(abbr){
3893
- case "port":
3894
- return "source_port";
3895
- case "net":
3896
- return "source_net";
3897
- case "power":
3898
- return "simple_power_source";
3899
- }
3900
- return abbr;
3901
- };
3902
- var filterByType = function(elements, type) {
3903
- type = convertAbbrToType(type);
3904
- return elements.filter(function(elm) {
3905
- return "ftype" in elm && elm.ftype === type || elm.type === type;
3906
- });
3907
- };
3908
- var applySelector = function(elements, selectorRaw) {
3909
- var selectorAST = parsel.parse(selectorRaw);
3910
- return applySelectorAST(elements, selectorAST);
2948
+ return possibilities;
3911
2949
  };
3912
- var doesElmMatchClassName = function(elm, className) {
3913
- var _elm_port_hints;
3914
- return "name" in elm && elm.name === className || "port_hints" in elm && ((_elm_port_hints = elm.port_hints) === null || _elm_port_hints === void 0 ? void 0 : _elm_port_hints.includes(className));
2950
+ Converter.prototype.measures = function() {
2951
+ return keys(measures);
3915
2952
  };
3916
- var applySelectorAST = function(elements, selectorAST) {
3917
- switch(selectorAST.type){
3918
- case "complex":
3919
- {
3920
- switch(selectorAST.combinator){
3921
- case " ":
3922
- case ">":
3923
- {
3924
- var left = selectorAST.left, right = selectorAST.right;
3925
- if (left.type === "class" || left.type === "type") {
3926
- var matchElms;
3927
- if (left.type === "class") {
3928
- matchElms = elements.filter(function(elm) {
3929
- return doesElmMatchClassName(elm, left.name);
3930
- });
3931
- } else if (left.type === "type") {
3932
- matchElms = filterByType(elements, left.name);
3933
- } else {
3934
- matchElms = [];
3935
- }
3936
- var childrenOfMatchingElms = matchElms.flatMap(function(matchElm) {
3937
- return elements.filter(function(elm) {
3938
- return elm["".concat(matchElm.type, "_id")] === matchElm["".concat(matchElm.type, "_id")] && elm !== matchElm;
3939
- });
3940
- });
3941
- return applySelectorAST(childrenOfMatchingElms, right);
3942
- } else {
3943
- throw new Error('unsupported selector type "'.concat(left.type, '" '));
3944
- }
3945
- }
3946
- default:
3947
- {
3948
- throw new Error("Couldn't apply selector AST for complex combinator \"".concat(selectorAST.combinator, '"'));
3949
- }
3950
- }
3951
- return [];
3952
- }
3953
- case "compound":
3954
- {
3955
- var conditionsToMatch = selectorAST.list.map(function(part) {
3956
- switch(part.type){
3957
- case "class":
3958
- {
3959
- return function(elm) {
3960
- return doesElmMatchClassName(elm, part.name);
3961
- };
3962
- }
3963
- case "type":
3964
- {
3965
- var name = convertAbbrToType(part.name);
3966
- return function(elm) {
3967
- return elm.type === name;
3968
- };
3969
- }
3970
- }
3971
- });
3972
- return elements.filter(function(elm) {
3973
- return conditionsToMatch.every(function(condFn) {
3974
- return condFn === null || condFn === void 0 ? void 0 : condFn(elm);
3975
- });
3976
- });
3977
- }
3978
- case "type":
3979
- {
3980
- return filterByType(elements, selectorAST.name);
3981
- }
3982
- case "class":
3983
- {
3984
- return elements.filter(function(elm) {
3985
- return doesElmMatchClassName(elm, selectorAST.name);
3986
- });
3987
- }
3988
- default:
3989
- {
3990
- throw new Error("Couldn't apply selector AST for type: \"".concat(selectorAST.type, '" ').concat(JSON.stringify(selectorAST, null, " ")));
3991
- }
3992
- }
2953
+ convert = function convert(value) {
2954
+ return new Converter(value);
3993
2955
  };
2956
+ module2.exports = convert;
3994
2957
  }
3995
2958
  });
3996
2959
  // node_modules/use-mouse-matrix-transform/dist/index.js
3997
- var require_dist2 = __commonJS({
2960
+ var require_dist = __commonJS({
3998
2961
  "node_modules/use-mouse-matrix-transform/dist/index.js": function(exports2, module2) {
3999
2962
  "use strict";
4000
2963
  var __defProp2 = Object.defineProperty;
@@ -4053,7 +3016,7 @@ var require_dist2 = __commonJS({
4053
3016
  }
4054
3017
  });
4055
3018
  module2.exports = __toCommonJS2(src_exports2);
4056
- var import_transformation_matrix10 = require("transformation-matrix");
3019
+ var import_transformation_matrix11 = require("transformation-matrix");
4057
3020
  var import_react21 = require("react");
4058
3021
  var useMouseMatrixTransform2 = function() {
4059
3022
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
@@ -4062,7 +3025,7 @@ var require_dist2 = __commonJS({
4062
3025
  var _props_canvasElm;
4063
3026
  var outerCanvasElm = (_props_canvasElm = props.canvasElm) !== null && _props_canvasElm !== void 0 ? _props_canvasElm : extRef.current;
4064
3027
  var _props_initialTransform;
4065
- var _ref1 = _sliced_to_array((0, import_react21.useState)((_props_initialTransform = props.initialTransform) !== null && _props_initialTransform !== void 0 ? _props_initialTransform : (0, import_transformation_matrix10.identity)()), 2), internalTransform = _ref1[0], setInternalTransform = _ref1[1];
3028
+ var _ref1 = _sliced_to_array((0, import_react21.useState)((_props_initialTransform = props.initialTransform) !== null && _props_initialTransform !== void 0 ? _props_initialTransform : (0, import_transformation_matrix11.identity)()), 2), internalTransform = _ref1[0], setInternalTransform = _ref1[1];
4066
3029
  var _ref2 = _sliced_to_array((0, import_react21.useState)(0), 2), waitCounter = _ref2[0], setWaitCounter = _ref2[1];
4067
3030
  var _ref3 = _sliced_to_array((0, import_react21.useReducer)(function(s) {
4068
3031
  return s + 1;
@@ -4099,7 +3062,7 @@ var require_dist2 = __commonJS({
4099
3062
  var handleMouseUp = function handleMouseUp(e) {
4100
3063
  if (!md) return;
4101
3064
  m1 = getMousePos(e);
4102
- var new_tf = (0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(m1.x - m0.x, m1.y - m0.y), init_tf);
3065
+ var new_tf = (0, import_transformation_matrix11.compose)((0, import_transformation_matrix11.translate)(m1.x - m0.x, m1.y - m0.y), init_tf);
4103
3066
  setTransform(new_tf);
4104
3067
  init_tf = new_tf;
4105
3068
  md = false;
@@ -4108,11 +3071,11 @@ var require_dist2 = __commonJS({
4108
3071
  mlastrel = getMousePos(e);
4109
3072
  if (!md) return;
4110
3073
  m1 = getMousePos(e);
4111
- setTransform((0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(m1.x - m0.x, m1.y - m0.y), init_tf));
3074
+ setTransform((0, import_transformation_matrix11.compose)((0, import_transformation_matrix11.translate)(m1.x - m0.x, m1.y - m0.y), init_tf));
4112
3075
  };
4113
3076
  var handleMouseWheel = function handleMouseWheel(e) {
4114
3077
  var center = getMousePos(e);
4115
- var new_tf = (0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(center.x, center.y), (0, import_transformation_matrix10.scale)(1 - e.deltaY / 1e3, 1 - e.deltaY / 1e3), (0, import_transformation_matrix10.translate)(-center.x, -center.y), init_tf);
3078
+ var new_tf = (0, import_transformation_matrix11.compose)((0, import_transformation_matrix11.translate)(center.x, center.y), (0, import_transformation_matrix11.scale)(1 - e.deltaY / 1e3, 1 - e.deltaY / 1e3), (0, import_transformation_matrix11.translate)(-center.x, -center.y), init_tf);
4116
3079
  setTransform(new_tf);
4117
3080
  init_tf = new_tf;
4118
3081
  e.preventDefault();
@@ -4127,7 +3090,7 @@ var require_dist2 = __commonJS({
4127
3090
  }
4128
3091
  md = false;
4129
3092
  m1 = getMousePos(e);
4130
- var new_tf = (0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(m1.x - m0.x, m1.y - m0.y), init_tf);
3093
+ var new_tf = (0, import_transformation_matrix11.compose)((0, import_transformation_matrix11.translate)(m1.x - m0.x, m1.y - m0.y), init_tf);
4131
3094
  setTransform(new_tf);
4132
3095
  init_tf = new_tf;
4133
3096
  };
@@ -4182,7 +3145,7 @@ var require_dist2 = __commonJS({
4182
3145
  lastDragCancelTime
4183
3146
  ]);
4184
3147
  var applyTransformToPoint = (0, import_react21.useCallback)(function(obj) {
4185
- return (0, import_transformation_matrix10.applyToPoint)(transform, obj);
3148
+ return (0, import_transformation_matrix11.applyToPoint)(transform, obj);
4186
3149
  }, [
4187
3150
  transform
4188
3151
  ]);
@@ -4213,8 +3176,6 @@ __export(src_exports, {
4213
3176
  module.exports = __toCommonJS(src_exports);
4214
3177
  // src/PCBViewer.tsx
4215
3178
  var import_react20 = require("react");
4216
- var import_react_fiber = require("@tscircuit/react-fiber");
4217
- var import_builder = require("@tscircuit/builder");
4218
3179
  // src/components/CanvasElementsRenderer.tsx
4219
3180
  var import_react16 = require("react");
4220
3181
  // src/components/CanvasPrimitiveRenderer.tsx
@@ -5142,6 +4103,240 @@ var useGlobalStore = function(s) {
5142
4103
  return (0, import_zustand.useStore)(store, s);
5143
4104
  };
5144
4105
  // node_modules/circuit-json/dist/index.mjs
4106
+ var dist_exports = {};
4107
+ __export(dist_exports, {
4108
+ all_layers: function() {
4109
+ return all_layers;
4110
+ },
4111
+ any_circuit_element: function() {
4112
+ return any_circuit_element;
4113
+ },
4114
+ any_soup_element: function() {
4115
+ return any_soup_element;
4116
+ },
4117
+ any_source_component: function() {
4118
+ return any_source_component;
4119
+ },
4120
+ cad_component: function() {
4121
+ return cad_component;
4122
+ },
4123
+ capacitance: function() {
4124
+ return capacitance;
4125
+ },
4126
+ current: function() {
4127
+ return current;
4128
+ },
4129
+ distance: function() {
4130
+ return distance;
4131
+ },
4132
+ getZodPrefixedIdWithDefault: function() {
4133
+ return getZodPrefixedIdWithDefault;
4134
+ },
4135
+ inductance: function() {
4136
+ return inductance;
4137
+ },
4138
+ layer_ref: function() {
4139
+ return layer_ref;
4140
+ },
4141
+ layer_string: function() {
4142
+ return layer_string;
4143
+ },
4144
+ length: function() {
4145
+ return length;
4146
+ },
4147
+ pcb_board: function() {
4148
+ return pcb_board;
4149
+ },
4150
+ pcb_component: function() {
4151
+ return pcb_component;
4152
+ },
4153
+ pcb_fabrication_note_path: function() {
4154
+ return pcb_fabrication_note_path;
4155
+ },
4156
+ pcb_fabrication_note_text: function() {
4157
+ return pcb_fabrication_note_text;
4158
+ },
4159
+ pcb_hole: function() {
4160
+ return pcb_hole;
4161
+ },
4162
+ pcb_hole_circle_or_square_shape: function() {
4163
+ return pcb_hole_circle_or_square_shape;
4164
+ },
4165
+ pcb_hole_oval_shape: function() {
4166
+ return pcb_hole_oval_shape;
4167
+ },
4168
+ pcb_keepout: function() {
4169
+ return pcb_keepout;
4170
+ },
4171
+ pcb_placement_error: function() {
4172
+ return pcb_placement_error;
4173
+ },
4174
+ pcb_plated_hole: function() {
4175
+ return pcb_plated_hole;
4176
+ },
4177
+ pcb_port: function() {
4178
+ return pcb_port;
4179
+ },
4180
+ pcb_port_not_matched_error: function() {
4181
+ return pcb_port_not_matched_error;
4182
+ },
4183
+ pcb_route_hint: function() {
4184
+ return pcb_route_hint;
4185
+ },
4186
+ pcb_route_hints: function() {
4187
+ return pcb_route_hints;
4188
+ },
4189
+ pcb_silkscreen_circle: function() {
4190
+ return pcb_silkscreen_circle;
4191
+ },
4192
+ pcb_silkscreen_line: function() {
4193
+ return pcb_silkscreen_line;
4194
+ },
4195
+ pcb_silkscreen_oval: function() {
4196
+ return pcb_silkscreen_oval;
4197
+ },
4198
+ pcb_silkscreen_path: function() {
4199
+ return pcb_silkscreen_path;
4200
+ },
4201
+ pcb_silkscreen_rect: function() {
4202
+ return pcb_silkscreen_rect;
4203
+ },
4204
+ pcb_silkscreen_text: function() {
4205
+ return pcb_silkscreen_text;
4206
+ },
4207
+ pcb_smtpad: function() {
4208
+ return pcb_smtpad;
4209
+ },
4210
+ pcb_text: function() {
4211
+ return pcb_text;
4212
+ },
4213
+ pcb_trace: function() {
4214
+ return pcb_trace;
4215
+ },
4216
+ pcb_trace_error: function() {
4217
+ return pcb_trace_error;
4218
+ },
4219
+ pcb_trace_hint: function() {
4220
+ return pcb_trace_hint;
4221
+ },
4222
+ pcb_trace_route_point: function() {
4223
+ return pcb_trace_route_point;
4224
+ },
4225
+ pcb_trace_route_point_via: function() {
4226
+ return pcb_trace_route_point_via;
4227
+ },
4228
+ pcb_trace_route_point_wire: function() {
4229
+ return pcb_trace_route_point_wire;
4230
+ },
4231
+ pcb_via: function() {
4232
+ return pcb_via;
4233
+ },
4234
+ point: function() {
4235
+ return point;
4236
+ },
4237
+ point3: function() {
4238
+ return point3;
4239
+ },
4240
+ position: function() {
4241
+ return position;
4242
+ },
4243
+ position3: function() {
4244
+ return position3;
4245
+ },
4246
+ resistance: function() {
4247
+ return resistance;
4248
+ },
4249
+ rotation: function() {
4250
+ return rotation;
4251
+ },
4252
+ route_hint_point: function() {
4253
+ return route_hint_point;
4254
+ },
4255
+ schematic_box: function() {
4256
+ return schematic_box;
4257
+ },
4258
+ schematic_component: function() {
4259
+ return schematic_component;
4260
+ },
4261
+ schematic_error: function() {
4262
+ return schematic_error;
4263
+ },
4264
+ schematic_line: function() {
4265
+ return schematic_line;
4266
+ },
4267
+ schematic_net_label: function() {
4268
+ return schematic_net_label;
4269
+ },
4270
+ schematic_path: function() {
4271
+ return schematic_path;
4272
+ },
4273
+ schematic_pin_styles: function() {
4274
+ return schematic_pin_styles;
4275
+ },
4276
+ schematic_port: function() {
4277
+ return schematic_port;
4278
+ },
4279
+ schematic_text: function() {
4280
+ return schematic_text;
4281
+ },
4282
+ schematic_trace: function() {
4283
+ return schematic_trace;
4284
+ },
4285
+ size: function() {
4286
+ return size;
4287
+ },
4288
+ source_component_base: function() {
4289
+ return source_component_base;
4290
+ },
4291
+ source_group: function() {
4292
+ return source_group;
4293
+ },
4294
+ source_led: function() {
4295
+ return source_led;
4296
+ },
4297
+ source_net: function() {
4298
+ return source_net;
4299
+ },
4300
+ source_port: function() {
4301
+ return source_port;
4302
+ },
4303
+ source_simple_bug: function() {
4304
+ return source_simple_bug;
4305
+ },
4306
+ source_simple_capacitor: function() {
4307
+ return source_simple_capacitor;
4308
+ },
4309
+ source_simple_chip: function() {
4310
+ return source_simple_chip;
4311
+ },
4312
+ source_simple_diode: function() {
4313
+ return source_simple_diode;
4314
+ },
4315
+ source_simple_ground: function() {
4316
+ return source_simple_ground;
4317
+ },
4318
+ source_simple_power_source: function() {
4319
+ return source_simple_power_source;
4320
+ },
4321
+ source_simple_resistor: function() {
4322
+ return source_simple_resistor;
4323
+ },
4324
+ source_trace: function() {
4325
+ return source_trace;
4326
+ },
4327
+ supplier_name: function() {
4328
+ return supplier_name;
4329
+ },
4330
+ time: function() {
4331
+ return time;
4332
+ },
4333
+ visible_layer: function() {
4334
+ return visible_layer;
4335
+ },
4336
+ voltage: function() {
4337
+ return voltage;
4338
+ }
4339
+ });
5145
4340
  var import_convert_units = __toESM(require_lib(), 1);
5146
4341
  // node_modules/zod/lib/index.mjs
5147
4342
  var util;
@@ -5640,8 +4835,8 @@ var makeIssue = function(params) {
5640
4835
  });
5641
4836
  }
5642
4837
  var errorMessage = "";
5643
- var maps = errorMaps.filter(function(m) {
5644
- return !!m;
4838
+ var maps = errorMaps.filter(function(m2) {
4839
+ return !!m2;
5645
4840
  }).slice().reverse();
5646
4841
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
5647
4842
  try {
@@ -11490,11 +10685,13 @@ var point = z.object({
11490
10685
  x: distance,
11491
10686
  y: distance
11492
10687
  });
10688
+ var position = point;
11493
10689
  var point3 = z.object({
11494
10690
  x: distance,
11495
10691
  y: distance,
11496
10692
  z: distance
11497
10693
  });
10694
+ var position3 = point3;
11498
10695
  var size = z.object({
11499
10696
  width: z.number(),
11500
10697
  height: z.number()
@@ -12197,6 +11394,7 @@ var any_circuit_element = z.union([
12197
11394
  schematic_net_label,
12198
11395
  cad_component
12199
11396
  ]);
11397
+ var any_soup_element = any_circuit_element;
12200
11398
  // src/components/CanvasPrimitiveRenderer.tsx
12201
11399
  var import_jsx_runtime2 = require("react/jsx-runtime");
12202
11400
  var CanvasPrimitiveRenderer = function(param) {
@@ -12266,8 +11464,275 @@ var CanvasPrimitiveRenderer = function(param) {
12266
11464
  };
12267
11465
  // src/components/CanvasElementsRenderer.tsx
12268
11466
  var import_react17 = require("react");
12269
- // src/lib/convert-element-to-primitive.ts
12270
- var import_soup_util = __toESM(require_dist());
11467
+ // node_modules/@tscircuit/soup-util/dist/index.js
11468
+ var import_transformation_matrix2 = require("transformation-matrix");
11469
+ var su = function(soup) {
11470
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
11471
+ var internalStore = soup._internal_store;
11472
+ if (!internalStore) {
11473
+ internalStore = {
11474
+ counts: {}
11475
+ };
11476
+ soup._internal_store = internalStore;
11477
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
11478
+ try {
11479
+ for(var _iterator = soup[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
11480
+ var elm = _step.value;
11481
+ var type = elm.type;
11482
+ var idVal = elm["".concat(type, "_id")];
11483
+ if (!idVal) continue;
11484
+ var idNum = Number.parseInt(idVal.split("_").pop());
11485
+ if (!Number.isNaN(idNum)) {
11486
+ var _internalStore_counts_type;
11487
+ internalStore.counts[type] = Math.max((_internalStore_counts_type = internalStore.counts[type]) !== null && _internalStore_counts_type !== void 0 ? _internalStore_counts_type : 0, idNum);
11488
+ }
11489
+ }
11490
+ } catch (err) {
11491
+ _didIteratorError = true;
11492
+ _iteratorError = err;
11493
+ } finally{
11494
+ try {
11495
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
11496
+ _iterator.return();
11497
+ }
11498
+ } finally{
11499
+ if (_didIteratorError) {
11500
+ throw _iteratorError;
11501
+ }
11502
+ }
11503
+ }
11504
+ }
11505
+ var su2 = new Proxy({}, {
11506
+ get: function(proxy_target, component_type) {
11507
+ if (component_type === "toArray") {
11508
+ return function() {
11509
+ return soup;
11510
+ };
11511
+ }
11512
+ return {
11513
+ get: function(id) {
11514
+ return soup.find(function(e) {
11515
+ return e.type === component_type && e["".concat(component_type, "_id")] === id;
11516
+ });
11517
+ },
11518
+ getUsing: function(using) {
11519
+ var keys = Object.keys(using);
11520
+ if (keys.length !== 1) {
11521
+ throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");
11522
+ }
11523
+ var join_key = keys[0];
11524
+ var join_type = join_key.replace("_id", "");
11525
+ var joiner = soup.find(function(e) {
11526
+ return e.type === join_type && e[join_key] === using[join_key];
11527
+ });
11528
+ if (!joiner) return null;
11529
+ return soup.find(function(e) {
11530
+ return e.type === component_type && e["".concat(component_type, "_id")] === joiner["".concat(component_type, "_id")];
11531
+ });
11532
+ },
11533
+ getWhere: function(where) {
11534
+ var keys = Object.keys(where);
11535
+ return soup.find(function(e) {
11536
+ return e.type === component_type && keys.every(function(key) {
11537
+ return e[key] === where[key];
11538
+ });
11539
+ });
11540
+ },
11541
+ list: function(where) {
11542
+ var keys = !where ? [] : Object.keys(where);
11543
+ return soup.filter(function(e) {
11544
+ return e.type === component_type && keys.every(function(key) {
11545
+ return e[key] === where[key];
11546
+ });
11547
+ });
11548
+ },
11549
+ insert: function(elm) {
11550
+ var _a;
11551
+ var _component_type;
11552
+ (_component_type = (_a = internalStore.counts)[component_type]) !== null && _component_type !== void 0 ? _component_type : _a[component_type] = -1;
11553
+ internalStore.counts[component_type]++;
11554
+ var index = internalStore.counts[component_type];
11555
+ var newElm = _object_spread(_define_property({
11556
+ type: component_type
11557
+ }, "".concat(component_type, "_id"), "".concat(component_type, "_").concat(index)), elm);
11558
+ if (options.validateInserts) {
11559
+ var _dist_exports_component_type;
11560
+ var parser = (_dist_exports_component_type = dist_exports[component_type]) !== null && _dist_exports_component_type !== void 0 ? _dist_exports_component_type : any_soup_element;
11561
+ parser.parse(newElm);
11562
+ }
11563
+ soup.push(newElm);
11564
+ return newElm;
11565
+ },
11566
+ delete: function(id) {
11567
+ var elm = soup.find(function(e) {
11568
+ return e["".concat(component_type, "_id")] === id;
11569
+ });
11570
+ if (!elm) return;
11571
+ soup.splice(soup.indexOf(elm), 1);
11572
+ },
11573
+ update: function(id, newProps) {
11574
+ var elm = soup.find(function(e) {
11575
+ return e["".concat(component_type, "_id")] === id;
11576
+ });
11577
+ if (!elm) return;
11578
+ Object.assign(elm, newProps);
11579
+ return elm;
11580
+ },
11581
+ select: function(selector) {
11582
+ if (component_type === "source_component") {
11583
+ return soup.find(function(e) {
11584
+ return e.type === "source_component" && e.name === selector.replace(/\./g, "");
11585
+ });
11586
+ } else if (component_type === "pcb_port" || component_type === "source_port" || component_type === "schematic_port") {
11587
+ var _selector_replace_split = _sliced_to_array(selector.replace(/\./g, "").split(/[\s\>]+/), 2), component_name = _selector_replace_split[0], port_selector = _selector_replace_split[1];
11588
+ var source_component = soup.find(function(e) {
11589
+ return e.type === "source_component" && e.name === component_name;
11590
+ });
11591
+ if (!source_component) return null;
11592
+ var source_port2 = soup.find(function(e) {
11593
+ var _e_port_hints;
11594
+ return e.type === "source_port" && e.source_component_id === source_component.source_component_id && (e.name === port_selector || ((_e_port_hints = e.port_hints) !== null && _e_port_hints !== void 0 ? _e_port_hints : []).includes(port_selector));
11595
+ });
11596
+ if (!source_port2) return null;
11597
+ if (component_type === "source_port") return source_port2;
11598
+ if (component_type === "pcb_port") {
11599
+ return soup.find(function(e) {
11600
+ return e.type === "pcb_port" && e.source_port_id === source_port2.source_port_id;
11601
+ });
11602
+ } else if (component_type === "schematic_port") {
11603
+ return soup.find(function(e) {
11604
+ return e.type === "schematic_port" && e.source_port_id === source_port2.source_port_id;
11605
+ });
11606
+ }
11607
+ }
11608
+ }
11609
+ };
11610
+ }
11611
+ });
11612
+ return su2;
11613
+ };
11614
+ su.unparsed = su;
11615
+ var su_default = su;
11616
+ var transformPCBElement = function(elm, matrix) {
11617
+ if (elm.type === "pcb_plated_hole" || elm.type === "pcb_hole" || elm.type === "pcb_via" || elm.type === "pcb_smtpad" || elm.type === "pcb_port") {
11618
+ var _ref = (0, import_transformation_matrix2.applyToPoint)(matrix, {
11619
+ x: elm.x,
11620
+ y: elm.y
11621
+ }), x = _ref.x, y = _ref.y;
11622
+ elm.x = x;
11623
+ elm.y = y;
11624
+ } else if (elm.type === "pcb_keepout" || elm.type === "pcb_board") {
11625
+ elm.center = (0, import_transformation_matrix2.applyToPoint)(matrix, elm.center);
11626
+ } else if (elm.type === "pcb_silkscreen_text" || elm.type === "pcb_fabrication_note_text") {
11627
+ elm.anchor_position = (0, import_transformation_matrix2.applyToPoint)(matrix, elm.anchor_position);
11628
+ } else if (elm.type === "pcb_silkscreen_circle" || elm.type === "pcb_silkscreen_rect" || elm.type === "pcb_component") {
11629
+ elm.center = (0, import_transformation_matrix2.applyToPoint)(matrix, elm.center);
11630
+ } else if (elm.type === "pcb_silkscreen_path" || elm.type === "pcb_trace" || elm.type === "pcb_fabrication_note_path") {
11631
+ elm.route = elm.route.map(function(rp) {
11632
+ var tp = (0, import_transformation_matrix2.applyToPoint)(matrix, rp);
11633
+ rp.x = tp.x;
11634
+ rp.y = tp.y;
11635
+ return rp;
11636
+ });
11637
+ } else if (elm.type === "pcb_silkscreen_line") {
11638
+ var p1 = {
11639
+ x: elm.x1,
11640
+ y: elm.y1
11641
+ };
11642
+ var p2 = {
11643
+ x: elm.x2,
11644
+ y: elm.y2
11645
+ };
11646
+ var p1t = (0, import_transformation_matrix2.applyToPoint)(matrix, p1);
11647
+ var p2t = (0, import_transformation_matrix2.applyToPoint)(matrix, p2);
11648
+ elm.x1 = p1t.x;
11649
+ elm.y1 = p1t.y;
11650
+ elm.x2 = p2t.x;
11651
+ elm.y2 = p2t.y;
11652
+ } else if (elm.type === "cad_component") {
11653
+ var newPos = (0, import_transformation_matrix2.applyToPoint)(matrix, {
11654
+ x: elm.position.x,
11655
+ y: elm.position.y
11656
+ });
11657
+ elm.position.x = newPos.x;
11658
+ elm.position.y = newPos.y;
11659
+ }
11660
+ return elm;
11661
+ };
11662
+ var getBoundsOfPcbElements = function(elements) {
11663
+ var minX = Number.POSITIVE_INFINITY;
11664
+ var minY = Number.POSITIVE_INFINITY;
11665
+ var maxX = Number.NEGATIVE_INFINITY;
11666
+ var maxY = Number.NEGATIVE_INFINITY;
11667
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
11668
+ try {
11669
+ for(var _iterator = elements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
11670
+ var elm = _step.value;
11671
+ if (!elm.type.startsWith("pcb_")) continue;
11672
+ if ("x" in elm && "y" in elm) {
11673
+ minX = Math.min(minX, elm.x);
11674
+ minY = Math.min(minY, elm.y);
11675
+ maxX = Math.max(maxX, elm.x);
11676
+ maxY = Math.max(maxY, elm.y);
11677
+ if ("width" in elm) {
11678
+ maxX = Math.max(maxX, elm.x + elm.width);
11679
+ }
11680
+ if ("height" in elm) {
11681
+ maxY = Math.max(maxY, elm.y + elm.height);
11682
+ }
11683
+ if ("radius" in elm) {
11684
+ minX = Math.min(minX, elm.x - elm.radius);
11685
+ minY = Math.min(minY, elm.y - elm.radius);
11686
+ maxX = Math.max(maxX, elm.x + elm.radius);
11687
+ maxY = Math.max(maxY, elm.y + elm.radius);
11688
+ }
11689
+ } else if (elm.type === "pcb_trace") {
11690
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
11691
+ try {
11692
+ for(var _iterator1 = elm.route[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
11693
+ var point2 = _step1.value;
11694
+ minX = Math.min(minX, point2.x);
11695
+ minY = Math.min(minY, point2.y);
11696
+ maxX = Math.max(maxX, point2.x);
11697
+ maxY = Math.max(maxY, point2.y);
11698
+ }
11699
+ } catch (err) {
11700
+ _didIteratorError1 = true;
11701
+ _iteratorError1 = err;
11702
+ } finally{
11703
+ try {
11704
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
11705
+ _iterator1.return();
11706
+ }
11707
+ } finally{
11708
+ if (_didIteratorError1) {
11709
+ throw _iteratorError1;
11710
+ }
11711
+ }
11712
+ }
11713
+ }
11714
+ }
11715
+ } catch (err) {
11716
+ _didIteratorError = true;
11717
+ _iteratorError = err;
11718
+ } finally{
11719
+ try {
11720
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
11721
+ _iterator.return();
11722
+ }
11723
+ } finally{
11724
+ if (_didIteratorError) {
11725
+ throw _iteratorError;
11726
+ }
11727
+ }
11728
+ }
11729
+ return {
11730
+ minX: minX,
11731
+ minY: minY,
11732
+ maxX: maxX,
11733
+ maxY: maxY
11734
+ };
11735
+ };
12271
11736
  // src/lib/util/expand-stroke.ts
12272
11737
  function getExpandedStroke(strokeInput, defaultWidth) {
12273
11738
  if (strokeInput.length < 2) {
@@ -12349,14 +11814,14 @@ function getExpandedStroke(strokeInput, defaultWidth) {
12349
11814
  // src/lib/convert-element-to-primitive.ts
12350
11815
  var globalPcbDrawingObjectCount = 0;
12351
11816
  var convertElementToPrimitives = function(element, allElements) {
12352
- var _pcb_port_get;
11817
+ var _su_default_pcb_port_get;
12353
11818
  var _parent_pcb_component = "pcb_component_id" in element ? allElements.find(function(elm) {
12354
11819
  return elm.type === "pcb_component" && elm.pcb_component_id === element.pcb_component_id;
12355
11820
  }) : void 0;
12356
11821
  var _parent_source_component = _parent_pcb_component && "source_component_id" in _parent_pcb_component ? allElements.find(function(elm) {
12357
11822
  return elm.type === "source_component" && elm.source_component_id === _parent_pcb_component.source_component_id;
12358
11823
  }) : void 0;
12359
- var _source_port_id = "source_port_id" in element ? element.source_port_id : "pcb_port_id" in element ? (_pcb_port_get = (0, import_soup_util.su)(allElements).pcb_port.get(element.pcb_port_id)) === null || _pcb_port_get === void 0 ? void 0 : _pcb_port_get.source_port_id : void 0;
11824
+ var _source_port_id = "source_port_id" in element ? element.source_port_id : "pcb_port_id" in element ? (_su_default_pcb_port_get = su_default(allElements).pcb_port.get(element.pcb_port_id)) === null || _su_default_pcb_port_get === void 0 ? void 0 : _su_default_pcb_port_get.source_port_id : void 0;
12360
11825
  var _source_port = _source_port_id ? allElements.find(function(e) {
12361
11826
  return e.type === "source_port" && e.source_port_id === _source_port_id;
12362
11827
  }) : void 0;
@@ -12876,7 +12341,7 @@ var convertElementToPrimitives = function(element, allElements) {
12876
12341
  // src/components/MouseElementTracker.tsx
12877
12342
  var import_react6 = require("react");
12878
12343
  var import_react7 = require("react");
12879
- var import_transformation_matrix2 = require("transformation-matrix");
12344
+ var import_transformation_matrix3 = require("transformation-matrix");
12880
12345
  // src/components/ElementOverlayBox.tsx
12881
12346
  var import_react5 = require("react");
12882
12347
  var import_jsx_runtime3 = require("react/jsx-runtime");
@@ -12941,6 +12406,7 @@ var HighlightedPrimitiveBoxWithText = function(param) {
12941
12406
  var color2 = (_layerColorHightlightMap_primitive__element_layer = layerColorHightlightMap[primitive === null || primitive === void 0 ? void 0 : (_primitive__element = primitive._element) === null || _primitive__element === void 0 ? void 0 : _primitive__element.layer]) !== null && _layerColorHightlightMap_primitive__element_layer !== void 0 ? _layerColorHightlightMap_primitive__element_layer : "red";
12942
12407
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", {
12943
12408
  style: {
12409
+ zIndex: 98,
12944
12410
  position: "absolute",
12945
12411
  left: x - w / 2 - 8,
12946
12412
  top: y - h / 2 - 8,
@@ -13013,7 +12479,7 @@ var MouseElementTracker = function(param) {
13013
12479
  if (((_primitive__element = primitive._element) === null || _primitive__element === void 0 ? void 0 : _primitive__element.type) === "pcb_via") return "continue";
13014
12480
  if (((_primitive__element1 = primitive._element) === null || _primitive__element1 === void 0 ? void 0 : _primitive__element1.type) === "pcb_component") return "continue";
13015
12481
  if ((primitive === null || primitive === void 0 ? void 0 : primitive.layer) === "drill") return "continue";
13016
- var screenPos = (0, import_transformation_matrix2.applyToPoint)(transform, primitive);
12482
+ var screenPos = (0, import_transformation_matrix3.applyToPoint)(transform, primitive);
13017
12483
  var w = "w" in primitive ? primitive.w : "r" in primitive ? primitive.r * 2 : 0;
13018
12484
  var h = "h" in primitive ? primitive.h : "r" in primitive ? primitive.r * 2 : 0;
13019
12485
  var screenSize = {
@@ -13060,7 +12526,7 @@ var MouseElementTracker = function(param) {
13060
12526
  var rect = e.currentTarget.getBoundingClientRect();
13061
12527
  var x = e.clientX - rect.left;
13062
12528
  var y = e.clientY - rect.top;
13063
- var rwPoint = (0, import_transformation_matrix2.applyToPoint)((0, import_transformation_matrix2.inverse)(transform), {
12529
+ var rwPoint = (0, import_transformation_matrix3.applyToPoint)((0, import_transformation_matrix3.inverse)(transform), {
13064
12530
  x: x,
13065
12531
  y: y
13066
12532
  });
@@ -13112,11 +12578,11 @@ var MouseElementTracker = function(param) {
13112
12578
  };
13113
12579
  // src/components/DimensionOverlay.tsx
13114
12580
  var import_react8 = require("react");
13115
- var import_transformation_matrix3 = require("transformation-matrix");
12581
+ var import_transformation_matrix4 = require("transformation-matrix");
13116
12582
  var import_jsx_runtime5 = require("react/jsx-runtime");
13117
12583
  var DimensionOverlay = function(param) {
13118
12584
  var children = param.children, transform = param.transform;
13119
- if (!transform) transform = (0, import_transformation_matrix3.identity)();
12585
+ if (!transform) transform = (0, import_transformation_matrix4.identity)();
13120
12586
  var _ref = _sliced_to_array((0, import_react8.useState)(false), 2), dimensionToolVisible = _ref[0], setDimensionToolVisible = _ref[1];
13121
12587
  var _ref1 = _sliced_to_array((0, import_react8.useState)(false), 2), dimensionToolStretching = _ref1[0], setDimensionToolStretching = _ref1[1];
13122
12588
  var _ref2 = _sliced_to_array((0, import_react8.useState)({
@@ -13184,8 +12650,8 @@ var DimensionOverlay = function(param) {
13184
12650
  }, [
13185
12651
  containerRef
13186
12652
  ]);
13187
- var screenDStart = (0, import_transformation_matrix3.applyToPoint)(transform, dStart);
13188
- var screenDEnd = (0, import_transformation_matrix3.applyToPoint)(transform, dEnd);
12653
+ var screenDStart = (0, import_transformation_matrix4.applyToPoint)(transform, dStart);
12654
+ var screenDEnd = (0, import_transformation_matrix4.applyToPoint)(transform, dEnd);
13189
12655
  var arrowScreenBounds = {
13190
12656
  left: Math.min(screenDStart.x, screenDEnd.x),
13191
12657
  right: Math.max(screenDStart.x, screenDEnd.x),
@@ -13218,7 +12684,7 @@ var DimensionOverlay = function(param) {
13218
12684
  var rect = e.currentTarget.getBoundingClientRect();
13219
12685
  var x = e.clientX - rect.left;
13220
12686
  var y = e.clientY - rect.top;
13221
- var rwPoint = (0, import_transformation_matrix3.applyToPoint)((0, import_transformation_matrix3.inverse)(transform), {
12687
+ var rwPoint = (0, import_transformation_matrix4.applyToPoint)((0, import_transformation_matrix4.inverse)(transform), {
13222
12688
  x: x,
13223
12689
  y: y
13224
12690
  });
@@ -13380,7 +12846,7 @@ var import_css = require("@emotion/css");
13380
12846
  // package.json
13381
12847
  var package_default = {
13382
12848
  name: "@tscircuit/pcb-viewer",
13383
- version: "1.10.7",
12849
+ version: "1.10.9",
13384
12850
  main: "dist/index.js",
13385
12851
  repository: "tscircuit/pcb-viewer",
13386
12852
  license: "MIT",
@@ -13403,12 +12869,10 @@ var package_default = {
13403
12869
  "@storybook/nextjs": "^8.0.6",
13404
12870
  "@storybook/react": "^8.0.6",
13405
12871
  "@swc/core": "^1.4.12",
13406
- "@tscircuit/builder": "^1.11.4",
13407
- "@tscircuit/core": "^0.0.88",
12872
+ "@tscircuit/core": "^0.0.106",
13408
12873
  "@tscircuit/eagle-xml-converter": "^0.0.6",
13409
12874
  "@tscircuit/props": "^0.0.46",
13410
- "@tscircuit/react-fiber": "^1.1.25",
13411
- "@tscircuit/soup-util": "^0.0.13",
12875
+ "@tscircuit/soup-util": "^0.0.32",
13412
12876
  "@types/color": "^3.0.6",
13413
12877
  "@types/node": "18.7.23",
13414
12878
  "@types/react": "^18.3.3",
@@ -13425,9 +12889,8 @@ var package_default = {
13425
12889
  zod: "^3.23.5"
13426
12890
  },
13427
12891
  peerDependencies: {
13428
- "@tscircuit/builder": "*",
13429
- "@tscircuit/react-fiber": "*",
13430
- react: "*"
12892
+ react: "*",
12893
+ "@tscircuit/core": "*"
13431
12894
  },
13432
12895
  dependencies: {
13433
12896
  "@emotion/css": "^11.11.2",
@@ -13744,7 +13207,7 @@ var ToolbarOverlay = function(param) {
13744
13207
  // src/components/ErrorOverlay.tsx
13745
13208
  var import_css2 = require("@emotion/css");
13746
13209
  var import_react11 = require("react");
13747
- var import_transformation_matrix4 = require("transformation-matrix");
13210
+ var import_transformation_matrix5 = require("transformation-matrix");
13748
13211
  var import_jsx_runtime7 = require("react/jsx-runtime");
13749
13212
  var ErrorSVG = function(param) {
13750
13213
  var screenPort1 = param.screenPort1, screenPort2 = param.screenPort2, errorCenter = param.errorCenter, canLineBeDrawn = param.canLineBeDrawn;
@@ -13793,7 +13256,7 @@ var ErrorSVG = function(param) {
13793
13256
  };
13794
13257
  var ErrorOverlay = function(param) {
13795
13258
  var children = param.children, transform = param.transform, elements = param.elements;
13796
- if (!transform) transform = (0, import_transformation_matrix4.identity)();
13259
+ if (!transform) transform = (0, import_transformation_matrix5.identity)();
13797
13260
  var containerRef = (0, import_react11.useRef)(null);
13798
13261
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", {
13799
13262
  style: {
@@ -13813,11 +13276,11 @@ var ErrorOverlay = function(param) {
13813
13276
  return el2.type === "pcb_port" && el2.pcb_port_id === (pcb_port_ids === null || pcb_port_ids === void 0 ? void 0 : pcb_port_ids[1]);
13814
13277
  });
13815
13278
  if (!port1 || !port2) return null;
13816
- var screenPort1 = (0, import_transformation_matrix4.applyToPoint)(transform, {
13279
+ var screenPort1 = (0, import_transformation_matrix5.applyToPoint)(transform, {
13817
13280
  x: port1.x,
13818
13281
  y: port1.y
13819
13282
  });
13820
- var screenPort2 = (0, import_transformation_matrix4.applyToPoint)(transform, {
13283
+ var screenPort2 = (0, import_transformation_matrix5.applyToPoint)(transform, {
13821
13284
  x: port2.x,
13822
13285
  y: port2.y
13823
13286
  });
@@ -13857,7 +13320,7 @@ var ErrorOverlay = function(param) {
13857
13320
  };
13858
13321
  // src/components/EditPlacementOverlay.tsx
13859
13322
  var import_react12 = require("react");
13860
- var import_transformation_matrix5 = require("transformation-matrix");
13323
+ var import_transformation_matrix6 = require("transformation-matrix");
13861
13324
  var import_jsx_runtime8 = require("react/jsx-runtime");
13862
13325
  var isInsideOf = function(pcb_component2, point2) {
13863
13326
  var padding = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
@@ -13871,7 +13334,7 @@ var isInsideOf = function(pcb_component2, point2) {
13871
13334
  };
13872
13335
  var EditPlacementOverlay = function(param) {
13873
13336
  var children = param.children, disabledProp = param.disabled, transform = param.transform, soup = param.soup, cancelPanDrag = param.cancelPanDrag, onCreateEditEvent = param.onCreateEditEvent, onModifyEditEvent = param.onModifyEditEvent;
13874
- if (!transform) transform = (0, import_transformation_matrix5.identity)();
13337
+ if (!transform) transform = (0, import_transformation_matrix6.identity)();
13875
13338
  var containerRef = (0, import_react12.useRef)(null);
13876
13339
  var _ref = _sliced_to_array((0, import_react12.useState)(null), 2), activePcbComponentId = _ref[0], setActivePcbComponent = _ref[1];
13877
13340
  var _ref1 = _sliced_to_array((0, import_react12.useState)(null), 2), dragState = _ref1[0], setDragState = _ref1[1];
@@ -13898,7 +13361,7 @@ var EditPlacementOverlay = function(param) {
13898
13361
  var x = e.clientX - rect.left;
13899
13362
  var y = e.clientY - rect.top;
13900
13363
  if (isNaN(x) || isNaN(y)) return;
13901
- var rwMousePoint = (0, import_transformation_matrix5.applyToPoint)((0, import_transformation_matrix5.inverse)(transform), {
13364
+ var rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), {
13902
13365
  x: x,
13903
13366
  y: y
13904
13367
  });
@@ -13959,7 +13422,7 @@ var EditPlacementOverlay = function(param) {
13959
13422
  var x = e.clientX - rect.left;
13960
13423
  var y = e.clientY - rect.top;
13961
13424
  if (isNaN(x) || isNaN(y)) return;
13962
- var rwMousePoint = (0, import_transformation_matrix5.applyToPoint)((0, import_transformation_matrix5.inverse)(transform), {
13425
+ var rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), {
13963
13426
  x: x,
13964
13427
  y: y
13965
13428
  });
@@ -13992,7 +13455,7 @@ var EditPlacementOverlay = function(param) {
13992
13455
  return e.type === "pcb_component";
13993
13456
  }).map(function(e) {
13994
13457
  if (!(e === null || e === void 0 ? void 0 : e.center)) return null;
13995
- var projectedCenter = (0, import_transformation_matrix5.applyToPoint)(transform, e.center);
13458
+ var projectedCenter = (0, import_transformation_matrix6.applyToPoint)(transform, e.center);
13996
13459
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", {
13997
13460
  style: {
13998
13461
  position: "absolute",
@@ -14011,9 +13474,8 @@ var EditPlacementOverlay = function(param) {
14011
13474
  });
14012
13475
  };
14013
13476
  // src/components/EditTraceHintOverlay.tsx
14014
- var import_soup_util2 = __toESM(require_dist());
14015
13477
  var import_react15 = require("react");
14016
- var import_transformation_matrix6 = require("transformation-matrix");
13478
+ var import_transformation_matrix7 = require("transformation-matrix");
14017
13479
  // src/components/HotkeyActionMenu.tsx
14018
13480
  var import_css3 = require("@emotion/css");
14019
13481
  var import_react13 = require("react");
@@ -14122,7 +13584,7 @@ var isInsideOfPlatedHole = function(hole, point2) {
14122
13584
  var EditTraceHintOverlay = function(param) {
14123
13585
  var children = param.children, disabledProp = param.disabled, transform = param.transform, soup = param.soup, cancelPanDrag = param.cancelPanDrag, onCreateEditEvent = param.onCreateEditEvent, onModifyEditEvent = param.onModifyEditEvent;
14124
13586
  var _containerRef_current;
14125
- if (!transform) transform = (0, import_transformation_matrix6.identity)();
13587
+ if (!transform) transform = (0, import_transformation_matrix7.identity)();
14126
13588
  var containerRef = (0, import_react15.useRef)(null);
14127
13589
  var containerBounds = (_containerRef_current = containerRef.current) === null || _containerRef_current === void 0 ? void 0 : _containerRef_current.getBoundingClientRect();
14128
13590
  var _ref = _sliced_to_array((0, import_react15.useState)(null), 2), selectedElement = _ref[0], setSelectedElement = _ref[1];
@@ -14136,8 +13598,8 @@ var EditTraceHintOverlay = function(param) {
14136
13598
  var disabled = disabledProp || !in_edit_trace_mode;
14137
13599
  var ogCenterScreen, dragEndScreen;
14138
13600
  if ((dragState === null || dragState === void 0 ? void 0 : dragState.originalCenter) && (dragState === null || dragState === void 0 ? void 0 : dragState.dragEnd)) {
14139
- ogCenterScreen = (0, import_transformation_matrix6.applyToPoint)(transform, dragState === null || dragState === void 0 ? void 0 : dragState.originalCenter);
14140
- dragEndScreen = (0, import_transformation_matrix6.applyToPoint)(transform, dragState === null || dragState === void 0 ? void 0 : dragState.dragEnd);
13601
+ ogCenterScreen = (0, import_transformation_matrix7.applyToPoint)(transform, dragState === null || dragState === void 0 ? void 0 : dragState.originalCenter);
13602
+ dragEndScreen = (0, import_transformation_matrix7.applyToPoint)(transform, dragState === null || dragState === void 0 ? void 0 : dragState.dragEnd);
14141
13603
  }
14142
13604
  (0, import_react15.useEffect)(function() {
14143
13605
  var keyDown = function keyDown(e) {
@@ -14166,7 +13628,7 @@ var EditTraceHintOverlay = function(param) {
14166
13628
  var x = e.clientX - rect.left;
14167
13629
  var y = e.clientY - rect.top;
14168
13630
  if (isNaN(x) || isNaN(y)) return;
14169
- var rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), {
13631
+ var rwMousePoint = (0, import_transformation_matrix7.applyToPoint)((0, import_transformation_matrix7.inverse)(transform), {
14170
13632
  x: x,
14171
13633
  y: y
14172
13634
  });
@@ -14231,7 +13693,7 @@ var EditTraceHintOverlay = function(param) {
14231
13693
  var x = e.clientX - rect.left;
14232
13694
  var y = e.clientY - rect.top;
14233
13695
  if (isNaN(x) || isNaN(y)) return;
14234
- var rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), {
13696
+ var rwMousePoint = (0, import_transformation_matrix7.applyToPoint)((0, import_transformation_matrix7.inverse)(transform), {
14235
13697
  x: x,
14236
13698
  y: y
14237
13699
  });
@@ -14250,14 +13712,14 @@ var EditTraceHintOverlay = function(param) {
14250
13712
  var x = e.clientX - rect.left;
14251
13713
  var y = e.clientY - rect.top;
14252
13714
  if (isNaN(x) || isNaN(y)) return;
14253
- var rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), {
13715
+ var rwMousePoint = (0, import_transformation_matrix7.applyToPoint)((0, import_transformation_matrix7.inverse)(transform), {
14254
13716
  x: x,
14255
13717
  y: y
14256
13718
  });
14257
13719
  if (dragState) {
14258
13720
  cancelPanDrag();
14259
13721
  var _dragState_editEvent_route_slice_;
14260
- var lastPointScreen = (0, import_transformation_matrix6.applyToPoint)(transform, (_dragState_editEvent_route_slice_ = dragState.editEvent.route.slice(-1)[0]) !== null && _dragState_editEvent_route_slice_ !== void 0 ? _dragState_editEvent_route_slice_ : dragState.originalCenter);
13722
+ var lastPointScreen = (0, import_transformation_matrix7.applyToPoint)(transform, (_dragState_editEvent_route_slice_ = dragState.editEvent.route.slice(-1)[0]) !== null && _dragState_editEvent_route_slice_ !== void 0 ? _dragState_editEvent_route_slice_ : dragState.originalCenter);
14261
13723
  var distanceFromLastPoint = Math.sqrt(Math.pow(x - lastPointScreen.x, 2) + Math.pow(y - lastPointScreen.y, 2));
14262
13724
  if (distanceFromLastPoint < 20) {
14263
13725
  onCreateEditEvent(_object_spread_props(_object_spread({}, dragState.editEvent), {
@@ -14295,13 +13757,13 @@ var EditTraceHintOverlay = function(param) {
14295
13757
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", {
14296
13758
  stroke: "red",
14297
13759
  d: "M ".concat(ogCenterScreen.x, " ").concat(ogCenterScreen.y, " ").concat(dragState === null || dragState === void 0 ? void 0 : dragState.editEvent.route.map(function(p) {
14298
- return (0, import_transformation_matrix6.applyToPoint)(transform, p);
13760
+ return (0, import_transformation_matrix7.applyToPoint)(transform, p);
14299
13761
  }).map(function(p) {
14300
13762
  return "L ".concat(p.x, " ").concat(p.y);
14301
13763
  }).join(" "), " L ").concat(dragEndScreen.x, " ").concat(dragEndScreen.y)
14302
13764
  }),
14303
13765
  dragState === null || dragState === void 0 ? void 0 : dragState.editEvent.route.map(function(r, i) {
14304
- var rScreen = (0, import_transformation_matrix6.applyToPoint)(transform, r);
13766
+ var rScreen = (0, import_transformation_matrix7.applyToPoint)(transform, r);
14305
13767
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react15.Fragment, {
14306
13768
  children: [
14307
13769
  r.via && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", {
@@ -14348,8 +13810,8 @@ var EditTraceHintOverlay = function(param) {
14348
13810
  return e.type === "pcb_trace_hint";
14349
13811
  }).map(function(e) {
14350
13812
  var route = e.route;
14351
- var pcb_port2 = (0, import_soup_util2.su)(soup).pcb_port.get(e.pcb_port_id);
14352
- var pcb_port_screen = (0, import_transformation_matrix6.applyToPoint)(transform, pcb_port2);
13813
+ var pcb_port2 = su_default(soup).pcb_port.get(e.pcb_port_id);
13814
+ var pcb_port_screen = (0, import_transformation_matrix7.applyToPoint)(transform, pcb_port2);
14353
13815
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react15.Fragment, {
14354
13816
  children: [
14355
13817
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("rect", {
@@ -14362,13 +13824,13 @@ var EditTraceHintOverlay = function(param) {
14362
13824
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", {
14363
13825
  stroke: "red",
14364
13826
  d: "M ".concat(pcb_port_screen.x, " ").concat(pcb_port_screen.y, " ").concat(route.map(function(r) {
14365
- return (0, import_transformation_matrix6.applyToPoint)(transform, r);
13827
+ return (0, import_transformation_matrix7.applyToPoint)(transform, r);
14366
13828
  }).map(function(r) {
14367
13829
  return "L ".concat(r.x, " ").concat(r.y);
14368
13830
  }).join(" "))
14369
13831
  }, "path-".concat(e.pcb_port_id)),
14370
13832
  route.map(function(r) {
14371
- return _object_spread({}, r, (0, import_transformation_matrix6.applyToPoint)(transform, r));
13833
+ return _object_spread({}, r, (0, import_transformation_matrix7.applyToPoint)(transform, r));
14372
13834
  }).map(function(r, i) {
14373
13835
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react15.Fragment, {
14374
13836
  children: [
@@ -14414,8 +13876,7 @@ var EditTraceHintOverlay = function(param) {
14414
13876
  });
14415
13877
  };
14416
13878
  // src/components/RatsNestOverlay.tsx
14417
- var import_transformation_matrix7 = require("transformation-matrix");
14418
- var import_soup_util3 = __toESM(require_dist());
13879
+ var import_transformation_matrix8 = require("transformation-matrix");
14419
13880
  var import_jsx_runtime12 = require("react/jsx-runtime");
14420
13881
  var RatsNestOverlay = function(param) {
14421
13882
  var transform = param.transform, soup = param.soup, children = param.children;
@@ -14423,14 +13884,14 @@ var RatsNestOverlay = function(param) {
14423
13884
  return s.is_showing_rats_nest;
14424
13885
  });
14425
13886
  if (!soup || !isShowingRatsNest) return children;
14426
- if (!transform) transform = (0, import_transformation_matrix7.identity)();
14427
- var sourceTraces = (0, import_soup_util3.su)(soup).source_trace.list();
13887
+ if (!transform) transform = (0, import_transformation_matrix8.identity)();
13888
+ var sourceTraces = su_default(soup).source_trace.list();
14428
13889
  var groups = [];
14429
13890
  sourceTraces.forEach(function(sourceTrace) {
14430
13891
  if (sourceTrace.connected_source_port_ids) {
14431
13892
  var group = [];
14432
13893
  sourceTrace.connected_source_port_ids.forEach(function(source_port_id) {
14433
- var pcbPort = (0, import_soup_util3.su)(soup).pcb_port.getWhere({
13894
+ var pcbPort = su_default(soup).pcb_port.getWhere({
14434
13895
  source_port_id: source_port_id
14435
13896
  });
14436
13897
  if (pcbPort) group.push(pcbPort);
@@ -14457,7 +13918,7 @@ var RatsNestOverlay = function(param) {
14457
13918
  },
14458
13919
  children: groups.map(function(group, index) {
14459
13920
  var points = group.map(function(port) {
14460
- return (0, import_transformation_matrix7.applyToPoint)(transform, {
13921
+ return (0, import_transformation_matrix8.applyToPoint)(transform, {
14461
13922
  x: port.x,
14462
13923
  y: port.y
14463
13924
  });
@@ -14624,7 +14085,7 @@ var CanvasElementsRenderer = function(props) {
14624
14085
  });
14625
14086
  };
14626
14087
  // src/PCBViewer.tsx
14627
- var import_use_mouse_matrix_transform = __toESM(require_dist2());
14088
+ var import_use_mouse_matrix_transform = __toESM(require_dist());
14628
14089
  // node_modules/react-use/esm/misc/util.js
14629
14090
  var noop = function noop() {};
14630
14091
  var isBrowser = typeof window !== "undefined";
@@ -14685,13 +14146,10 @@ var useMeasure_default = isBrowser && typeof window.ResizeObserver !== "undefine
14685
14146
  ];
14686
14147
  };
14687
14148
  // src/PCBViewer.tsx
14688
- var import_transformation_matrix9 = require("transformation-matrix");
14689
- var import_builder2 = require("@tscircuit/builder");
14149
+ var import_transformation_matrix10 = require("transformation-matrix");
14690
14150
  // src/lib/apply-edit-events.ts
14691
- var import_soup_util5 = __toESM(require_dist());
14692
- var import_transformation_matrix8 = require("transformation-matrix");
14151
+ var import_transformation_matrix9 = require("transformation-matrix");
14693
14152
  // src/lib/apply-edit-events/apply-edit-trace-hint-event.ts
14694
- var import_soup_util4 = __toESM(require_dist());
14695
14153
  var applyTraceHintEditEvent = function(soup, edit_event) {
14696
14154
  var existing_trace_hint = soup.find(function(th) {
14697
14155
  return th.type === "pcb_trace_hint" && th.pcb_trace_hint_id === edit_event.pcb_trace_hint_id;
@@ -14703,7 +14161,7 @@ var applyTraceHintEditEvent = function(soup, edit_event) {
14703
14161
  }) : e;
14704
14162
  });
14705
14163
  } else {
14706
- var pcb_port2 = (0, import_soup_util4.su)(soup).pcb_port.get(edit_event.pcb_port_id);
14164
+ var pcb_port2 = su_default(soup).pcb_port.get(edit_event.pcb_port_id);
14707
14165
  soup = soup.filter(function(e) {
14708
14166
  return !(e.type === "pcb_trace_hint" && e.pcb_port_id === edit_event.pcb_port_id);
14709
14167
  }).concat([
@@ -14726,9 +14184,9 @@ var applyEditEvents = function(soup, edit_events) {
14726
14184
  var _loop = function() {
14727
14185
  var edit_event = _step.value;
14728
14186
  if (edit_event.pcb_edit_event_type === "edit_component_location") {
14729
- var mat = (0, import_transformation_matrix8.translate)(edit_event.new_center.x - edit_event.original_center.x, edit_event.new_center.y - edit_event.original_center.y);
14187
+ var mat = (0, import_transformation_matrix9.translate)(edit_event.new_center.x - edit_event.original_center.x, edit_event.new_center.y - edit_event.original_center.y);
14730
14188
  soup = soup.map(function(e) {
14731
- return e.pcb_component_id !== edit_event.pcb_component_id ? e : (0, import_soup_util5.transformPCBElement)(e, mat);
14189
+ return e.pcb_component_id !== edit_event.pcb_component_id ? e : transformPCBElement(e, mat);
14732
14190
  });
14733
14191
  } else if (edit_event.pcb_edit_event_type === "edit_trace_hint") {
14734
14192
  soup = applyTraceHintEditEvent(soup, edit_event);
@@ -14752,20 +14210,28 @@ var applyEditEvents = function(soup, edit_events) {
14752
14210
  return soup;
14753
14211
  };
14754
14212
  // src/PCBViewer.tsx
14213
+ var import_core = require("@tscircuit/core");
14755
14214
  var import_jsx_runtime14 = require("react/jsx-runtime");
14756
- var defaultTransform = (0, import_transformation_matrix9.compose)((0, import_transformation_matrix9.translate)(400, 300), (0, import_transformation_matrix9.scale)(40, -40));
14215
+ var defaultTransform = (0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(400, 300), (0, import_transformation_matrix10.scale)(40, -40));
14757
14216
  var PCBViewer = function(param) {
14758
14217
  var children = param.children, soup = param.soup, _param_height = param.height, height = _param_height === void 0 ? 600 : _param_height, initialState = param.initialState, _param_allowEditing = param.allowEditing, allowEditing = _param_allowEditing === void 0 ? true : _param_allowEditing, editEventsProp = param.editEvents, onEditEventsChanged = param.onEditEventsChanged;
14759
- var _ref = _sliced_to_array((0, import_react20.useState)([]), 2), stateElements = _ref[0], setStateElements = _ref[1];
14218
+ var _ref = (0, import_core.useRenderedCircuit)(children), circuitJsonFromChildren = _ref.circuitJson, errorFromChildren = _ref.error;
14219
+ var _ref1;
14220
+ var stateElements = (_ref1 = circuitJsonFromChildren !== null && circuitJsonFromChildren !== void 0 ? circuitJsonFromChildren : soup) !== null && _ref1 !== void 0 ? _ref1 : [];
14760
14221
  var _useMeasure_default = _sliced_to_array(useMeasure_default(), 2), ref = _useMeasure_default[0], refDimensions = _useMeasure_default[1];
14761
- var _ref1 = _sliced_to_array((0, import_react20.useState)(defaultTransform), 2), transform = _ref1[0], setTransformInternal = _ref1[1];
14762
- var _ref2 = (0, import_use_mouse_matrix_transform.default)({
14222
+ var _ref2 = _sliced_to_array((0, import_react20.useState)(defaultTransform), 2), transform = _ref2[0], setTransformInternal = _ref2[1];
14223
+ var _ref3 = (0, import_use_mouse_matrix_transform.default)({
14763
14224
  transform: transform,
14764
14225
  onSetTransform: setTransformInternal
14765
- }), transformRef = _ref2.ref, setTransform = _ref2.setTransform, cancelPanDrag = _ref2.cancelDrag;
14766
- var _ref3 = _sliced_to_array((0, import_react20.useState)([]), 2), editEvents = _ref3[0], setEditEvents = _ref3[1];
14226
+ }), transformRef = _ref3.ref, setTransform = _ref3.setTransform, cancelPanDrag = _ref3.cancelDrag;
14227
+ var _ref4 = _sliced_to_array((0, import_react20.useState)([]), 2), editEvents = _ref4[0], setEditEvents = _ref4[1];
14767
14228
  editEvents = editEventsProp !== null && editEventsProp !== void 0 ? editEventsProp : editEvents;
14768
- var _ref4 = _sliced_to_array((0, import_react20.useState)(null), 2), error = _ref4[0], setError = _ref4[1];
14229
+ var _ref5 = _sliced_to_array((0, import_react20.useState)(null), 2), error = _ref5[0], setError = _ref5[1];
14230
+ (0, import_react20.useEffect)(function() {
14231
+ setError(errorFromChildren ? errorFromChildren.toString() : null);
14232
+ }, [
14233
+ errorFromChildren
14234
+ ]);
14769
14235
  var resetTransform = function() {
14770
14236
  var elmBounds = (refDimensions === null || refDimensions === void 0 ? void 0 : refDimensions.width) > 0 ? refDimensions : {
14771
14237
  width: 500,
@@ -14773,58 +14239,26 @@ var PCBViewer = function(param) {
14773
14239
  };
14774
14240
  var _ref = elements.some(function(e) {
14775
14241
  return e.type.startsWith("pcb_");
14776
- }) ? (0, import_builder2.findBoundsAndCenter)(elements.filter(function(e) {
14242
+ }) ? getBoundsOfPcbElements(elements.filter(function(e) {
14777
14243
  return e.type.startsWith("pcb_");
14778
14244
  })) : {
14779
- center: {
14780
- x: 0,
14781
- y: 0
14782
- },
14783
- width: 1e-3,
14784
- height: 1e-3
14785
- }, center = _ref.center, width = _ref.width, height2 = _ref.height;
14245
+ minX: -1e-3,
14246
+ minY: -1e-3,
14247
+ maxX: 1e-3,
14248
+ maxY: 1e-3
14249
+ }, minX = _ref.minX, minY = _ref.minY, maxX = _ref.maxX, maxY = _ref.maxY;
14250
+ var width = maxX - minX;
14251
+ var height2 = maxY - minY;
14252
+ var center = {
14253
+ x: (minX + maxX) / 2,
14254
+ y: (minY + maxY) / 2
14255
+ };
14786
14256
  var _elmBounds_width, _elmBounds_height;
14787
14257
  var scaleFactor = Math.min(((_elmBounds_width = elmBounds.width) !== null && _elmBounds_width !== void 0 ? _elmBounds_width : 0) / width, ((_elmBounds_height = elmBounds.height) !== null && _elmBounds_height !== void 0 ? _elmBounds_height : 0) / height2, 100) * 0.75;
14788
14258
  var _elmBounds_width1, _elmBounds_height1;
14789
- setTransform((0, import_transformation_matrix9.compose)((0, import_transformation_matrix9.translate)(((_elmBounds_width1 = elmBounds.width) !== null && _elmBounds_width1 !== void 0 ? _elmBounds_width1 : 0) / 2, ((_elmBounds_height1 = elmBounds.height) !== null && _elmBounds_height1 !== void 0 ? _elmBounds_height1 : 0) / 2), // translate(100, 0),
14790
- (0, import_transformation_matrix9.scale)(scaleFactor, -scaleFactor, 0, 0), (0, import_transformation_matrix9.translate)(-center.x, -center.y)));
14259
+ setTransform((0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(((_elmBounds_width1 = elmBounds.width) !== null && _elmBounds_width1 !== void 0 ? _elmBounds_width1 : 0) / 2, ((_elmBounds_height1 = elmBounds.height) !== null && _elmBounds_height1 !== void 0 ? _elmBounds_height1 : 0) / 2), // translate(100, 0),
14260
+ (0, import_transformation_matrix10.scale)(scaleFactor, -scaleFactor, 0, 0), (0, import_transformation_matrix10.translate)(-center.x, -center.y)));
14791
14261
  };
14792
- (0, import_react20.useEffect)(function() {
14793
- var doRender = function doRender() {
14794
- return _doRender.apply(this, arguments);
14795
- };
14796
- if (!children || (children === null || children === void 0 ? void 0 : children.length) === 0) return;
14797
- function _doRender() {
14798
- _doRender = _async_to_generator(function() {
14799
- var projectBuilder;
14800
- return _ts_generator(this, function(_state) {
14801
- switch(_state.label){
14802
- case 0:
14803
- projectBuilder = (0, import_builder.createProjectBuilder)();
14804
- return [
14805
- 4,
14806
- (0, import_react_fiber.createRoot)().render(children, projectBuilder).then(function(elements2) {
14807
- setStateElements(elements2);
14808
- setError(null);
14809
- })
14810
- ];
14811
- case 1:
14812
- _state.sent();
14813
- return [
14814
- 2
14815
- ];
14816
- }
14817
- });
14818
- });
14819
- return _doRender.apply(this, arguments);
14820
- }
14821
- doRender().catch(function(e) {
14822
- setError(e.toString());
14823
- console.log(e.toString());
14824
- });
14825
- }, [
14826
- children
14827
- ]);
14828
14262
  (0, import_react20.useEffect)(function() {
14829
14263
  if (refDimensions && refDimensions.width !== 0 && (children || soup)) {
14830
14264
  resetTransform();