@tscircuit/core 0.0.375 → 0.0.377

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.d.ts CHANGED
@@ -12,7 +12,7 @@ import * as _tscircuit_layout from '@tscircuit/layout';
12
12
  import { ConnectivityMap } from 'circuit-json-to-connectivity-map';
13
13
  import { GraphicsObject } from 'graphics-debug';
14
14
 
15
- declare const orderedRenderPhases: readonly ["ReactSubtreesRender", "InitializePortsFromChildren", "CreateNetsFromProps", "CreateTracesFromProps", "CreateTraceHintsFromProps", "SourceRender", "SourceParentAttachment", "PortMatching", "SourceTraceRender", "SourceAddConnectivityMapKey", "SchematicComponentRender", "SchematicPortRender", "SchematicLayout", "SchematicTraceRender", "PcbComponentRender", "PcbPrimitiveRender", "PcbFootprintLayout", "PcbPortRender", "PcbPortAttachment", "PcbLayout", "PcbComponentSizeCalculation", "PcbBoardAutoSize", "PcbTraceRender", "PcbTraceHintRender", "PcbRouteNetIslands", "PcbDesignRuleChecks", "CadModelRender", "PartsEngineRender"];
15
+ declare const orderedRenderPhases: readonly ["ReactSubtreesRender", "InitializePortsFromChildren", "CreateNetsFromProps", "CreateTracesFromProps", "CreateTraceHintsFromProps", "SourceRender", "SourceParentAttachment", "PortMatching", "OptimizeSelectorCache", "SourceTraceRender", "SourceAddConnectivityMapKey", "SchematicComponentRender", "SchematicPortRender", "SchematicLayout", "SchematicTraceRender", "PcbComponentRender", "PcbPrimitiveRender", "PcbFootprintLayout", "PcbPortRender", "PcbPortAttachment", "PcbLayout", "PcbComponentSizeCalculation", "PcbBoardAutoSize", "PcbTraceRender", "PcbTraceHintRender", "PcbRouteNetIslands", "PcbDesignRuleChecks", "CadModelRender", "PartsEngineRender"];
16
16
  type RenderPhase = (typeof orderedRenderPhases)[number];
17
17
  type RenderPhaseFn<K extends RenderPhase = RenderPhase> = `doInitial${K}` | `update${K}` | `remove${K}`;
18
18
  type RenderPhaseStates = Record<RenderPhase, {
@@ -427,6 +427,7 @@ declare abstract class PrimitiveComponent<ZodProps extends ZodType = any> extend
427
427
  doesSelectorMatch(selector: string): boolean;
428
428
  getSubcircuit(): ISubcircuit;
429
429
  getGroup(): IGroup | null;
430
+ doInitialOptimizeSelectorCache(): void;
430
431
  _cachedSelectAllQueries: Map<string, PrimitiveComponent[]>;
431
432
  selectAll(selectorRaw: string): PrimitiveComponent[];
432
433
  _cachedSelectOneQueries: Map<string, PrimitiveComponent | null>;
package/dist/index.js CHANGED
@@ -74,6 +74,7 @@ var orderedRenderPhases = [
74
74
  "SourceRender",
75
75
  "SourceParentAttachment",
76
76
  "PortMatching",
77
+ "OptimizeSelectorCache",
77
78
  "SourceTraceRender",
78
79
  "SourceAddConnectivityMapKey",
79
80
  "SchematicComponentRender",
@@ -709,7 +710,7 @@ var cssSelectPrimitiveComponentAdapterOnlySubcircuits = {
709
710
 
710
711
  // lib/components/base-components/PrimitiveComponent/preprocessSelector.ts
711
712
  var preprocessSelector = (selector) => {
712
- return selector.replace(/ pin/g, " port").replace(/ subcircuit\./g, " group[isSubcircuit=true]").trim();
713
+ return selector.replace(/ pin/g, " port").replace(/ subcircuit\./g, " group[isSubcircuit=true]").replace(/([^ ])\>([^ ])/g, "$1 > $2").trim();
713
714
  };
714
715
 
715
716
  // lib/components/base-components/PrimitiveComponent/PrimitiveComponent.ts
@@ -1122,6 +1123,36 @@ var PrimitiveComponent2 = class extends Renderable {
1122
1123
  if (this.isGroup) return this;
1123
1124
  return this.parent?.getGroup?.() ?? null;
1124
1125
  }
1126
+ doInitialOptimizeSelectorCache() {
1127
+ if (!this.isSubcircuit) return;
1128
+ const ports = this.selectAll("port");
1129
+ for (const port of ports) {
1130
+ const parentAliases = port.parent?.getNameAndAliases();
1131
+ const portAliases = port.getNameAndAliases();
1132
+ if (!parentAliases) continue;
1133
+ for (const parentAlias of parentAliases) {
1134
+ for (const portAlias of portAliases) {
1135
+ const selectors = [
1136
+ `.${parentAlias} > .${portAlias}`,
1137
+ `.${parentAlias} .${portAlias}`
1138
+ ];
1139
+ for (const selector of selectors) {
1140
+ const ar = this._cachedSelectAllQueries.get(selector);
1141
+ if (ar) {
1142
+ ar.push(port);
1143
+ } else {
1144
+ this._cachedSelectAllQueries.set(selector, [port]);
1145
+ }
1146
+ }
1147
+ }
1148
+ }
1149
+ }
1150
+ for (const [selector, ports2] of this._cachedSelectAllQueries.entries()) {
1151
+ if (ports2.length === 1) {
1152
+ this._cachedSelectOneQueries.set(selector, ports2[0]);
1153
+ }
1154
+ }
1155
+ }
1125
1156
  _cachedSelectAllQueries = /* @__PURE__ */ new Map();
1126
1157
  selectAll(selectorRaw) {
1127
1158
  if (this._cachedSelectAllQueries.has(selectorRaw)) {
@@ -7637,7 +7668,7 @@ import { identity as identity4 } from "transformation-matrix";
7637
7668
  var package_default = {
7638
7669
  name: "@tscircuit/core",
7639
7670
  type: "module",
7640
- version: "0.0.374",
7671
+ version: "0.0.376",
7641
7672
  types: "dist/index.d.ts",
7642
7673
  main: "dist/index.js",
7643
7674
  module: "dist/index.js",
@@ -7672,7 +7703,6 @@ var package_default = {
7672
7703
  "chokidar-cli": "^3.0.0",
7673
7704
  "circuit-to-svg": "^0.0.113",
7674
7705
  concurrently: "^9.1.2",
7675
- "css-select": "^5.1.0",
7676
7706
  debug: "^4.3.6",
7677
7707
  "graphics-debug": "^0.0.4",
7678
7708
  howfat: "^0.3.8",
@@ -7701,6 +7731,7 @@ var package_default = {
7701
7731
  "circuit-json-to-connectivity-map": "^0.0.20",
7702
7732
  "format-si-unit": "^0.0.3",
7703
7733
  nanoid: "^5.0.7",
7734
+ "css-select": "^5.1.0",
7704
7735
  "performance-now": "^2.1.0",
7705
7736
  "react-reconciler": "^0.31.0",
7706
7737
  "react-reconciler-18": "npm:react-reconciler@0.29.2",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.375",
4
+ "version": "0.0.377",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -36,7 +36,6 @@
36
36
  "chokidar-cli": "^3.0.0",
37
37
  "circuit-to-svg": "^0.0.113",
38
38
  "concurrently": "^9.1.2",
39
- "css-select": "^5.1.0",
40
39
  "debug": "^4.3.6",
41
40
  "graphics-debug": "^0.0.4",
42
41
  "howfat": "^0.3.8",
@@ -65,6 +64,7 @@
65
64
  "circuit-json-to-connectivity-map": "^0.0.20",
66
65
  "format-si-unit": "^0.0.3",
67
66
  "nanoid": "^5.0.7",
67
+ "css-select": "^5.1.0",
68
68
  "performance-now": "^2.1.0",
69
69
  "react-reconciler": "^0.31.0",
70
70
  "react-reconciler-18": "npm:react-reconciler@0.29.2",