@tscircuit/pcb-viewer 1.10.3 → 1.10.5

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/lodash._objecttypes/index.js","../node_modules/lodash.isobject/index.js","../node_modules/lodash._renative/index.js","../node_modules/lodash._shimkeys/index.js","../node_modules/lodash.keys/index.js","../node_modules/lodash.noop/index.js","../node_modules/lodash._basecreate/index.js","../node_modules/lodash._setbinddata/index.js","../node_modules/lodash._basebind/index.js","../node_modules/lodash._slice/index.js","../node_modules/lodash._basecreatewrapper/index.js","../node_modules/lodash.isfunction/index.js","../node_modules/lodash._createwrapper/index.js","../node_modules/lodash.bind/index.js","../node_modules/lodash.identity/index.js","../node_modules/lodash.support/index.js","../node_modules/lodash._basecreatecallback/index.js","../node_modules/lodash.forown/index.js","../node_modules/lodash.foreach/index.js","../node_modules/convert-units/lib/definitions/length.js","../node_modules/convert-units/lib/definitions/area.js","../node_modules/convert-units/lib/definitions/mass.js","../node_modules/convert-units/lib/definitions/volume.js","../node_modules/convert-units/lib/definitions/each.js","../node_modules/convert-units/lib/definitions/temperature.js","../node_modules/convert-units/lib/definitions/time.js","../node_modules/convert-units/lib/definitions/digital.js","../node_modules/convert-units/lib/definitions/partsPer.js","../node_modules/convert-units/lib/definitions/speed.js","../node_modules/convert-units/lib/definitions/pace.js","../node_modules/convert-units/lib/definitions/pressure.js","../node_modules/convert-units/lib/definitions/current.js","../node_modules/convert-units/lib/definitions/voltage.js","../node_modules/convert-units/lib/definitions/power.js","../node_modules/convert-units/lib/definitions/reactivePower.js","../node_modules/convert-units/lib/definitions/apparentPower.js","../node_modules/convert-units/lib/definitions/energy.js","../node_modules/convert-units/lib/definitions/reactiveEnergy.js","../node_modules/convert-units/lib/definitions/volumeFlowRate.js","../node_modules/convert-units/lib/definitions/illuminance.js","../node_modules/convert-units/lib/definitions/frequency.js","../node_modules/convert-units/lib/definitions/angle.js","../node_modules/convert-units/lib/index.js","../node_modules/zod/lib/helpers/util.js","../node_modules/zod/lib/ZodError.js","../node_modules/zod/lib/locales/en.js","../node_modules/zod/lib/errors.js","../node_modules/zod/lib/helpers/parseUtil.js","../node_modules/zod/lib/helpers/typeAliases.js","../node_modules/zod/lib/helpers/errorUtil.js","../node_modules/zod/lib/types.js","../node_modules/zod/lib/external.js","../node_modules/zod/lib/index.js","../node_modules/@tscircuit/soup/src/index.ts","../node_modules/@tscircuit/soup/src/utils/convert-si-unit-to-number.ts","../node_modules/@tscircuit/soup/src/units/index.ts","../node_modules/@tscircuit/soup/src/common/point.ts","../node_modules/@tscircuit/soup/src/common/point3.ts","../node_modules/@tscircuit/soup/src/common/size.ts","../node_modules/@tscircuit/soup/src/source/source_simple_capacitor.ts","../node_modules/@tscircuit/soup/src/pcb/properties/supplier_name.ts","../node_modules/@tscircuit/soup/src/source/base/source_component_base.ts","../node_modules/@tscircuit/soup/src/source/source_simple_resistor.ts","../node_modules/@tscircuit/soup/src/source/source_simple_diode.ts","../node_modules/@tscircuit/soup/src/source/source_simple_ground.ts","../node_modules/@tscircuit/soup/src/source/source_simple_bug.ts","../node_modules/@tscircuit/soup/src/source/source_simple_chip.ts","../node_modules/@tscircuit/soup/src/source/source_simple_inductor.ts","../node_modules/@tscircuit/soup/src/source/source_led.ts","../node_modules/@tscircuit/soup/src/source/source_simple_power_source.ts","../node_modules/@tscircuit/soup/src/source/any_source_component.ts","../node_modules/@tscircuit/soup/src/source/source_port.ts","../node_modules/@tscircuit/soup/src/source/source_trace.ts","../node_modules/@tscircuit/soup/src/source/source_group.ts","../node_modules/@tscircuit/soup/src/source/source_net.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_box.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_path.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_component.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_line.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_trace.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_text.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_port.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_net_label.ts","../node_modules/@tscircuit/soup/src/schematic/schematic_error.ts","../node_modules/@tscircuit/soup/src/pcb/properties/layer_ref.ts","../node_modules/@tscircuit/soup/src/pcb/properties/pcb_route_hints.ts","../node_modules/@tscircuit/soup/src/pcb/properties/route_hint_point.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_component.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_hole.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_plated_hole.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_port.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_smtpad.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_text.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_trace.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_trace_error.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_port_not_matched_error.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_via.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_board.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_placement_error.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_trace_hint.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_silkscreen_line.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_silkscreen_path.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_silkscreen_text.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_silkscreen_rect.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_silkscreen_circle.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_silkscreen_oval.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_fabrication_note_text.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_fabrication_note_path.ts","../node_modules/@tscircuit/soup/src/pcb/pcb_keepout.ts","../node_modules/@tscircuit/soup/src/cad/cad_component.ts","../node_modules/@tscircuit/soup/src/any_soup_element.ts","../node_modules/parsel-js/dist/parsel.min.cjs","../node_modules/@tscircuit/soup-util/index.ts","../node_modules/@tscircuit/soup-util/lib/su.ts","../node_modules/@tscircuit/soup-util/lib/direction-to-vec.ts","../node_modules/@tscircuit/soup-util/lib/transform-soup-elements.ts","../node_modules/@tscircuit/soup-util/lib/apply-selector.ts","../node_modules/@tscircuit/soup-util/lib/convert-abbreviation-to-soup-element-type.ts","../node_modules/use-mouse-matrix-transform/src/index.ts","../src/index.tsx","../src/PCBViewer.tsx","../src/components/CanvasElementsRenderer.tsx","../src/components/CanvasPrimitiveRenderer.tsx","../src/lib/Drawer.ts","../src/lib/colors.ts","../src/lib/util/scale-only.ts","../src/assets/alphabet.ts","../src/lib/convert-text-to-lines.ts","../src/lib/draw-primitives.ts","../src/global-store.ts","../src/components/ContextProviders.tsx","../src/lib/convert-element-to-primitive.ts","../src/lib/util/expand-stroke.ts","../src/components/MouseElementTracker.tsx","../src/components/ElementOverlayBox.tsx","../src/lib/util/if-sets-match-exactly.ts","../src/components/DimensionOverlay.tsx","../src/components/ToolbarOverlay.tsx","../package.json","../src/components/ErrorOverlay.tsx","../src/components/EditPlacementOverlay.tsx","../src/components/EditTraceHintOverlay.tsx","../src/components/HotkeyActionMenu.tsx","../src/lib/toast.tsx","../src/components/RatsNestOverlay.tsx","../src/lib/util/addInteractionMetadataToPrimitives.ts","../node_modules/react-use/esm/misc/util.js","../node_modules/react-use/esm/useIsomorphicLayoutEffect.js","../node_modules/react-use/esm/useMeasure.js","../src/lib/apply-edit-events.ts","../src/lib/apply-edit-events/apply-edit-trace-hint-event.ts"],"names":["exports","module","require_lodash","noop","Object","identity","measure","util","objectUtil","errorUtil","ctx","result","issues","elements","processed","ZodFirstPartyTypeKind","require_lib","src_exports","__export","all_layers","__toCommonJS","__toESM","convertUnits","import_zod","t","e","n","s","o","r","c","i","a","l","u","transformPCBElement","transformPCBElements","su","import_transformation_matrix","useMouseMatrixTransform","import_react","import_builder","angle","color","createZustandStore","useZustandStore","import_jsx_runtime","scale","highlightedPrimitives","container","import_soup","import_css","el","import_soup_util","ogToast","OgToastContainer","index","primitivesWithoutInteractionMetadata","connectivityMap","_a","height"],"mappings":"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","sourcesContent":["/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/** Used to determine if values are of the language type Object */\nvar objectTypes = {\n 'boolean': false,\n 'function': true,\n 'object': true,\n 'number': false,\n 'string': false,\n 'undefined': false\n};\n\nmodule.exports = objectTypes;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar objectTypes = require('lodash._objecttypes');\n\n/**\n * Checks if `value` is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // check if the value is the ECMAScript language type of Object\n // http://es5.github.io/#x8\n // and avoid a V8 bug\n // http://code.google.com/p/v8/issues/detail?id=2291\n return !!(value && objectTypes[typeof value]);\n}\n\nmodule.exports = isObject;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/** Used for native method references */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the internal [[Class]] of values */\nvar toString = objectProto.toString;\n\n/** Used to detect if a method is native */\nvar reNative = RegExp('^' +\n String(toString)\n .replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/toString| for [^\\]]+/g, '.*?') + '$'\n);\n\nmodule.exports = reNative;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar objectTypes = require('lodash._objecttypes');\n\n/** Used for native method references */\nvar objectProto = Object.prototype;\n\n/** Native method shortcuts */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which produces an array of the\n * given object's own enumerable property names.\n *\n * @private\n * @type Function\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns an array of property names.\n */\nvar shimKeys = function(object) {\n var index, iterable = object, result = [];\n if (!iterable) return result;\n if (!(objectTypes[typeof object])) return result;\n for (index in iterable) {\n if (hasOwnProperty.call(iterable, index)) {\n result.push(index);\n }\n }\n return result\n};\n\nmodule.exports = shimKeys;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar isObject = require('lodash.isobject'),\n reNative = require('lodash._renative'),\n shimKeys = require('lodash._shimkeys');\n\n/* Native method shortcuts for methods with the same name as other `lodash` methods */\nvar nativeKeys = reNative.test(nativeKeys = Object.keys) && nativeKeys;\n\n/**\n * Creates an array composed of the own enumerable property names of an object.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns an array of property names.\n * @example\n *\n * _.keys({ 'one': 1, 'two': 2, 'three': 3 });\n * // => ['one', 'two', 'three'] (property order is not guaranteed across environments)\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n if (!isObject(object)) {\n return [];\n }\n return nativeKeys(object);\n};\n\nmodule.exports = keys;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * A no-operation function.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @example\n *\n * var object = { 'name': 'fred' };\n * _.noop(object) === undefined;\n * // => true\n */\nfunction noop() {\n // no operation performed\n}\n\nmodule.exports = noop;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar isObject = require('lodash.isobject'),\n noop = require('lodash.noop'),\n reNative = require('lodash._renative');\n\n/* Native method shortcuts for methods with the same name as other `lodash` methods */\nvar nativeCreate = reNative.test(nativeCreate = Object.create) && nativeCreate;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(prototype, properties) {\n return isObject(prototype) ? nativeCreate(prototype) : {};\n}\n// fallback for browsers without `Object.create`\nif (!nativeCreate) {\n baseCreate = (function() {\n function Object() {}\n return function(prototype) {\n if (isObject(prototype)) {\n Object.prototype = prototype;\n var result = new Object;\n Object.prototype = null;\n }\n return result || global.Object();\n };\n }());\n}\n\nmodule.exports = baseCreate;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar noop = require('lodash.noop'),\n reNative = require('lodash._renative');\n\n/** Used as the property descriptor for `__bindData__` */\nvar descriptor = {\n 'configurable': false,\n 'enumerable': false,\n 'value': null,\n 'writable': false\n};\n\n/** Used to set meta data on functions */\nvar defineProperty = (function() {\n // IE 8 only accepts DOM elements\n try {\n var o = {},\n func = reNative.test(func = Object.defineProperty) && func,\n result = func(o, o, o) && func;\n } catch(e) { }\n return result;\n}());\n\n/**\n * Sets `this` binding data on a given function.\n *\n * @private\n * @param {Function} func The function to set data on.\n * @param {Array} value The data array to set.\n */\nvar setBindData = !defineProperty ? noop : function(func, value) {\n descriptor.value = value;\n defineProperty(func, '__bindData__', descriptor);\n};\n\nmodule.exports = setBindData;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreate = require('lodash._basecreate'),\n isObject = require('lodash.isobject'),\n setBindData = require('lodash._setbinddata');\n\n/**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\nvar arrayRef = [];\n\n/** Native method shortcuts */\nvar push = arrayRef.push;\n\n/**\n * The base implementation of `_.bind` that creates the bound function and\n * sets its meta data.\n *\n * @private\n * @param {Array} bindData The bind data array.\n * @returns {Function} Returns the new bound function.\n */\nfunction baseBind(bindData) {\n var func = bindData[0],\n partialArgs = bindData[2],\n thisArg = bindData[4];\n\n function bound() {\n // `Function#bind` spec\n // http://es5.github.io/#x15.3.4.5\n if (partialArgs) {\n var args = partialArgs.slice();\n push.apply(args, arguments);\n }\n // mimic the constructor's `return` behavior\n // http://es5.github.io/#x13.2.2\n if (this instanceof bound) {\n // ensure `new bound` is an instance of `func`\n var thisBinding = baseCreate(func.prototype),\n result = func.apply(thisBinding, args || arguments);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisArg, args || arguments);\n }\n setBindData(bound, bindData);\n return bound;\n}\n\nmodule.exports = baseBind;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * Slices the `collection` from the `start` index up to, but not including,\n * the `end` index.\n *\n * Note: This function is used instead of `Array#slice` to support node lists\n * in IE < 9 and to ensure dense arrays are returned.\n *\n * @private\n * @param {Array|Object|string} collection The collection to slice.\n * @param {number} start The start index.\n * @param {number} end The end index.\n * @returns {Array} Returns the new array.\n */\nfunction slice(array, start, end) {\n start || (start = 0);\n if (typeof end == 'undefined') {\n end = array ? array.length : 0;\n }\n var index = -1,\n length = end - start || 0,\n result = Array(length < 0 ? 0 : length);\n\n while (++index < length) {\n result[index] = array[start + index];\n }\n return result;\n}\n\nmodule.exports = slice;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreate = require('lodash._basecreate'),\n isObject = require('lodash.isobject'),\n setBindData = require('lodash._setbinddata'),\n slice = require('lodash._slice');\n\n/**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\nvar arrayRef = [];\n\n/** Native method shortcuts */\nvar push = arrayRef.push;\n\n/**\n * The base implementation of `createWrapper` that creates the wrapper and\n * sets its meta data.\n *\n * @private\n * @param {Array} bindData The bind data array.\n * @returns {Function} Returns the new function.\n */\nfunction baseCreateWrapper(bindData) {\n var func = bindData[0],\n bitmask = bindData[1],\n partialArgs = bindData[2],\n partialRightArgs = bindData[3],\n thisArg = bindData[4],\n arity = bindData[5];\n\n var isBind = bitmask & 1,\n isBindKey = bitmask & 2,\n isCurry = bitmask & 4,\n isCurryBound = bitmask & 8,\n key = func;\n\n function bound() {\n var thisBinding = isBind ? thisArg : this;\n if (partialArgs) {\n var args = partialArgs.slice();\n push.apply(args, arguments);\n }\n if (partialRightArgs || isCurry) {\n args || (args = slice(arguments));\n if (partialRightArgs) {\n push.apply(args, partialRightArgs);\n }\n if (isCurry && args.length < arity) {\n bitmask |= 16 & ~32;\n return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]);\n }\n }\n args || (args = arguments);\n if (isBindKey) {\n func = thisBinding[key];\n }\n if (this instanceof bound) {\n thisBinding = baseCreate(func.prototype);\n var result = func.apply(thisBinding, args);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisBinding, args);\n }\n setBindData(bound, bindData);\n return bound;\n}\n\nmodule.exports = baseCreateWrapper;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * Checks if `value` is a function.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n */\nfunction isFunction(value) {\n return typeof value == 'function';\n}\n\nmodule.exports = isFunction;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseBind = require('lodash._basebind'),\n baseCreateWrapper = require('lodash._basecreatewrapper'),\n isFunction = require('lodash.isfunction');\n\n/**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\nvar arrayRef = [];\n\n/** Native method shortcuts */\nvar push = arrayRef.push;\n\n/**\n * Creates a function that, when called, either curries or invokes `func`\n * with an optional `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of method flags to compose.\n * The bitmask may be composed of the following flags:\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry`\n * 8 - `_.curry` (bound)\n * 16 - `_.partial`\n * 32 - `_.partialRight`\n * @param {Array} [partialArgs] An array of arguments to prepend to those\n * provided to the new function.\n * @param {Array} [partialRightArgs] An array of arguments to append to those\n * provided to the new function.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new function.\n */\nfunction createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {\n var isBind = bitmask & 1,\n isBindKey = bitmask & 2,\n isCurry = bitmask & 4,\n isCurryBound = bitmask & 8,\n isPartial = bitmask & 16,\n isPartialRight = bitmask & 32;\n\n if (!isBindKey && !isFunction(func)) {\n throw new TypeError;\n }\n if (isPartial && !partialArgs.length) {\n bitmask &= ~16;\n isPartial = partialArgs = false;\n }\n if (isPartialRight && !partialRightArgs.length) {\n bitmask &= ~32;\n isPartialRight = partialRightArgs = false;\n }\n var bindData = func && func.__bindData__;\n if (bindData && bindData !== true) {\n bindData = bindData.slice();\n\n // set `thisBinding` is not previously bound\n if (isBind && !(bindData[1] & 1)) {\n bindData[4] = thisArg;\n }\n // set if previously bound but not currently (subsequent curried functions)\n if (!isBind && bindData[1] & 1) {\n bitmask |= 8;\n }\n // set curried arity if not yet set\n if (isCurry && !(bindData[1] & 4)) {\n bindData[5] = arity;\n }\n // append partial left arguments\n if (isPartial) {\n push.apply(bindData[2] || (bindData[2] = []), partialArgs);\n }\n // append partial right arguments\n if (isPartialRight) {\n push.apply(bindData[3] || (bindData[3] = []), partialRightArgs);\n }\n // merge flags\n bindData[1] |= bitmask;\n return createWrapper.apply(null, bindData);\n }\n // fast path for `_.bind`\n var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper;\n return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);\n}\n\nmodule.exports = createWrapper;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar createWrapper = require('lodash._createwrapper'),\n reNative = require('lodash._renative'),\n slice = require('lodash._slice');\n\n/**\n * Creates a function that, when called, invokes `func` with the `this`\n * binding of `thisArg` and prepends any additional `bind` arguments to those\n * provided to the bound function.\n *\n * @static\n * @memberOf _\n * @category Functions\n * @param {Function} func The function to bind.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {...*} [arg] Arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var func = function(greeting) {\n * return greeting + ' ' + this.name;\n * };\n *\n * func = _.bind(func, { 'name': 'fred' }, 'hi');\n * func();\n * // => 'hi fred'\n */\nfunction bind(func, thisArg) {\n return arguments.length > 2\n ? createWrapper(func, 17, slice(arguments, 2), null, thisArg)\n : createWrapper(func, 1, null, null, thisArg);\n}\n\nmodule.exports = bind;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'name': 'fred' };\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar reNative = require('lodash._renative');\n\n/** Used to detect functions containing a `this` reference */\nvar reThis = /\\bthis\\b/;\n\n/**\n * An object used to flag environments features.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n/**\n * Detect if functions can be decompiled by `Function#toString`\n * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps).\n *\n * @memberOf _.support\n * @type boolean\n */\nsupport.funcDecomp = !reNative.test(global.WinRTError) && reThis.test(function() { return this; });\n\n/**\n * Detect if `Function#name` is supported (all but IE).\n *\n * @memberOf _.support\n * @type boolean\n */\nsupport.funcNames = typeof Function.name == 'string';\n\nmodule.exports = support;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar bind = require('lodash.bind'),\n identity = require('lodash.identity'),\n setBindData = require('lodash._setbinddata'),\n support = require('lodash.support');\n\n/** Used to detected named functions */\nvar reFuncName = /^\\s*function[ \\n\\r\\t]+\\w/;\n\n/** Used to detect functions containing a `this` reference */\nvar reThis = /\\bthis\\b/;\n\n/** Native method shortcuts */\nvar fnToString = Function.prototype.toString;\n\n/**\n * The base implementation of `_.createCallback` without support for creating\n * \"_.pluck\" or \"_.where\" style callbacks.\n *\n * @private\n * @param {*} [func=identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of the created callback.\n * @param {number} [argCount] The number of arguments the callback accepts.\n * @returns {Function} Returns a callback function.\n */\nfunction baseCreateCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n // exit early for no `thisArg` or already bound by `Function#bind`\n if (typeof thisArg == 'undefined' || !('prototype' in func)) {\n return func;\n }\n var bindData = func.__bindData__;\n if (typeof bindData == 'undefined') {\n if (support.funcNames) {\n bindData = !func.name;\n }\n bindData = bindData || !support.funcDecomp;\n if (!bindData) {\n var source = fnToString.call(func);\n if (!support.funcNames) {\n bindData = !reFuncName.test(source);\n }\n if (!bindData) {\n // checks if `func` references the `this` keyword and stores the result\n bindData = reThis.test(source);\n setBindData(func, bindData);\n }\n }\n }\n // exit early if there are no `this` references or `func` is bound\n if (bindData === false || (bindData !== true && bindData[1] & 1)) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 2: return function(a, b) {\n return func.call(thisArg, a, b);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n }\n return bind(func, thisArg);\n}\n\nmodule.exports = baseCreateCallback;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreateCallback = require('lodash._basecreatecallback'),\n keys = require('lodash.keys'),\n objectTypes = require('lodash._objecttypes');\n\n/**\n * Iterates over own enumerable properties of an object, executing the callback\n * for each property. The callback is bound to `thisArg` and invoked with three\n * arguments; (value, key, object). Callbacks may exit iteration early by\n * explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Objects\n * @param {Object} object The object to iterate over.\n * @param {Function} [callback=identity] The function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {\n * console.log(key);\n * });\n * // => logs '0', '1', and 'length' (property order is not guaranteed across environments)\n */\nvar forOwn = function(collection, callback, thisArg) {\n var index, iterable = collection, result = iterable;\n if (!iterable) return result;\n if (!objectTypes[typeof iterable]) return result;\n callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n if (callback(iterable[index], index, collection) === false) return result;\n }\n return result\n};\n\nmodule.exports = forOwn;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreateCallback = require('lodash._basecreatecallback'),\n forOwn = require('lodash.forown');\n\n/**\n * Iterates over elements of a collection, executing the callback for each\n * element. The callback is bound to `thisArg` and invoked with three arguments;\n * (value, index|key, collection). Callbacks may exit iteration early by\n * explicitly returning `false`.\n *\n * Note: As with other \"Collections\" methods, objects with a `length` property\n * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n * may be used for object iteration.\n *\n * @static\n * @memberOf _\n * @alias each\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [callback=identity] The function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(',');\n * // => logs each number and returns '1,2,3'\n *\n * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); });\n * // => logs each number and returns the object (property order is not guaranteed across environments)\n */\nfunction forEach(collection, callback, thisArg) {\n var index = -1,\n length = collection ? collection.length : 0;\n\n callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n if (typeof length == 'number') {\n while (++index < length) {\n if (callback(collection[index], index, collection) === false) {\n break;\n }\n }\n } else {\n forOwn(collection, callback);\n }\n return collection;\n}\n\nmodule.exports = forEach;\n","var metric,\nimperial;\n\nmetric = {\n mm: {\n name: {\n singular: 'Millimeter',\n plural: 'Millimeters'\n },\n to_anchor: 1/1000\n },\n cm: {\n name: {\n singular: 'Centimeter',\n plural: 'Centimeters'\n },\n to_anchor: 1/100\n },\n m: {\n name: {\n singular: 'Meter',\n plural: 'Meters'\n },\n to_anchor: 1\n },\n km: {\n name: {\n singular: 'Kilometer',\n plural: 'Kilometers'\n },\n to_anchor: 1000\n }\n};\n\nimperial = {\n 'in': {\n name: {\n singular: 'Inch',\n plural: 'Inches'\n },\n to_anchor: 1/12\n },\n yd: {\n name: {\n singular: 'Yard',\n plural: 'Yards'\n },\n to_anchor: 3\n },\n 'ft-us': {\n name: {\n singular: 'US Survey Foot',\n plural: 'US Survey Feet'\n },\n to_anchor: 1.000002\n },\n ft: {\n name: {\n singular: 'Foot',\n plural: 'Feet'\n },\n to_anchor: 1\n },\n mi: {\n name: {\n singular: 'Mile',\n plural: 'Miles'\n },\n to_anchor: 5280\n }\n};\n\nmodule.exports = {\n metric: metric,\n imperial: imperial,\n _anchors: {\n metric: {\n unit: 'm',\n ratio: 3.28084\n },\n imperial: {\n unit: 'ft',\n ratio: 1/3.28084\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n mm2: {\n name: {\n singular: 'Square Millimeter'\n , plural: 'Square Millimeters'\n }\n , to_anchor: 1/1000000\n }\n, cm2: {\n name: {\n singular: 'Centimeter'\n , plural: 'Centimeters'\n }\n , to_anchor: 1/10000\n }\n, m2: {\n name: {\n singular: 'Square Meter'\n , plural: 'Square Meters'\n }\n , to_anchor: 1\n }\n, ha: {\n name: {\n singular: 'Hectare'\n , plural: 'Hectares'\n }\n , to_anchor: 10000\n }\n, km2: {\n name: {\n singular: 'Square Kilometer'\n , plural: 'Square Kilometers'\n }\n , to_anchor: 1000000\n }\n};\n\nimperial = {\n 'in2': {\n name: {\n singular: 'Square Inch'\n , plural: 'Square Inches'\n }\n , to_anchor: 1/144\n }\n, yd2: {\n name: {\n singular: 'Square Yard'\n , plural: 'Square Yards' \n }\n , to_anchor: 9\n }\n, ft2: {\n name: {\n singular: 'Square Foot'\n , plural: 'Square Feet'\n }\n , to_anchor: 1\n }\n, ac: {\n name: {\n singular: 'Acre'\n , plural: 'Acres'\n }\n , to_anchor: 43560\n }\n, mi2: {\n name: {\n singular: 'Square Mile'\n , plural: 'Square Miles'\n }\n , to_anchor: 27878400\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'm2'\n , ratio: 10.7639\n }\n , imperial: {\n unit: 'ft2'\n , ratio: 1/10.7639\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n mcg: {\n name: {\n singular: 'Microgram'\n , plural: 'Micrograms'\n }\n , to_anchor: 1/1000000\n }\n, mg: {\n name: {\n singular: 'Milligram'\n , plural: 'Milligrams'\n }\n , to_anchor: 1/1000\n }\n, g: {\n name: {\n singular: 'Gram'\n , plural: 'Grams'\n }\n , to_anchor: 1\n }\n, kg: {\n name: {\n singular: 'Kilogram'\n , plural: 'Kilograms'\n }\n , to_anchor: 1000\n}\n, mt: {\n name: {\n singular: 'Metric Tonne'\n , plural: 'Metric Tonnes'\n }\n , to_anchor: 1000000\n }\n};\n\nimperial = {\n oz: {\n name: {\n singular: 'Ounce'\n , plural: 'Ounces'\n }\n , to_anchor: 1/16\n }\n, lb: {\n name: {\n singular: 'Pound'\n , plural: 'Pounds'\n }\n , to_anchor: 1\n}, t: {\n name: {\n singular: 'Ton',\n plural: 'Tons',\n },\n to_anchor: 2000,\n },\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'g'\n , ratio: 1/453.592\n }\n , imperial: {\n unit: 'lb'\n , ratio: 453.592\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n mm3: {\n name: {\n singular: 'Cubic Millimeter'\n , plural: 'Cubic Millimeters'\n }\n , to_anchor: 1/1000000\n }\n, cm3: {\n name: {\n singular: 'Cubic Centimeter'\n , plural: 'Cubic Centimeters'\n }\n , to_anchor: 1/1000\n }\n, ml: {\n name: {\n singular: 'Millilitre'\n , plural: 'Millilitres'\n }\n , to_anchor: 1/1000\n }\n, cl: {\n name: {\n singular: 'Centilitre'\n , plural: 'Centilitres'\n }\n , to_anchor: 1/100\n }\n, dl: {\n name: {\n singular: 'Decilitre'\n , plural: 'Decilitres'\n }\n , to_anchor: 1/10\n }\n, l: {\n name: {\n singular: 'Litre'\n , plural: 'Litres'\n }\n , to_anchor: 1\n }\n, kl: {\n name: {\n singular: 'Kilolitre'\n , plural: 'Kilolitres'\n }\n , to_anchor: 1000\n }\n, m3: {\n name: {\n singular: 'Cubic meter'\n , plural: 'Cubic meters'\n }\n , to_anchor: 1000\n }\n, km3: {\n name: {\n singular: 'Cubic kilometer'\n , plural: 'Cubic kilometers'\n }\n , to_anchor: 1000000000000\n }\n\n// Swedish units\n, krm: {\n name: {\n singular: 'Matsked'\n , plural: 'Matskedar'\n }\n , to_anchor: 1/1000\n}\n, tsk: {\n name: {\n singular: 'Tesked'\n , plural: 'Teskedar'\n }\n , to_anchor: 5/1000\n }\n, msk: {\n name: {\n singular: 'Matsked'\n , plural: 'Matskedar'\n }\n , to_anchor: 15/1000\n }\n, kkp: {\n name: {\n singular: 'Kaffekopp'\n , plural: 'Kaffekoppar'\n }\n , to_anchor: 150/1000\n }\n, glas: {\n name: {\n singular: 'Glas'\n , plural: 'Glas'\n }\n , to_anchor: 200/1000\n }\n, kanna: {\n name: {\n singular: 'Kanna'\n , plural: 'Kannor'\n }\n , to_anchor: 2.617\n }\n};\n\nimperial = {\n tsp: {\n name: {\n singular: 'Teaspoon'\n , plural: 'Teaspoons'\n }\n , to_anchor: 1/6\n }\n, Tbs: {\n name: {\n singular: 'Tablespoon'\n , plural: 'Tablespoons'\n }\n , to_anchor: 1/2\n }\n, in3: {\n name: {\n singular: 'Cubic inch'\n , plural: 'Cubic inches'\n }\n , to_anchor: 0.55411\n }\n, 'fl-oz': {\n name: {\n singular: 'Fluid Ounce'\n , plural: 'Fluid Ounces'\n }\n , to_anchor: 1\n }\n, cup: {\n name: {\n singular: 'Cup'\n , plural: 'Cups'\n }\n , to_anchor: 8\n }\n, pnt: {\n name: {\n singular: 'Pint'\n , plural: 'Pints'\n }\n , to_anchor: 16\n }\n, qt: {\n name: {\n singular: 'Quart'\n , plural: 'Quarts'\n }\n , to_anchor: 32\n }\n, gal: {\n name: {\n singular: 'Gallon'\n , plural: 'Gallons'\n }\n , to_anchor: 128\n }\n, ft3: {\n name: {\n singular: 'Cubic foot'\n , plural: 'Cubic feet'\n }\n , to_anchor: 957.506\n }\n, yd3: {\n name: {\n singular: 'Cubic yard'\n , plural: 'Cubic yards'\n }\n , to_anchor: 25852.7\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'l'\n , ratio: 33.8140226\n }\n , imperial: {\n unit: 'fl-oz'\n , ratio: 1/33.8140226\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n ea: {\n name: {\n singular: 'Each'\n , plural: 'Each'\n }\n , to_anchor: 1\n },\n dz: {\n name: {\n singular: 'Dozen'\n , plural: 'Dozens'\n }\n , to_anchor: 12\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: {}\n, _anchors: {\n metric: {\n unit: 'ea'\n , ratio: 1\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n C: {\n name: {\n singular: 'degree Celsius'\n , plural: 'degrees Celsius'\n }\n , to_anchor: 1\n , anchor_shift: 0\n },\n K: {\n name: {\n singular: 'degree Kelvin'\n , plural: 'degrees Kelvin'\n }\n , to_anchor: 1\n , anchor_shift: 273.15\n }\n};\n\nimperial = {\n F: {\n name: {\n singular: 'degree Fahrenheit'\n , plural: 'degrees Fahrenheit'\n }\n , to_anchor: 1\n },\n R: {\n name: {\n singular: 'degree Rankine'\n , plural: 'degrees Rankine'\n }\n , to_anchor: 1\n , anchor_shift: 459.67\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'C'\n , transform: function (C) { return C / (5/9) + 32 }\n }\n , imperial: {\n unit: 'F'\n , transform: function (F) { return (F - 32) * (5/9) }\n }\n }\n};\n\n","var time;\nvar daysInYear = 365.25;\n\ntime = {\n ns: {\n name: {\n singular: 'Nanosecond'\n , plural: 'Nanoseconds'\n }\n , to_anchor: 1/1000000000\n }\n, mu: {\n name: {\n singular: 'Microsecond'\n , plural: 'Microseconds'\n }\n , to_anchor: 1/1000000\n }\n, ms: {\n name: {\n singular: 'Millisecond'\n , plural: 'Milliseconds'\n }\n , to_anchor: 1/1000\n }\n, s: {\n name: {\n singular: 'Second'\n , plural: 'Seconds'\n }\n , to_anchor: 1\n }\n, min: {\n name: {\n singular: 'Minute'\n , plural: 'Minutes'\n }\n , to_anchor: 60\n }\n, h: {\n name: {\n singular: 'Hour'\n , plural: 'Hours'\n }\n , to_anchor: 60 * 60 \n }\n, d: {\n name: {\n singular: 'Day'\n , plural: 'Days'\n }\n , to_anchor: 60 * 60 * 24\n }\n, week: {\n name: {\n singular: 'Week'\n , plural: 'Weeks'\n }\n , to_anchor: 60 * 60 * 24 * 7\n }\n, month: {\n name: {\n singular: 'Month'\n , plural: 'Months'\n }\n , to_anchor: 60 * 60 * 24 * daysInYear / 12\n }\n, year: {\n name: {\n singular: 'Year'\n , plural: 'Years'\n }\n , to_anchor: 60 * 60 * 24 * daysInYear\n }\n};\n\n\nmodule.exports = {\n metric: time \n, _anchors: {\n metric: {\n unit: 's'\n , ratio: 1\n }\n }\n};\n","var bits\n , bytes;\n\nbits = {\n b: {\n name: {\n singular: 'Bit'\n , plural: 'Bits'\n }\n , to_anchor: 1\n }\n, Kb: {\n name: {\n singular: 'Kilobit'\n , plural: 'Kilobits'\n }\n , to_anchor: 1024\n }\n, Mb: {\n name: {\n singular: 'Megabit'\n , plural: 'Megabits'\n }\n , to_anchor: 1048576\n }\n, Gb: {\n name: {\n singular: 'Gigabit'\n , plural: 'Gigabits'\n }\n , to_anchor: 1073741824\n }\n, Tb: {\n name: {\n singular: 'Terabit'\n , plural: 'Terabits'\n }\n , to_anchor: 1099511627776\n }\n};\n\nbytes = {\n B: {\n name: {\n singular: 'Byte'\n , plural: 'Bytes'\n }\n , to_anchor: 1\n }\n, KB: {\n name: {\n singular: 'Kilobyte'\n , plural: 'Kilobytes'\n }\n , to_anchor: 1024\n }\n, MB: {\n name: {\n singular: 'Megabyte'\n , plural: 'Megabytes'\n }\n , to_anchor: 1048576\n }\n, GB: {\n name: {\n singular: 'Gigabyte'\n , plural: 'Gigabytes'\n }\n , to_anchor: 1073741824\n }\n, TB: {\n name: {\n singular: 'Terabyte'\n , plural: 'Terabytes'\n }\n , to_anchor: 1099511627776\n }\n};\n\nmodule.exports = {\n bits: bits\n, bytes: bytes\n, _anchors: {\n bits: {\n unit: 'b'\n , ratio: 1/8\n }\n , bytes: {\n unit: 'B'\n , ratio: 8\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n ppm: {\n name: {\n singular: 'Part-per Million'\n , plural: 'Parts-per Million'\n }\n , to_anchor: 1\n }\n , ppb: {\n name: {\n singular: 'Part-per Billion'\n , plural: 'Parts-per Billion'\n }\n , to_anchor: .001\n }\n , ppt: {\n name: {\n singular: 'Part-per Trillion'\n , plural: 'Parts-per Trillion'\n }\n , to_anchor: .000001\n }\n , ppq: {\n name: {\n singular: 'Part-per Quadrillion'\n , plural: 'Parts-per Quadrillion'\n }\n , to_anchor: .000000001\n }\n};\n\nmodule.exports = {\n metric: metric\n , imperial: {}\n , _anchors: {\n metric: {\n unit: 'ppm'\n , ratio: .000001\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n 'm/s': {\n name: {\n singular: 'Metre per second'\n , plural: 'Metres per second'\n }\n , to_anchor: 3.6\n }\n, 'km/h': {\n name: {\n singular: 'Kilometre per hour'\n , plural: 'Kilometres per hour'\n }\n , to_anchor: 1\n }\n}\n\n imperial = {\n 'm/h': {\n name: {\n singular: 'Mile per hour'\n , plural: 'Miles per hour'\n }\n , to_anchor: 1\n }\n , knot: {\n name: {\n singular: 'Knot'\n , plural: 'Knots'\n }\n , to_anchor: 1.150779\n }\n , 'ft/s': {\n name: {\n singular: 'Foot per second'\n , plural: 'Feet per second'\n }\n , to_anchor: 0.681818\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'km/h'\n , ratio: 1/1.609344\n }\n , imperial: {\n unit: 'm/h'\n , ratio: 1.609344\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n 'min/km': {\n name: {\n singular: 'Minute per kilometre'\n , plural: 'Minutes per kilometre'\n }\n , to_anchor: 0.06\n }\n ,'s/m': {\n name: {\n singular: 'Second per metre'\n , plural: 'Seconds per metre'\n }\n , to_anchor: 1\n }\n}\n\nimperial = {\n 'min/mi': {\n name: {\n singular: 'Minute per mile'\n , plural: 'Minutes per mile'\n }\n , to_anchor: 0.0113636\n }\n , 's/ft': {\n name: {\n singular: 'Second per foot'\n , plural: 'Seconds per foot'\n }\n , to_anchor: 1\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 's/m'\n , ratio: 0.3048\n }\n , imperial: {\n unit: 's/ft'\n , ratio: 1/0.3048\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n Pa: {\n name: {\n singular: 'pascal'\n , plural: 'pascals'\n }\n , to_anchor: 1/1000\n }\n, kPa: {\n name: {\n singular: 'kilopascal'\n , plural: 'kilopascals'\n }\n , to_anchor: 1\n }\n, MPa: {\n name: {\n singular: 'megapascal'\n , plural: 'megapascals'\n }\n , to_anchor: 1000\n }\n, hPa: {\n name: {\n singular: 'hectopascal'\n , plural: 'hectopascals'\n }\n , to_anchor: 1/10\n }\n, bar: {\n name: {\n singular: 'bar'\n , plural: 'bar'\n }\n , to_anchor: 100\n }\n, torr: {\n name: {\n singular: 'torr'\n , plural: 'torr'\n }\n , to_anchor: 101325/760000\n }\n};\n\nimperial = {\n psi: {\n name: {\n singular: 'pound per square inch'\n , plural: 'pounds per square inch'\n }\n , to_anchor: 1/1000\n }\n, ksi: {\n name: {\n singular: 'kilopound per square inch'\n , plural: 'kilopound per square inch'\n }\n , to_anchor: 1\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'kPa'\n , ratio: 0.00014503768078\n }\n , imperial: {\n unit: 'psi'\n , ratio: 1/0.00014503768078\n }\n }\n};\n","var current;\n\ncurrent = {\n A: {\n name: {\n singular: 'Ampere'\n , plural: 'Amperes'\n }\n , to_anchor: 1\n }\n, mA: {\n name: {\n singular: 'Milliampere'\n , plural: 'Milliamperes'\n }\n , to_anchor: .001\n }\n, kA: {\n name: {\n singular: 'Kiloampere'\n , plural: 'Kiloamperes'\n }\n , to_anchor: 1000\n }\n};\n\nmodule.exports = {\n metric: current\n, _anchors: {\n metric: {\n unit: 'A'\n , ratio: 1\n }\n }\n};\n","var voltage;\n\nvoltage = {\n V: {\n name: {\n singular: 'Volt'\n , plural: 'Volts'\n }\n , to_anchor: 1\n }\n, mV: {\n name: {\n singular: 'Millivolt'\n , plural: 'Millivolts'\n }\n , to_anchor: .001\n }\n, kV: {\n name: {\n singular: 'Kilovolt'\n , plural: 'Kilovolts'\n }\n , to_anchor: 1000\n }\n};\n\nmodule.exports = {\n metric: voltage\n, _anchors: {\n metric: {\n unit: 'V'\n , ratio: 1\n }\n }\n};\n","var power;\n\npower = {\n W: {\n name: {\n singular: 'Watt'\n , plural: 'Watts'\n }\n , to_anchor: 1\n }\n, mW: {\n name: {\n singular: 'Milliwatt'\n , plural: 'Milliwatts'\n }\n , to_anchor: .001\n }\n, kW: {\n name: {\n singular: 'Kilowatt'\n , plural: 'Kilowatts'\n }\n , to_anchor: 1000\n }\n, MW: {\n name: {\n singular: 'Megawatt'\n , plural: 'Megawatts'\n }\n , to_anchor: 1000000\n }\n, GW: {\n name: {\n singular: 'Gigawatt'\n , plural: 'Gigawatts'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: power\n, _anchors: {\n metric: {\n unit: 'W'\n , ratio: 1\n }\n }\n};\n","var reactivePower;\n\nreactivePower = {\n VAR: {\n name: {\n singular: 'Volt-Ampere Reactive'\n , plural: 'Volt-Amperes Reactive'\n }\n , to_anchor: 1\n }\n, mVAR: {\n name: {\n singular: 'Millivolt-Ampere Reactive'\n , plural: 'Millivolt-Amperes Reactive'\n }\n , to_anchor: .001\n }\n, kVAR: {\n name: {\n singular: 'Kilovolt-Ampere Reactive'\n , plural: 'Kilovolt-Amperes Reactive'\n }\n , to_anchor: 1000\n }\n, MVAR: {\n name: {\n singular: 'Megavolt-Ampere Reactive'\n , plural: 'Megavolt-Amperes Reactive'\n }\n , to_anchor: 1000000\n }\n, GVAR: {\n name: {\n singular: 'Gigavolt-Ampere Reactive'\n , plural: 'Gigavolt-Amperes Reactive'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: reactivePower\n, _anchors: {\n metric: {\n unit: 'VAR'\n , ratio: 1\n }\n }\n};\n","var apparentPower;\n\napparentPower = {\n VA: {\n name: {\n singular: 'Volt-Ampere'\n , plural: 'Volt-Amperes'\n }\n , to_anchor: 1\n }\n, mVA: {\n name: {\n singular: 'Millivolt-Ampere'\n , plural: 'Millivolt-Amperes'\n }\n , to_anchor: .001\n }\n, kVA: {\n name: {\n singular: 'Kilovolt-Ampere'\n , plural: 'Kilovolt-Amperes'\n }\n , to_anchor: 1000\n }\n, MVA: {\n name: {\n singular: 'Megavolt-Ampere'\n , plural: 'Megavolt-Amperes'\n }\n , to_anchor: 1000000\n }\n, GVA: {\n name: {\n singular: 'Gigavolt-Ampere'\n , plural: 'Gigavolt-Amperes'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: apparentPower\n, _anchors: {\n metric: {\n unit: 'VA'\n , ratio: 1\n }\n }\n};\n","var energy;\n\nenergy = {\n Wh: {\n name: {\n singular: 'Watt-hour'\n , plural: 'Watt-hours'\n }\n , to_anchor: 3600\n }\n, mWh: {\n name: {\n singular: 'Milliwatt-hour'\n , plural: 'Milliwatt-hours'\n }\n , to_anchor: 3.6\n }\n, kWh: {\n name: {\n singular: 'Kilowatt-hour'\n , plural: 'Kilowatt-hours'\n }\n , to_anchor: 3600000\n }\n, MWh: {\n name: {\n singular: 'Megawatt-hour'\n , plural: 'Megawatt-hours'\n }\n , to_anchor: 3600000000\n }\n, GWh: {\n name: {\n singular: 'Gigawatt-hour'\n , plural: 'Gigawatt-hours'\n }\n , to_anchor: 3600000000000\n }\n, J: {\n name: {\n singular: 'Joule'\n , plural: 'Joules'\n }\n , to_anchor: 1\n }\n, kJ: {\n name: {\n singular: 'Kilojoule'\n , plural: 'Kilojoules'\n }\n , to_anchor: 1000\n }\n};\n\nmodule.exports = {\n metric: energy\n, _anchors: {\n metric: {\n unit: 'J'\n , ratio: 1\n }\n }\n};\n","var reactiveEnergy;\n\nreactiveEnergy = {\n VARh: {\n name: {\n singular: 'Volt-Ampere Reactive Hour'\n , plural: 'Volt-Amperes Reactive Hour'\n }\n , to_anchor: 1\n }\n, mVARh: {\n name: {\n singular: 'Millivolt-Ampere Reactive Hour'\n , plural: 'Millivolt-Amperes Reactive Hour'\n }\n , to_anchor: .001\n }\n, kVARh: {\n name: {\n singular: 'Kilovolt-Ampere Reactive Hour'\n , plural: 'Kilovolt-Amperes Reactive Hour'\n }\n , to_anchor: 1000\n }\n, MVARh: {\n name: {\n singular: 'Megavolt-Ampere Reactive Hour'\n , plural: 'Megavolt-Amperes Reactive Hour'\n }\n , to_anchor: 1000000\n }\n, GVARh: {\n name: {\n singular: 'Gigavolt-Ampere Reactive Hour'\n , plural: 'Gigavolt-Amperes Reactive Hour'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: reactiveEnergy\n, _anchors: {\n metric: {\n unit: 'VARh'\n , ratio: 1\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n 'mm3/s': {\n name: {\n singular: 'Cubic Millimeter per second'\n , plural: 'Cubic Millimeters per second'\n }\n , to_anchor: 1/1000000\n }\n, 'cm3/s': {\n name: {\n singular: 'Cubic Centimeter per second'\n , plural: 'Cubic Centimeters per second'\n }\n , to_anchor: 1/1000\n }\n, 'ml/s': {\n name: {\n singular: 'Millilitre per second'\n , plural: 'Millilitres per second'\n }\n , to_anchor: 1/1000\n }\n, 'cl/s': {\n name: {\n singular: 'Centilitre per second'\n , plural: 'Centilitres per second'\n }\n , to_anchor: 1/100\n }\n, 'dl/s': {\n name: {\n singular: 'Decilitre per second'\n , plural: 'Decilitres per second'\n }\n , to_anchor: 1/10\n }\n, 'l/s': {\n name: {\n singular: 'Litre per second'\n , plural: 'Litres per second'\n }\n , to_anchor: 1\n }\n, 'l/min': {\n name: {\n singular: 'Litre per minute'\n , plural: 'Litres per minute'\n }\n , to_anchor: 1/60\n }\n, 'l/h': {\n name: {\n singular: 'Litre per hour'\n , plural: 'Litres per hour'\n }\n , to_anchor: 1/3600\n }\n, 'kl/s': {\n name: {\n singular: 'Kilolitre per second'\n , plural: 'Kilolitres per second'\n }\n , to_anchor: 1000\n }\n, 'kl/min': {\n name: {\n singular: 'Kilolitre per minute'\n , plural: 'Kilolitres per minute'\n }\n , to_anchor: 50/3\n }\n, 'kl/h': {\n name: {\n singular: 'Kilolitre per hour'\n , plural: 'Kilolitres per hour'\n }\n , to_anchor: 5/18\n }\n, 'm3/s': {\n name: {\n singular: 'Cubic meter per second'\n , plural: 'Cubic meters per second'\n }\n , to_anchor: 1000\n }\n, 'm3/min': {\n name: {\n singular: 'Cubic meter per minute'\n , plural: 'Cubic meters per minute'\n }\n , to_anchor: 50/3\n }\n, 'm3/h': {\n name: {\n singular: 'Cubic meter per hour'\n , plural: 'Cubic meters per hour'\n }\n , to_anchor: 5/18\n }\n, 'km3/s': {\n name: {\n singular: 'Cubic kilometer per second'\n , plural: 'Cubic kilometers per second'\n }\n , to_anchor: 1000000000000\n }\n};\n\nimperial = {\n 'tsp/s': {\n name: {\n singular: 'Teaspoon per second'\n , plural: 'Teaspoons per second'\n }\n , to_anchor: 1/6\n }\n, 'Tbs/s': {\n name: {\n singular: 'Tablespoon per second'\n , plural: 'Tablespoons per second'\n }\n , to_anchor: 1/2\n }\n, 'in3/s': {\n name: {\n singular: 'Cubic inch per second'\n , plural: 'Cubic inches per second'\n }\n , to_anchor: 0.55411\n }\n, 'in3/min': {\n name: {\n singular: 'Cubic inch per minute'\n , plural: 'Cubic inches per minute'\n }\n , to_anchor: 0.55411/60\n }\n, 'in3/h': {\n name: {\n singular: 'Cubic inch per hour'\n , plural: 'Cubic inches per hour'\n }\n , to_anchor: 0.55411/3600\n }\n, 'fl-oz/s': {\n name: {\n singular: 'Fluid Ounce per second'\n , plural: 'Fluid Ounces per second'\n }\n , to_anchor: 1\n }\n, 'fl-oz/min': {\n name: {\n singular: 'Fluid Ounce per minute'\n , plural: 'Fluid Ounces per minute'\n }\n , to_anchor: 1/60\n }\n, 'fl-oz/h': {\n name: {\n singular: 'Fluid Ounce per hour'\n , plural: 'Fluid Ounces per hour'\n }\n , to_anchor: 1/3600\n }\n, 'cup/s': {\n name: {\n singular: 'Cup per second'\n , plural: 'Cups per second'\n }\n , to_anchor: 8\n }\n, 'pnt/s': {\n name: {\n singular: 'Pint per second'\n , plural: 'Pints per second'\n }\n , to_anchor: 16\n }\n, 'pnt/min': {\n name: {\n singular: 'Pint per minute'\n , plural: 'Pints per minute'\n }\n , to_anchor: 4/15\n }\n, 'pnt/h': {\n name: {\n singular: 'Pint per hour'\n , plural: 'Pints per hour'\n }\n , to_anchor: 1/225\n }\n, 'qt/s': {\n name: {\n singular: 'Quart per second'\n , plural: 'Quarts per second'\n }\n , to_anchor: 32\n }\n, 'gal/s': {\n name: {\n singular: 'Gallon per second'\n , plural: 'Gallons per second'\n }\n , to_anchor: 128\n }\n, 'gal/min': {\n name: {\n singular: 'Gallon per minute'\n , plural: 'Gallons per minute'\n }\n , to_anchor: 32/15\n }\n, 'gal/h': {\n name: {\n singular: 'Gallon per hour'\n , plural: 'Gallons per hour'\n }\n , to_anchor: 8/225\n }\n, 'ft3/s': {\n name: {\n singular: 'Cubic foot per second'\n , plural: 'Cubic feet per second'\n }\n , to_anchor: 957.506\n }\n, 'ft3/min': {\n name: {\n singular: 'Cubic foot per minute'\n , plural: 'Cubic feet per minute'\n }\n , to_anchor: 957.506/60\n }\n, 'ft3/h': {\n name: {\n singular: 'Cubic foot per hour'\n , plural: 'Cubic feet per hour'\n }\n , to_anchor: 957.506/3600\n }\n, 'yd3/s': {\n name: {\n singular: 'Cubic yard per second'\n , plural: 'Cubic yards per second'\n }\n , to_anchor: 25852.7\n }\n, 'yd3/min': {\n name: {\n singular: 'Cubic yard per minute'\n , plural: 'Cubic yards per minute'\n }\n , to_anchor: 25852.7/60\n }\n, 'yd3/h': {\n name: {\n singular: 'Cubic yard per hour'\n , plural: 'Cubic yards per hour'\n }\n , to_anchor: 25852.7/3600\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'l/s'\n , ratio: 33.8140227\n }\n , imperial: {\n unit: 'fl-oz/s'\n , ratio: 1/33.8140227\n }\n }\n};\n","var metric,\nimperial;\n\nmetric = {\n 'lx': {\n name: {\n singular: 'Lux',\n plural: 'Lux'\n },\n to_anchor: 1\n }\n};\n\nimperial = {\n 'ft-cd': {\n name: {\n singular: 'Foot-candle',\n plural: 'Foot-candles'\n },\n to_anchor: 1\n }\n};\n\nmodule.exports = {\n metric: metric,\n imperial: imperial,\n _anchors: {\n metric: {\n unit: 'lx',\n ratio: 1/10.76391\n },\n imperial: {\n unit: 'ft-cd', \n\t ratio: 10.76391\n }\n }\n};\n","var frequency;\n\nfrequency = {\n mHz: {\n name: {\n singular: 'millihertz'\n , plural: 'millihertz'\n }\n , to_anchor: 1/1000\n }\n, Hz: {\n name: {\n singular: 'hertz'\n , plural: 'hertz'\n }\n , to_anchor: 1\n }\n, kHz: {\n name: {\n singular: 'kilohertz'\n , plural: 'kilohertz'\n }\n , to_anchor: 1000\n }\n, MHz: {\n name: {\n singular: 'megahertz'\n , plural: 'megahertz'\n }\n , to_anchor: 1000 * 1000\n }\n, GHz: {\n name: {\n singular: 'gigahertz'\n , plural: 'gigahertz'\n }\n , to_anchor: 1000 * 1000 * 1000\n }\n, THz: {\n name: {\n singular: 'terahertz'\n , plural: 'terahertz'\n }\n , to_anchor: 1000 * 1000 * 1000 * 1000\n }\n, rpm: {\n name: {\n singular: 'rotation per minute'\n , plural: 'rotations per minute'\n }\n , to_anchor: 1/60\n }\n, \"deg/s\": {\n name: {\n singular: 'degree per second'\n , plural: 'degrees per second'\n }\n , to_anchor: 1/360\n }\n, \"rad/s\": {\n name: {\n singular: 'radian per second'\n , plural: 'radians per second'\n }\n , to_anchor: 1/(Math.PI * 2)\n }\n};\n\n\nmodule.exports = {\n metric: frequency\n, _anchors: {\n frequency: {\n unit: 'hz'\n , ratio: 1\n }\n }\n};\n","var angle;\n\nangle = {\n rad: {\n name: {\n singular: 'radian'\n , plural: 'radians'\n }\n , to_anchor: 180/Math.PI\n }\n, deg: {\n name: {\n singular: 'degree'\n , plural: 'degrees'\n }\n , to_anchor: 1\n }\n, grad: {\n name: {\n singular: 'gradian'\n , plural: 'gradians'\n }\n , to_anchor: 9/10\n }\n, arcmin: {\n name: {\n singular: 'arcminute'\n , plural: 'arcminutes'\n }\n , to_anchor: 1/60\n }\n, arcsec: {\n name: {\n singular: 'arcsecond'\n , plural: 'arcseconds'\n }\n , to_anchor: 1/3600\n }\n};\n\nmodule.exports = {\n metric: angle\n, _anchors: {\n metric: {\n unit: 'deg'\n , ratio: 1\n }\n }\n};\n","var convert\n , keys = require('lodash.keys')\n , each = require('lodash.foreach')\n , measures = {\n length: require('./definitions/length')\n , area: require('./definitions/area')\n , mass: require('./definitions/mass')\n , volume: require('./definitions/volume')\n , each: require('./definitions/each')\n , temperature: require('./definitions/temperature')\n , time: require('./definitions/time')\n , digital: require('./definitions/digital')\n , partsPer: require('./definitions/partsPer')\n , speed: require('./definitions/speed')\n , pace: require('./definitions/pace')\n , pressure: require('./definitions/pressure')\n , current: require('./definitions/current')\n , voltage: require('./definitions/voltage')\n , power: require('./definitions/power')\n , reactivePower: require('./definitions/reactivePower')\n , apparentPower: require('./definitions/apparentPower')\n , energy: require('./definitions/energy')\n , reactiveEnergy: require('./definitions/reactiveEnergy')\n , volumeFlowRate: require('./definitions/volumeFlowRate')\n , illuminance: require('./definitions/illuminance')\n , frequency: require('./definitions/frequency')\n , angle : require('./definitions/angle')\n }\n , Converter;\n\nConverter = function (numerator, denominator) {\n if(denominator)\n this.val = numerator / denominator;\n else\n this.val = numerator;\n};\n\n/**\n* Lets the converter know the source unit abbreviation\n*/\nConverter.prototype.from = function (from) {\n if(this.destination)\n throw new Error('.from must be called before .to');\n\n this.origin = this.getUnit(from);\n\n if(!this.origin) {\n this.throwUnsupportedUnitError(from);\n }\n\n return this;\n};\n\n/**\n* Converts the unit and returns the value\n*/\nConverter.prototype.to = function (to) {\n if(!this.origin)\n throw new Error('.to must be called after .from');\n\n this.destination = this.getUnit(to);\n\n var result\n , transform;\n\n if(!this.destination) {\n this.throwUnsupportedUnitError(to);\n }\n\n // Don't change the value if origin and destination are the same\n if (this.origin.abbr === this.destination.abbr) {\n return this.val;\n }\n\n // You can't go from liquid to mass, for example\n if(this.destination.measure != this.origin.measure) {\n throw new Error('Cannot convert incompatible measures of '\n + this.destination.measure + ' and ' + this.origin.measure);\n }\n\n /**\n * Convert from the source value to its anchor inside the system\n */\n result = this.val * this.origin.unit.to_anchor;\n\n /**\n * For some changes it's a simple shift (C to K)\n * So we'll add it when convering into the unit (later)\n * and subtract it when converting from the unit\n */\n if (this.origin.unit.anchor_shift) {\n result -= this.origin.unit.anchor_shift\n }\n\n /**\n * Convert from one system to another through the anchor ratio. Some conversions\n * aren't ratio based or require more than a simple shift. We can provide a custom\n * transform here to provide the direct result\n */\n if(this.origin.system != this.destination.system) {\n transform = measures[this.origin.measure]._anchors[this.origin.system].transform;\n if (typeof transform === 'function') {\n result = transform(result)\n }\n else {\n result *= measures[this.origin.measure]._anchors[this.origin.system].ratio;\n }\n }\n\n /**\n * This shift has to be done after the system conversion business\n */\n if (this.destination.unit.anchor_shift) {\n result += this.destination.unit.anchor_shift;\n }\n\n /**\n * Convert to another unit inside the destination system\n */\n return result / this.destination.unit.to_anchor;\n};\n\n/**\n* Converts the unit to the best available unit.\n*/\nConverter.prototype.toBest = function(options) {\n if(!this.origin)\n throw new Error('.toBest must be called after .from');\n\n var options = Object.assign({\n exclude: [],\n cutOffNumber: 1,\n }, options)\n\n var best;\n /**\n Looks through every possibility for the 'best' available unit.\n i.e. Where the value has the fewest numbers before the decimal point,\n but is still higher than 1.\n */\n each(this.possibilities(), function(possibility) {\n var unit = this.describe(possibility);\n var isIncluded = options.exclude.indexOf(possibility) === -1;\n\n if (isIncluded && unit.system === this.origin.system) {\n var result = this.to(possibility);\n if (!best || (result >= options.cutOffNumber && result < best.val)) {\n best = {\n val: result,\n unit: possibility,\n singular: unit.singular,\n plural: unit.plural\n };\n }\n }\n }.bind(this));\n\n return best;\n}\n\n/**\n* Finds the unit\n*/\nConverter.prototype.getUnit = function (abbr) {\n var found;\n\n each(measures, function (systems, measure) {\n each(systems, function (units, system) {\n if(system == '_anchors')\n return false;\n\n each(units, function (unit, testAbbr) {\n if(testAbbr == abbr) {\n found = {\n abbr: abbr\n , measure: measure\n , system: system\n , unit: unit\n };\n return false;\n }\n });\n\n if(found)\n return false;\n });\n\n if(found)\n return false;\n });\n\n return found;\n};\n\nvar describe = function(resp) {\n return {\n abbr: resp.abbr\n , measure: resp.measure\n , system: resp.system\n , singular: resp.unit.name.singular\n , plural: resp.unit.name.plural\n };\n}\n\n/**\n* An alias for getUnit\n*/\nConverter.prototype.describe = function (abbr) {\n var resp = Converter.prototype.getUnit(abbr);\n var desc = null;\n\n try {\n desc = describe(resp);\n } catch(err) {\n this.throwUnsupportedUnitError(abbr);\n }\n\n return desc;\n};\n\n/**\n* Detailed list of all supported units\n*/\nConverter.prototype.list = function (measure) {\n var list = [];\n\n each(measures, function (systems, testMeasure) {\n if(measure && measure !== testMeasure)\n return;\n\n each(systems, function (units, system) {\n if(system == '_anchors')\n return false;\n\n each(units, function (unit, abbr) {\n list = list.concat(describe({\n abbr: abbr,\n measure: testMeasure\n , system: system\n , unit: unit\n }));\n });\n });\n });\n\n return list;\n};\n\nConverter.prototype.throwUnsupportedUnitError = function (what) {\n var validUnits = [];\n\n each(measures, function (systems, measure) {\n each(systems, function (units, system) {\n if(system == '_anchors')\n return false;\n\n validUnits = validUnits.concat(keys(units));\n });\n });\n\n throw new Error('Unsupported unit ' + what + ', use one of: ' + validUnits.join(', '));\n}\n\n/**\n* Returns the abbreviated measures that the value can be\n* converted to.\n*/\nConverter.prototype.possibilities = function (measure) {\n var possibilities = [];\n if(!this.origin && !measure) {\n\t each(keys(measures), function (measure){\n\t\t each(measures[measure], function (units, system) {\n\t\t if(system == '_anchors')\n\t\t return false;\n\n\t\t possibilities = possibilities.concat(keys(units));\n\t\t });\n\t });\n } else {\n\t measure = measure || this.origin.measure;\n\t each(measures[measure], function (units, system) {\n\t if(system == '_anchors')\n\t return false;\n\n\t possibilities = possibilities.concat(keys(units));\n\t });\n }\n\n return possibilities;\n};\n\n/**\n* Returns the abbreviated measures that the value can be\n* converted to.\n*/\nConverter.prototype.measures = function () {\n return keys(measures);\n};\n\nconvert = function (value) {\n return new Converter(value);\n};\n\nmodule.exports = convert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParsedType = exports.ZodParsedType = exports.objectUtil = exports.util = void 0;\nvar util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util = exports.util || (exports.util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil = exports.objectUtil || (exports.objectUtil = {}));\nexports.ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return exports.ZodParsedType.undefined;\n case \"string\":\n return exports.ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? exports.ZodParsedType.nan : exports.ZodParsedType.number;\n case \"boolean\":\n return exports.ZodParsedType.boolean;\n case \"function\":\n return exports.ZodParsedType.function;\n case \"bigint\":\n return exports.ZodParsedType.bigint;\n case \"symbol\":\n return exports.ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return exports.ZodParsedType.array;\n }\n if (data === null) {\n return exports.ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return exports.ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return exports.ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return exports.ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return exports.ZodParsedType.date;\n }\n return exports.ZodParsedType.object;\n default:\n return exports.ZodParsedType.unknown;\n }\n};\nexports.getParsedType = getParsedType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodError = exports.quotelessJson = exports.ZodIssueCode = void 0;\nconst util_1 = require(\"./helpers/util\");\nexports.ZodIssueCode = util_1.util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexports.quotelessJson = quotelessJson;\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util_1.util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nexports.ZodError = ZodError;\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../helpers/util\");\nconst ZodError_1 = require(\"../ZodError\");\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodError_1.ZodIssueCode.invalid_type:\n if (issue.received === util_1.ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodError_1.ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util_1.util.jsonStringifyReplacer)}`;\n break;\n case ZodError_1.ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util_1.util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodError_1.ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodError_1.ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util_1.util.joinValues(issue.options)}`;\n break;\n case ZodError_1.ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util_1.util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodError_1.ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodError_1.ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodError_1.ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodError_1.ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util_1.util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodError_1.ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodError_1.ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodError_1.ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodError_1.ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodError_1.ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodError_1.ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util_1.util.assertNever(issue);\n }\n return { message };\n};\nexports.default = errorMap;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorMap = exports.setErrorMap = exports.defaultErrorMap = void 0;\nconst en_1 = __importDefault(require(\"./locales/en\"));\nexports.defaultErrorMap = en_1.default;\nlet overrideErrorMap = en_1.default;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nexports.setErrorMap = setErrorMap;\nfunction getErrorMap() {\n return overrideErrorMap;\n}\nexports.getErrorMap = getErrorMap;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsync = exports.isValid = exports.isDirty = exports.isAborted = exports.OK = exports.DIRTY = exports.INVALID = exports.ParseStatus = exports.addIssueToContext = exports.EMPTY_PATH = exports.makeIssue = void 0;\nconst errors_1 = require(\"../errors\");\nconst en_1 = __importDefault(require(\"../locales/en\"));\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexports.makeIssue = makeIssue;\nexports.EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = (0, errors_1.getErrorMap)();\n const issue = (0, exports.makeIssue)({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === en_1.default ? undefined : en_1.default, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexports.addIssueToContext = addIssueToContext;\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return exports.INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return exports.INVALID;\n if (value.status === \"aborted\")\n return exports.INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexports.ParseStatus = ParseStatus;\nexports.INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nexports.DIRTY = DIRTY;\nconst OK = (value) => ({ status: \"valid\", value });\nexports.OK = OK;\nconst isAborted = (x) => x.status === \"aborted\";\nexports.isAborted = isAborted;\nconst isDirty = (x) => x.status === \"dirty\";\nexports.isDirty = isDirty;\nconst isValid = (x) => x.status === \"valid\";\nexports.isValid = isValid;\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\nexports.isAsync = isAsync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorUtil = void 0;\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil = exports.errorUtil || (exports.errorUtil = {}));\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolean = exports.bigint = exports.array = exports.any = exports.coerce = exports.ZodFirstPartyTypeKind = exports.late = exports.ZodSchema = exports.Schema = exports.custom = exports.ZodReadonly = exports.ZodPipeline = exports.ZodBranded = exports.BRAND = exports.ZodNaN = exports.ZodCatch = exports.ZodDefault = exports.ZodNullable = exports.ZodOptional = exports.ZodTransformer = exports.ZodEffects = exports.ZodPromise = exports.ZodNativeEnum = exports.ZodEnum = exports.ZodLiteral = exports.ZodLazy = exports.ZodFunction = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodUnion = exports.ZodObject = exports.ZodArray = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodSymbol = exports.ZodDate = exports.ZodBoolean = exports.ZodBigInt = exports.ZodNumber = exports.ZodString = exports.datetimeRegex = exports.ZodType = void 0;\nexports.NEVER = exports.void = exports.unknown = exports.union = exports.undefined = exports.tuple = exports.transformer = exports.symbol = exports.string = exports.strictObject = exports.set = exports.record = exports.promise = exports.preprocess = exports.pipeline = exports.ostring = exports.optional = exports.onumber = exports.oboolean = exports.object = exports.number = exports.nullable = exports.null = exports.never = exports.nativeEnum = exports.nan = exports.map = exports.literal = exports.lazy = exports.intersection = exports.instanceof = exports.function = exports.enum = exports.effect = exports.discriminatedUnion = exports.date = void 0;\nconst errors_1 = require(\"./errors\");\nconst errorUtil_1 = require(\"./helpers/errorUtil\");\nconst parseUtil_1 = require(\"./helpers/parseUtil\");\nconst util_1 = require(\"./helpers/util\");\nconst ZodError_1 = require(\"./ZodError\");\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if ((0, parseUtil_1.isValid)(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError_1.ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return (0, util_1.getParsedType)(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: (0, util_1.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new parseUtil_1.ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: (0, util_1.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if ((0, parseUtil_1.isAsync)(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_1.getParsedType)(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_1.getParsedType)(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await ((0, parseUtil_1.isAsync)(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodError_1.ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nexports.ZodType = ZodType;\nexports.Schema = ZodType;\nexports.ZodSchema = ZodType;\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nexports.datetimeRegex = datetimeRegex;\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.string,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n const status = new parseUtil_1.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"email\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"emoji\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"uuid\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"nanoid\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"cuid\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"cuid2\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"ulid\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"url\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"regex\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"duration\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"ip\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n validation: \"base64\",\n code: ZodError_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodError_1.ZodIssueCode.invalid_string,\n ...errorUtil_1.errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil_1.errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil_1.errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil_1.errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil_1.errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil_1.errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil_1.errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil_1.errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil_1.errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil_1.errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil_1.errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil_1.errorUtil.errToObj(message),\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil_1.errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nexports.ZodString = ZodString;\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.number,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n let ctx = undefined;\n const status = new parseUtil_1.ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util_1.util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil_1.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil_1.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil_1.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil_1.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil_1.errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil_1.errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util_1.util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nexports.ZodNumber = ZodNumber;\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n let ctx = undefined;\n const status = new parseUtil_1.ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil_1.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil_1.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil_1.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil_1.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil_1.errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nexports.ZodBigInt = ZodBigInt;\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n return (0, parseUtil_1.OK)(input.data);\n }\n}\nexports.ZodBoolean = ZodBoolean;\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.date,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_date,\n });\n return parseUtil_1.INVALID;\n }\n const status = new parseUtil_1.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util_1.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil_1.errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nexports.ZodDate = ZodDate;\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n return (0, parseUtil_1.OK)(input.data);\n }\n}\nexports.ZodSymbol = ZodSymbol;\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n return (0, parseUtil_1.OK)(input.data);\n }\n}\nexports.ZodUndefined = ZodUndefined;\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.null,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n return (0, parseUtil_1.OK)(input.data);\n }\n}\nexports.ZodNull = ZodNull;\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return (0, parseUtil_1.OK)(input.data);\n }\n}\nexports.ZodAny = ZodAny;\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return (0, parseUtil_1.OK)(input.data);\n }\n}\nexports.ZodUnknown = ZodUnknown;\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.never,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n}\nexports.ZodNever = ZodNever;\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.void,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n return (0, parseUtil_1.OK)(input.data);\n }\n}\nexports.ZodVoid = ZodVoid;\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== util_1.ZodParsedType.array) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.array,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: tooBig ? ZodError_1.ZodIssueCode.too_big : ZodError_1.ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return parseUtil_1.ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return parseUtil_1.ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil_1.errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil_1.errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil_1.errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nexports.ZodArray = ZodArray;\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util_1.util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return parseUtil_1.ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return parseUtil_1.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil_1.errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil_1.errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util_1.util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util_1.util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util_1.util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util_1.util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util_1.util.objectKeys(this.shape));\n }\n}\nexports.ZodObject = ZodObject;\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError_1.ZodError(result.ctx.common.issues));\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_union,\n unionErrors,\n });\n return parseUtil_1.INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError_1.ZodError(issues));\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_union,\n unionErrors,\n });\n return parseUtil_1.INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nexports.ZodUnion = ZodUnion;\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util_1.util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_1.ZodParsedType.object) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return parseUtil_1.INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nexports.ZodDiscriminatedUnion = ZodDiscriminatedUnion;\nfunction mergeValues(a, b) {\n const aType = (0, util_1.getParsedType)(a);\n const bType = (0, util_1.getParsedType)(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === util_1.ZodParsedType.object && bType === util_1.ZodParsedType.object) {\n const bKeys = util_1.util.objectKeys(b);\n const sharedKeys = util_1.util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === util_1.ZodParsedType.array && bType === util_1.ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === util_1.ZodParsedType.date &&\n bType === util_1.ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if ((0, parseUtil_1.isAborted)(parsedLeft) || (0, parseUtil_1.isAborted)(parsedRight)) {\n return parseUtil_1.INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_intersection_types,\n });\n return parseUtil_1.INVALID;\n }\n if ((0, parseUtil_1.isDirty)(parsedLeft) || (0, parseUtil_1.isDirty)(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nexports.ZodIntersection = ZodIntersection;\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_1.ZodParsedType.array) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.array,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return parseUtil_1.INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return parseUtil_1.ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return parseUtil_1.ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nexports.ZodTuple = ZodTuple;\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_1.ZodParsedType.object) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return parseUtil_1.ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return parseUtil_1.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexports.ZodRecord = ZodRecord;\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_1.ZodParsedType.map) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.map,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return parseUtil_1.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return parseUtil_1.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nexports.ZodMap = ZodMap;\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_1.ZodParsedType.set) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.set,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return parseUtil_1.INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil_1.errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil_1.errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nexports.ZodSet = ZodSet;\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_1.ZodParsedType.function) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.function,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n function makeArgsIssue(args, error) {\n return (0, parseUtil_1.makeIssue)({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n (0, errors_1.getErrorMap)(),\n errors_1.defaultErrorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodError_1.ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return (0, parseUtil_1.makeIssue)({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n (0, errors_1.getErrorMap)(),\n errors_1.defaultErrorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodError_1.ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0, parseUtil_1.OK)(async function (...args) {\n const error = new ZodError_1.ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0, parseUtil_1.OK)(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError_1.ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError_1.ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexports.ZodFunction = ZodFunction;\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nexports.ZodLazy = ZodLazy;\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_1.ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return parseUtil_1.INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nexports.ZodLiteral = ZodLiteral;\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0, parseUtil_1.addIssueToContext)(ctx, {\n expected: util_1.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodError_1.ZodIssueCode.invalid_type,\n });\n return parseUtil_1.INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0, parseUtil_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_1.ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return parseUtil_1.INVALID;\n }\n return (0, parseUtil_1.OK)(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nexports.ZodEnum = ZodEnum;\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util_1.util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== util_1.ZodParsedType.string &&\n ctx.parsedType !== util_1.ZodParsedType.number) {\n const expectedValues = util_1.util.objectValues(nativeEnumValues);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n expected: util_1.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodError_1.ZodIssueCode.invalid_type,\n });\n return parseUtil_1.INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util_1.util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util_1.util.objectValues(nativeEnumValues);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_1.ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return parseUtil_1.INVALID;\n }\n return (0, parseUtil_1.OK)(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nexports.ZodNativeEnum = ZodNativeEnum;\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_1.ZodParsedType.promise &&\n ctx.common.async === false) {\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n const promisified = ctx.parsedType === util_1.ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return (0, parseUtil_1.OK)(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nexports.ZodPromise = ZodPromise;\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n (0, parseUtil_1.addIssueToContext)(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return parseUtil_1.INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return parseUtil_1.INVALID;\n if (result.status === \"dirty\")\n return (0, parseUtil_1.DIRTY)(result.value);\n if (status.value === \"dirty\")\n return (0, parseUtil_1.DIRTY)(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return parseUtil_1.INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return parseUtil_1.INVALID;\n if (result.status === \"dirty\")\n return (0, parseUtil_1.DIRTY)(result.value);\n if (status.value === \"dirty\")\n return (0, parseUtil_1.DIRTY)(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return parseUtil_1.INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return parseUtil_1.INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!(0, parseUtil_1.isValid)(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!(0, parseUtil_1.isValid)(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util_1.util.assertNever(effect);\n }\n}\nexports.ZodEffects = ZodEffects;\nexports.ZodTransformer = ZodEffects;\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === util_1.ZodParsedType.undefined) {\n return (0, parseUtil_1.OK)(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodOptional = ZodOptional;\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === util_1.ZodParsedType.null) {\n return (0, parseUtil_1.OK)(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodNullable = ZodNullable;\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === util_1.ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nexports.ZodDefault = ZodDefault;\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if ((0, parseUtil_1.isAsync)(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError_1.ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError_1.ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nexports.ZodCatch = ZodCatch;\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_1.ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_1.addIssueToContext)(ctx, {\n code: ZodError_1.ZodIssueCode.invalid_type,\n expected: util_1.ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return parseUtil_1.INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nexports.ZodNaN = ZodNaN;\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexports.BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexports.ZodBranded = ZodBranded;\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return parseUtil_1.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return (0, parseUtil_1.DIRTY)(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return parseUtil_1.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexports.ZodPipeline = ZodPipeline;\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if ((0, parseUtil_1.isValid)(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return (0, parseUtil_1.isAsync)(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodReadonly = ZodReadonly;\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nexports.custom = custom;\nexports.late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind = exports.ZodFirstPartyTypeKind || (exports.ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nexports.instanceof = instanceOfType;\nconst stringType = ZodString.create;\nexports.string = stringType;\nconst numberType = ZodNumber.create;\nexports.number = numberType;\nconst nanType = ZodNaN.create;\nexports.nan = nanType;\nconst bigIntType = ZodBigInt.create;\nexports.bigint = bigIntType;\nconst booleanType = ZodBoolean.create;\nexports.boolean = booleanType;\nconst dateType = ZodDate.create;\nexports.date = dateType;\nconst symbolType = ZodSymbol.create;\nexports.symbol = symbolType;\nconst undefinedType = ZodUndefined.create;\nexports.undefined = undefinedType;\nconst nullType = ZodNull.create;\nexports.null = nullType;\nconst anyType = ZodAny.create;\nexports.any = anyType;\nconst unknownType = ZodUnknown.create;\nexports.unknown = unknownType;\nconst neverType = ZodNever.create;\nexports.never = neverType;\nconst voidType = ZodVoid.create;\nexports.void = voidType;\nconst arrayType = ZodArray.create;\nexports.array = arrayType;\nconst objectType = ZodObject.create;\nexports.object = objectType;\nconst strictObjectType = ZodObject.strictCreate;\nexports.strictObject = strictObjectType;\nconst unionType = ZodUnion.create;\nexports.union = unionType;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nexports.discriminatedUnion = discriminatedUnionType;\nconst intersectionType = ZodIntersection.create;\nexports.intersection = intersectionType;\nconst tupleType = ZodTuple.create;\nexports.tuple = tupleType;\nconst recordType = ZodRecord.create;\nexports.record = recordType;\nconst mapType = ZodMap.create;\nexports.map = mapType;\nconst setType = ZodSet.create;\nexports.set = setType;\nconst functionType = ZodFunction.create;\nexports.function = functionType;\nconst lazyType = ZodLazy.create;\nexports.lazy = lazyType;\nconst literalType = ZodLiteral.create;\nexports.literal = literalType;\nconst enumType = ZodEnum.create;\nexports.enum = enumType;\nconst nativeEnumType = ZodNativeEnum.create;\nexports.nativeEnum = nativeEnumType;\nconst promiseType = ZodPromise.create;\nexports.promise = promiseType;\nconst effectsType = ZodEffects.create;\nexports.effect = effectsType;\nexports.transformer = effectsType;\nconst optionalType = ZodOptional.create;\nexports.optional = optionalType;\nconst nullableType = ZodNullable.create;\nexports.nullable = nullableType;\nconst preprocessType = ZodEffects.createWithPreprocess;\nexports.preprocess = preprocessType;\nconst pipelineType = ZodPipeline.create;\nexports.pipeline = pipelineType;\nconst ostring = () => stringType().optional();\nexports.ostring = ostring;\nconst onumber = () => numberType().optional();\nexports.onumber = onumber;\nconst oboolean = () => booleanType().optional();\nexports.oboolean = oboolean;\nexports.coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexports.NEVER = parseUtil_1.INVALID;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./errors\"), exports);\n__exportStar(require(\"./helpers/parseUtil\"), exports);\n__exportStar(require(\"./helpers/typeAliases\"), exports);\n__exportStar(require(\"./helpers/util\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./ZodError\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.z = void 0;\nconst z = __importStar(require(\"./external\"));\nexports.z = z;\n__exportStar(require(\"./external\"), exports);\nexports.default = z;\n","export * from \"./units\"\nexport * from \"./common\"\nexport * from \"./source\"\nexport * from \"./schematic\"\nexport * from \"./pcb\"\nexport * from \"./cad\"\nexport * from \"./any_soup_element\"\n","import convertUnits from \"convert-units\"\n\nconst si_prefix_multiplier = {\n tera: 10e12,\n T: 10e12,\n giga: 10e9,\n G: 10e9,\n mega: 10e6,\n M: 10e6,\n kilo: 10e3,\n k: 10e3,\n deci: 10e-1,\n d: 10e-1,\n centi: 10e-2,\n c: 10e-2,\n milli: 10e-3,\n m: 10e-3,\n micro: 10e-6,\n u: 10e-6,\n µ: 10e-6,\n nano: 10e-9,\n n: 10e-9,\n pico: 10e-12,\n p: 10e-12,\n}\nconst si_prefixes = Object.keys(si_prefix_multiplier)\n\nconst target_conversion = {\n mass: \"g\",\n length: \"mm\",\n time: \"ms\",\n volume: \"ml\",\n angle: \"deg\",\n}\n\nfunction getSiPrefixMultiplierFromUnit(v: string): number {\n for (const prefix of si_prefixes) {\n if (v.startsWith(prefix)) {\n return si_prefix_multiplier[prefix as keyof typeof si_prefix_multiplier]\n }\n }\n return 1\n}\n\nexport const parseAndConvertSiUnit = <\n T extends\n | string\n | number\n | undefined\n | { x: string | number; y: string | number },\n>(\n v: T,\n): {\n unit: string | null\n value: T extends { x: string | number; y: string | number }\n ? null | { x: number; y: number }\n : null | number\n} => {\n if (typeof v === \"undefined\") return { unit: null, value: null }\n if (typeof v === \"string\" && v.match(/^[\\d\\.]+$/))\n return { value: parseFloat(v) as any, unit: null }\n if (typeof v === \"number\") return { value: v as any, unit: null }\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\n return {\n unit: parseAndConvertSiUnit(v.x).unit,\n value: {\n x: parseAndConvertSiUnit(v.x as any).value as number,\n y: parseAndConvertSiUnit(v.y as any).value as number,\n } as any,\n }\n }\n const unit_reversed = v\n .split(\"\")\n .reverse()\n .join(\"\")\n .match(/[a-zA-Z]+/)?.[0]\n if (!unit_reversed) {\n throw new Error(`Could not determine unit: \"${v}\"`)\n }\n const unit = unit_reversed.split(\"\").reverse().join(\"\")\n const value = v.slice(0, -unit.length)\n let measure\n try {\n measure = convertUnits().describe(unit as any)?.measure\n } catch (e) {}\n if (measure) {\n const target_unit = (target_conversion as any)[measure]\n if (!target_unit) {\n throw new Error(\n `Could not determine target unit for measure: \"${measure}\"`,\n )\n }\n return {\n unit,\n value: convertUnits(parseFloat(value))\n .from(unit as any)\n .to(target_unit) as any,\n }\n } else {\n return {\n unit,\n value: (getSiPrefixMultiplierFromUnit(unit) * parseFloat(value)) as any,\n }\n }\n}\n","import { parseAndConvertSiUnit } from \"src/utils/convert-si-unit-to-number\"\nimport { z } from \"zod\"\n\n// // Currently, removing uncommon SI Prefixes for type simplicity.\n// export type SIPrefix =\n// // | \"y\"\n// // | \"yocto\"\n// // | \"z\"\n// // | \"zepto\"\n// // | \"atto\"\n// // | \"a\"\n// | \"femto\"\n// | \"f\"\n// | \"u\"\n// | \"micro\"\n// // | \"d\"\n// // | \"deci\"\n// | \"c\"\n// | \"centi\"\n// | \"m\"\n// | \"milli\"\n// | \"k\"\n// | \"kilo\"\n// | \"M\"\n// | \"mega\"\n// // | \"G\"\n// // | \"T\"\n// // | \"P\"\n// // | \"E\"\n// // | \"Z\"\n// // | \"Y\"\n\n// export type UnitAbbreviations = {\n// farad: \"F\"\n// ohm: \"Ω\"\n// henry: \"H\"\n// meter: \"m\"\n// volt: \"V\"\n// inch: \"in\"\n// foot: \"ft\"\n// }\n\n// export type Unit = keyof UnitAbbreviations\n// export type NumberWithUnit<T extends Unit> =\n// | `${number}${T | UnitAbbreviations[T]}`\n// | `${number} ${T | UnitAbbreviations[T]}`\n// | `${number}${SIPrefix}${T | UnitAbbreviations[T]}`\n// | `${number} ${SIPrefix}${T | UnitAbbreviations[T]}`\n// export type NumberWithAnyUnit =\n// | `${number}${UnitOrAbbreviation}`\n// | `${number} ${UnitOrAbbreviation}`\n// | `${number}${SIPrefix}${UnitOrAbbreviation}`\n// | `${number} ${SIPrefix}${UnitOrAbbreviation}`\n\n// TODO lots of validation to make sure the unit is valid etc.\nexport const resistance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const capacitance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const inductance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const voltage = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const length = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const distance = length\n\nexport const current = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const time = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const rotation = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport const position = point\n\nexport type Point = z.infer<typeof point>\nexport type InputPoint = z.input<typeof point>\nexport type InputPosition = z.input<typeof position>\nexport type Position = z.infer<typeof position>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n\nexport const position3 = point3\n\nexport type Point3 = z.infer<typeof point3>\n","import { z } from \"zod\"\n\nexport const size = z.object({\n width: z.number(),\n height: z.number(),\n})\n\nexport type Size = z.infer<typeof size>\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { capacitance } from \"src/units\"\n\nexport const source_simple_capacitor = source_component_base.extend({\n ftype: z.literal(\"simple_capacitor\"),\n capacitance,\n})\n\nexport type SourceSimpleCapacitor = z.infer<typeof source_simple_capacitor>\nexport type SourceSimpleCapacitorInput = z.input<typeof source_simple_capacitor>\n","import { z } from \"zod\"\n\nexport const supplier_name = z.enum([\n \"jlcpcb\",\n \"macrofab\",\n \"pcbway\",\n \"digikey\",\n \"mouser\",\n \"lcsc\",\n])\n\nexport type SupplierName = z.infer<typeof supplier_name>\n","import { supplier_name } from \"src/pcb/properties/supplier_name\"\nimport { z } from \"zod\"\n\nexport const source_component_base = z.object({\n type: z.literal(\"source_component\"),\n ftype: z.string().optional(),\n source_component_id: z.string(),\n name: z.string(),\n manufacturer_part_number: z.string().optional(),\n supplier_part_numbers: z\n .record(supplier_name, z.array(z.string()))\n .optional(),\n})\n\nexport type SourceComponentBase = z.infer<typeof source_component_base>\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\n\nexport const source_simple_resistor = source_component_base.extend({\n ftype: z.literal(\"simple_resistor\"),\n resistance,\n})\n\nexport type SourceSimpleResistor = z.infer<typeof source_simple_resistor>\nexport type SourceSimpleResistorInput = z.input<typeof source_simple_resistor>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_diode = source_component_base.extend({\n ftype: z.literal(\"simple_diode\"),\n})\n\nexport type SourceSimpleDiode = z.infer<typeof source_simple_diode>\nexport type SourceSimpleDiodeInput = z.input<typeof source_simple_diode>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_ground = source_component_base.extend({\n ftype: z.literal(\"simple_ground\"),\n})\n\nexport type SourceSimpleGround = z.infer<typeof source_simple_ground>\nexport type SourceSimpleGroundInput = z.input<typeof source_simple_ground>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use source_simple_chip instead. This will be removed in a future version.\n */\nexport const source_simple_bug = source_component_base\n .extend({\n ftype: z.literal(\"simple_bug\"),\n })\n .describe(\"@deprecated\")\n\nexport type source_simple_bug = z.infer<typeof source_simple_bug>\nexport type SourceSimpleBugInput = z.input<typeof source_simple_bug>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_chip = source_component_base.extend({\n ftype: z.literal(\"simple_chip\"),\n})\n\nexport type SourceSimpleChip = z.infer<typeof source_simple_chip>\nexport type SourceSimpleChipInput = z.input<typeof source_simple_chip>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { inductance } from \"../units\"\n\nconst source_simple_inductor = source_component_base.extend({\n ftype: z.literal(\"simple_inductor\"),\n inductance,\n})\n\nexport type SourceSimpleInductor = z.infer<typeof source_simple_inductor>\nexport type SourceSimpleInductorInput = z.input<typeof source_simple_inductor>\n","import { z } from \"zod\"\nimport { source_simple_diode } from \"./source_simple_diode\"\n\nexport const source_led = source_simple_diode.extend({\n ftype: z.literal(\"led\"),\n})\n\nexport type SourceLed = z.infer<typeof source_led>\nexport type SourceLedInput = z.input<typeof source_led>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { voltage } from \"../units\"\n\nexport const source_simple_power_source = source_component_base.extend({\n ftype: z.literal(\"simple_power_source\"),\n voltage,\n})\n\nexport type SourceSimplePowerSource = z.infer<typeof source_simple_power_source>\nexport type SourceSimplePowerSourceInput = z.input<\n typeof source_simple_power_source\n>\n","import { z } from \"zod\"\nimport { source_simple_resistor } from \"./source_simple_resistor\"\nimport { source_simple_capacitor } from \"./source_simple_capacitor\"\nimport { source_simple_diode } from \"./source_simple_diode\"\nimport { source_simple_ground } from \"./source_simple_ground\"\nimport { source_simple_bug } from \"./source_simple_bug\"\nimport { source_simple_chip } from \"./source_simple_chip\"\nimport { source_led } from \"./source_led\"\nimport { source_simple_power_source } from \"./source_simple_power_source\"\n\nexport const any_source_component = z.union([\n source_simple_resistor,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_ground,\n source_simple_chip,\n source_simple_bug,\n source_led,\n source_simple_power_source,\n])\n\nexport type AnySourceComponent = z.infer<typeof any_source_component>\n","import { z } from \"zod\"\n\nexport const source_port = z.object({\n type: z.literal(\"source_port\"),\n pin_number: z.number().optional(),\n port_hints: z.array(z.string()).optional(),\n name: z.string(),\n source_port_id: z.string(),\n source_component_id: z.string(),\n})\n\nexport type SourcePort = z.infer<typeof source_port>\n","import { z } from \"zod\"\n\nexport const source_trace = z.object({\n type: z.literal(\"source_trace\"),\n source_trace_id: z.string(),\n connected_source_port_ids: z.array(z.string()),\n connected_source_net_ids: z.array(z.string()),\n})\n\nexport type SourceTrace = z.infer<typeof source_trace>\n","import { z } from \"zod\"\n\nexport const source_group = z.object({\n type: z.literal(\"source_group\"),\n source_group_id: z.string(),\n name: z.string().optional(),\n})\n\nexport type SourceGroup = z.infer<typeof source_group>\nexport type SourceGroupInput = z.input<typeof source_group>\n","import { z } from \"zod\"\n\nexport const source_net = z.object({\n type: z.literal(\"source_net\"),\n source_net_id: z.string(),\n name: z.string(),\n member_source_group_ids: z.array(z.string()),\n is_power: z.boolean().optional(),\n is_ground: z.boolean().optional(),\n is_digital_signal: z.boolean().optional(),\n is_analog_signal: z.boolean().optional(),\n trace_width: z.number().optional(),\n})\n\nexport type SourceNet = z.infer<typeof source_net>\nexport type SourceNetInput = z.input<typeof source_net>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_box = z\n .object({\n type: z.literal(\"schematic_box\"),\n schematic_component_id: z.string(),\n width: distance,\n height: distance,\n x: distance,\n y: distance,\n })\n .describe(\"Draws a box on the schematic\")\n\nexport type SchematicBoxInput = z.input<typeof schematic_box>\nexport type SchematicBox = z.infer<typeof schematic_box>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_path = z.object({\n type: z.literal(\"schematic_path\"),\n schematic_component_id: z.string(),\n fill_color: z.enum([\"red\", \"blue\"]).optional(),\n is_filled: z.boolean().optional(),\n points: z.array(point),\n})\n\nexport type SchematicPathInput = z.input<typeof schematic_path>\nexport type SchematicPath = z.infer<typeof schematic_path>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\nimport { size } from \"../common/size\"\nimport { length, rotation } from \"../units\"\n\nexport const schematic_pin_styles = z.record(\n z.object({\n left_margin: length.optional(),\n right_margin: length.optional(),\n top_margin: length.optional(),\n bottom_margin: length.optional(),\n }),\n)\n\nexport const schematic_component = z.object({\n type: z.literal(\"schematic_component\"),\n rotation: rotation.default(0),\n size,\n center: point,\n source_component_id: z.string(),\n schematic_component_id: z.string(),\n pin_spacing: length.optional(),\n pin_styles: schematic_pin_styles.optional(),\n box_width: length.optional(),\n symbol_name: z.string().optional(),\n port_arrangement: z\n .union([\n z.object({\n left_size: z.number(),\n right_size: z.number(),\n top_size: z.number().optional(),\n bottom_size: z.number().optional(),\n }),\n z.object({\n left_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n right_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n top_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n bottom_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n }),\n ])\n .optional(),\n port_labels: z.record(z.string()).optional(),\n})\n\nexport type SchematicComponentInput = z.input<typeof schematic_component>\nexport type SchematicComponent = z.infer<typeof schematic_component>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_line = z.object({\n type: z.literal(\"schematic_line\"),\n schematic_component_id: z.string(),\n x1: distance,\n x2: distance,\n y1: distance,\n y2: distance,\n})\n\nexport type SchematicLineInput = z.input<typeof schematic_line>\nexport type SchematicLine = z.infer<typeof schematic_line>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_trace = z.object({\n type: z.literal(\"schematic_trace\"),\n schematic_trace_id: z.string(),\n source_trace_id: z.string(),\n edges: z.array(\n z.object({\n from: z.object({\n x: z.number(),\n y: z.number(),\n }),\n to: z.object({\n x: z.number(),\n y: z.number(),\n }),\n from_schematic_port_id: z.string().optional(),\n to_schematic_port_id: z.string().optional(),\n }),\n ),\n})\n\nexport type SchematicTraceInput = z.input<typeof schematic_trace>\nexport type SchematicTrace = z.infer<typeof schematic_trace>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_text = z.object({\n type: z.literal(\"schematic_text\"),\n schematic_component_id: z.string(),\n schematic_text_id: z.string(),\n text: z.string(),\n position: z.object({\n x: distance,\n y: distance,\n }),\n rotation: z.number().default(0),\n anchor: z\n .enum([\"center\", \"left\", \"right\", \"top\", \"bottom\"])\n .default(\"center\"),\n})\n\nexport type SchematicTextInput = z.input<typeof schematic_text>\nexport type SchematicText = z.infer<typeof schematic_text>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { point } from \"../common\"\n\nexport const schematic_port = z\n .object({\n type: z.literal(\"schematic_port\"),\n schematic_port_id: z.string(),\n source_port_id: z.string(),\n schematic_component_id: z.string().optional(),\n center: point,\n facing_direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n })\n .describe(\"Defines a port on a schematic component\")\n\nexport type SchematicPortInput = z.input<typeof schematic_port>\nexport type SchematicPort = z.infer<typeof schematic_port>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_net_label = z.object({\n type: z.literal(\"schematic_net_label\"),\n source_net_id: z.string(),\n center: point,\n anchor_side: z.enum([\"top\", \"bottom\", \"left\", \"right\"]),\n text: z.string(),\n})\n\nexport type SchematicNetLabelInput = z.input<typeof schematic_net_label>\nexport type SchematicNetLabel = z.infer<typeof schematic_net_label>\n","import { z } from \"zod\"\n\nexport const schematic_error = z\n .object({\n schematic_error_id: z.string(),\n type: z.literal(\"schematic_error\"),\n // eventually each error type should be broken out into a dir of files\n error_type: z.literal(\"schematic_port_not_found\"),\n message: z.string(),\n })\n .describe(\"Defines a schematic error on the schematic\")\n\nexport type SchematicErrorInput = z.input<typeof schematic_error>\nexport type SchematicError = z.infer<typeof schematic_error>\n","import { z } from \"zod\"\n\nexport const all_layers = [\n \"top\",\n \"bottom\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n] as const\n\nexport const layer_string = z.enum(all_layers)\n\nexport const layer_ref = layer_string\n .or(\n z.object({\n name: layer_string,\n }),\n )\n .transform((layer) => {\n if (typeof layer === \"string\") {\n return layer\n }\n return layer.name\n })\n\nexport type LayerRefInput = z.input<typeof layer_ref>\nexport type LayerRef = z.output<typeof layer_ref>\n\nexport const visible_layer = z.enum([\"top\", \"bottom\"])\nexport type VisibleLayerRef = z.infer<typeof visible_layer>\n","import { z } from \"zod\"\nimport { distance } from \"src/units\"\nimport { layer_ref } from \"./layer_ref\"\n\n// x: string | number\n// y: string | number\n// via?: boolean\n// via_to_layer?: string\nexport const pcb_route_hint = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n via_to_layer: layer_ref.optional(),\n})\nexport const pcb_route_hints = z.array(pcb_route_hint)\n\nexport type PcbRouteHintInput = z.input<typeof pcb_route_hint>\nexport type PcbRouteHintsInput = z.input<typeof pcb_route_hints>\nexport type PcbRouteHint = z.output<typeof pcb_route_hint>\nexport type PcbRouteHints = z.output<typeof pcb_route_hints>\n","import { z } from \"zod\"\nimport { distance } from \"../../units\"\nimport { layer_ref } from \"./layer_ref\"\n\nexport const route_hint_point = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n to_layer: layer_ref.optional(),\n trace_width: distance.optional(),\n})\n\nexport type RouteHintPoint = z.infer<typeof route_hint_point>\nexport type RouteHintPointInput = z.input<typeof route_hint_point>\n","import { z } from \"zod\"\nimport { point } from \"../common\"\nimport { layer_ref } from \"./properties/layer_ref\"\nimport { rotation, length } from \"../units\"\n\nexport const pcb_component = z\n .object({\n type: z.literal(\"pcb_component\"),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n center: point,\n layer: layer_ref,\n rotation: rotation,\n width: length,\n height: length,\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type PCBComponentInput = z.input<typeof pcb_component>\nexport type PCBComponent = z.infer<typeof pcb_component>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const pcb_hole = z\n .object({\n type: z.literal(\"pcb_hole\"),\n hole_shape: z.enum([\"round\", \"square\"]).default(\"round\"),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n })\n .or(\n z.object({\n type: z.literal(\"pcb_hole\"),\n hole_shape: z.literal(\"oval\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n }),\n )\n .describe(\"Defines a hole on the PCB\")\n\nexport type PCBHoleInput = z.input<typeof pcb_hole>\nexport type PCBHole = z.infer<typeof pcb_hole>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref } from \"./properties/layer_ref\"\n\nexport const pcb_plated_hole = z\n .object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circle\"),\n outer_diameter: z.number(),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n })\n .or(\n z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.enum([\"oval\", \"pill\"]),\n outer_width: z.number(),\n outer_height: z.number(),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n }),\n )\n .describe(\"Defines a plated hole on the PCB\")\n\nexport type PCBPlatedHoleInput = z.input<typeof pcb_plated_hole>\nexport type PCBPlatedHole = z.infer<typeof pcb_plated_hole>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref } from \"./properties/layer_ref\"\n\nexport const pcb_port = z\n .object({\n type: z.literal(\"pcb_port\"),\n pcb_port_id: z.string(),\n source_port_id: z.string(),\n pcb_component_id: z.string(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n })\n .describe(\"Defines a port on the PCB\")\n\nexport type PCBPort = z.infer<typeof pcb_port>\nexport type PCBPortInput = z.input<typeof pcb_port>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref } from \"./properties/layer_ref\"\n\nexport const pcb_smtpad = z\n .union([\n z.object({\n pcb_smtpad_id: z.string(),\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"circle\"),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n }),\n z.object({\n pcb_smtpad_id: z.string(),\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rect\"),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n }),\n ])\n .describe(\"Defines an SMT pad on the PCB\")\n\nexport type PCBSMTPadInput = z.input<typeof pcb_smtpad>\nexport type PCBSMTPad = z.infer<typeof pcb_smtpad>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const pcb_text = z\n .object({\n type: z.literal(\"pcb_text\"),\n text: z.string(),\n x: distance,\n y: distance,\n align: z.enum([\"bottom-left\"]),\n width: distance,\n height: distance,\n lines: z.number(),\n })\n .describe(\"Defines text on the PCB\")\n\nexport type PCBTextInput = z.input<typeof pcb_text>\nexport type PCBText = z.infer<typeof pcb_text>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref } from \"./properties/layer_ref\"\n\nexport const pcb_trace = z.object({\n type: z.literal(\"pcb_trace\"),\n source_trace_id: z.string().optional(),\n pcb_component_id: z.string().optional(),\n pcb_trace_id: z.string(),\n route_thickness_mode: z\n .enum([\"constant\", \"interpolated\"])\n .default(\"constant\")\n .optional(),\n should_round_corners: z.boolean().optional(),\n route: z.array(\n z.union([\n z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n }),\n z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string(),\n }),\n ]),\n ),\n})\n\nexport type PCBTraceInput = z.input<typeof pcb_trace>\nexport type PCBTrace = z.output<typeof pcb_trace>\n","import { point } from \"src/common\"\nimport { z } from \"zod\"\n\nexport const pcb_trace_error = z\n .object({\n pcb_error_id: z.string(),\n type: z.literal(\"pcb_error\"),\n error_type: z.literal(\"pcb_trace_error\"),\n message: z.string(),\n center: point.optional(),\n pcb_trace_id: z.string(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB\")\n\nexport type PCBTraceErrorInput = z.input<typeof pcb_trace_error>\nexport type PCBTraceError = z.infer<typeof pcb_trace_error>\n","import { z } from \"zod\"\n\nexport const pcb_port_not_matched_error = z\n .object({\n pcb_error_id: z.string(),\n type: z.literal(\"pcb_error\"),\n error_type: z.literal(\"pcb_port_not_matched_error\"),\n message: z.string(),\n pcb_component_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB\")\n\nexport type PCBPortNotMatchedErrorInput = z.input<\n typeof pcb_port_not_matched_error\n>\nexport type PCBPortNotMatchedError = z.infer<typeof pcb_port_not_matched_error>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref } from \"./properties/layer_ref\"\n\nexport const pcb_via = z\n .object({\n type: z.literal(\"pcb_via\"),\n x: distance,\n y: distance,\n outer_diameter: distance.default(\"0.6mm\"),\n hole_diameter: distance.default(\"0.25mm\"),\n /** @deprecated */\n from_layer: layer_ref.optional(),\n /** @deprecated */\n to_layer: layer_ref.optional(),\n layers: z.array(layer_ref),\n })\n .describe(\"Defines a via on the PCB\")\n\nexport type PCBViaInput = z.input<typeof pcb_via>\nexport type PCBVia = z.infer<typeof pcb_via>\n","import { z } from \"zod\"\nimport { length } from \"../units\"\nimport { point } from \"../common\"\n\nexport const pcb_board = z\n .object({\n type: z.literal(\"pcb_board\"),\n pcb_board_id: z.string().default(\"pcb_board_0\").optional(),\n width: length,\n height: length,\n center: point,\n outline: z.array(point).optional(),\n })\n .describe(\"Defines the board outline of the PCB\")\n\nexport type PCBBoardInput = z.input<typeof pcb_board>\nexport type PCBBoard = z.infer<typeof pcb_board>\n","import { z } from \"zod\"\n\nexport const pcb_placement_error = z\n .object({\n pcb_error_id: z.string(),\n type: z.literal(\"pcb_error\"),\n error_type: z.literal(\"pcb_placement_error\"),\n message: z.string(),\n })\n .describe(\"Defines a placement error on the PCB\")\n\nexport type PCBPlacementErrorInput = z.input<typeof pcb_placement_error>\nexport type PCBPlacementError = z.infer<typeof pcb_placement_error>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { route_hint_point } from \"./index\"\n\nexport const pcb_trace_hint = z\n .object({\n pcb_trace_hint_id: z.string(),\n type: z.literal(\"pcb_trace_hint\"),\n pcb_port_id: z.string(),\n pcb_component_id: z.string(),\n route: z.array(route_hint_point.optional()),\n })\n .describe(\"A hint that can be used to generate a PCB trace\")\n\nexport type PcbTraceHint = z.infer<typeof pcb_trace_hint>\nexport type PcbTraceHintInput = z.input<typeof pcb_trace_hint>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref, visible_layer } from \"./properties/layer_ref\"\n\nexport const pcb_silkscreen_line = z\n .object({\n type: z.literal(\"pcb_silkscreen_line\"),\n pcb_silkscreen_line_id: z.string(),\n pcb_component_id: z.string(),\n stroke_width: distance.default(\"0.1mm\"),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen line on the PCB\")\n\nexport type PcbSilkscreenLine = z.infer<typeof pcb_silkscreen_line>\nexport type PcbSilkscreenLineInput = z.input<typeof pcb_silkscreen_line>\n","import { z } from \"zod\"\nimport { visible_layer } from \"./properties/layer_ref\"\nimport { point } from \"src/common\"\nimport { length } from \"src/units\"\n\nexport const pcb_silkscreen_path = z\n .object({\n type: z.literal(\"pcb_silkscreen_path\"),\n pcb_silkscreen_path_id: z.string(),\n pcb_component_id: z.string(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length,\n })\n .describe(\"Defines a silkscreen path on the PCB\")\n\nexport type PcbSilkscreenPath = z.infer<typeof pcb_silkscreen_path>\nexport type PcbSilkscreenPathInput = z.input<typeof pcb_silkscreen_path>\n","import { z } from \"zod\"\nimport { visible_layer } from \"./properties/layer_ref\"\nimport { point } from \"src/common\"\nimport { distance } from \"src/units\"\n\nexport const pcb_silkscreen_text = z\n .object({\n type: z.literal(\"pcb_silkscreen_text\"),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n })\n .describe(\"Defines silkscreen text on the PCB\")\n\nexport type PcbSilkscreenText = z.infer<typeof pcb_silkscreen_text>\nexport type PcbSilkscreenTextInput = z.input<typeof pcb_silkscreen_text>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref, visible_layer } from \"./properties/layer_ref\"\nimport { point } from \"src/common/point\"\n\nexport const pcb_silkscreen_rect = z\n .object({\n type: z.literal(\"pcb_silkscreen_rect\"),\n pcb_silkscreen_rect_id: z.string(),\n pcb_component_id: z.string(),\n center: point,\n width: distance,\n height: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen rect on the PCB\")\n\nexport type PcbSilkscreenRect = z.infer<typeof pcb_silkscreen_rect>\nexport type PcbSilkscreenRectInput = z.input<typeof pcb_silkscreen_rect>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref, visible_layer } from \"./properties/layer_ref\"\nimport { point } from \"src/common/point\"\n\nexport const pcb_silkscreen_circle = z\n .object({\n type: z.literal(\"pcb_silkscreen_circle\"),\n pcb_silkscreen_circle_id: z.string(),\n pcb_component_id: z.string(),\n center: point,\n radius: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen circle on the PCB\")\n\nexport type PcbSilkscreenCircle = z.infer<typeof pcb_silkscreen_circle>\nexport type PcbSilkscreenCircleInput = z.input<typeof pcb_silkscreen_circle>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { layer_ref, visible_layer } from \"./properties/layer_ref\"\nimport { point } from \"src/common/point\"\n\nexport const pcb_silkscreen_oval = z\n .object({\n type: z.literal(\"pcb_silkscreen_oval\"),\n pcb_silkscreen_oval_id: z.string(),\n pcb_component_id: z.string(),\n center: point,\n radius_x: distance,\n radius_y: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen oval on the PCB\")\n\nexport type PcbSilkscreenOval = z.infer<typeof pcb_silkscreen_oval>\nexport type PcbSilkscreenOvalInput = z.input<typeof pcb_silkscreen_oval>\n","import { z } from \"zod\"\nimport { visible_layer } from \"./properties/layer_ref\"\nimport { point } from \"src/common\"\nimport { distance } from \"src/units\"\n\nexport const pcb_fabrication_note_text = z\n .object({\n type: z.literal(\"pcb_fabrication_note_text\"),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n })\n .describe(\n \"Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\",\n )\n\nexport type PcbFabricationNoteText = z.infer<typeof pcb_fabrication_note_text>\nexport type PcbFabricationNoteTextInput = z.input<\n typeof pcb_fabrication_note_text\n>\n","import { z } from \"zod\"\nimport { visible_layer } from \"./properties/layer_ref\"\nimport { point } from \"src/common\"\nimport { length } from \"src/units\"\n\nexport const pcb_fabrication_note_path = z\n .object({\n type: z.literal(\"pcb_fabrication_note_path\"),\n fabrication_note_path_id: z.string(),\n pcb_component_id: z.string(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length,\n })\n .describe(\n \"Defines a fabrication path on the PCB for fabricators or assemblers\",\n )\n\nexport type PcbFabricationNotePath = z.infer<typeof pcb_fabrication_note_path>\nexport type PcbFabricationNotePathInput = z.input<\n typeof pcb_fabrication_note_path\n>\n","import { z } from \"zod\"\nimport { point } from \"../common\"\nimport { distance } from \"../units\"\n\nexport const pcb_keepout = z\n .object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"rect\"),\n x: distance,\n y: distance,\n width: distance,\n height: distance,\n pcb_keepout_id: z.string(),\n layer: z.array(z.string()).optional(), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n })\n .or(\n z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"circle\"),\n center: point,\n radius: distance,\n pcb_keepout_id: z.string(),\n layer: z.array(z.string()).optional(), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n }),\n )\n\nexport type PCBKeepoutInput = z.input<typeof pcb_keepout>\nexport type PCBKeepout = z.infer<typeof pcb_keepout>\n","import { z } from \"zod\"\nimport { point3 } from \"../common\"\nimport { rotation, length } from \"../units\"\nimport { layer_ref } from \"src/pcb\"\n\nexport const cad_component = z\n .object({\n type: z.literal(\"cad_component\"),\n cad_component_id: z.string(),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n position: point3,\n rotation: point3.optional(),\n size: point3.optional(),\n layer: layer_ref.optional(),\n\n // These are all ways to generate/load the 3d model\n footprinter_string: z.string().optional(),\n model_obj_url: z.string().optional(),\n model_stl_url: z.string().optional(),\n model_3mf_url: z.string().optional(),\n model_jscad: z.any().optional(),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type CadComponentInput = z.input<typeof cad_component>\nexport type CadComponent = z.infer<typeof cad_component>\n","import { z } from \"zod\"\nimport * as pcb from \"./pcb\"\nimport * as sch from \"./schematic\"\nimport * as src from \"./source\"\nimport * as cad from \"./cad\"\n\nexport const any_soup_element = z.union([\n // TODO source_group\n // TODO source_config\n // TODO pcb_group\n // TODO pcb_config\n // TODO schematic_config\n // TODO schematic_group\n src.source_trace,\n src.source_port,\n src.any_source_component,\n src.source_led,\n src.source_net,\n src.source_group,\n src.source_simple_bug,\n src.source_simple_chip,\n src.source_simple_capacitor,\n src.source_simple_diode,\n src.source_simple_resistor,\n src.source_simple_power_source,\n pcb.pcb_component,\n pcb.pcb_hole,\n pcb.pcb_plated_hole,\n pcb.pcb_keepout,\n pcb.pcb_port,\n pcb.pcb_text,\n pcb.pcb_trace,\n pcb.pcb_via,\n pcb.pcb_smtpad,\n pcb.pcb_board,\n pcb.pcb_trace_hint,\n pcb.pcb_silkscreen_line,\n pcb.pcb_silkscreen_path,\n pcb.pcb_silkscreen_text,\n pcb.pcb_silkscreen_rect,\n pcb.pcb_silkscreen_circle,\n pcb.pcb_silkscreen_oval,\n pcb.pcb_trace_error,\n pcb.pcb_placement_error,\n pcb.pcb_port_not_matched_error,\n pcb.pcb_fabrication_note_path,\n pcb.pcb_fabrication_note_text,\n sch.schematic_box,\n sch.schematic_text,\n sch.schematic_line,\n sch.schematic_component,\n sch.schematic_port,\n sch.schematic_trace,\n sch.schematic_path,\n sch.schematic_error,\n sch.schematic_net_label,\n cad.cad_component,\n])\n\nexport type AnySoupElement = z.infer<typeof any_soup_element>\nexport type AnySoupElementInput = z.input<typeof any_soup_element>\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});const e={attribute:/\\[\\s*(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)\\s*(?:(?<operator>\\W?=)\\s*(?<value>.+?)\\s*(\\s(?<caseSensitive>[iIsS]))?\\s*)?\\]/gu,id:/#(?<name>[-\\w\\P{ASCII}]+)/gu,class:/\\.(?<name>[-\\w\\P{ASCII}]+)/gu,comma:/\\s*,\\s*/g,combinator:/\\s*[\\s>+~]\\s*/g,\"pseudo-element\":/::(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>¶*)\\))?/gu,\"pseudo-class\":/:(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>¶*)\\))?/gu,universal:/(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?\\*/gu,type:/(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)/gu},t=new Set([\"combinator\",\"comma\"]),n=new Set([\"not\",\"is\",\"where\",\"has\",\"matches\",\"-moz-any\",\"-webkit-any\",\"nth-child\",\"nth-last-child\"]),s=/(?<index>[\\dn+-]+)\\s+of\\s+(?<subtree>.+)/,o={\"nth-child\":s,\"nth-last-child\":s},r=t=>{switch(t){case\"pseudo-element\":case\"pseudo-class\":return new RegExp(e[t].source.replace(\"(?<argument>¶*)\",\"(?<argument>.*)\"),\"gu\");default:return e[t]}};function c(e,t){let n=0,s=\"\";for(;t<e.length;t++){const o=e[t];switch(o){case\"(\":++n;break;case\")\":--n}if(s+=o,0===n)return s}return s}function i(n,s=e){if(!n)return[];const o=[n];for(const[e,t]of Object.entries(s))for(let n=0;n<o.length;n++){const s=o[n];if(\"string\"!=typeof s)continue;t.lastIndex=0;const r=t.exec(s);if(!r)continue;const c=r.index-1,i=[],a=r[0],l=s.slice(0,c+1);l&&i.push(l),i.push({...r.groups,type:e,content:a});const u=s.slice(c+a.length+1);u&&i.push(u),o.splice(n,1,...i)}let r=0;for(const e of o)switch(typeof e){case\"string\":throw new Error(`Unexpected sequence ${e} found at index ${r}`);case\"object\":r+=e.content.length,e.pos=[r-e.content.length,r],t.has(e.type)&&(e.content=e.content.trim()||\" \")}return o}const a=/(['\"])([^\\\\\\n]+?)\\1/g,l=/\\\\./g;function u(t,n=e){if(\"\"===(t=t.trim()))return[];const s=[];t=(t=t.replace(l,((e,t)=>(s.push({value:e,offset:t}),\"\".repeat(e.length))))).replace(a,((e,t,n,o)=>(s.push({value:e,offset:o}),`${t}${\"\".repeat(n.length)}${t}`)));{let e,n=0;for(;(e=t.indexOf(\"(\",n))>-1;){const o=c(t,e);s.push({value:o,offset:e}),t=`${t.substring(0,e)}(${\"¶\".repeat(o.length-2)})${t.substring(e+o.length)}`,n=e+o.length}}const o=i(t,n),u=new Set;for(const e of s.reverse())for(const t of o){const{offset:n,value:s}=e;if(!(t.pos[0]<=n&&n+s.length<=t.pos[1]))continue;const{content:o}=t,r=n-t.pos[0];t.content=o.slice(0,r)+s+o.slice(r+s.length),t.content!==o&&u.add(t)}for(const e of u){const t=r(e.type);if(!t)throw new Error(`Unknown token type: ${e.type}`);t.lastIndex=0;const n=t.exec(e.content);if(!n)throw new Error(`Unable to parse content for ${e.type}: ${e.content}`);Object.assign(e,n.groups)}return o}function p(e,{list:t=!0}={}){if(t&&e.find((e=>\"comma\"===e.type))){const t=[],n=[];for(let s=0;s<e.length;s++)if(\"comma\"===e[s].type){if(0===n.length)throw new Error(\"Incorrect comma at \"+s);t.push(p(n,{list:!1})),n.length=0}else n.push(e[s]);if(0===n.length)throw new Error(\"Trailing comma\");return t.push(p(n,{list:!1})),{type:\"list\",list:t}}for(let t=e.length-1;t>=0;t--){let n=e[t];if(\"combinator\"===n.type){let s=e.slice(0,t),o=e.slice(t+1);return{type:\"complex\",combinator:n.content,left:p(s),right:p(o)}}}switch(e.length){case 0:throw new Error(\"Could not build AST.\");case 1:return e[0];default:return{type:\"compound\",list:[...e]}}}function*f(e,t){switch(e.type){case\"list\":for(let t of e.list)yield*f(t,e);break;case\"complex\":yield*f(e.left,e),yield*f(e.right,e);break;case\"compound\":yield*e.list.map((t=>[t,e]));break;default:yield[e,t]}}function h(e,{recursive:t=!0,list:s=!0}={}){const r=u(e);if(!r)return;const c=p(r,{list:s});if(!t)return c;for(const[e]of f(c)){if(\"pseudo-class\"!==e.type||!e.argument)continue;if(!n.has(e.name))continue;let t=e.argument;const s=o[e.name];if(s){const n=s.exec(t);if(!n)continue;Object.assign(e,n.groups),t=n.groups.subtree}t&&Object.assign(e,{subtree:h(t,{recursive:!0,list:!0})})}return c}function m(e,t){return t=t||Math.max(...e)+1,e[0]*(t<<1)+e[1]*t+e[2]}exports.RECURSIVE_PSEUDO_CLASSES=n,exports.RECURSIVE_PSEUDO_CLASSES_ARGS=o,exports.TOKENS=e,exports.TRIM_TOKENS=t,exports.flatten=f,exports.gobbleParens=c,exports.parse=h,exports.specificity=function e(t){let s=t;if(\"string\"==typeof s&&(s=h(s,{recursive:!0})),!s)return[];if(\"list\"===s.type&&\"list\"in s){let t=10;const n=s.list.map((n=>{const s=e(n);return t=Math.max(t,...e(n)),s})),o=n.map((e=>m(e,t)));return n[o.indexOf(Math.max(...o))]}const o=[0,0,0];for(const[t]of f(s))switch(t.type){case\"id\":o[0]++;break;case\"class\":case\"attribute\":o[1]++;break;case\"pseudo-element\":case\"type\":o[2]++;break;case\"pseudo-class\":if(\"where\"===t.name)break;if(!n.has(t.name)||!t.subtree){o[1]++;break}e(t.subtree).forEach(((e,t)=>o[t]+=e)),\"nth-child\"!==t.name&&\"nth-last-child\"!==t.name||o[1]++}return o},exports.specificityToNumber=m,exports.stringify=function(e){let t;return t=Array.isArray(e)?e:[...f(e)].map((([e])=>e)),t.map((e=>e.content)).join(\"\")},exports.tokenize=u,exports.tokenizeBy=i,exports.walk=function(e,t,n){if(e)for(const[s,o]of f(e,n))t(s,o)};\n","export * from \"./lib/su\"\nexport * from \"./lib/transform-soup-elements\"\nexport * from \"./lib/direction-to-vec\"\nexport * from \"./lib/apply-selector\"\n\nexport { default as su } from \"./lib/su\"\n","import type {\n AnySoupElement,\n AnySoupElementInput,\n SourceComponentBase,\n SourcePort,\n} from \"@tscircuit/soup\"\n\ntype SoupOps<\n K extends AnySoupElement[\"type\"],\n T extends AnySoupElement | AnySoupElementInput\n> = {\n get: (id: string) => Extract<T, { type: K }> | null\n select: (selector: string) => Extract<T, { type: K }> | null\n getWhere: (where: any) => Extract<T, { type: K }> | null\n getUsing: (using: {\n [key: `${string}_id`]: string\n }) => Extract<T, { type: K }> | null\n list: (where?: any) => Extract<T, { type: K }>[]\n}\n\nexport type SoupUtilObject = {\n [K in AnySoupElement[\"type\"]]: SoupOps<K, AnySoupElement>\n}\nexport type SoupInputUtilObject = {\n [K in AnySoupElementInput[\"type\"]]: SoupOps<K, AnySoupElementInput>\n}\n\nexport type GetSoupUtilObject = ((soup: AnySoupElement[]) => SoupUtilObject) & {\n unparsed: (soup: AnySoupElementInput[]) => SoupInputUtilObject\n}\n\nexport const su: GetSoupUtilObject = ((soup: AnySoupElement[]) => {\n const su = new Proxy(\n {},\n {\n get: (proxy_target: any, component_type: string) => {\n return {\n get: (id: string) =>\n soup.find(\n (e: any) =>\n e.type === component_type && e[`${component_type}_id`] === id\n ),\n getUsing: (using: any) => {\n const keys = Object.keys(using)\n if (keys.length !== 1) {\n throw new Error(\n \"getUsing requires exactly one key, e.g. { pcb_component_id }\"\n )\n }\n const join_key = keys[0] as string\n const join_type = join_key.replace(\"_id\", \"\")\n const joiner: any = soup.find(\n (e: any) =>\n e.type === join_type && e[join_key] === using[join_key]\n )\n if (!joiner) return null\n return soup.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joiner[`${component_type}_id`]\n )\n },\n getWhere: (where: any) => {\n const keys = Object.keys(where)\n return soup.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key])\n )\n },\n list: (where?: any) => {\n const keys = !where ? [] : Object.keys(where)\n return soup.filter(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key])\n )\n },\n select: (selector: string) => {\n // TODO when applySelector is isolated we can use it, until then we\n // do a poor man's selector implementation for two common cases\n if (component_type === \"source_component\") {\n return soup.find(\n (e) =>\n e.type === \"source_component\" &&\n e.name === selector.replace(/\\./g, \"\")\n )\n } else if (\n component_type === \"pcb_port\" ||\n component_type === \"source_port\" ||\n component_type === \"schematic_port\"\n ) {\n const [component_name, port_selector] = selector\n .replace(/\\./g, \"\")\n .split(/[\\s\\>]+/)\n const source_component = soup.find(\n (e) =>\n e.type === \"source_component\" && e.name === component_name\n ) as SourceComponentBase\n if (!source_component) return null\n const source_port = soup.find(\n (e) =>\n e.type === \"source_port\" &&\n e.source_component_id ===\n source_component.source_component_id &&\n (e.name === port_selector ||\n (e.port_hints ?? []).includes(port_selector!))\n ) as SourcePort\n if (!source_port) return null\n if (component_type === \"source_port\") return source_port\n\n if (component_type === \"pcb_port\") {\n return soup.find(\n (e) =>\n e.type === \"pcb_port\" &&\n e.source_port_id === source_port.source_port_id\n )\n } else if (component_type === \"schematic_port\") {\n return soup.find(\n (e) =>\n e.type === \"schematic_port\" &&\n e.source_port_id === source_port.source_port_id\n )\n }\n }\n },\n }\n },\n }\n )\n\n return su\n}) as any\nsu.unparsed = su as any\n\nexport default su\n","export const directionToVec = (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n if (direction === \"up\") return { x: 0, y: 1 }\n else if (direction === \"down\") return { x: 0, y: -1 }\n else if (direction === \"left\") return { x: -1, y: 0 }\n else if (direction === \"right\") return { x: 1, y: 0 }\n else throw new Error(\"Invalid direction\")\n}\n\nexport const vecToDirection = ({ x, y }: { x: number; y: number }) => {\n if (x > y) y = 0\n if (y > x) x = 0\n if (x > 0 && y === 0) return \"right\"\n else if (x < 0 && y === 0) return \"left\"\n else if (x === 0 && y > 0) return \"up\"\n else if (x === 0 && y < 0) return \"down\"\n else throw new Error(`Invalid vector for direction conversion (${x}, ${y})`)\n}\n\nexport const rotateClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"right\"\n else if (direction === \"right\") return \"down\"\n else if (direction === \"down\") return \"left\"\n else if (direction === \"left\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateCounterClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"left\"\n else if (direction === \"left\") return \"down\"\n else if (direction === \"down\") return \"right\"\n else if (direction === \"right\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n num90DegreeClockwiseTurns: number\n) => {\n while (num90DegreeClockwiseTurns > 0) {\n direction = rotateClockwise(direction)\n num90DegreeClockwiseTurns--\n }\n while (num90DegreeClockwiseTurns < 0) {\n direction = rotateCounterClockwise(direction)\n num90DegreeClockwiseTurns++\n }\n return direction\n}\n\nexport const oppositeDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"down\"\n else if (direction === \"down\") return \"up\"\n else if (direction === \"left\") return \"right\"\n else if (direction === \"right\") return \"left\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const oppositeSide = (\n sideOrDir: \"up\" | \"down\" | \"top\" | \"bottom\" | \"left\" | \"right\"\n) => {\n if (sideOrDir === \"top\" || sideOrDir === \"up\") return \"bottom\"\n else if (sideOrDir === \"bottom\" || sideOrDir === \"down\") return \"top\"\n else if (sideOrDir === \"left\") return \"right\"\n else if (sideOrDir === \"right\") return \"left\"\n throw new Error(`Invalid sideOrDir: ${sideOrDir}`)\n}\n","import type { AnySoupElement } from \"@tscircuit/soup\"\nimport {\n directionToVec,\n rotateDirection,\n vecToDirection,\n} from \"./direction-to-vec\"\nimport { type Matrix, applyToPoint, decomposeTSR } from \"transformation-matrix\"\n\nexport const transformSchematicElement = (\n elm: AnySoupElement,\n matrix: Matrix\n) => {\n if (elm.type === \"schematic_component\") {\n // TODO handle rotation\n elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_port\") {\n elm.center = applyToPoint(matrix, elm.center)\n\n if (elm.facing_direction) {\n elm.facing_direction = rotateDirection(\n elm.facing_direction,\n -(Math.atan2(matrix.b, matrix.a) / Math.PI) * 2\n )\n }\n } else if (elm.type === \"schematic_text\") {\n elm.position = applyToPoint(matrix, elm.position)\n // } else if (elm.type === \"schematic_group\") {\n // elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_trace\") {\n } else if (elm.type === \"schematic_box\") {\n const { x, y } = applyToPoint(matrix, { x: elm.x, y: elm.y })\n elm.x = x\n elm.y = y\n } else if (elm.type === \"schematic_line\") {\n const { x: x1, y: y1 } = applyToPoint(matrix, { x: elm.x1, y: elm.y1 })\n const { x: x2, y: y2 } = applyToPoint(matrix, { x: elm.x2, y: elm.y2 })\n elm.x1 = x1\n elm.y1 = y1\n elm.x2 = x2\n elm.y2 = y2\n }\n return elm\n}\n\nexport const transformSchematicElements = (\n elms: AnySoupElement[],\n matrix: Matrix\n) => {\n return elms.map((elm) => transformSchematicElement(elm, matrix))\n}\n\nexport const transformPCBElement = (elm: AnySoupElement, matrix: Matrix) => {\n if (\n elm.type === \"pcb_plated_hole\" ||\n elm.type === \"pcb_hole\" ||\n elm.type === \"pcb_via\" ||\n elm.type === \"pcb_smtpad\" ||\n elm.type === \"pcb_port\"\n ) {\n const { x, y } = applyToPoint(matrix, { x: elm.x, y: elm.y })\n elm.x = x\n elm.y = y\n } else if (\n elm.type === \"pcb_silkscreen_text\" ||\n elm.type === \"pcb_fabrication_note_text\"\n ) {\n elm.anchor_position = applyToPoint(matrix, elm.anchor_position)\n } else if (\n elm.type === \"pcb_silkscreen_circle\" ||\n elm.type === \"pcb_silkscreen_rect\" ||\n elm.type === \"pcb_component\"\n ) {\n elm.center = applyToPoint(matrix, elm.center)\n } else if (\n elm.type === \"pcb_silkscreen_path\" ||\n elm.type === \"pcb_trace\" ||\n elm.type === \"pcb_fabrication_note_path\"\n ) {\n elm.route = elm.route.map((rp) => {\n const tp = applyToPoint(matrix, rp) as { x: number; y: number }\n rp.x = tp.x\n rp.y = tp.y\n return rp\n })\n } else if (elm.type === \"pcb_silkscreen_line\") {\n const p1 = { x: elm.x1, y: elm.y1 }\n const p2 = { x: elm.x2, y: elm.y2 }\n const p1t = applyToPoint(matrix, p1)\n const p2t = applyToPoint(matrix, p2)\n elm.x1 = p1t.x\n elm.y1 = p1t.y\n elm.x2 = p2t.x\n elm.y2 = p2t.y\n } else if (elm.type === \"cad_component\") {\n const newPos = applyToPoint(matrix, {\n x: elm.position.x,\n y: elm.position.y,\n })\n elm.position.x = newPos.x\n elm.position.y = newPos.y\n }\n return elm\n}\n\nexport const transformPCBElements = (\n elms: AnySoupElement[],\n matrix: Matrix\n) => {\n const tsr = decomposeTSR(matrix)\n const flipPadWidthHeight =\n Math.round(tsr.rotation.angle / (Math.PI / 2)) % 2 === 1\n let transformedElms = elms.map((elm) => transformPCBElement(elm, matrix))\n if (flipPadWidthHeight) {\n transformedElms = transformedElms.map((elm) => {\n if (elm.type === \"pcb_smtpad\" && elm.shape === \"rect\") {\n ;[elm.width, elm.height] = [elm.height, elm.width]\n }\n return elm\n })\n }\n return transformedElms\n}\n","import * as parsel from \"parsel-js\"\nimport { convertAbbrToType } from \"./convert-abbreviation-to-soup-element-type\"\nimport type { AnySoupElement } from \"@tscircuit/soup\"\n\nconst filterByType = (\n elements: AnySoupElement[],\n type: string\n): AnySoupElement[] => {\n type = convertAbbrToType(type)\n return elements.filter(\n (elm) => (\"ftype\" in elm && elm.ftype === type) || elm.type === type\n )\n}\n\n/**\n * Filter elements to match the selector, e.g. to access the left port of a\n * resistor you can do \".R1 > port.left\"\n */\nexport const applySelector = (\n elements: AnySoupElement[],\n selectorRaw: string\n): AnySoupElement[] => {\n const selectorAST = parsel.parse(selectorRaw)\n return applySelectorAST(elements, selectorAST!)\n}\n\nconst doesElmMatchClassName = (elm: AnySoupElement, className: string) =>\n (\"name\" in elm && elm.name === className) ||\n (\"port_hints\" in elm && elm.port_hints?.includes(className))\n\nexport const applySelectorAST = (\n elements: AnySoupElement[],\n selectorAST: parsel.AST\n): AnySoupElement[] => {\n switch (selectorAST.type) {\n case \"complex\": {\n switch (selectorAST.combinator) {\n case \" \": // TODO technically should do a deep search\n case \">\": {\n const { left, right } = selectorAST\n if (left.type === \"class\" || left.type === \"type\") {\n // TODO should also check if content matches any element tags\n let matchElms: AnySoupElement[]\n if (left.type === \"class\") {\n matchElms = elements.filter((elm) =>\n doesElmMatchClassName(elm, left.name)\n )\n } else if (left.type === \"type\") {\n matchElms = filterByType(elements, left.name)\n } else {\n matchElms = []\n }\n\n const childrenOfMatchingElms = matchElms.flatMap((matchElm) =>\n elements.filter(\n (elm: any) =>\n elm[`${matchElm.type}_id`] ===\n (matchElm as any)[`${matchElm.type}_id`] && elm !== matchElm\n )\n )\n return applySelectorAST(childrenOfMatchingElms, right)\n } else {\n throw new Error(`unsupported selector type \"${left.type}\" `)\n }\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for complex combinator \"${selectorAST.combinator}\"`\n )\n }\n }\n return []\n }\n case \"compound\": {\n const conditionsToMatch = selectorAST.list.map((part) => {\n switch (part.type) {\n case \"class\": {\n return (elm: any) => doesElmMatchClassName(elm, part.name)\n }\n case \"type\": {\n const name = convertAbbrToType(part.name)\n return (elm: any) => elm.type === name\n }\n }\n })\n\n return elements.filter((elm) =>\n conditionsToMatch.every((condFn) => condFn?.(elm))\n )\n }\n case \"type\": {\n return filterByType(elements, selectorAST.name) as AnySoupElement[]\n }\n case \"class\": {\n return elements.filter((elm) =>\n doesElmMatchClassName(elm, selectorAST.name)\n )\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for type: \"${\n selectorAST.type\n }\" ${JSON.stringify(selectorAST, null, \" \")}`\n )\n }\n }\n}\n","export const convertAbbrToType = (abbr: string): string => {\n switch (abbr) {\n case \"port\":\n return \"source_port\"\n case \"net\":\n return \"source_net\"\n case \"power\":\n return \"simple_power_source\"\n }\n return abbr\n}\n","import {\n Matrix,\n identity,\n scale,\n translate,\n compose,\n applyToPoint,\n} from \"transformation-matrix\"\nimport { useCallback, useEffect, useReducer, useRef, useState } from \"react\"\n\ntype Point = { x: number; y: number }\n\ninterface Props {\n canvasElm?: HTMLElement\n transform?: Matrix\n initialTransform?: Matrix\n onSetTransform?: (transform: Matrix) => any\n}\n\nexport const useMouseMatrixTransform = (props: Props = {}) => {\n const extRef = useRef<any>(null)\n const [lastDragCancelTime, setLastDragCancelTime] = useState(0)\n const outerCanvasElm = props.canvasElm ?? extRef.current\n const [internalTransform, setInternalTransform] = useState<Matrix>(\n props.initialTransform ?? identity()\n )\n const [waitCounter, setWaitCounter] = useState(0)\n const [extChangeCounter, incExtChangeCounter] = useReducer((s) => s + 1, 0)\n\n const setTransform = useCallback(\n (newTransform: Matrix) => {\n if (props.onSetTransform) {\n props.onSetTransform(newTransform)\n }\n if (!props.transform) {\n setInternalTransform(newTransform)\n }\n },\n [props.onSetTransform, setInternalTransform]\n )\n\n const setTransformExt = useCallback(\n (newTransform: Matrix) => {\n setTransform(newTransform)\n incExtChangeCounter()\n },\n [setTransform]\n )\n\n const transform = props.transform ?? internalTransform\n\n const cancelDrag = useCallback(() => {\n setLastDragCancelTime(Date.now())\n }, [])\n\n useEffect(() => {\n const canvasElm: HTMLCanvasElement | null =\n props.canvasElm ?? extRef.current\n if (canvasElm && !outerCanvasElm) {\n // Always re-render when the canvas element is known\n setWaitCounter(waitCounter + 1)\n return\n }\n if (!canvasElm) {\n const timeout = setTimeout(() => {\n setWaitCounter(waitCounter + 1)\n }, 100)\n return () => clearTimeout(timeout)\n }\n let init_tf = props.transform ?? internalTransform\n\n let m0: Point = { x: 0, y: 0 },\n m1: Point = { x: 0, y: 0 },\n md = false,\n mlastrel: Point = { x: 0, y: 0 }\n\n const getMousePos = (e: MouseEvent) => {\n return {\n x: e.pageX - canvasElm.getBoundingClientRect().left - window.scrollX,\n y: e.pageY - canvasElm.getBoundingClientRect().top - window.scrollY,\n }\n }\n\n function handleMouseDown(e: MouseEvent) {\n m0 = getMousePos(e)\n if (Date.now() - lastDragCancelTime < 100) return\n md = true\n e.preventDefault()\n }\n function handleMouseUp(e: MouseEvent) {\n if (!md) return\n m1 = getMousePos(e)\n\n const new_tf = compose(translate(m1.x - m0.x, m1.y - m0.y), init_tf)\n setTransform(new_tf)\n init_tf = new_tf\n\n md = false\n }\n function handleMouseMove(e: MouseEvent) {\n mlastrel = getMousePos(e)\n if (!md) return\n m1 = getMousePos(e)\n\n setTransform(compose(translate(m1.x - m0.x, m1.y - m0.y), init_tf))\n }\n function handleMouseWheel(e: WheelEvent) {\n const center = getMousePos(e)\n const new_tf = compose(\n translate(center.x, center.y),\n scale(1 - e.deltaY / 1000, 1 - e.deltaY / 1000),\n translate(-center.x, -center.y),\n init_tf\n )\n setTransform(new_tf)\n init_tf = new_tf\n e.preventDefault()\n }\n function handleMouseOut(e: MouseEvent) {\n if (!md) return\n\n // If the mouseout occurs in the bounding box of the canvasElm, it's\n // defocusing on internal elements, so we should ignore it\n if (canvasElm) {\n const boundingBox = canvasElm.getBoundingClientRect()\n if (\n e.clientX >= boundingBox.left + 10 &&\n e.clientX <= boundingBox.right - 10 &&\n e.clientY >= boundingBox.top + 10 &&\n e.clientY <= boundingBox.bottom - 10\n ) {\n return\n }\n }\n\n md = false\n m1 = getMousePos(e)\n\n const new_tf = compose(translate(m1.x - m0.x, m1.y - m0.y), init_tf)\n setTransform(new_tf)\n init_tf = new_tf\n }\n\n canvasElm.addEventListener(\"mousedown\", handleMouseDown)\n canvasElm.addEventListener(\"mouseup\", handleMouseUp)\n window.addEventListener(\"mousemove\", handleMouseMove)\n canvasElm.addEventListener(\"mouseout\", handleMouseOut)\n canvasElm.addEventListener(\"wheel\", handleMouseWheel)\n\n return () => {\n canvasElm.removeEventListener(\"mousedown\", handleMouseDown)\n canvasElm.removeEventListener(\"mouseup\", handleMouseUp)\n window.removeEventListener(\"mousemove\", handleMouseMove)\n canvasElm.removeEventListener(\"mouseout\", handleMouseOut)\n canvasElm.removeEventListener(\"wheel\", handleMouseWheel)\n }\n }, [outerCanvasElm, waitCounter, extChangeCounter, lastDragCancelTime])\n\n const applyTransformToPoint = useCallback(\n (obj: Point | [number, number]) => applyToPoint(transform, obj),\n [transform]\n )\n\n return {\n ref: extRef,\n transform,\n applyTransformToPoint,\n setTransform: setTransformExt,\n cancelDrag\n }\n}\n\nexport default useMouseMatrixTransform\n","export * from \"./PCBViewer\"\nexport type { EditEvent } from \"lib/edit-events\"\nexport { applyEditEvents } from \"lib/apply-edit-events\"\nexport { CanvasElementsRenderer } from \"./components/CanvasElementsRenderer\"\n","import React, { useEffect, useMemo, useState } from \"react\"\nimport { createRoot } from \"@tscircuit/react-fiber\"\nimport { createProjectBuilder } from \"@tscircuit/builder\"\nimport type { AnySoupElement } from \"@tscircuit/soup\"\nimport { CanvasElementsRenderer } from \"./components/CanvasElementsRenderer\"\nimport useMouseMatrixTransform from \"use-mouse-matrix-transform\"\nimport { useMeasure } from \"react-use\"\nimport { compose, scale, translate } from \"transformation-matrix\"\nimport { findBoundsAndCenter } from \"@tscircuit/builder\"\nimport { ContextProviders } from \"components/ContextProviders\"\nimport type { EditEvent } from \"lib/edit-events\"\nimport { applyEditEvents } from \"lib/apply-edit-events\"\nimport { RatsNestOverlay } from \"./components/RatsNestOverlay\"\nimport type { StateProps } from \"global-store\"\nimport { ToastContainer } from \"lib/toast\"\n\nconst defaultTransform = compose(translate(400, 300), scale(40, -40))\n\ntype Props = {\n children?: any\n soup?: any\n height?: number\n allowEditing?: boolean\n editEvents?: EditEvent[]\n initialState?: Partial<StateProps>\n onEditEventsChanged?: (editEvents: EditEvent[]) => void\n}\n\nexport const PCBViewer = ({\n children,\n soup,\n height = 600,\n initialState,\n allowEditing = true,\n editEvents: editEventsProp,\n onEditEventsChanged,\n}: Props) => {\n const [stateElements, setStateElements] = useState<Array<AnySoupElement>>([])\n const [ref, refDimensions] = useMeasure()\n const [transform, setTransformInternal] = useState(defaultTransform)\n const {\n ref: transformRef,\n setTransform,\n cancelDrag: cancelPanDrag,\n } = useMouseMatrixTransform({\n transform,\n onSetTransform: setTransformInternal,\n })\n let [editEvents, setEditEvents] = useState<EditEvent[]>([])\n editEvents = editEventsProp ?? editEvents\n\n const [error, setError] = useState(null)\n\n const resetTransform = () => {\n const elmBounds =\n refDimensions?.width > 0 ? refDimensions : { width: 500, height: 500 }\n const { center, width, height } = elements.some((e) =>\n e.type.startsWith(\"pcb_\"),\n )\n ? findBoundsAndCenter(\n elements.filter((e) => e.type.startsWith(\"pcb_\")) as any,\n )\n : { center: { x: 0, y: 0 }, width: 0.001, height: 0.001 }\n const scaleFactor =\n Math.min(\n (elmBounds.width ?? 0) / width,\n (elmBounds.height ?? 0) / height,\n 100,\n ) * 0.75\n setTransform(\n compose(\n translate((elmBounds.width ?? 0) / 2, (elmBounds.height ?? 0) / 2),\n // translate(100, 0),\n scale(scaleFactor, -scaleFactor, 0, 0),\n translate(-center.x, -center.y),\n ),\n )\n }\n\n useEffect(() => {\n if (!children || children?.length === 0) return\n async function doRender() {\n // TODO re-use project builder\n const projectBuilder = createProjectBuilder()\n await createRoot()\n .render(children, projectBuilder as any)\n .then((elements) => {\n setStateElements(elements as any)\n setError(null)\n })\n }\n doRender().catch((e) => {\n setError(e.toString())\n console.log(e.toString())\n })\n }, [children])\n\n useEffect(() => {\n if (refDimensions && refDimensions.width !== 0 && (children || soup)) {\n resetTransform()\n }\n }, [children, refDimensions])\n\n if (error) return <div style={{ color: \"red\" }}> {error} </div>\n\n const pcbElmsPreEdit: AnySoupElement[] = (soup ?? stateElements).filter(\n (e: any) => e.type.startsWith(\"pcb_\") || e.type.startsWith(\"source_\"),\n )\n\n const elements = useMemo(() => {\n return applyEditEvents(pcbElmsPreEdit, editEvents)\n }, [pcbElmsPreEdit, editEvents])\n\n const onCreateEditEvent = (event: EditEvent) => {\n setEditEvents([...editEvents, event])\n onEditEventsChanged?.([...editEvents, event])\n }\n const onModifyEditEvent = (modifiedEvent: Partial<EditEvent>) => {\n const newEditEvents: EditEvent[] = editEvents.map((e) =>\n e.edit_event_id === modifiedEvent.edit_event_id\n ? ({ ...e, ...modifiedEvent } as EditEvent)\n : e,\n )\n setEditEvents(newEditEvents)\n onEditEventsChanged?.(newEditEvents)\n }\n\n return (\n <div ref={transformRef as any}>\n <div ref={ref as any}>\n <ContextProviders initialState={initialState}>\n <CanvasElementsRenderer\n key={refDimensions.width}\n transform={transform}\n height={height}\n width={refDimensions.width}\n allowEditing={allowEditing}\n cancelPanDrag={cancelPanDrag}\n onCreateEditEvent={onCreateEditEvent}\n onModifyEditEvent={onModifyEditEvent}\n grid={{\n spacing: 1,\n view_window: {\n left: 0,\n right: refDimensions.width || 500,\n top: height,\n bottom: 0,\n },\n }}\n elements={elements}\n />\n <ToastContainer />\n </ContextProviders>\n </div>\n </div>\n )\n}\n","import React, { useCallback, useState } from \"react\"\nimport { CanvasPrimitiveRenderer } from \"./CanvasPrimitiveRenderer\"\nimport { pcb_port, type AnySoupElement } from \"@tscircuit/soup\"\nimport { useMemo } from \"react\"\nimport { convertElementToPrimitives } from \"../lib/convert-element-to-primitive\"\nimport { Matrix } from \"transformation-matrix\"\nimport { GridConfig, Primitive } from \"lib/types\"\nimport { MouseElementTracker } from \"./MouseElementTracker\"\nimport { DimensionOverlay } from \"./DimensionOverlay\"\nimport { ToolbarOverlay } from \"./ToolbarOverlay\"\nimport { ErrorOverlay } from \"./ErrorOverlay\"\nimport { EditPlacementOverlay } from \"./EditPlacementOverlay\"\nimport { EditEvent } from \"lib/edit-events\"\nimport { EditTraceHintOverlay } from \"./EditTraceHintOverlay\"\nimport { RatsNestOverlay } from \"./RatsNestOverlay\"\nimport { getFullConnectivityMapFromCircuitJson } from \"circuit-json-to-connectivity-map\"\nimport { addInteractionMetadataToPrimitives } from \"lib/util/addInteractionMetadataToPrimitives\"\n\nexport interface CanvasElementsRendererProps {\n elements: AnySoupElement[]\n transform?: Matrix\n width?: number\n height?: number\n grid?: GridConfig\n allowEditing: boolean\n cancelPanDrag: Function\n onCreateEditEvent: (event: EditEvent) => void\n onModifyEditEvent: (event: Partial<EditEvent>) => void\n}\n\nexport const CanvasElementsRenderer = (props: CanvasElementsRendererProps) => {\n const { transform, elements } = props\n const [primitivesWithoutInteractionMetadata, connectivityMap] =\n useMemo(() => {\n const primitivesWithoutInteractionMetadata = props.elements.flatMap(\n (elm) => convertElementToPrimitives(elm, props.elements),\n )\n const connectivityMap = getFullConnectivityMapFromCircuitJson(\n props.elements,\n )\n return [primitivesWithoutInteractionMetadata, connectivityMap]\n }, [props.elements])\n\n const [primitives, setPrimitives] = useState<Primitive[]>(\n primitivesWithoutInteractionMetadata,\n )\n\n return (\n <MouseElementTracker\n transform={transform}\n primitives={primitivesWithoutInteractionMetadata}\n onMouseHoverOverPrimitives={(primitivesHoveredOver) => {\n const primitiveIdsInMousedOverNet: string[] = []\n for (const primitive of primitivesHoveredOver) {\n if (primitive._element && \"pcb_port_id\" in primitive._element) {\n const connectedPrimitivesList = connectivityMap.getNetConnectedToId(\n primitive._element.pcb_port_id!,\n )\n primitiveIdsInMousedOverNet.push(\n ...connectivityMap.getIdsConnectedToNet(connectedPrimitivesList!),\n )\n }\n }\n\n const drawingObjectIdsWithMouseOver = new Set(\n primitivesHoveredOver.map((p) => p._pcb_drawing_object_id),\n )\n const newPrimitives = addInteractionMetadataToPrimitives({\n primitivesWithoutInteractionMetadata,\n drawingObjectIdsWithMouseOver,\n primitiveIdsInMousedOverNet,\n })\n\n setPrimitives(newPrimitives)\n }}\n >\n <EditPlacementOverlay\n disabled={!props.allowEditing}\n transform={transform}\n soup={elements}\n cancelPanDrag={props.cancelPanDrag}\n onCreateEditEvent={props.onCreateEditEvent}\n onModifyEditEvent={props.onModifyEditEvent}\n >\n <EditTraceHintOverlay\n disabled={!props.allowEditing}\n transform={transform}\n soup={elements}\n cancelPanDrag={props.cancelPanDrag}\n onCreateEditEvent={props.onCreateEditEvent as any}\n onModifyEditEvent={props.onModifyEditEvent as any}\n >\n <DimensionOverlay transform={transform!}>\n <ToolbarOverlay elements={elements}>\n <ErrorOverlay transform={transform} elements={elements}>\n <RatsNestOverlay transform={transform} soup={elements}>\n <CanvasPrimitiveRenderer\n transform={transform}\n primitives={primitives}\n width={props.width}\n height={props.height}\n grid={props.grid}\n />\n </RatsNestOverlay>\n </ErrorOverlay>\n </ToolbarOverlay>\n </DimensionOverlay>\n </EditTraceHintOverlay>\n </EditPlacementOverlay>\n </MouseElementTracker>\n )\n}\n","import { drawGrid } from \"lib/draw-grid\"\nimport { SuperGrid, toMMSI } from \"react-supergrid\"\nimport React, { useEffect, useRef } from \"react\"\nimport type { Matrix } from \"transformation-matrix\"\nimport { drawPrimitives } from \"../lib/draw-primitives\"\nimport { Drawer } from \"../lib/Drawer\"\nimport type { GridConfig, Primitive } from \"../lib/types\"\nimport { useGlobalStore } from \"global-store\"\nimport { all_layers } from \"@tscircuit/soup\"\n\ninterface Props {\n primitives: Primitive[]\n defaultUnit?: string\n transform?: Matrix\n grid?: GridConfig\n width?: number\n height?: number\n}\n\nexport const CanvasPrimitiveRenderer = ({\n primitives,\n transform,\n grid,\n width = 500,\n height = 500,\n}: Props) => {\n const canvasRefs = useRef<Record<string, HTMLCanvasElement>>()\n const selectedLayer = useGlobalStore((s) => s.selected_layer)\n\n useEffect(() => {\n if (!canvasRefs.current) return\n if (Object.keys(canvasRefs.current).length === 0) return\n const drawer = new Drawer(canvasRefs.current)\n if (transform) drawer.transform = transform\n drawer.clear()\n drawer.foregroundLayer = selectedLayer\n drawPrimitives(drawer, primitives)\n drawer.orderAndFadeLayers()\n }, [primitives, transform, selectedLayer])\n\n return (\n <div\n style={{\n backgroundColor: \"black\",\n width,\n height,\n position: \"relative\",\n }}\n >\n <SuperGrid\n textColor=\"rgba(0,255,0,0.8)\"\n majorColor=\"rgba(0,255,0,0.4)\"\n minorColor=\"rgba(0,255,0,0.2)\"\n screenSpaceCellSize={200}\n width={width}\n height={height}\n transform={transform!}\n stringifyCoord={(x, y, z) => `${toMMSI(x, z)}, ${toMMSI(y, z)}`}\n />\n {all_layers\n .map((l) => l.replace(/-/g, \"\"))\n .concat([\"drill\", \"other\"])\n .map((layer, i) => (\n <canvas\n key={layer}\n ref={(el) => {\n canvasRefs.current ??= {}\n canvasRefs.current[layer] = el!\n }}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n }}\n width={width}\n height={height}\n ></canvas>\n ))}\n </div>\n )\n}\n","import {\n type Matrix,\n applyToPoint,\n compose,\n identity,\n inverse,\n translate,\n} from \"transformation-matrix\"\nimport colors from \"./colors\"\nimport { scaleOnly } from \"./util/scale-only\"\n\nexport interface Aperture {\n shape: \"circle\" | \"square\"\n size: number\n opacity: number\n mode: \"add\" | \"subtract\"\n fontSize: number\n color: string\n layer: string\n}\n\nexport const LAYER_NAME_TO_COLOR = {\n // Standard colors, you shouldn't use these except for testing\n red: \"red\",\n black: \"black\",\n green: \"green\",\n board: \"rgb(255, 255, 255)\",\n other: \"#eee\",\n // TODO more builtin html colors\n\n // Common eagle names\n top: colors.board.copper.f,\n inner1: colors.board.copper.in1,\n inner2: colors.board.copper.in2,\n inner3: colors.board.copper.in3,\n inner4: colors.board.copper.in4,\n inner5: colors.board.copper.in5,\n inner6: colors.board.copper.in6,\n inner7: colors.board.copper.in7,\n inner8: colors.board.copper.in8,\n\n bottom: colors.board.copper.b,\n drill: colors.board.anchor,\n keepout: colors.board.background,\n tkeepout: colors.board.b_crtyd,\n tplace: colors.board.b_silks,\n\n top_silkscreen: colors.board.f_silks,\n bottom_silkscreen: colors.board.b_silks,\n\n top_fabrication: colors.board.f_fab,\n bottom_fabrication: colors.board.b_fab,\n\n ...colors.board,\n}\n\nexport type LayerNameForColor = keyof typeof LAYER_NAME_TO_COLOR\n\nexport const DEFAULT_DRAW_ORDER = [\n \"top\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n \"bottom\",\n] as const\n\nexport const FILL_TYPES = {\n 0: \"Empty\",\n 1: \"Solid\",\n 2: \"Line\",\n 3: \"LtSlash\",\n 4: \"Slash\",\n 5: \"BkSlash\",\n 6: \"LtBkSlash\",\n 7: \"Hatch\",\n 8: \"XHatch\",\n 9: \"Interleave\",\n 10: \"WideDot\",\n 11: \"CloseDot\",\n 12: \"Stipple1\",\n 13: \"Stipple2\",\n 14: \"Stipple3\",\n 15: \"Stipple4\",\n}\n\nexport class Drawer {\n canvasLayerMap: Record<string, HTMLCanvasElement>\n ctxLayerMap: Record<string, CanvasRenderingContext2D>\n // @ts-ignore this.equip({}) handles constructor assignment\n aperture: Aperture\n transform: Matrix\n foregroundLayer: string = \"top\"\n lastPoint: { x: number; y: number }\n\n constructor(canvasLayerMap: Record<string, HTMLCanvasElement>) {\n this.canvasLayerMap = canvasLayerMap\n this.ctxLayerMap = Object.fromEntries(\n Object.entries(canvasLayerMap).map(([name, canvas]) => [\n name,\n canvas.getContext(\"2d\")!,\n ]),\n )\n this.transform = identity()\n // positive is up (cartesian)\n this.transform.d *= -1\n this.transform = compose(this.transform, translate(0, -500))\n this.lastPoint = { x: 0, y: 0 }\n this.equip({})\n }\n\n clear() {\n for (const ctx of Object.values(this.ctxLayerMap)) {\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height)\n }\n }\n\n equip(aperture: Partial<Aperture>) {\n this.aperture = {\n fontSize: 0,\n shape: \"circle\",\n mode: \"add\",\n size: 0,\n color: \"red\",\n layer: \"top\",\n opacity: this.foregroundLayer === aperture.color ? 1 : 0.5,\n ...aperture,\n }\n }\n\n drawMeshPattern(\n x: number,\n y: number,\n width: number,\n height: number,\n spacing: number,\n angle: number = 45,\n ) {\n const ctx = this.getLayerCtx()\n const [x1, y1] = applyToPoint(this.transform, [x, y])\n const [x2, y2] = applyToPoint(this.transform, [x + width, y + height])\n const spacing$ = scaleOnly(this.transform, spacing)\n\n // Set line properties for the mesh\n ctx.lineWidth = 1\n ctx.strokeStyle = this.aperture.color\n\n const drawLines = (angle: number) => {\n const sin = Math.sin(angle)\n const cos = Math.cos(angle)\n const diag = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))\n\n for (let i = -diag; i <= diag; i += spacing$) {\n ctx.beginPath()\n ctx.moveTo(x1 + i * cos - diag * sin, y1 + i * sin + diag * cos)\n ctx.lineTo(x1 + i * cos + diag * sin, y1 + i * sin - diag * cos)\n ctx.stroke()\n }\n }\n\n // Draw first set of parallel lines\n drawLines((angle * Math.PI) / 180)\n // Draw second set of parallel lines (perpendicular to the first set)\n drawLines(((angle + 90) * Math.PI) / 180)\n }\n\n rect(x: number, y: number, w: number, h: number, mesh_fill?: boolean) {\n const [x1$, y1$] = applyToPoint(this.transform, [x - w / 2, y - h / 2])\n const [x2$, y2$] = applyToPoint(this.transform, [x + w / 2, y + h / 2])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n if (mesh_fill) {\n ctx.save()\n ctx.beginPath()\n ctx.rect(x1$, y1$, x2$ - x1$, y2$ - y1$)\n ctx.clip()\n\n // Draw the mesh pattern\n this.drawMeshPattern(x - w / 2, y - h / 2, w, h, 0.15) // Adjust spacing as needed\n\n ctx.restore()\n\n // Draw the outline\n ctx.strokeRect(x1$, y1$, x2$ - x1$, y2$ - y1$)\n } else {\n ctx.fillRect(x1$, y1$, x2$ - x1$, y2$ - y1$)\n }\n }\n\n circle(x: number, y: number, r: number, mesh_fill?: boolean) {\n const r$ = scaleOnly(this.transform, r)\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n if (mesh_fill) {\n ctx.save()\n ctx.beginPath()\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI)\n ctx.clip()\n\n // Draw the mesh pattern\n // We need to cover the entire circular area, so we use a square that fully encloses the circle\n this.drawMeshPattern(x - r, y - r, r * 2, r * 2, 0.15) // Adjust spacing as needed\n\n ctx.restore()\n\n // Draw the outline\n ctx.beginPath()\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI)\n ctx.stroke()\n } else {\n ctx.beginPath()\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI)\n ctx.fill()\n }\n }\n\n oval(x: number, y: number, rx: number, ry: number) {\n const rx$ = scaleOnly(this.transform, rx)\n const ry$ = scaleOnly(this.transform, ry)\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n ctx.beginPath()\n ctx.ellipse(x$, y$, rx$, ry$, 0, 0, 2 * Math.PI)\n ctx.fill()\n ctx.closePath()\n }\n\n pill(x: number, y: number, w: number, h: number) {\n const [x$, y$] = applyToPoint(this.transform, [x - w / 2, y + h / 2])\n const width$ = scaleOnly(this.transform, w)\n const height$ = scaleOnly(this.transform, h)\n const radius = Math.min(width$, height$) / 2\n this.applyAperture()\n const ctx = this.getLayerCtx()\n ctx.beginPath()\n ctx.arc(x$ + radius, y$ + radius, radius, Math.PI, Math.PI * 1.5)\n ctx.arc(x$ + width$ - radius, y$ + radius, radius, Math.PI * 1.5, 0)\n ctx.arc(\n x$ + width$ - radius,\n y$ + height$ - radius,\n radius,\n 0,\n Math.PI * 0.5,\n )\n ctx.arc(x$ + radius, y$ + height$ - radius, radius, Math.PI * 0.5, Math.PI)\n ctx.fill()\n ctx.closePath()\n }\n\n polygon(points: { x: number; y: number }[]) {\n if (points.length < 3) {\n console.warn(\"Polygon must have at least 3 points\")\n return\n }\n\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n // Transform all points\n const transformedPoints = points.map((point) =>\n applyToPoint(this.transform, [point.x, point.y]),\n )\n\n // Draw the filled polygon\n ctx.beginPath()\n ctx.moveTo(transformedPoints[0][0], transformedPoints[0][1])\n for (let i = 1; i < transformedPoints.length; i++) {\n ctx.lineTo(transformedPoints[i][0], transformedPoints[i][1])\n }\n ctx.closePath()\n ctx.fill()\n\n // Draw the outline\n const lineWidth = scaleOnly(this.transform, this.aperture.size)\n ctx.lineWidth = lineWidth\n ctx.stroke()\n }\n\n /* NOTE: This is not gerber compatible */\n debugText(text: string, x: number, y: number) {\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n ctx.font = `10px sans-serif`\n ctx.fillText(text, x$, y$)\n }\n\n getLayerCtx() {\n const ctx = this.ctxLayerMap[this.aperture.layer]\n if (!ctx) {\n throw new Error(`No context for layer \"${this.aperture.layer}\"`)\n }\n return ctx\n }\n\n /**\n * Iterate over each canvas and set the z index based on the layer order, but\n * always render the foreground layer on top.\n *\n * Also: Set the opacity of every non-foreground layer to 0.5\n */\n orderAndFadeLayers() {\n const { canvasLayerMap, foregroundLayer } = this\n const opaqueLayers = new Set([foregroundLayer, \"drill\", \"other\", \"board\"])\n const order = [\n \"drill\",\n \"board\",\n foregroundLayer,\n ...DEFAULT_DRAW_ORDER.filter((l) => l !== foregroundLayer),\n ]\n order.forEach((layer, i) => {\n const canvas = canvasLayerMap[layer]\n if (!canvas) return\n canvas.style.zIndex = `${100 - i}`\n canvas.style.opacity = opaqueLayers.has(layer) ? \"1\" : \"0.5\"\n })\n }\n\n applyAperture() {\n const { transform, aperture } = this\n let { size, mode, color, fontSize, layer } = aperture\n if (!(layer in this.ctxLayerMap)) this.aperture.layer = \"other\"\n\n const ctx = this.getLayerCtx()\n if (!ctx) {\n throw new Error(`No context for layer \"${this.foregroundLayer}\"`)\n }\n if (!color) color = \"undefined\"\n ctx.lineWidth = scaleOnly(transform, size)\n ctx.lineCap = \"round\"\n if (mode === \"add\") {\n let colorString =\n color?.[0] === \"#\" || color?.startsWith(\"rgb\")\n ? color\n : (LAYER_NAME_TO_COLOR as any)[color?.toLowerCase()]\n ? (LAYER_NAME_TO_COLOR as any)[color?.toLowerCase()]\n : null\n if (colorString === null) {\n console.warn(`Color mapping for \"${color}\" not found`)\n colorString = \"white\"\n }\n ctx.fillStyle = colorString\n ctx.strokeStyle = colorString\n } else {\n ctx.globalCompositeOperation = \"destination-out\"\n ctx.fillStyle = \"rgba(0,0,0,1)\"\n ctx.strokeStyle = \"rgba(0,0,0,1)\"\n }\n ctx.font = `${scaleOnly(inverse(transform), fontSize)}px sans-serif`\n }\n\n moveTo(x: number, y: number) {\n this.lastPoint = { x, y }\n }\n lineTo(x: number, y: number) {\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n const { size, shape, mode } = this.aperture\n const size$ = scaleOnly(this.transform, size)\n let { lastPoint } = this\n const lastPoint$ = applyToPoint(this.transform, lastPoint)\n\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n if (shape === \"square\")\n ctx.fillRect(\n lastPoint$.x - size$ / 2,\n lastPoint$.y - size$ / 2,\n size$,\n size$,\n )\n ctx.beginPath()\n ctx.moveTo(lastPoint$.x, lastPoint$.y)\n ctx.lineTo(x$, y$)\n\n ctx.stroke()\n ctx.closePath()\n\n if (shape === \"square\")\n ctx.fillRect(x$ - size$ / 2, y$ - size$ / 2, size$, size$)\n\n this.lastPoint = { x, y }\n }\n}\n","// Mix of Eagle Dark for schematics and KiCAD 2020 for PCBs\n// https://github.com/pointhi/kicad-color-schemes/blob/master/eagle-dark/eagle-dark.jsonO\n// https://github.com/pointhi/kicad-color-schemes/blob/master/kicad-2020/kicad_2020.json\nexport default {\n \"3d_viewer\": {\n background_bottom: \"rgb(102, 102, 128)\",\n background_top: \"rgb(204, 204, 230)\",\n board: \"rgb(51, 43, 23)\",\n copper: \"rgb(179, 156, 0)\",\n silkscreen_bottom: \"rgb(230, 230, 230)\",\n silkscreen_top: \"rgb(230, 230, 230)\",\n soldermask: \"rgb(20, 51, 36)\",\n solderpaste: \"rgb(128, 128, 128)\",\n },\n board: {\n anchor: \"rgb(255, 38, 226)\",\n aux_items: \"rgb(255, 255, 255)\",\n b_adhes: \"rgb(0, 0, 132)\",\n b_crtyd: \"rgb(255, 38, 226)\",\n b_fab: \"rgb(88, 93, 132)\",\n b_mask: \"rgba(2, 255, 238, 0.400)\",\n b_paste: \"rgb(0, 194, 194)\",\n b_silks: \"rgb(232, 178, 167)\",\n background: \"rgb(0, 16, 35)\",\n cmts_user: \"rgb(89, 148, 220)\",\n copper: {\n b: \"rgb(77, 127, 196)\",\n f: \"rgb(200, 52, 52)\",\n in1: \"rgb(127, 200, 127)\",\n in10: \"rgb(237, 124, 51)\",\n in11: \"rgb(91, 195, 235)\",\n in12: \"rgb(247, 111, 142)\",\n in13: \"rgb(167, 165, 198)\",\n in14: \"rgb(40, 204, 217)\",\n in15: \"rgb(232, 178, 167)\",\n in16: \"rgb(242, 237, 161)\",\n in17: \"rgb(237, 124, 51)\",\n in18: \"rgb(91, 195, 235)\",\n in19: \"rgb(247, 111, 142)\",\n in2: \"rgb(206, 125, 44)\",\n in20: \"rgb(167, 165, 198)\",\n in21: \"rgb(40, 204, 217)\",\n in22: \"rgb(232, 178, 167)\",\n in23: \"rgb(242, 237, 161)\",\n in24: \"rgb(237, 124, 51)\",\n in25: \"rgb(91, 195, 235)\",\n in26: \"rgb(247, 111, 142)\",\n in27: \"rgb(167, 165, 198)\",\n in28: \"rgb(40, 204, 217)\",\n in29: \"rgb(232, 178, 167)\",\n in3: \"rgb(79, 203, 203)\",\n in30: \"rgb(242, 237, 161)\",\n in4: \"rgb(219, 98, 139)\",\n in5: \"rgb(167, 165, 198)\",\n in6: \"rgb(40, 204, 217)\",\n in7: \"rgb(232, 178, 167)\",\n in8: \"rgb(242, 237, 161)\",\n in9: \"rgb(141, 203, 129)\",\n },\n cursor: \"rgb(255, 255, 255)\",\n drc: \"rgb(194, 194, 194)\",\n drc_error: \"rgba(215, 91, 107, 0.800)\",\n drc_exclusion: \"rgb(255, 255, 255)\",\n drc_warning: \"rgba(255, 208, 66, 0.902)\",\n dwgs_user: \"rgb(194, 194, 194)\",\n eco1_user: \"rgb(180, 219, 210)\",\n eco2_user: \"rgb(216, 200, 82)\",\n edge_cuts: \"rgb(208, 210, 205)\",\n f_adhes: \"rgb(132, 0, 132)\",\n f_crtyd: \"rgb(255, 0, 245)\",\n f_fab: \"rgb(175, 175, 175)\",\n f_mask: \"rgba(216, 100, 255, 0.400)\",\n f_paste: \"rgba(180, 160, 154, 0.902)\",\n f_silks: \"rgb(242, 237, 161)\",\n footprint_text_back: \"rgb(0, 0, 132)\",\n footprint_text_front: \"rgb(194, 194, 194)\",\n footprint_text_invisible: \"rgb(132, 132, 132)\",\n grid: \"rgb(132, 132, 132)\",\n grid_axes: \"rgb(194, 194, 194)\",\n margin: \"rgb(255, 38, 226)\",\n microvia: \"rgb(0, 132, 132)\",\n no_connect: \"rgb(0, 0, 132)\",\n pad_back: \"rgb(77, 127, 196)\",\n pad_front: \"rgb(200, 52, 52)\",\n pad_plated_hole: \"rgb(194, 194, 0)\",\n pad_through_hole: \"rgb(227, 183, 46)\",\n plated_hole: \"rgb(26, 196, 210)\",\n ratsnest: \"rgba(245, 255, 213, 0.702)\",\n select_overlay: \"rgb(4, 255, 67)\",\n through_via: \"rgb(236, 236, 236)\",\n user_1: \"rgb(194, 194, 194)\",\n user_2: \"rgb(89, 148, 220)\",\n user_3: \"rgb(180, 219, 210)\",\n user_4: \"rgb(216, 200, 82)\",\n user_5: \"rgb(194, 194, 194)\",\n user_6: \"rgb(89, 148, 220)\",\n user_7: \"rgb(180, 219, 210)\",\n user_8: \"rgb(216, 200, 82)\",\n user_9: \"rgb(232, 178, 167)\",\n via_blind_buried: \"rgb(187, 151, 38)\",\n via_hole: \"rgb(227, 183, 46)\",\n via_micro: \"rgb(0, 132, 132)\",\n via_through: \"rgb(236, 236, 236)\",\n worksheet: \"rgb(200, 114, 171)\",\n },\n gerbview: {\n axes: \"rgb(0, 0, 132)\",\n background: \"rgb(0, 0, 0)\",\n dcodes: \"rgb(255, 255, 255)\",\n grid: \"rgb(132, 132, 132)\",\n layers: [\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n ],\n negative_objects: \"rgb(132, 132, 132)\",\n worksheet: \"rgb(0, 0, 132)\",\n },\n palette: [\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n ],\n schematic: {\n anchor: \"rgb(0, 0, 255)\",\n aux_items: \"rgb(0, 0, 0)\",\n background: \"rgb(33, 33, 33)\",\n brightened: \"rgb(204, 204, 204)\",\n bus: \"rgb(0, 96, 192)\",\n bus_junction: \"rgb(0, 96, 192)\",\n component_body: \"rgb(44, 44, 44)\",\n component_outline: \"rgb(192, 0, 0)\",\n cursor: \"rgb(224, 224, 224)\",\n erc_error: \"rgba(192, 48, 48, 0.800)\",\n erc_warning: \"rgba(192, 140, 0, 0.800)\",\n fields: \"rgb(128, 0, 160)\",\n grid: \"rgb(60, 60, 60)\",\n grid_axes: \"rgb(60, 60, 60)\",\n hidden: \"rgb(194, 194, 194)\",\n junction: \"rgb(0, 160, 0)\",\n label_global: \"rgb(0, 160, 224)\",\n label_hier: \"rgb(160, 160, 0)\",\n label_local: \"rgb(192, 192, 192)\",\n net_name: \"rgb(224, 224, 224)\",\n no_connect: \"rgb(97, 43, 224)\",\n note: \"rgb(192, 192, 0)\",\n override_item_colors: false,\n pin: \"rgb(192, 0, 0)\",\n pin_name: \"rgb(192, 192, 192)\",\n pin_number: \"rgb(192, 0, 0)\",\n reference: \"rgb(192, 192, 192)\",\n shadow: \"rgba(102, 179, 255, 0.800)\",\n sheet: \"rgb(128, 0, 160)\",\n sheet_background: \"rgba(255, 255, 255, 0.000)\",\n sheet_fields: \"rgb(160, 160, 0)\",\n sheet_filename: \"rgb(160, 160, 0)\",\n sheet_label: \"rgb(160, 160, 0)\",\n sheet_name: \"rgb(0, 160, 204)\",\n value: \"rgb(192, 192, 192)\",\n wire: \"rgb(0, 160, 0)\",\n worksheet: \"rgb(192, 0, 0)\",\n },\n}\n","import { Matrix } from \"transformation-matrix\"\n\nexport const scaleOnly = (mat: Matrix, value: number = 1) => {\n if (Math.abs(mat.a) !== Math.abs(mat.d))\n throw new Error(\"Cannot scale non-uniformly\")\n return value * Math.abs(mat.a)\n}\n","/*\n * Maps letters/numbers to an SVG path\n * You must normalize the path prior to putting it here! That means it needs to\n * be entirely in the bounds [0,1] for both x and y.\n * You can use this svg editor tool to add characters: https://yqnn.github.io/svg-path-editor/\n */\nexport const svgAlphabet = {\n \"0\": \"M0.4544564813877358 0L0.2723441540828736 0.03592830447352719L0.1086847233315459 0.14528754990019965L0.020630545837255005 0.3040632652221331L0 0.5395277421960205L0.049259221760993496 0.7369487828466779L0.18080513776237842 0.9005494166306564L0.37036887043974215 0.9872116270037247L0.5864663759301132 1L0.8148695622827444 0.9332890276148733L0.9326583645506394 0.8113052246023419L1 0.4031281830668562L0.833288960385582 0.09886798567812842L0.6801767918233781 0.02483708485091681L0.4544564813877358 0\",\n \"1\": \"M 0.198 0.272 L 0.537 0 L 0.54 1\",\n \"2\": \"M0.069593147751606 0.19461498231706575L0.1039380353319058 0.1224291500164194L0.20543361884368308 0.05510832064153169L0.3717712794432549 0.009452970962689482L0.4785344452623127 0L0.663238590738758 0.008714098643339864L0.8017933618843684 0.04769189395915288L0.8775637379550322 0.10746757678258442L0.9047778372591005 0.17693069668193287L0.9029710920770878 0.2231347105796246L0.8704496788008566 0.30047744598157516L0.7292906538577354 0.4508486051631194L0.3737955032119913 0.7369006417749693L0 1L1 1\",\n \"3\": \"M0.03917438899874637 0.19855364635107545L0.15510940508963084 0.06745632622133718L0.37598645522339846 0L0.8486391893813088 0.0652271323161611L0.9782182415054349 0.21747394183735683L0.9213133780517754 0.3547560290117714L0.6504271515903481 0.4543436297681271L0.22975249764129613 0.48476611625264143L0.7659038682744629 0.5411919558122493L0.9258712987734741 0.6203185665660985L1 0.7458360609169667L0.8938813281118737 0.9059190913045964L0.6166890258875837 1L0.261528440153542 0.9874861530507921L0 0.8837289530851273\",\n \"4\": \"M0.7328897338403042 0L0 0.6684672518568535L1 0.6684672518568535M0.7243346007604563 0.4530722484807562L0.7243346007604563 1\",\n \"5\": \"M 0 0 L 0 0.4973 L 0.4262 0.4319 L 0.7305 0.4565 L 0.8516 0.5009 L 0.9357 0.5639 L 1 0.7356 L 0.9696 0.8248 L 0.8898 0.895 L 0.733 0.9602 L 0.5518 0.9945 L 0.3814 1 L 0.2379 0.9821 L 0.1219 0.947 L 0 0.8748 M 0 0 L 1 0\",\n \"6\": \"M0.6964601700926856 0L0.3639239026215478 0.0743562375769351L0.1415931962925719 0.21735490179786915L0.009977939399608712 0.46336322325406004L0.00029622007592593224 0.7083131475173043L0.09408885043224748 0.8746809149767036L0.3379247445101846 0.9876686500961888L0.7109203869569624 1L0.9260852957913362 0.9103558029693921L1 0.7716571969091733L0.9824294723385016 0.6390635485705886L0.7446504992867332 0.4733643097729175L0.31028858071607296 0.47578021640899115L0.1208702146816024 0.5481452483973847L0 0.6616669755788906\",\n \"7\": \"M0 0L1 0L0.9246479649697582 0.030539772727272752L0.8850302419354837 0.05075757575757579L0.7922946068548385 0.11079545454545457L0.7419268208165322 0.15213068181818185L0.6907258064516127 0.20202020202020204L0.6400666267641127 0.26122159090909086L0.5913243447580644 0.33049242424242414L0.5458740234374998 0.4105902777777778L0.5050907258064514 0.5022727272727272L0.4703495148689514 0.6062973484848484L0.43257456133442534 0.787133049242424L0.41612903225806447 1\",\n \"8\": \"M0.5143001078924863 0L0.16007477667923162 0.10731570786949331L0.14924628550868277 0.3146018498698755L0.2939585848842112 0.41617921794558677L0.8648302624811545 0.5385163833653317L1 0.7775820770511038L0.8180842915260376 0.9505845566922285L0.41968938540525413 1L0.08062381919779889 0.882831681184498L0 0.6936376947135333L0.17150171673893433 0.5188652309607817L0.6529263782780712 0.4242818653203618L0.8650205888491803 0.29644027376796367L0.8702067371119496 0.09910067291661573L0.5143001078924863 0\",\n \"9\": \"M1 0.25379591792994305L0.9514789771111742 0.11679361536614272L0.8702482473521467 0.05711741614054847L0.7327445265851579 0.015213872471965633L0.525248180711544 0L0.3292056884418538 0.012928195113745608L0.15997632037247655 0.058762870026191856L0.05266940041228321 0.12882439350476L0 0.2562067822770946L0.11316462894512366 0.4121335905917837L0.2403060136479954 0.4603365890068938L0.4097241967586011 0.4745978388276783L0.8642414300184816 0.420815170259988L0.9732054796346318 0.34537434075898393L1 0.25379591792994305M0.9647426784191072 0.35488595400360495L0.4756895081034974 1\",\n A: \"M0 1L0.4808333333333333 0L1 1M0.24250000000000002 0.6099439775910365L0.7341666666666666 0.6099439775910365\",\n B: \"M0 1L0 0.0117369978777208L0.30665717153513444 0L0.5874522807082946 0.03451403469442413L0.7766202217193218 0.15033936404895643L0.7471969743588041 0.31967962568332936L0.5246013359741988 0.4102978954282461L0.04378745314885416 0.44918617613783574L0.5112949594180156 0.469692928091109L0.8540266515643348 0.5552749498651879L1 0.6868463175009967L0.9880091196159324 0.8570018204672155L0.922301719975498 0.9321708046604659L0.7584266951758925 0.9932594737131338L0 1\",\n C: \"M1 0.23038928858890784L0.9328355511865092 0.12426412616785204L0.8096380839483327 0.04912601676267708L0.5763225801788256 0L0.4039037709527492 0.015028068281399815L0.2519579390951737 0.06533979308999706L0.10359458463139784 0.18146243506591617L0 0.4862728453971315L0.08129580872733055 0.792689266886982L0.20257034847159672 0.9160822255736587L0.3286572892798542 0.9738230826074175L0.5742878414421707 1L0.7883510303801312 0.9665431511195721L0.946851033994232 0.8689071500976585L1 0.7311049027121912\",\n D: \"M0 1L0.015604366822624637 0.020770988281483303L0.22564758265176144 0L0.3865476147957666 0.0024153386496795644L0.6479126635475078 0.051745644338731314L0.841191887805517 0.15827717679529366L0.9517008345536152 0.30172260586872185L0.9957536578687336 0.4504541551987709L1 0.5624359222498485L0.9798483279164735 0.6584121775234548L0.9386273319285215 0.7395945263504481L0.806292129480815 0.8624239259880274L0.6296239151398265 0.9406169638094516L0.3397492767598845 0.9954164354263132L0 1\",\n E: \"M0 0L0 1M0 0L1 0M0 0.5L0.7 0.5M0 1L1 1\",\n F: \"M0 0L0 1M0.011363636363636364 0.006802721088435374L1 0.006802721088435374M0.011363636363636364 0.4965986394557823L0.8409090909090909 0.4965986394557823\",\n G: \"M0.902666857540557 0.03860785012651126L0.6504261864675637 0L0.3838947267237336 0.015442305268228053L0.21293332876776194 0.07706794377239819L0.07799659974941617 0.1994951236187481L0 0.46380381528937314L0.04159964421546915 0.7502491408002389L0.13176692977834842 0.8535497868383203L0.2709176262273927 0.936767572377719L0.4386472596876406 0.9891638569283179L0.6145513562841309 1L0.7782254421419019 0.9585373611026471L0.9092650433859927 0.8540372997461425L1 0.5556012645283437L0.5583959277303046 0.55491741080559\",\n H: \"M0 0L0 1M0 0.4788732394366197L0.989010989010989 0.4788732394366197M1 0L1 1\",\n I: \"M0.5 0L0.5 1\",\n J: \"M0.9976457238788704 0L1 0.7396412315872798L0.9773931362096968 0.8322033314977973L0.9345115952458736 0.882296255506608L0.8743862896259549 0.9221331222466961L0.8024024079884948 0.9526431718061675L0.6443996712151668 0.9893997797356828L0.5035848940343224 1L0.3127211130319937 0.9877004749449337L0.17201910858386513 0.9539509911894274L0.10357419806379677 0.9212555066079295L0.053656568662899015 0.8816079295154184L0.020759483663648916 0.8360407488986785L0.003376206348523566 0.7855864537444934L0 0.7312775330396476\",\n K: \"M0 0L0 1M0.8787878787878788 0.06666666666666667L0 0.6148148148148148M0.3333333333333333 0.45925925925925926L1 0.9777777777777777\",\n L: \"M0 0L0 1L1 1\",\n M: \"M0 1L0 0L0.5 0.6512L1 0L1 1\",\n N: \"M0 1L0 0L1 1L0.9803729146221786 0\",\n O: \"M0.4718499217948183 1L0.2896765846490613 0.9606979309189402L0.12315162147934663 0.8411184486080473L0 0.4352399966492615L0.11730398524516283 0.13145645436014852L0.2612197451988078 0.04493357858878059L0.5104071592772554 0L0.7450113425917159 0.05393013710105273L0.882367950645524 0.15242300282020502L1 0.5224527406249126L0.9414597290654386 0.7560662329321755L0.8371289514446183 0.8910800547287298L0.6518259868433511 0.9830452628933628L0.4718499217948183 1\",\n P: \"M0 1L0 0.018871774228013626L0.29609603495819875 0L0.5609840637427541 0.011794858892508529L0.7332142696692472 0.04353904702296349L0.8102258645858864 0.0691965055027166L0.9330504315465442 0.14445061754775845L0.9876391714147118 0.22527816445836535L1 0.3434414070631638L0.9510549958116356 0.41772808046663146L0.8746646891596713 0.45879131862541683L0.7528523813396283 0.49171525113425024L0.5766919939969619 0.5153253033973054L0.33725744877712827 0.5284469008187558L0.025622667325582785 0.529905468802775\",\n Q: \"M0.4618887943546369 0.9755918167206952L0.28356128136544534 0.9372490397450218L0.12055179272160406 0.8205882753548176L0 0.4246165790405623L0.1148276047430244 0.12824784112887844L0.25570518844754375 0.043836831567190586L0.49963205786237674 0L0.7292835601228574 0.0526138004304122L0.8637404608452104 0.14870263423138746L0.9788892040030622 0.5097006183769648L0.9215847647858059 0.7376120297474734L0.8194564929275405 0.869330409436378L0.6380654214095985 0.9590509139448092L0.4618887943546369 0.9755918167206952M0.5824181120212351 0.6861805006946525L1 1\",\n R: \"M0 0.9928375167236815L0 0.02590227442068435L0.3611517274211098 0L0.6146286724700761 0.008660554424468435L0.7675462459194776 0.035269459580494614L0.831839975516866 0.056961676692569484L0.8847592491838954 0.08519560521497332L0.9238557535364527 0.120683646438422L0.9583303225312839 0.21691797435320384L0.955092470586235 0.3022616904894429L0.9198097669001631 0.3640573439322699L0.8564862239866702 0.40639258627024005L0.7691258543593579 0.43335506909190874L0.601775027203482 0.4539166070813109L0.023939064200217658 0.46997623755243123M0.5038084874863982 0.5108023922274467L1 1\",\n S: \"M0.8886929689221953 0.15146982162688968L0.7276173683050475 0.013780286031594946L0.34582323121005076 0L0.1318235250900008 0.09920162734298861L0.0444543935052531 0.2811287071349243L0.08064065829108809 0.3709571405906485L0.21603115127470426 0.4485505768228281L0.7525409135992945 0.5111160926769565L0.9330263665417677 0.5850732219351329L1 0.7129938124702524L0.9117772389978691 0.9130572743138187L0.6423187128058188 1L0.29586019579751677 0.9935291584506244L0.10638454191462794 0.9229845198431584L0 0.7570771288048773\",\n T: \"M0 0L1 0M0.5148514851485149 0L0.5148514851485149 1\",\n U: \"M0 0L0.0023103778751369115 0.5467447428390111L0.01823032542100219 0.6954785891481812L0.05895528135268338 0.8056480226151669L0.13703402031421133 0.8894445726483398L0.23918400876232196 0.9448524533417946L0.3917887458926616 0.9848674531975652L0.584341627875137 1L0.7194816196604602 0.9848501456716763L0.8303268115073934 0.9449411544119768L0.8966613970084885 0.898186315516197L0.9251437568455642 0.867453197565408L0.9687114937020809 0.7890904895145239L0.9890470974808324 0.6852857184065537L1 0.0014769088758762145\",\n V: \"M0 0L0.5348837209302325 1L1 0\",\n W: \"M0 0L0.23300090661831369 0.9873417721518988L0.49954669084315495 0.30081906180193585L0.7851314596554849 1L1 0.0215934475055845\",\n X: \"M0 0L0.9893617021276596 1M1 0L0.010638297872340425 1\",\n Y: \"M0 0L0.4860515021459227 0.44712562100780695M1 0.0014194464158977947L0.48927038626609437 0.44996451383960256L0.5075107296137339 1\",\n Z: \"M0 0L1 0L0 1L1 1\",\n \".\": \"M 0.49 1 L 0.41 1\",\n \"*\": \"M 0.5 0.25 L 0.8 0.25 M 0.5 0.25 L 0.5927 0.4402 M 0.5 0.25 L 0.2573 0.3676 M 0.5 0.25 L 0.2573 0.1324 M 0.5 0.25 L 0.599 0.055\",\n \"(\": \"M0.75 0L0.25 0.5L0.25 0.5L0.75 1\",\n \")\": \"M0.25 0L0.75 0.5L0.75 0.5L0.25 1\",\n \"-\": \"M0 0.5L1 0.5\",\n \"+\": \"M 0 0.5 L 1 0.5 M 0.5 0.125 L 0.5 0.875\",\n \"=\": \"M0 0.25L1 0.25M0 0.75L1 0.75\",\n _: \"M0 1 L1 1\",\n \"[\": \"M0.75 0L0.25 0L0.25 1L0.75 1\",\n \"]\": \"M0.25 0L0.75 0L0.75 1L0.25 1\",\n \"<\": \"M0.75 0L0.25 0.5L0.25 0.5L0.75 1\",\n \">\": \"M0.25 0L0.75 0.5L0.75 0.5L0.25 1\",\n \"'\": \"M 0.5 0 L 0.5 0.5\",\n '\"': \"M 0.25 0 L 0.25 0.5 M 0.75 0 L 0.75 0.5\",\n}\n\nexport const lineAlphabet: Record<\n string,\n Array<{ x1: number; y1: number; x2: number; y2: number }>\n> = {}\nfor (const letter in svgAlphabet) {\n lineAlphabet[letter] = []\n const segs = (svgAlphabet as any)[letter]\n .split(\"M\")\n .slice(1)\n .map((seg: any) =>\n seg.split(\"L\").map((pr: any) => pr.trim().split(\" \").map(parseFloat)),\n )\n for (const seg of segs) {\n for (let i = 0; i < seg.length - 1; i++) {\n // We also flip the y axis to make it cartesian here\n lineAlphabet[letter].push({\n x1: seg[i][0],\n y1: 1 - seg[i][1],\n x2: seg[i + 1][0],\n y2: 1 - seg[i + 1][1],\n })\n }\n }\n}\n","import { lineAlphabet } from \"../assets/alphabet\"\nimport { Line, Text } from \"./types\"\n\nexport const LETTER_HEIGHT_TO_WIDTH_RATIO = 0.6\nexport const LETTER_HEIGHT_TO_SPACE_RATIO = 0.2\n\nexport const getTextWidth = (text: Text): number => {\n return (\n text.text.length * text.size * LETTER_HEIGHT_TO_WIDTH_RATIO +\n (text.text.length - 1) * text.size * LETTER_HEIGHT_TO_SPACE_RATIO\n )\n}\n\nexport const convertTextToLines = (text: Text): Line[] => {\n const strokeWidth = text.size / 8\n const letterWidth = text.size * LETTER_HEIGHT_TO_WIDTH_RATIO\n const letterSpace = text.size * LETTER_HEIGHT_TO_SPACE_RATIO\n\n const lines: Line[] = []\n for (let letterIndex = 0; letterIndex < text.text.length; letterIndex++) {\n const letter = text.text[letterIndex]\n const letterLines = lineAlphabet[letter.toUpperCase()]\n if (!letterLines) continue\n for (const { x1, y1, x2, y2 } of letterLines) {\n lines.push({\n pcb_drawing_type: \"line\",\n x1:\n text.x + (letterWidth + letterSpace) * letterIndex + letterWidth * x1,\n y1: text.y + text.size * y1,\n x2:\n text.x + (letterWidth + letterSpace) * letterIndex + letterWidth * x2,\n y2: text.y + text.size * y2,\n width: strokeWidth,\n layer: text.layer,\n unit: text.unit,\n })\n }\n }\n\n return lines\n}\n","import { Drawer, LAYER_NAME_TO_COLOR } from \"./Drawer\"\nimport { convertTextToLines, getTextWidth } from \"./convert-text-to-lines\"\nimport {\n Circle,\n Line,\n Oval,\n Pill,\n Polygon,\n Primitive,\n Rect,\n Text,\n} from \"./types\"\nimport color from \"color\"\n\nfunction getColor(primitive: Primitive) {\n if (primitive.is_mouse_over || primitive.is_in_highlighted_net) {\n return color(\n LAYER_NAME_TO_COLOR[primitive.layer as keyof typeof LAYER_NAME_TO_COLOR],\n )\n .lighten(0.5)\n .rgb()\n .toString()\n }\n return LAYER_NAME_TO_COLOR[\n primitive.layer as keyof typeof LAYER_NAME_TO_COLOR\n ]\n}\n\nexport const drawLine = (drawer: Drawer, line: Line) => {\n drawer.equip({\n size: line.zoomIndependent ? line.width / drawer.transform.a : line.width,\n shape: line.squareCap ? \"square\" : \"circle\",\n color: getColor(line),\n layer: line.layer,\n })\n drawer.moveTo(line.x1, line.y1)\n drawer.lineTo(line.x2, line.y2)\n}\n\nexport const drawText = (drawer: Drawer, text: Text) => {\n drawer.equip({\n fontSize: text.size,\n color: text.layer,\n })\n\n let alignOffset = { x: 0, y: 0 }\n const textWidth = getTextWidth(text)\n const textHeight = text.size\n if (text.align === \"top_left\") {\n alignOffset.y = -textHeight\n } else if (text.align === \"bottom_right\") {\n alignOffset.x = -textWidth\n } else if (text.align === \"top_right\") {\n alignOffset.x = -textWidth\n alignOffset.y = -textHeight\n } else if (text.align === \"center\") {\n alignOffset.x = -textWidth / 2\n alignOffset.y = -textHeight / 2\n }\n\n // Non-gerber compatible\n // drawer.text(text.text, text.x, text.y)\n\n text.x ??= 0\n text.y ??= 0\n const text_lines = convertTextToLines({\n ...text,\n x: text.x + alignOffset.x,\n y: text.y + alignOffset.y,\n })\n for (const line of text_lines) {\n drawLine(drawer, line)\n }\n}\n\nexport const drawRect = (drawer: Drawer, rect: Rect) => {\n drawer.equip({\n color: getColor(rect),\n layer: rect.layer,\n })\n drawer.rect(rect.x, rect.y, rect.w, rect.h, rect.mesh_fill)\n}\n\nexport const drawCircle = (drawer: Drawer, circle: Circle) => {\n drawer.equip({\n color: getColor(circle),\n layer: circle.layer,\n })\n drawer.circle(circle.x, circle.y, circle.r, circle.mesh_fill)\n}\n\nexport const drawOval = (drawer: Drawer, oval: Oval) => {\n drawer.equip({\n color: getColor(oval),\n layer: oval.layer,\n })\n drawer.oval(oval.x, oval.y, oval.rX, oval.rY)\n}\n\nexport const drawPill = (drawer: Drawer, pill: Pill) => {\n drawer.equip({\n color: getColor(pill),\n layer: pill.layer,\n })\n drawer.pill(pill.x, pill.y, pill.w, pill.h)\n}\n\nexport const drawPolygon = (drawer: Drawer, polygon: Polygon) => {\n drawer.equip({\n color: getColor(polygon),\n layer: polygon.layer,\n })\n drawer.polygon(polygon.points)\n}\n\nexport const drawPrimitive = (drawer: Drawer, primitive: Primitive) => {\n switch (primitive.pcb_drawing_type) {\n case \"line\":\n return drawLine(drawer, primitive)\n case \"text\":\n return drawText(drawer, primitive)\n case \"rect\":\n return drawRect(drawer, primitive)\n case \"circle\":\n return drawCircle(drawer, primitive)\n case \"oval\":\n return drawOval(drawer, primitive)\n case \"pill\":\n return drawPill(drawer, primitive)\n case \"polygon\":\n return drawPolygon(drawer, primitive)\n }\n}\n\nexport const drawPrimitives = (drawer: Drawer, primitives: Primitive[]) => {\n // sort primitives by draw order\n primitives.sort((a, b) => {\n const layerOrder = [\"bottom\", \"top\", \"drill\"]\n return layerOrder.indexOf(a.layer) - layerOrder.indexOf(b.layer)\n })\n primitives.forEach((primitive) => drawPrimitive(drawer, primitive))\n}\n","import {\n createStore as createZustandStore,\n useStore as useZustandStore,\n UseBoundStore,\n} from \"zustand\"\nimport { StoreContext } from \"./components/ContextProviders\"\nimport type { LayerRef } from \"@tscircuit/soup\"\nimport { useContext } from \"react\"\n\nexport interface State {\n selected_layer: LayerRef\n\n pcb_viewer_id: string\n\n in_edit_mode: boolean\n in_move_footprint_mode: boolean\n in_draw_trace_mode: boolean\n\n is_moving_component: boolean\n is_drawing_trace: boolean\n\n is_showing_rats_nest: boolean\n\n selectLayer: (layer: LayerRef) => void\n setEditMode: (mode: \"off\" | \"move_footprint\" | \"draw_trace\") => void\n setIsMovingComponent: (is_moving: boolean) => void\n setIsDrawingTrace: (is_drawing: boolean) => void\n setIsShowingRatsNest: (is_showing: boolean) => void\n}\n\nexport type StateProps = {\n [key in keyof State]: State[key] extends boolean ? boolean : never\n}\n\nexport const createStore = (initialState: Partial<StateProps> = {}) =>\n createZustandStore<State>(\n (set) =>\n ({\n selected_layer: \"top\",\n\n pcb_viewer_id: `pcb_viewer_${Math.random().toString().slice(2, 10)}`,\n\n in_edit_mode: false,\n in_move_footprint_mode: false,\n in_draw_trace_mode: false,\n\n is_moving_component: false,\n is_drawing_trace: false,\n\n is_showing_rats_nest: false,\n ...initialState,\n\n selectLayer: (layer) => set({ selected_layer: layer }),\n setEditMode: (mode) =>\n set({\n in_edit_mode: mode !== \"off\",\n in_move_footprint_mode: mode === \"move_footprint\",\n in_draw_trace_mode: mode === \"draw_trace\",\n is_moving_component: false,\n is_drawing_trace: false,\n }),\n setIsShowingRatsNest: (is_showing) =>\n set({ is_showing_rats_nest: is_showing }),\n setIsMovingComponent: (is_moving) =>\n set({ is_moving_component: is_moving }),\n setIsDrawingTrace: (is_drawing) =>\n set({ is_drawing_trace: is_drawing }),\n }) as const,\n )\n\nexport const useGlobalStore = <T = State>(s?: (state: State) => T): T => {\n const store = useContext(StoreContext)\n\n return useZustandStore(store as any, s as any)\n}\n","import { useMemo } from \"react\"\nimport { createContext, useContext } from \"react\"\nimport { createStore, type StateProps } from \"../global-store\"\n\nexport const StoreContext = createContext(null)\n\nexport const ContextProviders = ({\n children,\n initialState,\n}: { children?: any; initialState?: Partial<StateProps> }) => {\n const store = useMemo(() => createStore(initialState), [])\n\n return (\n <StoreContext.Provider value={store as any}>\n {children}\n </StoreContext.Provider>\n )\n}\n","import type { AnySoupElement } from \"@tscircuit/soup\"\nimport { su } from \"@tscircuit/soup-util\"\nimport type { Primitive } from \"./types\"\nimport { type Point, getExpandedStroke } from \"./util/expand-stroke\"\n\ntype MetaData = {\n _parent_pcb_component?: any\n _parent_source_component?: any\n _source_port?: any\n}\n\nlet globalPcbDrawingObjectCount = 0\nexport const convertElementToPrimitives = (\n element: AnySoupElement,\n allElements: AnySoupElement[],\n): (Primitive & MetaData)[] => {\n const _parent_pcb_component =\n \"pcb_component_id\" in element\n ? allElements.find(\n (elm) =>\n elm.type === \"pcb_component\" &&\n elm.pcb_component_id === element.pcb_component_id,\n )\n : undefined\n const _parent_source_component =\n _parent_pcb_component && \"source_component_id\" in _parent_pcb_component\n ? allElements.find(\n (elm) =>\n elm.type === \"source_component\" &&\n elm.source_component_id ===\n _parent_pcb_component.source_component_id,\n )\n : undefined\n\n const _source_port_id =\n \"source_port_id\" in element\n ? element.source_port_id\n : \"pcb_port_id\" in element\n ? su(allElements).pcb_port.get(element.pcb_port_id!)?.source_port_id\n : undefined\n\n const _source_port = _source_port_id\n ? allElements.find(\n (e) => e.type === \"source_port\" && e.source_port_id === _source_port_id,\n )\n : undefined\n\n switch (element.type) {\n case \"pcb_board\": {\n const { width, height, center, outline } = element\n\n if (outline && outline.length > 2) {\n return outline.map((point, index, array) => {\n return {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: point.x,\n y1: point.y,\n x2: index === array.length - 1 ? array[0].x : array[index + 1].x,\n y2: index === array.length - 1 ? array[0].y : array[index + 1].y,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n }\n })\n }\n return [\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y - height / 2,\n x2: center.x + width / 2,\n y2: center.y - height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y + height / 2,\n x2: center.x + width / 2,\n y2: center.y + height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y - height / 2,\n x2: center.x - width / 2,\n y2: center.y + height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x + width / 2,\n y1: center.y - height / 2,\n x2: center.x + width / 2,\n y2: center.y + height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n ]\n }\n case \"pcb_smtpad\": {\n if (element.shape === \"rect\") {\n const { shape, x, y, width, height, layer } = element\n\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x,\n y,\n w: width,\n h: height,\n layer: layer || \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n ]\n } else if (element.shape === \"circle\") {\n const { x, y, radius, layer } = element\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: radius,\n layer: layer || \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n ]\n }\n return []\n }\n case \"pcb_hole\": {\n if (element.hole_shape === \"round\" || !element.hole_shape) {\n const { x, y, hole_diameter } = element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n layer: \"drill\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n },\n ]\n }\n // TODO square hole\n // TODO oval hole\n return []\n }\n case \"pcb_plated_hole\": {\n if (element.shape === \"circle\") {\n const { x, y, hole_diameter, outer_diameter } = element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n // TODO support layer on pcb_plated_hole\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n // TODO support layer on pcb_plated_hole\n layer: \"drill\",\n _element: element,\n\n // double highlights are annoying\n // _element: element,\n },\n ]\n } else if (element.shape === \"oval\") {\n const { x, y, outer_height, outer_width, hole_height, hole_width } =\n element\n\n return [\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"oval\",\n x,\n y,\n rX: outer_width / 2,\n rY: outer_height / 2,\n layer: \"top\", // TODO: Confirm layer handling for oval plated holes\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"oval\",\n x,\n y,\n rX: hole_width / 2,\n rY: hole_height / 2,\n layer: \"drill\",\n },\n ]\n } else if (element.shape === \"pill\") {\n const { x, y, outer_height, outer_width, hole_height, hole_width } =\n element\n\n return [\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"pill\",\n x,\n y,\n w: outer_width,\n h: outer_height,\n layer: \"top\", // TODO: Confirm layer handling for oval plated holes\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"pill\",\n x,\n y,\n w: hole_width,\n h: hole_height,\n layer: \"drill\",\n },\n ]\n } else {\n return []\n }\n }\n case \"pcb_keepout\": {\n if (element.shape === \"circle\") {\n const { center, radius } = element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x: center.x,\n y: center.y,\n r: radius,\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n mesh_fill: true,\n },\n ]\n } else if (element.shape === \"rect\") {\n const { x, y, width, height } = element\n\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x,\n y,\n w: width,\n h: height,\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n mesh_fill: true,\n },\n ]\n }\n }\n case \"pcb_trace\": {\n const primitives: Primitive[] = []\n\n if (element.route_thickness_mode === \"interpolated\") {\n // Prepare the stroke input\n const strokeInput: Point[] = element.route.map((r) => ({\n x: r.x,\n y: r.y,\n trace_width: r.route_type === \"wire\" ? r.width : 0.5,\n }))\n\n // Use getExpandedStroke to generate the polygon points\n const expandedStroke = getExpandedStroke(strokeInput, 0.5) // Use 0.5 as default width\n\n // Generate a single polygon primitive from the expanded stroke\n primitives.push({\n _pcb_drawing_object_id: `polygon_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"polygon\",\n points: expandedStroke,\n layer: element.route[0].layer, // same layer for all points\n })\n\n // Add circles for vias\n element.route.forEach((r) => {\n if (r.route_type === \"via\") {\n primitives.push({\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"circle\",\n x: r.x,\n y: r.y,\n radius: r.outer_diameter / 2,\n fill: true,\n layer: element.route.layer,\n })\n }\n })\n\n return primitives\n }\n let prevX: number | null = null\n let prevY: number | null = null\n\n for (const route of element.route) {\n if (route.route_type === \"wire\") {\n if (prevX !== null && prevY !== null) {\n primitives.push({\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"line\",\n x1: prevX,\n y1: prevY,\n x2: route.x,\n y2: route.y,\n width: route.width,\n squareCap: false,\n layer: route.layer,\n })\n }\n\n prevX = route.x\n prevY = route.y\n }\n }\n\n return primitives\n }\n // The builder currently outputs these as smtpads and holes, so pcb_via isn't\n // used, but that maybe should be changed\n case \"pcb_via\": {\n const { x, y, outer_diameter, hole_diameter, from_layer, to_layer } =\n element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n layer: from_layer!,\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n layer: \"drill\",\n _parent_pcb_component,\n _parent_source_component,\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n layer: to_layer!,\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n },\n ]\n }\n\n case \"pcb_silkscreen_rect\": {\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x: element.center.x,\n y: element.center.y,\n w: element.width,\n h: element.height,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_circle\": {\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x: element.center.x,\n y: element.center.y,\n r: element.radius,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_oval\": {\n return [\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"oval\",\n x: element.center.x,\n y: element.center.y,\n rX: element.radius_x / 2,\n rY: element.radius_y / 2,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_pill\": {\n return [\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"pill\",\n x: element.center.x,\n y: element.center.y,\n w: element.width,\n h: element.height,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_line\": {\n return [\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: element.x1,\n y1: element.y1,\n x2: element.x2,\n y2: element.y2,\n width: 0.1, // TODO add strokewidth\n squareCap: false,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_fabrication_note_path\":\n case \"pcb_silkscreen_path\": {\n const {\n pcb_component_id,\n route, // Array<{ x: number, y: number }>\n type,\n } = element\n\n let layer:\n | \"bottom_silkscreen\"\n | \"top_silkscreen\"\n | \"bottom_fabrication\"\n | \"top_fabrication\"\n | null\n\n if (type === \"pcb_silkscreen_path\") {\n layer =\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\"\n } else if (type === \"pcb_fabrication_note_path\") {\n layer = \"top_fabrication\"\n }\n\n return route\n .slice(0, -1)\n .map((point, index) => {\n const nextPoint = route[index + 1]\n return {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: point.x,\n y1: point.y,\n x2: nextPoint.x,\n y2: nextPoint.y,\n width: element.stroke_width ?? 0.1,\n squareCap: false,\n layer: layer!,\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n } as Primitive & MetaData\n })\n .filter(Boolean)\n }\n\n case \"pcb_silkscreen_text\": {\n return [\n {\n _pcb_drawing_object_id: `text_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"text\",\n x: element.anchor_position.x,\n y: element.anchor_position.y,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n align: element.anchor_alignment ?? \"center\",\n text: element.text,\n size: element.font_size, // Add the required 'size' property\n },\n ]\n }\n\n case \"pcb_fabrication_note_text\": {\n return [\n {\n _pcb_drawing_object_id: `text_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"text\",\n x: element.anchor_position.x,\n y: element.anchor_position.y,\n layer:\n element.layer === \"bottom\"\n ? \"bottom_fabrication\"\n : \"top_fabrication\",\n size: element.font_size,\n align: element.anchor_alignment ?? \"center\",\n text: element.text,\n },\n ]\n }\n }\n\n // console.warn(`Unsupported element type: ${element.type}`)\n return []\n}\n","export interface Point {\n x: number;\n y: number;\n trace_width?: number;\n }\n\nexport function getExpandedStroke(\n strokeInput: (Point | [number, number] | number[])[],\n defaultWidth: number\n ): Point[] {\n if (strokeInput.length < 2) {\n throw new Error(\"Stroke must have at least two points\");\n }\n \n const stroke: Point[] = strokeInput.map(point => {\n if (Array.isArray(point)) {\n return { x: point[0], y: point[1] };\n }\n return point as Point;\n });\n \n const leftSide: Point[] = [];\n const rightSide: Point[] = [];\n \n function getNormal(p1: Point, p2: Point): Point {\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n const length = Math.sqrt(dx * dx + dy * dy);\n return { x: -dy / length, y: dx / length };\n }\n \n function addPoint(point: Point, normal: Point, factor: number, width: number) {\n const halfWidth = width / 2;\n const newPoint = {\n x: point.x + normal.x * halfWidth * factor,\n y: point.y + normal.y * halfWidth * factor,\n };\n if (factor > 0) {\n leftSide.push(newPoint);\n } else {\n rightSide.unshift(newPoint);\n }\n }\n \n // Handle the first point\n const firstNormal = getNormal(stroke[0]!, stroke[1]!);\n const firstWidth = stroke[0]!.trace_width ?? defaultWidth;\n addPoint(stroke[0]!, firstNormal, 1, firstWidth);\n addPoint(stroke[0]!, firstNormal, -1, firstWidth);\n \n // Handle middle points\n for (let i = 1; i < stroke.length - 1; i++) {\n const prev = stroke[i - 1]!;\n const current = stroke[i]!;\n const next = stroke[i + 1]!;\n \n const normalPrev = getNormal(prev, current);\n const normalNext = getNormal(current, next);\n \n // Calculate miter line\n const miterX = normalPrev.x + normalNext.x;\n const miterY = normalPrev.y + normalNext.y;\n const miterLength = Math.sqrt(miterX * miterX + miterY * miterY);\n \n const currentWidth = current.trace_width ?? defaultWidth;\n \n // Check if miter is too long (sharp corner)\n const miterLimit = 2; // Adjust this value to control when to bevel\n if (miterLength / 2 > miterLimit * (currentWidth / 2)) {\n // Use bevel join\n addPoint(current, normalPrev, 1, currentWidth);\n addPoint(current, normalNext, 1, currentWidth);\n addPoint(current, normalPrev, -1, currentWidth);\n addPoint(current, normalNext, -1, currentWidth);\n } else {\n // Use miter join\n const scale = 1 / miterLength;\n addPoint(current, { x: miterX * scale, y: miterY * scale }, 1, currentWidth);\n addPoint(current, { x: miterX * scale, y: miterY * scale }, -1, currentWidth);\n }\n }\n \n // Handle the last point\n const lastNormal = getNormal(\n stroke[stroke.length - 2]!,\n stroke[stroke.length - 1]!\n );\n const lastWidth = stroke[stroke.length - 1]!.trace_width ?? defaultWidth;\n addPoint(stroke[stroke.length - 1]!, lastNormal, 1, lastWidth);\n addPoint(stroke[stroke.length - 1]!, lastNormal, -1, lastWidth);\n \n // Combine left and right sides to form a closed polygon\n return [...leftSide, ...rightSide];\n }","import React, { useState } from \"react\"\nimport { useMemo } from \"react\"\nimport { Matrix, applyToPoint, inverse } from \"transformation-matrix\"\nimport { Primitive } from \"lib/types\"\nimport { ElementOverlayBox } from \"./ElementOverlayBox\"\nimport { AnyElement } from \"@tscircuit/builder\"\nimport { ifSetsMatchExactly } from \"lib/util/if-sets-match-exactly\"\n\nexport const MouseElementTracker = ({\n children,\n transform,\n primitives,\n onMouseHoverOverPrimitives,\n}: {\n children: any\n transform?: Matrix\n primitives: Primitive[]\n onMouseHoverOverPrimitives: (primitivesHoveredOver: Primitive[]) => void\n}) => {\n const [mousedPrimitives, setMousedPrimitives] = useState<Primitive[]>([])\n\n const highlightedPrimitives = useMemo(() => {\n const highlightedPrimitives: HighlightedPrimitive[] = []\n for (const primitive of mousedPrimitives) {\n if (primitive._element?.type === \"pcb_via\") continue\n if (primitive._element?.type === \"pcb_component\") continue\n if (primitive?.layer === \"drill\") continue\n const screenPos = applyToPoint(\n transform!,\n primitive as { x: number; y: number },\n )\n const w =\n \"w\" in primitive ? primitive.w : \"r\" in primitive ? primitive.r * 2 : 0\n const h =\n \"h\" in primitive ? primitive.h : \"r\" in primitive ? primitive.r * 2 : 0\n const screenSize = {\n w: w * transform!.a,\n h: h * transform!.a,\n }\n\n // FANCY: If 2+ highlighted primitives inhabit the same space, give\n // them an incrementing same_space_index\n let same_space_index = highlightedPrimitives.filter(\n (hp) =>\n screenPos.x === hp.screen_x &&\n screenPos.y === hp.screen_y &&\n screenSize.w === hp.screen_w &&\n screenSize.h === hp.screen_h,\n ).length\n\n highlightedPrimitives.push({\n ...(primitive as any),\n screen_x: screenPos.x,\n screen_y: screenPos.y,\n screen_w: screenSize.w,\n screen_h: screenSize.h,\n same_space_index,\n })\n }\n\n return highlightedPrimitives\n }, [mousedPrimitives, transform])\n return (\n <div\n style={{ position: \"relative\" }}\n onMouseMove={(e) => {\n if (transform) {\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n const rwPoint = applyToPoint(inverse(transform), { x, y })\n\n const newMousedPrimitives: Primitive[] = []\n for (const primitive of primitives) {\n if (\n !(\n \"x\" in primitive &&\n \"y\" in primitive &&\n ((\"w\" in primitive && \"h\" in primitive) || \"r\" in primitive)\n )\n )\n continue\n if (!primitive._element) continue\n\n const w = \"w\" in primitive ? primitive.w : primitive.r * 2\n const h = \"h\" in primitive ? primitive.h : primitive.r * 2\n\n if (\n Math.abs(primitive.x - rwPoint.x) < w / 2 &&\n Math.abs(primitive.y - rwPoint.y) < h / 2\n ) {\n newMousedPrimitives.push(primitive)\n }\n }\n\n if (\n ifSetsMatchExactly(\n new Set(newMousedPrimitives.map((p) => p._pcb_drawing_object_id)),\n new Set(mousedPrimitives.map((p) => p._pcb_drawing_object_id)),\n )\n ) {\n return\n }\n\n setMousedPrimitives(newMousedPrimitives)\n onMouseHoverOverPrimitives(newMousedPrimitives)\n }\n }}\n >\n {children}\n <ElementOverlayBox highlightedPrimitives={highlightedPrimitives} />\n </div>\n )\n}\n\nexport type HighlightedPrimitive = {\n x: number\n y: number\n w: number\n h: number\n same_space_index?: number\n _element: AnyElement\n _parent_pcb_component?: AnyElement\n _parent_source_component?: AnyElement\n _source_port?: AnyElement\n screen_x: number\n screen_y: number\n screen_w: number\n screen_h: number\n}\n","import React, { useEffect, useState } from \"react\"\nimport { HighlightedPrimitive } from \"./MouseElementTracker\"\nimport colors from \"lib/colors\"\nimport { useGlobalStore } from \"global-store\"\n\nconst containerStyle = {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n color: \"red\",\n fontFamily: \"sans-serif\",\n fontSize: 12,\n textShadow: \"0 0 2px black\",\n} as const\n\nexport const getTextForHighlightedPrimitive = (\n prim: HighlightedPrimitive,\n): string => {\n const {\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n } = prim\n switch (element.type) {\n case \"pcb_smtpad\":\n case \"pcb_plated_hole\": {\n let s = \"\"\n\n if (\n _parent_source_component &&\n \"name\" in _parent_source_component &&\n _parent_source_component.name\n ) {\n s += `.${_parent_source_component.name} > `\n }\n\n const port_hints = Array.from(\n new Set(\n (element.port_hints ?? []).concat(\n (_source_port as any)?.port_hints ?? [],\n ),\n ),\n )\n // reverse alphabetical order\n .sort((a, b) => b.localeCompare(a))\n\n s += port_hints\n .map((ph: string) => (ph.match(/^[0-9]+$/) ? `port.${ph}` : `.${ph}`))\n .join(\", \")\n\n return s\n }\n default: {\n return \"\"\n }\n }\n}\n\nconst layerColorHightlightMap = {\n top: \"red\",\n bottom: \"aqua\",\n}\n\nexport const HighlightedPrimitiveBoxWithText = ({\n primitive,\n}: {\n primitive: HighlightedPrimitive\n}) => {\n const [finalState, setFinalState] = useState(false)\n\n useEffect(() => {\n setTimeout(() => {\n setFinalState(true)\n }, 100)\n }, [])\n\n let [x, y, w, h] = [\n primitive.screen_x,\n primitive.screen_y,\n primitive.screen_w,\n primitive.screen_h,\n ]\n\n const si = primitive.same_space_index ?? 0\n const sip = 26\n\n const color: string =\n layerColorHightlightMap[\n (primitive as any)?._element\n ?.layer as keyof typeof layerColorHightlightMap\n ] ?? \"red\"\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: x - w / 2 - 8,\n top: y - h / 2 - 8,\n width: w + 16,\n height: h + 16,\n color,\n }}\n >\n <div\n style={{\n // width: finalState ? `${100 + 20 * si}%` : \"100%\",\n // height: finalState ? `${100 + 20 * si}%` : \"100%\",\n // marginLeft: finalState ? `${-10 * si}%` : 0,\n // marginTop: finalState ? `${-10 * si}%` : 0,\n width: finalState ? `calc(100% + ${sip * 2 * si}px)` : \"100%\",\n height: finalState ? `calc(100% + ${sip * 2 * si}px)` : \"100%\",\n marginLeft: finalState ? `${-sip * si}px` : 0,\n marginTop: finalState ? `${-sip * si}px` : 0,\n border: `1px solid ${color}`,\n opacity: finalState ? 1 : si === 0 ? 1 : 0,\n transition:\n \"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n left: 0,\n bottom: h + 20 + sip * si,\n marginLeft: finalState ? `${-sip * si}px` : 0,\n marginBottom: finalState ? 0 : -sip * si,\n transition: \"margin-left 0.2s, margin-bottom 0.2s\",\n lineHeight: \"0.8em\",\n }}\n >\n {getTextForHighlightedPrimitive(primitive)}\n </div>\n </div>\n </div>\n )\n}\n\nexport const ElementOverlayBox = ({\n highlightedPrimitives,\n}: {\n highlightedPrimitives: HighlightedPrimitive[]\n}) => {\n const is_moving_component = useGlobalStore((s) => s.is_moving_component)\n\n return (\n <div style={containerStyle}>\n {!is_moving_component &&\n highlightedPrimitives.map((primitive, i) => (\n <HighlightedPrimitiveBoxWithText key={i} primitive={primitive} />\n ))}\n </div>\n )\n}\n","export function ifSetsMatchExactly(set1: Set<any>, set2: Set<any>) {\n if (set1.size !== set2.size) return false\n return Array.from(set1).every((item) => set2.has(item))\n}\n","import { useEffect, useRef, useState } from \"react\"\nimport { Matrix, applyToPoint, identity, inverse } from \"transformation-matrix\"\n\ninterface Props {\n transform?: Matrix\n children: any\n}\n\nexport const DimensionOverlay = ({ children, transform }: Props) => {\n if (!transform) transform = identity()\n const [dimensionToolVisible, setDimensionToolVisible] = useState(false)\n const [dimensionToolStretching, setDimensionToolStretching] = useState(false)\n // Start of dimension tool line in real-world coordinates (not screen)\n const [dStart, setDStart] = useState({ x: 0, y: 0 })\n // End of dimension tool line in real-world coordinates (not screen)\n const [dEnd, setDEnd] = useState({ x: 0, y: 0 })\n const mousePosRef = useRef({ x: 0, y: 0 })\n const containerRef = useRef<HTMLDivElement | null>(null)\n const container = containerRef.current!\n const containerBounds = container?.getBoundingClientRect()\n useEffect(() => {\n const container = containerRef.current\n\n const down = (e: KeyboardEvent) => {\n if (e.key === \"d\") {\n setDStart({ x: mousePosRef.current.x, y: mousePosRef.current.y })\n setDEnd({ x: mousePosRef.current.x, y: mousePosRef.current.y })\n setDimensionToolVisible((visible: boolean) => !visible)\n setDimensionToolStretching(true)\n e.preventDefault()\n }\n if (e.key === \"Escape\") {\n setDimensionToolVisible(false)\n setDimensionToolStretching(false)\n }\n }\n\n const addKeyListener = () => {\n if (container) {\n container.addEventListener(\"keydown\", down)\n }\n }\n\n const removeKeyListener = () => {\n if (container) {\n container.removeEventListener(\"keydown\", down)\n }\n }\n\n if (container) {\n container.addEventListener(\"focus\", addKeyListener)\n container.addEventListener(\"blur\", removeKeyListener)\n container.addEventListener(\"mouseenter\", addKeyListener)\n container.addEventListener(\"mouseleave\", removeKeyListener)\n }\n return () => {\n if (container) {\n container.removeEventListener(\"focus\", addKeyListener)\n container.removeEventListener(\"blur\", removeKeyListener)\n container.removeEventListener(\"mouseenter\", addKeyListener)\n container.removeEventListener(\"mouseleave\", removeKeyListener)\n }\n }\n }, [containerRef])\n\n const screenDStart = applyToPoint(transform, dStart)\n const screenDEnd = applyToPoint(transform, dEnd)\n\n const arrowScreenBounds = {\n left: Math.min(screenDStart.x, screenDEnd.x),\n right: Math.max(screenDStart.x, screenDEnd.x),\n top: Math.min(screenDStart.y, screenDEnd.y),\n bottom: Math.max(screenDStart.y, screenDEnd.y),\n flipX: screenDStart.x > screenDEnd.x,\n flipY: screenDStart.y > screenDEnd.y,\n width: 0,\n height: 0,\n }\n arrowScreenBounds.width = arrowScreenBounds.right - arrowScreenBounds.left\n arrowScreenBounds.height = arrowScreenBounds.bottom - arrowScreenBounds.top\n\n return (\n <div\n ref={containerRef}\n tabIndex={0}\n style={{ position: \"relative\" }}\n onMouseEnter={() => {\n if (containerRef.current) {\n containerRef.current.focus()\n }\n }}\n onMouseLeave={() => {\n if (containerRef.current) {\n containerRef.current.blur()\n }\n }}\n onMouseMove={(e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n const rwPoint = applyToPoint(inverse(transform!), { x, y })\n mousePosRef.current.x = rwPoint.x\n mousePosRef.current.y = rwPoint.y\n\n if (dimensionToolStretching) {\n setDEnd({ x: rwPoint.x, y: rwPoint.y })\n }\n }}\n onMouseDown={() => {\n if (dimensionToolStretching) {\n setDimensionToolStretching(false)\n } else if (dimensionToolVisible) {\n setDimensionToolVisible(false)\n }\n }}\n >\n {children}\n {dimensionToolVisible && (\n <>\n <div\n style={{\n position: \"absolute\",\n left: arrowScreenBounds.left,\n width: arrowScreenBounds.width,\n textAlign: \"center\",\n top: screenDStart.y + 2,\n color: \"red\",\n mixBlendMode: \"difference\",\n pointerEvents: \"none\",\n marginTop: arrowScreenBounds.flipY ? 0 : -20,\n fontSize: 12,\n fontFamily: \"sans-serif\",\n zIndex: 1000,\n }}\n >\n {Math.abs(dStart.x - dEnd.x).toFixed(2)}\n </div>\n <div\n style={{\n position: \"absolute\",\n left: screenDEnd.x,\n height: arrowScreenBounds.height,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n top: arrowScreenBounds.top,\n color: \"red\",\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n fontSize: 12,\n fontFamily: \"sans-serif\",\n zIndex: 1000,\n }}\n >\n <div\n style={{\n marginLeft: arrowScreenBounds.flipX ? \"-100%\" : 4,\n paddingRight: 4,\n }}\n >\n {Math.abs(dStart.y - dEnd.y).toFixed(2)}\n </div>\n </div>\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width={containerBounds.width}\n height={containerBounds.height}\n >\n <defs>\n <marker\n id=\"head\"\n orient=\"auto\"\n markerWidth=\"3\"\n markerHeight=\"4\"\n refX=\"2\"\n refY=\"2\"\n >\n <path d=\"M0,0 V4 L2,2 Z\" fill=\"red\" />\n </marker>\n </defs>\n <line\n x1={screenDStart.x}\n y1={screenDStart.y}\n x2={screenDEnd.x}\n y2={screenDEnd.y}\n markerEnd=\"url(#head)\"\n strokeWidth={1.5}\n fill=\"none\"\n stroke=\"red\"\n />\n <line\n x1={screenDStart.x}\n y1={screenDStart.y}\n x2={screenDEnd.x}\n y2={screenDStart.y}\n strokeWidth={1.5}\n fill=\"none\"\n strokeDasharray={\"2,2\"}\n stroke=\"red\"\n />\n <line\n x1={screenDEnd.x}\n y1={screenDStart.y}\n x2={screenDEnd.x}\n y2={screenDEnd.y}\n strokeWidth={1.5}\n fill=\"none\"\n strokeDasharray={\"2,2\"}\n stroke=\"red\"\n />\n </svg>\n <div\n style={{\n right: 0,\n bottom: 0,\n position: \"absolute\",\n color: \"red\",\n fontFamily: \"sans-serif\",\n fontSize: 12,\n margin: 4,\n }}\n >\n ({dStart.x.toFixed(2)},{dStart.y.toFixed(2)})<br />(\n {dEnd.x.toFixed(2)},{dEnd.y.toFixed(2)})<br />\n dist:{\" \"}\n {Math.sqrt(\n Math.pow(dEnd.x - dStart.x, 2) + Math.pow(dEnd.y - dStart.y, 2),\n ).toFixed(2)}\n </div>\n </>\n )}\n </div>\n )\n}\n","import { Fragment, useState } from \"react\"\nimport { css } from \"@emotion/css\"\nimport { type LayerRef, type PCBTraceError, all_layers } from \"@tscircuit/soup\"\nimport type { AnySoupElement } from \"@tscircuit/soup\"\nimport { LAYER_NAME_TO_COLOR } from \"lib/Drawer\"\nimport { useGlobalStore } from \"global-store\"\nimport packageJson from \"../../package.json\"\n\ninterface Props {\n children?: any\n elements?: AnySoupElement[]\n}\n\nexport const LayerButton = ({\n name,\n selected,\n onClick,\n}: {\n name: string\n selected?: boolean\n onClick: (e: any) => any\n}) => {\n return (\n <div\n className={css`\n margin-top: 2px;\n padding: 4px;\n padding-left: 8px;\n padding-right: 18px;\n cursor: pointer;\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.1);\n }\n `}\n onClick={onClick}\n >\n <span style={{ marginRight: 2, opacity: selected ? 1 : 0 }}>•</span>\n <span\n style={{\n marginLeft: 2,\n fontWeight: 500,\n color: (LAYER_NAME_TO_COLOR as any)[name.replace(/-/, \"\")],\n }}\n >\n {name}\n </span>\n </div>\n )\n}\n\nexport const ToolbarButton = ({ children, ...props }: any) => (\n <div\n {...props}\n style={{\n backgroundColor: \"#1F1F1F\",\n border: \"1px solid #666\",\n margin: 4,\n padding: 4,\n paddingLeft: 6,\n paddingRight: 6,\n borderRadius: 2,\n alignSelf: \"start\",\n color: \"#eee\",\n cursor: \"pointer\",\n ...props.style,\n }}\n >\n {children}\n </div>\n)\n\nexport const ToolbarOverlay = ({ children, elements }: Props) => {\n const [isMouseOverContainer, setIsMouseOverContainer] = useState(false)\n const [isLayerMenuOpen, setLayerMenuOpen] = useState(false)\n const [isErrorsOpen, setErrorsOpen] = useState(false)\n const [selectedLayer, selectLayer] = useGlobalStore(\n (s) => [s.selected_layer, s.selectLayer] as const,\n )\n const [in_move_footprint_mode, in_draw_trace_mode, is_showing_rats_nest] =\n useGlobalStore((s) => [\n s.in_move_footprint_mode,\n s.in_draw_trace_mode,\n s.is_showing_rats_nest,\n ])\n const setEditMode = useGlobalStore((s) => s.setEditMode)\n const setIsShowingRatsNest = useGlobalStore((s) => s.setIsShowingRatsNest)\n\n const errorCount =\n elements?.filter((e) => e.type.includes(\"error\")).length ?? 0\n\n return (\n <div\n style={{ position: \"relative\" }}\n onMouseEnter={() => {\n setIsMouseOverContainer(true)\n }}\n onMouseLeave={(e) => {\n setIsMouseOverContainer(false)\n setLayerMenuOpen(false)\n }}\n >\n {children}\n <div\n style={{\n position: \"absolute\",\n bottom: 4,\n right: 8,\n pointerEvents: \"none\",\n color: \"white\",\n fontSize: 11,\n opacity: isMouseOverContainer ? 0.5 : 0,\n transition: \"opacity 1s\",\n transitionDelay: \"2s\",\n fontFamily: \"sans-serif\",\n }}\n >\n @tscircuit/pcb-viewer@{packageJson.version}\n </div>\n <div\n style={{\n position: \"absolute\",\n opacity: isMouseOverContainer ? 1 : 0,\n top: 16,\n left: 16,\n transition: isMouseOverContainer\n ? \"opacity 100ms linear\"\n : \"opacity 1s linear\",\n zIndex: 100,\n color: \"red\",\n display: \"flex\",\n fontSize: 12,\n height: 100,\n fontFamily: \"sans-serif\",\n }}\n >\n <ToolbarButton\n onClick={() => {\n setLayerMenuOpen(!isLayerMenuOpen)\n }}\n onMouseLeave={() => {\n if (isLayerMenuOpen) {\n setLayerMenuOpen(false)\n }\n }}\n >\n <div>\n layer:{\" \"}\n <span\n style={{\n marginLeft: 2,\n fontWeight: 500,\n color: (LAYER_NAME_TO_COLOR as any)[selectedLayer as string],\n }}\n >\n {selectedLayer as string}\n </span>\n </div>\n {isLayerMenuOpen && (\n <div style={{ marginTop: 4, minWidth: 120 }}>\n {all_layers\n .map((l) => l.replace(/-/g, \"\")) // TODO remove when inner-1 becomes inner1\n .map((layer) => (\n <LayerButton\n key={layer}\n name={layer}\n selected={layer === selectedLayer}\n onClick={() => {\n selectLayer(layer.replace(/-/, \"\") as LayerRef)\n }}\n />\n ))}\n </div>\n )}\n </ToolbarButton>\n <ToolbarButton\n style={errorCount > 0 ? { color: \"red\" } : {}}\n onClick={() => setErrorsOpen(!isErrorsOpen)}\n onMouseLeave={() => setErrorsOpen(false)}\n >\n <div>{errorCount} errors</div>\n {isErrorsOpen && (\n <div\n style={{ display: \"grid\", gridTemplateColumns: \"100px 300px\" }}\n >\n {elements\n ?.filter((e): e is PCBTraceError => e.type.includes(\"error\"))\n .map((e, i) => (\n <Fragment key={i}>\n <div>{e.error_type}</div>\n <div>{e.message}</div>\n </Fragment>\n ))}\n </div>\n )}\n </ToolbarButton>\n <ToolbarButton\n style={{}}\n onClick={() => {\n setEditMode(in_draw_trace_mode ? \"off\" : \"draw_trace\")\n }}\n >\n <div>\n {in_draw_trace_mode ? \"✖ \" : \"\"}\n Edit Traces\n </div>\n </ToolbarButton>\n <ToolbarButton\n style={{}}\n onClick={() => {\n setEditMode(in_move_footprint_mode ? \"off\" : \"move_footprint\")\n }}\n >\n <div>\n {in_move_footprint_mode ? \"✖ \" : \"\"}\n Move Components\n </div>\n </ToolbarButton>\n <ToolbarButton\n style={{}}\n onClick={() => {\n setIsShowingRatsNest(!is_showing_rats_nest)\n }}\n >\n <div>\n {is_showing_rats_nest ? \"✖ \" : \"\"}\n Rats Nest\n </div>\n </ToolbarButton>\n </div>\n </div>\n )\n}\n","{\n \"name\": \"@tscircuit/pcb-viewer\",\n \"version\": \"1.10.2\",\n \"main\": \"dist/index.js\",\n \"repository\": \"tscircuit/pcb-viewer\",\n \"license\": \"MIT\",\n \"scripts\": {\n \"start\": \"storybook dev -p 6006\",\n \"build\": \"tsup ./src/index.tsx --dts --sourcemap --outDir dist\",\n \"yalc\": \"npm run build && yalc push\",\n \"storybook\": \"storybook dev -p 6006\",\n \"build-storybook\": \"storybook build\"\n },\n \"files\": [\n \"dist\"\n ],\n \"devDependencies\": {\n \"@biomejs/biome\": \"^1.7.3\",\n \"@semantic-release/commit-analyzer\": \"^9.0.2\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/npm\": \"^9.0.1\",\n \"@semantic-release/release-notes-generator\": \"^10.0.3\",\n \"@storybook/nextjs\": \"^8.0.6\",\n \"@storybook/react\": \"^8.0.6\",\n \"@swc/core\": \"^1.4.12\",\n \"@tscircuit/builder\": \"^1.11.4\",\n \"@tscircuit/core\": \"^0.0.41\",\n \"@tscircuit/eagle-xml-converter\": \"^0.0.6\",\n \"@tscircuit/props\": \"^0.0.46\",\n \"@tscircuit/react-fiber\": \"^1.1.25\",\n \"@tscircuit/soup\": \"^0.0.61\",\n \"@tscircuit/soup-util\": \"^0.0.13\",\n \"@types/color\": \"^3.0.6\",\n \"@types/node\": \"18.7.23\",\n \"@types/react\": \"^18.3.3\",\n \"next\": \"^14.1.4\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"react-use\": \"^17.4.0\",\n \"storybook\": \"^8.0.6\",\n \"tsup\": \"^8.0.2\",\n \"type-fest\": \"^3.0.0\",\n \"typescript\": \"^5.4.4\",\n \"use-mouse-matrix-transform\": \"^1.1.13\",\n \"zod\": \"^3.23.5\"\n },\n \"peerDependencies\": {\n \"@tscircuit/builder\": \"*\",\n \"@tscircuit/react-fiber\": \"*\",\n \"react\": \"*\"\n },\n \"dependencies\": {\n \"@emotion/css\": \"^11.11.2\",\n \"circuit-json-to-connectivity-map\": \"^0.0.8\",\n \"color\": \"^4.2.3\",\n \"react-supergrid\": \"^1.0.10\",\n \"react-toastify\": \"^10.0.5\",\n \"transformation-matrix\": \"^2.13.0\",\n \"zustand\": \"^4.5.2\"\n }\n}\n","import { css } from \"@emotion/css\"\nimport type { AnySoupElement, PCBPort, PCBTraceError } from \"@tscircuit/soup\"\nimport { useRef } from \"react\"\nimport { type Matrix, applyToPoint, identity } from \"transformation-matrix\"\n\ninterface Props {\n transform?: Matrix\n elements?: AnySoupElement[]\n children: any\n}\n\nconst ErrorSVG = ({\n screenPort1,\n screenPort2,\n errorCenter,\n canLineBeDrawn,\n}) => (\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width=\"100%\"\n height=\"100%\"\n >\n {canLineBeDrawn && (\n <>\n <line\n x1={screenPort1.x}\n y1={screenPort1.y}\n x2={errorCenter.x}\n y2={errorCenter.y}\n strokeWidth={1.5}\n strokeDasharray=\"2,2\"\n stroke=\"red\"\n />\n <line\n x1={errorCenter.x}\n y1={errorCenter.y}\n x2={screenPort2.x}\n y2={screenPort2.y}\n strokeWidth={1.5}\n strokeDasharray=\"2,2\"\n stroke=\"red\"\n />\n <rect\n x={errorCenter.x - 5}\n y={errorCenter.y - 5}\n width={10}\n height={10}\n transform={`rotate(45 ${errorCenter.x} ${errorCenter.y})`}\n fill=\"red\"\n />\n </>\n )}\n </svg>\n)\n\nexport const ErrorOverlay = ({ children, transform, elements }: Props) => {\n if (!transform) transform = identity()\n const containerRef = useRef<HTMLDivElement | null>(null)\n\n return (\n <div style={{ position: \"relative\" }} ref={containerRef}>\n {children}\n {elements\n ?.filter((el): el is PCBTraceError => el.type === \"pcb_error\")\n .map((el: PCBTraceError) => {\n const { pcb_port_ids } = el\n\n const port1 = elements.find(\n (el): el is PCBPort =>\n el.type === \"pcb_port\" && el.pcb_port_id === pcb_port_ids?.[0],\n )\n const port2 = elements.find(\n (el): el is PCBPort =>\n el.type === \"pcb_port\" && el.pcb_port_id === pcb_port_ids?.[1],\n )\n\n if (!port1 || !port2) return null\n\n const screenPort1 = applyToPoint(transform, {\n x: port1.x,\n y: port1.y,\n })\n const screenPort2 = applyToPoint(transform, {\n x: port2.x,\n y: port2.y,\n })\n\n const canLineBeDrawn = !(\n isNaN(screenPort1.x) ||\n isNaN(screenPort1.y) ||\n isNaN(screenPort2.x) ||\n isNaN(screenPort2.y)\n )\n\n const errorCenter = {\n x: (screenPort1.x + screenPort2.x) / 2,\n y: (screenPort1.y + screenPort2.y) / 2,\n }\n\n if (isNaN(errorCenter.x) || isNaN(errorCenter.y)) {\n return null\n }\n\n return (\n <>\n <ErrorSVG\n screenPort1={screenPort1}\n screenPort2={screenPort2}\n errorCenter={errorCenter}\n canLineBeDrawn={canLineBeDrawn}\n />\n <div\n className={css`\n position: absolute;\n z-index: 100;\n left: ${errorCenter.x}px;\n top: ${errorCenter.y}px;\n color: red;\n text-align: center;\n font-family: sans-serif;\n font-size: 12px;\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: pointer;\n transform: translate(-50%, -100%);\n\n & .error-message {\n opacity: 0;\n pointer-events: none;\n\n width: 200px;\n transition: opacity 0.2s;\n margin-bottom: 10px;\n }\n\n &:hover .error-message {\n opacity: 1;\n display: flex;\n }\n `}\n >\n <div className=\"error-message\">{el.message}</div>\n <div\n className={css`\n width: 10px;\n height: 10px;\n transform: translate(0, 5px) rotate(45deg);\n background-color: red;\n `}\n />\n </div>\n </>\n )\n })}\n </div>\n )\n}\n","import type { AnySoupElement, PCBComponent } from \"@tscircuit/soup\"\nimport { useGlobalStore } from \"global-store\"\nimport { EditEvent } from \"lib/edit-events\"\nimport { useEffect, useRef, useState } from \"react\"\nimport { Matrix, applyToPoint, identity, inverse } from \"transformation-matrix\"\n\ninterface Props {\n transform?: Matrix\n children: any\n soup: AnySoupElement[]\n disabled?: boolean\n cancelPanDrag: Function\n onCreateEditEvent: (event: EditEvent) => void\n onModifyEditEvent: (event: Partial<EditEvent>) => void\n}\n\nconst isInsideOf = (\n pcb_component: PCBComponent,\n point: { x: number; y: number },\n padding: number = 0,\n) => {\n const halfWidth = pcb_component.width / 2\n const halfHeight = pcb_component.height / 2\n\n const left = pcb_component.center.x - halfWidth - padding\n const right = pcb_component.center.x + halfWidth + padding\n const top = pcb_component.center.y - halfHeight - padding\n const bottom = pcb_component.center.y + halfHeight + padding\n\n return point.x > left && point.x < right && point.y > top && point.y < bottom\n}\n\nexport const EditPlacementOverlay = ({\n children,\n disabled: disabledProp,\n transform,\n soup,\n cancelPanDrag,\n onCreateEditEvent,\n onModifyEditEvent,\n}: Props) => {\n if (!transform) transform = identity()\n const containerRef = useRef<HTMLDivElement | null>(null)\n const [activePcbComponentId, setActivePcbComponent] = useState<null | string>(\n null,\n )\n const [dragState, setDragState] = useState<{\n dragStart: { x: number; y: number }\n originalCenter: { x: number; y: number }\n dragEnd: { x: number; y: number }\n edit_event_id: string\n } | null>(null)\n const isPcbComponentActive = activePcbComponentId !== null\n const in_edit_mode = useGlobalStore((s) => s.in_edit_mode)\n const in_move_footprint_mode = useGlobalStore((s) => s.in_move_footprint_mode)\n const setIsMovingComponent = useGlobalStore((s) => s.setIsMovingComponent)\n\n const disabled = disabledProp || !in_move_footprint_mode\n\n return (\n <div\n ref={containerRef}\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n }}\n onMouseDown={(e) => {\n if (disabled) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n\n let foundActiveComponent = false\n for (const e of soup) {\n if (\n e.type === \"pcb_component\" &&\n isInsideOf(e, rwMousePoint, 10 / transform.a)\n ) {\n cancelPanDrag()\n setActivePcbComponent(e.pcb_component_id)\n foundActiveComponent = true\n const edit_event_id = Math.random().toString()\n setDragState({\n dragStart: rwMousePoint,\n originalCenter: e.center,\n dragEnd: rwMousePoint,\n edit_event_id,\n })\n\n onCreateEditEvent({\n edit_event_id,\n pcb_edit_event_type: \"edit_component_location\",\n pcb_component_id: e.pcb_component_id,\n original_center: e.center,\n new_center: e.center,\n in_progress: true,\n created_at: Date.now(),\n })\n\n setIsMovingComponent(true)\n break\n }\n }\n if (!foundActiveComponent) {\n setActivePcbComponent(null)\n }\n\n if (foundActiveComponent) {\n e.preventDefault()\n return false\n }\n }}\n onMouseMove={(e) => {\n if (!activePcbComponentId || !dragState) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n setDragState({\n ...dragState,\n dragEnd: rwMousePoint,\n })\n onModifyEditEvent({\n edit_event_id: dragState.edit_event_id,\n new_center: {\n x:\n dragState.originalCenter.x +\n rwMousePoint.x -\n dragState.dragStart.x,\n y:\n dragState.originalCenter.y +\n rwMousePoint.y -\n dragState.dragStart.y,\n },\n })\n }}\n onMouseUp={(e) => {\n if (!activePcbComponentId) return\n setActivePcbComponent(null)\n setIsMovingComponent(false)\n if (dragState) {\n onModifyEditEvent({\n edit_event_id: dragState.edit_event_id,\n in_progress: false,\n })\n setDragState(null)\n }\n }}\n >\n {children}\n {!disabled &&\n soup\n .filter((e): e is PCBComponent => e.type === \"pcb_component\")\n .map((e) => {\n if (!e?.center) return null\n const projectedCenter = applyToPoint(transform, e.center)\n\n return (\n <div\n key={e.pcb_component_id}\n style={{\n position: \"absolute\",\n pointerEvents: \"none\",\n // b/c of transform, this is actually center not left/top\n left: projectedCenter.x,\n top: projectedCenter.y,\n width: e.width * transform.a + 20,\n height: e.height * transform.a + 20,\n transform: \"translate(-50%, -50%)\",\n background:\n isPcbComponentActive &&\n activePcbComponentId === e.pcb_component_id\n ? \"rgba(255, 0, 0, 0.2)\"\n : \"\",\n }}\n />\n )\n })}\n </div>\n )\n}\n","import type {\n AnySoupElement,\n PCBSMTPad,\n PcbTraceHint,\n PCBPlatedHole,\n} from \"@tscircuit/soup\"\nimport { su } from \"@tscircuit/soup-util\"\nimport { useGlobalStore } from \"global-store\"\nimport { type EditTraceHintEvent } from \"lib/edit-events\"\nimport { Fragment, useEffect, useRef, useState } from \"react\"\nimport {\n type Matrix,\n applyToPoint,\n identity,\n inverse,\n} from \"transformation-matrix\"\nimport { HotkeyActionMenu } from \"./HotkeyActionMenu\"\nimport { useToast } from \"lib/toast\"\n\ninterface Props {\n transform?: Matrix\n children: any\n soup: AnySoupElement[]\n disabled?: boolean\n cancelPanDrag: Function\n onCreateEditEvent: (event: EditTraceHintEvent) => void\n onModifyEditEvent: (event: Partial<EditTraceHintEvent>) => void\n}\n\ninterface Point {\n x: number\n y: number\n trace_width?: number\n}\n\nconst isInsideOfSmtpad = (\n elm: PCBSMTPad,\n point: { x: number; y: number },\n padding = 0,\n) => {\n if (elm.shape === \"circle\") {\n // Not implemented\n return false\n }\n const halfWidth = elm.width / 2\n const halfHeight = elm.height / 2\n\n const left = elm.x - halfWidth - padding\n const right = elm.x + halfWidth + padding\n const top = elm.y - halfHeight - padding\n const bottom = elm.y + halfHeight + padding\n\n return point.x > left && point.x < right && point.y > top && point.y < bottom\n}\n\nconst isInsideOfPlatedHole = (\n hole: PCBPlatedHole,\n point: { x: number; y: number },\n padding = 0,\n) => {\n if (hole.shape === \"circle\") {\n const distance = Math.sqrt(\n Math.pow(point.x - hole.x, 2) + Math.pow(point.y - hole.y, 2),\n )\n return distance <= hole.outer_diameter / 2 + padding\n } else {\n const halfWidth = hole.hole_width / 2\n const halfHeight = hole.hole_height / 2\n\n const left = hole.x - halfWidth - padding\n const right = hole.x + halfWidth + padding\n const top = hole.y - halfHeight - padding\n const bottom = hole.y + halfHeight + padding\n\n return (\n point.x > left && point.x < right && point.y > top && point.y < bottom\n )\n }\n}\n\n/**\n * The trace hit overlay allows you to click a pad, after\n * clicking a pad you'll start dragging out a trace.\n *\n * Each time you click, you'll add to the trace hint path.\n *\n * If you click inside any existing hint, you'll stop adding\n * to the trace hint path.\n *\n * If you select an existing hint, you'll start dragging the\n * route hint. Mouse up stops dragging.\n *\n * If you right click on a hint, you'll delete it.\n *\n * If you right click when creating a trace hint, it will\n * place a hint you'll exit adding the trace hint.\n *\n */\nexport const EditTraceHintOverlay = ({\n children,\n disabled: disabledProp,\n transform,\n soup,\n cancelPanDrag,\n onCreateEditEvent,\n onModifyEditEvent,\n}: Props) => {\n if (!transform) transform = identity()\n const containerRef = useRef<HTMLDivElement | null>(null)\n const containerBounds = containerRef.current?.getBoundingClientRect()\n const [selectedElement, setSelectedElement] = useState<\n null | PCBSMTPad | PCBPlatedHole\n >(null)\n const toast = useToast()\n const [dragState, setDragState] = useState<{\n dragStart: { x: number; y: number }\n originalCenter: { x: number; y: number }\n dragEnd: { x: number; y: number }\n editEvent: EditTraceHintEvent\n shouldDrawRouteHint?: boolean\n } | null>(null)\n const [shouldCreateAsVia, setShouldCreateAsVia] = useState(false)\n const isElementSelected = selectedElement !== null\n const in_edit_trace_mode = useGlobalStore((s) => s.in_draw_trace_mode)\n\n const disabled = disabledProp || !in_edit_trace_mode\n\n let ogCenterScreen, dragEndScreen\n if (dragState?.originalCenter && dragState?.dragEnd) {\n ogCenterScreen = applyToPoint(transform, dragState?.originalCenter!)\n dragEndScreen = applyToPoint(transform, dragState?.dragEnd!)\n }\n\n useEffect(() => {\n if (!isElementSelected) return\n\n function keyDown(e: KeyboardEvent) {\n if (e.key === \"Escape\") {\n setSelectedElement(null)\n setDragState(null)\n }\n }\n\n window.addEventListener(\"keydown\", keyDown)\n return () => window.removeEventListener(\"keydown\", keyDown)\n }, [isElementSelected])\n\n return (\n <div\n ref={containerRef}\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n }}\n onMouseDown={(e) => {\n if (disabled) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n\n if (!isElementSelected) {\n for (const e of soup) {\n if (\n (e.type === \"pcb_smtpad\" &&\n isInsideOfSmtpad(e, rwMousePoint, 10 / transform.a)) ||\n (e.type === \"pcb_plated_hole\" &&\n isInsideOfPlatedHole(e, rwMousePoint, 10 / transform.a))\n ) {\n if (!e.pcb_port_id) {\n toast.error(`pcb_port_id is null on the selected \"${e.type}\"`)\n return\n }\n setSelectedElement(e)\n setShouldCreateAsVia(false)\n setDragState({\n dragStart: rwMousePoint,\n originalCenter: { x: e.x, y: e.y },\n dragEnd: rwMousePoint,\n editEvent: {\n pcb_edit_event_type: \"edit_trace_hint\",\n pcb_port_id: e.pcb_port_id!,\n pcb_trace_hint_id: Math.random().toString(),\n route: [],\n created_at: Date.now(),\n edit_event_id: Math.random().toString(),\n in_progress: true,\n },\n shouldDrawRouteHint: false,\n })\n\n cancelPanDrag()\n break\n }\n }\n } else {\n setDragState({\n ...(dragState as any),\n dragStart: rwMousePoint,\n shouldDrawRouteHint: true,\n })\n }\n }}\n onMouseMove={(e) => {\n if (!isElementSelected || !dragState) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n setDragState({\n ...dragState,\n dragEnd: rwMousePoint,\n })\n }}\n onMouseUp={(e) => {\n if (!isElementSelected) return\n if (!dragState?.shouldDrawRouteHint) return\n\n // Compute distance that has been dragged\n const { dragStart, dragEnd } = dragState\n const rwDist = Math.sqrt(\n (dragEnd.x - dragStart.x) ** 2 + (dragEnd.y - dragStart.y) ** 2,\n )\n const screenDist = rwDist * transform.a\n\n // If the user dragged, don't create a point\n if (screenDist > 20) return\n\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n\n if (dragState) {\n cancelPanDrag()\n const lastPointScreen = applyToPoint(\n transform,\n dragState.editEvent.route.slice(-1)[0] ?? dragState.originalCenter,\n )\n const distanceFromLastPoint = Math.sqrt(\n (x - lastPointScreen.x) ** 2 + (y - lastPointScreen.y) ** 2,\n )\n if (distanceFromLastPoint < 20) {\n // Close the trace hint\n onCreateEditEvent({\n ...dragState.editEvent,\n in_progress: false,\n })\n setDragState(null)\n setSelectedElement(null)\n return\n }\n // Edit existing edit event by adding a new point at the rwMousePoint\n setDragState({\n ...dragState,\n editEvent: {\n ...dragState.editEvent,\n route: [\n ...dragState.editEvent.route,\n { ...rwMousePoint, via: shouldCreateAsVia },\n ],\n },\n })\n }\n }}\n >\n {children}\n {in_edit_trace_mode &&\n dragState?.editEvent &&\n ogCenterScreen &&\n dragEndScreen && (\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width={containerBounds?.width}\n height={containerBounds?.height}\n >\n <path\n stroke=\"red\"\n d={`M ${ogCenterScreen.x} ${\n ogCenterScreen.y\n } ${dragState?.editEvent.route\n .map((p) => applyToPoint(transform!, p))\n .map((p) => `L ${p.x} ${p.y}`)\n .join(\" \")} L ${dragEndScreen.x} ${dragEndScreen.y}`}\n />\n {dragState?.editEvent.route.map((r, i) => {\n const rScreen = applyToPoint(transform!, r)\n return (\n <Fragment key={`r-${i}`}>\n {r.via && (\n <circle cx={rScreen.x} cy={rScreen.y} r={16} stroke=\"red\" />\n )}\n <circle cx={rScreen.x} cy={rScreen.y} r={8} stroke=\"red\" />\n </Fragment>\n )\n })}\n {shouldCreateAsVia && (\n <circle\n key=\"via-outer-circle\"\n cx={dragEndScreen.x}\n cy={dragEndScreen.y}\n r={16}\n stroke=\"red\"\n />\n )}\n <circle\n cx={dragEndScreen.x}\n cy={dragEndScreen.y}\n r={8}\n stroke=\"red\"\n />\n </svg>\n )}\n {!disabled && (\n <svg\n key={\"pcb-trace-hints\"}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width={containerBounds?.width}\n height={containerBounds?.height}\n >\n {soup\n .filter((e): e is PcbTraceHint => e.type === \"pcb_trace_hint\")\n .map((e) => {\n const { route } = e\n const pcb_port = su(soup).pcb_port.get(e.pcb_port_id)!\n const pcb_port_screen = applyToPoint(transform!, pcb_port)\n return (\n <Fragment key={e.pcb_trace_hint_id}>\n <rect\n key={`rect-${e.pcb_port_id}`}\n x={pcb_port_screen.x - 10}\n y={pcb_port_screen.y - 10}\n width={20}\n height={20}\n stroke=\"red\"\n />\n <path\n key={`path-${e.pcb_port_id}`}\n stroke=\"red\"\n d={`M ${pcb_port_screen.x} ${pcb_port_screen.y} ${route\n .map((r) => applyToPoint(transform!, r!))\n .map((r) => `L ${r.x} ${r.y}`)\n .join(\" \")}`}\n />\n {route\n .map((r) => ({ ...r, ...applyToPoint(transform, r!) }))\n .map((r, i) => (\n <Fragment key={i}>\n <circle cx={r.x} cy={r.y} r={8} stroke=\"red\" />\n {r.via && (\n <circle\n cx={r.x}\n cy={r.y}\n r={16}\n stroke=\"red\"\n fill=\"transparent\"\n />\n )}\n </Fragment>\n ))}\n </Fragment>\n )\n })}\n </svg>\n )}\n <div\n style={{\n position: \"absolute\",\n right: 0,\n bottom: 0,\n }}\n >\n {isElementSelected && (\n <HotkeyActionMenu\n hotkeys={[\n {\n key: \"v\",\n name: \"Toggle Via\",\n onUse: () => {\n setShouldCreateAsVia(!shouldCreateAsVia)\n },\n },\n // {\n // key: \"del\",\n // name: \"Delete Node\",\n // onUse: () => {},\n // },\n // {\n // key: \"r\",\n // name: \"Delete Route\",\n // onUse: () => {},\n // },\n ]}\n />\n )}\n </div>\n </div>\n )\n}\n\nfunction getExpandedStroke(\n strokeInput: (Point | [number, number] | number[])[],\n defaultWidth: number,\n): Point[] {\n if (strokeInput.length < 2) {\n throw new Error(\"Stroke must have at least two points\")\n }\n\n const stroke: Point[] = strokeInput.map((point) => {\n if (Array.isArray(point)) {\n return { x: point[0], y: point[1] }\n }\n return point as Point\n })\n\n const leftSide: Point[] = []\n const rightSide: Point[] = []\n\n function getNormal(p1: Point, p2: Point): Point {\n const dx = p2.x - p1.x\n const dy = p2.y - p1.y\n const length = Math.sqrt(dx * dx + dy * dy)\n return { x: -dy / length, y: dx / length }\n }\n\n function addPoint(\n point: Point,\n normal: Point,\n factor: number,\n width: number,\n ) {\n const halfWidth = width / 2\n const newPoint = {\n x: point.x + normal.x * halfWidth * factor,\n y: point.y + normal.y * halfWidth * factor,\n }\n if (factor > 0) {\n leftSide.push(newPoint)\n } else {\n rightSide.unshift(newPoint)\n }\n }\n\n // Handle the first point\n const firstNormal = getNormal(stroke[0]!, stroke[1]!)\n const firstWidth = stroke[0]!.trace_width ?? defaultWidth\n addPoint(stroke[0]!, firstNormal, 1, firstWidth)\n addPoint(stroke[0]!, firstNormal, -1, firstWidth)\n\n // Handle middle points\n for (let i = 1; i < stroke.length - 1; i++) {\n const prev = stroke[i - 1]!\n const current = stroke[i]!\n const next = stroke[i + 1]!\n\n const normalPrev = getNormal(prev, current)\n const normalNext = getNormal(current, next)\n\n // Calculate miter line\n const miterX = normalPrev.x + normalNext.x\n const miterY = normalPrev.y + normalNext.y\n const miterLength = Math.sqrt(miterX * miterX + miterY * miterY)\n\n const currentWidth = current.trace_width ?? defaultWidth\n\n // Check if miter is too long (sharp corner)\n const miterLimit = 2 // Adjust this value to control when to bevel\n if (miterLength / 2 > miterLimit * (currentWidth / 2)) {\n // Use bevel join\n addPoint(current, normalPrev, 1, currentWidth)\n addPoint(current, normalNext, 1, currentWidth)\n addPoint(current, normalPrev, -1, currentWidth)\n addPoint(current, normalNext, -1, currentWidth)\n } else {\n // Use miter join\n const scale = 1 / miterLength\n addPoint(\n current,\n { x: miterX * scale, y: miterY * scale },\n 1,\n currentWidth,\n )\n addPoint(\n current,\n { x: miterX * scale, y: miterY * scale },\n -1,\n currentWidth,\n )\n }\n }\n\n // Handle the last point\n const lastNormal = getNormal(\n stroke[stroke.length - 2]!,\n stroke[stroke.length - 1]!,\n )\n const lastWidth = stroke[stroke.length - 1]!.trace_width ?? defaultWidth\n addPoint(stroke[stroke.length - 1]!, lastNormal, 1, lastWidth)\n addPoint(stroke[stroke.length - 1]!, lastNormal, -1, lastWidth)\n\n // Combine left and right sides to form a closed polygon\n return [...leftSide, ...rightSide]\n}\n","import { css } from \"@emotion/css\"\nimport { useEffect } from \"react\"\n\nexport const HotkeyActionMenu = ({\n hotkeys,\n}: {\n hotkeys: Array<{\n key: string\n name: string\n onUse: Function\n }>\n}) => {\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n hotkeys.forEach((hotkey) => {\n if (event.key === hotkey.key) {\n hotkey.onUse()\n }\n })\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [hotkeys])\n\n return (\n <div\n className={css`\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n font-size: 12px;\n margin: 8px;\n `}\n >\n {hotkeys.map((hotkey) => {\n return (\n <div\n key={hotkey.name}\n className={css`\n display: flex;\n align-items: center;\n margin: 2px;\n\n & .key {\n padding: 1px;\n margin: 2px;\n color: rgba(255, 255, 255, 0.8);\n font-size: 9px;\n border-radius: 3px;\n text-align: center;\n width: 20px;\n background-color: #444;\n }\n\n & .name {\n margin-left: 4px;\n color: rgba(255, 255, 255, 0.8);\n }\n `}\n >\n <div className=\"key\">{hotkey.key}</div>{\" \"}\n <div className=\"name\">{hotkey.name}</div>\n </div>\n )\n })}\n </div>\n )\n}\n","import { useGlobalStore } from \"global-store\"\nimport { useEffect } from \"react\"\nimport {\n toast as ogToast,\n ToastContainer as OgToastContainer,\n} from \"react-toastify\"\nimport { injectStyle } from \"react-toastify/dist/inject-style\"\n\nexport const useToast = () => {\n const pcb_viewer_id = useGlobalStore((s) => s.pcb_viewer_id)\n const toast = (message: string, opts?: Parameters<typeof ogToast>[1]) =>\n ogToast(message, {\n containerId: pcb_viewer_id,\n ...opts,\n })\n\n toast.error = (message: string, opts?: Parameters<typeof ogToast.error>[1]) =>\n ogToast.error(message, {\n containerId: pcb_viewer_id,\n ...opts,\n })\n\n // TODO add container id to this\n toast.promise = ogToast.promise\n\n return toast as typeof ogToast\n}\n\nexport const ToastContainer = () => {\n useEffect(() => {\n injectStyle()\n }, [])\n const pcb_viewer_id = useGlobalStore((s) => s.pcb_viewer_id)\n return <OgToastContainer position=\"top-center\" containerId={pcb_viewer_id} />\n}\n","import type React from \"react\"\nimport { type Matrix, applyToPoint, identity } from \"transformation-matrix\"\nimport type { AnySoupElement, PCBPort } from \"@tscircuit/soup\"\nimport { su } from \"@tscircuit/soup-util\"\nimport { useGlobalStore } from \"global-store\"\n\ninterface Props {\n transform?: Matrix\n soup?: AnySoupElement[]\n children: any\n}\ntype Point = { x: number; y: number }\n\nexport const RatsNestOverlay = ({ transform, soup, children }: Props) => {\n const isShowingRatsNest = useGlobalStore((s) => s.is_showing_rats_nest)\n if (!soup || !isShowingRatsNest) return children\n if (!transform) transform = identity()\n const sourceTraces = su(soup).source_trace.list()\n\n const groups: PCBPort[][] = []\n\n sourceTraces.forEach((sourceTrace) => {\n if (sourceTrace.connected_source_port_ids) {\n const group: PCBPort[] = []\n sourceTrace.connected_source_port_ids.forEach(\n (source_port_id: string) => {\n const pcbPort = su(soup).pcb_port.getWhere({ source_port_id })\n if (pcbPort) group.push(pcbPort)\n },\n )\n groups.push(group)\n }\n })\n\n return (\n <div style={{ position: \"relative\" }}>\n {children}\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n opacity: 0.5,\n zIndex: 100,\n }}\n >\n {groups.map((group, index) => {\n // Connect all ports in group with a line, so...\n // 2 ports = 1 line\n // 3 ports = 3 lines\n // 4 ports = 6 lines\n\n const points: Array<Point> = group.map((port) =>\n applyToPoint(transform, { x: port.x, y: port.y }),\n )\n\n const lines: Array<[Point, Point]> = []\n for (let i = 0; i < points.length; i++) {\n for (let j = i + 1; j < points.length; j++) {\n lines.push([points[i], points[j]])\n }\n }\n\n return lines.map(([start, end], index) => {\n return (\n <line\n key={index}\n x1={start.x}\n y1={start.y}\n x2={end.x}\n y2={end.y}\n stroke=\"white\"\n strokeWidth=\"1\"\n />\n )\n })\n })}\n </svg>\n </div>\n )\n}\n","import { Primitive } from \"lib/types\"\n\nexport function addInteractionMetadataToPrimitives({\n primitivesWithoutInteractionMetadata,\n drawingObjectIdsWithMouseOver,\n primitiveIdsInMousedOverNet,\n}: {\n primitivesWithoutInteractionMetadata: Primitive[]\n drawingObjectIdsWithMouseOver: Set<string>\n primitiveIdsInMousedOverNet: string[]\n}): Primitive[] {\n const newPrimitives = []\n for (const primitive of primitivesWithoutInteractionMetadata) {\n const newPrimitive = { ...primitive }\n if (primitive?.layer === \"drill\") {\n newPrimitive.is_in_highlighted_net = false\n newPrimitive.is_mouse_over = false\n } else if (\n drawingObjectIdsWithMouseOver.has(primitive._pcb_drawing_object_id)\n ) {\n newPrimitive.is_mouse_over = true\n } else if (\n primitive._element &&\n ((\"pcb_trace_id\" in primitive._element &&\n primitiveIdsInMousedOverNet.includes(\n primitive._element.pcb_trace_id,\n )) ||\n (\"pcb_port_id\" in primitive._element &&\n primitiveIdsInMousedOverNet.includes(\n primitive._element.pcb_port_id!,\n )))\n ) {\n newPrimitive.is_in_highlighted_net = true\n } else {\n newPrimitive.is_in_highlighted_net = false\n newPrimitive.is_mouse_over = false\n }\n newPrimitives.push(newPrimitive)\n }\n return newPrimitives\n}\n","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n","import { useEffect, useLayoutEffect } from 'react';\nimport { isBrowser } from './misc/util';\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n","import { useMemo, useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport { isBrowser, noop } from './misc/util';\nvar defaultState = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\nfunction useMeasure() {\n var _a = useState(null), element = _a[0], ref = _a[1];\n var _b = useState(defaultState), rect = _b[0], setRect = _b[1];\n var observer = useMemo(function () {\n return new window.ResizeObserver(function (entries) {\n if (entries[0]) {\n var _a = entries[0].contentRect, x = _a.x, y = _a.y, width = _a.width, height = _a.height, top_1 = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n setRect({ x: x, y: y, width: width, height: height, top: top_1, left: left, bottom: bottom, right: right });\n }\n });\n }, []);\n useIsomorphicLayoutEffect(function () {\n if (!element)\n return;\n observer.observe(element);\n return function () {\n observer.disconnect();\n };\n }, [element]);\n return [ref, rect];\n}\nexport default isBrowser && typeof window.ResizeObserver !== 'undefined'\n ? useMeasure\n : (function () { return [noop, defaultState]; });\n","import { transformPCBElement, transformPCBElements } from \"@tscircuit/builder\"\nimport type { AnySoupElement } from \"@tscircuit/soup\"\nimport type { EditEvent } from \"./edit-events\"\nimport { translate } from \"transformation-matrix\"\nimport { applyTraceHintEditEvent } from \"./apply-edit-events/apply-edit-trace-hint-event\"\n\nexport const applyEditEvents = (\n soup: AnySoupElement[],\n edit_events: EditEvent[],\n): AnySoupElement[] => {\n soup = JSON.parse(JSON.stringify(soup))\n\n for (const edit_event of edit_events) {\n if (edit_event.pcb_edit_event_type === \"edit_component_location\") {\n const mat = translate(\n edit_event.new_center.x - edit_event.original_center.x,\n edit_event.new_center.y - edit_event.original_center.y,\n )\n // TODO Future work: recurse here in case there's a nested component\n soup = soup.map((e: any) =>\n e.pcb_component_id !== edit_event.pcb_component_id\n ? e\n : transformPCBElement(e, mat),\n )\n } else if (edit_event.pcb_edit_event_type === \"edit_trace_hint\") {\n soup = applyTraceHintEditEvent(soup, edit_event)\n }\n }\n\n return soup\n}\n","import { AnySoupElement } from \"@tscircuit/soup\"\nimport { EditTraceHintEvent } from \"lib/edit-events\"\nimport { su } from \"@tscircuit/soup-util\"\n\nexport const applyTraceHintEditEvent = (\n soup: AnySoupElement[],\n edit_event: EditTraceHintEvent,\n): AnySoupElement[] => {\n const existing_trace_hint = soup.find(\n (th) =>\n th.type === \"pcb_trace_hint\" &&\n th.pcb_trace_hint_id === edit_event.pcb_trace_hint_id,\n )\n\n if (existing_trace_hint) {\n soup = soup.map((e: any) =>\n e.pcb_trace_hint_id === edit_event.pcb_trace_hint_id\n ? {\n ...e,\n route: edit_event.route,\n }\n : e,\n )\n } else {\n // create the trace hint\n const pcb_port = su(soup).pcb_port.get(edit_event.pcb_port_id!)\n\n // console.log(\"edit_event\", edit_event, pcb_port)\n\n soup = soup\n // TODO until builder supports multiple trace hints, replace any\n // old trace hints on this same port\n .filter(\n (e) =>\n !(\n e.type === \"pcb_trace_hint\" &&\n e.pcb_port_id === edit_event.pcb_port_id\n ),\n )\n .concat([\n {\n type: \"pcb_trace_hint\",\n pcb_trace_hint_id: edit_event.pcb_trace_hint_id!,\n route: edit_event.route,\n pcb_port_id: edit_event.pcb_port_id!,\n pcb_component_id: pcb_port?.pcb_component_id!,\n },\n ])\n }\n\n return soup\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/pcb-viewer/pcb-viewer/dist/index.js","../node_modules/lodash._objecttypes/index.js","../node_modules/lodash.isobject/index.js","../node_modules/lodash._renative/index.js","../node_modules/lodash._shimkeys/index.js","../node_modules/lodash.keys/index.js","../node_modules/lodash.noop/index.js","../node_modules/lodash._basecreate/index.js","../node_modules/lodash._setbinddata/index.js","../node_modules/lodash._basebind/index.js","../node_modules/lodash._slice/index.js","../node_modules/lodash._basecreatewrapper/index.js","../node_modules/lodash.isfunction/index.js","../node_modules/lodash._createwrapper/index.js","../node_modules/lodash.bind/index.js","../node_modules/lodash.identity/index.js","../node_modules/lodash.support/index.js","../node_modules/lodash._basecreatecallback/index.js","../node_modules/lodash.forown/index.js","../node_modules/lodash.foreach/index.js","../node_modules/convert-units/lib/definitions/length.js","../node_modules/convert-units/lib/definitions/area.js","../node_modules/convert-units/lib/definitions/mass.js","../node_modules/convert-units/lib/definitions/volume.js","../node_modules/convert-units/lib/definitions/each.js","../node_modules/convert-units/lib/definitions/temperature.js","../node_modules/convert-units/lib/definitions/time.js","../node_modules/convert-units/lib/definitions/digital.js","../node_modules/convert-units/lib/definitions/partsPer.js","../node_modules/convert-units/lib/definitions/speed.js","../node_modules/convert-units/lib/definitions/pace.js","../node_modules/convert-units/lib/definitions/pressure.js","../node_modules/convert-units/lib/definitions/current.js","../node_modules/convert-units/lib/definitions/voltage.js","../node_modules/convert-units/lib/definitions/power.js","../node_modules/convert-units/lib/definitions/reactivePower.js","../node_modules/convert-units/lib/definitions/apparentPower.js","../node_modules/convert-units/lib/definitions/energy.js","../node_modules/convert-units/lib/definitions/reactiveEnergy.js","../node_modules/convert-units/lib/definitions/volumeFlowRate.js","../node_modules/convert-units/lib/definitions/illuminance.js","../node_modules/convert-units/lib/definitions/frequency.js","../node_modules/convert-units/lib/definitions/angle.js","../node_modules/convert-units/lib/index.js","../node_modules/parsel-js/dist/parsel.min.cjs","../node_modules/@tscircuit/soup-util/index.ts","../node_modules/@tscircuit/soup-util/lib/su.ts","../node_modules/@tscircuit/soup-util/lib/direction-to-vec.ts","../node_modules/@tscircuit/soup-util/lib/transform-soup-elements.ts","../node_modules/@tscircuit/soup-util/lib/apply-selector.ts","../node_modules/@tscircuit/soup-util/lib/convert-abbreviation-to-soup-element-type.ts","../node_modules/use-mouse-matrix-transform/src/index.ts","../src/index.tsx","../src/PCBViewer.tsx","../src/components/CanvasElementsRenderer.tsx","../src/components/CanvasPrimitiveRenderer.tsx","../src/lib/Drawer.ts","../src/lib/colors.ts","../src/lib/util/scale-only.ts","../src/assets/alphabet.ts","../src/lib/convert-text-to-lines.ts","../src/lib/draw-primitives.ts","../src/global-store.ts","../src/components/ContextProviders.tsx","../node_modules/circuit-json/src/utils/convert-si-unit-to-number.ts","../node_modules/zod/lib/index.mjs","../node_modules/nanoid/index.js","../node_modules/nanoid/url-alphabet/index.js","../node_modules/circuit-json/src/units/index.ts","../node_modules/circuit-json/src/common/point.ts","../node_modules/circuit-json/src/common/point3.ts","../node_modules/circuit-json/src/common/size.ts","../node_modules/circuit-json/src/common/getZodPrefixedIdWithDefault.ts","../node_modules/circuit-json/src/pcb/properties/supplier_name.ts","../node_modules/circuit-json/src/source/base/source_component_base.ts","../node_modules/circuit-json/src/source/source_simple_capacitor.ts","../node_modules/circuit-json/src/source/source_simple_resistor.ts","../node_modules/circuit-json/src/source/source_simple_diode.ts","../node_modules/circuit-json/src/source/source_simple_ground.ts","../node_modules/circuit-json/src/source/source_simple_bug.ts","../node_modules/circuit-json/src/source/source_simple_chip.ts","../node_modules/circuit-json/src/source/source_simple_inductor.ts","../node_modules/circuit-json/src/source/source_led.ts","../node_modules/circuit-json/src/source/source_simple_power_source.ts","../node_modules/circuit-json/src/source/any_source_component.ts","../node_modules/circuit-json/src/source/source_port.ts","../node_modules/circuit-json/src/source/source_trace.ts","../node_modules/circuit-json/src/source/source_group.ts","../node_modules/circuit-json/src/source/source_net.ts","../node_modules/circuit-json/src/schematic/schematic_box.ts","../node_modules/circuit-json/src/schematic/schematic_path.ts","../node_modules/circuit-json/src/schematic/schematic_component.ts","../node_modules/circuit-json/src/schematic/schematic_line.ts","../node_modules/circuit-json/src/schematic/schematic_trace.ts","../node_modules/circuit-json/src/schematic/schematic_text.ts","../node_modules/circuit-json/src/schematic/schematic_port.ts","../node_modules/circuit-json/src/schematic/schematic_net_label.ts","../node_modules/circuit-json/src/schematic/schematic_error.ts","../node_modules/circuit-json/src/pcb/properties/layer_ref.ts","../node_modules/circuit-json/src/pcb/properties/pcb_route_hints.ts","../node_modules/circuit-json/src/pcb/properties/route_hint_point.ts","../node_modules/circuit-json/src/utils/expect-types-match.ts","../node_modules/circuit-json/src/pcb/pcb_component.ts","../node_modules/circuit-json/src/pcb/pcb_hole.ts","../node_modules/circuit-json/src/pcb/pcb_plated_hole.ts","../node_modules/circuit-json/src/pcb/pcb_port.ts","../node_modules/circuit-json/src/pcb/pcb_smtpad.ts","../node_modules/circuit-json/src/pcb/pcb_text.ts","../node_modules/circuit-json/src/pcb/pcb_trace.ts","../node_modules/circuit-json/src/pcb/pcb_trace_error.ts","../node_modules/circuit-json/src/pcb/pcb_port_not_matched_error.ts","../node_modules/circuit-json/src/pcb/pcb_via.ts","../node_modules/circuit-json/src/pcb/pcb_board.ts","../node_modules/circuit-json/src/pcb/pcb_placement_error.ts","../node_modules/circuit-json/src/pcb/pcb_trace_hint.ts","../node_modules/circuit-json/src/pcb/pcb_silkscreen_line.ts","../node_modules/circuit-json/src/pcb/pcb_silkscreen_path.ts","../node_modules/circuit-json/src/pcb/pcb_silkscreen_text.ts","../node_modules/circuit-json/src/pcb/pcb_silkscreen_rect.ts","../node_modules/circuit-json/src/pcb/pcb_silkscreen_circle.ts","../node_modules/circuit-json/src/pcb/pcb_silkscreen_oval.ts","../node_modules/circuit-json/src/pcb/pcb_fabrication_note_text.ts","../node_modules/circuit-json/src/pcb/pcb_fabrication_note_path.ts","../node_modules/circuit-json/src/pcb/pcb_keepout.ts","../node_modules/circuit-json/src/cad/cad_component.ts","../node_modules/circuit-json/src/any_circuit_element.ts","../src/lib/convert-element-to-primitive.ts","../src/lib/util/expand-stroke.ts","../src/components/MouseElementTracker.tsx","../src/components/ElementOverlayBox.tsx","../src/lib/util/if-sets-match-exactly.ts","../src/components/DimensionOverlay.tsx","../src/components/ToolbarOverlay.tsx","../package.json","../src/components/ErrorOverlay.tsx","../src/components/EditPlacementOverlay.tsx","../src/components/EditTraceHintOverlay.tsx","../src/components/HotkeyActionMenu.tsx","../src/lib/toast.tsx","../src/components/RatsNestOverlay.tsx","../src/lib/util/addInteractionMetadataToPrimitives.ts","../node_modules/react-use/esm/misc/util.js","../node_modules/react-use/esm/useIsomorphicLayoutEffect.js","../node_modules/react-use/esm/useMeasure.js","../src/lib/apply-edit-events.ts","../src/lib/apply-edit-events/apply-edit-trace-hint-event.ts"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__commonJS","cb","mod","__require","exports","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","isNodeMode","__esModule","value","__toCommonJS","require_lodash","module","objectTypes","isObject","objectProto","toString","reNative","RegExp","String","replace","shimKeys","object","index","iterable","result","push","require_lodash2","require_lodash3","require_lodash4","nativeKeys","test","keys","noop","require_lodash6","nativeCreate","baseCreate","properties","global","descriptor","o","func","e","setBindData","require_lodash7","require_lodash8","arrayRef","baseBind","bindData","partialArgs","thisArg","bound","args","slice","apply","arguments","thisBinding","array","start","end","length","Array","require_lodash10","baseCreateWrapper","bitmask","partialRightArgs","arity","isBind","isBindKey","isCurry","isCurryBound","isFunction","require_lodash9","require_lodash11","require_lodash12","createWrapper","isPartial","isPartialRight","TypeError","__bindData__","creater","require_lodash13","bind","identity","reThis","support","funcDecomp","WinRTError","funcNames","Function","require_lodash14","require_lodash15","require_lodash16","reFuncName","fnToString","baseCreateCallback","argCount","source","a","b","collection","accumulator","require_lodash17","require_lodash5","forOwn","callback","ownIndex","ownProps","require_lodash18","forEach","require_length","metric","imperial","mm","singular","plural","to_anchor","cm","m","km","yd","ft","mi","_anchors","unit","ratio","require_area","mm2","cm2","m2","ha","km2","yd2","ft2","ac","mi2","require_mass","mcg","mg","g","kg","mt","oz","lb","t","require_volume","mm3","cm3","ml","cl","dl","l","kl","m3","km3","krm","tsk","msk","kkp","glas","kanna","tsp","Tbs","in3","cup","pnt","qt","gal","ft3","yd3","require_each","ea","dz","require_temperature","C","anchor_shift","K","F","R","transform","require_time","time","daysInYear","ns","mu","ms","s","min","h","d","week","month","year","require_digital","bits","bytes","Kb","Mb","Gb","Tb","B","KB","MB","GB","TB","require_partsPer","ppm","ppb","ppt","ppq","require_speed","knot","require_pace","require_pressure","Pa","kPa","MPa","hPa","bar","torr","psi","ksi","require_current","current","A","mA","kA","require_voltage","voltage","V","mV","kV","require_power","power","W","mW","kW","MW","GW","require_reactivePower","reactivePower","VAR","mVAR","kVAR","MVAR","GVAR","require_apparentPower","apparentPower","VA","mVA","kVA","MVA","GVA","require_energy","energy","Wh","mWh","kWh","MWh","GWh","J","kJ","require_reactiveEnergy","reactiveEnergy","VARh","mVARh","kVARh","MVARh","GVARh","require_volumeFlowRate","require_illuminance","require_frequency","frequency","mHz","Hz","kHz","MHz","GHz","THz","rpm","Math","PI","require_angle","angle","rad","deg","grad","arcmin","arcsec","require_lib","convert","each","require_lodash19","measures","area","mass","volume","temperature","digital","partsPer","speed","pace","pressure","volumeFlowRate","illuminance","Converter","numerator","denominator","val","destination","Error","origin","getUnit","throwUnsupportedUnitError","abbr","measure","system","toBest","options","assign","exclude","cutOffNumber","best","possibilities","possibility","describe","isIncluded","indexOf","found","systems","units","testAbbr","resp","err","list","testMeasure","concat","what","validUnits","join","require_parsel_min","attribute","id","class","comma","combinator","universal","type","Set","n","r","c","i","entries","lastIndex","exec","groups","content","u","splice","pos","has","trim","offset","repeat","substring","reverse","add","p","find","left","right","f","map","recursive","argument","subtree","max","RECURSIVE_PSEUDO_CLASSES","RECURSIVE_PSEUDO_CLASSES_ARGS","TOKENS","TRIM_TOKENS","flatten","gobbleParens","parse","specificity","specificityToNumber","stringify","isArray","tokenize","tokenizeBy","walk","require_dist","exports2","module2","__create2","__defProp2","__getOwnPropDesc2","__getOwnPropNames2","__getProtoOf2","__hasOwnProp2","__export2","__copyProps2","__toESM2","__toCommonJS2","soup_util_exports","applySelector","applySelectorAST","directionToVec","oppositeDirection","oppositeSide","rotateClockwise","rotateCounterClockwise","rotateDirection","su","su_default","transformPCBElement","transformPCBElements","transformSchematicElement","transformSchematicElements","vecToDirection","soup","Proxy","proxy_target","component_type","getUsing","using","join_key","join_type","joiner","getWhere","where","every","filter","select","selector","split","component_name","port_selector","source_component","source_port","source_component_id","port_hints","includes","source_port_id","unparsed","direction","x","y","num90DegreeClockwiseTurns","sideOrDir","import_transformation_matrix","require","elm","matrix","center","applyToPoint","facing_direction","atan2","position","x1","y1","x2","y2","elms","anchor_position","route","rp","tp","p1","p2","p1t","p2t","newPos","tsr","decomposeTSR","flipPadWidthHeight","round","rotation","transformedElms","shape","height","width","parsel","convertAbbrToType","filterByType","elements","ftype","selectorRaw","selectorAST","doesElmMatchClassName","className","matchElms","childrenOfMatchingElms","flatMap","matchElm","conditionsToMatch","part","condFn","JSON","require_dist2","src_exports","default","src_default","useMouseMatrixTransform","import_react","props","extRef","useRef","useState","lastDragCancelTime","setLastDragCancelTime","outerCanvasElm","canvasElm","initialTransform","internalTransform","setInternalTransform","waitCounter","setWaitCounter","useReducer","extChangeCounter","incExtChangeCounter","setTransform","useCallback","newTransform","onSetTransform","setTransformExt","cancelDrag","Date","now","useEffect","handleMouseDown","m0","getMousePos","md","preventDefault","handleMouseUp","m1","new_tf","compose","translate","init_tf","handleMouseMove","mlastrel","handleMouseWheel","scale","deltaY","handleMouseOut","boundingBox","getBoundingClientRect","clientX","clientY","top","bottom","timeout","setTimeout","clearTimeout","pageX","window","scrollX","pageY","scrollY","addEventListener","removeEventListener","applyTransformToPoint","obj","ref","CanvasElementsRenderer","PCBViewer","applyEditEvents","import_react_fiber","import_builder","import_react_supergrid","colors_default","background_bottom","background_top","board","copper","silkscreen_bottom","silkscreen_top","soldermask","solderpaste","anchor","aux_items","b_adhes","b_crtyd","b_fab","b_mask","b_paste","b_silks","background","cmts_user","in1","in10","in11","in12","in13","in14","in15","in16","in17","in18","in19","in2","in20","in21","in22","in23","in24","in25","in26","in27","in28","in29","in30","in4","in5","in6","in7","in8","in9","cursor","drc","drc_error","drc_exclusion","drc_warning","dwgs_user","eco1_user","eco2_user","edge_cuts","f_adhes","f_crtyd","f_fab","f_mask","f_paste","f_silks","footprint_text_back","footprint_text_front","footprint_text_invisible","grid","grid_axes","margin","microvia","no_connect","pad_back","pad_front","pad_plated_hole","pad_through_hole","plated_hole","ratsnest","select_overlay","through_via","user_1","user_2","user_3","user_4","user_5","user_6","user_7","user_8","user_9","via_blind_buried","via_hole","via_micro","via_through","worksheet","gerbview","axes","dcodes","layers","negative_objects","palette","schematic","brightened","bus","bus_junction","component_body","component_outline","erc_error","erc_warning","fields","hidden","junction","label_global","label_hier","label_local","net_name","note","override_item_colors","pin","pin_name","pin_number","reference","shadow","sheet","sheet_background","sheet_fields","sheet_filename","sheet_label","sheet_name","wire","scaleOnly","mat","abs","LAYER_NAME_TO_COLOR","red","black","green","other","inner1","inner2","inner3","inner4","inner5","inner6","inner7","inner8","drill","keepout","tkeepout","tplace","top_silkscreen","bottom_silkscreen","top_fabrication","bottom_fabrication","DEFAULT_DRAW_ORDER","Drawer","canvasLayerMap","foregroundLayer","ctxLayerMap","fromEntries","canvas","getContext","lastPoint","equip","clear","values","ctx","clearRect","aperture","fontSize","mode","size","color","layer","opacity","drawMeshPattern","spacing","getLayerCtx","spacing$","lineWidth","strokeStyle","drawLines","sin","cos","diag","sqrt","pow","beginPath","moveTo","lineTo","stroke","rect","w","mesh_fill","x1$","y1$","x2$","y2$","applyAperture","save","clip","restore","strokeRect","fillRect","circle","r$","x$","y$","arc","fill","oval","rx","ry","rx$","ry$","ellipse","closePath","pill","width$","height$","radius","polygon","points","console","warn","transformedPoints","point","debugText","text","font","fillText","orderAndFadeLayers","opaqueLayers","order","style","zIndex","lineCap","colorString","startsWith","toLowerCase","fillStyle","globalCompositeOperation","inverse","size$","lastPoint$","svgAlphabet","D","E","G","H","I","L","M","N","O","P","Q","S","T","U","X","Y","Z","_","lineAlphabet","letter","segs","seg","pr","parseFloat","LETTER_HEIGHT_TO_WIDTH_RATIO","LETTER_HEIGHT_TO_SPACE_RATIO","getTextWidth","convertTextToLines","strokeWidth","letterWidth","letterSpace","lines","letterIndex","letterLines","toUpperCase","pcb_drawing_type","import_color","getColor","primitive","is_mouse_over","is_in_highlighted_net","lighten","rgb","drawLine","drawer","line","zoomIndependent","squareCap","drawText","alignOffset","textWidth","textHeight","align","text_lines","drawRect","drawCircle","drawOval","rX","rY","drawPill","drawPolygon","drawPrimitive","drawPrimitives","primitives","sort","layerOrder","import_zustand","import_jsx_runtime","StoreContext","import_react2","createContext","ContextProviders","children","initialState","store","useMemo","createStore","jsx","Provider","createZustandStore","set","selected_layer","pcb_viewer_id","random","in_edit_mode","in_move_footprint_mode","in_draw_trace_mode","is_moving_component","is_drawing_trace","is_showing_rats_nest","selectLayer","setEditMode","setIsShowingRatsNest","is_showing","setIsMovingComponent","is_moving","setIsDrawingTrace","is_drawing","useGlobalStore","import_react3","useContext","useZustandStore","import_convert_units","util","assertEqual","assertIs","_arg","assertNever","_x","arrayToEnum","items","item","getValidEnumValues","validKeys","objectKeys","k","filtered","objectValues","arr","checker","isInteger","Number","isFinite","floor","joinValues","separator","jsonStringifyReplacer","objectUtil","mergeShapes","first","second","ZodParsedType","getParsedType","data","undefined","string","isNaN","nan","number","boolean","function","bigint","symbol","null","then","catch","promise","Map","date","unknown","ZodIssueCode","quotelessJson","json","ZodError","_ZodError","issues","addIssue","sub","addIssues","subs","actualProto","setPrototypeOf","__proto__","errors","format","_mapper","mapper","issue","message","fieldErrors","_errors","processError","error","code","unionErrors","returnTypeError","argumentsError","path","curr","el","terminal","isEmpty","formErrors","assert","errorMap","_ctx","invalid_type","received","expected","invalid_literal","unrecognized_keys","invalid_union","invalid_union_discriminator","invalid_enum_value","invalid_arguments","invalid_return_type","invalid_date","invalid_string","validation","endsWith","too_small","exact","inclusive","minimum","too_big","maximum","custom","invalid_intersection_types","not_multiple_of","multipleOf","not_finite","defaultError","overrideErrorMap","setErrorMap","getErrorMap","makeIssue","params","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","EMPTY_PATH","addIssueToContext","overrideMap","common","contextualErrorMap","schemaErrorMap","ParseStatus","_ParseStatus","dirty","abort","mergeArray","status","results","arrayValue","INVALID","mergeObjectAsync","pairs","syncPairs","pair","mergeObjectSync","finalObject","alwaysSet","freeze","DIRTY","OK","isAborted","isDirty","isValid","isAsync","Promise","__classPrivateFieldGet","receiver","state","kind","__classPrivateFieldSet","errorUtil","errToObj","_ZodEnum_cache","_ZodNativeEnum_cache","ParseInputLazyPath","parent","_cachedPath","_path","_key","handleResult","success","_error","processCreateParams","invalid_type_error","required_error","description","customMap","iss","_a","_b","ZodType","def","spa","safeParseAsync","_def","safeParse","parseAsync","refine","refinement","superRefine","optional","nullable","nullish","or","and","brand","pipe","readonly","isNullable","isOptional","_getType","input","_getOrReturnCtx","parsedType","_processInputParams","_parseSync","_parse","_parseAsync","resolve","async","maybeAsyncResult","check","getIssueProperties","_refinement","setError","refinementData","ZodEffects","schema","typeName","ZodFirstPartyTypeKind","effect","ZodOptional","ZodNullable","ZodArray","ZodPromise","option","ZodUnion","incoming","ZodIntersection","defaultValueFunc","ZodDefault","innerType","defaultValue","ZodBranded","catchValueFunc","ZodCatch","catchValue","This","constructor","ZodPipeline","ZodReadonly","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv6Regex","base64Regex","dateRegexSource","dateRegex","timeRegexSource","regex","precision","timeRegex","datetimeRegex","opts","local","isValidIP","ip","version","ZodString","_ZodString","coerce","checks","tooBig","tooSmall","URL","testResult","_regex","_addCheck","email","url","emoji","uuid","nanoid","cuid","cuid2","ulid","base64","datetime","duration","minLength","maxLength","len","nonempty","isDatetime","ch","isDate","isTime","isDuration","isEmail","isURL","isEmoji","isUUID","isNANOID","isCUID","isCUID2","isULID","isIP","isBase64","floatSafeRemainder","step","valDecCount","stepDecCount","decCount","valInt","parseInt","toFixed","stepInt","ZodNumber","_ZodNumber","gte","lte","setLimit","gt","lt","int","positive","negative","nonpositive","nonnegative","finite","safe","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","minValue","maxValue","isInt","ZodBigInt","_ZodBigInt","BigInt","ZodBoolean","Boolean","ZodDate","_ZodDate","getTime","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","_any","ZodUnknown","_unknown","ZodNever","never","ZodVoid","void","_ZodArray","exactLength","element","deepPartialify","ZodObject","newShape","fieldSchema","unwrap","ZodTuple","_ZodObject","_cached","nonstrict","passthrough","augment","extend","_getCached","shapeKeys","extraKeys","catchall","unknownKeys","keyValidator","strict","_c","_d","strip","augmentation","merge","merging","merged","setKey","pick","mask","omit","deepPartial","partial","required","newField","keyof","createZodEnum","strictCreate","lazycreate","handleResults","childCtx","types","getDiscriminator","ZodLazy","ZodLiteral","ZodEnum","ZodNativeEnum","enum","ZodDiscriminatedUnion","_ZodDiscriminatedUnion","discriminator","discriminatorValue","optionsMap","discriminatorValues","mergeValues","aType","bType","valid","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","_ZodTuple","rest","itemIndex","schemas","ZodRecord","_ZodRecord","keySchema","keyType","valueSchema","valueType","third","ZodMap","finalMap","ZodSet","_ZodSet","minSize","maxSize","finalizeSet","parsedSet","ZodFunction","_ZodFunction","validate","implement","makeArgsIssue","makeReturnsIssue","returns","fn","me","parsedArgs","parsedReturns","Reflect","parameters","returnType","validatedFunc","strictImplement","getter","lazySchema","_ZodEnum","expectedValues","enumValues","Values","Enum","extract","newDef","opt","WeakMap","nativeEnumValues","promisified","sourceType","checkCtx","arg","fatal","processed","executeRefinement","acc","inner","base","createWithPreprocess","preprocess","removeDefault","newCtx","removeCatch","ZodNaN","BRAND","Symbol","_ZodPipeline","handleAsync","inResult","in","out","_fatal","late","instanceOfType","cls","stringType","numberType","nanType","bigIntType","booleanType","dateType","symbolType","undefinedType","nullType","anyType","unknownType","neverType","voidType","arrayType","objectType","strictObjectType","unionType","discriminatedUnionType","intersectionType","tupleType","recordType","mapType","setType","functionType","lazyType","literalType","enumType","nativeEnumType","promiseType","effectsType","optionalType","nullableType","preprocessType","pipelineType","ostring","onumber","oboolean","NEVER","z","defaultErrorMap","ZodTransformer","Schema","ZodSchema","any","discriminatedUnion","intersection","lazy","literal","nativeEnum","pipeline","record","strictObject","transformer","tuple","union","import_node_crypto","urlAlphabet","POOL_SIZE_MULTIPLIER","pool","poolOffset","fillPool","Buffer","allocUnsafe","crypto","getRandomValues","si_prefix_multiplier","tera","giga","mega","kilo","deci","centi","milli","micro","µ","nano","pico","si_prefixes","target_conversion","getSiPrefixMultiplierFromUnit","v","prefix","parseAndConvertSiUnit","match","unit_reversed","convertUnits","target_unit","resistance","capacitance","inductance","distance","point3","getZodPrefixedIdWithDefault","supplier_name","source_component_base","manufacturer_part_number","supplier_part_numbers","source_simple_capacitor","source_simple_resistor","source_simple_diode","source_simple_ground","source_simple_bug","source_simple_chip","source_simple_inductor","source_led","source_simple_power_source","any_source_component","source_trace","source_trace_id","connected_source_port_ids","connected_source_net_ids","source_group","source_group_id","source_net","source_net_id","member_source_group_ids","is_power","is_ground","is_digital_signal","is_analog_signal","trace_width","schematic_box","schematic_component_id","schematic_path","fill_color","is_filled","schematic_pin_styles","left_margin","right_margin","top_margin","bottom_margin","schematic_component","pin_spacing","pin_styles","box_width","symbol_name","port_arrangement","left_size","right_size","top_size","bottom_size","left_side","pins","right_side","top_side","bottom_side","port_labels","schematic_line","schematic_trace","schematic_trace_id","edges","from_schematic_port_id","to_schematic_port_id","schematic_text","schematic_text_id","schematic_port","schematic_port_id","schematic_net_label","anchor_side","schematic_error","schematic_error_id","error_type","all_layers","layer_string","layer_ref","visible_layer","pcb_route_hint","via","via_to_layer","pcb_route_hints","route_hint_point","to_layer","expectTypesMatch","shouldBe","pcb_component","pcb_component_id","pcb_hole_circle_or_square","pcb_hole_id","hole_shape","hole_diameter","pcb_hole_circle_or_square_shape","pcb_hole_oval","hole_width","hole_height","pcb_hole_oval_shape","pcb_hole","pcb_plated_hole_circle","outer_diameter","pcb_port_id","pcb_plated_hole_id","pcb_plated_hole_oval","outer_width","outer_height","pcb_plated_hole","pcb_port","pcb_smtpad_circle","pcb_smtpad_id","pcb_smtpad_rect","pcb_smtpad","pcb_text","pcb_text_id","pcb_trace_route_point_wire","route_type","start_pcb_port_id","end_pcb_port_id","pcb_trace_route_point_via","from_layer","pcb_trace_route_point","pcb_trace","pcb_trace_id","route_thickness_mode","should_round_corners","pcb_trace_error","pcb_trace_error_id","pcb_component_ids","pcb_port_ids","pcb_port_not_matched_error","pcb_error_id","pcb_via","pcb_via_id","pcb_board","pcb_board_id","outline","pcb_placement_error","pcb_placement_error_id","pcb_trace_hint","pcb_trace_hint_id","pcb_silkscreen_line","pcb_silkscreen_line_id","stroke_width","pcb_silkscreen_path","pcb_silkscreen_path_id","pcb_silkscreen_text","pcb_silkscreen_text_id","font_size","anchor_alignment","pcb_silkscreen_rect","pcb_silkscreen_rect_id","pcb_silkscreen_circle","pcb_silkscreen_circle_id","pcb_silkscreen_oval","pcb_silkscreen_oval_id","radius_x","radius_y","pcb_fabrication_note_text","pcb_fabrication_note_text_id","pcb_fabrication_note_path","pcb_fabrication_note_path_id","pcb_keepout","pcb_keepout_id","cad_component","cad_component_id","footprinter_string","model_obj_url","model_stl_url","model_3mf_url","model_jscad","any_circuit_element","CanvasPrimitiveRenderer","canvasRefs","import_react4","selectedLayer","import_jsx_runtime2","jsxs","backgroundColor","SuperGrid","textColor","majorColor","minorColor","screenSpaceCellSize","stringifyCoord","toMMSI","pointerEvents","import_soup_util","getExpandedStroke","strokeInput","defaultWidth","leftSide","rightSide","getNormal","dx","dy","addPoint","normal","factor","halfWidth","newPoint","unshift","firstNormal","firstWidth","prev","next","normalPrev","normalNext","miterX","miterY","miterLength","currentWidth","miterLimit","lastNormal","lastWidth","globalPcbDrawingObjectCount","convertElementToPrimitives","allElements","_parent_pcb_component","_parent_source_component","_source_port_id","_source_port","_pcb_drawing_object_id","_element","expandedStroke","prevX","prevY","nextPoint","containerStyle","fontFamily","textShadow","getTextForHighlightedPrimitive","prim","localeCompare","ph","layerColorHightlightMap","HighlightedPrimitiveBoxWithText","import_react5","finalState","setFinalState","screen_x","screen_y","screen_w","screen_h","si","same_space_index","sip","import_jsx_runtime3","marginLeft","marginTop","border","transition","marginBottom","lineHeight","ElementOverlayBox","highlightedPrimitives","ifSetsMatchExactly","set1","set2","MouseElementTracker","onMouseHoverOverPrimitives","import_react6","mousedPrimitives","setMousedPrimitives","import_react7","screenPos","import_transformation_matrix2","screenSize","hp","import_jsx_runtime4","onMouseMove","currentTarget","rwPoint","newMousedPrimitives","DimensionOverlay","import_transformation_matrix3","import_react8","dimensionToolVisible","setDimensionToolVisible","dimensionToolStretching","setDimensionToolStretching","dStart","setDStart","dEnd","setDEnd","mousePosRef","containerRef","container","containerBounds","down","visible","addKeyListener","removeKeyListener","screenDStart","screenDEnd","arrowScreenBounds","flipX","flipY","import_jsx_runtime5","tabIndex","onMouseEnter","focus","onMouseLeave","blur","onMouseDown","Fragment","textAlign","mixBlendMode","display","flexDirection","justifyContent","paddingRight","orient","markerWidth","markerHeight","refX","refY","markerEnd","strokeDasharray","import_css","package_default","main","repository","license","scripts","build","yalc","storybook","files","devDependencies","react","tsup","typescript","zod","peerDependencies","dependencies","zustand","LayerButton","selected","onClick","import_jsx_runtime6","css","marginRight","fontWeight","ToolbarButton","padding","paddingLeft","borderRadius","alignSelf","ToolbarOverlay","import_react9","isMouseOverContainer","setIsMouseOverContainer","isLayerMenuOpen","setLayerMenuOpen","isErrorsOpen","setErrorsOpen","errorCount","transitionDelay","minWidth","gridTemplateColumns","ErrorSVG","screenPort1","screenPort2","errorCenter","canLineBeDrawn","import_jsx_runtime7","ErrorOverlay","import_transformation_matrix4","import_react10","port1","port2","import_css2","isInsideOf","halfHeight","EditPlacementOverlay","disabled","disabledProp","cancelPanDrag","onCreateEditEvent","onModifyEditEvent","import_transformation_matrix5","import_react11","activePcbComponentId","setActivePcbComponent","dragState","setDragState","isPcbComponentActive","import_jsx_runtime8","overflow","rwMousePoint","foundActiveComponent","edit_event_id","dragStart","originalCenter","dragEnd","pcb_edit_event_type","original_center","new_center","in_progress","created_at","onMouseUp","projectedCenter","HotkeyActionMenu","hotkeys","import_react12","handleKeyDown","event","hotkey","onUse","import_jsx_runtime9","import_css3","import_react_toastify","import_inject_style","useToast","toast","ogToast","containerId","ToastContainer","import_react13","injectStyle","import_jsx_runtime10","OgToastContainer","isInsideOfSmtpad","isInsideOfPlatedHole","hole","EditTraceHintOverlay","import_transformation_matrix6","import_react14","selectedElement","setSelectedElement","shouldCreateAsVia","setShouldCreateAsVia","isElementSelected","in_edit_trace_mode","ogCenterScreen","dragEndScreen","keyDown","import_jsx_runtime11","editEvent","shouldDrawRouteHint","rwDist","screenDist","lastPointScreen","distanceFromLastPoint","rScreen","cx","cy","import_soup_util2","pcb_port_screen","RatsNestOverlay","isShowingRatsNest","import_transformation_matrix7","sourceTraces","import_soup_util3","sourceTrace","group","pcbPort","import_jsx_runtime12","port","j","import_circuit_json_to_connectivity_map","addInteractionMetadataToPrimitives","primitivesWithoutInteractionMetadata","drawingObjectIdsWithMouseOver","primitiveIdsInMousedOverNet","newPrimitives","newPrimitive","import_react16","connectivityMap","getFullConnectivityMapFromCircuitJson","import_react15","setPrimitives","import_jsx_runtime13","primitivesHoveredOver","connectedPrimitivesList","getNetConnectedToId","getIdsConnectedToNet","allowEditing","import_use_mouse_matrix_transform","isBrowser","useIsomorphicLayoutEffect","import_react17","useLayoutEffect","useIsomorphicLayoutEffect_default","defaultState","useMeasure","import_react18","setRect","observer","ResizeObserver","contentRect","top_1","observe","disconnect","useMeasure_default","applyTraceHintEditEvent","edit_event","existing_trace_hint","th","import_soup_util4","edit_events","import_transformation_matrix8","import_soup_util5","defaultTransform","import_transformation_matrix9","editEvents","editEventsProp","onEditEventsChanged","import_react19","stateElements","setStateElements","refDimensions","setTransformInternal","transformRef","setEditEvents","resetTransform","elmBounds","some","import_builder2","findBoundsAndCenter","scaleFactor","doRender","projectBuilder","createProjectBuilder","createRoot","render","log","import_jsx_runtime14","pcbElmsPreEdit","modifiedEvent","newEditEvents","view_window"],"mappings":"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M;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,KAAK;YACLC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNC,MAAM;YACNlc,KAAK;YACLmc,MAAM;YACNC,KAAK;YACLC,KAAK;YACLC,KAAK;YACLC,KAAK;YACLC,KAAK;YACLC,KAAK;QACP;QACAC,QAAQ;QACRC,KAAK;QACLC,WAAW;QACXC,eAAe;QACfC,aAAa;QACbC,WAAW;QACXC,WAAW;QACXC,WAAW;QACXC,WAAW;QACXC,SAAS;QACTC,SAAS;QACTC,OAAO;QACPC,QAAQ;QACRC,SAAS;QACTC,SAAS;QACTC,qBAAqB;QACrBC,sBAAsB;QACtBC,0BAA0B;QAC1BC,MAAM;QACNC,WAAW;QACXC,QAAQ;QACRC,UAAU;QACVC,YAAY;QACZC,UAAU;QACVC,WAAW;QACXC,iBAAiB;QACjBC,kBAAkB;QAClBC,aAAa;QACbC,UAAU;QACVC,gBAAgB;QAChBC,aAAa;QACbC,QAAQ;QACRC,QAAQ;QACRC,QAAQ;QACRC,QAAQ;QACRC,QAAQ;QACRC,QAAQ;QACRC,QAAQ;QACRC,QAAQ;QACRC,QAAQ;QACRC,kBAAkB;QAClBC,UAAU;QACVC,WAAW;QACXC,aAAa;QACbC,WAAW;IACb;IACAC,UAAU;QACRC,MAAM;QACN7E,YAAY;QACZ8E,QAAQ;QACR7B,MAAM;QACN8B,QAAQ;YACN;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACF;QACAC,kBAAkB;QAClBL,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","sourcesContent":["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// node_modules/lodash._objecttypes/index.js\nvar require_lodash = __commonJS({\n \"node_modules/lodash._objecttypes/index.js\"(exports2, module2) {\n var objectTypes = {\n \"boolean\": false,\n \"function\": true,\n \"object\": true,\n \"number\": false,\n \"string\": false,\n \"undefined\": false\n };\n module2.exports = objectTypes;\n }\n});\n\n// node_modules/lodash.isobject/index.js\nvar require_lodash2 = __commonJS({\n \"node_modules/lodash.isobject/index.js\"(exports2, module2) {\n var objectTypes = require_lodash();\n function isObject(value) {\n return !!(value && objectTypes[typeof value]);\n }\n module2.exports = isObject;\n }\n});\n\n// node_modules/lodash._renative/index.js\nvar require_lodash3 = __commonJS({\n \"node_modules/lodash._renative/index.js\"(exports2, module2) {\n var objectProto = Object.prototype;\n var toString = objectProto.toString;\n var reNative = RegExp(\n \"^\" + String(toString).replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/toString| for [^\\]]+/g, \".*?\") + \"$\"\n );\n module2.exports = reNative;\n }\n});\n\n// node_modules/lodash._shimkeys/index.js\nvar require_lodash4 = __commonJS({\n \"node_modules/lodash._shimkeys/index.js\"(exports2, module2) {\n var objectTypes = require_lodash();\n var objectProto = Object.prototype;\n var hasOwnProperty = objectProto.hasOwnProperty;\n var shimKeys = function(object) {\n var index, iterable = object, result = [];\n if (!iterable) return result;\n if (!objectTypes[typeof object]) return result;\n for (index in iterable) {\n if (hasOwnProperty.call(iterable, index)) {\n result.push(index);\n }\n }\n return result;\n };\n module2.exports = shimKeys;\n }\n});\n\n// node_modules/lodash.keys/index.js\nvar require_lodash5 = __commonJS({\n \"node_modules/lodash.keys/index.js\"(exports2, module2) {\n var isObject = require_lodash2();\n var reNative = require_lodash3();\n var shimKeys = require_lodash4();\n var nativeKeys = reNative.test(nativeKeys = Object.keys) && nativeKeys;\n var keys = !nativeKeys ? shimKeys : function(object) {\n if (!isObject(object)) {\n return [];\n }\n return nativeKeys(object);\n };\n module2.exports = keys;\n }\n});\n\n// node_modules/lodash.noop/index.js\nvar require_lodash6 = __commonJS({\n \"node_modules/lodash.noop/index.js\"(exports2, module2) {\n function noop2() {\n }\n module2.exports = noop2;\n }\n});\n\n// node_modules/lodash._basecreate/index.js\nvar require_lodash7 = __commonJS({\n \"node_modules/lodash._basecreate/index.js\"(exports2, module2) {\n var isObject = require_lodash2();\n var noop2 = require_lodash6();\n var reNative = require_lodash3();\n var nativeCreate = reNative.test(nativeCreate = Object.create) && nativeCreate;\n function baseCreate(prototype, properties) {\n return isObject(prototype) ? nativeCreate(prototype) : {};\n }\n if (!nativeCreate) {\n baseCreate = /* @__PURE__ */ function() {\n function Object2() {\n }\n return function(prototype) {\n if (isObject(prototype)) {\n Object2.prototype = prototype;\n var result = new Object2();\n Object2.prototype = null;\n }\n return result || global.Object();\n };\n }();\n }\n module2.exports = baseCreate;\n }\n});\n\n// node_modules/lodash._setbinddata/index.js\nvar require_lodash8 = __commonJS({\n \"node_modules/lodash._setbinddata/index.js\"(exports2, module2) {\n var noop2 = require_lodash6();\n var reNative = require_lodash3();\n var descriptor = {\n \"configurable\": false,\n \"enumerable\": false,\n \"value\": null,\n \"writable\": false\n };\n var defineProperty = function() {\n try {\n var o = {}, func = reNative.test(func = Object.defineProperty) && func, result = func(o, o, o) && func;\n } catch (e) {\n }\n return result;\n }();\n var setBindData = !defineProperty ? noop2 : function(func, value) {\n descriptor.value = value;\n defineProperty(func, \"__bindData__\", descriptor);\n };\n module2.exports = setBindData;\n }\n});\n\n// node_modules/lodash._basebind/index.js\nvar require_lodash9 = __commonJS({\n \"node_modules/lodash._basebind/index.js\"(exports2, module2) {\n var baseCreate = require_lodash7();\n var isObject = require_lodash2();\n var setBindData = require_lodash8();\n var arrayRef = [];\n var push = arrayRef.push;\n function baseBind(bindData) {\n var func = bindData[0], partialArgs = bindData[2], thisArg = bindData[4];\n function bound() {\n if (partialArgs) {\n var args = partialArgs.slice();\n push.apply(args, arguments);\n }\n if (this instanceof bound) {\n var thisBinding = baseCreate(func.prototype), result = func.apply(thisBinding, args || arguments);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisArg, args || arguments);\n }\n setBindData(bound, bindData);\n return bound;\n }\n module2.exports = baseBind;\n }\n});\n\n// node_modules/lodash._slice/index.js\nvar require_lodash10 = __commonJS({\n \"node_modules/lodash._slice/index.js\"(exports2, module2) {\n function slice(array, start, end) {\n start || (start = 0);\n if (typeof end == \"undefined\") {\n end = array ? array.length : 0;\n }\n var index = -1, length2 = end - start || 0, result = Array(length2 < 0 ? 0 : length2);\n while (++index < length2) {\n result[index] = array[start + index];\n }\n return result;\n }\n module2.exports = slice;\n }\n});\n\n// node_modules/lodash._basecreatewrapper/index.js\nvar require_lodash11 = __commonJS({\n \"node_modules/lodash._basecreatewrapper/index.js\"(exports2, module2) {\n var baseCreate = require_lodash7();\n var isObject = require_lodash2();\n var setBindData = require_lodash8();\n var slice = require_lodash10();\n var arrayRef = [];\n var push = arrayRef.push;\n function baseCreateWrapper(bindData) {\n var func = bindData[0], bitmask = bindData[1], partialArgs = bindData[2], partialRightArgs = bindData[3], thisArg = bindData[4], arity = bindData[5];\n var isBind = bitmask & 1, isBindKey = bitmask & 2, isCurry = bitmask & 4, isCurryBound = bitmask & 8, key = func;\n function bound() {\n var thisBinding = isBind ? thisArg : this;\n if (partialArgs) {\n var args = partialArgs.slice();\n push.apply(args, arguments);\n }\n if (partialRightArgs || isCurry) {\n args || (args = slice(arguments));\n if (partialRightArgs) {\n push.apply(args, partialRightArgs);\n }\n if (isCurry && args.length < arity) {\n bitmask |= 16 & ~32;\n return baseCreateWrapper([func, isCurryBound ? bitmask : bitmask & ~3, args, null, thisArg, arity]);\n }\n }\n args || (args = arguments);\n if (isBindKey) {\n func = thisBinding[key];\n }\n if (this instanceof bound) {\n thisBinding = baseCreate(func.prototype);\n var result = func.apply(thisBinding, args);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisBinding, args);\n }\n setBindData(bound, bindData);\n return bound;\n }\n module2.exports = baseCreateWrapper;\n }\n});\n\n// node_modules/lodash.isfunction/index.js\nvar require_lodash12 = __commonJS({\n \"node_modules/lodash.isfunction/index.js\"(exports2, module2) {\n function isFunction(value) {\n return typeof value == \"function\";\n }\n module2.exports = isFunction;\n }\n});\n\n// node_modules/lodash._createwrapper/index.js\nvar require_lodash13 = __commonJS({\n \"node_modules/lodash._createwrapper/index.js\"(exports2, module2) {\n var baseBind = require_lodash9();\n var baseCreateWrapper = require_lodash11();\n var isFunction = require_lodash12();\n var arrayRef = [];\n var push = arrayRef.push;\n function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {\n var isBind = bitmask & 1, isBindKey = bitmask & 2, isCurry = bitmask & 4, isCurryBound = bitmask & 8, isPartial = bitmask & 16, isPartialRight = bitmask & 32;\n if (!isBindKey && !isFunction(func)) {\n throw new TypeError();\n }\n if (isPartial && !partialArgs.length) {\n bitmask &= ~16;\n isPartial = partialArgs = false;\n }\n if (isPartialRight && !partialRightArgs.length) {\n bitmask &= ~32;\n isPartialRight = partialRightArgs = false;\n }\n var bindData = func && func.__bindData__;\n if (bindData && bindData !== true) {\n bindData = bindData.slice();\n if (isBind && !(bindData[1] & 1)) {\n bindData[4] = thisArg;\n }\n if (!isBind && bindData[1] & 1) {\n bitmask |= 8;\n }\n if (isCurry && !(bindData[1] & 4)) {\n bindData[5] = arity;\n }\n if (isPartial) {\n push.apply(bindData[2] || (bindData[2] = []), partialArgs);\n }\n if (isPartialRight) {\n push.apply(bindData[3] || (bindData[3] = []), partialRightArgs);\n }\n bindData[1] |= bitmask;\n return createWrapper.apply(null, bindData);\n }\n var creater = bitmask == 1 || bitmask === 17 ? baseBind : baseCreateWrapper;\n return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);\n }\n module2.exports = createWrapper;\n }\n});\n\n// node_modules/lodash.bind/index.js\nvar require_lodash14 = __commonJS({\n \"node_modules/lodash.bind/index.js\"(exports2, module2) {\n var createWrapper = require_lodash13();\n var reNative = require_lodash3();\n var slice = require_lodash10();\n function bind(func, thisArg) {\n return arguments.length > 2 ? createWrapper(func, 17, slice(arguments, 2), null, thisArg) : createWrapper(func, 1, null, null, thisArg);\n }\n module2.exports = bind;\n }\n});\n\n// node_modules/lodash.identity/index.js\nvar require_lodash15 = __commonJS({\n \"node_modules/lodash.identity/index.js\"(exports2, module2) {\n function identity7(value) {\n return value;\n }\n module2.exports = identity7;\n }\n});\n\n// node_modules/lodash.support/index.js\nvar require_lodash16 = __commonJS({\n \"node_modules/lodash.support/index.js\"(exports2, module2) {\n var reNative = require_lodash3();\n var reThis = /\\bthis\\b/;\n var support = {};\n support.funcDecomp = !reNative.test(global.WinRTError) && reThis.test(function() {\n return this;\n });\n support.funcNames = typeof Function.name == \"string\";\n module2.exports = support;\n }\n});\n\n// node_modules/lodash._basecreatecallback/index.js\nvar require_lodash17 = __commonJS({\n \"node_modules/lodash._basecreatecallback/index.js\"(exports2, module2) {\n var bind = require_lodash14();\n var identity7 = require_lodash15();\n var setBindData = require_lodash8();\n var support = require_lodash16();\n var reFuncName = /^\\s*function[ \\n\\r\\t]+\\w/;\n var reThis = /\\bthis\\b/;\n var fnToString = Function.prototype.toString;\n function baseCreateCallback(func, thisArg, argCount) {\n if (typeof func != \"function\") {\n return identity7;\n }\n if (typeof thisArg == \"undefined\" || !(\"prototype\" in func)) {\n return func;\n }\n var bindData = func.__bindData__;\n if (typeof bindData == \"undefined\") {\n if (support.funcNames) {\n bindData = !func.name;\n }\n bindData = bindData || !support.funcDecomp;\n if (!bindData) {\n var source = fnToString.call(func);\n if (!support.funcNames) {\n bindData = !reFuncName.test(source);\n }\n if (!bindData) {\n bindData = reThis.test(source);\n setBindData(func, bindData);\n }\n }\n }\n if (bindData === false || bindData !== true && bindData[1] & 1) {\n return func;\n }\n switch (argCount) {\n case 1:\n return function(value) {\n return func.call(thisArg, value);\n };\n case 2:\n return function(a, b) {\n return func.call(thisArg, a, b);\n };\n case 3:\n return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4:\n return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n }\n return bind(func, thisArg);\n }\n module2.exports = baseCreateCallback;\n }\n});\n\n// node_modules/lodash.forown/index.js\nvar require_lodash18 = __commonJS({\n \"node_modules/lodash.forown/index.js\"(exports2, module2) {\n var baseCreateCallback = require_lodash17();\n var keys = require_lodash5();\n var objectTypes = require_lodash();\n var forOwn = function(collection, callback, thisArg) {\n var index, iterable = collection, result = iterable;\n if (!iterable) return result;\n if (!objectTypes[typeof iterable]) return result;\n callback = callback && typeof thisArg == \"undefined\" ? callback : baseCreateCallback(callback, thisArg, 3);\n var ownIndex = -1, ownProps = objectTypes[typeof iterable] && keys(iterable), length2 = ownProps ? ownProps.length : 0;\n while (++ownIndex < length2) {\n index = ownProps[ownIndex];\n if (callback(iterable[index], index, collection) === false) return result;\n }\n return result;\n };\n module2.exports = forOwn;\n }\n});\n\n// node_modules/lodash.foreach/index.js\nvar require_lodash19 = __commonJS({\n \"node_modules/lodash.foreach/index.js\"(exports2, module2) {\n var baseCreateCallback = require_lodash17();\n var forOwn = require_lodash18();\n function forEach(collection, callback, thisArg) {\n var index = -1, length2 = collection ? collection.length : 0;\n callback = callback && typeof thisArg == \"undefined\" ? callback : baseCreateCallback(callback, thisArg, 3);\n if (typeof length2 == \"number\") {\n while (++index < length2) {\n if (callback(collection[index], index, collection) === false) {\n break;\n }\n }\n } else {\n forOwn(collection, callback);\n }\n return collection;\n }\n module2.exports = forEach;\n }\n});\n\n// node_modules/convert-units/lib/definitions/length.js\nvar require_length = __commonJS({\n \"node_modules/convert-units/lib/definitions/length.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n mm: {\n name: {\n singular: \"Millimeter\",\n plural: \"Millimeters\"\n },\n to_anchor: 1 / 1e3\n },\n cm: {\n name: {\n singular: \"Centimeter\",\n plural: \"Centimeters\"\n },\n to_anchor: 1 / 100\n },\n m: {\n name: {\n singular: \"Meter\",\n plural: \"Meters\"\n },\n to_anchor: 1\n },\n km: {\n name: {\n singular: \"Kilometer\",\n plural: \"Kilometers\"\n },\n to_anchor: 1e3\n }\n };\n imperial = {\n \"in\": {\n name: {\n singular: \"Inch\",\n plural: \"Inches\"\n },\n to_anchor: 1 / 12\n },\n yd: {\n name: {\n singular: \"Yard\",\n plural: \"Yards\"\n },\n to_anchor: 3\n },\n \"ft-us\": {\n name: {\n singular: \"US Survey Foot\",\n plural: \"US Survey Feet\"\n },\n to_anchor: 1.000002\n },\n ft: {\n name: {\n singular: \"Foot\",\n plural: \"Feet\"\n },\n to_anchor: 1\n },\n mi: {\n name: {\n singular: \"Mile\",\n plural: \"Miles\"\n },\n to_anchor: 5280\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"m\",\n ratio: 3.28084\n },\n imperial: {\n unit: \"ft\",\n ratio: 1 / 3.28084\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/area.js\nvar require_area = __commonJS({\n \"node_modules/convert-units/lib/definitions/area.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n mm2: {\n name: {\n singular: \"Square Millimeter\",\n plural: \"Square Millimeters\"\n },\n to_anchor: 1 / 1e6\n },\n cm2: {\n name: {\n singular: \"Centimeter\",\n plural: \"Centimeters\"\n },\n to_anchor: 1 / 1e4\n },\n m2: {\n name: {\n singular: \"Square Meter\",\n plural: \"Square Meters\"\n },\n to_anchor: 1\n },\n ha: {\n name: {\n singular: \"Hectare\",\n plural: \"Hectares\"\n },\n to_anchor: 1e4\n },\n km2: {\n name: {\n singular: \"Square Kilometer\",\n plural: \"Square Kilometers\"\n },\n to_anchor: 1e6\n }\n };\n imperial = {\n \"in2\": {\n name: {\n singular: \"Square Inch\",\n plural: \"Square Inches\"\n },\n to_anchor: 1 / 144\n },\n yd2: {\n name: {\n singular: \"Square Yard\",\n plural: \"Square Yards\"\n },\n to_anchor: 9\n },\n ft2: {\n name: {\n singular: \"Square Foot\",\n plural: \"Square Feet\"\n },\n to_anchor: 1\n },\n ac: {\n name: {\n singular: \"Acre\",\n plural: \"Acres\"\n },\n to_anchor: 43560\n },\n mi2: {\n name: {\n singular: \"Square Mile\",\n plural: \"Square Miles\"\n },\n to_anchor: 27878400\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"m2\",\n ratio: 10.7639\n },\n imperial: {\n unit: \"ft2\",\n ratio: 1 / 10.7639\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/mass.js\nvar require_mass = __commonJS({\n \"node_modules/convert-units/lib/definitions/mass.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n mcg: {\n name: {\n singular: \"Microgram\",\n plural: \"Micrograms\"\n },\n to_anchor: 1 / 1e6\n },\n mg: {\n name: {\n singular: \"Milligram\",\n plural: \"Milligrams\"\n },\n to_anchor: 1 / 1e3\n },\n g: {\n name: {\n singular: \"Gram\",\n plural: \"Grams\"\n },\n to_anchor: 1\n },\n kg: {\n name: {\n singular: \"Kilogram\",\n plural: \"Kilograms\"\n },\n to_anchor: 1e3\n },\n mt: {\n name: {\n singular: \"Metric Tonne\",\n plural: \"Metric Tonnes\"\n },\n to_anchor: 1e6\n }\n };\n imperial = {\n oz: {\n name: {\n singular: \"Ounce\",\n plural: \"Ounces\"\n },\n to_anchor: 1 / 16\n },\n lb: {\n name: {\n singular: \"Pound\",\n plural: \"Pounds\"\n },\n to_anchor: 1\n },\n t: {\n name: {\n singular: \"Ton\",\n plural: \"Tons\"\n },\n to_anchor: 2e3\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"g\",\n ratio: 1 / 453.592\n },\n imperial: {\n unit: \"lb\",\n ratio: 453.592\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/volume.js\nvar require_volume = __commonJS({\n \"node_modules/convert-units/lib/definitions/volume.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n mm3: {\n name: {\n singular: \"Cubic Millimeter\",\n plural: \"Cubic Millimeters\"\n },\n to_anchor: 1 / 1e6\n },\n cm3: {\n name: {\n singular: \"Cubic Centimeter\",\n plural: \"Cubic Centimeters\"\n },\n to_anchor: 1 / 1e3\n },\n ml: {\n name: {\n singular: \"Millilitre\",\n plural: \"Millilitres\"\n },\n to_anchor: 1 / 1e3\n },\n cl: {\n name: {\n singular: \"Centilitre\",\n plural: \"Centilitres\"\n },\n to_anchor: 1 / 100\n },\n dl: {\n name: {\n singular: \"Decilitre\",\n plural: \"Decilitres\"\n },\n to_anchor: 1 / 10\n },\n l: {\n name: {\n singular: \"Litre\",\n plural: \"Litres\"\n },\n to_anchor: 1\n },\n kl: {\n name: {\n singular: \"Kilolitre\",\n plural: \"Kilolitres\"\n },\n to_anchor: 1e3\n },\n m3: {\n name: {\n singular: \"Cubic meter\",\n plural: \"Cubic meters\"\n },\n to_anchor: 1e3\n },\n km3: {\n name: {\n singular: \"Cubic kilometer\",\n plural: \"Cubic kilometers\"\n },\n to_anchor: 1e12\n },\n krm: {\n name: {\n singular: \"Matsked\",\n plural: \"Matskedar\"\n },\n to_anchor: 1 / 1e3\n },\n tsk: {\n name: {\n singular: \"Tesked\",\n plural: \"Teskedar\"\n },\n to_anchor: 5 / 1e3\n },\n msk: {\n name: {\n singular: \"Matsked\",\n plural: \"Matskedar\"\n },\n to_anchor: 15 / 1e3\n },\n kkp: {\n name: {\n singular: \"Kaffekopp\",\n plural: \"Kaffekoppar\"\n },\n to_anchor: 150 / 1e3\n },\n glas: {\n name: {\n singular: \"Glas\",\n plural: \"Glas\"\n },\n to_anchor: 200 / 1e3\n },\n kanna: {\n name: {\n singular: \"Kanna\",\n plural: \"Kannor\"\n },\n to_anchor: 2.617\n }\n };\n imperial = {\n tsp: {\n name: {\n singular: \"Teaspoon\",\n plural: \"Teaspoons\"\n },\n to_anchor: 1 / 6\n },\n Tbs: {\n name: {\n singular: \"Tablespoon\",\n plural: \"Tablespoons\"\n },\n to_anchor: 1 / 2\n },\n in3: {\n name: {\n singular: \"Cubic inch\",\n plural: \"Cubic inches\"\n },\n to_anchor: 0.55411\n },\n \"fl-oz\": {\n name: {\n singular: \"Fluid Ounce\",\n plural: \"Fluid Ounces\"\n },\n to_anchor: 1\n },\n cup: {\n name: {\n singular: \"Cup\",\n plural: \"Cups\"\n },\n to_anchor: 8\n },\n pnt: {\n name: {\n singular: \"Pint\",\n plural: \"Pints\"\n },\n to_anchor: 16\n },\n qt: {\n name: {\n singular: \"Quart\",\n plural: \"Quarts\"\n },\n to_anchor: 32\n },\n gal: {\n name: {\n singular: \"Gallon\",\n plural: \"Gallons\"\n },\n to_anchor: 128\n },\n ft3: {\n name: {\n singular: \"Cubic foot\",\n plural: \"Cubic feet\"\n },\n to_anchor: 957.506\n },\n yd3: {\n name: {\n singular: \"Cubic yard\",\n plural: \"Cubic yards\"\n },\n to_anchor: 25852.7\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"l\",\n ratio: 33.8140226\n },\n imperial: {\n unit: \"fl-oz\",\n ratio: 1 / 33.8140226\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/each.js\nvar require_each = __commonJS({\n \"node_modules/convert-units/lib/definitions/each.js\"(exports2, module2) {\n var metric;\n metric = {\n ea: {\n name: {\n singular: \"Each\",\n plural: \"Each\"\n },\n to_anchor: 1\n },\n dz: {\n name: {\n singular: \"Dozen\",\n plural: \"Dozens\"\n },\n to_anchor: 12\n }\n };\n module2.exports = {\n metric,\n imperial: {},\n _anchors: {\n metric: {\n unit: \"ea\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/temperature.js\nvar require_temperature = __commonJS({\n \"node_modules/convert-units/lib/definitions/temperature.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n C: {\n name: {\n singular: \"degree Celsius\",\n plural: \"degrees Celsius\"\n },\n to_anchor: 1,\n anchor_shift: 0\n },\n K: {\n name: {\n singular: \"degree Kelvin\",\n plural: \"degrees Kelvin\"\n },\n to_anchor: 1,\n anchor_shift: 273.15\n }\n };\n imperial = {\n F: {\n name: {\n singular: \"degree Fahrenheit\",\n plural: \"degrees Fahrenheit\"\n },\n to_anchor: 1\n },\n R: {\n name: {\n singular: \"degree Rankine\",\n plural: \"degrees Rankine\"\n },\n to_anchor: 1,\n anchor_shift: 459.67\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"C\",\n transform: function(C) {\n return C / (5 / 9) + 32;\n }\n },\n imperial: {\n unit: \"F\",\n transform: function(F) {\n return (F - 32) * (5 / 9);\n }\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/time.js\nvar require_time = __commonJS({\n \"node_modules/convert-units/lib/definitions/time.js\"(exports2, module2) {\n var time2;\n var daysInYear = 365.25;\n time2 = {\n ns: {\n name: {\n singular: \"Nanosecond\",\n plural: \"Nanoseconds\"\n },\n to_anchor: 1 / 1e9\n },\n mu: {\n name: {\n singular: \"Microsecond\",\n plural: \"Microseconds\"\n },\n to_anchor: 1 / 1e6\n },\n ms: {\n name: {\n singular: \"Millisecond\",\n plural: \"Milliseconds\"\n },\n to_anchor: 1 / 1e3\n },\n s: {\n name: {\n singular: \"Second\",\n plural: \"Seconds\"\n },\n to_anchor: 1\n },\n min: {\n name: {\n singular: \"Minute\",\n plural: \"Minutes\"\n },\n to_anchor: 60\n },\n h: {\n name: {\n singular: \"Hour\",\n plural: \"Hours\"\n },\n to_anchor: 60 * 60\n },\n d: {\n name: {\n singular: \"Day\",\n plural: \"Days\"\n },\n to_anchor: 60 * 60 * 24\n },\n week: {\n name: {\n singular: \"Week\",\n plural: \"Weeks\"\n },\n to_anchor: 60 * 60 * 24 * 7\n },\n month: {\n name: {\n singular: \"Month\",\n plural: \"Months\"\n },\n to_anchor: 60 * 60 * 24 * daysInYear / 12\n },\n year: {\n name: {\n singular: \"Year\",\n plural: \"Years\"\n },\n to_anchor: 60 * 60 * 24 * daysInYear\n }\n };\n module2.exports = {\n metric: time2,\n _anchors: {\n metric: {\n unit: \"s\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/digital.js\nvar require_digital = __commonJS({\n \"node_modules/convert-units/lib/definitions/digital.js\"(exports2, module2) {\n var bits;\n var bytes;\n bits = {\n b: {\n name: {\n singular: \"Bit\",\n plural: \"Bits\"\n },\n to_anchor: 1\n },\n Kb: {\n name: {\n singular: \"Kilobit\",\n plural: \"Kilobits\"\n },\n to_anchor: 1024\n },\n Mb: {\n name: {\n singular: \"Megabit\",\n plural: \"Megabits\"\n },\n to_anchor: 1048576\n },\n Gb: {\n name: {\n singular: \"Gigabit\",\n plural: \"Gigabits\"\n },\n to_anchor: 1073741824\n },\n Tb: {\n name: {\n singular: \"Terabit\",\n plural: \"Terabits\"\n },\n to_anchor: 1099511627776\n }\n };\n bytes = {\n B: {\n name: {\n singular: \"Byte\",\n plural: \"Bytes\"\n },\n to_anchor: 1\n },\n KB: {\n name: {\n singular: \"Kilobyte\",\n plural: \"Kilobytes\"\n },\n to_anchor: 1024\n },\n MB: {\n name: {\n singular: \"Megabyte\",\n plural: \"Megabytes\"\n },\n to_anchor: 1048576\n },\n GB: {\n name: {\n singular: \"Gigabyte\",\n plural: \"Gigabytes\"\n },\n to_anchor: 1073741824\n },\n TB: {\n name: {\n singular: \"Terabyte\",\n plural: \"Terabytes\"\n },\n to_anchor: 1099511627776\n }\n };\n module2.exports = {\n bits,\n bytes,\n _anchors: {\n bits: {\n unit: \"b\",\n ratio: 1 / 8\n },\n bytes: {\n unit: \"B\",\n ratio: 8\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/partsPer.js\nvar require_partsPer = __commonJS({\n \"node_modules/convert-units/lib/definitions/partsPer.js\"(exports2, module2) {\n var metric;\n metric = {\n ppm: {\n name: {\n singular: \"Part-per Million\",\n plural: \"Parts-per Million\"\n },\n to_anchor: 1\n },\n ppb: {\n name: {\n singular: \"Part-per Billion\",\n plural: \"Parts-per Billion\"\n },\n to_anchor: 1e-3\n },\n ppt: {\n name: {\n singular: \"Part-per Trillion\",\n plural: \"Parts-per Trillion\"\n },\n to_anchor: 1e-6\n },\n ppq: {\n name: {\n singular: \"Part-per Quadrillion\",\n plural: \"Parts-per Quadrillion\"\n },\n to_anchor: 1e-9\n }\n };\n module2.exports = {\n metric,\n imperial: {},\n _anchors: {\n metric: {\n unit: \"ppm\",\n ratio: 1e-6\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/speed.js\nvar require_speed = __commonJS({\n \"node_modules/convert-units/lib/definitions/speed.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n \"m/s\": {\n name: {\n singular: \"Metre per second\",\n plural: \"Metres per second\"\n },\n to_anchor: 3.6\n },\n \"km/h\": {\n name: {\n singular: \"Kilometre per hour\",\n plural: \"Kilometres per hour\"\n },\n to_anchor: 1\n }\n };\n imperial = {\n \"m/h\": {\n name: {\n singular: \"Mile per hour\",\n plural: \"Miles per hour\"\n },\n to_anchor: 1\n },\n knot: {\n name: {\n singular: \"Knot\",\n plural: \"Knots\"\n },\n to_anchor: 1.150779\n },\n \"ft/s\": {\n name: {\n singular: \"Foot per second\",\n plural: \"Feet per second\"\n },\n to_anchor: 0.681818\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"km/h\",\n ratio: 1 / 1.609344\n },\n imperial: {\n unit: \"m/h\",\n ratio: 1.609344\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/pace.js\nvar require_pace = __commonJS({\n \"node_modules/convert-units/lib/definitions/pace.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n \"min/km\": {\n name: {\n singular: \"Minute per kilometre\",\n plural: \"Minutes per kilometre\"\n },\n to_anchor: 0.06\n },\n \"s/m\": {\n name: {\n singular: \"Second per metre\",\n plural: \"Seconds per metre\"\n },\n to_anchor: 1\n }\n };\n imperial = {\n \"min/mi\": {\n name: {\n singular: \"Minute per mile\",\n plural: \"Minutes per mile\"\n },\n to_anchor: 0.0113636\n },\n \"s/ft\": {\n name: {\n singular: \"Second per foot\",\n plural: \"Seconds per foot\"\n },\n to_anchor: 1\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"s/m\",\n ratio: 0.3048\n },\n imperial: {\n unit: \"s/ft\",\n ratio: 1 / 0.3048\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/pressure.js\nvar require_pressure = __commonJS({\n \"node_modules/convert-units/lib/definitions/pressure.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n Pa: {\n name: {\n singular: \"pascal\",\n plural: \"pascals\"\n },\n to_anchor: 1 / 1e3\n },\n kPa: {\n name: {\n singular: \"kilopascal\",\n plural: \"kilopascals\"\n },\n to_anchor: 1\n },\n MPa: {\n name: {\n singular: \"megapascal\",\n plural: \"megapascals\"\n },\n to_anchor: 1e3\n },\n hPa: {\n name: {\n singular: \"hectopascal\",\n plural: \"hectopascals\"\n },\n to_anchor: 1 / 10\n },\n bar: {\n name: {\n singular: \"bar\",\n plural: \"bar\"\n },\n to_anchor: 100\n },\n torr: {\n name: {\n singular: \"torr\",\n plural: \"torr\"\n },\n to_anchor: 101325 / 76e4\n }\n };\n imperial = {\n psi: {\n name: {\n singular: \"pound per square inch\",\n plural: \"pounds per square inch\"\n },\n to_anchor: 1 / 1e3\n },\n ksi: {\n name: {\n singular: \"kilopound per square inch\",\n plural: \"kilopound per square inch\"\n },\n to_anchor: 1\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"kPa\",\n ratio: 14503768078e-14\n },\n imperial: {\n unit: \"psi\",\n ratio: 1 / 14503768078e-14\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/current.js\nvar require_current = __commonJS({\n \"node_modules/convert-units/lib/definitions/current.js\"(exports2, module2) {\n var current2;\n current2 = {\n A: {\n name: {\n singular: \"Ampere\",\n plural: \"Amperes\"\n },\n to_anchor: 1\n },\n mA: {\n name: {\n singular: \"Milliampere\",\n plural: \"Milliamperes\"\n },\n to_anchor: 1e-3\n },\n kA: {\n name: {\n singular: \"Kiloampere\",\n plural: \"Kiloamperes\"\n },\n to_anchor: 1e3\n }\n };\n module2.exports = {\n metric: current2,\n _anchors: {\n metric: {\n unit: \"A\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/voltage.js\nvar require_voltage = __commonJS({\n \"node_modules/convert-units/lib/definitions/voltage.js\"(exports2, module2) {\n var voltage2;\n voltage2 = {\n V: {\n name: {\n singular: \"Volt\",\n plural: \"Volts\"\n },\n to_anchor: 1\n },\n mV: {\n name: {\n singular: \"Millivolt\",\n plural: \"Millivolts\"\n },\n to_anchor: 1e-3\n },\n kV: {\n name: {\n singular: \"Kilovolt\",\n plural: \"Kilovolts\"\n },\n to_anchor: 1e3\n }\n };\n module2.exports = {\n metric: voltage2,\n _anchors: {\n metric: {\n unit: \"V\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/power.js\nvar require_power = __commonJS({\n \"node_modules/convert-units/lib/definitions/power.js\"(exports2, module2) {\n var power;\n power = {\n W: {\n name: {\n singular: \"Watt\",\n plural: \"Watts\"\n },\n to_anchor: 1\n },\n mW: {\n name: {\n singular: \"Milliwatt\",\n plural: \"Milliwatts\"\n },\n to_anchor: 1e-3\n },\n kW: {\n name: {\n singular: \"Kilowatt\",\n plural: \"Kilowatts\"\n },\n to_anchor: 1e3\n },\n MW: {\n name: {\n singular: \"Megawatt\",\n plural: \"Megawatts\"\n },\n to_anchor: 1e6\n },\n GW: {\n name: {\n singular: \"Gigawatt\",\n plural: \"Gigawatts\"\n },\n to_anchor: 1e9\n }\n };\n module2.exports = {\n metric: power,\n _anchors: {\n metric: {\n unit: \"W\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/reactivePower.js\nvar require_reactivePower = __commonJS({\n \"node_modules/convert-units/lib/definitions/reactivePower.js\"(exports2, module2) {\n var reactivePower;\n reactivePower = {\n VAR: {\n name: {\n singular: \"Volt-Ampere Reactive\",\n plural: \"Volt-Amperes Reactive\"\n },\n to_anchor: 1\n },\n mVAR: {\n name: {\n singular: \"Millivolt-Ampere Reactive\",\n plural: \"Millivolt-Amperes Reactive\"\n },\n to_anchor: 1e-3\n },\n kVAR: {\n name: {\n singular: \"Kilovolt-Ampere Reactive\",\n plural: \"Kilovolt-Amperes Reactive\"\n },\n to_anchor: 1e3\n },\n MVAR: {\n name: {\n singular: \"Megavolt-Ampere Reactive\",\n plural: \"Megavolt-Amperes Reactive\"\n },\n to_anchor: 1e6\n },\n GVAR: {\n name: {\n singular: \"Gigavolt-Ampere Reactive\",\n plural: \"Gigavolt-Amperes Reactive\"\n },\n to_anchor: 1e9\n }\n };\n module2.exports = {\n metric: reactivePower,\n _anchors: {\n metric: {\n unit: \"VAR\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/apparentPower.js\nvar require_apparentPower = __commonJS({\n \"node_modules/convert-units/lib/definitions/apparentPower.js\"(exports2, module2) {\n var apparentPower;\n apparentPower = {\n VA: {\n name: {\n singular: \"Volt-Ampere\",\n plural: \"Volt-Amperes\"\n },\n to_anchor: 1\n },\n mVA: {\n name: {\n singular: \"Millivolt-Ampere\",\n plural: \"Millivolt-Amperes\"\n },\n to_anchor: 1e-3\n },\n kVA: {\n name: {\n singular: \"Kilovolt-Ampere\",\n plural: \"Kilovolt-Amperes\"\n },\n to_anchor: 1e3\n },\n MVA: {\n name: {\n singular: \"Megavolt-Ampere\",\n plural: \"Megavolt-Amperes\"\n },\n to_anchor: 1e6\n },\n GVA: {\n name: {\n singular: \"Gigavolt-Ampere\",\n plural: \"Gigavolt-Amperes\"\n },\n to_anchor: 1e9\n }\n };\n module2.exports = {\n metric: apparentPower,\n _anchors: {\n metric: {\n unit: \"VA\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/energy.js\nvar require_energy = __commonJS({\n \"node_modules/convert-units/lib/definitions/energy.js\"(exports2, module2) {\n var energy;\n energy = {\n Wh: {\n name: {\n singular: \"Watt-hour\",\n plural: \"Watt-hours\"\n },\n to_anchor: 3600\n },\n mWh: {\n name: {\n singular: \"Milliwatt-hour\",\n plural: \"Milliwatt-hours\"\n },\n to_anchor: 3.6\n },\n kWh: {\n name: {\n singular: \"Kilowatt-hour\",\n plural: \"Kilowatt-hours\"\n },\n to_anchor: 36e5\n },\n MWh: {\n name: {\n singular: \"Megawatt-hour\",\n plural: \"Megawatt-hours\"\n },\n to_anchor: 36e8\n },\n GWh: {\n name: {\n singular: \"Gigawatt-hour\",\n plural: \"Gigawatt-hours\"\n },\n to_anchor: 36e11\n },\n J: {\n name: {\n singular: \"Joule\",\n plural: \"Joules\"\n },\n to_anchor: 1\n },\n kJ: {\n name: {\n singular: \"Kilojoule\",\n plural: \"Kilojoules\"\n },\n to_anchor: 1e3\n }\n };\n module2.exports = {\n metric: energy,\n _anchors: {\n metric: {\n unit: \"J\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/reactiveEnergy.js\nvar require_reactiveEnergy = __commonJS({\n \"node_modules/convert-units/lib/definitions/reactiveEnergy.js\"(exports2, module2) {\n var reactiveEnergy;\n reactiveEnergy = {\n VARh: {\n name: {\n singular: \"Volt-Ampere Reactive Hour\",\n plural: \"Volt-Amperes Reactive Hour\"\n },\n to_anchor: 1\n },\n mVARh: {\n name: {\n singular: \"Millivolt-Ampere Reactive Hour\",\n plural: \"Millivolt-Amperes Reactive Hour\"\n },\n to_anchor: 1e-3\n },\n kVARh: {\n name: {\n singular: \"Kilovolt-Ampere Reactive Hour\",\n plural: \"Kilovolt-Amperes Reactive Hour\"\n },\n to_anchor: 1e3\n },\n MVARh: {\n name: {\n singular: \"Megavolt-Ampere Reactive Hour\",\n plural: \"Megavolt-Amperes Reactive Hour\"\n },\n to_anchor: 1e6\n },\n GVARh: {\n name: {\n singular: \"Gigavolt-Ampere Reactive Hour\",\n plural: \"Gigavolt-Amperes Reactive Hour\"\n },\n to_anchor: 1e9\n }\n };\n module2.exports = {\n metric: reactiveEnergy,\n _anchors: {\n metric: {\n unit: \"VARh\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/volumeFlowRate.js\nvar require_volumeFlowRate = __commonJS({\n \"node_modules/convert-units/lib/definitions/volumeFlowRate.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n \"mm3/s\": {\n name: {\n singular: \"Cubic Millimeter per second\",\n plural: \"Cubic Millimeters per second\"\n },\n to_anchor: 1 / 1e6\n },\n \"cm3/s\": {\n name: {\n singular: \"Cubic Centimeter per second\",\n plural: \"Cubic Centimeters per second\"\n },\n to_anchor: 1 / 1e3\n },\n \"ml/s\": {\n name: {\n singular: \"Millilitre per second\",\n plural: \"Millilitres per second\"\n },\n to_anchor: 1 / 1e3\n },\n \"cl/s\": {\n name: {\n singular: \"Centilitre per second\",\n plural: \"Centilitres per second\"\n },\n to_anchor: 1 / 100\n },\n \"dl/s\": {\n name: {\n singular: \"Decilitre per second\",\n plural: \"Decilitres per second\"\n },\n to_anchor: 1 / 10\n },\n \"l/s\": {\n name: {\n singular: \"Litre per second\",\n plural: \"Litres per second\"\n },\n to_anchor: 1\n },\n \"l/min\": {\n name: {\n singular: \"Litre per minute\",\n plural: \"Litres per minute\"\n },\n to_anchor: 1 / 60\n },\n \"l/h\": {\n name: {\n singular: \"Litre per hour\",\n plural: \"Litres per hour\"\n },\n to_anchor: 1 / 3600\n },\n \"kl/s\": {\n name: {\n singular: \"Kilolitre per second\",\n plural: \"Kilolitres per second\"\n },\n to_anchor: 1e3\n },\n \"kl/min\": {\n name: {\n singular: \"Kilolitre per minute\",\n plural: \"Kilolitres per minute\"\n },\n to_anchor: 50 / 3\n },\n \"kl/h\": {\n name: {\n singular: \"Kilolitre per hour\",\n plural: \"Kilolitres per hour\"\n },\n to_anchor: 5 / 18\n },\n \"m3/s\": {\n name: {\n singular: \"Cubic meter per second\",\n plural: \"Cubic meters per second\"\n },\n to_anchor: 1e3\n },\n \"m3/min\": {\n name: {\n singular: \"Cubic meter per minute\",\n plural: \"Cubic meters per minute\"\n },\n to_anchor: 50 / 3\n },\n \"m3/h\": {\n name: {\n singular: \"Cubic meter per hour\",\n plural: \"Cubic meters per hour\"\n },\n to_anchor: 5 / 18\n },\n \"km3/s\": {\n name: {\n singular: \"Cubic kilometer per second\",\n plural: \"Cubic kilometers per second\"\n },\n to_anchor: 1e12\n }\n };\n imperial = {\n \"tsp/s\": {\n name: {\n singular: \"Teaspoon per second\",\n plural: \"Teaspoons per second\"\n },\n to_anchor: 1 / 6\n },\n \"Tbs/s\": {\n name: {\n singular: \"Tablespoon per second\",\n plural: \"Tablespoons per second\"\n },\n to_anchor: 1 / 2\n },\n \"in3/s\": {\n name: {\n singular: \"Cubic inch per second\",\n plural: \"Cubic inches per second\"\n },\n to_anchor: 0.55411\n },\n \"in3/min\": {\n name: {\n singular: \"Cubic inch per minute\",\n plural: \"Cubic inches per minute\"\n },\n to_anchor: 0.55411 / 60\n },\n \"in3/h\": {\n name: {\n singular: \"Cubic inch per hour\",\n plural: \"Cubic inches per hour\"\n },\n to_anchor: 0.55411 / 3600\n },\n \"fl-oz/s\": {\n name: {\n singular: \"Fluid Ounce per second\",\n plural: \"Fluid Ounces per second\"\n },\n to_anchor: 1\n },\n \"fl-oz/min\": {\n name: {\n singular: \"Fluid Ounce per minute\",\n plural: \"Fluid Ounces per minute\"\n },\n to_anchor: 1 / 60\n },\n \"fl-oz/h\": {\n name: {\n singular: \"Fluid Ounce per hour\",\n plural: \"Fluid Ounces per hour\"\n },\n to_anchor: 1 / 3600\n },\n \"cup/s\": {\n name: {\n singular: \"Cup per second\",\n plural: \"Cups per second\"\n },\n to_anchor: 8\n },\n \"pnt/s\": {\n name: {\n singular: \"Pint per second\",\n plural: \"Pints per second\"\n },\n to_anchor: 16\n },\n \"pnt/min\": {\n name: {\n singular: \"Pint per minute\",\n plural: \"Pints per minute\"\n },\n to_anchor: 4 / 15\n },\n \"pnt/h\": {\n name: {\n singular: \"Pint per hour\",\n plural: \"Pints per hour\"\n },\n to_anchor: 1 / 225\n },\n \"qt/s\": {\n name: {\n singular: \"Quart per second\",\n plural: \"Quarts per second\"\n },\n to_anchor: 32\n },\n \"gal/s\": {\n name: {\n singular: \"Gallon per second\",\n plural: \"Gallons per second\"\n },\n to_anchor: 128\n },\n \"gal/min\": {\n name: {\n singular: \"Gallon per minute\",\n plural: \"Gallons per minute\"\n },\n to_anchor: 32 / 15\n },\n \"gal/h\": {\n name: {\n singular: \"Gallon per hour\",\n plural: \"Gallons per hour\"\n },\n to_anchor: 8 / 225\n },\n \"ft3/s\": {\n name: {\n singular: \"Cubic foot per second\",\n plural: \"Cubic feet per second\"\n },\n to_anchor: 957.506\n },\n \"ft3/min\": {\n name: {\n singular: \"Cubic foot per minute\",\n plural: \"Cubic feet per minute\"\n },\n to_anchor: 957.506 / 60\n },\n \"ft3/h\": {\n name: {\n singular: \"Cubic foot per hour\",\n plural: \"Cubic feet per hour\"\n },\n to_anchor: 957.506 / 3600\n },\n \"yd3/s\": {\n name: {\n singular: \"Cubic yard per second\",\n plural: \"Cubic yards per second\"\n },\n to_anchor: 25852.7\n },\n \"yd3/min\": {\n name: {\n singular: \"Cubic yard per minute\",\n plural: \"Cubic yards per minute\"\n },\n to_anchor: 25852.7 / 60\n },\n \"yd3/h\": {\n name: {\n singular: \"Cubic yard per hour\",\n plural: \"Cubic yards per hour\"\n },\n to_anchor: 25852.7 / 3600\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"l/s\",\n ratio: 33.8140227\n },\n imperial: {\n unit: \"fl-oz/s\",\n ratio: 1 / 33.8140227\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/illuminance.js\nvar require_illuminance = __commonJS({\n \"node_modules/convert-units/lib/definitions/illuminance.js\"(exports2, module2) {\n var metric;\n var imperial;\n metric = {\n \"lx\": {\n name: {\n singular: \"Lux\",\n plural: \"Lux\"\n },\n to_anchor: 1\n }\n };\n imperial = {\n \"ft-cd\": {\n name: {\n singular: \"Foot-candle\",\n plural: \"Foot-candles\"\n },\n to_anchor: 1\n }\n };\n module2.exports = {\n metric,\n imperial,\n _anchors: {\n metric: {\n unit: \"lx\",\n ratio: 1 / 10.76391\n },\n imperial: {\n unit: \"ft-cd\",\n ratio: 10.76391\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/frequency.js\nvar require_frequency = __commonJS({\n \"node_modules/convert-units/lib/definitions/frequency.js\"(exports2, module2) {\n var frequency;\n frequency = {\n mHz: {\n name: {\n singular: \"millihertz\",\n plural: \"millihertz\"\n },\n to_anchor: 1 / 1e3\n },\n Hz: {\n name: {\n singular: \"hertz\",\n plural: \"hertz\"\n },\n to_anchor: 1\n },\n kHz: {\n name: {\n singular: \"kilohertz\",\n plural: \"kilohertz\"\n },\n to_anchor: 1e3\n },\n MHz: {\n name: {\n singular: \"megahertz\",\n plural: \"megahertz\"\n },\n to_anchor: 1e3 * 1e3\n },\n GHz: {\n name: {\n singular: \"gigahertz\",\n plural: \"gigahertz\"\n },\n to_anchor: 1e3 * 1e3 * 1e3\n },\n THz: {\n name: {\n singular: \"terahertz\",\n plural: \"terahertz\"\n },\n to_anchor: 1e3 * 1e3 * 1e3 * 1e3\n },\n rpm: {\n name: {\n singular: \"rotation per minute\",\n plural: \"rotations per minute\"\n },\n to_anchor: 1 / 60\n },\n \"deg/s\": {\n name: {\n singular: \"degree per second\",\n plural: \"degrees per second\"\n },\n to_anchor: 1 / 360\n },\n \"rad/s\": {\n name: {\n singular: \"radian per second\",\n plural: \"radians per second\"\n },\n to_anchor: 1 / (Math.PI * 2)\n }\n };\n module2.exports = {\n metric: frequency,\n _anchors: {\n frequency: {\n unit: \"hz\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/definitions/angle.js\nvar require_angle = __commonJS({\n \"node_modules/convert-units/lib/definitions/angle.js\"(exports2, module2) {\n var angle;\n angle = {\n rad: {\n name: {\n singular: \"radian\",\n plural: \"radians\"\n },\n to_anchor: 180 / Math.PI\n },\n deg: {\n name: {\n singular: \"degree\",\n plural: \"degrees\"\n },\n to_anchor: 1\n },\n grad: {\n name: {\n singular: \"gradian\",\n plural: \"gradians\"\n },\n to_anchor: 9 / 10\n },\n arcmin: {\n name: {\n singular: \"arcminute\",\n plural: \"arcminutes\"\n },\n to_anchor: 1 / 60\n },\n arcsec: {\n name: {\n singular: \"arcsecond\",\n plural: \"arcseconds\"\n },\n to_anchor: 1 / 3600\n }\n };\n module2.exports = {\n metric: angle,\n _anchors: {\n metric: {\n unit: \"deg\",\n ratio: 1\n }\n }\n };\n }\n});\n\n// node_modules/convert-units/lib/index.js\nvar require_lib = __commonJS({\n \"node_modules/convert-units/lib/index.js\"(exports2, module2) {\n var convert;\n var keys = require_lodash5();\n var each = require_lodash19();\n var measures = {\n length: require_length(),\n area: require_area(),\n mass: require_mass(),\n volume: require_volume(),\n each: require_each(),\n temperature: require_temperature(),\n time: require_time(),\n digital: require_digital(),\n partsPer: require_partsPer(),\n speed: require_speed(),\n pace: require_pace(),\n pressure: require_pressure(),\n current: require_current(),\n voltage: require_voltage(),\n power: require_power(),\n reactivePower: require_reactivePower(),\n apparentPower: require_apparentPower(),\n energy: require_energy(),\n reactiveEnergy: require_reactiveEnergy(),\n volumeFlowRate: require_volumeFlowRate(),\n illuminance: require_illuminance(),\n frequency: require_frequency(),\n angle: require_angle()\n };\n var Converter;\n Converter = function(numerator, denominator) {\n if (denominator)\n this.val = numerator / denominator;\n else\n this.val = numerator;\n };\n Converter.prototype.from = function(from) {\n if (this.destination)\n throw new Error(\".from must be called before .to\");\n this.origin = this.getUnit(from);\n if (!this.origin) {\n this.throwUnsupportedUnitError(from);\n }\n return this;\n };\n Converter.prototype.to = function(to) {\n if (!this.origin)\n throw new Error(\".to must be called after .from\");\n this.destination = this.getUnit(to);\n var result, transform;\n if (!this.destination) {\n this.throwUnsupportedUnitError(to);\n }\n if (this.origin.abbr === this.destination.abbr) {\n return this.val;\n }\n if (this.destination.measure != this.origin.measure) {\n throw new Error(\"Cannot convert incompatible measures of \" + this.destination.measure + \" and \" + this.origin.measure);\n }\n result = this.val * this.origin.unit.to_anchor;\n if (this.origin.unit.anchor_shift) {\n result -= this.origin.unit.anchor_shift;\n }\n if (this.origin.system != this.destination.system) {\n transform = measures[this.origin.measure]._anchors[this.origin.system].transform;\n if (typeof transform === \"function\") {\n result = transform(result);\n } else {\n result *= measures[this.origin.measure]._anchors[this.origin.system].ratio;\n }\n }\n if (this.destination.unit.anchor_shift) {\n result += this.destination.unit.anchor_shift;\n }\n return result / this.destination.unit.to_anchor;\n };\n Converter.prototype.toBest = function(options) {\n if (!this.origin)\n throw new Error(\".toBest must be called after .from\");\n var options = Object.assign({\n exclude: [],\n cutOffNumber: 1\n }, options);\n var best;\n each(this.possibilities(), function(possibility) {\n var unit = this.describe(possibility);\n var isIncluded = options.exclude.indexOf(possibility) === -1;\n if (isIncluded && unit.system === this.origin.system) {\n var result = this.to(possibility);\n if (!best || result >= options.cutOffNumber && result < best.val) {\n best = {\n val: result,\n unit: possibility,\n singular: unit.singular,\n plural: unit.plural\n };\n }\n }\n }.bind(this));\n return best;\n };\n Converter.prototype.getUnit = function(abbr) {\n var found;\n each(measures, function(systems, measure) {\n each(systems, function(units, system) {\n if (system == \"_anchors\")\n return false;\n each(units, function(unit, testAbbr) {\n if (testAbbr == abbr) {\n found = {\n abbr,\n measure,\n system,\n unit\n };\n return false;\n }\n });\n if (found)\n return false;\n });\n if (found)\n return false;\n });\n return found;\n };\n var describe = function(resp) {\n return {\n abbr: resp.abbr,\n measure: resp.measure,\n system: resp.system,\n singular: resp.unit.name.singular,\n plural: resp.unit.name.plural\n };\n };\n Converter.prototype.describe = function(abbr) {\n var resp = Converter.prototype.getUnit(abbr);\n var desc = null;\n try {\n desc = describe(resp);\n } catch (err) {\n this.throwUnsupportedUnitError(abbr);\n }\n return desc;\n };\n Converter.prototype.list = function(measure) {\n var list = [];\n each(measures, function(systems, testMeasure) {\n if (measure && measure !== testMeasure)\n return;\n each(systems, function(units, system) {\n if (system == \"_anchors\")\n return false;\n each(units, function(unit, abbr) {\n list = list.concat(describe({\n abbr,\n measure: testMeasure,\n system,\n unit\n }));\n });\n });\n });\n return list;\n };\n Converter.prototype.throwUnsupportedUnitError = function(what) {\n var validUnits = [];\n each(measures, function(systems, measure) {\n each(systems, function(units, system) {\n if (system == \"_anchors\")\n return false;\n validUnits = validUnits.concat(keys(units));\n });\n });\n throw new Error(\"Unsupported unit \" + what + \", use one of: \" + validUnits.join(\", \"));\n };\n Converter.prototype.possibilities = function(measure) {\n var possibilities = [];\n if (!this.origin && !measure) {\n each(keys(measures), function(measure2) {\n each(measures[measure2], function(units, system) {\n if (system == \"_anchors\")\n return false;\n possibilities = possibilities.concat(keys(units));\n });\n });\n } else {\n measure = measure || this.origin.measure;\n each(measures[measure], function(units, system) {\n if (system == \"_anchors\")\n return false;\n possibilities = possibilities.concat(keys(units));\n });\n }\n return possibilities;\n };\n Converter.prototype.measures = function() {\n return keys(measures);\n };\n convert = function(value) {\n return new Converter(value);\n };\n module2.exports = convert;\n }\n});\n\n// node_modules/parsel-js/dist/parsel.min.cjs\nvar require_parsel_min = __commonJS({\n \"node_modules/parsel-js/dist/parsel.min.cjs\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var e = { attribute: /\\[\\s*(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)\\s*(?:(?<operator>\\W?=)\\s*(?<value>.+?)\\s*(\\s(?<caseSensitive>[iIsS]))?\\s*)?\\]/gu, id: /#(?<name>[-\\w\\P{ASCII}]+)/gu, class: /\\.(?<name>[-\\w\\P{ASCII}]+)/gu, comma: /\\s*,\\s*/g, combinator: /\\s*[\\s>+~]\\s*/g, \"pseudo-element\": /::(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>¶*)\\))?/gu, \"pseudo-class\": /:(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>¶*)\\))?/gu, universal: /(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?\\*/gu, type: /(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)/gu };\n var t = /* @__PURE__ */ new Set([\"combinator\", \"comma\"]);\n var n = /* @__PURE__ */ new Set([\"not\", \"is\", \"where\", \"has\", \"matches\", \"-moz-any\", \"-webkit-any\", \"nth-child\", \"nth-last-child\"]);\n var s = /(?<index>[\\dn+-]+)\\s+of\\s+(?<subtree>.+)/;\n var o = { \"nth-child\": s, \"nth-last-child\": s };\n var r = (t2) => {\n switch (t2) {\n case \"pseudo-element\":\n case \"pseudo-class\":\n return new RegExp(e[t2].source.replace(\"(?<argument>\\xB6*)\", \"(?<argument>.*)\"), \"gu\");\n default:\n return e[t2];\n }\n };\n function c(e2, t2) {\n let n2 = 0, s2 = \"\";\n for (; t2 < e2.length; t2++) {\n const o2 = e2[t2];\n switch (o2) {\n case \"(\":\n ++n2;\n break;\n case \")\":\n --n2;\n }\n if (s2 += o2, 0 === n2) return s2;\n }\n return s2;\n }\n function i(n2, s2 = e) {\n if (!n2) return [];\n const o2 = [n2];\n for (const [e2, t2] of Object.entries(s2)) for (let n3 = 0; n3 < o2.length; n3++) {\n const s3 = o2[n3];\n if (\"string\" != typeof s3) continue;\n t2.lastIndex = 0;\n const r3 = t2.exec(s3);\n if (!r3) continue;\n const c2 = r3.index - 1, i2 = [], a2 = r3[0], l2 = s3.slice(0, c2 + 1);\n l2 && i2.push(l2), i2.push({ ...r3.groups, type: e2, content: a2 });\n const u2 = s3.slice(c2 + a2.length + 1);\n u2 && i2.push(u2), o2.splice(n3, 1, ...i2);\n }\n let r2 = 0;\n for (const e2 of o2) switch (typeof e2) {\n case \"string\":\n throw new Error(`Unexpected sequence ${e2} found at index ${r2}`);\n case \"object\":\n r2 += e2.content.length, e2.pos = [r2 - e2.content.length, r2], t.has(e2.type) && (e2.content = e2.content.trim() || \" \");\n }\n return o2;\n }\n var a = /(['\"])([^\\\\\\n]+?)\\1/g;\n var l = /\\\\./g;\n function u(t2, n2 = e) {\n if (\"\" === (t2 = t2.trim())) return [];\n const s2 = [];\n t2 = (t2 = t2.replace(l, (e2, t3) => (s2.push({ value: e2, offset: t3 }), \"\\uE000\".repeat(e2.length)))).replace(a, (e2, t3, n3, o3) => (s2.push({ value: e2, offset: o3 }), `${t3}${\"\\uE001\".repeat(n3.length)}${t3}`));\n {\n let e2, n3 = 0;\n for (; (e2 = t2.indexOf(\"(\", n3)) > -1; ) {\n const o3 = c(t2, e2);\n s2.push({ value: o3, offset: e2 }), t2 = `${t2.substring(0, e2)}(${\"\\xB6\".repeat(o3.length - 2)})${t2.substring(e2 + o3.length)}`, n3 = e2 + o3.length;\n }\n }\n const o2 = i(t2, n2), u2 = /* @__PURE__ */ new Set();\n for (const e2 of s2.reverse()) for (const t3 of o2) {\n const { offset: n3, value: s3 } = e2;\n if (!(t3.pos[0] <= n3 && n3 + s3.length <= t3.pos[1])) continue;\n const { content: o3 } = t3, r2 = n3 - t3.pos[0];\n t3.content = o3.slice(0, r2) + s3 + o3.slice(r2 + s3.length), t3.content !== o3 && u2.add(t3);\n }\n for (const e2 of u2) {\n const t3 = r(e2.type);\n if (!t3) throw new Error(`Unknown token type: ${e2.type}`);\n t3.lastIndex = 0;\n const n3 = t3.exec(e2.content);\n if (!n3) throw new Error(`Unable to parse content for ${e2.type}: ${e2.content}`);\n Object.assign(e2, n3.groups);\n }\n return o2;\n }\n function p(e2, { list: t2 = true } = {}) {\n if (t2 && e2.find((e3) => \"comma\" === e3.type)) {\n const t3 = [], n2 = [];\n for (let s2 = 0; s2 < e2.length; s2++) if (\"comma\" === e2[s2].type) {\n if (0 === n2.length) throw new Error(\"Incorrect comma at \" + s2);\n t3.push(p(n2, { list: false })), n2.length = 0;\n } else n2.push(e2[s2]);\n if (0 === n2.length) throw new Error(\"Trailing comma\");\n return t3.push(p(n2, { list: false })), { type: \"list\", list: t3 };\n }\n for (let t3 = e2.length - 1; t3 >= 0; t3--) {\n let n2 = e2[t3];\n if (\"combinator\" === n2.type) {\n let s2 = e2.slice(0, t3), o2 = e2.slice(t3 + 1);\n return { type: \"complex\", combinator: n2.content, left: p(s2), right: p(o2) };\n }\n }\n switch (e2.length) {\n case 0:\n throw new Error(\"Could not build AST.\");\n case 1:\n return e2[0];\n default:\n return { type: \"compound\", list: [...e2] };\n }\n }\n function* f(e2, t2) {\n switch (e2.type) {\n case \"list\":\n for (let t3 of e2.list) yield* f(t3, e2);\n break;\n case \"complex\":\n yield* f(e2.left, e2), yield* f(e2.right, e2);\n break;\n case \"compound\":\n yield* e2.list.map((t3) => [t3, e2]);\n break;\n default:\n yield [e2, t2];\n }\n }\n function h(e2, { recursive: t2 = true, list: s2 = true } = {}) {\n const r2 = u(e2);\n if (!r2) return;\n const c2 = p(r2, { list: s2 });\n if (!t2) return c2;\n for (const [e3] of f(c2)) {\n if (\"pseudo-class\" !== e3.type || !e3.argument) continue;\n if (!n.has(e3.name)) continue;\n let t3 = e3.argument;\n const s3 = o[e3.name];\n if (s3) {\n const n2 = s3.exec(t3);\n if (!n2) continue;\n Object.assign(e3, n2.groups), t3 = n2.groups.subtree;\n }\n t3 && Object.assign(e3, { subtree: h(t3, { recursive: true, list: true }) });\n }\n return c2;\n }\n function m(e2, t2) {\n return t2 = t2 || Math.max(...e2) + 1, e2[0] * (t2 << 1) + e2[1] * t2 + e2[2];\n }\n 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) {\n let s2 = t2;\n if (\"string\" == typeof s2 && (s2 = h(s2, { recursive: true })), !s2) return [];\n if (\"list\" === s2.type && \"list\" in s2) {\n let t3 = 10;\n const n2 = s2.list.map((n3) => {\n const s3 = e2(n3);\n return t3 = Math.max(t3, ...e2(n3)), s3;\n }), o3 = n2.map((e3) => m(e3, t3));\n return n2[o3.indexOf(Math.max(...o3))];\n }\n const o2 = [0, 0, 0];\n for (const [t3] of f(s2)) switch (t3.type) {\n case \"id\":\n o2[0]++;\n break;\n case \"class\":\n case \"attribute\":\n o2[1]++;\n break;\n case \"pseudo-element\":\n case \"type\":\n o2[2]++;\n break;\n case \"pseudo-class\":\n if (\"where\" === t3.name) break;\n if (!n.has(t3.name) || !t3.subtree) {\n o2[1]++;\n break;\n }\n e2(t3.subtree).forEach((e3, t4) => o2[t4] += e3), \"nth-child\" !== t3.name && \"nth-last-child\" !== t3.name || o2[1]++;\n }\n return o2;\n }, exports2.specificityToNumber = m, exports2.stringify = function(e2) {\n let t2;\n return t2 = Array.isArray(e2) ? e2 : [...f(e2)].map(([e3]) => e3), t2.map((e3) => e3.content).join(\"\");\n }, exports2.tokenize = u, exports2.tokenizeBy = i, exports2.walk = function(e2, t2, n2) {\n if (e2) for (const [s2, o2] of f(e2, n2)) t2(s2, o2);\n };\n }\n});\n\n// node_modules/@tscircuit/soup-util/dist/index.cjs\nvar require_dist = __commonJS({\n \"node_modules/@tscircuit/soup-util/dist/index.cjs\"(exports2, module2) {\n \"use strict\";\n var __create2 = Object.create;\n var __defProp2 = Object.defineProperty;\n var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames2 = Object.getOwnPropertyNames;\n var __getProtoOf2 = Object.getPrototypeOf;\n var __hasOwnProp2 = Object.prototype.hasOwnProperty;\n var __export2 = (target, all) => {\n for (var name in all)\n __defProp2(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps2 = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames2(from))\n if (!__hasOwnProp2.call(to, key) && key !== except)\n __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp2(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n ));\n var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, \"__esModule\", { value: true }), mod);\n var soup_util_exports = {};\n __export2(soup_util_exports, {\n applySelector: () => applySelector,\n applySelectorAST: () => applySelectorAST,\n directionToVec: () => directionToVec,\n oppositeDirection: () => oppositeDirection,\n oppositeSide: () => oppositeSide,\n rotateClockwise: () => rotateClockwise,\n rotateCounterClockwise: () => rotateCounterClockwise,\n rotateDirection: () => rotateDirection,\n su: () => su_default,\n transformPCBElement: () => transformPCBElement2,\n transformPCBElements: () => transformPCBElements2,\n transformSchematicElement: () => transformSchematicElement,\n transformSchematicElements: () => transformSchematicElements,\n vecToDirection: () => vecToDirection\n });\n module2.exports = __toCommonJS2(soup_util_exports);\n var su5 = (soup) => {\n const su22 = new Proxy(\n {},\n {\n get: (proxy_target, component_type) => {\n return {\n get: (id) => soup.find(\n (e) => e.type === component_type && e[`${component_type}_id`] === id\n ),\n getUsing: (using) => {\n const keys = Object.keys(using);\n if (keys.length !== 1) {\n throw new Error(\n \"getUsing requires exactly one key, e.g. { pcb_component_id }\"\n );\n }\n const join_key = keys[0];\n const join_type = join_key.replace(\"_id\", \"\");\n const joiner = soup.find(\n (e) => e.type === join_type && e[join_key] === using[join_key]\n );\n if (!joiner)\n return null;\n return soup.find(\n (e) => e.type === component_type && e[`${component_type}_id`] === joiner[`${component_type}_id`]\n );\n },\n getWhere: (where) => {\n const keys = Object.keys(where);\n return soup.find(\n (e) => e.type === component_type && keys.every((key) => e[key] === where[key])\n );\n },\n list: (where) => {\n const keys = !where ? [] : Object.keys(where);\n return soup.filter(\n (e) => e.type === component_type && keys.every((key) => e[key] === where[key])\n );\n },\n select: (selector) => {\n if (component_type === \"source_component\") {\n return soup.find(\n (e) => e.type === \"source_component\" && e.name === selector.replace(/\\./g, \"\")\n );\n } else if (component_type === \"pcb_port\" || component_type === \"source_port\" || component_type === \"schematic_port\") {\n const [component_name, port_selector] = selector.replace(/\\./g, \"\").split(/[\\s\\>]+/);\n const source_component = soup.find(\n (e) => e.type === \"source_component\" && e.name === component_name\n );\n if (!source_component)\n return null;\n const source_port2 = soup.find(\n (e) => e.type === \"source_port\" && e.source_component_id === source_component.source_component_id && (e.name === port_selector || (e.port_hints ?? []).includes(port_selector))\n );\n if (!source_port2)\n return null;\n if (component_type === \"source_port\")\n return source_port2;\n if (component_type === \"pcb_port\") {\n return soup.find(\n (e) => e.type === \"pcb_port\" && e.source_port_id === source_port2.source_port_id\n );\n } else if (component_type === \"schematic_port\") {\n return soup.find(\n (e) => e.type === \"schematic_port\" && e.source_port_id === source_port2.source_port_id\n );\n }\n }\n }\n };\n }\n }\n );\n return su22;\n };\n su5.unparsed = su5;\n var su_default = su5;\n var directionToVec = (direction) => {\n if (direction === \"up\")\n return { x: 0, y: 1 };\n else if (direction === \"down\")\n return { x: 0, y: -1 };\n else if (direction === \"left\")\n return { x: -1, y: 0 };\n else if (direction === \"right\")\n return { x: 1, y: 0 };\n else\n throw new Error(\"Invalid direction\");\n };\n var vecToDirection = ({ x, y }) => {\n if (x > y)\n y = 0;\n if (y > x)\n x = 0;\n if (x > 0 && y === 0)\n return \"right\";\n else if (x < 0 && y === 0)\n return \"left\";\n else if (x === 0 && y > 0)\n return \"up\";\n else if (x === 0 && y < 0)\n return \"down\";\n else\n throw new Error(`Invalid vector for direction conversion (${x}, ${y})`);\n };\n var rotateClockwise = (direction) => {\n if (direction === \"up\")\n return \"right\";\n else if (direction === \"right\")\n return \"down\";\n else if (direction === \"down\")\n return \"left\";\n else if (direction === \"left\")\n return \"up\";\n throw new Error(`Invalid direction: ${direction}`);\n };\n var rotateCounterClockwise = (direction) => {\n if (direction === \"up\")\n return \"left\";\n else if (direction === \"left\")\n return \"down\";\n else if (direction === \"down\")\n return \"right\";\n else if (direction === \"right\")\n return \"up\";\n throw new Error(`Invalid direction: ${direction}`);\n };\n var rotateDirection = (direction, num90DegreeClockwiseTurns) => {\n while (num90DegreeClockwiseTurns > 0) {\n direction = rotateClockwise(direction);\n num90DegreeClockwiseTurns--;\n }\n while (num90DegreeClockwiseTurns < 0) {\n direction = rotateCounterClockwise(direction);\n num90DegreeClockwiseTurns++;\n }\n return direction;\n };\n var oppositeDirection = (direction) => {\n if (direction === \"up\")\n return \"down\";\n else if (direction === \"down\")\n return \"up\";\n else if (direction === \"left\")\n return \"right\";\n else if (direction === \"right\")\n return \"left\";\n throw new Error(`Invalid direction: ${direction}`);\n };\n var oppositeSide = (sideOrDir) => {\n if (sideOrDir === \"top\" || sideOrDir === \"up\")\n return \"bottom\";\n else if (sideOrDir === \"bottom\" || sideOrDir === \"down\")\n return \"top\";\n else if (sideOrDir === \"left\")\n return \"right\";\n else if (sideOrDir === \"right\")\n return \"left\";\n throw new Error(`Invalid sideOrDir: ${sideOrDir}`);\n };\n var import_transformation_matrix10 = require(\"transformation-matrix\");\n var transformSchematicElement = (elm, matrix) => {\n if (elm.type === \"schematic_component\") {\n elm.center = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.center);\n } else if (elm.type === \"schematic_port\") {\n elm.center = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.center);\n if (elm.facing_direction) {\n elm.facing_direction = rotateDirection(\n elm.facing_direction,\n -(Math.atan2(matrix.b, matrix.a) / Math.PI) * 2\n );\n }\n } else if (elm.type === \"schematic_text\") {\n elm.position = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.position);\n } else if (elm.type === \"schematic_trace\") {\n } else if (elm.type === \"schematic_box\") {\n const { x, y } = (0, import_transformation_matrix10.applyToPoint)(matrix, { x: elm.x, y: elm.y });\n elm.x = x;\n elm.y = y;\n } else if (elm.type === \"schematic_line\") {\n const { x: x1, y: y1 } = (0, import_transformation_matrix10.applyToPoint)(matrix, { x: elm.x1, y: elm.y1 });\n const { x: x2, y: y2 } = (0, import_transformation_matrix10.applyToPoint)(matrix, { x: elm.x2, y: elm.y2 });\n elm.x1 = x1;\n elm.y1 = y1;\n elm.x2 = x2;\n elm.y2 = y2;\n }\n return elm;\n };\n var transformSchematicElements = (elms, matrix) => {\n return elms.map((elm) => transformSchematicElement(elm, matrix));\n };\n var transformPCBElement2 = (elm, matrix) => {\n if (elm.type === \"pcb_plated_hole\" || elm.type === \"pcb_hole\" || elm.type === \"pcb_via\" || elm.type === \"pcb_smtpad\" || elm.type === \"pcb_port\") {\n const { x, y } = (0, import_transformation_matrix10.applyToPoint)(matrix, { x: elm.x, y: elm.y });\n elm.x = x;\n elm.y = y;\n } else if (elm.type === \"pcb_silkscreen_text\" || elm.type === \"pcb_fabrication_note_text\") {\n elm.anchor_position = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.anchor_position);\n } else if (elm.type === \"pcb_silkscreen_circle\" || elm.type === \"pcb_silkscreen_rect\" || elm.type === \"pcb_component\") {\n elm.center = (0, import_transformation_matrix10.applyToPoint)(matrix, elm.center);\n } else if (elm.type === \"pcb_silkscreen_path\" || elm.type === \"pcb_trace\" || elm.type === \"pcb_fabrication_note_path\") {\n elm.route = elm.route.map((rp) => {\n const tp = (0, import_transformation_matrix10.applyToPoint)(matrix, rp);\n rp.x = tp.x;\n rp.y = tp.y;\n return rp;\n });\n } else if (elm.type === \"pcb_silkscreen_line\") {\n const p1 = { x: elm.x1, y: elm.y1 };\n const p2 = { x: elm.x2, y: elm.y2 };\n const p1t = (0, import_transformation_matrix10.applyToPoint)(matrix, p1);\n const p2t = (0, import_transformation_matrix10.applyToPoint)(matrix, p2);\n elm.x1 = p1t.x;\n elm.y1 = p1t.y;\n elm.x2 = p2t.x;\n elm.y2 = p2t.y;\n } else if (elm.type === \"cad_component\") {\n const newPos = (0, import_transformation_matrix10.applyToPoint)(matrix, {\n x: elm.position.x,\n y: elm.position.y\n });\n elm.position.x = newPos.x;\n elm.position.y = newPos.y;\n }\n return elm;\n };\n var transformPCBElements2 = (elms, matrix) => {\n const tsr = (0, import_transformation_matrix10.decomposeTSR)(matrix);\n const flipPadWidthHeight = Math.round(tsr.rotation.angle / (Math.PI / 2)) % 2 === 1;\n let transformedElms = elms.map((elm) => transformPCBElement2(elm, matrix));\n if (flipPadWidthHeight) {\n transformedElms = transformedElms.map((elm) => {\n if (elm.type === \"pcb_smtpad\" && elm.shape === \"rect\") {\n ;\n [elm.width, elm.height] = [elm.height, elm.width];\n }\n return elm;\n });\n }\n return transformedElms;\n };\n var parsel = __toESM2(require_parsel_min(), 1);\n var convertAbbrToType = (abbr) => {\n switch (abbr) {\n case \"port\":\n return \"source_port\";\n case \"net\":\n return \"source_net\";\n case \"power\":\n return \"simple_power_source\";\n }\n return abbr;\n };\n var filterByType = (elements, type) => {\n type = convertAbbrToType(type);\n return elements.filter(\n (elm) => \"ftype\" in elm && elm.ftype === type || elm.type === type\n );\n };\n var applySelector = (elements, selectorRaw) => {\n const selectorAST = parsel.parse(selectorRaw);\n return applySelectorAST(elements, selectorAST);\n };\n var doesElmMatchClassName = (elm, className) => \"name\" in elm && elm.name === className || \"port_hints\" in elm && elm.port_hints?.includes(className);\n var applySelectorAST = (elements, selectorAST) => {\n switch (selectorAST.type) {\n case \"complex\": {\n switch (selectorAST.combinator) {\n case \" \":\n case \">\": {\n const { left, right } = selectorAST;\n if (left.type === \"class\" || left.type === \"type\") {\n let matchElms;\n if (left.type === \"class\") {\n matchElms = elements.filter(\n (elm) => doesElmMatchClassName(elm, left.name)\n );\n } else if (left.type === \"type\") {\n matchElms = filterByType(elements, left.name);\n } else {\n matchElms = [];\n }\n const childrenOfMatchingElms = matchElms.flatMap(\n (matchElm) => elements.filter(\n (elm) => elm[`${matchElm.type}_id`] === matchElm[`${matchElm.type}_id`] && elm !== matchElm\n )\n );\n return applySelectorAST(childrenOfMatchingElms, right);\n } else {\n throw new Error(`unsupported selector type \"${left.type}\" `);\n }\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for complex combinator \"${selectorAST.combinator}\"`\n );\n }\n }\n return [];\n }\n case \"compound\": {\n const conditionsToMatch = selectorAST.list.map((part) => {\n switch (part.type) {\n case \"class\": {\n return (elm) => doesElmMatchClassName(elm, part.name);\n }\n case \"type\": {\n const name = convertAbbrToType(part.name);\n return (elm) => elm.type === name;\n }\n }\n });\n return elements.filter(\n (elm) => conditionsToMatch.every((condFn) => condFn?.(elm))\n );\n }\n case \"type\": {\n return filterByType(elements, selectorAST.name);\n }\n case \"class\": {\n return elements.filter(\n (elm) => doesElmMatchClassName(elm, selectorAST.name)\n );\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for type: \"${selectorAST.type}\" ${JSON.stringify(selectorAST, null, \" \")}`\n );\n }\n }\n };\n }\n});\n\n// node_modules/use-mouse-matrix-transform/dist/index.js\nvar require_dist2 = __commonJS({\n \"node_modules/use-mouse-matrix-transform/dist/index.js\"(exports2, module2) {\n \"use strict\";\n var __defProp2 = Object.defineProperty;\n var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames2 = Object.getOwnPropertyNames;\n var __hasOwnProp2 = Object.prototype.hasOwnProperty;\n var __export2 = (target, all) => {\n for (var name in all)\n __defProp2(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps2 = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames2(from))\n if (!__hasOwnProp2.call(to, key) && key !== except)\n __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, \"__esModule\", { value: true }), mod);\n var src_exports2 = {};\n __export2(src_exports2, {\n default: () => src_default,\n useMouseMatrixTransform: () => useMouseMatrixTransform2\n });\n module2.exports = __toCommonJS2(src_exports2);\n var import_transformation_matrix10 = require(\"transformation-matrix\");\n var import_react20 = require(\"react\");\n var useMouseMatrixTransform2 = (props = {}) => {\n const extRef = (0, import_react20.useRef)(null);\n const [lastDragCancelTime, setLastDragCancelTime] = (0, import_react20.useState)(0);\n const outerCanvasElm = props.canvasElm ?? extRef.current;\n const [internalTransform, setInternalTransform] = (0, import_react20.useState)(\n props.initialTransform ?? (0, import_transformation_matrix10.identity)()\n );\n const [waitCounter, setWaitCounter] = (0, import_react20.useState)(0);\n const [extChangeCounter, incExtChangeCounter] = (0, import_react20.useReducer)((s) => s + 1, 0);\n const setTransform = (0, import_react20.useCallback)(\n (newTransform) => {\n if (props.onSetTransform) {\n props.onSetTransform(newTransform);\n }\n if (!props.transform) {\n setInternalTransform(newTransform);\n }\n },\n [props.onSetTransform, setInternalTransform]\n );\n const setTransformExt = (0, import_react20.useCallback)(\n (newTransform) => {\n setTransform(newTransform);\n incExtChangeCounter();\n },\n [setTransform]\n );\n const transform = props.transform ?? internalTransform;\n const cancelDrag = (0, import_react20.useCallback)(() => {\n setLastDragCancelTime(Date.now());\n }, []);\n (0, import_react20.useEffect)(() => {\n const canvasElm = props.canvasElm ?? extRef.current;\n if (canvasElm && !outerCanvasElm) {\n setWaitCounter(waitCounter + 1);\n return;\n }\n if (!canvasElm) {\n const timeout = setTimeout(() => {\n setWaitCounter(waitCounter + 1);\n }, 100);\n return () => clearTimeout(timeout);\n }\n let init_tf = props.transform ?? internalTransform;\n let m0 = { x: 0, y: 0 }, m1 = { x: 0, y: 0 }, md = false, mlastrel = { x: 0, y: 0 };\n const getMousePos = (e) => {\n return {\n x: e.pageX - canvasElm.getBoundingClientRect().left - window.scrollX,\n y: e.pageY - canvasElm.getBoundingClientRect().top - window.scrollY\n };\n };\n function handleMouseDown(e) {\n m0 = getMousePos(e);\n if (Date.now() - lastDragCancelTime < 100)\n return;\n md = true;\n e.preventDefault();\n }\n function handleMouseUp(e) {\n if (!md)\n return;\n m1 = getMousePos(e);\n const new_tf = (0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(m1.x - m0.x, m1.y - m0.y), init_tf);\n setTransform(new_tf);\n init_tf = new_tf;\n md = false;\n }\n function handleMouseMove(e) {\n mlastrel = getMousePos(e);\n if (!md)\n return;\n m1 = getMousePos(e);\n setTransform((0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(m1.x - m0.x, m1.y - m0.y), init_tf));\n }\n function handleMouseWheel(e) {\n const center = getMousePos(e);\n const new_tf = (0, import_transformation_matrix10.compose)(\n (0, import_transformation_matrix10.translate)(center.x, center.y),\n (0, import_transformation_matrix10.scale)(1 - e.deltaY / 1e3, 1 - e.deltaY / 1e3),\n (0, import_transformation_matrix10.translate)(-center.x, -center.y),\n init_tf\n );\n setTransform(new_tf);\n init_tf = new_tf;\n e.preventDefault();\n }\n function handleMouseOut(e) {\n if (!md)\n return;\n if (canvasElm) {\n const boundingBox = canvasElm.getBoundingClientRect();\n if (e.clientX >= boundingBox.left + 10 && e.clientX <= boundingBox.right - 10 && e.clientY >= boundingBox.top + 10 && e.clientY <= boundingBox.bottom - 10) {\n return;\n }\n }\n md = false;\n m1 = getMousePos(e);\n const new_tf = (0, import_transformation_matrix10.compose)((0, import_transformation_matrix10.translate)(m1.x - m0.x, m1.y - m0.y), init_tf);\n setTransform(new_tf);\n init_tf = new_tf;\n }\n canvasElm.addEventListener(\"mousedown\", handleMouseDown);\n canvasElm.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"mousemove\", handleMouseMove);\n canvasElm.addEventListener(\"mouseout\", handleMouseOut);\n canvasElm.addEventListener(\"wheel\", handleMouseWheel);\n return () => {\n canvasElm.removeEventListener(\"mousedown\", handleMouseDown);\n canvasElm.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n canvasElm.removeEventListener(\"mouseout\", handleMouseOut);\n canvasElm.removeEventListener(\"wheel\", handleMouseWheel);\n };\n }, [outerCanvasElm, waitCounter, extChangeCounter, lastDragCancelTime]);\n const applyTransformToPoint = (0, import_react20.useCallback)(\n (obj) => (0, import_transformation_matrix10.applyToPoint)(transform, obj),\n [transform]\n );\n return {\n ref: extRef,\n transform,\n applyTransformToPoint,\n setTransform: setTransformExt,\n cancelDrag\n };\n };\n var src_default = useMouseMatrixTransform2;\n }\n});\n\n// src/index.tsx\nvar src_exports = {};\n__export(src_exports, {\n CanvasElementsRenderer: () => CanvasElementsRenderer,\n PCBViewer: () => PCBViewer,\n applyEditEvents: () => applyEditEvents\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/PCBViewer.tsx\nvar import_react19 = require(\"react\");\nvar import_react_fiber = require(\"@tscircuit/react-fiber\");\nvar import_builder = require(\"@tscircuit/builder\");\n\n// src/components/CanvasElementsRenderer.tsx\nvar import_react15 = require(\"react\");\n\n// src/components/CanvasPrimitiveRenderer.tsx\nvar import_react_supergrid = require(\"react-supergrid\");\nvar import_react4 = require(\"react\");\n\n// src/lib/Drawer.ts\nvar import_transformation_matrix = require(\"transformation-matrix\");\n\n// src/lib/colors.ts\nvar colors_default = {\n \"3d_viewer\": {\n background_bottom: \"rgb(102, 102, 128)\",\n background_top: \"rgb(204, 204, 230)\",\n board: \"rgb(51, 43, 23)\",\n copper: \"rgb(179, 156, 0)\",\n silkscreen_bottom: \"rgb(230, 230, 230)\",\n silkscreen_top: \"rgb(230, 230, 230)\",\n soldermask: \"rgb(20, 51, 36)\",\n solderpaste: \"rgb(128, 128, 128)\"\n },\n board: {\n anchor: \"rgb(255, 38, 226)\",\n aux_items: \"rgb(255, 255, 255)\",\n b_adhes: \"rgb(0, 0, 132)\",\n b_crtyd: \"rgb(255, 38, 226)\",\n b_fab: \"rgb(88, 93, 132)\",\n b_mask: \"rgba(2, 255, 238, 0.400)\",\n b_paste: \"rgb(0, 194, 194)\",\n b_silks: \"rgb(232, 178, 167)\",\n background: \"rgb(0, 16, 35)\",\n cmts_user: \"rgb(89, 148, 220)\",\n copper: {\n b: \"rgb(77, 127, 196)\",\n f: \"rgb(200, 52, 52)\",\n in1: \"rgb(127, 200, 127)\",\n in10: \"rgb(237, 124, 51)\",\n in11: \"rgb(91, 195, 235)\",\n in12: \"rgb(247, 111, 142)\",\n in13: \"rgb(167, 165, 198)\",\n in14: \"rgb(40, 204, 217)\",\n in15: \"rgb(232, 178, 167)\",\n in16: \"rgb(242, 237, 161)\",\n in17: \"rgb(237, 124, 51)\",\n in18: \"rgb(91, 195, 235)\",\n in19: \"rgb(247, 111, 142)\",\n in2: \"rgb(206, 125, 44)\",\n in20: \"rgb(167, 165, 198)\",\n in21: \"rgb(40, 204, 217)\",\n in22: \"rgb(232, 178, 167)\",\n in23: \"rgb(242, 237, 161)\",\n in24: \"rgb(237, 124, 51)\",\n in25: \"rgb(91, 195, 235)\",\n in26: \"rgb(247, 111, 142)\",\n in27: \"rgb(167, 165, 198)\",\n in28: \"rgb(40, 204, 217)\",\n in29: \"rgb(232, 178, 167)\",\n in3: \"rgb(79, 203, 203)\",\n in30: \"rgb(242, 237, 161)\",\n in4: \"rgb(219, 98, 139)\",\n in5: \"rgb(167, 165, 198)\",\n in6: \"rgb(40, 204, 217)\",\n in7: \"rgb(232, 178, 167)\",\n in8: \"rgb(242, 237, 161)\",\n in9: \"rgb(141, 203, 129)\"\n },\n cursor: \"rgb(255, 255, 255)\",\n drc: \"rgb(194, 194, 194)\",\n drc_error: \"rgba(215, 91, 107, 0.800)\",\n drc_exclusion: \"rgb(255, 255, 255)\",\n drc_warning: \"rgba(255, 208, 66, 0.902)\",\n dwgs_user: \"rgb(194, 194, 194)\",\n eco1_user: \"rgb(180, 219, 210)\",\n eco2_user: \"rgb(216, 200, 82)\",\n edge_cuts: \"rgb(208, 210, 205)\",\n f_adhes: \"rgb(132, 0, 132)\",\n f_crtyd: \"rgb(255, 0, 245)\",\n f_fab: \"rgb(175, 175, 175)\",\n f_mask: \"rgba(216, 100, 255, 0.400)\",\n f_paste: \"rgba(180, 160, 154, 0.902)\",\n f_silks: \"rgb(242, 237, 161)\",\n footprint_text_back: \"rgb(0, 0, 132)\",\n footprint_text_front: \"rgb(194, 194, 194)\",\n footprint_text_invisible: \"rgb(132, 132, 132)\",\n grid: \"rgb(132, 132, 132)\",\n grid_axes: \"rgb(194, 194, 194)\",\n margin: \"rgb(255, 38, 226)\",\n microvia: \"rgb(0, 132, 132)\",\n no_connect: \"rgb(0, 0, 132)\",\n pad_back: \"rgb(77, 127, 196)\",\n pad_front: \"rgb(200, 52, 52)\",\n pad_plated_hole: \"rgb(194, 194, 0)\",\n pad_through_hole: \"rgb(227, 183, 46)\",\n plated_hole: \"rgb(26, 196, 210)\",\n ratsnest: \"rgba(245, 255, 213, 0.702)\",\n select_overlay: \"rgb(4, 255, 67)\",\n through_via: \"rgb(236, 236, 236)\",\n user_1: \"rgb(194, 194, 194)\",\n user_2: \"rgb(89, 148, 220)\",\n user_3: \"rgb(180, 219, 210)\",\n user_4: \"rgb(216, 200, 82)\",\n user_5: \"rgb(194, 194, 194)\",\n user_6: \"rgb(89, 148, 220)\",\n user_7: \"rgb(180, 219, 210)\",\n user_8: \"rgb(216, 200, 82)\",\n user_9: \"rgb(232, 178, 167)\",\n via_blind_buried: \"rgb(187, 151, 38)\",\n via_hole: \"rgb(227, 183, 46)\",\n via_micro: \"rgb(0, 132, 132)\",\n via_through: \"rgb(236, 236, 236)\",\n worksheet: \"rgb(200, 114, 171)\"\n },\n gerbview: {\n axes: \"rgb(0, 0, 132)\",\n background: \"rgb(0, 0, 0)\",\n dcodes: \"rgb(255, 255, 255)\",\n grid: \"rgb(132, 132, 132)\",\n layers: [\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\"\n ],\n negative_objects: \"rgb(132, 132, 132)\",\n worksheet: \"rgb(0, 0, 132)\"\n },\n palette: [\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\"\n ],\n schematic: {\n anchor: \"rgb(0, 0, 255)\",\n aux_items: \"rgb(0, 0, 0)\",\n background: \"rgb(33, 33, 33)\",\n brightened: \"rgb(204, 204, 204)\",\n bus: \"rgb(0, 96, 192)\",\n bus_junction: \"rgb(0, 96, 192)\",\n component_body: \"rgb(44, 44, 44)\",\n component_outline: \"rgb(192, 0, 0)\",\n cursor: \"rgb(224, 224, 224)\",\n erc_error: \"rgba(192, 48, 48, 0.800)\",\n erc_warning: \"rgba(192, 140, 0, 0.800)\",\n fields: \"rgb(128, 0, 160)\",\n grid: \"rgb(60, 60, 60)\",\n grid_axes: \"rgb(60, 60, 60)\",\n hidden: \"rgb(194, 194, 194)\",\n junction: \"rgb(0, 160, 0)\",\n label_global: \"rgb(0, 160, 224)\",\n label_hier: \"rgb(160, 160, 0)\",\n label_local: \"rgb(192, 192, 192)\",\n net_name: \"rgb(224, 224, 224)\",\n no_connect: \"rgb(97, 43, 224)\",\n note: \"rgb(192, 192, 0)\",\n override_item_colors: false,\n pin: \"rgb(192, 0, 0)\",\n pin_name: \"rgb(192, 192, 192)\",\n pin_number: \"rgb(192, 0, 0)\",\n reference: \"rgb(192, 192, 192)\",\n shadow: \"rgba(102, 179, 255, 0.800)\",\n sheet: \"rgb(128, 0, 160)\",\n sheet_background: \"rgba(255, 255, 255, 0.000)\",\n sheet_fields: \"rgb(160, 160, 0)\",\n sheet_filename: \"rgb(160, 160, 0)\",\n sheet_label: \"rgb(160, 160, 0)\",\n sheet_name: \"rgb(0, 160, 204)\",\n value: \"rgb(192, 192, 192)\",\n wire: \"rgb(0, 160, 0)\",\n worksheet: \"rgb(192, 0, 0)\"\n }\n};\n\n// src/lib/util/scale-only.ts\nvar scaleOnly = (mat, value = 1) => {\n if (Math.abs(mat.a) !== Math.abs(mat.d))\n throw new Error(\"Cannot scale non-uniformly\");\n return value * Math.abs(mat.a);\n};\n\n// src/lib/Drawer.ts\nvar LAYER_NAME_TO_COLOR = {\n // Standard colors, you shouldn't use these except for testing\n red: \"red\",\n black: \"black\",\n green: \"green\",\n board: \"rgb(255, 255, 255)\",\n other: \"#eee\",\n // TODO more builtin html colors\n // Common eagle names\n top: colors_default.board.copper.f,\n inner1: colors_default.board.copper.in1,\n inner2: colors_default.board.copper.in2,\n inner3: colors_default.board.copper.in3,\n inner4: colors_default.board.copper.in4,\n inner5: colors_default.board.copper.in5,\n inner6: colors_default.board.copper.in6,\n inner7: colors_default.board.copper.in7,\n inner8: colors_default.board.copper.in8,\n bottom: colors_default.board.copper.b,\n drill: colors_default.board.anchor,\n keepout: colors_default.board.background,\n tkeepout: colors_default.board.b_crtyd,\n tplace: colors_default.board.b_silks,\n top_silkscreen: colors_default.board.f_silks,\n bottom_silkscreen: colors_default.board.b_silks,\n top_fabrication: colors_default.board.f_fab,\n bottom_fabrication: colors_default.board.b_fab,\n ...colors_default.board\n};\nvar DEFAULT_DRAW_ORDER = [\n \"top\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n \"bottom\"\n];\nvar Drawer = class {\n constructor(canvasLayerMap) {\n this.foregroundLayer = \"top\";\n this.canvasLayerMap = canvasLayerMap;\n this.ctxLayerMap = Object.fromEntries(\n Object.entries(canvasLayerMap).map(([name, canvas]) => [\n name,\n canvas.getContext(\"2d\")\n ])\n );\n this.transform = (0, import_transformation_matrix.identity)();\n this.transform.d *= -1;\n this.transform = (0, import_transformation_matrix.compose)(this.transform, (0, import_transformation_matrix.translate)(0, -500));\n this.lastPoint = { x: 0, y: 0 };\n this.equip({});\n }\n clear() {\n for (const ctx of Object.values(this.ctxLayerMap)) {\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n }\n }\n equip(aperture) {\n this.aperture = {\n fontSize: 0,\n shape: \"circle\",\n mode: \"add\",\n size: 0,\n color: \"red\",\n layer: \"top\",\n opacity: this.foregroundLayer === aperture.color ? 1 : 0.5,\n ...aperture\n };\n }\n drawMeshPattern(x, y, width, height, spacing, angle = 45) {\n const ctx = this.getLayerCtx();\n const [x1, y1] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x, y]);\n const [x2, y2] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x + width, y + height]);\n const spacing$ = scaleOnly(this.transform, spacing);\n ctx.lineWidth = 1;\n ctx.strokeStyle = this.aperture.color;\n const drawLines = (angle2) => {\n const sin = Math.sin(angle2);\n const cos = Math.cos(angle2);\n const diag = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n for (let i = -diag; i <= diag; i += spacing$) {\n ctx.beginPath();\n ctx.moveTo(x1 + i * cos - diag * sin, y1 + i * sin + diag * cos);\n ctx.lineTo(x1 + i * cos + diag * sin, y1 + i * sin - diag * cos);\n ctx.stroke();\n }\n };\n drawLines(angle * Math.PI / 180);\n drawLines((angle + 90) * Math.PI / 180);\n }\n rect(x, y, w, h, mesh_fill) {\n const [x1$, y1$] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x - w / 2, y - h / 2]);\n const [x2$, y2$] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x + w / 2, y + h / 2]);\n this.applyAperture();\n const ctx = this.getLayerCtx();\n if (mesh_fill) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(x1$, y1$, x2$ - x1$, y2$ - y1$);\n ctx.clip();\n this.drawMeshPattern(x - w / 2, y - h / 2, w, h, 0.15);\n ctx.restore();\n ctx.strokeRect(x1$, y1$, x2$ - x1$, y2$ - y1$);\n } else {\n ctx.fillRect(x1$, y1$, x2$ - x1$, y2$ - y1$);\n }\n }\n circle(x, y, r, mesh_fill) {\n const r$ = scaleOnly(this.transform, r);\n const [x$, y$] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x, y]);\n this.applyAperture();\n const ctx = this.getLayerCtx();\n if (mesh_fill) {\n ctx.save();\n ctx.beginPath();\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI);\n ctx.clip();\n this.drawMeshPattern(x - r, y - r, r * 2, r * 2, 0.15);\n ctx.restore();\n ctx.beginPath();\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI);\n ctx.stroke();\n } else {\n ctx.beginPath();\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI);\n ctx.fill();\n }\n }\n oval(x, y, rx, ry) {\n const rx$ = scaleOnly(this.transform, rx);\n const ry$ = scaleOnly(this.transform, ry);\n const [x$, y$] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x, y]);\n this.applyAperture();\n const ctx = this.getLayerCtx();\n ctx.beginPath();\n ctx.ellipse(x$, y$, rx$, ry$, 0, 0, 2 * Math.PI);\n ctx.fill();\n ctx.closePath();\n }\n pill(x, y, w, h) {\n const [x$, y$] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x - w / 2, y + h / 2]);\n const width$ = scaleOnly(this.transform, w);\n const height$ = scaleOnly(this.transform, h);\n const radius = Math.min(width$, height$) / 2;\n this.applyAperture();\n const ctx = this.getLayerCtx();\n ctx.beginPath();\n ctx.arc(x$ + radius, y$ + radius, radius, Math.PI, Math.PI * 1.5);\n ctx.arc(x$ + width$ - radius, y$ + radius, radius, Math.PI * 1.5, 0);\n ctx.arc(\n x$ + width$ - radius,\n y$ + height$ - radius,\n radius,\n 0,\n Math.PI * 0.5\n );\n ctx.arc(x$ + radius, y$ + height$ - radius, radius, Math.PI * 0.5, Math.PI);\n ctx.fill();\n ctx.closePath();\n }\n polygon(points) {\n if (points.length < 3) {\n console.warn(\"Polygon must have at least 3 points\");\n return;\n }\n this.applyAperture();\n const ctx = this.getLayerCtx();\n const transformedPoints = points.map(\n (point2) => (0, import_transformation_matrix.applyToPoint)(this.transform, [point2.x, point2.y])\n );\n ctx.beginPath();\n ctx.moveTo(transformedPoints[0][0], transformedPoints[0][1]);\n for (let i = 1; i < transformedPoints.length; i++) {\n ctx.lineTo(transformedPoints[i][0], transformedPoints[i][1]);\n }\n ctx.closePath();\n ctx.fill();\n const lineWidth = scaleOnly(this.transform, this.aperture.size);\n ctx.lineWidth = lineWidth;\n ctx.stroke();\n }\n /* NOTE: This is not gerber compatible */\n debugText(text, x, y) {\n const [x$, y$] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x, y]);\n this.applyAperture();\n const ctx = this.getLayerCtx();\n ctx.font = `10px sans-serif`;\n ctx.fillText(text, x$, y$);\n }\n getLayerCtx() {\n const ctx = this.ctxLayerMap[this.aperture.layer];\n if (!ctx) {\n throw new Error(`No context for layer \"${this.aperture.layer}\"`);\n }\n return ctx;\n }\n /**\n * Iterate over each canvas and set the z index based on the layer order, but\n * always render the foreground layer on top.\n *\n * Also: Set the opacity of every non-foreground layer to 0.5\n */\n orderAndFadeLayers() {\n const { canvasLayerMap, foregroundLayer } = this;\n const opaqueLayers = /* @__PURE__ */ new Set([foregroundLayer, \"drill\", \"other\", \"board\"]);\n const order = [\n \"drill\",\n \"board\",\n foregroundLayer,\n ...DEFAULT_DRAW_ORDER.filter((l) => l !== foregroundLayer)\n ];\n order.forEach((layer, i) => {\n const canvas = canvasLayerMap[layer];\n if (!canvas) return;\n canvas.style.zIndex = `${100 - i}`;\n canvas.style.opacity = opaqueLayers.has(layer) ? \"1\" : \"0.5\";\n });\n }\n applyAperture() {\n const { transform, aperture } = this;\n let { size: size2, mode, color: color2, fontSize, layer } = aperture;\n if (!(layer in this.ctxLayerMap)) this.aperture.layer = \"other\";\n const ctx = this.getLayerCtx();\n if (!ctx) {\n throw new Error(`No context for layer \"${this.foregroundLayer}\"`);\n }\n if (!color2) color2 = \"undefined\";\n ctx.lineWidth = scaleOnly(transform, size2);\n ctx.lineCap = \"round\";\n if (mode === \"add\") {\n let colorString = color2?.[0] === \"#\" || color2?.startsWith(\"rgb\") ? color2 : LAYER_NAME_TO_COLOR[color2?.toLowerCase()] ? LAYER_NAME_TO_COLOR[color2?.toLowerCase()] : null;\n if (colorString === null) {\n console.warn(`Color mapping for \"${color2}\" not found`);\n colorString = \"white\";\n }\n ctx.fillStyle = colorString;\n ctx.strokeStyle = colorString;\n } else {\n ctx.globalCompositeOperation = \"destination-out\";\n ctx.fillStyle = \"rgba(0,0,0,1)\";\n ctx.strokeStyle = \"rgba(0,0,0,1)\";\n }\n ctx.font = `${scaleOnly((0, import_transformation_matrix.inverse)(transform), fontSize)}px sans-serif`;\n }\n moveTo(x, y) {\n this.lastPoint = { x, y };\n }\n lineTo(x, y) {\n const [x$, y$] = (0, import_transformation_matrix.applyToPoint)(this.transform, [x, y]);\n const { size: size2, shape, mode } = this.aperture;\n const size$ = scaleOnly(this.transform, size2);\n let { lastPoint } = this;\n const lastPoint$ = (0, import_transformation_matrix.applyToPoint)(this.transform, lastPoint);\n this.applyAperture();\n const ctx = this.getLayerCtx();\n if (shape === \"square\")\n ctx.fillRect(\n lastPoint$.x - size$ / 2,\n lastPoint$.y - size$ / 2,\n size$,\n size$\n );\n ctx.beginPath();\n ctx.moveTo(lastPoint$.x, lastPoint$.y);\n ctx.lineTo(x$, y$);\n ctx.stroke();\n ctx.closePath();\n if (shape === \"square\")\n ctx.fillRect(x$ - size$ / 2, y$ - size$ / 2, size$, size$);\n this.lastPoint = { x, y };\n }\n};\n\n// src/assets/alphabet.ts\nvar svgAlphabet = {\n \"0\": \"M0.4544564813877358 0L0.2723441540828736 0.03592830447352719L0.1086847233315459 0.14528754990019965L0.020630545837255005 0.3040632652221331L0 0.5395277421960205L0.049259221760993496 0.7369487828466779L0.18080513776237842 0.9005494166306564L0.37036887043974215 0.9872116270037247L0.5864663759301132 1L0.8148695622827444 0.9332890276148733L0.9326583645506394 0.8113052246023419L1 0.4031281830668562L0.833288960385582 0.09886798567812842L0.6801767918233781 0.02483708485091681L0.4544564813877358 0\",\n \"1\": \"M 0.198 0.272 L 0.537 0 L 0.54 1\",\n \"2\": \"M0.069593147751606 0.19461498231706575L0.1039380353319058 0.1224291500164194L0.20543361884368308 0.05510832064153169L0.3717712794432549 0.009452970962689482L0.4785344452623127 0L0.663238590738758 0.008714098643339864L0.8017933618843684 0.04769189395915288L0.8775637379550322 0.10746757678258442L0.9047778372591005 0.17693069668193287L0.9029710920770878 0.2231347105796246L0.8704496788008566 0.30047744598157516L0.7292906538577354 0.4508486051631194L0.3737955032119913 0.7369006417749693L0 1L1 1\",\n \"3\": \"M0.03917438899874637 0.19855364635107545L0.15510940508963084 0.06745632622133718L0.37598645522339846 0L0.8486391893813088 0.0652271323161611L0.9782182415054349 0.21747394183735683L0.9213133780517754 0.3547560290117714L0.6504271515903481 0.4543436297681271L0.22975249764129613 0.48476611625264143L0.7659038682744629 0.5411919558122493L0.9258712987734741 0.6203185665660985L1 0.7458360609169667L0.8938813281118737 0.9059190913045964L0.6166890258875837 1L0.261528440153542 0.9874861530507921L0 0.8837289530851273\",\n \"4\": \"M0.7328897338403042 0L0 0.6684672518568535L1 0.6684672518568535M0.7243346007604563 0.4530722484807562L0.7243346007604563 1\",\n \"5\": \"M 0 0 L 0 0.4973 L 0.4262 0.4319 L 0.7305 0.4565 L 0.8516 0.5009 L 0.9357 0.5639 L 1 0.7356 L 0.9696 0.8248 L 0.8898 0.895 L 0.733 0.9602 L 0.5518 0.9945 L 0.3814 1 L 0.2379 0.9821 L 0.1219 0.947 L 0 0.8748 M 0 0 L 1 0\",\n \"6\": \"M0.6964601700926856 0L0.3639239026215478 0.0743562375769351L0.1415931962925719 0.21735490179786915L0.009977939399608712 0.46336322325406004L0.00029622007592593224 0.7083131475173043L0.09408885043224748 0.8746809149767036L0.3379247445101846 0.9876686500961888L0.7109203869569624 1L0.9260852957913362 0.9103558029693921L1 0.7716571969091733L0.9824294723385016 0.6390635485705886L0.7446504992867332 0.4733643097729175L0.31028858071607296 0.47578021640899115L0.1208702146816024 0.5481452483973847L0 0.6616669755788906\",\n \"7\": \"M0 0L1 0L0.9246479649697582 0.030539772727272752L0.8850302419354837 0.05075757575757579L0.7922946068548385 0.11079545454545457L0.7419268208165322 0.15213068181818185L0.6907258064516127 0.20202020202020204L0.6400666267641127 0.26122159090909086L0.5913243447580644 0.33049242424242414L0.5458740234374998 0.4105902777777778L0.5050907258064514 0.5022727272727272L0.4703495148689514 0.6062973484848484L0.43257456133442534 0.787133049242424L0.41612903225806447 1\",\n \"8\": \"M0.5143001078924863 0L0.16007477667923162 0.10731570786949331L0.14924628550868277 0.3146018498698755L0.2939585848842112 0.41617921794558677L0.8648302624811545 0.5385163833653317L1 0.7775820770511038L0.8180842915260376 0.9505845566922285L0.41968938540525413 1L0.08062381919779889 0.882831681184498L0 0.6936376947135333L0.17150171673893433 0.5188652309607817L0.6529263782780712 0.4242818653203618L0.8650205888491803 0.29644027376796367L0.8702067371119496 0.09910067291661573L0.5143001078924863 0\",\n \"9\": \"M1 0.25379591792994305L0.9514789771111742 0.11679361536614272L0.8702482473521467 0.05711741614054847L0.7327445265851579 0.015213872471965633L0.525248180711544 0L0.3292056884418538 0.012928195113745608L0.15997632037247655 0.058762870026191856L0.05266940041228321 0.12882439350476L0 0.2562067822770946L0.11316462894512366 0.4121335905917837L0.2403060136479954 0.4603365890068938L0.4097241967586011 0.4745978388276783L0.8642414300184816 0.420815170259988L0.9732054796346318 0.34537434075898393L1 0.25379591792994305M0.9647426784191072 0.35488595400360495L0.4756895081034974 1\",\n A: \"M0 1L0.4808333333333333 0L1 1M0.24250000000000002 0.6099439775910365L0.7341666666666666 0.6099439775910365\",\n B: \"M0 1L0 0.0117369978777208L0.30665717153513444 0L0.5874522807082946 0.03451403469442413L0.7766202217193218 0.15033936404895643L0.7471969743588041 0.31967962568332936L0.5246013359741988 0.4102978954282461L0.04378745314885416 0.44918617613783574L0.5112949594180156 0.469692928091109L0.8540266515643348 0.5552749498651879L1 0.6868463175009967L0.9880091196159324 0.8570018204672155L0.922301719975498 0.9321708046604659L0.7584266951758925 0.9932594737131338L0 1\",\n C: \"M1 0.23038928858890784L0.9328355511865092 0.12426412616785204L0.8096380839483327 0.04912601676267708L0.5763225801788256 0L0.4039037709527492 0.015028068281399815L0.2519579390951737 0.06533979308999706L0.10359458463139784 0.18146243506591617L0 0.4862728453971315L0.08129580872733055 0.792689266886982L0.20257034847159672 0.9160822255736587L0.3286572892798542 0.9738230826074175L0.5742878414421707 1L0.7883510303801312 0.9665431511195721L0.946851033994232 0.8689071500976585L1 0.7311049027121912\",\n D: \"M0 1L0.015604366822624637 0.020770988281483303L0.22564758265176144 0L0.3865476147957666 0.0024153386496795644L0.6479126635475078 0.051745644338731314L0.841191887805517 0.15827717679529366L0.9517008345536152 0.30172260586872185L0.9957536578687336 0.4504541551987709L1 0.5624359222498485L0.9798483279164735 0.6584121775234548L0.9386273319285215 0.7395945263504481L0.806292129480815 0.8624239259880274L0.6296239151398265 0.9406169638094516L0.3397492767598845 0.9954164354263132L0 1\",\n E: \"M0 0L0 1M0 0L1 0M0 0.5L0.7 0.5M0 1L1 1\",\n F: \"M0 0L0 1M0.011363636363636364 0.006802721088435374L1 0.006802721088435374M0.011363636363636364 0.4965986394557823L0.8409090909090909 0.4965986394557823\",\n G: \"M0.902666857540557 0.03860785012651126L0.6504261864675637 0L0.3838947267237336 0.015442305268228053L0.21293332876776194 0.07706794377239819L0.07799659974941617 0.1994951236187481L0 0.46380381528937314L0.04159964421546915 0.7502491408002389L0.13176692977834842 0.8535497868383203L0.2709176262273927 0.936767572377719L0.4386472596876406 0.9891638569283179L0.6145513562841309 1L0.7782254421419019 0.9585373611026471L0.9092650433859927 0.8540372997461425L1 0.5556012645283437L0.5583959277303046 0.55491741080559\",\n H: \"M0 0L0 1M0 0.4788732394366197L0.989010989010989 0.4788732394366197M1 0L1 1\",\n I: \"M0.5 0L0.5 1\",\n J: \"M0.9976457238788704 0L1 0.7396412315872798L0.9773931362096968 0.8322033314977973L0.9345115952458736 0.882296255506608L0.8743862896259549 0.9221331222466961L0.8024024079884948 0.9526431718061675L0.6443996712151668 0.9893997797356828L0.5035848940343224 1L0.3127211130319937 0.9877004749449337L0.17201910858386513 0.9539509911894274L0.10357419806379677 0.9212555066079295L0.053656568662899015 0.8816079295154184L0.020759483663648916 0.8360407488986785L0.003376206348523566 0.7855864537444934L0 0.7312775330396476\",\n K: \"M0 0L0 1M0.8787878787878788 0.06666666666666667L0 0.6148148148148148M0.3333333333333333 0.45925925925925926L1 0.9777777777777777\",\n L: \"M0 0L0 1L1 1\",\n M: \"M0 1L0 0L0.5 0.6512L1 0L1 1\",\n N: \"M0 1L0 0L1 1L0.9803729146221786 0\",\n O: \"M0.4718499217948183 1L0.2896765846490613 0.9606979309189402L0.12315162147934663 0.8411184486080473L0 0.4352399966492615L0.11730398524516283 0.13145645436014852L0.2612197451988078 0.04493357858878059L0.5104071592772554 0L0.7450113425917159 0.05393013710105273L0.882367950645524 0.15242300282020502L1 0.5224527406249126L0.9414597290654386 0.7560662329321755L0.8371289514446183 0.8910800547287298L0.6518259868433511 0.9830452628933628L0.4718499217948183 1\",\n P: \"M0 1L0 0.018871774228013626L0.29609603495819875 0L0.5609840637427541 0.011794858892508529L0.7332142696692472 0.04353904702296349L0.8102258645858864 0.0691965055027166L0.9330504315465442 0.14445061754775845L0.9876391714147118 0.22527816445836535L1 0.3434414070631638L0.9510549958116356 0.41772808046663146L0.8746646891596713 0.45879131862541683L0.7528523813396283 0.49171525113425024L0.5766919939969619 0.5153253033973054L0.33725744877712827 0.5284469008187558L0.025622667325582785 0.529905468802775\",\n Q: \"M0.4618887943546369 0.9755918167206952L0.28356128136544534 0.9372490397450218L0.12055179272160406 0.8205882753548176L0 0.4246165790405623L0.1148276047430244 0.12824784112887844L0.25570518844754375 0.043836831567190586L0.49963205786237674 0L0.7292835601228574 0.0526138004304122L0.8637404608452104 0.14870263423138746L0.9788892040030622 0.5097006183769648L0.9215847647858059 0.7376120297474734L0.8194564929275405 0.869330409436378L0.6380654214095985 0.9590509139448092L0.4618887943546369 0.9755918167206952M0.5824181120212351 0.6861805006946525L1 1\",\n R: \"M0 0.9928375167236815L0 0.02590227442068435L0.3611517274211098 0L0.6146286724700761 0.008660554424468435L0.7675462459194776 0.035269459580494614L0.831839975516866 0.056961676692569484L0.8847592491838954 0.08519560521497332L0.9238557535364527 0.120683646438422L0.9583303225312839 0.21691797435320384L0.955092470586235 0.3022616904894429L0.9198097669001631 0.3640573439322699L0.8564862239866702 0.40639258627024005L0.7691258543593579 0.43335506909190874L0.601775027203482 0.4539166070813109L0.023939064200217658 0.46997623755243123M0.5038084874863982 0.5108023922274467L1 1\",\n S: \"M0.8886929689221953 0.15146982162688968L0.7276173683050475 0.013780286031594946L0.34582323121005076 0L0.1318235250900008 0.09920162734298861L0.0444543935052531 0.2811287071349243L0.08064065829108809 0.3709571405906485L0.21603115127470426 0.4485505768228281L0.7525409135992945 0.5111160926769565L0.9330263665417677 0.5850732219351329L1 0.7129938124702524L0.9117772389978691 0.9130572743138187L0.6423187128058188 1L0.29586019579751677 0.9935291584506244L0.10638454191462794 0.9229845198431584L0 0.7570771288048773\",\n T: \"M0 0L1 0M0.5148514851485149 0L0.5148514851485149 1\",\n U: \"M0 0L0.0023103778751369115 0.5467447428390111L0.01823032542100219 0.6954785891481812L0.05895528135268338 0.8056480226151669L0.13703402031421133 0.8894445726483398L0.23918400876232196 0.9448524533417946L0.3917887458926616 0.9848674531975652L0.584341627875137 1L0.7194816196604602 0.9848501456716763L0.8303268115073934 0.9449411544119768L0.8966613970084885 0.898186315516197L0.9251437568455642 0.867453197565408L0.9687114937020809 0.7890904895145239L0.9890470974808324 0.6852857184065537L1 0.0014769088758762145\",\n V: \"M0 0L0.5348837209302325 1L1 0\",\n W: \"M0 0L0.23300090661831369 0.9873417721518988L0.49954669084315495 0.30081906180193585L0.7851314596554849 1L1 0.0215934475055845\",\n X: \"M0 0L0.9893617021276596 1M1 0L0.010638297872340425 1\",\n Y: \"M0 0L0.4860515021459227 0.44712562100780695M1 0.0014194464158977947L0.48927038626609437 0.44996451383960256L0.5075107296137339 1\",\n Z: \"M0 0L1 0L0 1L1 1\",\n \".\": \"M 0.49 1 L 0.41 1\",\n \"*\": \"M 0.5 0.25 L 0.8 0.25 M 0.5 0.25 L 0.5927 0.4402 M 0.5 0.25 L 0.2573 0.3676 M 0.5 0.25 L 0.2573 0.1324 M 0.5 0.25 L 0.599 0.055\",\n \"(\": \"M0.75 0L0.25 0.5L0.25 0.5L0.75 1\",\n \")\": \"M0.25 0L0.75 0.5L0.75 0.5L0.25 1\",\n \"-\": \"M0 0.5L1 0.5\",\n \"+\": \"M 0 0.5 L 1 0.5 M 0.5 0.125 L 0.5 0.875\",\n \"=\": \"M0 0.25L1 0.25M0 0.75L1 0.75\",\n _: \"M0 1 L1 1\",\n \"[\": \"M0.75 0L0.25 0L0.25 1L0.75 1\",\n \"]\": \"M0.25 0L0.75 0L0.75 1L0.25 1\",\n \"<\": \"M0.75 0L0.25 0.5L0.25 0.5L0.75 1\",\n \">\": \"M0.25 0L0.75 0.5L0.75 0.5L0.25 1\",\n \"'\": \"M 0.5 0 L 0.5 0.5\",\n '\"': \"M 0.25 0 L 0.25 0.5 M 0.75 0 L 0.75 0.5\"\n};\nvar lineAlphabet = {};\nfor (const letter in svgAlphabet) {\n lineAlphabet[letter] = [];\n const segs = svgAlphabet[letter].split(\"M\").slice(1).map(\n (seg) => seg.split(\"L\").map((pr) => pr.trim().split(\" \").map(parseFloat))\n );\n for (const seg of segs) {\n for (let i = 0; i < seg.length - 1; i++) {\n lineAlphabet[letter].push({\n x1: seg[i][0],\n y1: 1 - seg[i][1],\n x2: seg[i + 1][0],\n y2: 1 - seg[i + 1][1]\n });\n }\n }\n}\n\n// src/lib/convert-text-to-lines.ts\nvar LETTER_HEIGHT_TO_WIDTH_RATIO = 0.6;\nvar LETTER_HEIGHT_TO_SPACE_RATIO = 0.2;\nvar getTextWidth = (text) => {\n return text.text.length * text.size * LETTER_HEIGHT_TO_WIDTH_RATIO + (text.text.length - 1) * text.size * LETTER_HEIGHT_TO_SPACE_RATIO;\n};\nvar convertTextToLines = (text) => {\n const strokeWidth = text.size / 8;\n const letterWidth = text.size * LETTER_HEIGHT_TO_WIDTH_RATIO;\n const letterSpace = text.size * LETTER_HEIGHT_TO_SPACE_RATIO;\n const lines = [];\n for (let letterIndex = 0; letterIndex < text.text.length; letterIndex++) {\n const letter = text.text[letterIndex];\n const letterLines = lineAlphabet[letter.toUpperCase()];\n if (!letterLines) continue;\n for (const { x1, y1, x2, y2 } of letterLines) {\n lines.push({\n pcb_drawing_type: \"line\",\n x1: text.x + (letterWidth + letterSpace) * letterIndex + letterWidth * x1,\n y1: text.y + text.size * y1,\n x2: text.x + (letterWidth + letterSpace) * letterIndex + letterWidth * x2,\n y2: text.y + text.size * y2,\n width: strokeWidth,\n layer: text.layer,\n unit: text.unit\n });\n }\n }\n return lines;\n};\n\n// src/lib/draw-primitives.ts\nvar import_color = __toESM(require(\"color\"));\nfunction getColor(primitive) {\n if (primitive.is_mouse_over || primitive.is_in_highlighted_net) {\n return (0, import_color.default)(\n LAYER_NAME_TO_COLOR[primitive.layer]\n ).lighten(0.5).rgb().toString();\n }\n return LAYER_NAME_TO_COLOR[primitive.layer];\n}\nvar drawLine = (drawer, line) => {\n drawer.equip({\n size: line.zoomIndependent ? line.width / drawer.transform.a : line.width,\n shape: line.squareCap ? \"square\" : \"circle\",\n color: getColor(line),\n layer: line.layer\n });\n drawer.moveTo(line.x1, line.y1);\n drawer.lineTo(line.x2, line.y2);\n};\nvar drawText = (drawer, text) => {\n drawer.equip({\n fontSize: text.size,\n color: text.layer\n });\n let alignOffset = { x: 0, y: 0 };\n const textWidth = getTextWidth(text);\n const textHeight = text.size;\n if (text.align === \"top_left\") {\n alignOffset.y = -textHeight;\n } else if (text.align === \"bottom_right\") {\n alignOffset.x = -textWidth;\n } else if (text.align === \"top_right\") {\n alignOffset.x = -textWidth;\n alignOffset.y = -textHeight;\n } else if (text.align === \"center\") {\n alignOffset.x = -textWidth / 2;\n alignOffset.y = -textHeight / 2;\n }\n text.x ?? (text.x = 0);\n text.y ?? (text.y = 0);\n const text_lines = convertTextToLines({\n ...text,\n x: text.x + alignOffset.x,\n y: text.y + alignOffset.y\n });\n for (const line of text_lines) {\n drawLine(drawer, line);\n }\n};\nvar drawRect = (drawer, rect) => {\n drawer.equip({\n color: getColor(rect),\n layer: rect.layer\n });\n drawer.rect(rect.x, rect.y, rect.w, rect.h, rect.mesh_fill);\n};\nvar drawCircle = (drawer, circle) => {\n drawer.equip({\n color: getColor(circle),\n layer: circle.layer\n });\n drawer.circle(circle.x, circle.y, circle.r, circle.mesh_fill);\n};\nvar drawOval = (drawer, oval) => {\n drawer.equip({\n color: getColor(oval),\n layer: oval.layer\n });\n drawer.oval(oval.x, oval.y, oval.rX, oval.rY);\n};\nvar drawPill = (drawer, pill) => {\n drawer.equip({\n color: getColor(pill),\n layer: pill.layer\n });\n drawer.pill(pill.x, pill.y, pill.w, pill.h);\n};\nvar drawPolygon = (drawer, polygon) => {\n drawer.equip({\n color: getColor(polygon),\n layer: polygon.layer\n });\n drawer.polygon(polygon.points);\n};\nvar drawPrimitive = (drawer, primitive) => {\n switch (primitive.pcb_drawing_type) {\n case \"line\":\n return drawLine(drawer, primitive);\n case \"text\":\n return drawText(drawer, primitive);\n case \"rect\":\n return drawRect(drawer, primitive);\n case \"circle\":\n return drawCircle(drawer, primitive);\n case \"oval\":\n return drawOval(drawer, primitive);\n case \"pill\":\n return drawPill(drawer, primitive);\n case \"polygon\":\n return drawPolygon(drawer, primitive);\n }\n};\nvar drawPrimitives = (drawer, primitives) => {\n primitives.sort((a, b) => {\n const layerOrder = [\"bottom\", \"top\", \"drill\"];\n return layerOrder.indexOf(a.layer) - layerOrder.indexOf(b.layer);\n });\n primitives.forEach((primitive) => drawPrimitive(drawer, primitive));\n};\n\n// src/global-store.ts\nvar import_zustand = require(\"zustand\");\n\n// src/components/ContextProviders.tsx\nvar import_react = require(\"react\");\nvar import_react2 = require(\"react\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar StoreContext = (0, import_react2.createContext)(null);\nvar ContextProviders = ({\n children,\n initialState\n}) => {\n const store = (0, import_react.useMemo)(() => createStore(initialState), []);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StoreContext.Provider, { value: store, children });\n};\n\n// src/global-store.ts\nvar import_react3 = require(\"react\");\nvar createStore = (initialState = {}) => (0, import_zustand.createStore)(\n (set) => ({\n selected_layer: \"top\",\n pcb_viewer_id: `pcb_viewer_${Math.random().toString().slice(2, 10)}`,\n in_edit_mode: false,\n in_move_footprint_mode: false,\n in_draw_trace_mode: false,\n is_moving_component: false,\n is_drawing_trace: false,\n is_showing_rats_nest: false,\n ...initialState,\n selectLayer: (layer) => set({ selected_layer: layer }),\n setEditMode: (mode) => set({\n in_edit_mode: mode !== \"off\",\n in_move_footprint_mode: mode === \"move_footprint\",\n in_draw_trace_mode: mode === \"draw_trace\",\n is_moving_component: false,\n is_drawing_trace: false\n }),\n setIsShowingRatsNest: (is_showing) => set({ is_showing_rats_nest: is_showing }),\n setIsMovingComponent: (is_moving) => set({ is_moving_component: is_moving }),\n setIsDrawingTrace: (is_drawing) => set({ is_drawing_trace: is_drawing })\n })\n);\nvar useGlobalStore = (s) => {\n const store = (0, import_react3.useContext)(StoreContext);\n return (0, import_zustand.useStore)(store, s);\n};\n\n// node_modules/circuit-json/dist/index.mjs\nvar import_convert_units = __toESM(require_lib(), 1);\n\n// node_modules/zod/lib/index.mjs\nvar util;\n(function(util2) {\n util2.assertEqual = (val) => val;\n function assertIs(_arg) {\n }\n util2.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util2.assertNever = assertNever;\n util2.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util2.getValidEnumValues = (obj) => {\n const validKeys = util2.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util2.objectValues(filtered);\n };\n util2.objectValues = (obj) => {\n return util2.objectKeys(obj).map(function(e) {\n return obj[e];\n });\n };\n util2.objectKeys = typeof Object.keys === \"function\" ? (obj) => Object.keys(obj) : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util2.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return void 0;\n };\n util2.isInteger = typeof Number.isInteger === \"function\" ? (val) => Number.isInteger(val) : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => typeof val === \"string\" ? `'${val}'` : val).join(separator);\n }\n util2.joinValues = joinValues;\n util2.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function(objectUtil2) {\n objectUtil2.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second\n // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nvar ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\"\n]);\nvar getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\nvar ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\"\n]);\nvar quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nvar ZodError = class _ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n } else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper || function(issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n } else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n } else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n } else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n } else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof _ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n } else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n};\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\nvar errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n } else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n } else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n } else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n } else {\n util.assertNever(issue.validation);\n }\n } else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n } else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nvar overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\nvar makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...issueData.path || []];\n const fullIssue = {\n ...issueData,\n path: fullPath\n };\n if (issueData.message !== void 0) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps.filter((m) => !!m).slice().reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage\n };\n};\nvar EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === errorMap ? void 0 : errorMap\n // then global default map\n ].filter((x) => !!x)\n });\n ctx.common.issues.push(issue);\n}\nvar ParseStatus = class _ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value\n });\n }\n return _ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n};\nvar INVALID = Object.freeze({\n status: \"aborted\"\n});\nvar DIRTY = (value) => ({ status: \"dirty\", value });\nvar OK = (value) => ({ status: \"valid\", value });\nvar isAborted = (x) => x.status === \"aborted\";\nvar isDirty = (x) => x.status === \"dirty\";\nvar isValid = (x) => x.status === \"valid\";\nvar isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nvar errorUtil;\n(function(errorUtil2) {\n errorUtil2.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil2.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\nvar _ZodEnum_cache;\nvar _ZodNativeEnum_cache;\nvar ParseInputLazyPath = class {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n } else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n};\nvar handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n } else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n }\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap: errorMap2, invalid_type_error, required_error, description } = params;\n if (errorMap2 && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap2)\n return { errorMap: errorMap2, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nvar ZodType = class {\n constructor(def) {\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n };\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n }\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data)\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data)\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n } else if (typeof message === \"function\") {\n return message(val);\n } else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val)\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n } else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement }\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform }\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def)\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(void 0).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n};\nvar cuidRegex = /^c[^\\s-]{8,}$/i;\nvar cuid2Regex = /^[0-9a-z]+$/;\nvar ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\nvar uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nvar nanoidRegex = /^[a-z0-9_-]{21}$/i;\nvar durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\nvar emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\nvar _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nvar emojiRegex;\nvar ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nvar ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nvar base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\nvar dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nvar dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n } else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nvar ZodString = class _ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = void 0;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n } else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n }\n status.dirty();\n }\n } else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n } catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n } else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n } else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n } else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message)\n });\n }\n _addCheck(check) {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex,\n ...errorUtil.errToObj(message)\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value,\n ...errorUtil.errToObj(message)\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value,\n ...errorUtil.errToObj(message)\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message)\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message)\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message)\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }]\n });\n }\n toLowerCase() {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }]\n });\n }\n toUpperCase() {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }]\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n};\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params)\n });\n};\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return valInt % stepInt / Math.pow(10, decCount);\n}\nvar ZodNumber = class _ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n let ctx = void 0;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new _ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new _ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message)\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message)\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message)\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message)\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || ch.kind === \"multipleOf\" && util.isInteger(ch.value));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n } else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n } else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n};\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params)\n });\n};\nvar ZodBigInt = class _ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n let ctx = void 0;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new _ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new _ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n};\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params)\n });\n};\nvar ZodBoolean = class extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params)\n });\n};\nvar ZodDate = class _ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_date\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = void 0;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime())\n };\n }\n _addCheck(check) {\n return new _ZodDate({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message)\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message)\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n};\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params)\n });\n};\nvar ZodSymbol = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params)\n });\n};\nvar ZodUndefined = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params)\n });\n};\nvar ZodNull = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params)\n });\n};\nvar ZodAny = class extends ZodType {\n constructor() {\n super(...arguments);\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n};\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params)\n });\n};\nvar ZodUnknown = class extends ZodType {\n constructor() {\n super(...arguments);\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n};\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params)\n });\n};\nvar ZodNever = class extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType\n });\n return INVALID;\n }\n};\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params)\n });\n};\nvar ZodVoid = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params)\n });\n};\nvar ZodArray = class _ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: tooSmall ? def.exactLength.value : void 0,\n maximum: tooBig ? def.exactLength.value : void 0,\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result2) => {\n return ParseStatus.mergeArray(status, result2);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new _ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) }\n });\n }\n max(maxLength, message) {\n return new _ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) }\n });\n }\n length(len, message) {\n return new _ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) }\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n};\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params)\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape\n });\n } else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element)\n });\n } else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n } else {\n return schema;\n }\n}\nvar ZodObject = class _ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n this.nonstrict = this.passthrough;\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return this._cached = { shape, keys };\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] }\n });\n }\n } else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys\n });\n status.dirty();\n }\n } else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n } else {\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(\n new ParseInputLazyPath(ctx, value, ctx.path, key)\n //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve().then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet\n });\n }\n return syncPairs;\n }).then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n } else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new _ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...message !== void 0 ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError\n };\n return {\n message: defaultError\n };\n }\n } : {}\n });\n }\n strip() {\n return new _ZodObject({\n ...this._def,\n unknownKeys: \"strip\"\n });\n }\n passthrough() {\n return new _ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\"\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new _ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation\n })\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new _ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape()\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new _ZodObject({\n ...this._def,\n catchall: index\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => shape\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => shape\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n } else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => newShape\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n } else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => newShape\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n};\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nvar ZodUnion = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n }),\n ctx: childCtx\n };\n })).then(handleResults);\n } else {\n let dirty = void 0;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n });\n if (result.status === \"valid\") {\n return result;\n } else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues2) => new ZodError(issues2));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n};\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params)\n });\n};\nvar getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n } else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n } else if (type instanceof ZodLiteral) {\n return [type.value];\n } else if (type instanceof ZodEnum) {\n return type.options;\n } else if (type instanceof ZodNativeEnum) {\n return util.objectValues(type.enum);\n } else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n } else if (type instanceof ZodUndefined) {\n return [void 0];\n } else if (type instanceof ZodNull) {\n return [null];\n } else if (type instanceof ZodOptional) {\n return [void 0, ...getDiscriminator(type.unwrap())];\n } else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n } else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n } else {\n return [];\n }\n};\nvar ZodDiscriminatedUnion = class _ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator]\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n const optionsMap = /* @__PURE__ */ new Map();\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new _ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params)\n });\n }\n};\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n } else {\n return { valid: false };\n }\n}\nvar ZodIntersection = class extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n })\n ]).then(([left, right]) => handleParsed(left, right));\n } else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }));\n }\n }\n};\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left,\n right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params)\n });\n};\nvar ZodTuple = class _ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n status.dirty();\n }\n const items = [...ctx.data].map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n }).filter((x) => !!x);\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n } else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new _ZodTuple({\n ...this._def,\n rest\n });\n }\n};\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params)\n });\n};\nvar ZodRecord = class _ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n } else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new _ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third)\n });\n }\n return new _ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second)\n });\n }\n};\nvar ZodMap = class extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"]))\n };\n });\n if (ctx.common.async) {\n const finalMap = /* @__PURE__ */ new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n } else {\n const finalMap = /* @__PURE__ */ new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n};\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params)\n });\n};\nvar ZodSet = class _ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements2) {\n const parsedSet = /* @__PURE__ */ new Set();\n for (const element of elements2) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements2) => finalizeSet(elements2));\n } else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new _ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) }\n });\n }\n max(maxSize, message) {\n return new _ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) }\n });\n }\n size(size2, message) {\n return this.min(size2, message).max(size2, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n};\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params)\n });\n};\nvar ZodFunction = class _ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error\n }\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error\n }\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n const me = this;\n return OK(async function(...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n } else {\n const me = this;\n return OK(function(...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new _ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create())\n });\n }\n returns(returnType) {\n return new _ZodFunction({\n ...this._def,\n returns: returnType\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new _ZodFunction({\n args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params)\n });\n }\n};\nvar ZodLazy = class extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n};\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params)\n });\n};\nvar ZodLiteral = class extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n};\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params)\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params)\n });\n}\nvar ZodEnum = class _ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return _ZodEnum.create(values, {\n ...this._def,\n ...newDef\n });\n }\n exclude(values, newDef = this._def) {\n return _ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef\n });\n }\n};\n_ZodEnum_cache = /* @__PURE__ */ new WeakMap();\nZodEnum.create = createZodEnum;\nvar ZodNativeEnum = class extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n};\n_ZodNativeEnum_cache = /* @__PURE__ */ new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params)\n });\n};\nvar ZodPromise = class extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap\n });\n }));\n }\n};\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params)\n });\n};\nvar ZodEffects = class extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n } else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n }\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed2) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed2,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n } else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n};\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params)\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params)\n });\n};\nvar ZodOptional = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(void 0);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n};\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params)\n });\n};\nvar ZodNullable = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n};\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params)\n });\n};\nvar ZodDefault = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n};\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params)\n });\n};\nvar ZodCatch = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n }\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx\n }\n });\n if (isAsync(result)) {\n return result.then((result2) => {\n return {\n status: \"valid\",\n value: result2.status === \"valid\" ? result2.value : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n });\n } else {\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n};\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params)\n });\n};\nvar ZodNaN = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n};\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params)\n });\n};\nvar BRAND = Symbol(\"zod_brand\");\nvar ZodBranded = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n unwrap() {\n return this._def.type;\n }\n};\nvar ZodPipeline = class _ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n } else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n };\n return handleAsync();\n } else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value\n };\n } else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n }\n static create(a, b) {\n return new _ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline\n });\n }\n};\nvar ZodReadonly = class extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n};\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params)\n });\n};\nfunction custom(check, params = {}, fatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nvar late = {\n object: ZodObject.lazycreate\n};\nvar ZodFirstPartyTypeKind;\n(function(ZodFirstPartyTypeKind2) {\n ZodFirstPartyTypeKind2[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind2[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind2[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind2[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind2[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind2[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind2[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind2[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind2[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind2[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind2[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind2[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind2[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind2[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind2[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind2[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind2[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind2[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind2[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind2[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind2[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind2[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind2[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind2[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind2[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind2[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind2[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind2[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind2[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind2[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind2[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind2[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind2[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind2[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind2[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind2[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nvar instanceOfType = (cls, params = {\n message: `Input not instance of ${cls.name}`\n}) => custom((data) => data instanceof cls, params);\nvar stringType = ZodString.create;\nvar numberType = ZodNumber.create;\nvar nanType = ZodNaN.create;\nvar bigIntType = ZodBigInt.create;\nvar booleanType = ZodBoolean.create;\nvar dateType = ZodDate.create;\nvar symbolType = ZodSymbol.create;\nvar undefinedType = ZodUndefined.create;\nvar nullType = ZodNull.create;\nvar anyType = ZodAny.create;\nvar unknownType = ZodUnknown.create;\nvar neverType = ZodNever.create;\nvar voidType = ZodVoid.create;\nvar arrayType = ZodArray.create;\nvar objectType = ZodObject.create;\nvar strictObjectType = ZodObject.strictCreate;\nvar unionType = ZodUnion.create;\nvar discriminatedUnionType = ZodDiscriminatedUnion.create;\nvar intersectionType = ZodIntersection.create;\nvar tupleType = ZodTuple.create;\nvar recordType = ZodRecord.create;\nvar mapType = ZodMap.create;\nvar setType = ZodSet.create;\nvar functionType = ZodFunction.create;\nvar lazyType = ZodLazy.create;\nvar literalType = ZodLiteral.create;\nvar enumType = ZodEnum.create;\nvar nativeEnumType = ZodNativeEnum.create;\nvar promiseType = ZodPromise.create;\nvar effectsType = ZodEffects.create;\nvar optionalType = ZodOptional.create;\nvar nullableType = ZodNullable.create;\nvar preprocessType = ZodEffects.createWithPreprocess;\nvar pipelineType = ZodPipeline.create;\nvar ostring = () => stringType().optional();\nvar onumber = () => numberType().optional();\nvar oboolean = () => booleanType().optional();\nvar coerce = {\n string: (arg) => ZodString.create({ ...arg, coerce: true }),\n number: (arg) => ZodNumber.create({ ...arg, coerce: true }),\n boolean: (arg) => ZodBoolean.create({\n ...arg,\n coerce: true\n }),\n bigint: (arg) => ZodBigInt.create({ ...arg, coerce: true }),\n date: (arg) => ZodDate.create({ ...arg, coerce: true })\n};\nvar NEVER = INVALID;\nvar z = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap,\n getErrorMap,\n makeIssue,\n EMPTY_PATH,\n addIssueToContext,\n ParseStatus,\n INVALID,\n DIRTY,\n OK,\n isAborted,\n isDirty,\n isValid,\n isAsync,\n get util() {\n return util;\n },\n get objectUtil() {\n return objectUtil;\n },\n ZodParsedType,\n getParsedType,\n ZodType,\n datetimeRegex,\n ZodString,\n ZodNumber,\n ZodBigInt,\n ZodBoolean,\n ZodDate,\n ZodSymbol,\n ZodUndefined,\n ZodNull,\n ZodAny,\n ZodUnknown,\n ZodNever,\n ZodVoid,\n ZodArray,\n ZodObject,\n ZodUnion,\n ZodDiscriminatedUnion,\n ZodIntersection,\n ZodTuple,\n ZodRecord,\n ZodMap,\n ZodSet,\n ZodFunction,\n ZodLazy,\n ZodLiteral,\n ZodEnum,\n ZodNativeEnum,\n ZodPromise,\n ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional,\n ZodNullable,\n ZodDefault,\n ZodCatch,\n ZodNaN,\n BRAND,\n ZodBranded,\n ZodPipeline,\n ZodReadonly,\n custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late,\n get ZodFirstPartyTypeKind() {\n return ZodFirstPartyTypeKind;\n },\n coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n \"enum\": enumType,\n \"function\": functionType,\n \"instanceof\": instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n \"null\": nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean,\n onumber,\n optional: optionalType,\n ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n \"undefined\": undefinedType,\n union: unionType,\n unknown: unknownType,\n \"void\": voidType,\n NEVER,\n ZodIssueCode,\n quotelessJson,\n ZodError\n});\n\n// node_modules/nanoid/index.js\nvar import_node_crypto = require(\"crypto\");\n\n// node_modules/nanoid/url-alphabet/index.js\nvar urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n\n// node_modules/nanoid/index.js\nvar POOL_SIZE_MULTIPLIER = 128;\nvar pool;\nvar poolOffset;\nfunction fillPool(bytes) {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER);\n import_node_crypto.webcrypto.getRandomValues(pool);\n poolOffset = 0;\n } else if (poolOffset + bytes > pool.length) {\n import_node_crypto.webcrypto.getRandomValues(pool);\n poolOffset = 0;\n }\n poolOffset += bytes;\n}\nfunction nanoid(size2 = 21) {\n fillPool(size2 -= 0);\n let id = \"\";\n for (let i = poolOffset - size2; i < poolOffset; i++) {\n id += urlAlphabet[pool[i] & 63];\n }\n return id;\n}\n\n// node_modules/circuit-json/dist/index.mjs\nvar si_prefix_multiplier = {\n tera: 1e13,\n T: 1e13,\n giga: 1e10,\n G: 1e10,\n mega: 1e7,\n M: 1e7,\n kilo: 1e4,\n k: 1e4,\n deci: 1,\n d: 1,\n centi: 0.1,\n c: 0.1,\n milli: 0.01,\n m: 0.01,\n micro: 1e-5,\n u: 1e-5,\n \\u00B5: 1e-5,\n nano: 1e-8,\n n: 1e-8,\n pico: 1e-11,\n p: 1e-11\n};\nvar si_prefixes = Object.keys(si_prefix_multiplier);\nvar target_conversion = {\n mass: \"g\",\n length: \"mm\",\n time: \"ms\",\n volume: \"ml\",\n angle: \"deg\"\n};\nfunction getSiPrefixMultiplierFromUnit(v) {\n for (const prefix of si_prefixes) {\n if (v.startsWith(prefix)) {\n return si_prefix_multiplier[prefix];\n }\n }\n return 1;\n}\nvar parseAndConvertSiUnit = (v) => {\n if (typeof v === \"undefined\") return { unit: null, value: null };\n if (typeof v === \"string\" && v.match(/^[\\d\\.]+$/))\n return { value: parseFloat(v), unit: null };\n if (typeof v === \"number\") return { value: v, unit: null };\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\n return {\n unit: parseAndConvertSiUnit(v.x).unit,\n value: {\n x: parseAndConvertSiUnit(v.x).value,\n y: parseAndConvertSiUnit(v.y).value\n }\n };\n }\n const unit_reversed = v.split(\"\").reverse().join(\"\").match(/[a-zA-Z]+/)?.[0];\n if (!unit_reversed) {\n throw new Error(`Could not determine unit: \"${v}\"`);\n }\n const unit = unit_reversed.split(\"\").reverse().join(\"\");\n const value = v.slice(0, -unit.length);\n let measure;\n try {\n measure = (0, import_convert_units.default)().describe(unit)?.measure;\n } catch (e) {\n }\n if (measure) {\n const target_unit = target_conversion[measure];\n if (!target_unit) {\n throw new Error(\n `Could not determine target unit for measure: \"${measure}\"`\n );\n }\n return {\n unit,\n value: (0, import_convert_units.default)(parseFloat(value)).from(unit).to(target_unit)\n };\n } else {\n return {\n unit,\n value: getSiPrefixMultiplierFromUnit(unit) * parseFloat(value)\n };\n }\n};\nvar resistance = z.string().or(z.number()).transform((v) => parseAndConvertSiUnit(v).value);\nvar capacitance = z.string().or(z.number()).transform((v) => parseAndConvertSiUnit(v).value);\nvar inductance = z.string().or(z.number()).transform((v) => parseAndConvertSiUnit(v).value);\nvar voltage = z.string().or(z.number()).transform((v) => parseAndConvertSiUnit(v).value);\nvar length = z.string().or(z.number()).transform((v) => parseAndConvertSiUnit(v).value);\nvar distance = length;\nvar current = z.string().or(z.number()).transform((v) => parseAndConvertSiUnit(v).value);\nvar time = z.string().or(z.number()).transform((v) => parseAndConvertSiUnit(v).value);\nvar rotation = z.string().or(z.number()).transform((arg) => {\n if (typeof arg === \"number\") return arg;\n if (arg.endsWith(\"deg\")) {\n return Number.parseFloat(arg.split(\"deg\")[0]);\n }\n if (arg.endsWith(\"rad\")) {\n return Number.parseFloat(arg.split(\"rad\")[0]) * 180 / Math.PI;\n }\n return Number.parseFloat(arg);\n});\nvar point = z.object({\n x: distance,\n y: distance\n});\nvar point3 = z.object({\n x: distance,\n y: distance,\n z: distance\n});\nvar size = z.object({\n width: z.number(),\n height: z.number()\n});\nvar getZodPrefixedIdWithDefault = (prefix) => {\n return z.string().optional().default(() => `${prefix}_${nanoid(10)}`);\n};\nvar supplier_name = z.enum([\n \"jlcpcb\",\n \"macrofab\",\n \"pcbway\",\n \"digikey\",\n \"mouser\",\n \"lcsc\"\n]);\nvar source_component_base = z.object({\n type: z.literal(\"source_component\"),\n ftype: z.string().optional(),\n source_component_id: z.string(),\n name: z.string(),\n manufacturer_part_number: z.string().optional(),\n supplier_part_numbers: z.record(supplier_name, z.array(z.string())).optional()\n});\nvar source_simple_capacitor = source_component_base.extend({\n ftype: z.literal(\"simple_capacitor\"),\n capacitance\n});\nvar source_simple_resistor = source_component_base.extend({\n ftype: z.literal(\"simple_resistor\"),\n resistance\n});\nvar source_simple_diode = source_component_base.extend({\n ftype: z.literal(\"simple_diode\")\n});\nvar source_simple_ground = source_component_base.extend({\n ftype: z.literal(\"simple_ground\")\n});\nvar source_simple_bug = source_component_base.extend({\n ftype: z.literal(\"simple_bug\")\n}).describe(\"@deprecated\");\nvar source_simple_chip = source_component_base.extend({\n ftype: z.literal(\"simple_chip\")\n});\nvar source_simple_inductor = source_component_base.extend({\n ftype: z.literal(\"simple_inductor\"),\n inductance\n});\nvar source_led = source_simple_diode.extend({\n ftype: z.literal(\"led\")\n});\nvar source_simple_power_source = source_component_base.extend({\n ftype: z.literal(\"simple_power_source\"),\n voltage\n});\nvar any_source_component = z.union([\n source_simple_resistor,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_ground,\n source_simple_chip,\n source_simple_bug,\n source_led,\n source_simple_power_source\n]);\nvar source_port = z.object({\n type: z.literal(\"source_port\"),\n pin_number: z.number().optional(),\n port_hints: z.array(z.string()).optional(),\n name: z.string(),\n source_port_id: z.string(),\n source_component_id: z.string()\n});\nvar source_trace = z.object({\n type: z.literal(\"source_trace\"),\n source_trace_id: z.string(),\n connected_source_port_ids: z.array(z.string()),\n connected_source_net_ids: z.array(z.string())\n});\nvar source_group = z.object({\n type: z.literal(\"source_group\"),\n source_group_id: z.string(),\n name: z.string().optional()\n});\nvar source_net = z.object({\n type: z.literal(\"source_net\"),\n source_net_id: z.string(),\n name: z.string(),\n member_source_group_ids: z.array(z.string()),\n is_power: z.boolean().optional(),\n is_ground: z.boolean().optional(),\n is_digital_signal: z.boolean().optional(),\n is_analog_signal: z.boolean().optional(),\n trace_width: z.number().optional()\n});\nvar schematic_box = z.object({\n type: z.literal(\"schematic_box\"),\n schematic_component_id: z.string(),\n width: distance,\n height: distance,\n x: distance,\n y: distance\n}).describe(\"Draws a box on the schematic\");\nvar schematic_path = z.object({\n type: z.literal(\"schematic_path\"),\n schematic_component_id: z.string(),\n fill_color: z.enum([\"red\", \"blue\"]).optional(),\n is_filled: z.boolean().optional(),\n points: z.array(point)\n});\nvar schematic_pin_styles = z.record(\n z.object({\n left_margin: length.optional(),\n right_margin: length.optional(),\n top_margin: length.optional(),\n bottom_margin: length.optional()\n })\n);\nvar schematic_component = z.object({\n type: z.literal(\"schematic_component\"),\n rotation: rotation.default(0),\n size,\n center: point,\n source_component_id: z.string(),\n schematic_component_id: z.string(),\n pin_spacing: length.optional(),\n pin_styles: schematic_pin_styles.optional(),\n box_width: length.optional(),\n symbol_name: z.string().optional(),\n port_arrangement: z.union([\n z.object({\n left_size: z.number(),\n right_size: z.number(),\n top_size: z.number().optional(),\n bottom_size: z.number().optional()\n }),\n z.object({\n left_side: z.object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional()\n }).optional(),\n right_side: z.object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional()\n }).optional(),\n top_side: z.object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional()\n }).optional(),\n bottom_side: z.object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional()\n }).optional()\n })\n ]).optional(),\n port_labels: z.record(z.string()).optional()\n});\nvar schematic_line = z.object({\n type: z.literal(\"schematic_line\"),\n schematic_component_id: z.string(),\n x1: distance,\n x2: distance,\n y1: distance,\n y2: distance\n});\nvar schematic_trace = z.object({\n type: z.literal(\"schematic_trace\"),\n schematic_trace_id: z.string(),\n source_trace_id: z.string(),\n edges: z.array(\n z.object({\n from: z.object({\n x: z.number(),\n y: z.number()\n }),\n to: z.object({\n x: z.number(),\n y: z.number()\n }),\n from_schematic_port_id: z.string().optional(),\n to_schematic_port_id: z.string().optional()\n })\n )\n});\nvar schematic_text = z.object({\n type: z.literal(\"schematic_text\"),\n schematic_component_id: z.string(),\n schematic_text_id: z.string(),\n text: z.string(),\n position: z.object({\n x: distance,\n y: distance\n }),\n rotation: z.number().default(0),\n anchor: z.enum([\"center\", \"left\", \"right\", \"top\", \"bottom\"]).default(\"center\")\n});\nvar schematic_port = z.object({\n type: z.literal(\"schematic_port\"),\n schematic_port_id: z.string(),\n source_port_id: z.string(),\n schematic_component_id: z.string().optional(),\n center: point,\n facing_direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional()\n}).describe(\"Defines a port on a schematic component\");\nvar schematic_net_label = z.object({\n type: z.literal(\"schematic_net_label\"),\n source_net_id: z.string(),\n center: point,\n anchor_side: z.enum([\"top\", \"bottom\", \"left\", \"right\"]),\n text: z.string()\n});\nvar schematic_error = z.object({\n schematic_error_id: z.string(),\n type: z.literal(\"schematic_error\"),\n // eventually each error type should be broken out into a dir of files\n error_type: z.literal(\"schematic_port_not_found\"),\n message: z.string()\n}).describe(\"Defines a schematic error on the schematic\");\nvar all_layers = [\n \"top\",\n \"bottom\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\"\n];\nvar layer_string = z.enum(all_layers);\nvar layer_ref = layer_string.or(\n z.object({\n name: layer_string\n })\n).transform((layer) => {\n if (typeof layer === \"string\") {\n return layer;\n }\n return layer.name;\n});\nvar visible_layer = z.enum([\"top\", \"bottom\"]);\nvar pcb_route_hint = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n via_to_layer: layer_ref.optional()\n});\nvar pcb_route_hints = z.array(pcb_route_hint);\nvar route_hint_point = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n to_layer: layer_ref.optional(),\n trace_width: distance.optional()\n});\nvar expectTypesMatch = (shouldBe) => {\n};\nvar pcb_component = z.object({\n type: z.literal(\"pcb_component\"),\n pcb_component_id: getZodPrefixedIdWithDefault(\"pcb_component\"),\n source_component_id: z.string(),\n center: point,\n layer: layer_ref,\n rotation,\n width: length,\n height: length\n}).describe(\"Defines a component on the PCB\");\nexpectTypesMatch(true);\nvar pcb_hole_circle_or_square = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.enum([\"circle\", \"square\"]),\n hole_diameter: z.number(),\n x: distance,\n y: distance\n});\nvar pcb_hole_circle_or_square_shape = pcb_hole_circle_or_square.describe(\n \"Defines a circular or square hole on the PCB\"\n);\nexpectTypesMatch(true);\nvar pcb_hole_oval = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.literal(\"oval\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance\n});\nvar pcb_hole_oval_shape = pcb_hole_oval.describe(\n \"Defines an oval hole on the PCB\"\n);\nexpectTypesMatch(true);\nvar pcb_hole = pcb_hole_circle_or_square.or(pcb_hole_oval);\nvar pcb_plated_hole_circle = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circle\"),\n outer_diameter: z.number(),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\")\n});\nvar pcb_plated_hole_oval = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.enum([\"oval\", \"pill\"]),\n outer_width: z.number(),\n outer_height: z.number(),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\")\n});\nvar pcb_plated_hole = z.union([\n pcb_plated_hole_circle,\n pcb_plated_hole_oval\n]);\nexpectTypesMatch(\n true\n);\nexpectTypesMatch(true);\nvar pcb_port = z.object({\n type: z.literal(\"pcb_port\"),\n pcb_port_id: getZodPrefixedIdWithDefault(\"pcb_port\"),\n source_port_id: z.string(),\n pcb_component_id: z.string(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref)\n}).describe(\"Defines a port on the PCB\");\nexpectTypesMatch(true);\nvar pcb_smtpad_circle = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"circle\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional()\n});\nvar pcb_smtpad_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional()\n});\nvar pcb_smtpad = z.union([pcb_smtpad_circle, pcb_smtpad_rect]).describe(\"Defines an SMT pad on the PCB\");\nexpectTypesMatch(true);\nexpectTypesMatch(true);\nvar pcb_text = z.object({\n type: z.literal(\"pcb_text\"),\n pcb_text_id: getZodPrefixedIdWithDefault(\"pcb_text\"),\n text: z.string(),\n center: point,\n layer: layer_ref,\n width: length,\n height: length,\n lines: z.number(),\n align: z.enum([\"bottom-left\"])\n}).describe(\"Defines text on the PCB\");\nexpectTypesMatch(true);\nvar pcb_trace_route_point_wire = z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref\n});\nvar pcb_trace_route_point_via = z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string()\n});\nvar pcb_trace_route_point = z.union([\n pcb_trace_route_point_wire,\n pcb_trace_route_point_via\n]);\nvar pcb_trace = z.object({\n type: z.literal(\"pcb_trace\"),\n source_trace_id: z.string().optional(),\n pcb_component_id: z.string().optional(),\n pcb_trace_id: getZodPrefixedIdWithDefault(\"pcb_trace\"),\n route_thickness_mode: z.enum([\"constant\", \"interpolated\"]).default(\"constant\").optional(),\n should_round_corners: z.boolean().optional(),\n route: z.array(\n z.union([\n z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref\n }),\n z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string()\n })\n ])\n )\n}).describe(\"Defines a trace on the PCB\");\nexpectTypesMatch(true);\nexpectTypesMatch(true);\nvar pcb_trace_error = z.object({\n type: z.literal(\"pcb_trace_error\"),\n pcb_trace_error_id: getZodPrefixedIdWithDefault(\"pcb_trace_error\"),\n error_type: z.literal(\"pcb_trace_error\"),\n message: z.string(),\n center: point.optional(),\n pcb_trace_id: z.string(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string())\n}).describe(\"Defines a trace error on the PCB\");\nexpectTypesMatch(true);\nvar pcb_port_not_matched_error = z.object({\n type: z.literal(\"pcb_port_not_matched_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n message: z.string(),\n pcb_component_ids: z.array(z.string())\n}).describe(\"Defines a trace error on the PCB where a port is not matched\");\nexpectTypesMatch(true);\nvar pcb_via = z.object({\n type: z.literal(\"pcb_via\"),\n pcb_via_id: getZodPrefixedIdWithDefault(\"pcb_via\"),\n x: distance,\n y: distance,\n outer_diameter: distance.default(\"0.6mm\"),\n hole_diameter: distance.default(\"0.25mm\"),\n /** @deprecated */\n from_layer: layer_ref.optional(),\n /** @deprecated */\n to_layer: layer_ref.optional(),\n layers: z.array(layer_ref)\n}).describe(\"Defines a via on the PCB\");\nexpectTypesMatch(true);\nvar pcb_board = z.object({\n type: z.literal(\"pcb_board\"),\n pcb_board_id: getZodPrefixedIdWithDefault(\"pcb_board\"),\n width: length,\n height: length,\n center: point,\n outline: z.array(point).optional()\n}).describe(\"Defines the board outline of the PCB\");\nexpectTypesMatch(true);\nvar pcb_placement_error = z.object({\n type: z.literal(\"pcb_placement_error\"),\n pcb_placement_error_id: getZodPrefixedIdWithDefault(\"pcb_placement_error\"),\n message: z.string()\n}).describe(\"Defines a placement error on the PCB\");\nexpectTypesMatch(true);\nvar pcb_trace_hint = z.object({\n type: z.literal(\"pcb_trace_hint\"),\n pcb_trace_hint_id: getZodPrefixedIdWithDefault(\"pcb_trace_hint\"),\n pcb_port_id: z.string(),\n pcb_component_id: z.string(),\n route: z.array(route_hint_point)\n}).describe(\"A hint that can be used during generation of a PCB trace\");\nexpectTypesMatch(true);\nvar pcb_silkscreen_line = z.object({\n type: z.literal(\"pcb_silkscreen_line\"),\n pcb_silkscreen_line_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_line\"),\n pcb_component_id: z.string(),\n stroke_width: distance.default(\"0.1mm\"),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n layer: visible_layer\n}).describe(\"Defines a silkscreen line on the PCB\");\nexpectTypesMatch(true);\nvar pcb_silkscreen_path = z.object({\n type: z.literal(\"pcb_silkscreen_path\"),\n pcb_silkscreen_path_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_path\"),\n pcb_component_id: z.string(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length\n}).describe(\"Defines a silkscreen path on the PCB\");\nexpectTypesMatch(true);\nvar pcb_silkscreen_text = z.object({\n type: z.literal(\"pcb_silkscreen_text\"),\n pcb_silkscreen_text_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_text\"),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: layer_ref,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z.enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"]).default(\"center\")\n}).describe(\"Defines silkscreen text on the PCB\");\nexpectTypesMatch(true);\nvar pcb_silkscreen_rect = z.object({\n type: z.literal(\"pcb_silkscreen_rect\"),\n pcb_silkscreen_rect_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_rect\"),\n pcb_component_id: z.string(),\n center: point,\n width: length,\n height: length,\n layer: layer_ref\n}).describe(\"Defines a silkscreen rect on the PCB\");\nexpectTypesMatch(true);\nvar pcb_silkscreen_circle = z.object({\n type: z.literal(\"pcb_silkscreen_circle\"),\n pcb_silkscreen_circle_id: getZodPrefixedIdWithDefault(\n \"pcb_silkscreen_circle\"\n ),\n pcb_component_id: z.string(),\n center: point,\n radius: length,\n layer: visible_layer\n}).describe(\"Defines a silkscreen circle on the PCB\");\nexpectTypesMatch(true);\nvar pcb_silkscreen_oval = z.object({\n type: z.literal(\"pcb_silkscreen_oval\"),\n pcb_silkscreen_oval_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_oval\"),\n pcb_component_id: z.string(),\n center: point,\n radius_x: distance,\n radius_y: distance,\n layer: visible_layer\n}).describe(\"Defines a silkscreen oval on the PCB\");\nexpectTypesMatch(true);\nvar pcb_fabrication_note_text = z.object({\n type: z.literal(\"pcb_fabrication_note_text\"),\n pcb_fabrication_note_text_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_text\"\n ),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z.enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"]).default(\"center\"),\n color: z.string().optional()\n}).describe(\n \"Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\"\n);\nexpectTypesMatch(true);\nvar pcb_fabrication_note_path = z.object({\n type: z.literal(\"pcb_fabrication_note_path\"),\n pcb_fabrication_note_path_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_path\"\n ),\n pcb_component_id: z.string(),\n layer: layer_ref,\n route: z.array(point),\n stroke_width: length,\n color: z.string().optional()\n}).describe(\n \"Defines a fabrication path on the PCB for fabricators or assemblers\"\n);\nexpectTypesMatch(true);\nvar pcb_keepout = z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"rect\"),\n center: point,\n width: distance,\n height: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()),\n // Specify layers where the keepout applies\n description: z.string().optional()\n // Optional description of the keepout\n}).or(\n z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"circle\"),\n center: point,\n radius: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()),\n // Specify layers where the keepout applies\n description: z.string().optional()\n // Optional description of the keepout\n })\n);\nvar cad_component = z.object({\n type: z.literal(\"cad_component\"),\n cad_component_id: z.string(),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n position: point3,\n rotation: point3.optional(),\n size: point3.optional(),\n layer: layer_ref.optional(),\n // These are all ways to generate/load the 3d model\n footprinter_string: z.string().optional(),\n model_obj_url: z.string().optional(),\n model_stl_url: z.string().optional(),\n model_3mf_url: z.string().optional(),\n model_jscad: z.any().optional()\n}).describe(\"Defines a component on the PCB\");\nvar any_circuit_element = z.union([\n source_trace,\n source_port,\n any_source_component,\n source_led,\n source_net,\n source_group,\n source_simple_bug,\n source_simple_chip,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_resistor,\n source_simple_power_source,\n pcb_component,\n pcb_hole,\n pcb_plated_hole,\n pcb_keepout,\n pcb_port,\n pcb_text,\n pcb_trace,\n pcb_via,\n pcb_smtpad,\n pcb_board,\n pcb_trace_hint,\n pcb_silkscreen_line,\n pcb_silkscreen_path,\n pcb_silkscreen_text,\n pcb_silkscreen_rect,\n pcb_silkscreen_circle,\n pcb_silkscreen_oval,\n pcb_trace_error,\n pcb_placement_error,\n pcb_port_not_matched_error,\n pcb_fabrication_note_path,\n pcb_fabrication_note_text,\n schematic_box,\n schematic_text,\n schematic_line,\n schematic_component,\n schematic_port,\n schematic_trace,\n schematic_path,\n schematic_error,\n schematic_net_label,\n cad_component\n]);\n\n// src/components/CanvasPrimitiveRenderer.tsx\nvar import_jsx_runtime2 = require(\"react/jsx-runtime\");\nvar CanvasPrimitiveRenderer = ({\n primitives,\n transform,\n grid,\n width = 500,\n height = 500\n}) => {\n const canvasRefs = (0, import_react4.useRef)();\n const selectedLayer = useGlobalStore((s) => s.selected_layer);\n (0, import_react4.useEffect)(() => {\n if (!canvasRefs.current) return;\n if (Object.keys(canvasRefs.current).length === 0) return;\n const drawer = new Drawer(canvasRefs.current);\n if (transform) drawer.transform = transform;\n drawer.clear();\n drawer.foregroundLayer = selectedLayer;\n drawPrimitives(drawer, primitives);\n drawer.orderAndFadeLayers();\n }, [primitives, transform, selectedLayer]);\n return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(\n \"div\",\n {\n style: {\n backgroundColor: \"black\",\n width,\n height,\n position: \"relative\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(\n import_react_supergrid.SuperGrid,\n {\n textColor: \"rgba(0,255,0,0.8)\",\n majorColor: \"rgba(0,255,0,0.4)\",\n minorColor: \"rgba(0,255,0,0.2)\",\n screenSpaceCellSize: 200,\n width,\n height,\n transform,\n stringifyCoord: (x, y, z2) => `${(0, import_react_supergrid.toMMSI)(x, z2)}, ${(0, import_react_supergrid.toMMSI)(y, z2)}`\n }\n ),\n all_layers.map((l) => l.replace(/-/g, \"\")).concat([\"drill\", \"other\"]).map((layer, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(\n \"canvas\",\n {\n ref: (el) => {\n canvasRefs.current ?? (canvasRefs.current = {});\n canvasRefs.current[layer] = el;\n },\n style: {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\"\n },\n width,\n height\n },\n layer\n ))\n ]\n }\n );\n};\n\n// src/components/CanvasElementsRenderer.tsx\nvar import_react16 = require(\"react\");\n\n// src/lib/convert-element-to-primitive.ts\nvar import_soup_util = __toESM(require_dist());\n\n// src/lib/util/expand-stroke.ts\nfunction getExpandedStroke(strokeInput, defaultWidth) {\n if (strokeInput.length < 2) {\n throw new Error(\"Stroke must have at least two points\");\n }\n const stroke = strokeInput.map((point2) => {\n if (Array.isArray(point2)) {\n return { x: point2[0], y: point2[1] };\n }\n return point2;\n });\n const leftSide = [];\n const rightSide = [];\n function getNormal(p1, p2) {\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n const length2 = Math.sqrt(dx * dx + dy * dy);\n return { x: -dy / length2, y: dx / length2 };\n }\n function addPoint(point2, normal, factor, width) {\n const halfWidth = width / 2;\n const newPoint = {\n x: point2.x + normal.x * halfWidth * factor,\n y: point2.y + normal.y * halfWidth * factor\n };\n if (factor > 0) {\n leftSide.push(newPoint);\n } else {\n rightSide.unshift(newPoint);\n }\n }\n const firstNormal = getNormal(stroke[0], stroke[1]);\n const firstWidth = stroke[0].trace_width ?? defaultWidth;\n addPoint(stroke[0], firstNormal, 1, firstWidth);\n addPoint(stroke[0], firstNormal, -1, firstWidth);\n for (let i = 1; i < stroke.length - 1; i++) {\n const prev = stroke[i - 1];\n const current2 = stroke[i];\n const next = stroke[i + 1];\n const normalPrev = getNormal(prev, current2);\n const normalNext = getNormal(current2, next);\n const miterX = normalPrev.x + normalNext.x;\n const miterY = normalPrev.y + normalNext.y;\n const miterLength = Math.sqrt(miterX * miterX + miterY * miterY);\n const currentWidth = current2.trace_width ?? defaultWidth;\n const miterLimit = 2;\n if (miterLength / 2 > miterLimit * (currentWidth / 2)) {\n addPoint(current2, normalPrev, 1, currentWidth);\n addPoint(current2, normalNext, 1, currentWidth);\n addPoint(current2, normalPrev, -1, currentWidth);\n addPoint(current2, normalNext, -1, currentWidth);\n } else {\n const scale2 = 1 / miterLength;\n addPoint(current2, { x: miterX * scale2, y: miterY * scale2 }, 1, currentWidth);\n addPoint(current2, { x: miterX * scale2, y: miterY * scale2 }, -1, currentWidth);\n }\n }\n const lastNormal = getNormal(\n stroke[stroke.length - 2],\n stroke[stroke.length - 1]\n );\n const lastWidth = stroke[stroke.length - 1].trace_width ?? defaultWidth;\n addPoint(stroke[stroke.length - 1], lastNormal, 1, lastWidth);\n addPoint(stroke[stroke.length - 1], lastNormal, -1, lastWidth);\n return [...leftSide, ...rightSide];\n}\n\n// src/lib/convert-element-to-primitive.ts\nvar globalPcbDrawingObjectCount = 0;\nvar convertElementToPrimitives = (element, allElements) => {\n const _parent_pcb_component = \"pcb_component_id\" in element ? allElements.find(\n (elm) => elm.type === \"pcb_component\" && elm.pcb_component_id === element.pcb_component_id\n ) : void 0;\n const _parent_source_component = _parent_pcb_component && \"source_component_id\" in _parent_pcb_component ? allElements.find(\n (elm) => elm.type === \"source_component\" && elm.source_component_id === _parent_pcb_component.source_component_id\n ) : void 0;\n const _source_port_id = \"source_port_id\" in element ? element.source_port_id : \"pcb_port_id\" in element ? (0, import_soup_util.su)(allElements).pcb_port.get(element.pcb_port_id)?.source_port_id : void 0;\n const _source_port = _source_port_id ? allElements.find(\n (e) => e.type === \"source_port\" && e.source_port_id === _source_port_id\n ) : void 0;\n switch (element.type) {\n case \"pcb_board\": {\n const { width, height, center, outline } = element;\n if (outline && outline.length > 2) {\n return outline.map((point2, index, array) => {\n return {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: point2.x,\n y1: point2.y,\n x2: index === array.length - 1 ? array[0].x : array[index + 1].x,\n y2: index === array.length - 1 ? array[0].y : array[index + 1].y,\n width: 1,\n // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element\n };\n });\n }\n return [\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y - height / 2,\n x2: center.x + width / 2,\n y2: center.y - height / 2,\n width: 1,\n // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y + height / 2,\n x2: center.x + width / 2,\n y2: center.y + height / 2,\n width: 1,\n // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y - height / 2,\n x2: center.x - width / 2,\n y2: center.y + height / 2,\n width: 1,\n // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x + width / 2,\n y1: center.y - height / 2,\n x2: center.x + width / 2,\n y2: center.y + height / 2,\n width: 1,\n // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element\n }\n ];\n }\n case \"pcb_smtpad\": {\n if (element.shape === \"rect\") {\n const { shape, x, y, width, height, layer } = element;\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x,\n y,\n w: width,\n h: height,\n layer: layer || \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port\n }\n ];\n } else if (element.shape === \"circle\") {\n const { x, y, radius, layer } = element;\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: radius,\n layer: layer || \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port\n }\n ];\n }\n return [];\n }\n case \"pcb_hole\": {\n if (element.hole_shape === \"circle\" || !element.hole_shape) {\n const { x, y, hole_diameter } = element;\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n layer: \"drill\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component\n }\n ];\n }\n return [];\n }\n case \"pcb_plated_hole\": {\n if (element.shape === \"circle\") {\n const { x, y, hole_diameter, outer_diameter } = element;\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n // TODO support layer on pcb_plated_hole\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n // TODO support layer on pcb_plated_hole\n layer: \"drill\",\n _element: element\n // double highlights are annoying\n // _element: element,\n }\n ];\n } else if (element.shape === \"oval\") {\n const { x, y, outer_height, outer_width, hole_height, hole_width } = element;\n return [\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"oval\",\n x,\n y,\n rX: outer_width / 2,\n rY: outer_height / 2,\n layer: \"top\",\n // TODO: Confirm layer handling for oval plated holes\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port\n },\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"oval\",\n x,\n y,\n rX: hole_width / 2,\n rY: hole_height / 2,\n layer: \"drill\"\n }\n ];\n } else if (element.shape === \"pill\") {\n const { x, y, outer_height, outer_width, hole_height, hole_width } = element;\n return [\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"pill\",\n x,\n y,\n w: outer_width,\n h: outer_height,\n layer: \"top\",\n // TODO: Confirm layer handling for oval plated holes\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port\n },\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"pill\",\n x,\n y,\n w: hole_width,\n h: hole_height,\n layer: \"drill\"\n }\n ];\n } else {\n return [];\n }\n }\n case \"pcb_keepout\": {\n if (element.shape === \"circle\") {\n const { center, radius } = element;\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x: center.x,\n y: center.y,\n r: radius,\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n mesh_fill: true\n }\n ];\n } else if (element.shape === \"rect\") {\n const { x, y, width, height } = element;\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x,\n y,\n w: width,\n h: height,\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n mesh_fill: true\n }\n ];\n }\n }\n case \"pcb_trace\": {\n const primitives = [];\n if (element.route_thickness_mode === \"interpolated\") {\n const strokeInput = element.route.map((r) => ({\n x: r.x,\n y: r.y,\n trace_width: r.route_type === \"wire\" ? r.width : 0.5\n }));\n const expandedStroke = getExpandedStroke(strokeInput, 0.5);\n primitives.push({\n _pcb_drawing_object_id: `polygon_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"polygon\",\n points: expandedStroke,\n layer: element.route[0].layer\n // same layer for all points\n });\n element.route.forEach((r) => {\n if (r.route_type === \"via\") {\n primitives.push({\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"circle\",\n x: r.x,\n y: r.y,\n radius: r.outer_diameter / 2,\n fill: true,\n layer: element.route.layer\n });\n }\n });\n return primitives;\n }\n let prevX = null;\n let prevY = null;\n for (const route of element.route) {\n if (route.route_type === \"wire\") {\n if (prevX !== null && prevY !== null) {\n primitives.push({\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"line\",\n x1: prevX,\n y1: prevY,\n x2: route.x,\n y2: route.y,\n width: route.width,\n squareCap: false,\n layer: route.layer\n });\n }\n prevX = route.x;\n prevY = route.y;\n }\n }\n return primitives;\n }\n // The builder currently outputs these as smtpads and holes, so pcb_via isn't\n // used, but that maybe should be changed\n case \"pcb_via\": {\n const { x, y, outer_diameter, hole_diameter, from_layer, to_layer } = element;\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n layer: from_layer,\n _element: element,\n _parent_pcb_component,\n _parent_source_component\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n layer: \"drill\",\n _parent_pcb_component,\n _parent_source_component\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n layer: to_layer,\n _element: element,\n _parent_pcb_component,\n _parent_source_component\n }\n ];\n }\n case \"pcb_silkscreen_rect\": {\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x: element.center.x,\n y: element.center.y,\n w: element.width,\n h: element.height,\n layer: element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\"\n }\n ];\n }\n case \"pcb_silkscreen_circle\": {\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x: element.center.x,\n y: element.center.y,\n r: element.radius,\n layer: element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\"\n }\n ];\n }\n case \"pcb_silkscreen_oval\": {\n return [\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"oval\",\n x: element.center.x,\n y: element.center.y,\n rX: element.radius_x / 2,\n rY: element.radius_y / 2,\n layer: element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\"\n }\n ];\n }\n case \"pcb_silkscreen_pill\": {\n return [\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"pill\",\n x: element.center.x,\n y: element.center.y,\n w: element.width,\n h: element.height,\n layer: element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\"\n }\n ];\n }\n case \"pcb_silkscreen_line\": {\n return [\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: element.x1,\n y1: element.y1,\n x2: element.x2,\n y2: element.y2,\n width: 0.1,\n // TODO add strokewidth\n squareCap: false,\n layer: element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\"\n }\n ];\n }\n case \"pcb_fabrication_note_path\":\n case \"pcb_silkscreen_path\": {\n const {\n pcb_component_id,\n route,\n // Array<{ x: number, y: number }>\n type\n } = element;\n let layer;\n if (type === \"pcb_silkscreen_path\") {\n layer = element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\";\n } else if (type === \"pcb_fabrication_note_path\") {\n layer = \"top_fabrication\";\n }\n return route.slice(0, -1).map((point2, index) => {\n const nextPoint = route[index + 1];\n return {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: point2.x,\n y1: point2.y,\n x2: nextPoint.x,\n y2: nextPoint.y,\n width: element.stroke_width ?? 0.1,\n squareCap: false,\n layer,\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port\n };\n }).filter(Boolean);\n }\n case \"pcb_silkscreen_text\": {\n return [\n {\n _pcb_drawing_object_id: `text_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"text\",\n x: element.anchor_position.x,\n y: element.anchor_position.y,\n layer: element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n align: element.anchor_alignment ?? \"center\",\n text: element.text,\n size: element.font_size\n // Add the required 'size' property\n }\n ];\n }\n case \"pcb_fabrication_note_text\": {\n return [\n {\n _pcb_drawing_object_id: `text_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"text\",\n x: element.anchor_position.x,\n y: element.anchor_position.y,\n layer: element.layer === \"bottom\" ? \"bottom_fabrication\" : \"top_fabrication\",\n size: element.font_size,\n align: element.anchor_alignment ?? \"center\",\n text: element.text\n }\n ];\n }\n }\n return [];\n};\n\n// src/components/MouseElementTracker.tsx\nvar import_react6 = require(\"react\");\nvar import_react7 = require(\"react\");\nvar import_transformation_matrix2 = require(\"transformation-matrix\");\n\n// src/components/ElementOverlayBox.tsx\nvar import_react5 = require(\"react\");\nvar import_jsx_runtime3 = require(\"react/jsx-runtime\");\nvar containerStyle = {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n color: \"red\",\n fontFamily: \"sans-serif\",\n fontSize: 12,\n textShadow: \"0 0 2px black\"\n};\nvar getTextForHighlightedPrimitive = (prim) => {\n const {\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port\n } = prim;\n switch (element.type) {\n case \"pcb_smtpad\":\n case \"pcb_plated_hole\": {\n let s = \"\";\n if (_parent_source_component && \"name\" in _parent_source_component && _parent_source_component.name) {\n s += `.${_parent_source_component.name} > `;\n }\n const port_hints = Array.from(\n new Set(\n (element.port_hints ?? []).concat(\n _source_port?.port_hints ?? []\n )\n )\n ).sort((a, b) => b.localeCompare(a));\n s += port_hints.map((ph) => ph.match(/^[0-9]+$/) ? `port.${ph}` : `.${ph}`).join(\", \");\n return s;\n }\n default: {\n return \"\";\n }\n }\n};\nvar layerColorHightlightMap = {\n top: \"red\",\n bottom: \"aqua\"\n};\nvar HighlightedPrimitiveBoxWithText = ({\n primitive\n}) => {\n const [finalState, setFinalState] = (0, import_react5.useState)(false);\n (0, import_react5.useEffect)(() => {\n setTimeout(() => {\n setFinalState(true);\n }, 100);\n }, []);\n let [x, y, w, h] = [\n primitive.screen_x,\n primitive.screen_y,\n primitive.screen_w,\n primitive.screen_h\n ];\n const si = primitive.same_space_index ?? 0;\n const sip = 26;\n const color2 = layerColorHightlightMap[primitive?._element?.layer] ?? \"red\";\n return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n left: x - w / 2 - 8,\n top: y - h / 2 - 8,\n width: w + 16,\n height: h + 16,\n color: color2\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(\n \"div\",\n {\n style: {\n // width: finalState ? `${100 + 20 * si}%` : \"100%\",\n // height: finalState ? `${100 + 20 * si}%` : \"100%\",\n // marginLeft: finalState ? `${-10 * si}%` : 0,\n // marginTop: finalState ? `${-10 * si}%` : 0,\n width: finalState ? `calc(100% + ${sip * 2 * si}px)` : \"100%\",\n height: finalState ? `calc(100% + ${sip * 2 * si}px)` : \"100%\",\n marginLeft: finalState ? `${-sip * si}px` : 0,\n marginTop: finalState ? `${-sip * si}px` : 0,\n border: `1px solid ${color2}`,\n opacity: finalState ? 1 : si === 0 ? 1 : 0,\n transition: \"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n left: 0,\n bottom: h + 20 + sip * si,\n marginLeft: finalState ? `${-sip * si}px` : 0,\n marginBottom: finalState ? 0 : -sip * si,\n transition: \"margin-left 0.2s, margin-bottom 0.2s\",\n lineHeight: \"0.8em\"\n },\n children: getTextForHighlightedPrimitive(primitive)\n }\n )\n }\n )\n }\n );\n};\nvar ElementOverlayBox = ({\n highlightedPrimitives\n}) => {\n const is_moving_component = useGlobalStore((s) => s.is_moving_component);\n return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(\"div\", { style: containerStyle, children: !is_moving_component && highlightedPrimitives.map((primitive, i) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HighlightedPrimitiveBoxWithText, { primitive }, i)) });\n};\n\n// src/lib/util/if-sets-match-exactly.ts\nfunction ifSetsMatchExactly(set1, set2) {\n if (set1.size !== set2.size) return false;\n return Array.from(set1).every((item) => set2.has(item));\n}\n\n// src/components/MouseElementTracker.tsx\nvar import_jsx_runtime4 = require(\"react/jsx-runtime\");\nvar MouseElementTracker = ({\n children,\n transform,\n primitives,\n onMouseHoverOverPrimitives\n}) => {\n const [mousedPrimitives, setMousedPrimitives] = (0, import_react6.useState)([]);\n const highlightedPrimitives = (0, import_react7.useMemo)(() => {\n const highlightedPrimitives2 = [];\n for (const primitive of mousedPrimitives) {\n if (primitive._element?.type === \"pcb_via\") continue;\n if (primitive._element?.type === \"pcb_component\") continue;\n if (primitive?.layer === \"drill\") continue;\n const screenPos = (0, import_transformation_matrix2.applyToPoint)(\n transform,\n primitive\n );\n const w = \"w\" in primitive ? primitive.w : \"r\" in primitive ? primitive.r * 2 : 0;\n const h = \"h\" in primitive ? primitive.h : \"r\" in primitive ? primitive.r * 2 : 0;\n const screenSize = {\n w: w * transform.a,\n h: h * transform.a\n };\n let same_space_index = highlightedPrimitives2.filter(\n (hp) => screenPos.x === hp.screen_x && screenPos.y === hp.screen_y && screenSize.w === hp.screen_w && screenSize.h === hp.screen_h\n ).length;\n highlightedPrimitives2.push({\n ...primitive,\n screen_x: screenPos.x,\n screen_y: screenPos.y,\n screen_w: screenSize.w,\n screen_h: screenSize.h,\n same_space_index\n });\n }\n return highlightedPrimitives2;\n }, [mousedPrimitives, transform]);\n return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(\n \"div\",\n {\n style: { position: \"relative\" },\n onMouseMove: (e) => {\n if (transform) {\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const rwPoint = (0, import_transformation_matrix2.applyToPoint)((0, import_transformation_matrix2.inverse)(transform), { x, y });\n const newMousedPrimitives = [];\n for (const primitive of primitives) {\n if (!(\"x\" in primitive && \"y\" in primitive && (\"w\" in primitive && \"h\" in primitive || \"r\" in primitive)))\n continue;\n if (!primitive._element) continue;\n const w = \"w\" in primitive ? primitive.w : primitive.r * 2;\n const h = \"h\" in primitive ? primitive.h : primitive.r * 2;\n if (Math.abs(primitive.x - rwPoint.x) < w / 2 && Math.abs(primitive.y - rwPoint.y) < h / 2) {\n newMousedPrimitives.push(primitive);\n }\n }\n if (ifSetsMatchExactly(\n new Set(newMousedPrimitives.map((p) => p._pcb_drawing_object_id)),\n new Set(mousedPrimitives.map((p) => p._pcb_drawing_object_id))\n )) {\n return;\n }\n setMousedPrimitives(newMousedPrimitives);\n onMouseHoverOverPrimitives(newMousedPrimitives);\n }\n },\n children: [\n children,\n /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ElementOverlayBox, { highlightedPrimitives })\n ]\n }\n );\n};\n\n// src/components/DimensionOverlay.tsx\nvar import_react8 = require(\"react\");\nvar import_transformation_matrix3 = require(\"transformation-matrix\");\nvar import_jsx_runtime5 = require(\"react/jsx-runtime\");\nvar DimensionOverlay = ({ children, transform }) => {\n if (!transform) transform = (0, import_transformation_matrix3.identity)();\n const [dimensionToolVisible, setDimensionToolVisible] = (0, import_react8.useState)(false);\n const [dimensionToolStretching, setDimensionToolStretching] = (0, import_react8.useState)(false);\n const [dStart, setDStart] = (0, import_react8.useState)({ x: 0, y: 0 });\n const [dEnd, setDEnd] = (0, import_react8.useState)({ x: 0, y: 0 });\n const mousePosRef = (0, import_react8.useRef)({ x: 0, y: 0 });\n const containerRef = (0, import_react8.useRef)(null);\n const container = containerRef.current;\n const containerBounds = container?.getBoundingClientRect();\n (0, import_react8.useEffect)(() => {\n const container2 = containerRef.current;\n const down = (e) => {\n if (e.key === \"d\") {\n setDStart({ x: mousePosRef.current.x, y: mousePosRef.current.y });\n setDEnd({ x: mousePosRef.current.x, y: mousePosRef.current.y });\n setDimensionToolVisible((visible) => !visible);\n setDimensionToolStretching(true);\n e.preventDefault();\n }\n if (e.key === \"Escape\") {\n setDimensionToolVisible(false);\n setDimensionToolStretching(false);\n }\n };\n const addKeyListener = () => {\n if (container2) {\n container2.addEventListener(\"keydown\", down);\n }\n };\n const removeKeyListener = () => {\n if (container2) {\n container2.removeEventListener(\"keydown\", down);\n }\n };\n if (container2) {\n container2.addEventListener(\"focus\", addKeyListener);\n container2.addEventListener(\"blur\", removeKeyListener);\n container2.addEventListener(\"mouseenter\", addKeyListener);\n container2.addEventListener(\"mouseleave\", removeKeyListener);\n }\n return () => {\n if (container2) {\n container2.removeEventListener(\"focus\", addKeyListener);\n container2.removeEventListener(\"blur\", removeKeyListener);\n container2.removeEventListener(\"mouseenter\", addKeyListener);\n container2.removeEventListener(\"mouseleave\", removeKeyListener);\n }\n };\n }, [containerRef]);\n const screenDStart = (0, import_transformation_matrix3.applyToPoint)(transform, dStart);\n const screenDEnd = (0, import_transformation_matrix3.applyToPoint)(transform, dEnd);\n const arrowScreenBounds = {\n left: Math.min(screenDStart.x, screenDEnd.x),\n right: Math.max(screenDStart.x, screenDEnd.x),\n top: Math.min(screenDStart.y, screenDEnd.y),\n bottom: Math.max(screenDStart.y, screenDEnd.y),\n flipX: screenDStart.x > screenDEnd.x,\n flipY: screenDStart.y > screenDEnd.y,\n width: 0,\n height: 0\n };\n arrowScreenBounds.width = arrowScreenBounds.right - arrowScreenBounds.left;\n arrowScreenBounds.height = arrowScreenBounds.bottom - arrowScreenBounds.top;\n return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(\n \"div\",\n {\n ref: containerRef,\n tabIndex: 0,\n style: { position: \"relative\" },\n onMouseEnter: () => {\n if (containerRef.current) {\n containerRef.current.focus();\n }\n },\n onMouseLeave: () => {\n if (containerRef.current) {\n containerRef.current.blur();\n }\n },\n onMouseMove: (e) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const rwPoint = (0, import_transformation_matrix3.applyToPoint)((0, import_transformation_matrix3.inverse)(transform), { x, y });\n mousePosRef.current.x = rwPoint.x;\n mousePosRef.current.y = rwPoint.y;\n if (dimensionToolStretching) {\n setDEnd({ x: rwPoint.x, y: rwPoint.y });\n }\n },\n onMouseDown: () => {\n if (dimensionToolStretching) {\n setDimensionToolStretching(false);\n } else if (dimensionToolVisible) {\n setDimensionToolVisible(false);\n }\n },\n children: [\n children,\n dimensionToolVisible && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n left: arrowScreenBounds.left,\n width: arrowScreenBounds.width,\n textAlign: \"center\",\n top: screenDStart.y + 2,\n color: \"red\",\n mixBlendMode: \"difference\",\n pointerEvents: \"none\",\n marginTop: arrowScreenBounds.flipY ? 0 : -20,\n fontSize: 12,\n fontFamily: \"sans-serif\",\n zIndex: 1e3\n },\n children: Math.abs(dStart.x - dEnd.x).toFixed(2)\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n left: screenDEnd.x,\n height: arrowScreenBounds.height,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n top: arrowScreenBounds.top,\n color: \"red\",\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n fontSize: 12,\n fontFamily: \"sans-serif\",\n zIndex: 1e3\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\n \"div\",\n {\n style: {\n marginLeft: arrowScreenBounds.flipX ? \"-100%\" : 4,\n paddingRight: 4\n },\n children: Math.abs(dStart.y - dEnd.y).toFixed(2)\n }\n )\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(\n \"svg\",\n {\n style: {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1e3\n },\n width: containerBounds.width,\n height: containerBounds.height,\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\"defs\", { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\n \"marker\",\n {\n id: \"head\",\n orient: \"auto\",\n markerWidth: \"3\",\n markerHeight: \"4\",\n refX: \"2\",\n refY: \"2\",\n children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\"path\", { d: \"M0,0 V4 L2,2 Z\", fill: \"red\" })\n }\n ) }),\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\n \"line\",\n {\n x1: screenDStart.x,\n y1: screenDStart.y,\n x2: screenDEnd.x,\n y2: screenDEnd.y,\n markerEnd: \"url(#head)\",\n strokeWidth: 1.5,\n fill: \"none\",\n stroke: \"red\"\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\n \"line\",\n {\n x1: screenDStart.x,\n y1: screenDStart.y,\n x2: screenDEnd.x,\n y2: screenDStart.y,\n strokeWidth: 1.5,\n fill: \"none\",\n strokeDasharray: \"2,2\",\n stroke: \"red\"\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\n \"line\",\n {\n x1: screenDEnd.x,\n y1: screenDStart.y,\n x2: screenDEnd.x,\n y2: screenDEnd.y,\n strokeWidth: 1.5,\n fill: \"none\",\n strokeDasharray: \"2,2\",\n stroke: \"red\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(\n \"div\",\n {\n style: {\n right: 0,\n bottom: 0,\n position: \"absolute\",\n color: \"red\",\n fontFamily: \"sans-serif\",\n fontSize: 12,\n margin: 4\n },\n children: [\n \"(\",\n dStart.x.toFixed(2),\n \",\",\n dStart.y.toFixed(2),\n \")\",\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\"br\", {}),\n \"(\",\n dEnd.x.toFixed(2),\n \",\",\n dEnd.y.toFixed(2),\n \")\",\n /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(\"br\", {}),\n \"dist:\",\n \" \",\n Math.sqrt(\n Math.pow(dEnd.x - dStart.x, 2) + Math.pow(dEnd.y - dStart.y, 2)\n ).toFixed(2)\n ]\n }\n )\n ] })\n ]\n }\n );\n};\n\n// src/components/ToolbarOverlay.tsx\nvar import_react9 = require(\"react\");\nvar import_css = require(\"@emotion/css\");\n\n// package.json\nvar package_default = {\n name: \"@tscircuit/pcb-viewer\",\n version: \"1.10.4\",\n main: \"dist/index.js\",\n repository: \"tscircuit/pcb-viewer\",\n license: \"MIT\",\n scripts: {\n start: \"storybook dev -p 6006\",\n build: \"tsup ./src/index.tsx --dts --sourcemap --outDir dist\",\n yalc: \"npm run build && yalc push\",\n storybook: \"storybook dev -p 6006\",\n \"build-storybook\": \"storybook build\"\n },\n files: [\n \"dist\"\n ],\n devDependencies: {\n \"@biomejs/biome\": \"^1.7.3\",\n \"@semantic-release/commit-analyzer\": \"^9.0.2\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/npm\": \"^9.0.1\",\n \"@semantic-release/release-notes-generator\": \"^10.0.3\",\n \"@storybook/nextjs\": \"^8.0.6\",\n \"@storybook/react\": \"^8.0.6\",\n \"@swc/core\": \"^1.4.12\",\n \"@tscircuit/builder\": \"^1.11.4\",\n \"@tscircuit/core\": \"^0.0.88\",\n \"@tscircuit/eagle-xml-converter\": \"^0.0.6\",\n \"@tscircuit/props\": \"^0.0.46\",\n \"@tscircuit/react-fiber\": \"^1.1.25\",\n \"@tscircuit/soup-util\": \"^0.0.13\",\n \"@types/color\": \"^3.0.6\",\n \"@types/node\": \"18.7.23\",\n \"@types/react\": \"^18.3.3\",\n \"circuit-json\": \"^0.0.77\",\n next: \"^14.1.4\",\n react: \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"react-use\": \"^17.4.0\",\n storybook: \"^8.0.6\",\n tsup: \"^8.0.2\",\n \"type-fest\": \"^3.0.0\",\n typescript: \"^5.4.4\",\n \"use-mouse-matrix-transform\": \"^1.1.13\",\n zod: \"^3.23.5\"\n },\n peerDependencies: {\n \"@tscircuit/builder\": \"*\",\n \"@tscircuit/react-fiber\": \"*\",\n react: \"*\"\n },\n dependencies: {\n \"@emotion/css\": \"^11.11.2\",\n \"circuit-json-to-connectivity-map\": \"^0.0.16\",\n \"circuit-to-svg\": \"^0.0.36\",\n color: \"^4.2.3\",\n \"react-supergrid\": \"^1.0.10\",\n \"react-toastify\": \"^10.0.5\",\n \"transformation-matrix\": \"^2.13.0\",\n zustand: \"^4.5.2\"\n }\n};\n\n// src/components/ToolbarOverlay.tsx\nvar import_jsx_runtime6 = require(\"react/jsx-runtime\");\nvar LayerButton = ({\n name,\n selected,\n onClick\n}) => {\n return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\n \"div\",\n {\n className: import_css.css`\n margin-top: 2px;\n padding: 4px;\n padding-left: 8px;\n padding-right: 18px;\n cursor: pointer;\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.1);\n }\n `,\n onClick,\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\"span\", { style: { marginRight: 2, opacity: selected ? 1 : 0 }, children: \"\\u2022\" }),\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n \"span\",\n {\n style: {\n marginLeft: 2,\n fontWeight: 500,\n color: LAYER_NAME_TO_COLOR[name.replace(/-/, \"\")]\n },\n children: name\n }\n )\n ]\n }\n );\n};\nvar ToolbarButton = ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n \"div\",\n {\n ...props,\n style: {\n backgroundColor: \"#1F1F1F\",\n border: \"1px solid #666\",\n margin: 4,\n padding: 4,\n paddingLeft: 6,\n paddingRight: 6,\n borderRadius: 2,\n alignSelf: \"start\",\n color: \"#eee\",\n cursor: \"pointer\",\n ...props.style\n },\n children\n }\n);\nvar ToolbarOverlay = ({ children, elements }) => {\n const [isMouseOverContainer, setIsMouseOverContainer] = (0, import_react9.useState)(false);\n const [isLayerMenuOpen, setLayerMenuOpen] = (0, import_react9.useState)(false);\n const [isErrorsOpen, setErrorsOpen] = (0, import_react9.useState)(false);\n const [selectedLayer, selectLayer] = useGlobalStore(\n (s) => [s.selected_layer, s.selectLayer]\n );\n const [in_move_footprint_mode, in_draw_trace_mode, is_showing_rats_nest] = useGlobalStore((s) => [\n s.in_move_footprint_mode,\n s.in_draw_trace_mode,\n s.is_showing_rats_nest\n ]);\n const setEditMode = useGlobalStore((s) => s.setEditMode);\n const setIsShowingRatsNest = useGlobalStore((s) => s.setIsShowingRatsNest);\n const errorCount = elements?.filter((e) => e.type.includes(\"error\")).length ?? 0;\n return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\n \"div\",\n {\n style: { position: \"relative\" },\n onMouseEnter: () => {\n setIsMouseOverContainer(true);\n },\n onMouseLeave: (e) => {\n setIsMouseOverContainer(false);\n setLayerMenuOpen(false);\n },\n children: [\n children,\n /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: 4,\n right: 8,\n pointerEvents: \"none\",\n color: \"white\",\n fontSize: 11,\n opacity: isMouseOverContainer ? 0.5 : 0,\n transition: \"opacity 1s\",\n transitionDelay: \"2s\",\n fontFamily: \"sans-serif\"\n },\n children: [\n \"@tscircuit/pcb-viewer@\",\n package_default.version\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n opacity: isMouseOverContainer ? 1 : 0,\n top: 16,\n left: 16,\n transition: isMouseOverContainer ? \"opacity 100ms linear\" : \"opacity 1s linear\",\n zIndex: 100,\n color: \"red\",\n display: \"flex\",\n fontSize: 12,\n height: 100,\n fontFamily: \"sans-serif\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\n ToolbarButton,\n {\n onClick: () => {\n setLayerMenuOpen(!isLayerMenuOpen);\n },\n onMouseLeave: () => {\n if (isLayerMenuOpen) {\n setLayerMenuOpen(false);\n }\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\"div\", { children: [\n \"layer:\",\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n \"span\",\n {\n style: {\n marginLeft: 2,\n fontWeight: 500,\n color: LAYER_NAME_TO_COLOR[selectedLayer]\n },\n children: selectedLayer\n }\n )\n ] }),\n isLayerMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\"div\", { style: { marginTop: 4, minWidth: 120 }, children: all_layers.map((l) => l.replace(/-/g, \"\")).map((layer) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n LayerButton,\n {\n name: layer,\n selected: layer === selectedLayer,\n onClick: () => {\n selectLayer(layer.replace(/-/, \"\"));\n }\n },\n layer\n )) })\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\n ToolbarButton,\n {\n style: errorCount > 0 ? { color: \"red\" } : {},\n onClick: () => setErrorsOpen(!isErrorsOpen),\n onMouseLeave: () => setErrorsOpen(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\"div\", { children: [\n errorCount,\n \" errors\"\n ] }),\n isErrorsOpen && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n \"div\",\n {\n style: { display: \"grid\", gridTemplateColumns: \"100px 300px\" },\n children: elements?.filter((e) => e.type.includes(\"error\")).map((e, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_react9.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\"div\", { children: e.error_type }),\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\"div\", { children: e.message })\n ] }, i))\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n ToolbarButton,\n {\n style: {},\n onClick: () => {\n setEditMode(in_draw_trace_mode ? \"off\" : \"draw_trace\");\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\"div\", { children: [\n in_draw_trace_mode ? \"\\u2716 \" : \"\",\n \"Edit Traces\"\n ] })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n ToolbarButton,\n {\n style: {},\n onClick: () => {\n setEditMode(in_move_footprint_mode ? \"off\" : \"move_footprint\");\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\"div\", { children: [\n in_move_footprint_mode ? \"\\u2716 \" : \"\",\n \"Move Components\"\n ] })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(\n ToolbarButton,\n {\n style: {},\n onClick: () => {\n setIsShowingRatsNest(!is_showing_rats_nest);\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(\"div\", { children: [\n is_showing_rats_nest ? \"\\u2716 \" : \"\",\n \"Rats Nest\"\n ] })\n }\n )\n ]\n }\n )\n ]\n }\n );\n};\n\n// src/components/ErrorOverlay.tsx\nvar import_css2 = require(\"@emotion/css\");\nvar import_react10 = require(\"react\");\nvar import_transformation_matrix4 = require(\"transformation-matrix\");\nvar import_jsx_runtime7 = require(\"react/jsx-runtime\");\nvar ErrorSVG = ({\n screenPort1,\n screenPort2,\n errorCenter,\n canLineBeDrawn\n}) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(\n \"svg\",\n {\n style: {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1e3\n },\n width: \"100%\",\n height: \"100%\",\n children: canLineBeDrawn && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(\n \"line\",\n {\n x1: screenPort1.x,\n y1: screenPort1.y,\n x2: errorCenter.x,\n y2: errorCenter.y,\n strokeWidth: 1.5,\n strokeDasharray: \"2,2\",\n stroke: \"red\"\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(\n \"line\",\n {\n x1: errorCenter.x,\n y1: errorCenter.y,\n x2: screenPort2.x,\n y2: screenPort2.y,\n strokeWidth: 1.5,\n strokeDasharray: \"2,2\",\n stroke: \"red\"\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(\n \"rect\",\n {\n x: errorCenter.x - 5,\n y: errorCenter.y - 5,\n width: 10,\n height: 10,\n transform: `rotate(45 ${errorCenter.x} ${errorCenter.y})`,\n fill: \"red\"\n }\n )\n ] })\n }\n);\nvar ErrorOverlay = ({ children, transform, elements }) => {\n if (!transform) transform = (0, import_transformation_matrix4.identity)();\n const containerRef = (0, import_react10.useRef)(null);\n return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(\"div\", { style: { position: \"relative\" }, ref: containerRef, children: [\n children,\n elements?.filter((el) => el.type === \"pcb_error\").map((el) => {\n const { pcb_port_ids } = el;\n const port1 = elements.find(\n (el2) => el2.type === \"pcb_port\" && el2.pcb_port_id === pcb_port_ids?.[0]\n );\n const port2 = elements.find(\n (el2) => el2.type === \"pcb_port\" && el2.pcb_port_id === pcb_port_ids?.[1]\n );\n if (!port1 || !port2) return null;\n const screenPort1 = (0, import_transformation_matrix4.applyToPoint)(transform, {\n x: port1.x,\n y: port1.y\n });\n const screenPort2 = (0, import_transformation_matrix4.applyToPoint)(transform, {\n x: port2.x,\n y: port2.y\n });\n const canLineBeDrawn = !(isNaN(screenPort1.x) || isNaN(screenPort1.y) || isNaN(screenPort2.x) || isNaN(screenPort2.y));\n const errorCenter = {\n x: (screenPort1.x + screenPort2.x) / 2,\n y: (screenPort1.y + screenPort2.y) / 2\n };\n if (isNaN(errorCenter.x) || isNaN(errorCenter.y)) {\n return null;\n }\n return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(\n ErrorSVG,\n {\n screenPort1,\n screenPort2,\n errorCenter,\n canLineBeDrawn\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(\n \"div\",\n {\n className: import_css2.css`\n position: absolute;\n z-index: 100;\n left: ${errorCenter.x}px;\n top: ${errorCenter.y}px;\n color: red;\n text-align: center;\n font-family: sans-serif;\n font-size: 12px;\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: pointer;\n transform: translate(-50%, -100%);\n\n & .error-message {\n opacity: 0;\n pointer-events: none;\n\n width: 200px;\n transition: opacity 0.2s;\n margin-bottom: 10px;\n }\n\n &:hover .error-message {\n opacity: 1;\n display: flex;\n }\n `,\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(\"div\", { className: \"error-message\", children: el.message }),\n /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(\n \"div\",\n {\n className: import_css2.css`\n width: 10px;\n height: 10px;\n transform: translate(0, 5px) rotate(45deg);\n background-color: red;\n `\n }\n )\n ]\n }\n )\n ] });\n })\n ] });\n};\n\n// src/components/EditPlacementOverlay.tsx\nvar import_react11 = require(\"react\");\nvar import_transformation_matrix5 = require(\"transformation-matrix\");\nvar import_jsx_runtime8 = require(\"react/jsx-runtime\");\nvar isInsideOf = (pcb_component2, point2, padding = 0) => {\n const halfWidth = pcb_component2.width / 2;\n const halfHeight = pcb_component2.height / 2;\n const left = pcb_component2.center.x - halfWidth - padding;\n const right = pcb_component2.center.x + halfWidth + padding;\n const top = pcb_component2.center.y - halfHeight - padding;\n const bottom = pcb_component2.center.y + halfHeight + padding;\n return point2.x > left && point2.x < right && point2.y > top && point2.y < bottom;\n};\nvar EditPlacementOverlay = ({\n children,\n disabled: disabledProp,\n transform,\n soup,\n cancelPanDrag,\n onCreateEditEvent,\n onModifyEditEvent\n}) => {\n if (!transform) transform = (0, import_transformation_matrix5.identity)();\n const containerRef = (0, import_react11.useRef)(null);\n const [activePcbComponentId, setActivePcbComponent] = (0, import_react11.useState)(\n null\n );\n const [dragState, setDragState] = (0, import_react11.useState)(null);\n const isPcbComponentActive = activePcbComponentId !== null;\n const in_edit_mode = useGlobalStore((s) => s.in_edit_mode);\n const in_move_footprint_mode = useGlobalStore((s) => s.in_move_footprint_mode);\n const setIsMovingComponent = useGlobalStore((s) => s.setIsMovingComponent);\n const disabled = disabledProp || !in_move_footprint_mode;\n return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(\n \"div\",\n {\n ref: containerRef,\n style: {\n position: \"relative\",\n overflow: \"hidden\"\n },\n onMouseDown: (e) => {\n if (disabled) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n if (isNaN(x) || isNaN(y)) return;\n const rwMousePoint = (0, import_transformation_matrix5.applyToPoint)((0, import_transformation_matrix5.inverse)(transform), { x, y });\n let foundActiveComponent = false;\n for (const e2 of soup) {\n if (e2.type === \"pcb_component\" && isInsideOf(e2, rwMousePoint, 10 / transform.a)) {\n cancelPanDrag();\n setActivePcbComponent(e2.pcb_component_id);\n foundActiveComponent = true;\n const edit_event_id = Math.random().toString();\n setDragState({\n dragStart: rwMousePoint,\n originalCenter: e2.center,\n dragEnd: rwMousePoint,\n edit_event_id\n });\n onCreateEditEvent({\n edit_event_id,\n pcb_edit_event_type: \"edit_component_location\",\n pcb_component_id: e2.pcb_component_id,\n original_center: e2.center,\n new_center: e2.center,\n in_progress: true,\n created_at: Date.now()\n });\n setIsMovingComponent(true);\n break;\n }\n }\n if (!foundActiveComponent) {\n setActivePcbComponent(null);\n }\n if (foundActiveComponent) {\n e.preventDefault();\n return false;\n }\n },\n onMouseMove: (e) => {\n if (!activePcbComponentId || !dragState) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n if (isNaN(x) || isNaN(y)) return;\n const rwMousePoint = (0, import_transformation_matrix5.applyToPoint)((0, import_transformation_matrix5.inverse)(transform), { x, y });\n setDragState({\n ...dragState,\n dragEnd: rwMousePoint\n });\n onModifyEditEvent({\n edit_event_id: dragState.edit_event_id,\n new_center: {\n x: dragState.originalCenter.x + rwMousePoint.x - dragState.dragStart.x,\n y: dragState.originalCenter.y + rwMousePoint.y - dragState.dragStart.y\n }\n });\n },\n onMouseUp: (e) => {\n if (!activePcbComponentId) return;\n setActivePcbComponent(null);\n setIsMovingComponent(false);\n if (dragState) {\n onModifyEditEvent({\n edit_event_id: dragState.edit_event_id,\n in_progress: false\n });\n setDragState(null);\n }\n },\n children: [\n children,\n !disabled && soup.filter((e) => e.type === \"pcb_component\").map((e) => {\n if (!e?.center) return null;\n const projectedCenter = (0, import_transformation_matrix5.applyToPoint)(transform, e.center);\n return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n pointerEvents: \"none\",\n // b/c of transform, this is actually center not left/top\n left: projectedCenter.x,\n top: projectedCenter.y,\n width: e.width * transform.a + 20,\n height: e.height * transform.a + 20,\n transform: \"translate(-50%, -50%)\",\n background: isPcbComponentActive && activePcbComponentId === e.pcb_component_id ? \"rgba(255, 0, 0, 0.2)\" : \"\"\n }\n },\n e.pcb_component_id\n );\n })\n ]\n }\n );\n};\n\n// src/components/EditTraceHintOverlay.tsx\nvar import_soup_util2 = __toESM(require_dist());\nvar import_react14 = require(\"react\");\nvar import_transformation_matrix6 = require(\"transformation-matrix\");\n\n// src/components/HotkeyActionMenu.tsx\nvar import_css3 = require(\"@emotion/css\");\nvar import_react12 = require(\"react\");\nvar import_jsx_runtime9 = require(\"react/jsx-runtime\");\nvar HotkeyActionMenu = ({\n hotkeys\n}) => {\n (0, import_react12.useEffect)(() => {\n const handleKeyDown = (event) => {\n hotkeys.forEach((hotkey) => {\n if (event.key === hotkey.key) {\n hotkey.onUse();\n }\n });\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [hotkeys]);\n return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(\n \"div\",\n {\n className: import_css3.css`\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n font-size: 12px;\n margin: 8px;\n `,\n children: hotkeys.map((hotkey) => {\n return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(\n \"div\",\n {\n className: import_css3.css`\n display: flex;\n align-items: center;\n margin: 2px;\n\n & .key {\n padding: 1px;\n margin: 2px;\n color: rgba(255, 255, 255, 0.8);\n font-size: 9px;\n border-radius: 3px;\n text-align: center;\n width: 20px;\n background-color: #444;\n }\n\n & .name {\n margin-left: 4px;\n color: rgba(255, 255, 255, 0.8);\n }\n `,\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(\"div\", { className: \"key\", children: hotkey.key }),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(\"div\", { className: \"name\", children: hotkey.name })\n ]\n },\n hotkey.name\n );\n })\n }\n );\n};\n\n// src/lib/toast.tsx\nvar import_react13 = require(\"react\");\nvar import_react_toastify = require(\"react-toastify\");\nvar import_inject_style = require(\"react-toastify/dist/inject-style\");\nvar import_jsx_runtime10 = require(\"react/jsx-runtime\");\nvar useToast = () => {\n const pcb_viewer_id = useGlobalStore((s) => s.pcb_viewer_id);\n const toast = (message, opts) => (0, import_react_toastify.toast)(message, {\n containerId: pcb_viewer_id,\n ...opts\n });\n toast.error = (message, opts) => import_react_toastify.toast.error(message, {\n containerId: pcb_viewer_id,\n ...opts\n });\n toast.promise = import_react_toastify.toast.promise;\n return toast;\n};\nvar ToastContainer = () => {\n (0, import_react13.useEffect)(() => {\n (0, import_inject_style.injectStyle)();\n }, []);\n const pcb_viewer_id = useGlobalStore((s) => s.pcb_viewer_id);\n return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_toastify.ToastContainer, { position: \"top-center\", containerId: pcb_viewer_id });\n};\n\n// src/components/EditTraceHintOverlay.tsx\nvar import_jsx_runtime11 = require(\"react/jsx-runtime\");\nvar isInsideOfSmtpad = (elm, point2, padding = 0) => {\n if (elm.shape === \"circle\") {\n return false;\n }\n const halfWidth = elm.width / 2;\n const halfHeight = elm.height / 2;\n const left = elm.x - halfWidth - padding;\n const right = elm.x + halfWidth + padding;\n const top = elm.y - halfHeight - padding;\n const bottom = elm.y + halfHeight + padding;\n return point2.x > left && point2.x < right && point2.y > top && point2.y < bottom;\n};\nvar isInsideOfPlatedHole = (hole, point2, padding = 0) => {\n if (hole.shape === \"circle\") {\n const distance2 = Math.sqrt(\n Math.pow(point2.x - hole.x, 2) + Math.pow(point2.y - hole.y, 2)\n );\n return distance2 <= hole.outer_diameter / 2 + padding;\n } else {\n const halfWidth = hole.hole_width / 2;\n const halfHeight = hole.hole_height / 2;\n const left = hole.x - halfWidth - padding;\n const right = hole.x + halfWidth + padding;\n const top = hole.y - halfHeight - padding;\n const bottom = hole.y + halfHeight + padding;\n return point2.x > left && point2.x < right && point2.y > top && point2.y < bottom;\n }\n};\nvar EditTraceHintOverlay = ({\n children,\n disabled: disabledProp,\n transform,\n soup,\n cancelPanDrag,\n onCreateEditEvent,\n onModifyEditEvent\n}) => {\n if (!transform) transform = (0, import_transformation_matrix6.identity)();\n const containerRef = (0, import_react14.useRef)(null);\n const containerBounds = containerRef.current?.getBoundingClientRect();\n const [selectedElement, setSelectedElement] = (0, import_react14.useState)(null);\n const toast = useToast();\n const [dragState, setDragState] = (0, import_react14.useState)(null);\n const [shouldCreateAsVia, setShouldCreateAsVia] = (0, import_react14.useState)(false);\n const isElementSelected = selectedElement !== null;\n const in_edit_trace_mode = useGlobalStore((s) => s.in_draw_trace_mode);\n const disabled = disabledProp || !in_edit_trace_mode;\n let ogCenterScreen, dragEndScreen;\n if (dragState?.originalCenter && dragState?.dragEnd) {\n ogCenterScreen = (0, import_transformation_matrix6.applyToPoint)(transform, dragState?.originalCenter);\n dragEndScreen = (0, import_transformation_matrix6.applyToPoint)(transform, dragState?.dragEnd);\n }\n (0, import_react14.useEffect)(() => {\n if (!isElementSelected) return;\n function keyDown(e) {\n if (e.key === \"Escape\") {\n setSelectedElement(null);\n setDragState(null);\n }\n }\n window.addEventListener(\"keydown\", keyDown);\n return () => window.removeEventListener(\"keydown\", keyDown);\n }, [isElementSelected]);\n return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(\n \"div\",\n {\n ref: containerRef,\n style: {\n position: \"relative\",\n overflow: \"hidden\"\n },\n onMouseDown: (e) => {\n if (disabled) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n if (isNaN(x) || isNaN(y)) return;\n const rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), { x, y });\n if (!isElementSelected) {\n for (const e2 of soup) {\n if (e2.type === \"pcb_smtpad\" && isInsideOfSmtpad(e2, rwMousePoint, 10 / transform.a) || e2.type === \"pcb_plated_hole\" && isInsideOfPlatedHole(e2, rwMousePoint, 10 / transform.a)) {\n if (!e2.pcb_port_id) {\n toast.error(`pcb_port_id is null on the selected \"${e2.type}\"`);\n return;\n }\n setSelectedElement(e2);\n setShouldCreateAsVia(false);\n setDragState({\n dragStart: rwMousePoint,\n originalCenter: { x: e2.x, y: e2.y },\n dragEnd: rwMousePoint,\n editEvent: {\n pcb_edit_event_type: \"edit_trace_hint\",\n pcb_port_id: e2.pcb_port_id,\n pcb_trace_hint_id: Math.random().toString(),\n route: [],\n created_at: Date.now(),\n edit_event_id: Math.random().toString(),\n in_progress: true\n },\n shouldDrawRouteHint: false\n });\n cancelPanDrag();\n break;\n }\n }\n } else {\n setDragState({\n ...dragState,\n dragStart: rwMousePoint,\n shouldDrawRouteHint: true\n });\n }\n },\n onMouseMove: (e) => {\n if (!isElementSelected || !dragState) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n if (isNaN(x) || isNaN(y)) return;\n const rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), { x, y });\n setDragState({\n ...dragState,\n dragEnd: rwMousePoint\n });\n },\n onMouseUp: (e) => {\n if (!isElementSelected) return;\n if (!dragState?.shouldDrawRouteHint) return;\n const { dragStart, dragEnd } = dragState;\n const rwDist = Math.sqrt(\n (dragEnd.x - dragStart.x) ** 2 + (dragEnd.y - dragStart.y) ** 2\n );\n const screenDist = rwDist * transform.a;\n if (screenDist > 20) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n if (isNaN(x) || isNaN(y)) return;\n const rwMousePoint = (0, import_transformation_matrix6.applyToPoint)((0, import_transformation_matrix6.inverse)(transform), { x, y });\n if (dragState) {\n cancelPanDrag();\n const lastPointScreen = (0, import_transformation_matrix6.applyToPoint)(\n transform,\n dragState.editEvent.route.slice(-1)[0] ?? dragState.originalCenter\n );\n const distanceFromLastPoint = Math.sqrt(\n (x - lastPointScreen.x) ** 2 + (y - lastPointScreen.y) ** 2\n );\n if (distanceFromLastPoint < 20) {\n onCreateEditEvent({\n ...dragState.editEvent,\n in_progress: false\n });\n setDragState(null);\n setSelectedElement(null);\n return;\n }\n setDragState({\n ...dragState,\n editEvent: {\n ...dragState.editEvent,\n route: [\n ...dragState.editEvent.route,\n { ...rwMousePoint, via: shouldCreateAsVia }\n ]\n }\n });\n }\n },\n children: [\n children,\n in_edit_trace_mode && dragState?.editEvent && ogCenterScreen && dragEndScreen && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(\n \"svg\",\n {\n style: {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1e3\n },\n width: containerBounds?.width,\n height: containerBounds?.height,\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"path\",\n {\n stroke: \"red\",\n d: `M ${ogCenterScreen.x} ${ogCenterScreen.y} ${dragState?.editEvent.route.map((p) => (0, import_transformation_matrix6.applyToPoint)(transform, p)).map((p) => `L ${p.x} ${p.y}`).join(\" \")} L ${dragEndScreen.x} ${dragEndScreen.y}`\n }\n ),\n dragState?.editEvent.route.map((r, i) => {\n const rScreen = (0, import_transformation_matrix6.applyToPoint)(transform, r);\n return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react14.Fragment, { children: [\n r.via && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\"circle\", { cx: rScreen.x, cy: rScreen.y, r: 16, stroke: \"red\" }),\n /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\"circle\", { cx: rScreen.x, cy: rScreen.y, r: 8, stroke: \"red\" })\n ] }, `r-${i}`);\n }),\n shouldCreateAsVia && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"circle\",\n {\n cx: dragEndScreen.x,\n cy: dragEndScreen.y,\n r: 16,\n stroke: \"red\"\n },\n \"via-outer-circle\"\n ),\n /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"circle\",\n {\n cx: dragEndScreen.x,\n cy: dragEndScreen.y,\n r: 8,\n stroke: \"red\"\n }\n )\n ]\n }\n ),\n !disabled && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"svg\",\n {\n style: {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1e3\n },\n width: containerBounds?.width,\n height: containerBounds?.height,\n children: soup.filter((e) => e.type === \"pcb_trace_hint\").map((e) => {\n const { route } = e;\n const pcb_port2 = (0, import_soup_util2.su)(soup).pcb_port.get(e.pcb_port_id);\n const pcb_port_screen = (0, import_transformation_matrix6.applyToPoint)(transform, pcb_port2);\n return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react14.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"rect\",\n {\n x: pcb_port_screen.x - 10,\n y: pcb_port_screen.y - 10,\n width: 20,\n height: 20,\n stroke: \"red\"\n },\n `rect-${e.pcb_port_id}`\n ),\n /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"path\",\n {\n stroke: \"red\",\n d: `M ${pcb_port_screen.x} ${pcb_port_screen.y} ${route.map((r) => (0, import_transformation_matrix6.applyToPoint)(transform, r)).map((r) => `L ${r.x} ${r.y}`).join(\" \")}`\n },\n `path-${e.pcb_port_id}`\n ),\n route.map((r) => ({ ...r, ...(0, import_transformation_matrix6.applyToPoint)(transform, r) })).map((r, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react14.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\"circle\", { cx: r.x, cy: r.y, r: 8, stroke: \"red\" }),\n r.via && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"circle\",\n {\n cx: r.x,\n cy: r.y,\n r: 16,\n stroke: \"red\",\n fill: \"transparent\"\n }\n )\n ] }, i))\n ] }, e.pcb_trace_hint_id);\n })\n },\n \"pcb-trace-hints\"\n ),\n /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n right: 0,\n bottom: 0\n },\n children: isElementSelected && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(\n HotkeyActionMenu,\n {\n hotkeys: [\n {\n key: \"v\",\n name: \"Toggle Via\",\n onUse: () => {\n setShouldCreateAsVia(!shouldCreateAsVia);\n }\n }\n // {\n // key: \"del\",\n // name: \"Delete Node\",\n // onUse: () => {},\n // },\n // {\n // key: \"r\",\n // name: \"Delete Route\",\n // onUse: () => {},\n // },\n ]\n }\n )\n }\n )\n ]\n }\n );\n};\n\n// src/components/RatsNestOverlay.tsx\nvar import_transformation_matrix7 = require(\"transformation-matrix\");\nvar import_soup_util3 = __toESM(require_dist());\nvar import_jsx_runtime12 = require(\"react/jsx-runtime\");\nvar RatsNestOverlay = ({ transform, soup, children }) => {\n const isShowingRatsNest = useGlobalStore((s) => s.is_showing_rats_nest);\n if (!soup || !isShowingRatsNest) return children;\n if (!transform) transform = (0, import_transformation_matrix7.identity)();\n const sourceTraces = (0, import_soup_util3.su)(soup).source_trace.list();\n const groups = [];\n sourceTraces.forEach((sourceTrace) => {\n if (sourceTrace.connected_source_port_ids) {\n const group = [];\n sourceTrace.connected_source_port_ids.forEach(\n (source_port_id) => {\n const pcbPort = (0, import_soup_util3.su)(soup).pcb_port.getWhere({ source_port_id });\n if (pcbPort) group.push(pcbPort);\n }\n );\n groups.push(group);\n }\n });\n return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(\"div\", { style: { position: \"relative\" }, children: [\n children,\n /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(\n \"svg\",\n {\n style: {\n position: \"absolute\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n opacity: 0.5,\n zIndex: 100\n },\n children: groups.map((group, index) => {\n const points = group.map(\n (port) => (0, import_transformation_matrix7.applyToPoint)(transform, { x: port.x, y: port.y })\n );\n const lines = [];\n for (let i = 0; i < points.length; i++) {\n for (let j = i + 1; j < points.length; j++) {\n lines.push([points[i], points[j]]);\n }\n }\n return lines.map(([start, end], index2) => {\n return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(\n \"line\",\n {\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n stroke: \"white\",\n strokeWidth: \"1\"\n },\n index2\n );\n });\n })\n }\n )\n ] });\n};\n\n// src/components/CanvasElementsRenderer.tsx\nvar import_circuit_json_to_connectivity_map = require(\"circuit-json-to-connectivity-map\");\n\n// src/lib/util/addInteractionMetadataToPrimitives.ts\nfunction addInteractionMetadataToPrimitives({\n primitivesWithoutInteractionMetadata,\n drawingObjectIdsWithMouseOver,\n primitiveIdsInMousedOverNet\n}) {\n const newPrimitives = [];\n for (const primitive of primitivesWithoutInteractionMetadata) {\n const newPrimitive = { ...primitive };\n if (primitive?.layer === \"drill\") {\n newPrimitive.is_in_highlighted_net = false;\n newPrimitive.is_mouse_over = false;\n } else if (drawingObjectIdsWithMouseOver.has(primitive._pcb_drawing_object_id)) {\n newPrimitive.is_mouse_over = true;\n } else if (primitive._element && (\"pcb_trace_id\" in primitive._element && primitiveIdsInMousedOverNet.includes(\n primitive._element.pcb_trace_id\n ) || \"pcb_port_id\" in primitive._element && primitiveIdsInMousedOverNet.includes(\n primitive._element.pcb_port_id\n ))) {\n newPrimitive.is_in_highlighted_net = true;\n } else {\n newPrimitive.is_in_highlighted_net = false;\n newPrimitive.is_mouse_over = false;\n }\n newPrimitives.push(newPrimitive);\n }\n return newPrimitives;\n}\n\n// src/components/CanvasElementsRenderer.tsx\nvar import_jsx_runtime13 = require(\"react/jsx-runtime\");\nvar CanvasElementsRenderer = (props) => {\n const { transform, elements } = props;\n const [primitivesWithoutInteractionMetadata, connectivityMap] = (0, import_react16.useMemo)(() => {\n const primitivesWithoutInteractionMetadata2 = props.elements.flatMap(\n (elm) => convertElementToPrimitives(elm, props.elements)\n );\n const connectivityMap2 = (0, import_circuit_json_to_connectivity_map.getFullConnectivityMapFromCircuitJson)(\n props.elements\n );\n return [primitivesWithoutInteractionMetadata2, connectivityMap2];\n }, [props.elements]);\n const [primitives, setPrimitives] = (0, import_react15.useState)(\n primitivesWithoutInteractionMetadata\n );\n return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(\n MouseElementTracker,\n {\n transform,\n primitives: primitivesWithoutInteractionMetadata,\n onMouseHoverOverPrimitives: (primitivesHoveredOver) => {\n const primitiveIdsInMousedOverNet = [];\n for (const primitive of primitivesHoveredOver) {\n if (primitive._element) {\n const connectedPrimitivesList = connectivityMap.getNetConnectedToId(\n \"pcb_port_id\" in primitive._element ? primitive._element?.pcb_port_id : \"pcb_trace_id\" in primitive._element ? primitive._element?.pcb_trace_id : \"\"\n );\n primitiveIdsInMousedOverNet.push(\n ...connectivityMap.getIdsConnectedToNet(connectedPrimitivesList)\n );\n }\n }\n const drawingObjectIdsWithMouseOver = new Set(\n primitivesHoveredOver.map((p) => p._pcb_drawing_object_id)\n );\n const newPrimitives = addInteractionMetadataToPrimitives({\n primitivesWithoutInteractionMetadata,\n drawingObjectIdsWithMouseOver,\n primitiveIdsInMousedOverNet\n });\n setPrimitives(newPrimitives);\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(\n EditPlacementOverlay,\n {\n disabled: !props.allowEditing,\n transform,\n soup: elements,\n cancelPanDrag: props.cancelPanDrag,\n onCreateEditEvent: props.onCreateEditEvent,\n onModifyEditEvent: props.onModifyEditEvent,\n children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(\n EditTraceHintOverlay,\n {\n disabled: !props.allowEditing,\n transform,\n soup: elements,\n cancelPanDrag: props.cancelPanDrag,\n onCreateEditEvent: props.onCreateEditEvent,\n onModifyEditEvent: props.onModifyEditEvent,\n children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DimensionOverlay, { transform, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ToolbarOverlay, { elements, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ErrorOverlay, { transform, elements, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RatsNestOverlay, { transform, soup: elements, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(\n CanvasPrimitiveRenderer,\n {\n transform,\n primitives,\n width: props.width,\n height: props.height,\n grid: props.grid\n }\n ) }) }) }) })\n }\n )\n }\n )\n }\n );\n};\n\n// src/PCBViewer.tsx\nvar import_use_mouse_matrix_transform = __toESM(require_dist2());\n\n// node_modules/react-use/esm/misc/util.js\nvar noop = function() {\n};\nvar isBrowser = typeof window !== \"undefined\";\n\n// node_modules/react-use/esm/useIsomorphicLayoutEffect.js\nvar import_react17 = require(\"react\");\nvar useIsomorphicLayoutEffect = isBrowser ? import_react17.useLayoutEffect : import_react17.useEffect;\nvar useIsomorphicLayoutEffect_default = useIsomorphicLayoutEffect;\n\n// node_modules/react-use/esm/useMeasure.js\nvar import_react18 = require(\"react\");\nvar defaultState = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n};\nfunction useMeasure() {\n var _a = (0, import_react18.useState)(null), element = _a[0], ref = _a[1];\n var _b = (0, import_react18.useState)(defaultState), rect = _b[0], setRect = _b[1];\n var observer = (0, import_react18.useMemo)(function() {\n return new window.ResizeObserver(function(entries) {\n if (entries[0]) {\n var _a2 = entries[0].contentRect, x = _a2.x, y = _a2.y, width = _a2.width, height = _a2.height, top_1 = _a2.top, left = _a2.left, bottom = _a2.bottom, right = _a2.right;\n setRect({ x, y, width, height, top: top_1, left, bottom, right });\n }\n });\n }, []);\n useIsomorphicLayoutEffect_default(function() {\n if (!element)\n return;\n observer.observe(element);\n return function() {\n observer.disconnect();\n };\n }, [element]);\n return [ref, rect];\n}\nvar useMeasure_default = isBrowser && typeof window.ResizeObserver !== \"undefined\" ? useMeasure : function() {\n return [noop, defaultState];\n};\n\n// src/PCBViewer.tsx\nvar import_transformation_matrix9 = require(\"transformation-matrix\");\nvar import_builder2 = require(\"@tscircuit/builder\");\n\n// src/lib/apply-edit-events.ts\nvar import_soup_util5 = __toESM(require_dist());\nvar import_transformation_matrix8 = require(\"transformation-matrix\");\n\n// src/lib/apply-edit-events/apply-edit-trace-hint-event.ts\nvar import_soup_util4 = __toESM(require_dist());\nvar applyTraceHintEditEvent = (soup, edit_event) => {\n const existing_trace_hint = soup.find(\n (th) => th.type === \"pcb_trace_hint\" && th.pcb_trace_hint_id === edit_event.pcb_trace_hint_id\n );\n if (existing_trace_hint) {\n soup = soup.map(\n (e) => e.pcb_trace_hint_id === edit_event.pcb_trace_hint_id ? {\n ...e,\n route: edit_event.route\n } : e\n );\n } else {\n const pcb_port2 = (0, import_soup_util4.su)(soup).pcb_port.get(edit_event.pcb_port_id);\n soup = soup.filter(\n (e) => !(e.type === \"pcb_trace_hint\" && e.pcb_port_id === edit_event.pcb_port_id)\n ).concat([\n {\n type: \"pcb_trace_hint\",\n pcb_trace_hint_id: edit_event.pcb_trace_hint_id,\n route: edit_event.route,\n pcb_port_id: edit_event.pcb_port_id,\n pcb_component_id: pcb_port2?.pcb_component_id\n }\n ]);\n }\n return soup;\n};\n\n// src/lib/apply-edit-events.ts\nvar applyEditEvents = (soup, edit_events) => {\n soup = JSON.parse(JSON.stringify(soup));\n for (const edit_event of edit_events) {\n if (edit_event.pcb_edit_event_type === \"edit_component_location\") {\n const mat = (0, import_transformation_matrix8.translate)(\n edit_event.new_center.x - edit_event.original_center.x,\n edit_event.new_center.y - edit_event.original_center.y\n );\n soup = soup.map(\n (e) => e.pcb_component_id !== edit_event.pcb_component_id ? e : (0, import_soup_util5.transformPCBElement)(e, mat)\n );\n } else if (edit_event.pcb_edit_event_type === \"edit_trace_hint\") {\n soup = applyTraceHintEditEvent(soup, edit_event);\n }\n }\n return soup;\n};\n\n// src/PCBViewer.tsx\nvar import_jsx_runtime14 = require(\"react/jsx-runtime\");\nvar defaultTransform = (0, import_transformation_matrix9.compose)((0, import_transformation_matrix9.translate)(400, 300), (0, import_transformation_matrix9.scale)(40, -40));\nvar PCBViewer = ({\n children,\n soup,\n height = 600,\n initialState,\n allowEditing = true,\n editEvents: editEventsProp,\n onEditEventsChanged\n}) => {\n const [stateElements, setStateElements] = (0, import_react19.useState)([]);\n const [ref, refDimensions] = useMeasure_default();\n const [transform, setTransformInternal] = (0, import_react19.useState)(defaultTransform);\n const {\n ref: transformRef,\n setTransform,\n cancelDrag: cancelPanDrag\n } = (0, import_use_mouse_matrix_transform.default)({\n transform,\n onSetTransform: setTransformInternal\n });\n let [editEvents, setEditEvents] = (0, import_react19.useState)([]);\n editEvents = editEventsProp ?? editEvents;\n const [error, setError] = (0, import_react19.useState)(null);\n const resetTransform = () => {\n const elmBounds = refDimensions?.width > 0 ? refDimensions : { width: 500, height: 500 };\n const { center, width, height: height2 } = elements.some(\n (e) => e.type.startsWith(\"pcb_\")\n ) ? (0, import_builder2.findBoundsAndCenter)(\n elements.filter((e) => e.type.startsWith(\"pcb_\"))\n ) : { center: { x: 0, y: 0 }, width: 1e-3, height: 1e-3 };\n const scaleFactor = Math.min(\n (elmBounds.width ?? 0) / width,\n (elmBounds.height ?? 0) / height2,\n 100\n ) * 0.75;\n setTransform(\n (0, import_transformation_matrix9.compose)(\n (0, import_transformation_matrix9.translate)((elmBounds.width ?? 0) / 2, (elmBounds.height ?? 0) / 2),\n // translate(100, 0),\n (0, import_transformation_matrix9.scale)(scaleFactor, -scaleFactor, 0, 0),\n (0, import_transformation_matrix9.translate)(-center.x, -center.y)\n )\n );\n };\n (0, import_react19.useEffect)(() => {\n if (!children || children?.length === 0) return;\n async function doRender() {\n const projectBuilder = (0, import_builder.createProjectBuilder)();\n await (0, import_react_fiber.createRoot)().render(children, projectBuilder).then((elements2) => {\n setStateElements(elements2);\n setError(null);\n });\n }\n doRender().catch((e) => {\n setError(e.toString());\n console.log(e.toString());\n });\n }, [children]);\n (0, import_react19.useEffect)(() => {\n if (refDimensions && refDimensions.width !== 0 && (children || soup)) {\n resetTransform();\n }\n }, [children, refDimensions]);\n if (error) return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(\"div\", { style: { color: \"red\" }, children: [\n \" \",\n error,\n \" \"\n ] });\n const pcbElmsPreEdit = (soup ?? stateElements).filter(\n (e) => e.type.startsWith(\"pcb_\") || e.type.startsWith(\"source_\")\n );\n const elements = (0, import_react19.useMemo)(() => {\n return applyEditEvents(pcbElmsPreEdit, editEvents);\n }, [pcbElmsPreEdit, editEvents]);\n const onCreateEditEvent = (event) => {\n setEditEvents([...editEvents, event]);\n onEditEventsChanged?.([...editEvents, event]);\n };\n const onModifyEditEvent = (modifiedEvent) => {\n const newEditEvents = editEvents.map(\n (e) => e.edit_event_id === modifiedEvent.edit_event_id ? { ...e, ...modifiedEvent } : e\n );\n setEditEvents(newEditEvents);\n onEditEventsChanged?.(newEditEvents);\n };\n return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(\"div\", { ref: transformRef, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(\"div\", { ref, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(ContextProviders, { initialState, children: [\n /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(\n CanvasElementsRenderer,\n {\n transform,\n height,\n width: refDimensions.width,\n allowEditing,\n cancelPanDrag,\n onCreateEditEvent,\n onModifyEditEvent,\n grid: {\n spacing: 1,\n view_window: {\n left: 0,\n right: refDimensions.width || 500,\n top: height,\n bottom: 0\n }\n },\n elements\n },\n refDimensions.width\n ),\n /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToastContainer, {})\n ] }) }) });\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n CanvasElementsRenderer,\n PCBViewer,\n applyEditEvents\n});\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/** Used to determine if values are of the language type Object */\nvar objectTypes = {\n 'boolean': false,\n 'function': true,\n 'object': true,\n 'number': false,\n 'string': false,\n 'undefined': false\n};\n\nmodule.exports = objectTypes;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar objectTypes = require('lodash._objecttypes');\n\n/**\n * Checks if `value` is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // check if the value is the ECMAScript language type of Object\n // http://es5.github.io/#x8\n // and avoid a V8 bug\n // http://code.google.com/p/v8/issues/detail?id=2291\n return !!(value && objectTypes[typeof value]);\n}\n\nmodule.exports = isObject;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/** Used for native method references */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the internal [[Class]] of values */\nvar toString = objectProto.toString;\n\n/** Used to detect if a method is native */\nvar reNative = RegExp('^' +\n String(toString)\n .replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/toString| for [^\\]]+/g, '.*?') + '$'\n);\n\nmodule.exports = reNative;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar objectTypes = require('lodash._objecttypes');\n\n/** Used for native method references */\nvar objectProto = Object.prototype;\n\n/** Native method shortcuts */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which produces an array of the\n * given object's own enumerable property names.\n *\n * @private\n * @type Function\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns an array of property names.\n */\nvar shimKeys = function(object) {\n var index, iterable = object, result = [];\n if (!iterable) return result;\n if (!(objectTypes[typeof object])) return result;\n for (index in iterable) {\n if (hasOwnProperty.call(iterable, index)) {\n result.push(index);\n }\n }\n return result\n};\n\nmodule.exports = shimKeys;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar isObject = require('lodash.isobject'),\n reNative = require('lodash._renative'),\n shimKeys = require('lodash._shimkeys');\n\n/* Native method shortcuts for methods with the same name as other `lodash` methods */\nvar nativeKeys = reNative.test(nativeKeys = Object.keys) && nativeKeys;\n\n/**\n * Creates an array composed of the own enumerable property names of an object.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns an array of property names.\n * @example\n *\n * _.keys({ 'one': 1, 'two': 2, 'three': 3 });\n * // => ['one', 'two', 'three'] (property order is not guaranteed across environments)\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n if (!isObject(object)) {\n return [];\n }\n return nativeKeys(object);\n};\n\nmodule.exports = keys;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * A no-operation function.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @example\n *\n * var object = { 'name': 'fred' };\n * _.noop(object) === undefined;\n * // => true\n */\nfunction noop() {\n // no operation performed\n}\n\nmodule.exports = noop;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar isObject = require('lodash.isobject'),\n noop = require('lodash.noop'),\n reNative = require('lodash._renative');\n\n/* Native method shortcuts for methods with the same name as other `lodash` methods */\nvar nativeCreate = reNative.test(nativeCreate = Object.create) && nativeCreate;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(prototype, properties) {\n return isObject(prototype) ? nativeCreate(prototype) : {};\n}\n// fallback for browsers without `Object.create`\nif (!nativeCreate) {\n baseCreate = (function() {\n function Object() {}\n return function(prototype) {\n if (isObject(prototype)) {\n Object.prototype = prototype;\n var result = new Object;\n Object.prototype = null;\n }\n return result || global.Object();\n };\n }());\n}\n\nmodule.exports = baseCreate;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar noop = require('lodash.noop'),\n reNative = require('lodash._renative');\n\n/** Used as the property descriptor for `__bindData__` */\nvar descriptor = {\n 'configurable': false,\n 'enumerable': false,\n 'value': null,\n 'writable': false\n};\n\n/** Used to set meta data on functions */\nvar defineProperty = (function() {\n // IE 8 only accepts DOM elements\n try {\n var o = {},\n func = reNative.test(func = Object.defineProperty) && func,\n result = func(o, o, o) && func;\n } catch(e) { }\n return result;\n}());\n\n/**\n * Sets `this` binding data on a given function.\n *\n * @private\n * @param {Function} func The function to set data on.\n * @param {Array} value The data array to set.\n */\nvar setBindData = !defineProperty ? noop : function(func, value) {\n descriptor.value = value;\n defineProperty(func, '__bindData__', descriptor);\n};\n\nmodule.exports = setBindData;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreate = require('lodash._basecreate'),\n isObject = require('lodash.isobject'),\n setBindData = require('lodash._setbinddata');\n\n/**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\nvar arrayRef = [];\n\n/** Native method shortcuts */\nvar push = arrayRef.push;\n\n/**\n * The base implementation of `_.bind` that creates the bound function and\n * sets its meta data.\n *\n * @private\n * @param {Array} bindData The bind data array.\n * @returns {Function} Returns the new bound function.\n */\nfunction baseBind(bindData) {\n var func = bindData[0],\n partialArgs = bindData[2],\n thisArg = bindData[4];\n\n function bound() {\n // `Function#bind` spec\n // http://es5.github.io/#x15.3.4.5\n if (partialArgs) {\n var args = partialArgs.slice();\n push.apply(args, arguments);\n }\n // mimic the constructor's `return` behavior\n // http://es5.github.io/#x13.2.2\n if (this instanceof bound) {\n // ensure `new bound` is an instance of `func`\n var thisBinding = baseCreate(func.prototype),\n result = func.apply(thisBinding, args || arguments);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisArg, args || arguments);\n }\n setBindData(bound, bindData);\n return bound;\n}\n\nmodule.exports = baseBind;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * Slices the `collection` from the `start` index up to, but not including,\n * the `end` index.\n *\n * Note: This function is used instead of `Array#slice` to support node lists\n * in IE < 9 and to ensure dense arrays are returned.\n *\n * @private\n * @param {Array|Object|string} collection The collection to slice.\n * @param {number} start The start index.\n * @param {number} end The end index.\n * @returns {Array} Returns the new array.\n */\nfunction slice(array, start, end) {\n start || (start = 0);\n if (typeof end == 'undefined') {\n end = array ? array.length : 0;\n }\n var index = -1,\n length = end - start || 0,\n result = Array(length < 0 ? 0 : length);\n\n while (++index < length) {\n result[index] = array[start + index];\n }\n return result;\n}\n\nmodule.exports = slice;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreate = require('lodash._basecreate'),\n isObject = require('lodash.isobject'),\n setBindData = require('lodash._setbinddata'),\n slice = require('lodash._slice');\n\n/**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\nvar arrayRef = [];\n\n/** Native method shortcuts */\nvar push = arrayRef.push;\n\n/**\n * The base implementation of `createWrapper` that creates the wrapper and\n * sets its meta data.\n *\n * @private\n * @param {Array} bindData The bind data array.\n * @returns {Function} Returns the new function.\n */\nfunction baseCreateWrapper(bindData) {\n var func = bindData[0],\n bitmask = bindData[1],\n partialArgs = bindData[2],\n partialRightArgs = bindData[3],\n thisArg = bindData[4],\n arity = bindData[5];\n\n var isBind = bitmask & 1,\n isBindKey = bitmask & 2,\n isCurry = bitmask & 4,\n isCurryBound = bitmask & 8,\n key = func;\n\n function bound() {\n var thisBinding = isBind ? thisArg : this;\n if (partialArgs) {\n var args = partialArgs.slice();\n push.apply(args, arguments);\n }\n if (partialRightArgs || isCurry) {\n args || (args = slice(arguments));\n if (partialRightArgs) {\n push.apply(args, partialRightArgs);\n }\n if (isCurry && args.length < arity) {\n bitmask |= 16 & ~32;\n return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]);\n }\n }\n args || (args = arguments);\n if (isBindKey) {\n func = thisBinding[key];\n }\n if (this instanceof bound) {\n thisBinding = baseCreate(func.prototype);\n var result = func.apply(thisBinding, args);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisBinding, args);\n }\n setBindData(bound, bindData);\n return bound;\n}\n\nmodule.exports = baseCreateWrapper;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * Checks if `value` is a function.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n */\nfunction isFunction(value) {\n return typeof value == 'function';\n}\n\nmodule.exports = isFunction;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseBind = require('lodash._basebind'),\n baseCreateWrapper = require('lodash._basecreatewrapper'),\n isFunction = require('lodash.isfunction');\n\n/**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\nvar arrayRef = [];\n\n/** Native method shortcuts */\nvar push = arrayRef.push;\n\n/**\n * Creates a function that, when called, either curries or invokes `func`\n * with an optional `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of method flags to compose.\n * The bitmask may be composed of the following flags:\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry`\n * 8 - `_.curry` (bound)\n * 16 - `_.partial`\n * 32 - `_.partialRight`\n * @param {Array} [partialArgs] An array of arguments to prepend to those\n * provided to the new function.\n * @param {Array} [partialRightArgs] An array of arguments to append to those\n * provided to the new function.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new function.\n */\nfunction createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {\n var isBind = bitmask & 1,\n isBindKey = bitmask & 2,\n isCurry = bitmask & 4,\n isCurryBound = bitmask & 8,\n isPartial = bitmask & 16,\n isPartialRight = bitmask & 32;\n\n if (!isBindKey && !isFunction(func)) {\n throw new TypeError;\n }\n if (isPartial && !partialArgs.length) {\n bitmask &= ~16;\n isPartial = partialArgs = false;\n }\n if (isPartialRight && !partialRightArgs.length) {\n bitmask &= ~32;\n isPartialRight = partialRightArgs = false;\n }\n var bindData = func && func.__bindData__;\n if (bindData && bindData !== true) {\n bindData = bindData.slice();\n\n // set `thisBinding` is not previously bound\n if (isBind && !(bindData[1] & 1)) {\n bindData[4] = thisArg;\n }\n // set if previously bound but not currently (subsequent curried functions)\n if (!isBind && bindData[1] & 1) {\n bitmask |= 8;\n }\n // set curried arity if not yet set\n if (isCurry && !(bindData[1] & 4)) {\n bindData[5] = arity;\n }\n // append partial left arguments\n if (isPartial) {\n push.apply(bindData[2] || (bindData[2] = []), partialArgs);\n }\n // append partial right arguments\n if (isPartialRight) {\n push.apply(bindData[3] || (bindData[3] = []), partialRightArgs);\n }\n // merge flags\n bindData[1] |= bitmask;\n return createWrapper.apply(null, bindData);\n }\n // fast path for `_.bind`\n var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper;\n return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);\n}\n\nmodule.exports = createWrapper;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar createWrapper = require('lodash._createwrapper'),\n reNative = require('lodash._renative'),\n slice = require('lodash._slice');\n\n/**\n * Creates a function that, when called, invokes `func` with the `this`\n * binding of `thisArg` and prepends any additional `bind` arguments to those\n * provided to the bound function.\n *\n * @static\n * @memberOf _\n * @category Functions\n * @param {Function} func The function to bind.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {...*} [arg] Arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var func = function(greeting) {\n * return greeting + ' ' + this.name;\n * };\n *\n * func = _.bind(func, { 'name': 'fred' }, 'hi');\n * func();\n * // => 'hi fred'\n */\nfunction bind(func, thisArg) {\n return arguments.length > 2\n ? createWrapper(func, 17, slice(arguments, 2), null, thisArg)\n : createWrapper(func, 1, null, null, thisArg);\n}\n\nmodule.exports = bind;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n\n/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'name': 'fred' };\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar reNative = require('lodash._renative');\n\n/** Used to detect functions containing a `this` reference */\nvar reThis = /\\bthis\\b/;\n\n/**\n * An object used to flag environments features.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n/**\n * Detect if functions can be decompiled by `Function#toString`\n * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps).\n *\n * @memberOf _.support\n * @type boolean\n */\nsupport.funcDecomp = !reNative.test(global.WinRTError) && reThis.test(function() { return this; });\n\n/**\n * Detect if `Function#name` is supported (all but IE).\n *\n * @memberOf _.support\n * @type boolean\n */\nsupport.funcNames = typeof Function.name == 'string';\n\nmodule.exports = support;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar bind = require('lodash.bind'),\n identity = require('lodash.identity'),\n setBindData = require('lodash._setbinddata'),\n support = require('lodash.support');\n\n/** Used to detected named functions */\nvar reFuncName = /^\\s*function[ \\n\\r\\t]+\\w/;\n\n/** Used to detect functions containing a `this` reference */\nvar reThis = /\\bthis\\b/;\n\n/** Native method shortcuts */\nvar fnToString = Function.prototype.toString;\n\n/**\n * The base implementation of `_.createCallback` without support for creating\n * \"_.pluck\" or \"_.where\" style callbacks.\n *\n * @private\n * @param {*} [func=identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of the created callback.\n * @param {number} [argCount] The number of arguments the callback accepts.\n * @returns {Function} Returns a callback function.\n */\nfunction baseCreateCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n // exit early for no `thisArg` or already bound by `Function#bind`\n if (typeof thisArg == 'undefined' || !('prototype' in func)) {\n return func;\n }\n var bindData = func.__bindData__;\n if (typeof bindData == 'undefined') {\n if (support.funcNames) {\n bindData = !func.name;\n }\n bindData = bindData || !support.funcDecomp;\n if (!bindData) {\n var source = fnToString.call(func);\n if (!support.funcNames) {\n bindData = !reFuncName.test(source);\n }\n if (!bindData) {\n // checks if `func` references the `this` keyword and stores the result\n bindData = reThis.test(source);\n setBindData(func, bindData);\n }\n }\n }\n // exit early if there are no `this` references or `func` is bound\n if (bindData === false || (bindData !== true && bindData[1] & 1)) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 2: return function(a, b) {\n return func.call(thisArg, a, b);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n }\n return bind(func, thisArg);\n}\n\nmodule.exports = baseCreateCallback;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreateCallback = require('lodash._basecreatecallback'),\n keys = require('lodash.keys'),\n objectTypes = require('lodash._objecttypes');\n\n/**\n * Iterates over own enumerable properties of an object, executing the callback\n * for each property. The callback is bound to `thisArg` and invoked with three\n * arguments; (value, key, object). Callbacks may exit iteration early by\n * explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Objects\n * @param {Object} object The object to iterate over.\n * @param {Function} [callback=identity] The function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {\n * console.log(key);\n * });\n * // => logs '0', '1', and 'length' (property order is not guaranteed across environments)\n */\nvar forOwn = function(collection, callback, thisArg) {\n var index, iterable = collection, result = iterable;\n if (!iterable) return result;\n if (!objectTypes[typeof iterable]) return result;\n callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n if (callback(iterable[index], index, collection) === false) return result;\n }\n return result\n};\n\nmodule.exports = forOwn;\n","/**\n * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"npm\" -o ./npm/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\nvar baseCreateCallback = require('lodash._basecreatecallback'),\n forOwn = require('lodash.forown');\n\n/**\n * Iterates over elements of a collection, executing the callback for each\n * element. The callback is bound to `thisArg` and invoked with three arguments;\n * (value, index|key, collection). Callbacks may exit iteration early by\n * explicitly returning `false`.\n *\n * Note: As with other \"Collections\" methods, objects with a `length` property\n * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n * may be used for object iteration.\n *\n * @static\n * @memberOf _\n * @alias each\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [callback=identity] The function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(',');\n * // => logs each number and returns '1,2,3'\n *\n * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); });\n * // => logs each number and returns the object (property order is not guaranteed across environments)\n */\nfunction forEach(collection, callback, thisArg) {\n var index = -1,\n length = collection ? collection.length : 0;\n\n callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n if (typeof length == 'number') {\n while (++index < length) {\n if (callback(collection[index], index, collection) === false) {\n break;\n }\n }\n } else {\n forOwn(collection, callback);\n }\n return collection;\n}\n\nmodule.exports = forEach;\n","var metric,\nimperial;\n\nmetric = {\n mm: {\n name: {\n singular: 'Millimeter',\n plural: 'Millimeters'\n },\n to_anchor: 1/1000\n },\n cm: {\n name: {\n singular: 'Centimeter',\n plural: 'Centimeters'\n },\n to_anchor: 1/100\n },\n m: {\n name: {\n singular: 'Meter',\n plural: 'Meters'\n },\n to_anchor: 1\n },\n km: {\n name: {\n singular: 'Kilometer',\n plural: 'Kilometers'\n },\n to_anchor: 1000\n }\n};\n\nimperial = {\n 'in': {\n name: {\n singular: 'Inch',\n plural: 'Inches'\n },\n to_anchor: 1/12\n },\n yd: {\n name: {\n singular: 'Yard',\n plural: 'Yards'\n },\n to_anchor: 3\n },\n 'ft-us': {\n name: {\n singular: 'US Survey Foot',\n plural: 'US Survey Feet'\n },\n to_anchor: 1.000002\n },\n ft: {\n name: {\n singular: 'Foot',\n plural: 'Feet'\n },\n to_anchor: 1\n },\n mi: {\n name: {\n singular: 'Mile',\n plural: 'Miles'\n },\n to_anchor: 5280\n }\n};\n\nmodule.exports = {\n metric: metric,\n imperial: imperial,\n _anchors: {\n metric: {\n unit: 'm',\n ratio: 3.28084\n },\n imperial: {\n unit: 'ft',\n ratio: 1/3.28084\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n mm2: {\n name: {\n singular: 'Square Millimeter'\n , plural: 'Square Millimeters'\n }\n , to_anchor: 1/1000000\n }\n, cm2: {\n name: {\n singular: 'Centimeter'\n , plural: 'Centimeters'\n }\n , to_anchor: 1/10000\n }\n, m2: {\n name: {\n singular: 'Square Meter'\n , plural: 'Square Meters'\n }\n , to_anchor: 1\n }\n, ha: {\n name: {\n singular: 'Hectare'\n , plural: 'Hectares'\n }\n , to_anchor: 10000\n }\n, km2: {\n name: {\n singular: 'Square Kilometer'\n , plural: 'Square Kilometers'\n }\n , to_anchor: 1000000\n }\n};\n\nimperial = {\n 'in2': {\n name: {\n singular: 'Square Inch'\n , plural: 'Square Inches'\n }\n , to_anchor: 1/144\n }\n, yd2: {\n name: {\n singular: 'Square Yard'\n , plural: 'Square Yards' \n }\n , to_anchor: 9\n }\n, ft2: {\n name: {\n singular: 'Square Foot'\n , plural: 'Square Feet'\n }\n , to_anchor: 1\n }\n, ac: {\n name: {\n singular: 'Acre'\n , plural: 'Acres'\n }\n , to_anchor: 43560\n }\n, mi2: {\n name: {\n singular: 'Square Mile'\n , plural: 'Square Miles'\n }\n , to_anchor: 27878400\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'm2'\n , ratio: 10.7639\n }\n , imperial: {\n unit: 'ft2'\n , ratio: 1/10.7639\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n mcg: {\n name: {\n singular: 'Microgram'\n , plural: 'Micrograms'\n }\n , to_anchor: 1/1000000\n }\n, mg: {\n name: {\n singular: 'Milligram'\n , plural: 'Milligrams'\n }\n , to_anchor: 1/1000\n }\n, g: {\n name: {\n singular: 'Gram'\n , plural: 'Grams'\n }\n , to_anchor: 1\n }\n, kg: {\n name: {\n singular: 'Kilogram'\n , plural: 'Kilograms'\n }\n , to_anchor: 1000\n}\n, mt: {\n name: {\n singular: 'Metric Tonne'\n , plural: 'Metric Tonnes'\n }\n , to_anchor: 1000000\n }\n};\n\nimperial = {\n oz: {\n name: {\n singular: 'Ounce'\n , plural: 'Ounces'\n }\n , to_anchor: 1/16\n }\n, lb: {\n name: {\n singular: 'Pound'\n , plural: 'Pounds'\n }\n , to_anchor: 1\n}, t: {\n name: {\n singular: 'Ton',\n plural: 'Tons',\n },\n to_anchor: 2000,\n },\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'g'\n , ratio: 1/453.592\n }\n , imperial: {\n unit: 'lb'\n , ratio: 453.592\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n mm3: {\n name: {\n singular: 'Cubic Millimeter'\n , plural: 'Cubic Millimeters'\n }\n , to_anchor: 1/1000000\n }\n, cm3: {\n name: {\n singular: 'Cubic Centimeter'\n , plural: 'Cubic Centimeters'\n }\n , to_anchor: 1/1000\n }\n, ml: {\n name: {\n singular: 'Millilitre'\n , plural: 'Millilitres'\n }\n , to_anchor: 1/1000\n }\n, cl: {\n name: {\n singular: 'Centilitre'\n , plural: 'Centilitres'\n }\n , to_anchor: 1/100\n }\n, dl: {\n name: {\n singular: 'Decilitre'\n , plural: 'Decilitres'\n }\n , to_anchor: 1/10\n }\n, l: {\n name: {\n singular: 'Litre'\n , plural: 'Litres'\n }\n , to_anchor: 1\n }\n, kl: {\n name: {\n singular: 'Kilolitre'\n , plural: 'Kilolitres'\n }\n , to_anchor: 1000\n }\n, m3: {\n name: {\n singular: 'Cubic meter'\n , plural: 'Cubic meters'\n }\n , to_anchor: 1000\n }\n, km3: {\n name: {\n singular: 'Cubic kilometer'\n , plural: 'Cubic kilometers'\n }\n , to_anchor: 1000000000000\n }\n\n// Swedish units\n, krm: {\n name: {\n singular: 'Matsked'\n , plural: 'Matskedar'\n }\n , to_anchor: 1/1000\n}\n, tsk: {\n name: {\n singular: 'Tesked'\n , plural: 'Teskedar'\n }\n , to_anchor: 5/1000\n }\n, msk: {\n name: {\n singular: 'Matsked'\n , plural: 'Matskedar'\n }\n , to_anchor: 15/1000\n }\n, kkp: {\n name: {\n singular: 'Kaffekopp'\n , plural: 'Kaffekoppar'\n }\n , to_anchor: 150/1000\n }\n, glas: {\n name: {\n singular: 'Glas'\n , plural: 'Glas'\n }\n , to_anchor: 200/1000\n }\n, kanna: {\n name: {\n singular: 'Kanna'\n , plural: 'Kannor'\n }\n , to_anchor: 2.617\n }\n};\n\nimperial = {\n tsp: {\n name: {\n singular: 'Teaspoon'\n , plural: 'Teaspoons'\n }\n , to_anchor: 1/6\n }\n, Tbs: {\n name: {\n singular: 'Tablespoon'\n , plural: 'Tablespoons'\n }\n , to_anchor: 1/2\n }\n, in3: {\n name: {\n singular: 'Cubic inch'\n , plural: 'Cubic inches'\n }\n , to_anchor: 0.55411\n }\n, 'fl-oz': {\n name: {\n singular: 'Fluid Ounce'\n , plural: 'Fluid Ounces'\n }\n , to_anchor: 1\n }\n, cup: {\n name: {\n singular: 'Cup'\n , plural: 'Cups'\n }\n , to_anchor: 8\n }\n, pnt: {\n name: {\n singular: 'Pint'\n , plural: 'Pints'\n }\n , to_anchor: 16\n }\n, qt: {\n name: {\n singular: 'Quart'\n , plural: 'Quarts'\n }\n , to_anchor: 32\n }\n, gal: {\n name: {\n singular: 'Gallon'\n , plural: 'Gallons'\n }\n , to_anchor: 128\n }\n, ft3: {\n name: {\n singular: 'Cubic foot'\n , plural: 'Cubic feet'\n }\n , to_anchor: 957.506\n }\n, yd3: {\n name: {\n singular: 'Cubic yard'\n , plural: 'Cubic yards'\n }\n , to_anchor: 25852.7\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'l'\n , ratio: 33.8140226\n }\n , imperial: {\n unit: 'fl-oz'\n , ratio: 1/33.8140226\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n ea: {\n name: {\n singular: 'Each'\n , plural: 'Each'\n }\n , to_anchor: 1\n },\n dz: {\n name: {\n singular: 'Dozen'\n , plural: 'Dozens'\n }\n , to_anchor: 12\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: {}\n, _anchors: {\n metric: {\n unit: 'ea'\n , ratio: 1\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n C: {\n name: {\n singular: 'degree Celsius'\n , plural: 'degrees Celsius'\n }\n , to_anchor: 1\n , anchor_shift: 0\n },\n K: {\n name: {\n singular: 'degree Kelvin'\n , plural: 'degrees Kelvin'\n }\n , to_anchor: 1\n , anchor_shift: 273.15\n }\n};\n\nimperial = {\n F: {\n name: {\n singular: 'degree Fahrenheit'\n , plural: 'degrees Fahrenheit'\n }\n , to_anchor: 1\n },\n R: {\n name: {\n singular: 'degree Rankine'\n , plural: 'degrees Rankine'\n }\n , to_anchor: 1\n , anchor_shift: 459.67\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'C'\n , transform: function (C) { return C / (5/9) + 32 }\n }\n , imperial: {\n unit: 'F'\n , transform: function (F) { return (F - 32) * (5/9) }\n }\n }\n};\n\n","var time;\nvar daysInYear = 365.25;\n\ntime = {\n ns: {\n name: {\n singular: 'Nanosecond'\n , plural: 'Nanoseconds'\n }\n , to_anchor: 1/1000000000\n }\n, mu: {\n name: {\n singular: 'Microsecond'\n , plural: 'Microseconds'\n }\n , to_anchor: 1/1000000\n }\n, ms: {\n name: {\n singular: 'Millisecond'\n , plural: 'Milliseconds'\n }\n , to_anchor: 1/1000\n }\n, s: {\n name: {\n singular: 'Second'\n , plural: 'Seconds'\n }\n , to_anchor: 1\n }\n, min: {\n name: {\n singular: 'Minute'\n , plural: 'Minutes'\n }\n , to_anchor: 60\n }\n, h: {\n name: {\n singular: 'Hour'\n , plural: 'Hours'\n }\n , to_anchor: 60 * 60 \n }\n, d: {\n name: {\n singular: 'Day'\n , plural: 'Days'\n }\n , to_anchor: 60 * 60 * 24\n }\n, week: {\n name: {\n singular: 'Week'\n , plural: 'Weeks'\n }\n , to_anchor: 60 * 60 * 24 * 7\n }\n, month: {\n name: {\n singular: 'Month'\n , plural: 'Months'\n }\n , to_anchor: 60 * 60 * 24 * daysInYear / 12\n }\n, year: {\n name: {\n singular: 'Year'\n , plural: 'Years'\n }\n , to_anchor: 60 * 60 * 24 * daysInYear\n }\n};\n\n\nmodule.exports = {\n metric: time \n, _anchors: {\n metric: {\n unit: 's'\n , ratio: 1\n }\n }\n};\n","var bits\n , bytes;\n\nbits = {\n b: {\n name: {\n singular: 'Bit'\n , plural: 'Bits'\n }\n , to_anchor: 1\n }\n, Kb: {\n name: {\n singular: 'Kilobit'\n , plural: 'Kilobits'\n }\n , to_anchor: 1024\n }\n, Mb: {\n name: {\n singular: 'Megabit'\n , plural: 'Megabits'\n }\n , to_anchor: 1048576\n }\n, Gb: {\n name: {\n singular: 'Gigabit'\n , plural: 'Gigabits'\n }\n , to_anchor: 1073741824\n }\n, Tb: {\n name: {\n singular: 'Terabit'\n , plural: 'Terabits'\n }\n , to_anchor: 1099511627776\n }\n};\n\nbytes = {\n B: {\n name: {\n singular: 'Byte'\n , plural: 'Bytes'\n }\n , to_anchor: 1\n }\n, KB: {\n name: {\n singular: 'Kilobyte'\n , plural: 'Kilobytes'\n }\n , to_anchor: 1024\n }\n, MB: {\n name: {\n singular: 'Megabyte'\n , plural: 'Megabytes'\n }\n , to_anchor: 1048576\n }\n, GB: {\n name: {\n singular: 'Gigabyte'\n , plural: 'Gigabytes'\n }\n , to_anchor: 1073741824\n }\n, TB: {\n name: {\n singular: 'Terabyte'\n , plural: 'Terabytes'\n }\n , to_anchor: 1099511627776\n }\n};\n\nmodule.exports = {\n bits: bits\n, bytes: bytes\n, _anchors: {\n bits: {\n unit: 'b'\n , ratio: 1/8\n }\n , bytes: {\n unit: 'B'\n , ratio: 8\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n ppm: {\n name: {\n singular: 'Part-per Million'\n , plural: 'Parts-per Million'\n }\n , to_anchor: 1\n }\n , ppb: {\n name: {\n singular: 'Part-per Billion'\n , plural: 'Parts-per Billion'\n }\n , to_anchor: .001\n }\n , ppt: {\n name: {\n singular: 'Part-per Trillion'\n , plural: 'Parts-per Trillion'\n }\n , to_anchor: .000001\n }\n , ppq: {\n name: {\n singular: 'Part-per Quadrillion'\n , plural: 'Parts-per Quadrillion'\n }\n , to_anchor: .000000001\n }\n};\n\nmodule.exports = {\n metric: metric\n , imperial: {}\n , _anchors: {\n metric: {\n unit: 'ppm'\n , ratio: .000001\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n 'm/s': {\n name: {\n singular: 'Metre per second'\n , plural: 'Metres per second'\n }\n , to_anchor: 3.6\n }\n, 'km/h': {\n name: {\n singular: 'Kilometre per hour'\n , plural: 'Kilometres per hour'\n }\n , to_anchor: 1\n }\n}\n\n imperial = {\n 'm/h': {\n name: {\n singular: 'Mile per hour'\n , plural: 'Miles per hour'\n }\n , to_anchor: 1\n }\n , knot: {\n name: {\n singular: 'Knot'\n , plural: 'Knots'\n }\n , to_anchor: 1.150779\n }\n , 'ft/s': {\n name: {\n singular: 'Foot per second'\n , plural: 'Feet per second'\n }\n , to_anchor: 0.681818\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'km/h'\n , ratio: 1/1.609344\n }\n , imperial: {\n unit: 'm/h'\n , ratio: 1.609344\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n 'min/km': {\n name: {\n singular: 'Minute per kilometre'\n , plural: 'Minutes per kilometre'\n }\n , to_anchor: 0.06\n }\n ,'s/m': {\n name: {\n singular: 'Second per metre'\n , plural: 'Seconds per metre'\n }\n , to_anchor: 1\n }\n}\n\nimperial = {\n 'min/mi': {\n name: {\n singular: 'Minute per mile'\n , plural: 'Minutes per mile'\n }\n , to_anchor: 0.0113636\n }\n , 's/ft': {\n name: {\n singular: 'Second per foot'\n , plural: 'Seconds per foot'\n }\n , to_anchor: 1\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 's/m'\n , ratio: 0.3048\n }\n , imperial: {\n unit: 's/ft'\n , ratio: 1/0.3048\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n Pa: {\n name: {\n singular: 'pascal'\n , plural: 'pascals'\n }\n , to_anchor: 1/1000\n }\n, kPa: {\n name: {\n singular: 'kilopascal'\n , plural: 'kilopascals'\n }\n , to_anchor: 1\n }\n, MPa: {\n name: {\n singular: 'megapascal'\n , plural: 'megapascals'\n }\n , to_anchor: 1000\n }\n, hPa: {\n name: {\n singular: 'hectopascal'\n , plural: 'hectopascals'\n }\n , to_anchor: 1/10\n }\n, bar: {\n name: {\n singular: 'bar'\n , plural: 'bar'\n }\n , to_anchor: 100\n }\n, torr: {\n name: {\n singular: 'torr'\n , plural: 'torr'\n }\n , to_anchor: 101325/760000\n }\n};\n\nimperial = {\n psi: {\n name: {\n singular: 'pound per square inch'\n , plural: 'pounds per square inch'\n }\n , to_anchor: 1/1000\n }\n, ksi: {\n name: {\n singular: 'kilopound per square inch'\n , plural: 'kilopound per square inch'\n }\n , to_anchor: 1\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'kPa'\n , ratio: 0.00014503768078\n }\n , imperial: {\n unit: 'psi'\n , ratio: 1/0.00014503768078\n }\n }\n};\n","var current;\n\ncurrent = {\n A: {\n name: {\n singular: 'Ampere'\n , plural: 'Amperes'\n }\n , to_anchor: 1\n }\n, mA: {\n name: {\n singular: 'Milliampere'\n , plural: 'Milliamperes'\n }\n , to_anchor: .001\n }\n, kA: {\n name: {\n singular: 'Kiloampere'\n , plural: 'Kiloamperes'\n }\n , to_anchor: 1000\n }\n};\n\nmodule.exports = {\n metric: current\n, _anchors: {\n metric: {\n unit: 'A'\n , ratio: 1\n }\n }\n};\n","var voltage;\n\nvoltage = {\n V: {\n name: {\n singular: 'Volt'\n , plural: 'Volts'\n }\n , to_anchor: 1\n }\n, mV: {\n name: {\n singular: 'Millivolt'\n , plural: 'Millivolts'\n }\n , to_anchor: .001\n }\n, kV: {\n name: {\n singular: 'Kilovolt'\n , plural: 'Kilovolts'\n }\n , to_anchor: 1000\n }\n};\n\nmodule.exports = {\n metric: voltage\n, _anchors: {\n metric: {\n unit: 'V'\n , ratio: 1\n }\n }\n};\n","var power;\n\npower = {\n W: {\n name: {\n singular: 'Watt'\n , plural: 'Watts'\n }\n , to_anchor: 1\n }\n, mW: {\n name: {\n singular: 'Milliwatt'\n , plural: 'Milliwatts'\n }\n , to_anchor: .001\n }\n, kW: {\n name: {\n singular: 'Kilowatt'\n , plural: 'Kilowatts'\n }\n , to_anchor: 1000\n }\n, MW: {\n name: {\n singular: 'Megawatt'\n , plural: 'Megawatts'\n }\n , to_anchor: 1000000\n }\n, GW: {\n name: {\n singular: 'Gigawatt'\n , plural: 'Gigawatts'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: power\n, _anchors: {\n metric: {\n unit: 'W'\n , ratio: 1\n }\n }\n};\n","var reactivePower;\n\nreactivePower = {\n VAR: {\n name: {\n singular: 'Volt-Ampere Reactive'\n , plural: 'Volt-Amperes Reactive'\n }\n , to_anchor: 1\n }\n, mVAR: {\n name: {\n singular: 'Millivolt-Ampere Reactive'\n , plural: 'Millivolt-Amperes Reactive'\n }\n , to_anchor: .001\n }\n, kVAR: {\n name: {\n singular: 'Kilovolt-Ampere Reactive'\n , plural: 'Kilovolt-Amperes Reactive'\n }\n , to_anchor: 1000\n }\n, MVAR: {\n name: {\n singular: 'Megavolt-Ampere Reactive'\n , plural: 'Megavolt-Amperes Reactive'\n }\n , to_anchor: 1000000\n }\n, GVAR: {\n name: {\n singular: 'Gigavolt-Ampere Reactive'\n , plural: 'Gigavolt-Amperes Reactive'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: reactivePower\n, _anchors: {\n metric: {\n unit: 'VAR'\n , ratio: 1\n }\n }\n};\n","var apparentPower;\n\napparentPower = {\n VA: {\n name: {\n singular: 'Volt-Ampere'\n , plural: 'Volt-Amperes'\n }\n , to_anchor: 1\n }\n, mVA: {\n name: {\n singular: 'Millivolt-Ampere'\n , plural: 'Millivolt-Amperes'\n }\n , to_anchor: .001\n }\n, kVA: {\n name: {\n singular: 'Kilovolt-Ampere'\n , plural: 'Kilovolt-Amperes'\n }\n , to_anchor: 1000\n }\n, MVA: {\n name: {\n singular: 'Megavolt-Ampere'\n , plural: 'Megavolt-Amperes'\n }\n , to_anchor: 1000000\n }\n, GVA: {\n name: {\n singular: 'Gigavolt-Ampere'\n , plural: 'Gigavolt-Amperes'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: apparentPower\n, _anchors: {\n metric: {\n unit: 'VA'\n , ratio: 1\n }\n }\n};\n","var energy;\n\nenergy = {\n Wh: {\n name: {\n singular: 'Watt-hour'\n , plural: 'Watt-hours'\n }\n , to_anchor: 3600\n }\n, mWh: {\n name: {\n singular: 'Milliwatt-hour'\n , plural: 'Milliwatt-hours'\n }\n , to_anchor: 3.6\n }\n, kWh: {\n name: {\n singular: 'Kilowatt-hour'\n , plural: 'Kilowatt-hours'\n }\n , to_anchor: 3600000\n }\n, MWh: {\n name: {\n singular: 'Megawatt-hour'\n , plural: 'Megawatt-hours'\n }\n , to_anchor: 3600000000\n }\n, GWh: {\n name: {\n singular: 'Gigawatt-hour'\n , plural: 'Gigawatt-hours'\n }\n , to_anchor: 3600000000000\n }\n, J: {\n name: {\n singular: 'Joule'\n , plural: 'Joules'\n }\n , to_anchor: 1\n }\n, kJ: {\n name: {\n singular: 'Kilojoule'\n , plural: 'Kilojoules'\n }\n , to_anchor: 1000\n }\n};\n\nmodule.exports = {\n metric: energy\n, _anchors: {\n metric: {\n unit: 'J'\n , ratio: 1\n }\n }\n};\n","var reactiveEnergy;\n\nreactiveEnergy = {\n VARh: {\n name: {\n singular: 'Volt-Ampere Reactive Hour'\n , plural: 'Volt-Amperes Reactive Hour'\n }\n , to_anchor: 1\n }\n, mVARh: {\n name: {\n singular: 'Millivolt-Ampere Reactive Hour'\n , plural: 'Millivolt-Amperes Reactive Hour'\n }\n , to_anchor: .001\n }\n, kVARh: {\n name: {\n singular: 'Kilovolt-Ampere Reactive Hour'\n , plural: 'Kilovolt-Amperes Reactive Hour'\n }\n , to_anchor: 1000\n }\n, MVARh: {\n name: {\n singular: 'Megavolt-Ampere Reactive Hour'\n , plural: 'Megavolt-Amperes Reactive Hour'\n }\n , to_anchor: 1000000\n }\n, GVARh: {\n name: {\n singular: 'Gigavolt-Ampere Reactive Hour'\n , plural: 'Gigavolt-Amperes Reactive Hour'\n }\n , to_anchor: 1000000000\n }\n};\n\nmodule.exports = {\n metric: reactiveEnergy\n, _anchors: {\n metric: {\n unit: 'VARh'\n , ratio: 1\n }\n }\n};\n","var metric\n , imperial;\n\nmetric = {\n 'mm3/s': {\n name: {\n singular: 'Cubic Millimeter per second'\n , plural: 'Cubic Millimeters per second'\n }\n , to_anchor: 1/1000000\n }\n, 'cm3/s': {\n name: {\n singular: 'Cubic Centimeter per second'\n , plural: 'Cubic Centimeters per second'\n }\n , to_anchor: 1/1000\n }\n, 'ml/s': {\n name: {\n singular: 'Millilitre per second'\n , plural: 'Millilitres per second'\n }\n , to_anchor: 1/1000\n }\n, 'cl/s': {\n name: {\n singular: 'Centilitre per second'\n , plural: 'Centilitres per second'\n }\n , to_anchor: 1/100\n }\n, 'dl/s': {\n name: {\n singular: 'Decilitre per second'\n , plural: 'Decilitres per second'\n }\n , to_anchor: 1/10\n }\n, 'l/s': {\n name: {\n singular: 'Litre per second'\n , plural: 'Litres per second'\n }\n , to_anchor: 1\n }\n, 'l/min': {\n name: {\n singular: 'Litre per minute'\n , plural: 'Litres per minute'\n }\n , to_anchor: 1/60\n }\n, 'l/h': {\n name: {\n singular: 'Litre per hour'\n , plural: 'Litres per hour'\n }\n , to_anchor: 1/3600\n }\n, 'kl/s': {\n name: {\n singular: 'Kilolitre per second'\n , plural: 'Kilolitres per second'\n }\n , to_anchor: 1000\n }\n, 'kl/min': {\n name: {\n singular: 'Kilolitre per minute'\n , plural: 'Kilolitres per minute'\n }\n , to_anchor: 50/3\n }\n, 'kl/h': {\n name: {\n singular: 'Kilolitre per hour'\n , plural: 'Kilolitres per hour'\n }\n , to_anchor: 5/18\n }\n, 'm3/s': {\n name: {\n singular: 'Cubic meter per second'\n , plural: 'Cubic meters per second'\n }\n , to_anchor: 1000\n }\n, 'm3/min': {\n name: {\n singular: 'Cubic meter per minute'\n , plural: 'Cubic meters per minute'\n }\n , to_anchor: 50/3\n }\n, 'm3/h': {\n name: {\n singular: 'Cubic meter per hour'\n , plural: 'Cubic meters per hour'\n }\n , to_anchor: 5/18\n }\n, 'km3/s': {\n name: {\n singular: 'Cubic kilometer per second'\n , plural: 'Cubic kilometers per second'\n }\n , to_anchor: 1000000000000\n }\n};\n\nimperial = {\n 'tsp/s': {\n name: {\n singular: 'Teaspoon per second'\n , plural: 'Teaspoons per second'\n }\n , to_anchor: 1/6\n }\n, 'Tbs/s': {\n name: {\n singular: 'Tablespoon per second'\n , plural: 'Tablespoons per second'\n }\n , to_anchor: 1/2\n }\n, 'in3/s': {\n name: {\n singular: 'Cubic inch per second'\n , plural: 'Cubic inches per second'\n }\n , to_anchor: 0.55411\n }\n, 'in3/min': {\n name: {\n singular: 'Cubic inch per minute'\n , plural: 'Cubic inches per minute'\n }\n , to_anchor: 0.55411/60\n }\n, 'in3/h': {\n name: {\n singular: 'Cubic inch per hour'\n , plural: 'Cubic inches per hour'\n }\n , to_anchor: 0.55411/3600\n }\n, 'fl-oz/s': {\n name: {\n singular: 'Fluid Ounce per second'\n , plural: 'Fluid Ounces per second'\n }\n , to_anchor: 1\n }\n, 'fl-oz/min': {\n name: {\n singular: 'Fluid Ounce per minute'\n , plural: 'Fluid Ounces per minute'\n }\n , to_anchor: 1/60\n }\n, 'fl-oz/h': {\n name: {\n singular: 'Fluid Ounce per hour'\n , plural: 'Fluid Ounces per hour'\n }\n , to_anchor: 1/3600\n }\n, 'cup/s': {\n name: {\n singular: 'Cup per second'\n , plural: 'Cups per second'\n }\n , to_anchor: 8\n }\n, 'pnt/s': {\n name: {\n singular: 'Pint per second'\n , plural: 'Pints per second'\n }\n , to_anchor: 16\n }\n, 'pnt/min': {\n name: {\n singular: 'Pint per minute'\n , plural: 'Pints per minute'\n }\n , to_anchor: 4/15\n }\n, 'pnt/h': {\n name: {\n singular: 'Pint per hour'\n , plural: 'Pints per hour'\n }\n , to_anchor: 1/225\n }\n, 'qt/s': {\n name: {\n singular: 'Quart per second'\n , plural: 'Quarts per second'\n }\n , to_anchor: 32\n }\n, 'gal/s': {\n name: {\n singular: 'Gallon per second'\n , plural: 'Gallons per second'\n }\n , to_anchor: 128\n }\n, 'gal/min': {\n name: {\n singular: 'Gallon per minute'\n , plural: 'Gallons per minute'\n }\n , to_anchor: 32/15\n }\n, 'gal/h': {\n name: {\n singular: 'Gallon per hour'\n , plural: 'Gallons per hour'\n }\n , to_anchor: 8/225\n }\n, 'ft3/s': {\n name: {\n singular: 'Cubic foot per second'\n , plural: 'Cubic feet per second'\n }\n , to_anchor: 957.506\n }\n, 'ft3/min': {\n name: {\n singular: 'Cubic foot per minute'\n , plural: 'Cubic feet per minute'\n }\n , to_anchor: 957.506/60\n }\n, 'ft3/h': {\n name: {\n singular: 'Cubic foot per hour'\n , plural: 'Cubic feet per hour'\n }\n , to_anchor: 957.506/3600\n }\n, 'yd3/s': {\n name: {\n singular: 'Cubic yard per second'\n , plural: 'Cubic yards per second'\n }\n , to_anchor: 25852.7\n }\n, 'yd3/min': {\n name: {\n singular: 'Cubic yard per minute'\n , plural: 'Cubic yards per minute'\n }\n , to_anchor: 25852.7/60\n }\n, 'yd3/h': {\n name: {\n singular: 'Cubic yard per hour'\n , plural: 'Cubic yards per hour'\n }\n , to_anchor: 25852.7/3600\n }\n};\n\nmodule.exports = {\n metric: metric\n, imperial: imperial\n, _anchors: {\n metric: {\n unit: 'l/s'\n , ratio: 33.8140227\n }\n , imperial: {\n unit: 'fl-oz/s'\n , ratio: 1/33.8140227\n }\n }\n};\n","var metric,\nimperial;\n\nmetric = {\n 'lx': {\n name: {\n singular: 'Lux',\n plural: 'Lux'\n },\n to_anchor: 1\n }\n};\n\nimperial = {\n 'ft-cd': {\n name: {\n singular: 'Foot-candle',\n plural: 'Foot-candles'\n },\n to_anchor: 1\n }\n};\n\nmodule.exports = {\n metric: metric,\n imperial: imperial,\n _anchors: {\n metric: {\n unit: 'lx',\n ratio: 1/10.76391\n },\n imperial: {\n unit: 'ft-cd', \n\t ratio: 10.76391\n }\n }\n};\n","var frequency;\n\nfrequency = {\n mHz: {\n name: {\n singular: 'millihertz'\n , plural: 'millihertz'\n }\n , to_anchor: 1/1000\n }\n, Hz: {\n name: {\n singular: 'hertz'\n , plural: 'hertz'\n }\n , to_anchor: 1\n }\n, kHz: {\n name: {\n singular: 'kilohertz'\n , plural: 'kilohertz'\n }\n , to_anchor: 1000\n }\n, MHz: {\n name: {\n singular: 'megahertz'\n , plural: 'megahertz'\n }\n , to_anchor: 1000 * 1000\n }\n, GHz: {\n name: {\n singular: 'gigahertz'\n , plural: 'gigahertz'\n }\n , to_anchor: 1000 * 1000 * 1000\n }\n, THz: {\n name: {\n singular: 'terahertz'\n , plural: 'terahertz'\n }\n , to_anchor: 1000 * 1000 * 1000 * 1000\n }\n, rpm: {\n name: {\n singular: 'rotation per minute'\n , plural: 'rotations per minute'\n }\n , to_anchor: 1/60\n }\n, \"deg/s\": {\n name: {\n singular: 'degree per second'\n , plural: 'degrees per second'\n }\n , to_anchor: 1/360\n }\n, \"rad/s\": {\n name: {\n singular: 'radian per second'\n , plural: 'radians per second'\n }\n , to_anchor: 1/(Math.PI * 2)\n }\n};\n\n\nmodule.exports = {\n metric: frequency\n, _anchors: {\n frequency: {\n unit: 'hz'\n , ratio: 1\n }\n }\n};\n","var angle;\n\nangle = {\n rad: {\n name: {\n singular: 'radian'\n , plural: 'radians'\n }\n , to_anchor: 180/Math.PI\n }\n, deg: {\n name: {\n singular: 'degree'\n , plural: 'degrees'\n }\n , to_anchor: 1\n }\n, grad: {\n name: {\n singular: 'gradian'\n , plural: 'gradians'\n }\n , to_anchor: 9/10\n }\n, arcmin: {\n name: {\n singular: 'arcminute'\n , plural: 'arcminutes'\n }\n , to_anchor: 1/60\n }\n, arcsec: {\n name: {\n singular: 'arcsecond'\n , plural: 'arcseconds'\n }\n , to_anchor: 1/3600\n }\n};\n\nmodule.exports = {\n metric: angle\n, _anchors: {\n metric: {\n unit: 'deg'\n , ratio: 1\n }\n }\n};\n","var convert\n , keys = require('lodash.keys')\n , each = require('lodash.foreach')\n , measures = {\n length: require('./definitions/length')\n , area: require('./definitions/area')\n , mass: require('./definitions/mass')\n , volume: require('./definitions/volume')\n , each: require('./definitions/each')\n , temperature: require('./definitions/temperature')\n , time: require('./definitions/time')\n , digital: require('./definitions/digital')\n , partsPer: require('./definitions/partsPer')\n , speed: require('./definitions/speed')\n , pace: require('./definitions/pace')\n , pressure: require('./definitions/pressure')\n , current: require('./definitions/current')\n , voltage: require('./definitions/voltage')\n , power: require('./definitions/power')\n , reactivePower: require('./definitions/reactivePower')\n , apparentPower: require('./definitions/apparentPower')\n , energy: require('./definitions/energy')\n , reactiveEnergy: require('./definitions/reactiveEnergy')\n , volumeFlowRate: require('./definitions/volumeFlowRate')\n , illuminance: require('./definitions/illuminance')\n , frequency: require('./definitions/frequency')\n , angle : require('./definitions/angle')\n }\n , Converter;\n\nConverter = function (numerator, denominator) {\n if(denominator)\n this.val = numerator / denominator;\n else\n this.val = numerator;\n};\n\n/**\n* Lets the converter know the source unit abbreviation\n*/\nConverter.prototype.from = function (from) {\n if(this.destination)\n throw new Error('.from must be called before .to');\n\n this.origin = this.getUnit(from);\n\n if(!this.origin) {\n this.throwUnsupportedUnitError(from);\n }\n\n return this;\n};\n\n/**\n* Converts the unit and returns the value\n*/\nConverter.prototype.to = function (to) {\n if(!this.origin)\n throw new Error('.to must be called after .from');\n\n this.destination = this.getUnit(to);\n\n var result\n , transform;\n\n if(!this.destination) {\n this.throwUnsupportedUnitError(to);\n }\n\n // Don't change the value if origin and destination are the same\n if (this.origin.abbr === this.destination.abbr) {\n return this.val;\n }\n\n // You can't go from liquid to mass, for example\n if(this.destination.measure != this.origin.measure) {\n throw new Error('Cannot convert incompatible measures of '\n + this.destination.measure + ' and ' + this.origin.measure);\n }\n\n /**\n * Convert from the source value to its anchor inside the system\n */\n result = this.val * this.origin.unit.to_anchor;\n\n /**\n * For some changes it's a simple shift (C to K)\n * So we'll add it when convering into the unit (later)\n * and subtract it when converting from the unit\n */\n if (this.origin.unit.anchor_shift) {\n result -= this.origin.unit.anchor_shift\n }\n\n /**\n * Convert from one system to another through the anchor ratio. Some conversions\n * aren't ratio based or require more than a simple shift. We can provide a custom\n * transform here to provide the direct result\n */\n if(this.origin.system != this.destination.system) {\n transform = measures[this.origin.measure]._anchors[this.origin.system].transform;\n if (typeof transform === 'function') {\n result = transform(result)\n }\n else {\n result *= measures[this.origin.measure]._anchors[this.origin.system].ratio;\n }\n }\n\n /**\n * This shift has to be done after the system conversion business\n */\n if (this.destination.unit.anchor_shift) {\n result += this.destination.unit.anchor_shift;\n }\n\n /**\n * Convert to another unit inside the destination system\n */\n return result / this.destination.unit.to_anchor;\n};\n\n/**\n* Converts the unit to the best available unit.\n*/\nConverter.prototype.toBest = function(options) {\n if(!this.origin)\n throw new Error('.toBest must be called after .from');\n\n var options = Object.assign({\n exclude: [],\n cutOffNumber: 1,\n }, options)\n\n var best;\n /**\n Looks through every possibility for the 'best' available unit.\n i.e. Where the value has the fewest numbers before the decimal point,\n but is still higher than 1.\n */\n each(this.possibilities(), function(possibility) {\n var unit = this.describe(possibility);\n var isIncluded = options.exclude.indexOf(possibility) === -1;\n\n if (isIncluded && unit.system === this.origin.system) {\n var result = this.to(possibility);\n if (!best || (result >= options.cutOffNumber && result < best.val)) {\n best = {\n val: result,\n unit: possibility,\n singular: unit.singular,\n plural: unit.plural\n };\n }\n }\n }.bind(this));\n\n return best;\n}\n\n/**\n* Finds the unit\n*/\nConverter.prototype.getUnit = function (abbr) {\n var found;\n\n each(measures, function (systems, measure) {\n each(systems, function (units, system) {\n if(system == '_anchors')\n return false;\n\n each(units, function (unit, testAbbr) {\n if(testAbbr == abbr) {\n found = {\n abbr: abbr\n , measure: measure\n , system: system\n , unit: unit\n };\n return false;\n }\n });\n\n if(found)\n return false;\n });\n\n if(found)\n return false;\n });\n\n return found;\n};\n\nvar describe = function(resp) {\n return {\n abbr: resp.abbr\n , measure: resp.measure\n , system: resp.system\n , singular: resp.unit.name.singular\n , plural: resp.unit.name.plural\n };\n}\n\n/**\n* An alias for getUnit\n*/\nConverter.prototype.describe = function (abbr) {\n var resp = Converter.prototype.getUnit(abbr);\n var desc = null;\n\n try {\n desc = describe(resp);\n } catch(err) {\n this.throwUnsupportedUnitError(abbr);\n }\n\n return desc;\n};\n\n/**\n* Detailed list of all supported units\n*/\nConverter.prototype.list = function (measure) {\n var list = [];\n\n each(measures, function (systems, testMeasure) {\n if(measure && measure !== testMeasure)\n return;\n\n each(systems, function (units, system) {\n if(system == '_anchors')\n return false;\n\n each(units, function (unit, abbr) {\n list = list.concat(describe({\n abbr: abbr,\n measure: testMeasure\n , system: system\n , unit: unit\n }));\n });\n });\n });\n\n return list;\n};\n\nConverter.prototype.throwUnsupportedUnitError = function (what) {\n var validUnits = [];\n\n each(measures, function (systems, measure) {\n each(systems, function (units, system) {\n if(system == '_anchors')\n return false;\n\n validUnits = validUnits.concat(keys(units));\n });\n });\n\n throw new Error('Unsupported unit ' + what + ', use one of: ' + validUnits.join(', '));\n}\n\n/**\n* Returns the abbreviated measures that the value can be\n* converted to.\n*/\nConverter.prototype.possibilities = function (measure) {\n var possibilities = [];\n if(!this.origin && !measure) {\n\t each(keys(measures), function (measure){\n\t\t each(measures[measure], function (units, system) {\n\t\t if(system == '_anchors')\n\t\t return false;\n\n\t\t possibilities = possibilities.concat(keys(units));\n\t\t });\n\t });\n } else {\n\t measure = measure || this.origin.measure;\n\t each(measures[measure], function (units, system) {\n\t if(system == '_anchors')\n\t return false;\n\n\t possibilities = possibilities.concat(keys(units));\n\t });\n }\n\n return possibilities;\n};\n\n/**\n* Returns the abbreviated measures that the value can be\n* converted to.\n*/\nConverter.prototype.measures = function () {\n return keys(measures);\n};\n\nconvert = function (value) {\n return new Converter(value);\n};\n\nmodule.exports = convert;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});const e={attribute:/\\[\\s*(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)\\s*(?:(?<operator>\\W?=)\\s*(?<value>.+?)\\s*(\\s(?<caseSensitive>[iIsS]))?\\s*)?\\]/gu,id:/#(?<name>[-\\w\\P{ASCII}]+)/gu,class:/\\.(?<name>[-\\w\\P{ASCII}]+)/gu,comma:/\\s*,\\s*/g,combinator:/\\s*[\\s>+~]\\s*/g,\"pseudo-element\":/::(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>¶*)\\))?/gu,\"pseudo-class\":/:(?<name>[-\\w\\P{ASCII}]+)(?:\\((?<argument>¶*)\\))?/gu,universal:/(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?\\*/gu,type:/(?:(?<namespace>\\*|[-\\w\\P{ASCII}]*)\\|)?(?<name>[-\\w\\P{ASCII}]+)/gu},t=new Set([\"combinator\",\"comma\"]),n=new Set([\"not\",\"is\",\"where\",\"has\",\"matches\",\"-moz-any\",\"-webkit-any\",\"nth-child\",\"nth-last-child\"]),s=/(?<index>[\\dn+-]+)\\s+of\\s+(?<subtree>.+)/,o={\"nth-child\":s,\"nth-last-child\":s},r=t=>{switch(t){case\"pseudo-element\":case\"pseudo-class\":return new RegExp(e[t].source.replace(\"(?<argument>¶*)\",\"(?<argument>.*)\"),\"gu\");default:return e[t]}};function c(e,t){let n=0,s=\"\";for(;t<e.length;t++){const o=e[t];switch(o){case\"(\":++n;break;case\")\":--n}if(s+=o,0===n)return s}return s}function i(n,s=e){if(!n)return[];const o=[n];for(const[e,t]of Object.entries(s))for(let n=0;n<o.length;n++){const s=o[n];if(\"string\"!=typeof s)continue;t.lastIndex=0;const r=t.exec(s);if(!r)continue;const c=r.index-1,i=[],a=r[0],l=s.slice(0,c+1);l&&i.push(l),i.push({...r.groups,type:e,content:a});const u=s.slice(c+a.length+1);u&&i.push(u),o.splice(n,1,...i)}let r=0;for(const e of o)switch(typeof e){case\"string\":throw new Error(`Unexpected sequence ${e} found at index ${r}`);case\"object\":r+=e.content.length,e.pos=[r-e.content.length,r],t.has(e.type)&&(e.content=e.content.trim()||\" \")}return o}const a=/(['\"])([^\\\\\\n]+?)\\1/g,l=/\\\\./g;function u(t,n=e){if(\"\"===(t=t.trim()))return[];const s=[];t=(t=t.replace(l,((e,t)=>(s.push({value:e,offset:t}),\"\".repeat(e.length))))).replace(a,((e,t,n,o)=>(s.push({value:e,offset:o}),`${t}${\"\".repeat(n.length)}${t}`)));{let e,n=0;for(;(e=t.indexOf(\"(\",n))>-1;){const o=c(t,e);s.push({value:o,offset:e}),t=`${t.substring(0,e)}(${\"¶\".repeat(o.length-2)})${t.substring(e+o.length)}`,n=e+o.length}}const o=i(t,n),u=new Set;for(const e of s.reverse())for(const t of o){const{offset:n,value:s}=e;if(!(t.pos[0]<=n&&n+s.length<=t.pos[1]))continue;const{content:o}=t,r=n-t.pos[0];t.content=o.slice(0,r)+s+o.slice(r+s.length),t.content!==o&&u.add(t)}for(const e of u){const t=r(e.type);if(!t)throw new Error(`Unknown token type: ${e.type}`);t.lastIndex=0;const n=t.exec(e.content);if(!n)throw new Error(`Unable to parse content for ${e.type}: ${e.content}`);Object.assign(e,n.groups)}return o}function p(e,{list:t=!0}={}){if(t&&e.find((e=>\"comma\"===e.type))){const t=[],n=[];for(let s=0;s<e.length;s++)if(\"comma\"===e[s].type){if(0===n.length)throw new Error(\"Incorrect comma at \"+s);t.push(p(n,{list:!1})),n.length=0}else n.push(e[s]);if(0===n.length)throw new Error(\"Trailing comma\");return t.push(p(n,{list:!1})),{type:\"list\",list:t}}for(let t=e.length-1;t>=0;t--){let n=e[t];if(\"combinator\"===n.type){let s=e.slice(0,t),o=e.slice(t+1);return{type:\"complex\",combinator:n.content,left:p(s),right:p(o)}}}switch(e.length){case 0:throw new Error(\"Could not build AST.\");case 1:return e[0];default:return{type:\"compound\",list:[...e]}}}function*f(e,t){switch(e.type){case\"list\":for(let t of e.list)yield*f(t,e);break;case\"complex\":yield*f(e.left,e),yield*f(e.right,e);break;case\"compound\":yield*e.list.map((t=>[t,e]));break;default:yield[e,t]}}function h(e,{recursive:t=!0,list:s=!0}={}){const r=u(e);if(!r)return;const c=p(r,{list:s});if(!t)return c;for(const[e]of f(c)){if(\"pseudo-class\"!==e.type||!e.argument)continue;if(!n.has(e.name))continue;let t=e.argument;const s=o[e.name];if(s){const n=s.exec(t);if(!n)continue;Object.assign(e,n.groups),t=n.groups.subtree}t&&Object.assign(e,{subtree:h(t,{recursive:!0,list:!0})})}return c}function m(e,t){return t=t||Math.max(...e)+1,e[0]*(t<<1)+e[1]*t+e[2]}exports.RECURSIVE_PSEUDO_CLASSES=n,exports.RECURSIVE_PSEUDO_CLASSES_ARGS=o,exports.TOKENS=e,exports.TRIM_TOKENS=t,exports.flatten=f,exports.gobbleParens=c,exports.parse=h,exports.specificity=function e(t){let s=t;if(\"string\"==typeof s&&(s=h(s,{recursive:!0})),!s)return[];if(\"list\"===s.type&&\"list\"in s){let t=10;const n=s.list.map((n=>{const s=e(n);return t=Math.max(t,...e(n)),s})),o=n.map((e=>m(e,t)));return n[o.indexOf(Math.max(...o))]}const o=[0,0,0];for(const[t]of f(s))switch(t.type){case\"id\":o[0]++;break;case\"class\":case\"attribute\":o[1]++;break;case\"pseudo-element\":case\"type\":o[2]++;break;case\"pseudo-class\":if(\"where\"===t.name)break;if(!n.has(t.name)||!t.subtree){o[1]++;break}e(t.subtree).forEach(((e,t)=>o[t]+=e)),\"nth-child\"!==t.name&&\"nth-last-child\"!==t.name||o[1]++}return o},exports.specificityToNumber=m,exports.stringify=function(e){let t;return t=Array.isArray(e)?e:[...f(e)].map((([e])=>e)),t.map((e=>e.content)).join(\"\")},exports.tokenize=u,exports.tokenizeBy=i,exports.walk=function(e,t,n){if(e)for(const[s,o]of f(e,n))t(s,o)};\n","export * from \"./lib/su\"\nexport * from \"./lib/transform-soup-elements\"\nexport * from \"./lib/direction-to-vec\"\nexport * from \"./lib/apply-selector\"\n\nexport { default as su } from \"./lib/su\"\n","import type {\n AnySoupElement,\n AnySoupElementInput,\n SourceComponentBase,\n SourcePort,\n} from \"@tscircuit/soup\"\n\ntype SoupOps<\n K extends AnySoupElement[\"type\"],\n T extends AnySoupElement | AnySoupElementInput\n> = {\n get: (id: string) => Extract<T, { type: K }> | null\n select: (selector: string) => Extract<T, { type: K }> | null\n getWhere: (where: any) => Extract<T, { type: K }> | null\n getUsing: (using: {\n [key: `${string}_id`]: string\n }) => Extract<T, { type: K }> | null\n list: (where?: any) => Extract<T, { type: K }>[]\n}\n\nexport type SoupUtilObject = {\n [K in AnySoupElement[\"type\"]]: SoupOps<K, AnySoupElement>\n}\nexport type SoupInputUtilObject = {\n [K in AnySoupElementInput[\"type\"]]: SoupOps<K, AnySoupElementInput>\n}\n\nexport type GetSoupUtilObject = ((soup: AnySoupElement[]) => SoupUtilObject) & {\n unparsed: (soup: AnySoupElementInput[]) => SoupInputUtilObject\n}\n\nexport const su: GetSoupUtilObject = ((soup: AnySoupElement[]) => {\n const su = new Proxy(\n {},\n {\n get: (proxy_target: any, component_type: string) => {\n return {\n get: (id: string) =>\n soup.find(\n (e: any) =>\n e.type === component_type && e[`${component_type}_id`] === id\n ),\n getUsing: (using: any) => {\n const keys = Object.keys(using)\n if (keys.length !== 1) {\n throw new Error(\n \"getUsing requires exactly one key, e.g. { pcb_component_id }\"\n )\n }\n const join_key = keys[0] as string\n const join_type = join_key.replace(\"_id\", \"\")\n const joiner: any = soup.find(\n (e: any) =>\n e.type === join_type && e[join_key] === using[join_key]\n )\n if (!joiner) return null\n return soup.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joiner[`${component_type}_id`]\n )\n },\n getWhere: (where: any) => {\n const keys = Object.keys(where)\n return soup.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key])\n )\n },\n list: (where?: any) => {\n const keys = !where ? [] : Object.keys(where)\n return soup.filter(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key])\n )\n },\n select: (selector: string) => {\n // TODO when applySelector is isolated we can use it, until then we\n // do a poor man's selector implementation for two common cases\n if (component_type === \"source_component\") {\n return soup.find(\n (e) =>\n e.type === \"source_component\" &&\n e.name === selector.replace(/\\./g, \"\")\n )\n } else if (\n component_type === \"pcb_port\" ||\n component_type === \"source_port\" ||\n component_type === \"schematic_port\"\n ) {\n const [component_name, port_selector] = selector\n .replace(/\\./g, \"\")\n .split(/[\\s\\>]+/)\n const source_component = soup.find(\n (e) =>\n e.type === \"source_component\" && e.name === component_name\n ) as SourceComponentBase\n if (!source_component) return null\n const source_port = soup.find(\n (e) =>\n e.type === \"source_port\" &&\n e.source_component_id ===\n source_component.source_component_id &&\n (e.name === port_selector ||\n (e.port_hints ?? []).includes(port_selector!))\n ) as SourcePort\n if (!source_port) return null\n if (component_type === \"source_port\") return source_port\n\n if (component_type === \"pcb_port\") {\n return soup.find(\n (e) =>\n e.type === \"pcb_port\" &&\n e.source_port_id === source_port.source_port_id\n )\n } else if (component_type === \"schematic_port\") {\n return soup.find(\n (e) =>\n e.type === \"schematic_port\" &&\n e.source_port_id === source_port.source_port_id\n )\n }\n }\n },\n }\n },\n }\n )\n\n return su\n}) as any\nsu.unparsed = su as any\n\nexport default su\n","export const directionToVec = (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n if (direction === \"up\") return { x: 0, y: 1 }\n else if (direction === \"down\") return { x: 0, y: -1 }\n else if (direction === \"left\") return { x: -1, y: 0 }\n else if (direction === \"right\") return { x: 1, y: 0 }\n else throw new Error(\"Invalid direction\")\n}\n\nexport const vecToDirection = ({ x, y }: { x: number; y: number }) => {\n if (x > y) y = 0\n if (y > x) x = 0\n if (x > 0 && y === 0) return \"right\"\n else if (x < 0 && y === 0) return \"left\"\n else if (x === 0 && y > 0) return \"up\"\n else if (x === 0 && y < 0) return \"down\"\n else throw new Error(`Invalid vector for direction conversion (${x}, ${y})`)\n}\n\nexport const rotateClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"right\"\n else if (direction === \"right\") return \"down\"\n else if (direction === \"down\") return \"left\"\n else if (direction === \"left\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateCounterClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"left\"\n else if (direction === \"left\") return \"down\"\n else if (direction === \"down\") return \"right\"\n else if (direction === \"right\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n num90DegreeClockwiseTurns: number\n) => {\n while (num90DegreeClockwiseTurns > 0) {\n direction = rotateClockwise(direction)\n num90DegreeClockwiseTurns--\n }\n while (num90DegreeClockwiseTurns < 0) {\n direction = rotateCounterClockwise(direction)\n num90DegreeClockwiseTurns++\n }\n return direction\n}\n\nexport const oppositeDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"down\"\n else if (direction === \"down\") return \"up\"\n else if (direction === \"left\") return \"right\"\n else if (direction === \"right\") return \"left\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const oppositeSide = (\n sideOrDir: \"up\" | \"down\" | \"top\" | \"bottom\" | \"left\" | \"right\"\n) => {\n if (sideOrDir === \"top\" || sideOrDir === \"up\") return \"bottom\"\n else if (sideOrDir === \"bottom\" || sideOrDir === \"down\") return \"top\"\n else if (sideOrDir === \"left\") return \"right\"\n else if (sideOrDir === \"right\") return \"left\"\n throw new Error(`Invalid sideOrDir: ${sideOrDir}`)\n}\n","import type { AnySoupElement } from \"@tscircuit/soup\"\nimport {\n directionToVec,\n rotateDirection,\n vecToDirection,\n} from \"./direction-to-vec\"\nimport { type Matrix, applyToPoint, decomposeTSR } from \"transformation-matrix\"\n\nexport const transformSchematicElement = (\n elm: AnySoupElement,\n matrix: Matrix\n) => {\n if (elm.type === \"schematic_component\") {\n // TODO handle rotation\n elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_port\") {\n elm.center = applyToPoint(matrix, elm.center)\n\n if (elm.facing_direction) {\n elm.facing_direction = rotateDirection(\n elm.facing_direction,\n -(Math.atan2(matrix.b, matrix.a) / Math.PI) * 2\n )\n }\n } else if (elm.type === \"schematic_text\") {\n elm.position = applyToPoint(matrix, elm.position)\n // } else if (elm.type === \"schematic_group\") {\n // elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_trace\") {\n } else if (elm.type === \"schematic_box\") {\n const { x, y } = applyToPoint(matrix, { x: elm.x, y: elm.y })\n elm.x = x\n elm.y = y\n } else if (elm.type === \"schematic_line\") {\n const { x: x1, y: y1 } = applyToPoint(matrix, { x: elm.x1, y: elm.y1 })\n const { x: x2, y: y2 } = applyToPoint(matrix, { x: elm.x2, y: elm.y2 })\n elm.x1 = x1\n elm.y1 = y1\n elm.x2 = x2\n elm.y2 = y2\n }\n return elm\n}\n\nexport const transformSchematicElements = (\n elms: AnySoupElement[],\n matrix: Matrix\n) => {\n return elms.map((elm) => transformSchematicElement(elm, matrix))\n}\n\nexport const transformPCBElement = (elm: AnySoupElement, matrix: Matrix) => {\n if (\n elm.type === \"pcb_plated_hole\" ||\n elm.type === \"pcb_hole\" ||\n elm.type === \"pcb_via\" ||\n elm.type === \"pcb_smtpad\" ||\n elm.type === \"pcb_port\"\n ) {\n const { x, y } = applyToPoint(matrix, { x: elm.x, y: elm.y })\n elm.x = x\n elm.y = y\n } else if (\n elm.type === \"pcb_silkscreen_text\" ||\n elm.type === \"pcb_fabrication_note_text\"\n ) {\n elm.anchor_position = applyToPoint(matrix, elm.anchor_position)\n } else if (\n elm.type === \"pcb_silkscreen_circle\" ||\n elm.type === \"pcb_silkscreen_rect\" ||\n elm.type === \"pcb_component\"\n ) {\n elm.center = applyToPoint(matrix, elm.center)\n } else if (\n elm.type === \"pcb_silkscreen_path\" ||\n elm.type === \"pcb_trace\" ||\n elm.type === \"pcb_fabrication_note_path\"\n ) {\n elm.route = elm.route.map((rp) => {\n const tp = applyToPoint(matrix, rp) as { x: number; y: number }\n rp.x = tp.x\n rp.y = tp.y\n return rp\n })\n } else if (elm.type === \"pcb_silkscreen_line\") {\n const p1 = { x: elm.x1, y: elm.y1 }\n const p2 = { x: elm.x2, y: elm.y2 }\n const p1t = applyToPoint(matrix, p1)\n const p2t = applyToPoint(matrix, p2)\n elm.x1 = p1t.x\n elm.y1 = p1t.y\n elm.x2 = p2t.x\n elm.y2 = p2t.y\n } else if (elm.type === \"cad_component\") {\n const newPos = applyToPoint(matrix, {\n x: elm.position.x,\n y: elm.position.y,\n })\n elm.position.x = newPos.x\n elm.position.y = newPos.y\n }\n return elm\n}\n\nexport const transformPCBElements = (\n elms: AnySoupElement[],\n matrix: Matrix\n) => {\n const tsr = decomposeTSR(matrix)\n const flipPadWidthHeight =\n Math.round(tsr.rotation.angle / (Math.PI / 2)) % 2 === 1\n let transformedElms = elms.map((elm) => transformPCBElement(elm, matrix))\n if (flipPadWidthHeight) {\n transformedElms = transformedElms.map((elm) => {\n if (elm.type === \"pcb_smtpad\" && elm.shape === \"rect\") {\n ;[elm.width, elm.height] = [elm.height, elm.width]\n }\n return elm\n })\n }\n return transformedElms\n}\n","import * as parsel from \"parsel-js\"\nimport { convertAbbrToType } from \"./convert-abbreviation-to-soup-element-type\"\nimport type { AnySoupElement } from \"@tscircuit/soup\"\n\nconst filterByType = (\n elements: AnySoupElement[],\n type: string\n): AnySoupElement[] => {\n type = convertAbbrToType(type)\n return elements.filter(\n (elm) => (\"ftype\" in elm && elm.ftype === type) || elm.type === type\n )\n}\n\n/**\n * Filter elements to match the selector, e.g. to access the left port of a\n * resistor you can do \".R1 > port.left\"\n */\nexport const applySelector = (\n elements: AnySoupElement[],\n selectorRaw: string\n): AnySoupElement[] => {\n const selectorAST = parsel.parse(selectorRaw)\n return applySelectorAST(elements, selectorAST!)\n}\n\nconst doesElmMatchClassName = (elm: AnySoupElement, className: string) =>\n (\"name\" in elm && elm.name === className) ||\n (\"port_hints\" in elm && elm.port_hints?.includes(className))\n\nexport const applySelectorAST = (\n elements: AnySoupElement[],\n selectorAST: parsel.AST\n): AnySoupElement[] => {\n switch (selectorAST.type) {\n case \"complex\": {\n switch (selectorAST.combinator) {\n case \" \": // TODO technically should do a deep search\n case \">\": {\n const { left, right } = selectorAST\n if (left.type === \"class\" || left.type === \"type\") {\n // TODO should also check if content matches any element tags\n let matchElms: AnySoupElement[]\n if (left.type === \"class\") {\n matchElms = elements.filter((elm) =>\n doesElmMatchClassName(elm, left.name)\n )\n } else if (left.type === \"type\") {\n matchElms = filterByType(elements, left.name)\n } else {\n matchElms = []\n }\n\n const childrenOfMatchingElms = matchElms.flatMap((matchElm) =>\n elements.filter(\n (elm: any) =>\n elm[`${matchElm.type}_id`] ===\n (matchElm as any)[`${matchElm.type}_id`] && elm !== matchElm\n )\n )\n return applySelectorAST(childrenOfMatchingElms, right)\n } else {\n throw new Error(`unsupported selector type \"${left.type}\" `)\n }\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for complex combinator \"${selectorAST.combinator}\"`\n )\n }\n }\n return []\n }\n case \"compound\": {\n const conditionsToMatch = selectorAST.list.map((part) => {\n switch (part.type) {\n case \"class\": {\n return (elm: any) => doesElmMatchClassName(elm, part.name)\n }\n case \"type\": {\n const name = convertAbbrToType(part.name)\n return (elm: any) => elm.type === name\n }\n }\n })\n\n return elements.filter((elm) =>\n conditionsToMatch.every((condFn) => condFn?.(elm))\n )\n }\n case \"type\": {\n return filterByType(elements, selectorAST.name) as AnySoupElement[]\n }\n case \"class\": {\n return elements.filter((elm) =>\n doesElmMatchClassName(elm, selectorAST.name)\n )\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for type: \"${\n selectorAST.type\n }\" ${JSON.stringify(selectorAST, null, \" \")}`\n )\n }\n }\n}\n","export const convertAbbrToType = (abbr: string): string => {\n switch (abbr) {\n case \"port\":\n return \"source_port\"\n case \"net\":\n return \"source_net\"\n case \"power\":\n return \"simple_power_source\"\n }\n return abbr\n}\n","import {\n Matrix,\n identity,\n scale,\n translate,\n compose,\n applyToPoint,\n} from \"transformation-matrix\"\nimport { useCallback, useEffect, useReducer, useRef, useState } from \"react\"\n\ntype Point = { x: number; y: number }\n\ninterface Props {\n canvasElm?: HTMLElement\n transform?: Matrix\n initialTransform?: Matrix\n onSetTransform?: (transform: Matrix) => any\n}\n\nexport const useMouseMatrixTransform = (props: Props = {}) => {\n const extRef = useRef<any>(null)\n const [lastDragCancelTime, setLastDragCancelTime] = useState(0)\n const outerCanvasElm = props.canvasElm ?? extRef.current\n const [internalTransform, setInternalTransform] = useState<Matrix>(\n props.initialTransform ?? identity()\n )\n const [waitCounter, setWaitCounter] = useState(0)\n const [extChangeCounter, incExtChangeCounter] = useReducer((s) => s + 1, 0)\n\n const setTransform = useCallback(\n (newTransform: Matrix) => {\n if (props.onSetTransform) {\n props.onSetTransform(newTransform)\n }\n if (!props.transform) {\n setInternalTransform(newTransform)\n }\n },\n [props.onSetTransform, setInternalTransform]\n )\n\n const setTransformExt = useCallback(\n (newTransform: Matrix) => {\n setTransform(newTransform)\n incExtChangeCounter()\n },\n [setTransform]\n )\n\n const transform = props.transform ?? internalTransform\n\n const cancelDrag = useCallback(() => {\n setLastDragCancelTime(Date.now())\n }, [])\n\n useEffect(() => {\n const canvasElm: HTMLCanvasElement | null =\n props.canvasElm ?? extRef.current\n if (canvasElm && !outerCanvasElm) {\n // Always re-render when the canvas element is known\n setWaitCounter(waitCounter + 1)\n return\n }\n if (!canvasElm) {\n const timeout = setTimeout(() => {\n setWaitCounter(waitCounter + 1)\n }, 100)\n return () => clearTimeout(timeout)\n }\n let init_tf = props.transform ?? internalTransform\n\n let m0: Point = { x: 0, y: 0 },\n m1: Point = { x: 0, y: 0 },\n md = false,\n mlastrel: Point = { x: 0, y: 0 }\n\n const getMousePos = (e: MouseEvent) => {\n return {\n x: e.pageX - canvasElm.getBoundingClientRect().left - window.scrollX,\n y: e.pageY - canvasElm.getBoundingClientRect().top - window.scrollY,\n }\n }\n\n function handleMouseDown(e: MouseEvent) {\n m0 = getMousePos(e)\n if (Date.now() - lastDragCancelTime < 100) return\n md = true\n e.preventDefault()\n }\n function handleMouseUp(e: MouseEvent) {\n if (!md) return\n m1 = getMousePos(e)\n\n const new_tf = compose(translate(m1.x - m0.x, m1.y - m0.y), init_tf)\n setTransform(new_tf)\n init_tf = new_tf\n\n md = false\n }\n function handleMouseMove(e: MouseEvent) {\n mlastrel = getMousePos(e)\n if (!md) return\n m1 = getMousePos(e)\n\n setTransform(compose(translate(m1.x - m0.x, m1.y - m0.y), init_tf))\n }\n function handleMouseWheel(e: WheelEvent) {\n const center = getMousePos(e)\n const new_tf = compose(\n translate(center.x, center.y),\n scale(1 - e.deltaY / 1000, 1 - e.deltaY / 1000),\n translate(-center.x, -center.y),\n init_tf\n )\n setTransform(new_tf)\n init_tf = new_tf\n e.preventDefault()\n }\n function handleMouseOut(e: MouseEvent) {\n if (!md) return\n\n // If the mouseout occurs in the bounding box of the canvasElm, it's\n // defocusing on internal elements, so we should ignore it\n if (canvasElm) {\n const boundingBox = canvasElm.getBoundingClientRect()\n if (\n e.clientX >= boundingBox.left + 10 &&\n e.clientX <= boundingBox.right - 10 &&\n e.clientY >= boundingBox.top + 10 &&\n e.clientY <= boundingBox.bottom - 10\n ) {\n return\n }\n }\n\n md = false\n m1 = getMousePos(e)\n\n const new_tf = compose(translate(m1.x - m0.x, m1.y - m0.y), init_tf)\n setTransform(new_tf)\n init_tf = new_tf\n }\n\n canvasElm.addEventListener(\"mousedown\", handleMouseDown)\n canvasElm.addEventListener(\"mouseup\", handleMouseUp)\n window.addEventListener(\"mousemove\", handleMouseMove)\n canvasElm.addEventListener(\"mouseout\", handleMouseOut)\n canvasElm.addEventListener(\"wheel\", handleMouseWheel)\n\n return () => {\n canvasElm.removeEventListener(\"mousedown\", handleMouseDown)\n canvasElm.removeEventListener(\"mouseup\", handleMouseUp)\n window.removeEventListener(\"mousemove\", handleMouseMove)\n canvasElm.removeEventListener(\"mouseout\", handleMouseOut)\n canvasElm.removeEventListener(\"wheel\", handleMouseWheel)\n }\n }, [outerCanvasElm, waitCounter, extChangeCounter, lastDragCancelTime])\n\n const applyTransformToPoint = useCallback(\n (obj: Point | [number, number]) => applyToPoint(transform, obj),\n [transform]\n )\n\n return {\n ref: extRef,\n transform,\n applyTransformToPoint,\n setTransform: setTransformExt,\n cancelDrag\n }\n}\n\nexport default useMouseMatrixTransform\n","export * from \"./PCBViewer\"\nexport type { EditEvent } from \"lib/edit-events\"\nexport { applyEditEvents } from \"lib/apply-edit-events\"\nexport { CanvasElementsRenderer } from \"./components/CanvasElementsRenderer\"\n","import React, { useEffect, useMemo, useState } from \"react\"\nimport { createRoot } from \"@tscircuit/react-fiber\"\nimport { createProjectBuilder } from \"@tscircuit/builder\"\nimport type { AnySoupElement } from \"circuit-json\"\nimport { CanvasElementsRenderer } from \"./components/CanvasElementsRenderer\"\nimport useMouseMatrixTransform from \"use-mouse-matrix-transform\"\nimport { useMeasure } from \"react-use\"\nimport { compose, scale, translate } from \"transformation-matrix\"\nimport { findBoundsAndCenter } from \"@tscircuit/builder\"\nimport { ContextProviders } from \"components/ContextProviders\"\nimport type { EditEvent } from \"lib/edit-events\"\nimport { applyEditEvents } from \"lib/apply-edit-events\"\nimport { RatsNestOverlay } from \"./components/RatsNestOverlay\"\nimport type { StateProps } from \"global-store\"\nimport { ToastContainer } from \"lib/toast\"\n\nconst defaultTransform = compose(translate(400, 300), scale(40, -40))\n\ntype Props = {\n children?: any\n soup?: any\n height?: number\n allowEditing?: boolean\n editEvents?: EditEvent[]\n initialState?: Partial<StateProps>\n onEditEventsChanged?: (editEvents: EditEvent[]) => void\n}\n\nexport const PCBViewer = ({\n children,\n soup,\n height = 600,\n initialState,\n allowEditing = true,\n editEvents: editEventsProp,\n onEditEventsChanged,\n}: Props) => {\n const [stateElements, setStateElements] = useState<Array<AnySoupElement>>([])\n const [ref, refDimensions] = useMeasure()\n const [transform, setTransformInternal] = useState(defaultTransform)\n const {\n ref: transformRef,\n setTransform,\n cancelDrag: cancelPanDrag,\n } = useMouseMatrixTransform({\n transform,\n onSetTransform: setTransformInternal,\n })\n let [editEvents, setEditEvents] = useState<EditEvent[]>([])\n editEvents = editEventsProp ?? editEvents\n\n const [error, setError] = useState(null)\n\n const resetTransform = () => {\n const elmBounds =\n refDimensions?.width > 0 ? refDimensions : { width: 500, height: 500 }\n const { center, width, height } = elements.some((e) =>\n e.type.startsWith(\"pcb_\"),\n )\n ? findBoundsAndCenter(\n elements.filter((e) => e.type.startsWith(\"pcb_\")) as any,\n )\n : { center: { x: 0, y: 0 }, width: 0.001, height: 0.001 }\n const scaleFactor =\n Math.min(\n (elmBounds.width ?? 0) / width,\n (elmBounds.height ?? 0) / height,\n 100,\n ) * 0.75\n setTransform(\n compose(\n translate((elmBounds.width ?? 0) / 2, (elmBounds.height ?? 0) / 2),\n // translate(100, 0),\n scale(scaleFactor, -scaleFactor, 0, 0),\n translate(-center.x, -center.y),\n ),\n )\n }\n\n useEffect(() => {\n if (!children || children?.length === 0) return\n async function doRender() {\n // TODO re-use project builder\n const projectBuilder = createProjectBuilder()\n await createRoot()\n .render(children, projectBuilder as any)\n .then((elements) => {\n setStateElements(elements as any)\n setError(null)\n })\n }\n doRender().catch((e) => {\n setError(e.toString())\n console.log(e.toString())\n })\n }, [children])\n\n useEffect(() => {\n if (refDimensions && refDimensions.width !== 0 && (children || soup)) {\n resetTransform()\n }\n }, [children, refDimensions])\n\n if (error) return <div style={{ color: \"red\" }}> {error} </div>\n\n const pcbElmsPreEdit: AnySoupElement[] = (soup ?? stateElements).filter(\n (e: any) => e.type.startsWith(\"pcb_\") || e.type.startsWith(\"source_\"),\n )\n\n const elements = useMemo(() => {\n return applyEditEvents(pcbElmsPreEdit, editEvents)\n }, [pcbElmsPreEdit, editEvents])\n\n const onCreateEditEvent = (event: EditEvent) => {\n setEditEvents([...editEvents, event])\n onEditEventsChanged?.([...editEvents, event])\n }\n const onModifyEditEvent = (modifiedEvent: Partial<EditEvent>) => {\n const newEditEvents: EditEvent[] = editEvents.map((e) =>\n e.edit_event_id === modifiedEvent.edit_event_id\n ? ({ ...e, ...modifiedEvent } as EditEvent)\n : e,\n )\n setEditEvents(newEditEvents)\n onEditEventsChanged?.(newEditEvents)\n }\n\n return (\n <div ref={transformRef as any}>\n <div ref={ref as any}>\n <ContextProviders initialState={initialState}>\n <CanvasElementsRenderer\n key={refDimensions.width}\n transform={transform}\n height={height}\n width={refDimensions.width}\n allowEditing={allowEditing}\n cancelPanDrag={cancelPanDrag}\n onCreateEditEvent={onCreateEditEvent}\n onModifyEditEvent={onModifyEditEvent}\n grid={{\n spacing: 1,\n view_window: {\n left: 0,\n right: refDimensions.width || 500,\n top: height,\n bottom: 0,\n },\n }}\n elements={elements}\n />\n <ToastContainer />\n </ContextProviders>\n </div>\n </div>\n )\n}\n","import React, { useCallback, useState } from \"react\"\nimport { CanvasPrimitiveRenderer } from \"./CanvasPrimitiveRenderer\"\nimport { pcb_port, type AnySoupElement } from \"circuit-json\"\nimport { useMemo } from \"react\"\nimport { convertElementToPrimitives } from \"../lib/convert-element-to-primitive\"\nimport { Matrix } from \"transformation-matrix\"\nimport { GridConfig, Primitive } from \"lib/types\"\nimport { MouseElementTracker } from \"./MouseElementTracker\"\nimport { DimensionOverlay } from \"./DimensionOverlay\"\nimport { ToolbarOverlay } from \"./ToolbarOverlay\"\nimport { ErrorOverlay } from \"./ErrorOverlay\"\nimport { EditPlacementOverlay } from \"./EditPlacementOverlay\"\nimport { EditEvent } from \"lib/edit-events\"\nimport { EditTraceHintOverlay } from \"./EditTraceHintOverlay\"\nimport { RatsNestOverlay } from \"./RatsNestOverlay\"\nimport { getFullConnectivityMapFromCircuitJson } from \"circuit-json-to-connectivity-map\"\nimport { addInteractionMetadataToPrimitives } from \"lib/util/addInteractionMetadataToPrimitives\"\n\nexport interface CanvasElementsRendererProps {\n elements: AnySoupElement[]\n transform?: Matrix\n width?: number\n height?: number\n grid?: GridConfig\n allowEditing: boolean\n cancelPanDrag: Function\n onCreateEditEvent: (event: EditEvent) => void\n onModifyEditEvent: (event: Partial<EditEvent>) => void\n}\n\nexport const CanvasElementsRenderer = (props: CanvasElementsRendererProps) => {\n const { transform, elements } = props\n const [primitivesWithoutInteractionMetadata, connectivityMap] =\n useMemo(() => {\n const primitivesWithoutInteractionMetadata = props.elements.flatMap(\n (elm) => convertElementToPrimitives(elm, props.elements),\n )\n const connectivityMap = getFullConnectivityMapFromCircuitJson(\n props.elements as any,\n )\n return [primitivesWithoutInteractionMetadata, connectivityMap]\n }, [props.elements])\n\n const [primitives, setPrimitives] = useState<Primitive[]>(\n primitivesWithoutInteractionMetadata,\n )\n\n return (\n <MouseElementTracker\n transform={transform}\n primitives={primitivesWithoutInteractionMetadata}\n onMouseHoverOverPrimitives={(primitivesHoveredOver) => {\n const primitiveIdsInMousedOverNet: string[] = []\n for (const primitive of primitivesHoveredOver) {\n if (primitive._element) {\n const connectedPrimitivesList = connectivityMap.getNetConnectedToId(\n \"pcb_port_id\" in primitive._element\n ? primitive._element?.pcb_port_id!\n : \"pcb_trace_id\" in primitive._element\n ? primitive._element?.pcb_trace_id\n : \"\",\n )\n primitiveIdsInMousedOverNet.push(\n ...connectivityMap.getIdsConnectedToNet(connectedPrimitivesList!),\n )\n }\n }\n\n const drawingObjectIdsWithMouseOver = new Set(\n primitivesHoveredOver.map((p) => p._pcb_drawing_object_id),\n )\n const newPrimitives = addInteractionMetadataToPrimitives({\n primitivesWithoutInteractionMetadata,\n drawingObjectIdsWithMouseOver,\n primitiveIdsInMousedOverNet,\n })\n\n setPrimitives(newPrimitives)\n }}\n >\n <EditPlacementOverlay\n disabled={!props.allowEditing}\n transform={transform}\n soup={elements}\n cancelPanDrag={props.cancelPanDrag}\n onCreateEditEvent={props.onCreateEditEvent}\n onModifyEditEvent={props.onModifyEditEvent}\n >\n <EditTraceHintOverlay\n disabled={!props.allowEditing}\n transform={transform}\n soup={elements}\n cancelPanDrag={props.cancelPanDrag}\n onCreateEditEvent={props.onCreateEditEvent as any}\n onModifyEditEvent={props.onModifyEditEvent as any}\n >\n <DimensionOverlay transform={transform!}>\n <ToolbarOverlay elements={elements}>\n <ErrorOverlay transform={transform} elements={elements}>\n <RatsNestOverlay transform={transform} soup={elements}>\n <CanvasPrimitiveRenderer\n transform={transform}\n primitives={primitives}\n width={props.width}\n height={props.height}\n grid={props.grid}\n />\n </RatsNestOverlay>\n </ErrorOverlay>\n </ToolbarOverlay>\n </DimensionOverlay>\n </EditTraceHintOverlay>\n </EditPlacementOverlay>\n </MouseElementTracker>\n )\n}\n","import { drawGrid } from \"lib/draw-grid\"\nimport { SuperGrid, toMMSI } from \"react-supergrid\"\nimport React, { useEffect, useRef } from \"react\"\nimport type { Matrix } from \"transformation-matrix\"\nimport { drawPrimitives } from \"../lib/draw-primitives\"\nimport { Drawer } from \"../lib/Drawer\"\nimport type { GridConfig, Primitive } from \"../lib/types\"\nimport { useGlobalStore } from \"global-store\"\nimport { all_layers } from \"circuit-json\"\n\ninterface Props {\n primitives: Primitive[]\n defaultUnit?: string\n transform?: Matrix\n grid?: GridConfig\n width?: number\n height?: number\n}\n\nexport const CanvasPrimitiveRenderer = ({\n primitives,\n transform,\n grid,\n width = 500,\n height = 500,\n}: Props) => {\n const canvasRefs = useRef<Record<string, HTMLCanvasElement>>()\n const selectedLayer = useGlobalStore((s) => s.selected_layer)\n\n useEffect(() => {\n if (!canvasRefs.current) return\n if (Object.keys(canvasRefs.current).length === 0) return\n const drawer = new Drawer(canvasRefs.current)\n if (transform) drawer.transform = transform\n drawer.clear()\n drawer.foregroundLayer = selectedLayer\n drawPrimitives(drawer, primitives)\n drawer.orderAndFadeLayers()\n }, [primitives, transform, selectedLayer])\n\n return (\n <div\n style={{\n backgroundColor: \"black\",\n width,\n height,\n position: \"relative\",\n }}\n >\n <SuperGrid\n textColor=\"rgba(0,255,0,0.8)\"\n majorColor=\"rgba(0,255,0,0.4)\"\n minorColor=\"rgba(0,255,0,0.2)\"\n screenSpaceCellSize={200}\n width={width}\n height={height}\n transform={transform!}\n stringifyCoord={(x, y, z) => `${toMMSI(x, z)}, ${toMMSI(y, z)}`}\n />\n {all_layers\n .map((l) => l.replace(/-/g, \"\"))\n .concat([\"drill\", \"other\"])\n .map((layer, i) => (\n <canvas\n key={layer}\n ref={(el) => {\n canvasRefs.current ??= {}\n canvasRefs.current[layer] = el!\n }}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n }}\n width={width}\n height={height}\n ></canvas>\n ))}\n </div>\n )\n}\n","import {\n type Matrix,\n applyToPoint,\n compose,\n identity,\n inverse,\n translate,\n} from \"transformation-matrix\"\nimport colors from \"./colors\"\nimport { scaleOnly } from \"./util/scale-only\"\n\nexport interface Aperture {\n shape: \"circle\" | \"square\"\n size: number\n opacity: number\n mode: \"add\" | \"subtract\"\n fontSize: number\n color: string\n layer: string\n}\n\nexport const LAYER_NAME_TO_COLOR = {\n // Standard colors, you shouldn't use these except for testing\n red: \"red\",\n black: \"black\",\n green: \"green\",\n board: \"rgb(255, 255, 255)\",\n other: \"#eee\",\n // TODO more builtin html colors\n\n // Common eagle names\n top: colors.board.copper.f,\n inner1: colors.board.copper.in1,\n inner2: colors.board.copper.in2,\n inner3: colors.board.copper.in3,\n inner4: colors.board.copper.in4,\n inner5: colors.board.copper.in5,\n inner6: colors.board.copper.in6,\n inner7: colors.board.copper.in7,\n inner8: colors.board.copper.in8,\n\n bottom: colors.board.copper.b,\n drill: colors.board.anchor,\n keepout: colors.board.background,\n tkeepout: colors.board.b_crtyd,\n tplace: colors.board.b_silks,\n\n top_silkscreen: colors.board.f_silks,\n bottom_silkscreen: colors.board.b_silks,\n\n top_fabrication: colors.board.f_fab,\n bottom_fabrication: colors.board.b_fab,\n\n ...colors.board,\n}\n\nexport type LayerNameForColor = keyof typeof LAYER_NAME_TO_COLOR\n\nexport const DEFAULT_DRAW_ORDER = [\n \"top\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n \"bottom\",\n] as const\n\nexport const FILL_TYPES = {\n 0: \"Empty\",\n 1: \"Solid\",\n 2: \"Line\",\n 3: \"LtSlash\",\n 4: \"Slash\",\n 5: \"BkSlash\",\n 6: \"LtBkSlash\",\n 7: \"Hatch\",\n 8: \"XHatch\",\n 9: \"Interleave\",\n 10: \"WideDot\",\n 11: \"CloseDot\",\n 12: \"Stipple1\",\n 13: \"Stipple2\",\n 14: \"Stipple3\",\n 15: \"Stipple4\",\n}\n\nexport class Drawer {\n canvasLayerMap: Record<string, HTMLCanvasElement>\n ctxLayerMap: Record<string, CanvasRenderingContext2D>\n // @ts-ignore this.equip({}) handles constructor assignment\n aperture: Aperture\n transform: Matrix\n foregroundLayer: string = \"top\"\n lastPoint: { x: number; y: number }\n\n constructor(canvasLayerMap: Record<string, HTMLCanvasElement>) {\n this.canvasLayerMap = canvasLayerMap\n this.ctxLayerMap = Object.fromEntries(\n Object.entries(canvasLayerMap).map(([name, canvas]) => [\n name,\n canvas.getContext(\"2d\")!,\n ]),\n )\n this.transform = identity()\n // positive is up (cartesian)\n this.transform.d *= -1\n this.transform = compose(this.transform, translate(0, -500))\n this.lastPoint = { x: 0, y: 0 }\n this.equip({})\n }\n\n clear() {\n for (const ctx of Object.values(this.ctxLayerMap)) {\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height)\n }\n }\n\n equip(aperture: Partial<Aperture>) {\n this.aperture = {\n fontSize: 0,\n shape: \"circle\",\n mode: \"add\",\n size: 0,\n color: \"red\",\n layer: \"top\",\n opacity: this.foregroundLayer === aperture.color ? 1 : 0.5,\n ...aperture,\n }\n }\n\n drawMeshPattern(\n x: number,\n y: number,\n width: number,\n height: number,\n spacing: number,\n angle: number = 45,\n ) {\n const ctx = this.getLayerCtx()\n const [x1, y1] = applyToPoint(this.transform, [x, y])\n const [x2, y2] = applyToPoint(this.transform, [x + width, y + height])\n const spacing$ = scaleOnly(this.transform, spacing)\n\n // Set line properties for the mesh\n ctx.lineWidth = 1\n ctx.strokeStyle = this.aperture.color\n\n const drawLines = (angle: number) => {\n const sin = Math.sin(angle)\n const cos = Math.cos(angle)\n const diag = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))\n\n for (let i = -diag; i <= diag; i += spacing$) {\n ctx.beginPath()\n ctx.moveTo(x1 + i * cos - diag * sin, y1 + i * sin + diag * cos)\n ctx.lineTo(x1 + i * cos + diag * sin, y1 + i * sin - diag * cos)\n ctx.stroke()\n }\n }\n\n // Draw first set of parallel lines\n drawLines((angle * Math.PI) / 180)\n // Draw second set of parallel lines (perpendicular to the first set)\n drawLines(((angle + 90) * Math.PI) / 180)\n }\n\n rect(x: number, y: number, w: number, h: number, mesh_fill?: boolean) {\n const [x1$, y1$] = applyToPoint(this.transform, [x - w / 2, y - h / 2])\n const [x2$, y2$] = applyToPoint(this.transform, [x + w / 2, y + h / 2])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n if (mesh_fill) {\n ctx.save()\n ctx.beginPath()\n ctx.rect(x1$, y1$, x2$ - x1$, y2$ - y1$)\n ctx.clip()\n\n // Draw the mesh pattern\n this.drawMeshPattern(x - w / 2, y - h / 2, w, h, 0.15) // Adjust spacing as needed\n\n ctx.restore()\n\n // Draw the outline\n ctx.strokeRect(x1$, y1$, x2$ - x1$, y2$ - y1$)\n } else {\n ctx.fillRect(x1$, y1$, x2$ - x1$, y2$ - y1$)\n }\n }\n\n circle(x: number, y: number, r: number, mesh_fill?: boolean) {\n const r$ = scaleOnly(this.transform, r)\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n if (mesh_fill) {\n ctx.save()\n ctx.beginPath()\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI)\n ctx.clip()\n\n // Draw the mesh pattern\n // We need to cover the entire circular area, so we use a square that fully encloses the circle\n this.drawMeshPattern(x - r, y - r, r * 2, r * 2, 0.15) // Adjust spacing as needed\n\n ctx.restore()\n\n // Draw the outline\n ctx.beginPath()\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI)\n ctx.stroke()\n } else {\n ctx.beginPath()\n ctx.arc(x$, y$, r$, 0, 2 * Math.PI)\n ctx.fill()\n }\n }\n\n oval(x: number, y: number, rx: number, ry: number) {\n const rx$ = scaleOnly(this.transform, rx)\n const ry$ = scaleOnly(this.transform, ry)\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n ctx.beginPath()\n ctx.ellipse(x$, y$, rx$, ry$, 0, 0, 2 * Math.PI)\n ctx.fill()\n ctx.closePath()\n }\n\n pill(x: number, y: number, w: number, h: number) {\n const [x$, y$] = applyToPoint(this.transform, [x - w / 2, y + h / 2])\n const width$ = scaleOnly(this.transform, w)\n const height$ = scaleOnly(this.transform, h)\n const radius = Math.min(width$, height$) / 2\n this.applyAperture()\n const ctx = this.getLayerCtx()\n ctx.beginPath()\n ctx.arc(x$ + radius, y$ + radius, radius, Math.PI, Math.PI * 1.5)\n ctx.arc(x$ + width$ - radius, y$ + radius, radius, Math.PI * 1.5, 0)\n ctx.arc(\n x$ + width$ - radius,\n y$ + height$ - radius,\n radius,\n 0,\n Math.PI * 0.5,\n )\n ctx.arc(x$ + radius, y$ + height$ - radius, radius, Math.PI * 0.5, Math.PI)\n ctx.fill()\n ctx.closePath()\n }\n\n polygon(points: { x: number; y: number }[]) {\n if (points.length < 3) {\n console.warn(\"Polygon must have at least 3 points\")\n return\n }\n\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n // Transform all points\n const transformedPoints = points.map((point) =>\n applyToPoint(this.transform, [point.x, point.y]),\n )\n\n // Draw the filled polygon\n ctx.beginPath()\n ctx.moveTo(transformedPoints[0][0], transformedPoints[0][1])\n for (let i = 1; i < transformedPoints.length; i++) {\n ctx.lineTo(transformedPoints[i][0], transformedPoints[i][1])\n }\n ctx.closePath()\n ctx.fill()\n\n // Draw the outline\n const lineWidth = scaleOnly(this.transform, this.aperture.size)\n ctx.lineWidth = lineWidth\n ctx.stroke()\n }\n\n /* NOTE: This is not gerber compatible */\n debugText(text: string, x: number, y: number) {\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n ctx.font = `10px sans-serif`\n ctx.fillText(text, x$, y$)\n }\n\n getLayerCtx() {\n const ctx = this.ctxLayerMap[this.aperture.layer]\n if (!ctx) {\n throw new Error(`No context for layer \"${this.aperture.layer}\"`)\n }\n return ctx\n }\n\n /**\n * Iterate over each canvas and set the z index based on the layer order, but\n * always render the foreground layer on top.\n *\n * Also: Set the opacity of every non-foreground layer to 0.5\n */\n orderAndFadeLayers() {\n const { canvasLayerMap, foregroundLayer } = this\n const opaqueLayers = new Set([foregroundLayer, \"drill\", \"other\", \"board\"])\n const order = [\n \"drill\",\n \"board\",\n foregroundLayer,\n ...DEFAULT_DRAW_ORDER.filter((l) => l !== foregroundLayer),\n ]\n order.forEach((layer, i) => {\n const canvas = canvasLayerMap[layer]\n if (!canvas) return\n canvas.style.zIndex = `${100 - i}`\n canvas.style.opacity = opaqueLayers.has(layer) ? \"1\" : \"0.5\"\n })\n }\n\n applyAperture() {\n const { transform, aperture } = this\n let { size, mode, color, fontSize, layer } = aperture\n if (!(layer in this.ctxLayerMap)) this.aperture.layer = \"other\"\n\n const ctx = this.getLayerCtx()\n if (!ctx) {\n throw new Error(`No context for layer \"${this.foregroundLayer}\"`)\n }\n if (!color) color = \"undefined\"\n ctx.lineWidth = scaleOnly(transform, size)\n ctx.lineCap = \"round\"\n if (mode === \"add\") {\n let colorString =\n color?.[0] === \"#\" || color?.startsWith(\"rgb\")\n ? color\n : (LAYER_NAME_TO_COLOR as any)[color?.toLowerCase()]\n ? (LAYER_NAME_TO_COLOR as any)[color?.toLowerCase()]\n : null\n if (colorString === null) {\n console.warn(`Color mapping for \"${color}\" not found`)\n colorString = \"white\"\n }\n ctx.fillStyle = colorString\n ctx.strokeStyle = colorString\n } else {\n ctx.globalCompositeOperation = \"destination-out\"\n ctx.fillStyle = \"rgba(0,0,0,1)\"\n ctx.strokeStyle = \"rgba(0,0,0,1)\"\n }\n ctx.font = `${scaleOnly(inverse(transform), fontSize)}px sans-serif`\n }\n\n moveTo(x: number, y: number) {\n this.lastPoint = { x, y }\n }\n lineTo(x: number, y: number) {\n const [x$, y$] = applyToPoint(this.transform, [x, y])\n const { size, shape, mode } = this.aperture\n const size$ = scaleOnly(this.transform, size)\n let { lastPoint } = this\n const lastPoint$ = applyToPoint(this.transform, lastPoint)\n\n this.applyAperture()\n const ctx = this.getLayerCtx()\n\n if (shape === \"square\")\n ctx.fillRect(\n lastPoint$.x - size$ / 2,\n lastPoint$.y - size$ / 2,\n size$,\n size$,\n )\n ctx.beginPath()\n ctx.moveTo(lastPoint$.x, lastPoint$.y)\n ctx.lineTo(x$, y$)\n\n ctx.stroke()\n ctx.closePath()\n\n if (shape === \"square\")\n ctx.fillRect(x$ - size$ / 2, y$ - size$ / 2, size$, size$)\n\n this.lastPoint = { x, y }\n }\n}\n","// Mix of Eagle Dark for schematics and KiCAD 2020 for PCBs\n// https://github.com/pointhi/kicad-color-schemes/blob/master/eagle-dark/eagle-dark.jsonO\n// https://github.com/pointhi/kicad-color-schemes/blob/master/kicad-2020/kicad_2020.json\nexport default {\n \"3d_viewer\": {\n background_bottom: \"rgb(102, 102, 128)\",\n background_top: \"rgb(204, 204, 230)\",\n board: \"rgb(51, 43, 23)\",\n copper: \"rgb(179, 156, 0)\",\n silkscreen_bottom: \"rgb(230, 230, 230)\",\n silkscreen_top: \"rgb(230, 230, 230)\",\n soldermask: \"rgb(20, 51, 36)\",\n solderpaste: \"rgb(128, 128, 128)\",\n },\n board: {\n anchor: \"rgb(255, 38, 226)\",\n aux_items: \"rgb(255, 255, 255)\",\n b_adhes: \"rgb(0, 0, 132)\",\n b_crtyd: \"rgb(255, 38, 226)\",\n b_fab: \"rgb(88, 93, 132)\",\n b_mask: \"rgba(2, 255, 238, 0.400)\",\n b_paste: \"rgb(0, 194, 194)\",\n b_silks: \"rgb(232, 178, 167)\",\n background: \"rgb(0, 16, 35)\",\n cmts_user: \"rgb(89, 148, 220)\",\n copper: {\n b: \"rgb(77, 127, 196)\",\n f: \"rgb(200, 52, 52)\",\n in1: \"rgb(127, 200, 127)\",\n in10: \"rgb(237, 124, 51)\",\n in11: \"rgb(91, 195, 235)\",\n in12: \"rgb(247, 111, 142)\",\n in13: \"rgb(167, 165, 198)\",\n in14: \"rgb(40, 204, 217)\",\n in15: \"rgb(232, 178, 167)\",\n in16: \"rgb(242, 237, 161)\",\n in17: \"rgb(237, 124, 51)\",\n in18: \"rgb(91, 195, 235)\",\n in19: \"rgb(247, 111, 142)\",\n in2: \"rgb(206, 125, 44)\",\n in20: \"rgb(167, 165, 198)\",\n in21: \"rgb(40, 204, 217)\",\n in22: \"rgb(232, 178, 167)\",\n in23: \"rgb(242, 237, 161)\",\n in24: \"rgb(237, 124, 51)\",\n in25: \"rgb(91, 195, 235)\",\n in26: \"rgb(247, 111, 142)\",\n in27: \"rgb(167, 165, 198)\",\n in28: \"rgb(40, 204, 217)\",\n in29: \"rgb(232, 178, 167)\",\n in3: \"rgb(79, 203, 203)\",\n in30: \"rgb(242, 237, 161)\",\n in4: \"rgb(219, 98, 139)\",\n in5: \"rgb(167, 165, 198)\",\n in6: \"rgb(40, 204, 217)\",\n in7: \"rgb(232, 178, 167)\",\n in8: \"rgb(242, 237, 161)\",\n in9: \"rgb(141, 203, 129)\",\n },\n cursor: \"rgb(255, 255, 255)\",\n drc: \"rgb(194, 194, 194)\",\n drc_error: \"rgba(215, 91, 107, 0.800)\",\n drc_exclusion: \"rgb(255, 255, 255)\",\n drc_warning: \"rgba(255, 208, 66, 0.902)\",\n dwgs_user: \"rgb(194, 194, 194)\",\n eco1_user: \"rgb(180, 219, 210)\",\n eco2_user: \"rgb(216, 200, 82)\",\n edge_cuts: \"rgb(208, 210, 205)\",\n f_adhes: \"rgb(132, 0, 132)\",\n f_crtyd: \"rgb(255, 0, 245)\",\n f_fab: \"rgb(175, 175, 175)\",\n f_mask: \"rgba(216, 100, 255, 0.400)\",\n f_paste: \"rgba(180, 160, 154, 0.902)\",\n f_silks: \"rgb(242, 237, 161)\",\n footprint_text_back: \"rgb(0, 0, 132)\",\n footprint_text_front: \"rgb(194, 194, 194)\",\n footprint_text_invisible: \"rgb(132, 132, 132)\",\n grid: \"rgb(132, 132, 132)\",\n grid_axes: \"rgb(194, 194, 194)\",\n margin: \"rgb(255, 38, 226)\",\n microvia: \"rgb(0, 132, 132)\",\n no_connect: \"rgb(0, 0, 132)\",\n pad_back: \"rgb(77, 127, 196)\",\n pad_front: \"rgb(200, 52, 52)\",\n pad_plated_hole: \"rgb(194, 194, 0)\",\n pad_through_hole: \"rgb(227, 183, 46)\",\n plated_hole: \"rgb(26, 196, 210)\",\n ratsnest: \"rgba(245, 255, 213, 0.702)\",\n select_overlay: \"rgb(4, 255, 67)\",\n through_via: \"rgb(236, 236, 236)\",\n user_1: \"rgb(194, 194, 194)\",\n user_2: \"rgb(89, 148, 220)\",\n user_3: \"rgb(180, 219, 210)\",\n user_4: \"rgb(216, 200, 82)\",\n user_5: \"rgb(194, 194, 194)\",\n user_6: \"rgb(89, 148, 220)\",\n user_7: \"rgb(180, 219, 210)\",\n user_8: \"rgb(216, 200, 82)\",\n user_9: \"rgb(232, 178, 167)\",\n via_blind_buried: \"rgb(187, 151, 38)\",\n via_hole: \"rgb(227, 183, 46)\",\n via_micro: \"rgb(0, 132, 132)\",\n via_through: \"rgb(236, 236, 236)\",\n worksheet: \"rgb(200, 114, 171)\",\n },\n gerbview: {\n axes: \"rgb(0, 0, 132)\",\n background: \"rgb(0, 0, 0)\",\n dcodes: \"rgb(255, 255, 255)\",\n grid: \"rgb(132, 132, 132)\",\n layers: [\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n ],\n negative_objects: \"rgb(132, 132, 132)\",\n worksheet: \"rgb(0, 0, 132)\",\n },\n palette: [\n \"rgb(132, 0, 0)\",\n \"rgb(194, 194, 0)\",\n \"rgb(194, 0, 194)\",\n \"rgb(194, 0, 0)\",\n \"rgb(0, 132, 132)\",\n \"rgb(0, 132, 0)\",\n \"rgb(0, 0, 132)\",\n \"rgb(132, 132, 132)\",\n \"rgb(132, 0, 132)\",\n \"rgb(194, 194, 194)\",\n \"rgb(132, 0, 132)\",\n \"rgb(132, 0, 0)\",\n \"rgb(132, 132, 0)\",\n \"rgb(194, 194, 194)\",\n \"rgb(0, 0, 132)\",\n \"rgb(0, 132, 0)\",\n ],\n schematic: {\n anchor: \"rgb(0, 0, 255)\",\n aux_items: \"rgb(0, 0, 0)\",\n background: \"rgb(33, 33, 33)\",\n brightened: \"rgb(204, 204, 204)\",\n bus: \"rgb(0, 96, 192)\",\n bus_junction: \"rgb(0, 96, 192)\",\n component_body: \"rgb(44, 44, 44)\",\n component_outline: \"rgb(192, 0, 0)\",\n cursor: \"rgb(224, 224, 224)\",\n erc_error: \"rgba(192, 48, 48, 0.800)\",\n erc_warning: \"rgba(192, 140, 0, 0.800)\",\n fields: \"rgb(128, 0, 160)\",\n grid: \"rgb(60, 60, 60)\",\n grid_axes: \"rgb(60, 60, 60)\",\n hidden: \"rgb(194, 194, 194)\",\n junction: \"rgb(0, 160, 0)\",\n label_global: \"rgb(0, 160, 224)\",\n label_hier: \"rgb(160, 160, 0)\",\n label_local: \"rgb(192, 192, 192)\",\n net_name: \"rgb(224, 224, 224)\",\n no_connect: \"rgb(97, 43, 224)\",\n note: \"rgb(192, 192, 0)\",\n override_item_colors: false,\n pin: \"rgb(192, 0, 0)\",\n pin_name: \"rgb(192, 192, 192)\",\n pin_number: \"rgb(192, 0, 0)\",\n reference: \"rgb(192, 192, 192)\",\n shadow: \"rgba(102, 179, 255, 0.800)\",\n sheet: \"rgb(128, 0, 160)\",\n sheet_background: \"rgba(255, 255, 255, 0.000)\",\n sheet_fields: \"rgb(160, 160, 0)\",\n sheet_filename: \"rgb(160, 160, 0)\",\n sheet_label: \"rgb(160, 160, 0)\",\n sheet_name: \"rgb(0, 160, 204)\",\n value: \"rgb(192, 192, 192)\",\n wire: \"rgb(0, 160, 0)\",\n worksheet: \"rgb(192, 0, 0)\",\n },\n}\n","import { Matrix } from \"transformation-matrix\"\n\nexport const scaleOnly = (mat: Matrix, value: number = 1) => {\n if (Math.abs(mat.a) !== Math.abs(mat.d))\n throw new Error(\"Cannot scale non-uniformly\")\n return value * Math.abs(mat.a)\n}\n","/*\n * Maps letters/numbers to an SVG path\n * You must normalize the path prior to putting it here! That means it needs to\n * be entirely in the bounds [0,1] for both x and y.\n * You can use this svg editor tool to add characters: https://yqnn.github.io/svg-path-editor/\n */\nexport const svgAlphabet = {\n \"0\": \"M0.4544564813877358 0L0.2723441540828736 0.03592830447352719L0.1086847233315459 0.14528754990019965L0.020630545837255005 0.3040632652221331L0 0.5395277421960205L0.049259221760993496 0.7369487828466779L0.18080513776237842 0.9005494166306564L0.37036887043974215 0.9872116270037247L0.5864663759301132 1L0.8148695622827444 0.9332890276148733L0.9326583645506394 0.8113052246023419L1 0.4031281830668562L0.833288960385582 0.09886798567812842L0.6801767918233781 0.02483708485091681L0.4544564813877358 0\",\n \"1\": \"M 0.198 0.272 L 0.537 0 L 0.54 1\",\n \"2\": \"M0.069593147751606 0.19461498231706575L0.1039380353319058 0.1224291500164194L0.20543361884368308 0.05510832064153169L0.3717712794432549 0.009452970962689482L0.4785344452623127 0L0.663238590738758 0.008714098643339864L0.8017933618843684 0.04769189395915288L0.8775637379550322 0.10746757678258442L0.9047778372591005 0.17693069668193287L0.9029710920770878 0.2231347105796246L0.8704496788008566 0.30047744598157516L0.7292906538577354 0.4508486051631194L0.3737955032119913 0.7369006417749693L0 1L1 1\",\n \"3\": \"M0.03917438899874637 0.19855364635107545L0.15510940508963084 0.06745632622133718L0.37598645522339846 0L0.8486391893813088 0.0652271323161611L0.9782182415054349 0.21747394183735683L0.9213133780517754 0.3547560290117714L0.6504271515903481 0.4543436297681271L0.22975249764129613 0.48476611625264143L0.7659038682744629 0.5411919558122493L0.9258712987734741 0.6203185665660985L1 0.7458360609169667L0.8938813281118737 0.9059190913045964L0.6166890258875837 1L0.261528440153542 0.9874861530507921L0 0.8837289530851273\",\n \"4\": \"M0.7328897338403042 0L0 0.6684672518568535L1 0.6684672518568535M0.7243346007604563 0.4530722484807562L0.7243346007604563 1\",\n \"5\": \"M 0 0 L 0 0.4973 L 0.4262 0.4319 L 0.7305 0.4565 L 0.8516 0.5009 L 0.9357 0.5639 L 1 0.7356 L 0.9696 0.8248 L 0.8898 0.895 L 0.733 0.9602 L 0.5518 0.9945 L 0.3814 1 L 0.2379 0.9821 L 0.1219 0.947 L 0 0.8748 M 0 0 L 1 0\",\n \"6\": \"M0.6964601700926856 0L0.3639239026215478 0.0743562375769351L0.1415931962925719 0.21735490179786915L0.009977939399608712 0.46336322325406004L0.00029622007592593224 0.7083131475173043L0.09408885043224748 0.8746809149767036L0.3379247445101846 0.9876686500961888L0.7109203869569624 1L0.9260852957913362 0.9103558029693921L1 0.7716571969091733L0.9824294723385016 0.6390635485705886L0.7446504992867332 0.4733643097729175L0.31028858071607296 0.47578021640899115L0.1208702146816024 0.5481452483973847L0 0.6616669755788906\",\n \"7\": \"M0 0L1 0L0.9246479649697582 0.030539772727272752L0.8850302419354837 0.05075757575757579L0.7922946068548385 0.11079545454545457L0.7419268208165322 0.15213068181818185L0.6907258064516127 0.20202020202020204L0.6400666267641127 0.26122159090909086L0.5913243447580644 0.33049242424242414L0.5458740234374998 0.4105902777777778L0.5050907258064514 0.5022727272727272L0.4703495148689514 0.6062973484848484L0.43257456133442534 0.787133049242424L0.41612903225806447 1\",\n \"8\": \"M0.5143001078924863 0L0.16007477667923162 0.10731570786949331L0.14924628550868277 0.3146018498698755L0.2939585848842112 0.41617921794558677L0.8648302624811545 0.5385163833653317L1 0.7775820770511038L0.8180842915260376 0.9505845566922285L0.41968938540525413 1L0.08062381919779889 0.882831681184498L0 0.6936376947135333L0.17150171673893433 0.5188652309607817L0.6529263782780712 0.4242818653203618L0.8650205888491803 0.29644027376796367L0.8702067371119496 0.09910067291661573L0.5143001078924863 0\",\n \"9\": \"M1 0.25379591792994305L0.9514789771111742 0.11679361536614272L0.8702482473521467 0.05711741614054847L0.7327445265851579 0.015213872471965633L0.525248180711544 0L0.3292056884418538 0.012928195113745608L0.15997632037247655 0.058762870026191856L0.05266940041228321 0.12882439350476L0 0.2562067822770946L0.11316462894512366 0.4121335905917837L0.2403060136479954 0.4603365890068938L0.4097241967586011 0.4745978388276783L0.8642414300184816 0.420815170259988L0.9732054796346318 0.34537434075898393L1 0.25379591792994305M0.9647426784191072 0.35488595400360495L0.4756895081034974 1\",\n A: \"M0 1L0.4808333333333333 0L1 1M0.24250000000000002 0.6099439775910365L0.7341666666666666 0.6099439775910365\",\n B: \"M0 1L0 0.0117369978777208L0.30665717153513444 0L0.5874522807082946 0.03451403469442413L0.7766202217193218 0.15033936404895643L0.7471969743588041 0.31967962568332936L0.5246013359741988 0.4102978954282461L0.04378745314885416 0.44918617613783574L0.5112949594180156 0.469692928091109L0.8540266515643348 0.5552749498651879L1 0.6868463175009967L0.9880091196159324 0.8570018204672155L0.922301719975498 0.9321708046604659L0.7584266951758925 0.9932594737131338L0 1\",\n C: \"M1 0.23038928858890784L0.9328355511865092 0.12426412616785204L0.8096380839483327 0.04912601676267708L0.5763225801788256 0L0.4039037709527492 0.015028068281399815L0.2519579390951737 0.06533979308999706L0.10359458463139784 0.18146243506591617L0 0.4862728453971315L0.08129580872733055 0.792689266886982L0.20257034847159672 0.9160822255736587L0.3286572892798542 0.9738230826074175L0.5742878414421707 1L0.7883510303801312 0.9665431511195721L0.946851033994232 0.8689071500976585L1 0.7311049027121912\",\n D: \"M0 1L0.015604366822624637 0.020770988281483303L0.22564758265176144 0L0.3865476147957666 0.0024153386496795644L0.6479126635475078 0.051745644338731314L0.841191887805517 0.15827717679529366L0.9517008345536152 0.30172260586872185L0.9957536578687336 0.4504541551987709L1 0.5624359222498485L0.9798483279164735 0.6584121775234548L0.9386273319285215 0.7395945263504481L0.806292129480815 0.8624239259880274L0.6296239151398265 0.9406169638094516L0.3397492767598845 0.9954164354263132L0 1\",\n E: \"M0 0L0 1M0 0L1 0M0 0.5L0.7 0.5M0 1L1 1\",\n F: \"M0 0L0 1M0.011363636363636364 0.006802721088435374L1 0.006802721088435374M0.011363636363636364 0.4965986394557823L0.8409090909090909 0.4965986394557823\",\n G: \"M0.902666857540557 0.03860785012651126L0.6504261864675637 0L0.3838947267237336 0.015442305268228053L0.21293332876776194 0.07706794377239819L0.07799659974941617 0.1994951236187481L0 0.46380381528937314L0.04159964421546915 0.7502491408002389L0.13176692977834842 0.8535497868383203L0.2709176262273927 0.936767572377719L0.4386472596876406 0.9891638569283179L0.6145513562841309 1L0.7782254421419019 0.9585373611026471L0.9092650433859927 0.8540372997461425L1 0.5556012645283437L0.5583959277303046 0.55491741080559\",\n H: \"M0 0L0 1M0 0.4788732394366197L0.989010989010989 0.4788732394366197M1 0L1 1\",\n I: \"M0.5 0L0.5 1\",\n J: \"M0.9976457238788704 0L1 0.7396412315872798L0.9773931362096968 0.8322033314977973L0.9345115952458736 0.882296255506608L0.8743862896259549 0.9221331222466961L0.8024024079884948 0.9526431718061675L0.6443996712151668 0.9893997797356828L0.5035848940343224 1L0.3127211130319937 0.9877004749449337L0.17201910858386513 0.9539509911894274L0.10357419806379677 0.9212555066079295L0.053656568662899015 0.8816079295154184L0.020759483663648916 0.8360407488986785L0.003376206348523566 0.7855864537444934L0 0.7312775330396476\",\n K: \"M0 0L0 1M0.8787878787878788 0.06666666666666667L0 0.6148148148148148M0.3333333333333333 0.45925925925925926L1 0.9777777777777777\",\n L: \"M0 0L0 1L1 1\",\n M: \"M0 1L0 0L0.5 0.6512L1 0L1 1\",\n N: \"M0 1L0 0L1 1L0.9803729146221786 0\",\n O: \"M0.4718499217948183 1L0.2896765846490613 0.9606979309189402L0.12315162147934663 0.8411184486080473L0 0.4352399966492615L0.11730398524516283 0.13145645436014852L0.2612197451988078 0.04493357858878059L0.5104071592772554 0L0.7450113425917159 0.05393013710105273L0.882367950645524 0.15242300282020502L1 0.5224527406249126L0.9414597290654386 0.7560662329321755L0.8371289514446183 0.8910800547287298L0.6518259868433511 0.9830452628933628L0.4718499217948183 1\",\n P: \"M0 1L0 0.018871774228013626L0.29609603495819875 0L0.5609840637427541 0.011794858892508529L0.7332142696692472 0.04353904702296349L0.8102258645858864 0.0691965055027166L0.9330504315465442 0.14445061754775845L0.9876391714147118 0.22527816445836535L1 0.3434414070631638L0.9510549958116356 0.41772808046663146L0.8746646891596713 0.45879131862541683L0.7528523813396283 0.49171525113425024L0.5766919939969619 0.5153253033973054L0.33725744877712827 0.5284469008187558L0.025622667325582785 0.529905468802775\",\n Q: \"M0.4618887943546369 0.9755918167206952L0.28356128136544534 0.9372490397450218L0.12055179272160406 0.8205882753548176L0 0.4246165790405623L0.1148276047430244 0.12824784112887844L0.25570518844754375 0.043836831567190586L0.49963205786237674 0L0.7292835601228574 0.0526138004304122L0.8637404608452104 0.14870263423138746L0.9788892040030622 0.5097006183769648L0.9215847647858059 0.7376120297474734L0.8194564929275405 0.869330409436378L0.6380654214095985 0.9590509139448092L0.4618887943546369 0.9755918167206952M0.5824181120212351 0.6861805006946525L1 1\",\n R: \"M0 0.9928375167236815L0 0.02590227442068435L0.3611517274211098 0L0.6146286724700761 0.008660554424468435L0.7675462459194776 0.035269459580494614L0.831839975516866 0.056961676692569484L0.8847592491838954 0.08519560521497332L0.9238557535364527 0.120683646438422L0.9583303225312839 0.21691797435320384L0.955092470586235 0.3022616904894429L0.9198097669001631 0.3640573439322699L0.8564862239866702 0.40639258627024005L0.7691258543593579 0.43335506909190874L0.601775027203482 0.4539166070813109L0.023939064200217658 0.46997623755243123M0.5038084874863982 0.5108023922274467L1 1\",\n S: \"M0.8886929689221953 0.15146982162688968L0.7276173683050475 0.013780286031594946L0.34582323121005076 0L0.1318235250900008 0.09920162734298861L0.0444543935052531 0.2811287071349243L0.08064065829108809 0.3709571405906485L0.21603115127470426 0.4485505768228281L0.7525409135992945 0.5111160926769565L0.9330263665417677 0.5850732219351329L1 0.7129938124702524L0.9117772389978691 0.9130572743138187L0.6423187128058188 1L0.29586019579751677 0.9935291584506244L0.10638454191462794 0.9229845198431584L0 0.7570771288048773\",\n T: \"M0 0L1 0M0.5148514851485149 0L0.5148514851485149 1\",\n U: \"M0 0L0.0023103778751369115 0.5467447428390111L0.01823032542100219 0.6954785891481812L0.05895528135268338 0.8056480226151669L0.13703402031421133 0.8894445726483398L0.23918400876232196 0.9448524533417946L0.3917887458926616 0.9848674531975652L0.584341627875137 1L0.7194816196604602 0.9848501456716763L0.8303268115073934 0.9449411544119768L0.8966613970084885 0.898186315516197L0.9251437568455642 0.867453197565408L0.9687114937020809 0.7890904895145239L0.9890470974808324 0.6852857184065537L1 0.0014769088758762145\",\n V: \"M0 0L0.5348837209302325 1L1 0\",\n W: \"M0 0L0.23300090661831369 0.9873417721518988L0.49954669084315495 0.30081906180193585L0.7851314596554849 1L1 0.0215934475055845\",\n X: \"M0 0L0.9893617021276596 1M1 0L0.010638297872340425 1\",\n Y: \"M0 0L0.4860515021459227 0.44712562100780695M1 0.0014194464158977947L0.48927038626609437 0.44996451383960256L0.5075107296137339 1\",\n Z: \"M0 0L1 0L0 1L1 1\",\n \".\": \"M 0.49 1 L 0.41 1\",\n \"*\": \"M 0.5 0.25 L 0.8 0.25 M 0.5 0.25 L 0.5927 0.4402 M 0.5 0.25 L 0.2573 0.3676 M 0.5 0.25 L 0.2573 0.1324 M 0.5 0.25 L 0.599 0.055\",\n \"(\": \"M0.75 0L0.25 0.5L0.25 0.5L0.75 1\",\n \")\": \"M0.25 0L0.75 0.5L0.75 0.5L0.25 1\",\n \"-\": \"M0 0.5L1 0.5\",\n \"+\": \"M 0 0.5 L 1 0.5 M 0.5 0.125 L 0.5 0.875\",\n \"=\": \"M0 0.25L1 0.25M0 0.75L1 0.75\",\n _: \"M0 1 L1 1\",\n \"[\": \"M0.75 0L0.25 0L0.25 1L0.75 1\",\n \"]\": \"M0.25 0L0.75 0L0.75 1L0.25 1\",\n \"<\": \"M0.75 0L0.25 0.5L0.25 0.5L0.75 1\",\n \">\": \"M0.25 0L0.75 0.5L0.75 0.5L0.25 1\",\n \"'\": \"M 0.5 0 L 0.5 0.5\",\n '\"': \"M 0.25 0 L 0.25 0.5 M 0.75 0 L 0.75 0.5\",\n}\n\nexport const lineAlphabet: Record<\n string,\n Array<{ x1: number; y1: number; x2: number; y2: number }>\n> = {}\nfor (const letter in svgAlphabet) {\n lineAlphabet[letter] = []\n const segs = (svgAlphabet as any)[letter]\n .split(\"M\")\n .slice(1)\n .map((seg: any) =>\n seg.split(\"L\").map((pr: any) => pr.trim().split(\" \").map(parseFloat)),\n )\n for (const seg of segs) {\n for (let i = 0; i < seg.length - 1; i++) {\n // We also flip the y axis to make it cartesian here\n lineAlphabet[letter].push({\n x1: seg[i][0],\n y1: 1 - seg[i][1],\n x2: seg[i + 1][0],\n y2: 1 - seg[i + 1][1],\n })\n }\n }\n}\n","import { lineAlphabet } from \"../assets/alphabet\"\nimport { Line, Text } from \"./types\"\n\nexport const LETTER_HEIGHT_TO_WIDTH_RATIO = 0.6\nexport const LETTER_HEIGHT_TO_SPACE_RATIO = 0.2\n\nexport const getTextWidth = (text: Text): number => {\n return (\n text.text.length * text.size * LETTER_HEIGHT_TO_WIDTH_RATIO +\n (text.text.length - 1) * text.size * LETTER_HEIGHT_TO_SPACE_RATIO\n )\n}\n\nexport const convertTextToLines = (text: Text): Line[] => {\n const strokeWidth = text.size / 8\n const letterWidth = text.size * LETTER_HEIGHT_TO_WIDTH_RATIO\n const letterSpace = text.size * LETTER_HEIGHT_TO_SPACE_RATIO\n\n const lines: Line[] = []\n for (let letterIndex = 0; letterIndex < text.text.length; letterIndex++) {\n const letter = text.text[letterIndex]\n const letterLines = lineAlphabet[letter.toUpperCase()]\n if (!letterLines) continue\n for (const { x1, y1, x2, y2 } of letterLines) {\n lines.push({\n pcb_drawing_type: \"line\",\n x1:\n text.x + (letterWidth + letterSpace) * letterIndex + letterWidth * x1,\n y1: text.y + text.size * y1,\n x2:\n text.x + (letterWidth + letterSpace) * letterIndex + letterWidth * x2,\n y2: text.y + text.size * y2,\n width: strokeWidth,\n layer: text.layer,\n unit: text.unit,\n })\n }\n }\n\n return lines\n}\n","import { Drawer, LAYER_NAME_TO_COLOR } from \"./Drawer\"\nimport { convertTextToLines, getTextWidth } from \"./convert-text-to-lines\"\nimport {\n Circle,\n Line,\n Oval,\n Pill,\n Polygon,\n Primitive,\n Rect,\n Text,\n} from \"./types\"\nimport color from \"color\"\n\nfunction getColor(primitive: Primitive) {\n if (primitive.is_mouse_over || primitive.is_in_highlighted_net) {\n return color(\n LAYER_NAME_TO_COLOR[primitive.layer as keyof typeof LAYER_NAME_TO_COLOR],\n )\n .lighten(0.5)\n .rgb()\n .toString()\n }\n return LAYER_NAME_TO_COLOR[\n primitive.layer as keyof typeof LAYER_NAME_TO_COLOR\n ]\n}\n\nexport const drawLine = (drawer: Drawer, line: Line) => {\n drawer.equip({\n size: line.zoomIndependent ? line.width / drawer.transform.a : line.width,\n shape: line.squareCap ? \"square\" : \"circle\",\n color: getColor(line),\n layer: line.layer,\n })\n drawer.moveTo(line.x1, line.y1)\n drawer.lineTo(line.x2, line.y2)\n}\n\nexport const drawText = (drawer: Drawer, text: Text) => {\n drawer.equip({\n fontSize: text.size,\n color: text.layer,\n })\n\n let alignOffset = { x: 0, y: 0 }\n const textWidth = getTextWidth(text)\n const textHeight = text.size\n if (text.align === \"top_left\") {\n alignOffset.y = -textHeight\n } else if (text.align === \"bottom_right\") {\n alignOffset.x = -textWidth\n } else if (text.align === \"top_right\") {\n alignOffset.x = -textWidth\n alignOffset.y = -textHeight\n } else if (text.align === \"center\") {\n alignOffset.x = -textWidth / 2\n alignOffset.y = -textHeight / 2\n }\n\n // Non-gerber compatible\n // drawer.text(text.text, text.x, text.y)\n\n text.x ??= 0\n text.y ??= 0\n const text_lines = convertTextToLines({\n ...text,\n x: text.x + alignOffset.x,\n y: text.y + alignOffset.y,\n })\n for (const line of text_lines) {\n drawLine(drawer, line)\n }\n}\n\nexport const drawRect = (drawer: Drawer, rect: Rect) => {\n drawer.equip({\n color: getColor(rect),\n layer: rect.layer,\n })\n drawer.rect(rect.x, rect.y, rect.w, rect.h, rect.mesh_fill)\n}\n\nexport const drawCircle = (drawer: Drawer, circle: Circle) => {\n drawer.equip({\n color: getColor(circle),\n layer: circle.layer,\n })\n drawer.circle(circle.x, circle.y, circle.r, circle.mesh_fill)\n}\n\nexport const drawOval = (drawer: Drawer, oval: Oval) => {\n drawer.equip({\n color: getColor(oval),\n layer: oval.layer,\n })\n drawer.oval(oval.x, oval.y, oval.rX, oval.rY)\n}\n\nexport const drawPill = (drawer: Drawer, pill: Pill) => {\n drawer.equip({\n color: getColor(pill),\n layer: pill.layer,\n })\n drawer.pill(pill.x, pill.y, pill.w, pill.h)\n}\n\nexport const drawPolygon = (drawer: Drawer, polygon: Polygon) => {\n drawer.equip({\n color: getColor(polygon),\n layer: polygon.layer,\n })\n drawer.polygon(polygon.points)\n}\n\nexport const drawPrimitive = (drawer: Drawer, primitive: Primitive) => {\n switch (primitive.pcb_drawing_type) {\n case \"line\":\n return drawLine(drawer, primitive)\n case \"text\":\n return drawText(drawer, primitive)\n case \"rect\":\n return drawRect(drawer, primitive)\n case \"circle\":\n return drawCircle(drawer, primitive)\n case \"oval\":\n return drawOval(drawer, primitive)\n case \"pill\":\n return drawPill(drawer, primitive)\n case \"polygon\":\n return drawPolygon(drawer, primitive)\n }\n}\n\nexport const drawPrimitives = (drawer: Drawer, primitives: Primitive[]) => {\n // sort primitives by draw order\n primitives.sort((a, b) => {\n const layerOrder = [\"bottom\", \"top\", \"drill\"]\n return layerOrder.indexOf(a.layer) - layerOrder.indexOf(b.layer)\n })\n primitives.forEach((primitive) => drawPrimitive(drawer, primitive))\n}\n","import {\n createStore as createZustandStore,\n useStore as useZustandStore,\n UseBoundStore,\n} from \"zustand\"\nimport { StoreContext } from \"./components/ContextProviders\"\nimport type { LayerRef } from \"circuit-json\"\nimport { useContext } from \"react\"\n\nexport interface State {\n selected_layer: LayerRef\n\n pcb_viewer_id: string\n\n in_edit_mode: boolean\n in_move_footprint_mode: boolean\n in_draw_trace_mode: boolean\n\n is_moving_component: boolean\n is_drawing_trace: boolean\n\n is_showing_rats_nest: boolean\n\n selectLayer: (layer: LayerRef) => void\n setEditMode: (mode: \"off\" | \"move_footprint\" | \"draw_trace\") => void\n setIsMovingComponent: (is_moving: boolean) => void\n setIsDrawingTrace: (is_drawing: boolean) => void\n setIsShowingRatsNest: (is_showing: boolean) => void\n}\n\nexport type StateProps = {\n [key in keyof State]: State[key] extends boolean ? boolean : never\n}\n\nexport const createStore = (initialState: Partial<StateProps> = {}) =>\n createZustandStore<State>(\n (set) =>\n ({\n selected_layer: \"top\",\n\n pcb_viewer_id: `pcb_viewer_${Math.random().toString().slice(2, 10)}`,\n\n in_edit_mode: false,\n in_move_footprint_mode: false,\n in_draw_trace_mode: false,\n\n is_moving_component: false,\n is_drawing_trace: false,\n\n is_showing_rats_nest: false,\n ...initialState,\n\n selectLayer: (layer) => set({ selected_layer: layer }),\n setEditMode: (mode) =>\n set({\n in_edit_mode: mode !== \"off\",\n in_move_footprint_mode: mode === \"move_footprint\",\n in_draw_trace_mode: mode === \"draw_trace\",\n is_moving_component: false,\n is_drawing_trace: false,\n }),\n setIsShowingRatsNest: (is_showing) =>\n set({ is_showing_rats_nest: is_showing }),\n setIsMovingComponent: (is_moving) =>\n set({ is_moving_component: is_moving }),\n setIsDrawingTrace: (is_drawing) =>\n set({ is_drawing_trace: is_drawing }),\n }) as const,\n )\n\nexport const useGlobalStore = <T = State>(s?: (state: State) => T): T => {\n const store = useContext(StoreContext)\n\n return useZustandStore(store as any, s as any)\n}\n","import { useMemo } from \"react\"\nimport { createContext, useContext } from \"react\"\nimport { createStore, type StateProps } from \"../global-store\"\n\nexport const StoreContext = createContext(null)\n\nexport const ContextProviders = ({\n children,\n initialState,\n}: { children?: any; initialState?: Partial<StateProps> }) => {\n const store = useMemo(() => createStore(initialState), [])\n\n return (\n <StoreContext.Provider value={store as any}>\n {children}\n </StoreContext.Provider>\n )\n}\n","import convertUnits from \"convert-units\"\n\nconst si_prefix_multiplier = {\n tera: 10e12,\n T: 10e12,\n giga: 10e9,\n G: 10e9,\n mega: 10e6,\n M: 10e6,\n kilo: 10e3,\n k: 10e3,\n deci: 10e-1,\n d: 10e-1,\n centi: 10e-2,\n c: 10e-2,\n milli: 10e-3,\n m: 10e-3,\n micro: 10e-6,\n u: 10e-6,\n µ: 10e-6,\n nano: 10e-9,\n n: 10e-9,\n pico: 10e-12,\n p: 10e-12,\n}\nconst si_prefixes = Object.keys(si_prefix_multiplier)\n\nconst target_conversion = {\n mass: \"g\",\n length: \"mm\",\n time: \"ms\",\n volume: \"ml\",\n angle: \"deg\",\n}\n\nfunction getSiPrefixMultiplierFromUnit(v: string): number {\n for (const prefix of si_prefixes) {\n if (v.startsWith(prefix)) {\n return si_prefix_multiplier[prefix as keyof typeof si_prefix_multiplier]\n }\n }\n return 1\n}\n\nexport const parseAndConvertSiUnit = <\n T extends\n | string\n | number\n | undefined\n | { x: string | number; y: string | number },\n>(\n v: T,\n): {\n unit: string | null\n value: T extends { x: string | number; y: string | number }\n ? null | { x: number; y: number }\n : null | number\n} => {\n if (typeof v === \"undefined\") return { unit: null, value: null }\n if (typeof v === \"string\" && v.match(/^[\\d\\.]+$/))\n return { value: parseFloat(v) as any, unit: null }\n if (typeof v === \"number\") return { value: v as any, unit: null }\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\n return {\n unit: parseAndConvertSiUnit(v.x).unit,\n value: {\n x: parseAndConvertSiUnit(v.x as any).value as number,\n y: parseAndConvertSiUnit(v.y as any).value as number,\n } as any,\n }\n }\n const unit_reversed = v\n .split(\"\")\n .reverse()\n .join(\"\")\n .match(/[a-zA-Z]+/)?.[0]\n if (!unit_reversed) {\n throw new Error(`Could not determine unit: \"${v}\"`)\n }\n const unit = unit_reversed.split(\"\").reverse().join(\"\")\n const value = v.slice(0, -unit.length)\n let measure\n try {\n measure = convertUnits().describe(unit as any)?.measure\n } catch (e) {}\n if (measure) {\n const target_unit = (target_conversion as any)[measure]\n if (!target_unit) {\n throw new Error(\n `Could not determine target unit for measure: \"${measure}\"`,\n )\n }\n return {\n unit,\n value: convertUnits(parseFloat(value))\n .from(unit as any)\n .to(target_unit) as any,\n }\n } else {\n return {\n unit,\n value: (getSiPrefixMultiplierFromUnit(unit) * parseFloat(value)) as any,\n }\n }\n}\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { webcrypto as crypto } from 'node:crypto'\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nfunction fillPool(bytes) {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.getRandomValues(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.getRandomValues(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nexport function random(bytes) {\n fillPool((bytes -= 0))\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nexport function customRandom(alphabet, defaultSize, getRandom) {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport function customAlphabet(alphabet, size = 21) {\n return customRandom(alphabet, size, random)\n}\nexport function nanoid(size = 21) {\n fillPool((size -= 0))\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += scopedUrlAlphabet[pool[i] & 63]\n }\n return id\n}\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","import { parseAndConvertSiUnit } from \"src/utils/convert-si-unit-to-number\"\nimport { z } from \"zod\"\n\n// // Currently, removing uncommon SI Prefixes for type simplicity.\n// export type SIPrefix =\n// // | \"y\"\n// // | \"yocto\"\n// // | \"z\"\n// // | \"zepto\"\n// // | \"atto\"\n// // | \"a\"\n// | \"femto\"\n// | \"f\"\n// | \"u\"\n// | \"micro\"\n// // | \"d\"\n// // | \"deci\"\n// | \"c\"\n// | \"centi\"\n// | \"m\"\n// | \"milli\"\n// | \"k\"\n// | \"kilo\"\n// | \"M\"\n// | \"mega\"\n// // | \"G\"\n// // | \"T\"\n// // | \"P\"\n// // | \"E\"\n// // | \"Z\"\n// // | \"Y\"\n\n// export type UnitAbbreviations = {\n// farad: \"F\"\n// ohm: \"Ω\"\n// henry: \"H\"\n// meter: \"m\"\n// volt: \"V\"\n// inch: \"in\"\n// foot: \"ft\"\n// }\n\n// export type Unit = keyof UnitAbbreviations\n// export type NumberWithUnit<T extends Unit> =\n// | `${number}${T | UnitAbbreviations[T]}`\n// | `${number} ${T | UnitAbbreviations[T]}`\n// | `${number}${SIPrefix}${T | UnitAbbreviations[T]}`\n// | `${number} ${SIPrefix}${T | UnitAbbreviations[T]}`\n// export type NumberWithAnyUnit =\n// | `${number}${UnitOrAbbreviation}`\n// | `${number} ${UnitOrAbbreviation}`\n// | `${number}${SIPrefix}${UnitOrAbbreviation}`\n// | `${number} ${SIPrefix}${UnitOrAbbreviation}`\n\n// TODO lots of validation to make sure the unit is valid etc.\nexport const resistance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const capacitance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const inductance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const voltage = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const length = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n/**\n * Length in meters\n */\nexport type Length = number\nexport type Distance = number\n\nexport const distance = length\n\nexport const current = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const time = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\n/**\n * Rotation is always converted to degrees\n */\nexport const rotation = z\n .string()\n .or(z.number())\n .transform((arg): number => {\n if (typeof arg === \"number\") return arg\n if (arg.endsWith(\"deg\")) {\n return Number.parseFloat(arg.split(\"deg\")[0]!)\n }\n if (arg.endsWith(\"rad\")) {\n return (Number.parseFloat(arg.split(\"rad\")[0]!) * 180) / Math.PI\n }\n return Number.parseFloat(arg)\n })\n\nexport type InputRotation = number | string\nexport type Rotation = number\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport const position = point\n\nexport type Point = z.infer<typeof point>\nexport type InputPoint = z.input<typeof point>\nexport type InputPosition = z.input<typeof position>\nexport type Position = z.infer<typeof position>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n\nexport const position3 = point3\n\nexport type Point3 = z.infer<typeof point3>\n","import { z } from \"zod\"\n\nexport const size = z.object({\n width: z.number(),\n height: z.number(),\n})\n\nexport type Size = z.infer<typeof size>\n","import { z } from \"zod\"\nimport { nanoid } from \"nanoid\"\n\n/**\n * Use this for primary keys for any circuit element\n */\nexport const getZodPrefixedIdWithDefault = (prefix: string) => {\n return z\n .string()\n .optional()\n .default(() => `${prefix}_${nanoid(10)}`)\n}\n","import { z } from \"zod\"\n\nexport const supplier_name = z.enum([\n \"jlcpcb\",\n \"macrofab\",\n \"pcbway\",\n \"digikey\",\n \"mouser\",\n \"lcsc\",\n])\n\nexport type SupplierName = z.infer<typeof supplier_name>\n","import { supplier_name } from \"src/pcb/properties/supplier_name\"\nimport { z } from \"zod\"\n\nexport const source_component_base = z.object({\n type: z.literal(\"source_component\"),\n ftype: z.string().optional(),\n source_component_id: z.string(),\n name: z.string(),\n manufacturer_part_number: z.string().optional(),\n supplier_part_numbers: z\n .record(supplier_name, z.array(z.string()))\n .optional(),\n})\n\nexport type SourceComponentBase = z.infer<typeof source_component_base>\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { capacitance } from \"src/units\"\n\nexport const source_simple_capacitor = source_component_base.extend({\n ftype: z.literal(\"simple_capacitor\"),\n capacitance,\n})\n\nexport type SourceSimpleCapacitor = z.infer<typeof source_simple_capacitor>\nexport type SourceSimpleCapacitorInput = z.input<typeof source_simple_capacitor>\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\n\nexport const source_simple_resistor = source_component_base.extend({\n ftype: z.literal(\"simple_resistor\"),\n resistance,\n})\n\nexport type SourceSimpleResistor = z.infer<typeof source_simple_resistor>\nexport type SourceSimpleResistorInput = z.input<typeof source_simple_resistor>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_diode = source_component_base.extend({\n ftype: z.literal(\"simple_diode\"),\n})\n\nexport type SourceSimpleDiode = z.infer<typeof source_simple_diode>\nexport type SourceSimpleDiodeInput = z.input<typeof source_simple_diode>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_ground = source_component_base.extend({\n ftype: z.literal(\"simple_ground\"),\n})\n\nexport type SourceSimpleGround = z.infer<typeof source_simple_ground>\nexport type SourceSimpleGroundInput = z.input<typeof source_simple_ground>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use source_simple_chip instead. This will be removed in a future version.\n */\nexport const source_simple_bug = source_component_base\n .extend({\n ftype: z.literal(\"simple_bug\"),\n })\n .describe(\"@deprecated\")\n\nexport type source_simple_bug = z.infer<typeof source_simple_bug>\nexport type SourceSimpleBugInput = z.input<typeof source_simple_bug>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_chip = source_component_base.extend({\n ftype: z.literal(\"simple_chip\"),\n})\n\nexport type SourceSimpleChip = z.infer<typeof source_simple_chip>\nexport type SourceSimpleChipInput = z.input<typeof source_simple_chip>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { inductance } from \"../units\"\n\nconst source_simple_inductor = source_component_base.extend({\n ftype: z.literal(\"simple_inductor\"),\n inductance,\n})\n\nexport type SourceSimpleInductor = z.infer<typeof source_simple_inductor>\nexport type SourceSimpleInductorInput = z.input<typeof source_simple_inductor>\n","import { z } from \"zod\"\nimport { source_simple_diode } from \"./source_simple_diode\"\n\nexport const source_led = source_simple_diode.extend({\n ftype: z.literal(\"led\"),\n})\n\nexport type SourceLed = z.infer<typeof source_led>\nexport type SourceLedInput = z.input<typeof source_led>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { voltage } from \"../units\"\n\nexport const source_simple_power_source = source_component_base.extend({\n ftype: z.literal(\"simple_power_source\"),\n voltage,\n})\n\nexport type SourceSimplePowerSource = z.infer<typeof source_simple_power_source>\nexport type SourceSimplePowerSourceInput = z.input<\n typeof source_simple_power_source\n>\n","import { z } from \"zod\"\nimport { source_simple_resistor } from \"./source_simple_resistor\"\nimport { source_simple_capacitor } from \"./source_simple_capacitor\"\nimport { source_simple_diode } from \"./source_simple_diode\"\nimport { source_simple_ground } from \"./source_simple_ground\"\nimport { source_simple_bug } from \"./source_simple_bug\"\nimport { source_simple_chip } from \"./source_simple_chip\"\nimport { source_led } from \"./source_led\"\nimport { source_simple_power_source } from \"./source_simple_power_source\"\n\nexport const any_source_component = z.union([\n source_simple_resistor,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_ground,\n source_simple_chip,\n source_simple_bug,\n source_led,\n source_simple_power_source,\n])\n\nexport type AnySourceComponent = z.infer<typeof any_source_component>\n","import { z } from \"zod\"\n\nexport const source_port = z.object({\n type: z.literal(\"source_port\"),\n pin_number: z.number().optional(),\n port_hints: z.array(z.string()).optional(),\n name: z.string(),\n source_port_id: z.string(),\n source_component_id: z.string(),\n})\n\nexport type SourcePort = z.infer<typeof source_port>\n","import { z } from \"zod\"\n\nexport const source_trace = z.object({\n type: z.literal(\"source_trace\"),\n source_trace_id: z.string(),\n connected_source_port_ids: z.array(z.string()),\n connected_source_net_ids: z.array(z.string()),\n})\n\nexport type SourceTrace = z.infer<typeof source_trace>\n","import { z } from \"zod\"\n\nexport const source_group = z.object({\n type: z.literal(\"source_group\"),\n source_group_id: z.string(),\n name: z.string().optional(),\n})\n\nexport type SourceGroup = z.infer<typeof source_group>\nexport type SourceGroupInput = z.input<typeof source_group>\n","import { z } from \"zod\"\n\nexport const source_net = z.object({\n type: z.literal(\"source_net\"),\n source_net_id: z.string(),\n name: z.string(),\n member_source_group_ids: z.array(z.string()),\n is_power: z.boolean().optional(),\n is_ground: z.boolean().optional(),\n is_digital_signal: z.boolean().optional(),\n is_analog_signal: z.boolean().optional(),\n trace_width: z.number().optional(),\n})\n\nexport type SourceNet = z.infer<typeof source_net>\nexport type SourceNetInput = z.input<typeof source_net>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_box = z\n .object({\n type: z.literal(\"schematic_box\"),\n schematic_component_id: z.string(),\n width: distance,\n height: distance,\n x: distance,\n y: distance,\n })\n .describe(\"Draws a box on the schematic\")\n\nexport type SchematicBoxInput = z.input<typeof schematic_box>\nexport type SchematicBox = z.infer<typeof schematic_box>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_path = z.object({\n type: z.literal(\"schematic_path\"),\n schematic_component_id: z.string(),\n fill_color: z.enum([\"red\", \"blue\"]).optional(),\n is_filled: z.boolean().optional(),\n points: z.array(point),\n})\n\nexport type SchematicPathInput = z.input<typeof schematic_path>\nexport type SchematicPath = z.infer<typeof schematic_path>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\nimport { size } from \"../common/size\"\nimport { length, rotation } from \"../units\"\n\nexport const schematic_pin_styles = z.record(\n z.object({\n left_margin: length.optional(),\n right_margin: length.optional(),\n top_margin: length.optional(),\n bottom_margin: length.optional(),\n }),\n)\n\nexport const schematic_component = z.object({\n type: z.literal(\"schematic_component\"),\n rotation: rotation.default(0),\n size,\n center: point,\n source_component_id: z.string(),\n schematic_component_id: z.string(),\n pin_spacing: length.optional(),\n pin_styles: schematic_pin_styles.optional(),\n box_width: length.optional(),\n symbol_name: z.string().optional(),\n port_arrangement: z\n .union([\n z.object({\n left_size: z.number(),\n right_size: z.number(),\n top_size: z.number().optional(),\n bottom_size: z.number().optional(),\n }),\n z.object({\n left_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n right_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n top_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n bottom_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n }),\n ])\n .optional(),\n port_labels: z.record(z.string()).optional(),\n})\n\nexport type SchematicComponentInput = z.input<typeof schematic_component>\nexport type SchematicComponent = z.infer<typeof schematic_component>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_line = z.object({\n type: z.literal(\"schematic_line\"),\n schematic_component_id: z.string(),\n x1: distance,\n x2: distance,\n y1: distance,\n y2: distance,\n})\n\nexport type SchematicLineInput = z.input<typeof schematic_line>\nexport type SchematicLine = z.infer<typeof schematic_line>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_trace = z.object({\n type: z.literal(\"schematic_trace\"),\n schematic_trace_id: z.string(),\n source_trace_id: z.string(),\n edges: z.array(\n z.object({\n from: z.object({\n x: z.number(),\n y: z.number(),\n }),\n to: z.object({\n x: z.number(),\n y: z.number(),\n }),\n from_schematic_port_id: z.string().optional(),\n to_schematic_port_id: z.string().optional(),\n }),\n ),\n})\n\nexport type SchematicTraceInput = z.input<typeof schematic_trace>\nexport type SchematicTrace = z.infer<typeof schematic_trace>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_text = z.object({\n type: z.literal(\"schematic_text\"),\n schematic_component_id: z.string(),\n schematic_text_id: z.string(),\n text: z.string(),\n position: z.object({\n x: distance,\n y: distance,\n }),\n rotation: z.number().default(0),\n anchor: z\n .enum([\"center\", \"left\", \"right\", \"top\", \"bottom\"])\n .default(\"center\"),\n})\n\nexport type SchematicTextInput = z.input<typeof schematic_text>\nexport type SchematicText = z.infer<typeof schematic_text>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { point } from \"../common\"\n\nexport const schematic_port = z\n .object({\n type: z.literal(\"schematic_port\"),\n schematic_port_id: z.string(),\n source_port_id: z.string(),\n schematic_component_id: z.string().optional(),\n center: point,\n facing_direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n })\n .describe(\"Defines a port on a schematic component\")\n\nexport type SchematicPortInput = z.input<typeof schematic_port>\nexport type SchematicPort = z.infer<typeof schematic_port>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_net_label = z.object({\n type: z.literal(\"schematic_net_label\"),\n source_net_id: z.string(),\n center: point,\n anchor_side: z.enum([\"top\", \"bottom\", \"left\", \"right\"]),\n text: z.string(),\n})\n\nexport type SchematicNetLabelInput = z.input<typeof schematic_net_label>\nexport type SchematicNetLabel = z.infer<typeof schematic_net_label>\n","import { z } from \"zod\"\n\nexport const schematic_error = z\n .object({\n schematic_error_id: z.string(),\n type: z.literal(\"schematic_error\"),\n // eventually each error type should be broken out into a dir of files\n error_type: z.literal(\"schematic_port_not_found\"),\n message: z.string(),\n })\n .describe(\"Defines a schematic error on the schematic\")\n\nexport type SchematicErrorInput = z.input<typeof schematic_error>\nexport type SchematicError = z.infer<typeof schematic_error>\n","import { z } from \"zod\"\n\nexport const all_layers = [\n \"top\",\n \"bottom\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n] as const\n\nexport const layer_string = z.enum(all_layers)\n\nexport const layer_ref = layer_string\n .or(\n z.object({\n name: layer_string,\n }),\n )\n .transform((layer) => {\n if (typeof layer === \"string\") {\n return layer\n }\n return layer.name\n })\n\nexport type LayerRefInput = z.input<typeof layer_ref>\nexport type LayerRef = z.output<typeof layer_ref>\n\nexport const visible_layer = z.enum([\"top\", \"bottom\"])\nexport type VisibleLayerRef = z.infer<typeof visible_layer>\nexport type VisibleLayer = z.infer<typeof visible_layer>\n","import { z } from \"zod\"\nimport { distance } from \"src/units\"\nimport { layer_ref } from \"./layer_ref\"\n\n// x: string | number\n// y: string | number\n// via?: boolean\n// via_to_layer?: string\nexport const pcb_route_hint = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n via_to_layer: layer_ref.optional(),\n})\nexport const pcb_route_hints = z.array(pcb_route_hint)\n\nexport type PcbRouteHintInput = z.input<typeof pcb_route_hint>\nexport type PcbRouteHintsInput = z.input<typeof pcb_route_hints>\nexport type PcbRouteHint = z.output<typeof pcb_route_hint>\nexport type PcbRouteHints = z.output<typeof pcb_route_hints>\n","import { z } from \"zod\"\nimport { distance } from \"../../units\"\nimport { layer_ref } from \"./layer_ref\"\n\nexport const route_hint_point = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n to_layer: layer_ref.optional(),\n trace_width: distance.optional(),\n})\n\nexport type RouteHintPoint = z.infer<typeof route_hint_point>\nexport type RouteHintPointInput = z.input<typeof route_hint_point>\n","import type { TypeEqual } from \"ts-expect\"\n\nexport const expectTypesMatch = <const T1, const T2>(\n shouldBe: TypeEqual<T1, T2>,\n): void => {}\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { rotation, length, type Rotation, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_component = z\n .object({\n type: z.literal(\"pcb_component\"),\n pcb_component_id: getZodPrefixedIdWithDefault(\"pcb_component\"),\n source_component_id: z.string(),\n center: point,\n layer: layer_ref,\n rotation: rotation,\n width: length,\n height: length,\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type PcbComponentInput = z.input<typeof pcb_component>\ntype InferredPcbComponent = z.infer<typeof pcb_component>\n\n/**\n * Defines a component on the PCB\n */\nexport interface PcbComponent {\n type: \"pcb_component\"\n pcb_component_id: string\n source_component_id: string\n center: Point\n layer: LayerRef\n rotation: Rotation\n width: Length\n height: Length\n}\n\n/**\n * @deprecated use PcbComponent\n */\nexport type PCBComponent = PcbComponent\n\nexpectTypesMatch<PcbComponent, InferredPcbComponent>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_hole_circle_or_square = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.enum([\"circle\", \"square\"]),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_circle_or_square_shape =\n pcb_hole_circle_or_square.describe(\n \"Defines a circular or square hole on the PCB\",\n )\n\nexport type PcbHoleCircleOrSquareInput = z.input<\n typeof pcb_hole_circle_or_square\n>\ntype InferredPcbHoleCircleOrSquare = z.infer<typeof pcb_hole_circle_or_square>\n\n/**\n * Defines a circular or square hole on the PCB\n */\nexport interface PcbHoleCircleOrSquare {\n type: \"pcb_hole\"\n pcb_hole_id: string\n hole_shape: \"circle\" | \"square\"\n hole_diameter: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleCircleOrSquare, InferredPcbHoleCircleOrSquare>(true)\n\nconst pcb_hole_oval = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.literal(\"oval\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_oval_shape = pcb_hole_oval.describe(\n \"Defines an oval hole on the PCB\",\n)\n\nexport type PcbHoleOvalInput = z.input<typeof pcb_hole_oval>\ntype InferredPcbHoleOval = z.infer<typeof pcb_hole_oval>\n\n/**\n * Defines an oval hole on the PCB\n */\nexport interface PcbHoleOval {\n type: \"pcb_hole\"\n pcb_hole_id: string\n hole_shape: \"oval\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleOval, InferredPcbHoleOval>(true)\n\nexport const pcb_hole = pcb_hole_circle_or_square.or(pcb_hole_oval)\n\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHoleInput = z.input<typeof pcb_hole>\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHole = z.infer<typeof pcb_hole>\n\nexport type PcbHole = PcbHoleCircleOrSquare | PcbHoleOval\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_plated_hole_circle = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circle\"),\n outer_diameter: z.number(),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines a circular plated hole on the PCB\n */\nexport interface PcbPlatedHoleCircle {\n type: \"pcb_plated_hole\"\n shape: \"circle\"\n outer_diameter: number\n hole_diameter: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nconst pcb_plated_hole_oval = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.enum([\"oval\", \"pill\"]),\n outer_width: z.number(),\n outer_height: z.number(),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines an oval or pill-shaped plated hole on the PCB\n */\nexport interface PcbPlatedHoleOval {\n type: \"pcb_plated_hole\"\n shape: \"oval\" | \"pill\"\n outer_width: number\n outer_height: number\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nexport const pcb_plated_hole = z.union([\n pcb_plated_hole_circle,\n pcb_plated_hole_oval,\n])\nexport type PcbPlatedHole = PcbPlatedHoleCircle | PcbPlatedHoleOval\n\nexpectTypesMatch<PcbPlatedHoleCircle, z.infer<typeof pcb_plated_hole_circle>>(\n true,\n)\nexpectTypesMatch<PcbPlatedHoleOval, z.infer<typeof pcb_plated_hole_oval>>(true)\n\n/**\n * @deprecated use PcbPlatedHole\n */\nexport type PCBPlatedHole = PcbPlatedHole\n\n/**\n * @deprecated use PcbPlatedHoleInput\n */\nexport type PCBPlatedHoleInput = z.input<typeof pcb_plated_hole>\nexport type PcbPlatedHoleInput = z.input<typeof pcb_plated_hole>\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port = z\n .object({\n type: z.literal(\"pcb_port\"),\n pcb_port_id: getZodPrefixedIdWithDefault(\"pcb_port\"),\n source_port_id: z.string(),\n pcb_component_id: z.string(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n })\n .describe(\"Defines a port on the PCB\")\n\nexport type PcbPortInput = z.input<typeof pcb_port>\ntype InferredPcbPort = z.infer<typeof pcb_port>\n\n/**\n * Defines a port on the PCB\n */\nexport interface PcbPort {\n type: \"pcb_port\"\n pcb_port_id: string\n source_port_id: string\n pcb_component_id: string\n x: Distance\n y: Distance\n layers: LayerRef[]\n}\n\n/**\n * @deprecated use PcbPort\n */\nexport type PCBPort = PcbPort\n\n/**\n * @deprecated use PcbPortInput\n */\nexport type PCBPortInput = PcbPortInput\n\nexpectTypesMatch<PcbPort, InferredPcbPort>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_smtpad_circle = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"circle\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nconst pcb_smtpad_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nexport const pcb_smtpad = z\n .union([pcb_smtpad_circle, pcb_smtpad_rect])\n .describe(\"Defines an SMT pad on the PCB\")\n\nexport type PCBSMTPadInput = z.input<typeof pcb_smtpad>\ntype PCBSMTPadCircle = z.infer<typeof pcb_smtpad_circle>\ntype PCBSMTPadRect = z.infer<typeof pcb_smtpad_rect>\n\n/**\n * Defines an SMT pad on the PCB\n */\nexport interface PcbSmtPadCircle {\n type: \"pcb_smtpad\"\n shape: \"circle\"\n pcb_smtpad_id: string\n x: Distance\n y: Distance\n radius: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\n/**\n * Defines an SMT pad on the PCB\n */\nexport interface PcbSmtPadRect {\n type: \"pcb_smtpad\"\n shape: \"rect\"\n pcb_smtpad_id: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\nexport type PcbSmtPad = PcbSmtPadCircle | PcbSmtPadRect\n\n/**\n * @deprecated use PcbSmtPad\n */\nexport type PCBSMTPad = PcbSmtPad\n\nexpectTypesMatch<PcbSmtPadCircle, PCBSMTPadCircle>(true)\nexpectTypesMatch<PcbSmtPadRect, PCBSMTPadRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_text = z\n .object({\n type: z.literal(\"pcb_text\"),\n pcb_text_id: getZodPrefixedIdWithDefault(\"pcb_text\"),\n text: z.string(),\n center: point,\n layer: layer_ref,\n width: length,\n height: length,\n lines: z.number(),\n align: z.enum([\"bottom-left\"]),\n })\n .describe(\"Defines text on the PCB\")\n\nexport type PcbTextInput = z.input<typeof pcb_text>\ntype InferredPcbText = z.infer<typeof pcb_text>\n\n/**\n * Defines text on the PCB\n */\nexport interface PcbText {\n type: \"pcb_text\"\n pcb_text_id: string\n text: string\n center: Point\n layer: LayerRef\n width: Length\n height: Length\n lines: number\n align: \"bottom-left\"\n}\n\n/**\n * @deprecated use PcbText\n */\nexport type PCBText = PcbText\n\nexpectTypesMatch<PcbText, InferredPcbText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_route_point_wire = z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n})\n\nexport const pcb_trace_route_point_via = z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string(),\n})\n\nexport const pcb_trace_route_point = z.union([\n pcb_trace_route_point_wire,\n pcb_trace_route_point_via,\n])\ntype InferredPcbTraceRoutePoint = z.infer<typeof pcb_trace_route_point>\n\nexport const pcb_trace = z\n .object({\n type: z.literal(\"pcb_trace\"),\n source_trace_id: z.string().optional(),\n pcb_component_id: z.string().optional(),\n pcb_trace_id: getZodPrefixedIdWithDefault(\"pcb_trace\"),\n route_thickness_mode: z\n .enum([\"constant\", \"interpolated\"])\n .default(\"constant\")\n .optional(),\n should_round_corners: z.boolean().optional(),\n route: z.array(\n z.union([\n z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n }),\n z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string(),\n }),\n ]),\n ),\n })\n .describe(\"Defines a trace on the PCB\")\n\nexport type PcbTraceInput = z.input<typeof pcb_trace>\ntype InferredPcbTrace = z.infer<typeof pcb_trace>\n\nexport interface PcbTraceRoutePointWire {\n route_type: \"wire\"\n x: Distance\n y: Distance\n width: Distance\n start_pcb_port_id?: string\n end_pcb_port_id?: string\n layer: LayerRef\n}\n\nexport interface PcbTraceRoutePointVia {\n route_type: \"via\"\n x: Distance\n y: Distance\n from_layer: string\n to_layer: string\n}\n\nexport type PcbTraceRoutePoint = PcbTraceRoutePointWire | PcbTraceRoutePointVia\n\n/**\n * Defines a trace on the PCB\n */\nexport interface PcbTrace {\n type: \"pcb_trace\"\n source_trace_id?: string\n pcb_component_id?: string\n pcb_trace_id: string\n route_thickness_mode?: \"constant\" | \"interpolated\"\n should_round_corners?: boolean\n route: Array<PcbTraceRoutePoint>\n}\n\n/**\n * @deprecated use PcbTrace\n */\nexport type PCBTrace = PcbTrace\n\n/**\n * @deprecated use PcbTraceInput\n */\nexport type PCBTraceInput = PcbTraceInput\n\nexpectTypesMatch<PcbTraceRoutePoint, InferredPcbTraceRoutePoint>(true)\nexpectTypesMatch<PcbTrace, InferredPcbTrace>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_error = z\n .object({\n type: z.literal(\"pcb_trace_error\"),\n pcb_trace_error_id: getZodPrefixedIdWithDefault(\"pcb_trace_error\"),\n error_type: z.literal(\"pcb_trace_error\"),\n message: z.string(),\n center: point.optional(),\n pcb_trace_id: z.string(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB\")\n\nexport type PcbTraceErrorInput = z.input<typeof pcb_trace_error>\ntype InferredPcbTraceError = z.infer<typeof pcb_trace_error>\n\n/**\n * Defines a trace error on the PCB\n */\nexport interface PcbTraceError {\n type: \"pcb_trace_error\"\n pcb_trace_error_id: string\n error_type: \"pcb_trace_error\"\n message: string\n center?: Point\n pcb_trace_id: string\n source_trace_id: string\n pcb_component_ids: string[]\n pcb_port_ids: string[]\n}\n\n/**\n * @deprecated use PcbTraceError\n */\nexport type PCBTraceError = PcbTraceError\n\nexpectTypesMatch<PcbTraceError, InferredPcbTraceError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port_not_matched_error = z\n .object({\n type: z.literal(\"pcb_port_not_matched_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n message: z.string(),\n pcb_component_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB where a port is not matched\")\n\nexport type PcbPortNotMatchedErrorInput = z.input<\n typeof pcb_port_not_matched_error\n>\ntype InferredPcbPortNotMatchedError = z.infer<typeof pcb_port_not_matched_error>\n\n/**\n * Defines a trace error on the PCB where a port is not matched\n */\nexport interface PcbPortNotMatchedError {\n type: \"pcb_port_not_matched_error\"\n pcb_error_id: string\n message: string\n pcb_component_ids: string[]\n}\n\n/**\n * @deprecated use PcbPortNotMatchedError\n */\nexport type PCBPortNotMatchedError = PcbPortNotMatchedError\n\nexpectTypesMatch<PcbPortNotMatchedError, InferredPcbPortNotMatchedError>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_via = z\n .object({\n type: z.literal(\"pcb_via\"),\n pcb_via_id: getZodPrefixedIdWithDefault(\"pcb_via\"),\n x: distance,\n y: distance,\n outer_diameter: distance.default(\"0.6mm\"),\n hole_diameter: distance.default(\"0.25mm\"),\n /** @deprecated */\n from_layer: layer_ref.optional(),\n /** @deprecated */\n to_layer: layer_ref.optional(),\n layers: z.array(layer_ref),\n })\n .describe(\"Defines a via on the PCB\")\n\nexport type PcbViaInput = z.input<typeof pcb_via>\ntype InferredPcbVia = z.infer<typeof pcb_via>\n\n/**\n * Defines a via on the PCB\n */\nexport interface PcbVia {\n type: \"pcb_via\"\n pcb_via_id: string\n x: Distance\n y: Distance\n outer_diameter: Distance\n hole_diameter: Distance\n /** @deprecated */\n from_layer?: LayerRef\n /** @deprecated */\n to_layer?: LayerRef\n layers: LayerRef[]\n}\n\n/**\n * @deprecated use PcbVia\n */\nexport type PCBVia = PcbVia\n\nexpectTypesMatch<PcbVia, InferredPcbVia>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_board = z\n .object({\n type: z.literal(\"pcb_board\"),\n pcb_board_id: getZodPrefixedIdWithDefault(\"pcb_board\"),\n width: length,\n height: length,\n center: point,\n outline: z.array(point).optional(),\n })\n .describe(\"Defines the board outline of the PCB\")\n\n/**\n * Defines the board outline of the PCB\n */\nexport interface PcbBoard {\n type: \"pcb_board\"\n pcb_board_id: string\n width: Length\n height: Length\n center: Point\n outline?: Point[]\n}\n\nexport type PcbBoardInput = z.input<typeof pcb_board>\ntype InferredPcbBoard = z.infer<typeof pcb_board>\n\n/**\n * @deprecated use PcbBoard\n */\nexport type PCBBoard = PcbBoard\n\nexpectTypesMatch<PcbBoard, InferredPcbBoard>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_placement_error = z\n .object({\n type: z.literal(\"pcb_placement_error\"),\n pcb_placement_error_id: getZodPrefixedIdWithDefault(\"pcb_placement_error\"),\n message: z.string(),\n })\n .describe(\"Defines a placement error on the PCB\")\n\nexport type PcbPlacementErrorInput = z.input<typeof pcb_placement_error>\ntype InferredPcbPlacementError = z.infer<typeof pcb_placement_error>\n\n/**\n * Defines a placement error on the PCB\n */\nexport interface PcbPlacementError {\n type: \"pcb_placement_error\"\n pcb_placement_error_id: string\n message: string\n}\n\n/**\n * @deprecated use PcbPlacementError\n */\nexport type PCBPlacementError = PcbPlacementError\n\nexpectTypesMatch<PcbPlacementError, InferredPcbPlacementError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { route_hint_point, type RouteHintPoint } from \"src/pcb\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/**\n * A hint that can be used during generation of a PCB trace.\n */\nexport interface PcbTraceHint {\n type: \"pcb_trace_hint\"\n pcb_trace_hint_id: string\n pcb_port_id: string\n pcb_component_id: string\n route: RouteHintPoint[]\n}\n\nexport const pcb_trace_hint = z\n .object({\n type: z.literal(\"pcb_trace_hint\"),\n pcb_trace_hint_id: getZodPrefixedIdWithDefault(\"pcb_trace_hint\"),\n pcb_port_id: z.string(),\n pcb_component_id: z.string(),\n route: z.array(route_hint_point),\n })\n .describe(\"A hint that can be used during generation of a PCB trace\")\n\nexport type PcbTraceHintInput = z.input<typeof pcb_trace_hint>\ntype InferredPcbTraceHint = z.infer<typeof pcb_trace_hint>\n\n/**\n * @deprecated use PcbTraceHint\n */\nexport type PCBTraceHint = PcbTraceHint\n\nexpectTypesMatch<PcbTraceHint, InferredPcbTraceHint>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport {\n layer_ref,\n type LayerRef,\n type VisibleLayer,\n visible_layer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_line = z\n .object({\n type: z.literal(\"pcb_silkscreen_line\"),\n pcb_silkscreen_line_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_line\"),\n pcb_component_id: z.string(),\n stroke_width: distance.default(\"0.1mm\"),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen line on the PCB\")\n\nexport type PcbSilkscreenLineInput = z.input<typeof pcb_silkscreen_line>\ntype InferredPcbSilkscreenLine = z.infer<typeof pcb_silkscreen_line>\n\n/**\n * Defines a silkscreen line on the PCB\n */\nexport interface PcbSilkscreenLine {\n type: \"pcb_silkscreen_line\"\n pcb_silkscreen_line_id: string\n pcb_component_id: string\n stroke_width: Distance\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenLine\n */\nexport type PCBSilkscreenLine = PcbSilkscreenLine\n\nexpectTypesMatch<PcbSilkscreenLine, InferredPcbSilkscreenLine>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n visible_layer,\n type VisibleLayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_path = z\n .object({\n type: z.literal(\"pcb_silkscreen_path\"),\n pcb_silkscreen_path_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_path\"),\n pcb_component_id: z.string(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length,\n })\n .describe(\"Defines a silkscreen path on the PCB\")\n\nexport type PcbSilkscreenPathInput = z.input<typeof pcb_silkscreen_path>\ntype InferredPcbSilkscreenPath = z.infer<typeof pcb_silkscreen_path>\n\n/**\n * Defines a silkscreen path on the PCB\n */\nexport interface PcbSilkscreenPath {\n type: \"pcb_silkscreen_path\"\n pcb_silkscreen_path_id: string\n pcb_component_id: string\n layer: VisibleLayerRef\n route: Point[]\n stroke_width: Length\n}\n\n/**\n * @deprecated use PcbSilkscreenPath\n */\nexport type PcbSilkscreenPathDeprecated = PcbSilkscreenPath\n\nexpectTypesMatch<PcbSilkscreenPath, InferredPcbSilkscreenPath>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { distance, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_text = z\n .object({\n type: z.literal(\"pcb_silkscreen_text\"),\n pcb_silkscreen_text_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_text\"),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: layer_ref,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n })\n .describe(\"Defines silkscreen text on the PCB\")\n\nexport type PcbSilkscreenTextInput = z.input<typeof pcb_silkscreen_text>\ntype InferredPcbSilkscreenText = z.infer<typeof pcb_silkscreen_text>\n\n/**\n * Defines silkscreen text on the PCB\n */\nexport interface PcbSilkscreenText {\n type: \"pcb_silkscreen_text\"\n pcb_silkscreen_text_id: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: LayerRef\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n}\n\n/**\n * @deprecated use PcbSilkscreenText\n */\nexport type PCBSilkscreenText = PcbSilkscreenText\n\nexpectTypesMatch<PcbSilkscreenText, InferredPcbSilkscreenText>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_rect = z\n .object({\n type: z.literal(\"pcb_silkscreen_rect\"),\n pcb_silkscreen_rect_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_rect\"),\n pcb_component_id: z.string(),\n center: point,\n width: length,\n height: length,\n layer: layer_ref,\n })\n .describe(\"Defines a silkscreen rect on the PCB\")\n\nexport type PcbSilkscreenRectInput = z.input<typeof pcb_silkscreen_rect>\ntype InferredPcbSilkscreenRect = z.infer<typeof pcb_silkscreen_rect>\n\n/**\n * Defines a silkscreen rect on the PCB\n */\nexport interface PcbSilkscreenRect {\n type: \"pcb_silkscreen_rect\"\n pcb_silkscreen_rect_id: string\n pcb_component_id: string\n center: Point\n width: Length\n height: Length\n layer: LayerRef\n}\n\n/**\n * @deprecated use PcbSilkscreenRect\n */\nexport type PcbSilkscreenRectOld = PcbSilkscreenRect\n\nexpectTypesMatch<PcbSilkscreenRect, InferredPcbSilkscreenRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_circle = z\n .object({\n type: z.literal(\"pcb_silkscreen_circle\"),\n pcb_silkscreen_circle_id: getZodPrefixedIdWithDefault(\n \"pcb_silkscreen_circle\",\n ),\n pcb_component_id: z.string(),\n center: point,\n radius: length,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen circle on the PCB\")\n\nexport type PcbSilkscreenCircleInput = z.input<typeof pcb_silkscreen_circle>\ntype InferredPcbSilkscreenCircle = z.infer<typeof pcb_silkscreen_circle>\n\n/**\n * Defines a silkscreen circle on the PCB\n */\nexport interface PcbSilkscreenCircle {\n type: \"pcb_silkscreen_circle\"\n pcb_silkscreen_circle_id: string\n pcb_component_id: string\n center: Point\n radius: Length\n layer: VisibleLayer\n}\n\nexpectTypesMatch<PcbSilkscreenCircle, InferredPcbSilkscreenCircle>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n type LayerRef,\n visible_layer,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_oval = z\n .object({\n type: z.literal(\"pcb_silkscreen_oval\"),\n pcb_silkscreen_oval_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_oval\"),\n pcb_component_id: z.string(),\n center: point,\n radius_x: distance,\n radius_y: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen oval on the PCB\")\n\nexport type PcbSilkscreenOvalInput = z.input<typeof pcb_silkscreen_oval>\ntype InferredPcbSilkscreenOval = z.infer<typeof pcb_silkscreen_oval>\n\n/**\n * Defines a silkscreen oval on the PCB\n */\nexport interface PcbSilkscreenOval {\n type: \"pcb_silkscreen_oval\"\n pcb_silkscreen_oval_id: string\n pcb_component_id: string\n center: Point\n radius_x: Distance\n radius_y: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenOval\n */\nexport type PcbSilkscreenOvalDeprecated = PcbSilkscreenOval\n\nexpectTypesMatch<PcbSilkscreenOval, InferredPcbSilkscreenOval>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport {\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common/getZodPrefixedIdWithDefault\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_text = z\n .object({\n type: z.literal(\"pcb_fabrication_note_text\"),\n pcb_fabrication_note_text_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_text\",\n ),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\",\n )\n\nexport type PcbFabricationNoteTextInput = z.input<\n typeof pcb_fabrication_note_text\n>\ntype InferredPcbFabricationNoteText = z.infer<typeof pcb_fabrication_note_text>\n\n/**\n * Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\n */\nexport interface PcbFabricationNoteText {\n type: \"pcb_fabrication_note_text\"\n pcb_fabrication_note_text_id: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: VisibleLayer\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNoteText\n */\nexport type PCBFabricationNoteText = PcbFabricationNoteText\n\nexpectTypesMatch<PcbFabricationNoteText, InferredPcbFabricationNoteText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { point, type Point } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_path = z\n .object({\n type: z.literal(\"pcb_fabrication_note_path\"),\n pcb_fabrication_note_path_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_path\",\n ),\n pcb_component_id: z.string(),\n layer: layer_ref,\n route: z.array(point),\n stroke_width: length,\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication path on the PCB for fabricators or assemblers\",\n )\n\nexport type PcbFabricationNotePathInput = z.input<\n typeof pcb_fabrication_note_path\n>\ntype InferredPcbFabricationNotePath = z.infer<typeof pcb_fabrication_note_path>\n\n/**\n * Defines a fabrication path on the PCB for fabricators or assemblers\n */\nexport interface PcbFabricationNotePath {\n type: \"pcb_fabrication_note_path\"\n pcb_fabrication_note_path_id: string\n pcb_component_id: string\n layer: LayerRef\n route: Point[]\n stroke_width: Length\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNotePath\n */\nexport type PCBFabricationNotePath = PcbFabricationNotePath\n\nexpectTypesMatch<PcbFabricationNotePath, InferredPcbFabricationNotePath>(true)\n","import { z } from \"zod\"\nimport { point } from \"../common\"\nimport { distance } from \"../units\"\n\nexport const pcb_keepout = z\n .object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"rect\"),\n center: point,\n width: distance,\n height: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n })\n .or(\n z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"circle\"),\n center: point,\n radius: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n }),\n )\n\nexport type PCBKeepoutInput = z.input<typeof pcb_keepout>\nexport type PCBKeepout = z.infer<typeof pcb_keepout>\n","import { z } from \"zod\"\nimport { point3 } from \"../common\"\nimport { rotation, length } from \"../units\"\nimport { layer_ref } from \"src/pcb\"\n\nexport const cad_component = z\n .object({\n type: z.literal(\"cad_component\"),\n cad_component_id: z.string(),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n position: point3,\n rotation: point3.optional(),\n size: point3.optional(),\n layer: layer_ref.optional(),\n\n // These are all ways to generate/load the 3d model\n footprinter_string: z.string().optional(),\n model_obj_url: z.string().optional(),\n model_stl_url: z.string().optional(),\n model_3mf_url: z.string().optional(),\n model_jscad: z.any().optional(),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type CadComponentInput = z.input<typeof cad_component>\nexport type CadComponent = z.infer<typeof cad_component>\n","import { z } from \"zod\"\nimport * as pcb from \"./pcb\"\nimport * as sch from \"./schematic\"\nimport * as src from \"./source\"\nimport * as cad from \"./cad\"\n\nexport const any_circuit_element = z.union([\n // TODO source_group\n // TODO source_config\n // TODO pcb_group\n // TODO pcb_config\n // TODO schematic_config\n // TODO schematic_group\n src.source_trace,\n src.source_port,\n src.any_source_component,\n src.source_led,\n src.source_net,\n src.source_group,\n src.source_simple_bug,\n src.source_simple_chip,\n src.source_simple_capacitor,\n src.source_simple_diode,\n src.source_simple_resistor,\n src.source_simple_power_source,\n pcb.pcb_component,\n pcb.pcb_hole,\n pcb.pcb_plated_hole,\n pcb.pcb_keepout,\n pcb.pcb_port,\n pcb.pcb_text,\n pcb.pcb_trace,\n pcb.pcb_via,\n pcb.pcb_smtpad,\n pcb.pcb_board,\n pcb.pcb_trace_hint,\n pcb.pcb_silkscreen_line,\n pcb.pcb_silkscreen_path,\n pcb.pcb_silkscreen_text,\n pcb.pcb_silkscreen_rect,\n pcb.pcb_silkscreen_circle,\n pcb.pcb_silkscreen_oval,\n pcb.pcb_trace_error,\n pcb.pcb_placement_error,\n pcb.pcb_port_not_matched_error,\n pcb.pcb_fabrication_note_path,\n pcb.pcb_fabrication_note_text,\n sch.schematic_box,\n sch.schematic_text,\n sch.schematic_line,\n sch.schematic_component,\n sch.schematic_port,\n sch.schematic_trace,\n sch.schematic_path,\n sch.schematic_error,\n sch.schematic_net_label,\n cad.cad_component,\n])\n\n/**\n * @deprecated use any_circuit_element instead\n */\nexport const any_soup_element = any_circuit_element\n\nexport type AnyCircuitElement = z.infer<typeof any_circuit_element>\nexport type AnyCircuitElementInput = z.input<typeof any_circuit_element>\n/**\n * @deprecated use AnyCircuitElement instead\n */\nexport type AnySoupElement = AnyCircuitElement\n\n/**\n * @deprecated use AnyCircuitElementInput instead\n */\nexport type AnySoupElementInput = AnyCircuitElementInput\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { su } from \"@tscircuit/soup-util\"\nimport type { Primitive } from \"./types\"\nimport { type Point, getExpandedStroke } from \"./util/expand-stroke\"\n\ntype MetaData = {\n _parent_pcb_component?: any\n _parent_source_component?: any\n _source_port?: any\n}\n\nlet globalPcbDrawingObjectCount = 0\nexport const convertElementToPrimitives = (\n element: AnyCircuitElement,\n allElements: AnyCircuitElement[],\n): (Primitive & MetaData)[] => {\n const _parent_pcb_component =\n \"pcb_component_id\" in element\n ? allElements.find(\n (elm) =>\n elm.type === \"pcb_component\" &&\n elm.pcb_component_id === element.pcb_component_id,\n )\n : undefined\n const _parent_source_component =\n _parent_pcb_component && \"source_component_id\" in _parent_pcb_component\n ? allElements.find(\n (elm) =>\n elm.type === \"source_component\" &&\n elm.source_component_id ===\n _parent_pcb_component.source_component_id,\n )\n : undefined\n\n const _source_port_id =\n \"source_port_id\" in element\n ? element.source_port_id\n : \"pcb_port_id\" in element\n ? su(allElements as any).pcb_port.get(element.pcb_port_id!)\n ?.source_port_id\n : undefined\n\n const _source_port = _source_port_id\n ? allElements.find(\n (e) => e.type === \"source_port\" && e.source_port_id === _source_port_id,\n )\n : undefined\n\n switch (element.type) {\n case \"pcb_board\": {\n const { width, height, center, outline } = element\n\n if (outline && outline.length > 2) {\n return outline.map((point, index, array) => {\n return {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: point.x,\n y1: point.y,\n x2: index === array.length - 1 ? array[0].x : array[index + 1].x,\n y2: index === array.length - 1 ? array[0].y : array[index + 1].y,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n }\n })\n }\n return [\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y - height / 2,\n x2: center.x + width / 2,\n y2: center.y - height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y + height / 2,\n x2: center.x + width / 2,\n y2: center.y + height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x - width / 2,\n y1: center.y - height / 2,\n x2: center.x - width / 2,\n y2: center.y + height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: center.x + width / 2,\n y1: center.y - height / 2,\n x2: center.x + width / 2,\n y2: center.y + height / 2,\n width: 1, // Add the required width property\n zoomIndependent: true,\n layer: \"board\",\n _element: element,\n },\n ]\n }\n case \"pcb_smtpad\": {\n if (element.shape === \"rect\") {\n const { shape, x, y, width, height, layer } = element\n\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x,\n y,\n w: width,\n h: height,\n layer: layer || \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n ]\n } else if (element.shape === \"circle\") {\n const { x, y, radius, layer } = element\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: radius,\n layer: layer || \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n ]\n }\n return []\n }\n case \"pcb_hole\": {\n if (element.hole_shape === \"circle\" || !element.hole_shape) {\n const { x, y, hole_diameter } = element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n layer: \"drill\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n },\n ]\n }\n // TODO square hole\n // TODO oval hole\n return []\n }\n case \"pcb_plated_hole\": {\n if (element.shape === \"circle\") {\n const { x, y, hole_diameter, outer_diameter } = element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n // TODO support layer on pcb_plated_hole\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n // TODO support layer on pcb_plated_hole\n layer: \"drill\",\n _element: element,\n\n // double highlights are annoying\n // _element: element,\n },\n ]\n } else if (element.shape === \"oval\") {\n const { x, y, outer_height, outer_width, hole_height, hole_width } =\n element\n\n return [\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"oval\",\n x,\n y,\n rX: outer_width / 2,\n rY: outer_height / 2,\n layer: \"top\", // TODO: Confirm layer handling for oval plated holes\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"oval\",\n x,\n y,\n rX: hole_width / 2,\n rY: hole_height / 2,\n layer: \"drill\",\n },\n ]\n } else if (element.shape === \"pill\") {\n const { x, y, outer_height, outer_width, hole_height, hole_width } =\n element\n\n return [\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"pill\",\n x,\n y,\n w: outer_width,\n h: outer_height,\n layer: \"top\", // TODO: Confirm layer handling for oval plated holes\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n },\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"pill\",\n x,\n y,\n w: hole_width,\n h: hole_height,\n layer: \"drill\",\n },\n ]\n } else {\n return []\n }\n }\n case \"pcb_keepout\": {\n if (element.shape === \"circle\") {\n const { center, radius } = element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x: center.x,\n y: center.y,\n r: radius,\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n mesh_fill: true,\n },\n ]\n } else if (element.shape === \"rect\") {\n const { x, y, width, height } = element\n\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x,\n y,\n w: width,\n h: height,\n layer: \"top\",\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n mesh_fill: true,\n },\n ]\n }\n }\n case \"pcb_trace\": {\n const primitives: Primitive[] = []\n\n if (element.route_thickness_mode === \"interpolated\") {\n // Prepare the stroke input\n const strokeInput: Point[] = element.route.map((r) => ({\n x: r.x,\n y: r.y,\n trace_width: r.route_type === \"wire\" ? r.width : 0.5,\n }))\n\n // Use getExpandedStroke to generate the polygon points\n const expandedStroke = getExpandedStroke(strokeInput, 0.5) // Use 0.5 as default width\n\n // Generate a single polygon primitive from the expanded stroke\n primitives.push({\n _pcb_drawing_object_id: `polygon_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"polygon\",\n points: expandedStroke,\n layer: element.route[0].layer, // same layer for all points\n })\n\n // Add circles for vias\n element.route.forEach((r) => {\n if (r.route_type === \"via\") {\n primitives.push({\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"circle\",\n x: r.x,\n y: r.y,\n radius: r.outer_diameter / 2,\n fill: true,\n layer: element.route.layer,\n })\n }\n })\n\n return primitives\n }\n let prevX: number | null = null\n let prevY: number | null = null\n\n for (const route of element.route) {\n if (route.route_type === \"wire\") {\n if (prevX !== null && prevY !== null) {\n primitives.push({\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"line\",\n x1: prevX,\n y1: prevY,\n x2: route.x,\n y2: route.y,\n width: route.width,\n squareCap: false,\n layer: route.layer,\n })\n }\n\n prevX = route.x\n prevY = route.y\n }\n }\n\n return primitives\n }\n // The builder currently outputs these as smtpads and holes, so pcb_via isn't\n // used, but that maybe should be changed\n case \"pcb_via\": {\n const { x, y, outer_diameter, hole_diameter, from_layer, to_layer } =\n element\n\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n layer: from_layer!,\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n _element: element,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: hole_diameter / 2,\n layer: \"drill\",\n _parent_pcb_component,\n _parent_source_component,\n },\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x,\n y,\n r: outer_diameter / 2,\n layer: to_layer!,\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n },\n ]\n }\n\n case \"pcb_silkscreen_rect\": {\n return [\n {\n _pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"rect\",\n x: element.center.x,\n y: element.center.y,\n w: element.width,\n h: element.height,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_circle\": {\n return [\n {\n _pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"circle\",\n x: element.center.x,\n y: element.center.y,\n r: element.radius,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_oval\": {\n return [\n {\n _pcb_drawing_object_id: `oval_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"oval\",\n x: element.center.x,\n y: element.center.y,\n rX: element.radius_x / 2,\n rY: element.radius_y / 2,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_pill\": {\n return [\n {\n _pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"pill\",\n x: element.center.x,\n y: element.center.y,\n w: element.width,\n h: element.height,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_silkscreen_line\": {\n return [\n {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: element.x1,\n y1: element.y1,\n x2: element.x2,\n y2: element.y2,\n width: 0.1, // TODO add strokewidth\n squareCap: false,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n },\n ]\n }\n\n case \"pcb_fabrication_note_path\":\n case \"pcb_silkscreen_path\": {\n const {\n pcb_component_id,\n route, // Array<{ x: number, y: number }>\n type,\n } = element\n\n let layer:\n | \"bottom_silkscreen\"\n | \"top_silkscreen\"\n | \"bottom_fabrication\"\n | \"top_fabrication\"\n | null\n\n if (type === \"pcb_silkscreen_path\") {\n layer =\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\"\n } else if (type === \"pcb_fabrication_note_path\") {\n layer = \"top_fabrication\"\n }\n\n return route\n .slice(0, -1)\n .map((point, index) => {\n const nextPoint = route[index + 1]\n return {\n _pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"line\",\n x1: point.x,\n y1: point.y,\n x2: nextPoint.x,\n y2: nextPoint.y,\n width: element.stroke_width ?? 0.1,\n squareCap: false,\n layer: layer!,\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n } as Primitive & MetaData\n })\n .filter(Boolean)\n }\n\n case \"pcb_silkscreen_text\": {\n return [\n {\n _pcb_drawing_object_id: `text_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"text\",\n x: element.anchor_position.x,\n y: element.anchor_position.y,\n layer:\n element.layer === \"bottom\" ? \"bottom_silkscreen\" : \"top_silkscreen\",\n align: element.anchor_alignment ?? \"center\",\n text: element.text,\n size: element.font_size, // Add the required 'size' property\n },\n ]\n }\n\n case \"pcb_fabrication_note_text\": {\n return [\n {\n _pcb_drawing_object_id: `text_${globalPcbDrawingObjectCount++}`,\n pcb_drawing_type: \"text\",\n x: element.anchor_position.x,\n y: element.anchor_position.y,\n layer:\n element.layer === \"bottom\"\n ? \"bottom_fabrication\"\n : \"top_fabrication\",\n size: element.font_size,\n align: element.anchor_alignment ?? \"center\",\n text: element.text,\n },\n ]\n }\n }\n\n // console.warn(`Unsupported element type: ${element.type}`)\n return []\n}\n","export interface Point {\n x: number;\n y: number;\n trace_width?: number;\n }\n\nexport function getExpandedStroke(\n strokeInput: (Point | [number, number] | number[])[],\n defaultWidth: number\n ): Point[] {\n if (strokeInput.length < 2) {\n throw new Error(\"Stroke must have at least two points\");\n }\n \n const stroke: Point[] = strokeInput.map(point => {\n if (Array.isArray(point)) {\n return { x: point[0], y: point[1] };\n }\n return point as Point;\n });\n \n const leftSide: Point[] = [];\n const rightSide: Point[] = [];\n \n function getNormal(p1: Point, p2: Point): Point {\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n const length = Math.sqrt(dx * dx + dy * dy);\n return { x: -dy / length, y: dx / length };\n }\n \n function addPoint(point: Point, normal: Point, factor: number, width: number) {\n const halfWidth = width / 2;\n const newPoint = {\n x: point.x + normal.x * halfWidth * factor,\n y: point.y + normal.y * halfWidth * factor,\n };\n if (factor > 0) {\n leftSide.push(newPoint);\n } else {\n rightSide.unshift(newPoint);\n }\n }\n \n // Handle the first point\n const firstNormal = getNormal(stroke[0]!, stroke[1]!);\n const firstWidth = stroke[0]!.trace_width ?? defaultWidth;\n addPoint(stroke[0]!, firstNormal, 1, firstWidth);\n addPoint(stroke[0]!, firstNormal, -1, firstWidth);\n \n // Handle middle points\n for (let i = 1; i < stroke.length - 1; i++) {\n const prev = stroke[i - 1]!;\n const current = stroke[i]!;\n const next = stroke[i + 1]!;\n \n const normalPrev = getNormal(prev, current);\n const normalNext = getNormal(current, next);\n \n // Calculate miter line\n const miterX = normalPrev.x + normalNext.x;\n const miterY = normalPrev.y + normalNext.y;\n const miterLength = Math.sqrt(miterX * miterX + miterY * miterY);\n \n const currentWidth = current.trace_width ?? defaultWidth;\n \n // Check if miter is too long (sharp corner)\n const miterLimit = 2; // Adjust this value to control when to bevel\n if (miterLength / 2 > miterLimit * (currentWidth / 2)) {\n // Use bevel join\n addPoint(current, normalPrev, 1, currentWidth);\n addPoint(current, normalNext, 1, currentWidth);\n addPoint(current, normalPrev, -1, currentWidth);\n addPoint(current, normalNext, -1, currentWidth);\n } else {\n // Use miter join\n const scale = 1 / miterLength;\n addPoint(current, { x: miterX * scale, y: miterY * scale }, 1, currentWidth);\n addPoint(current, { x: miterX * scale, y: miterY * scale }, -1, currentWidth);\n }\n }\n \n // Handle the last point\n const lastNormal = getNormal(\n stroke[stroke.length - 2]!,\n stroke[stroke.length - 1]!\n );\n const lastWidth = stroke[stroke.length - 1]!.trace_width ?? defaultWidth;\n addPoint(stroke[stroke.length - 1]!, lastNormal, 1, lastWidth);\n addPoint(stroke[stroke.length - 1]!, lastNormal, -1, lastWidth);\n \n // Combine left and right sides to form a closed polygon\n return [...leftSide, ...rightSide];\n }","import React, { useState } from \"react\"\nimport { useMemo } from \"react\"\nimport { Matrix, applyToPoint, inverse } from \"transformation-matrix\"\nimport { Primitive } from \"lib/types\"\nimport { ElementOverlayBox } from \"./ElementOverlayBox\"\nimport { AnyCircuitElement } from \"circuit-json\"\nimport { ifSetsMatchExactly } from \"lib/util/if-sets-match-exactly\"\n\nexport const MouseElementTracker = ({\n children,\n transform,\n primitives,\n onMouseHoverOverPrimitives,\n}: {\n children: any\n transform?: Matrix\n primitives: Primitive[]\n onMouseHoverOverPrimitives: (primitivesHoveredOver: Primitive[]) => void\n}) => {\n const [mousedPrimitives, setMousedPrimitives] = useState<Primitive[]>([])\n\n const highlightedPrimitives = useMemo(() => {\n const highlightedPrimitives: HighlightedPrimitive[] = []\n for (const primitive of mousedPrimitives) {\n if (primitive._element?.type === \"pcb_via\") continue\n if (primitive._element?.type === \"pcb_component\") continue\n if (primitive?.layer === \"drill\") continue\n const screenPos = applyToPoint(\n transform!,\n primitive as { x: number; y: number },\n )\n const w =\n \"w\" in primitive ? primitive.w : \"r\" in primitive ? primitive.r * 2 : 0\n const h =\n \"h\" in primitive ? primitive.h : \"r\" in primitive ? primitive.r * 2 : 0\n const screenSize = {\n w: w * transform!.a,\n h: h * transform!.a,\n }\n\n // FANCY: If 2+ highlighted primitives inhabit the same space, give\n // them an incrementing same_space_index\n let same_space_index = highlightedPrimitives.filter(\n (hp) =>\n screenPos.x === hp.screen_x &&\n screenPos.y === hp.screen_y &&\n screenSize.w === hp.screen_w &&\n screenSize.h === hp.screen_h,\n ).length\n\n highlightedPrimitives.push({\n ...(primitive as any),\n screen_x: screenPos.x,\n screen_y: screenPos.y,\n screen_w: screenSize.w,\n screen_h: screenSize.h,\n same_space_index,\n })\n }\n\n return highlightedPrimitives\n }, [mousedPrimitives, transform])\n return (\n <div\n style={{ position: \"relative\" }}\n onMouseMove={(e) => {\n if (transform) {\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n const rwPoint = applyToPoint(inverse(transform), { x, y })\n\n const newMousedPrimitives: Primitive[] = []\n for (const primitive of primitives) {\n if (\n !(\n \"x\" in primitive &&\n \"y\" in primitive &&\n ((\"w\" in primitive && \"h\" in primitive) || \"r\" in primitive)\n )\n )\n continue\n if (!primitive._element) continue\n\n const w = \"w\" in primitive ? primitive.w : primitive.r * 2\n const h = \"h\" in primitive ? primitive.h : primitive.r * 2\n\n if (\n Math.abs(primitive.x - rwPoint.x) < w / 2 &&\n Math.abs(primitive.y - rwPoint.y) < h / 2\n ) {\n newMousedPrimitives.push(primitive)\n }\n }\n\n if (\n ifSetsMatchExactly(\n new Set(newMousedPrimitives.map((p) => p._pcb_drawing_object_id)),\n new Set(mousedPrimitives.map((p) => p._pcb_drawing_object_id)),\n )\n ) {\n return\n }\n\n setMousedPrimitives(newMousedPrimitives)\n onMouseHoverOverPrimitives(newMousedPrimitives)\n }\n }}\n >\n {children}\n <ElementOverlayBox highlightedPrimitives={highlightedPrimitives} />\n </div>\n )\n}\n\nexport type HighlightedPrimitive = {\n x: number\n y: number\n w: number\n h: number\n same_space_index?: number\n _element: AnyCircuitElement\n _parent_pcb_component?: AnyCircuitElement\n _parent_source_component?: AnyCircuitElement\n _source_port?: AnyCircuitElement\n screen_x: number\n screen_y: number\n screen_w: number\n screen_h: number\n}\n","import React, { useEffect, useState } from \"react\"\nimport { HighlightedPrimitive } from \"./MouseElementTracker\"\nimport colors from \"lib/colors\"\nimport { useGlobalStore } from \"global-store\"\n\nconst containerStyle = {\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n color: \"red\",\n fontFamily: \"sans-serif\",\n fontSize: 12,\n textShadow: \"0 0 2px black\",\n} as const\n\nexport const getTextForHighlightedPrimitive = (\n prim: HighlightedPrimitive,\n): string => {\n const {\n _element: element,\n _parent_pcb_component,\n _parent_source_component,\n _source_port,\n } = prim\n switch (element.type) {\n case \"pcb_smtpad\":\n case \"pcb_plated_hole\": {\n let s = \"\"\n\n if (\n _parent_source_component &&\n \"name\" in _parent_source_component &&\n _parent_source_component.name\n ) {\n s += `.${_parent_source_component.name} > `\n }\n\n const port_hints = Array.from(\n new Set(\n (element.port_hints ?? []).concat(\n (_source_port as any)?.port_hints ?? [],\n ),\n ),\n )\n // reverse alphabetical order\n .sort((a, b) => b.localeCompare(a))\n\n s += port_hints\n .map((ph: string) => (ph.match(/^[0-9]+$/) ? `port.${ph}` : `.${ph}`))\n .join(\", \")\n\n return s\n }\n default: {\n return \"\"\n }\n }\n}\n\nconst layerColorHightlightMap = {\n top: \"red\",\n bottom: \"aqua\",\n}\n\nexport const HighlightedPrimitiveBoxWithText = ({\n primitive,\n}: {\n primitive: HighlightedPrimitive\n}) => {\n const [finalState, setFinalState] = useState(false)\n\n useEffect(() => {\n setTimeout(() => {\n setFinalState(true)\n }, 100)\n }, [])\n\n let [x, y, w, h] = [\n primitive.screen_x,\n primitive.screen_y,\n primitive.screen_w,\n primitive.screen_h,\n ]\n\n const si = primitive.same_space_index ?? 0\n const sip = 26\n\n const color: string =\n layerColorHightlightMap[\n (primitive as any)?._element\n ?.layer as keyof typeof layerColorHightlightMap\n ] ?? \"red\"\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: x - w / 2 - 8,\n top: y - h / 2 - 8,\n width: w + 16,\n height: h + 16,\n color,\n }}\n >\n <div\n style={{\n // width: finalState ? `${100 + 20 * si}%` : \"100%\",\n // height: finalState ? `${100 + 20 * si}%` : \"100%\",\n // marginLeft: finalState ? `${-10 * si}%` : 0,\n // marginTop: finalState ? `${-10 * si}%` : 0,\n width: finalState ? `calc(100% + ${sip * 2 * si}px)` : \"100%\",\n height: finalState ? `calc(100% + ${sip * 2 * si}px)` : \"100%\",\n marginLeft: finalState ? `${-sip * si}px` : 0,\n marginTop: finalState ? `${-sip * si}px` : 0,\n border: `1px solid ${color}`,\n opacity: finalState ? 1 : si === 0 ? 1 : 0,\n transition:\n \"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n left: 0,\n bottom: h + 20 + sip * si,\n marginLeft: finalState ? `${-sip * si}px` : 0,\n marginBottom: finalState ? 0 : -sip * si,\n transition: \"margin-left 0.2s, margin-bottom 0.2s\",\n lineHeight: \"0.8em\",\n }}\n >\n {getTextForHighlightedPrimitive(primitive)}\n </div>\n </div>\n </div>\n )\n}\n\nexport const ElementOverlayBox = ({\n highlightedPrimitives,\n}: {\n highlightedPrimitives: HighlightedPrimitive[]\n}) => {\n const is_moving_component = useGlobalStore((s) => s.is_moving_component)\n\n return (\n <div style={containerStyle}>\n {!is_moving_component &&\n highlightedPrimitives.map((primitive, i) => (\n <HighlightedPrimitiveBoxWithText key={i} primitive={primitive} />\n ))}\n </div>\n )\n}\n","export function ifSetsMatchExactly(set1: Set<any>, set2: Set<any>) {\n if (set1.size !== set2.size) return false\n return Array.from(set1).every((item) => set2.has(item))\n}\n","import { useEffect, useRef, useState } from \"react\"\nimport { Matrix, applyToPoint, identity, inverse } from \"transformation-matrix\"\n\ninterface Props {\n transform?: Matrix\n children: any\n}\n\nexport const DimensionOverlay = ({ children, transform }: Props) => {\n if (!transform) transform = identity()\n const [dimensionToolVisible, setDimensionToolVisible] = useState(false)\n const [dimensionToolStretching, setDimensionToolStretching] = useState(false)\n // Start of dimension tool line in real-world coordinates (not screen)\n const [dStart, setDStart] = useState({ x: 0, y: 0 })\n // End of dimension tool line in real-world coordinates (not screen)\n const [dEnd, setDEnd] = useState({ x: 0, y: 0 })\n const mousePosRef = useRef({ x: 0, y: 0 })\n const containerRef = useRef<HTMLDivElement | null>(null)\n const container = containerRef.current!\n const containerBounds = container?.getBoundingClientRect()\n useEffect(() => {\n const container = containerRef.current\n\n const down = (e: KeyboardEvent) => {\n if (e.key === \"d\") {\n setDStart({ x: mousePosRef.current.x, y: mousePosRef.current.y })\n setDEnd({ x: mousePosRef.current.x, y: mousePosRef.current.y })\n setDimensionToolVisible((visible: boolean) => !visible)\n setDimensionToolStretching(true)\n e.preventDefault()\n }\n if (e.key === \"Escape\") {\n setDimensionToolVisible(false)\n setDimensionToolStretching(false)\n }\n }\n\n const addKeyListener = () => {\n if (container) {\n container.addEventListener(\"keydown\", down)\n }\n }\n\n const removeKeyListener = () => {\n if (container) {\n container.removeEventListener(\"keydown\", down)\n }\n }\n\n if (container) {\n container.addEventListener(\"focus\", addKeyListener)\n container.addEventListener(\"blur\", removeKeyListener)\n container.addEventListener(\"mouseenter\", addKeyListener)\n container.addEventListener(\"mouseleave\", removeKeyListener)\n }\n return () => {\n if (container) {\n container.removeEventListener(\"focus\", addKeyListener)\n container.removeEventListener(\"blur\", removeKeyListener)\n container.removeEventListener(\"mouseenter\", addKeyListener)\n container.removeEventListener(\"mouseleave\", removeKeyListener)\n }\n }\n }, [containerRef])\n\n const screenDStart = applyToPoint(transform, dStart)\n const screenDEnd = applyToPoint(transform, dEnd)\n\n const arrowScreenBounds = {\n left: Math.min(screenDStart.x, screenDEnd.x),\n right: Math.max(screenDStart.x, screenDEnd.x),\n top: Math.min(screenDStart.y, screenDEnd.y),\n bottom: Math.max(screenDStart.y, screenDEnd.y),\n flipX: screenDStart.x > screenDEnd.x,\n flipY: screenDStart.y > screenDEnd.y,\n width: 0,\n height: 0,\n }\n arrowScreenBounds.width = arrowScreenBounds.right - arrowScreenBounds.left\n arrowScreenBounds.height = arrowScreenBounds.bottom - arrowScreenBounds.top\n\n return (\n <div\n ref={containerRef}\n tabIndex={0}\n style={{ position: \"relative\" }}\n onMouseEnter={() => {\n if (containerRef.current) {\n containerRef.current.focus()\n }\n }}\n onMouseLeave={() => {\n if (containerRef.current) {\n containerRef.current.blur()\n }\n }}\n onMouseMove={(e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n const rwPoint = applyToPoint(inverse(transform!), { x, y })\n mousePosRef.current.x = rwPoint.x\n mousePosRef.current.y = rwPoint.y\n\n if (dimensionToolStretching) {\n setDEnd({ x: rwPoint.x, y: rwPoint.y })\n }\n }}\n onMouseDown={() => {\n if (dimensionToolStretching) {\n setDimensionToolStretching(false)\n } else if (dimensionToolVisible) {\n setDimensionToolVisible(false)\n }\n }}\n >\n {children}\n {dimensionToolVisible && (\n <>\n <div\n style={{\n position: \"absolute\",\n left: arrowScreenBounds.left,\n width: arrowScreenBounds.width,\n textAlign: \"center\",\n top: screenDStart.y + 2,\n color: \"red\",\n mixBlendMode: \"difference\",\n pointerEvents: \"none\",\n marginTop: arrowScreenBounds.flipY ? 0 : -20,\n fontSize: 12,\n fontFamily: \"sans-serif\",\n zIndex: 1000,\n }}\n >\n {Math.abs(dStart.x - dEnd.x).toFixed(2)}\n </div>\n <div\n style={{\n position: \"absolute\",\n left: screenDEnd.x,\n height: arrowScreenBounds.height,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n top: arrowScreenBounds.top,\n color: \"red\",\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n fontSize: 12,\n fontFamily: \"sans-serif\",\n zIndex: 1000,\n }}\n >\n <div\n style={{\n marginLeft: arrowScreenBounds.flipX ? \"-100%\" : 4,\n paddingRight: 4,\n }}\n >\n {Math.abs(dStart.y - dEnd.y).toFixed(2)}\n </div>\n </div>\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width={containerBounds.width}\n height={containerBounds.height}\n >\n <defs>\n <marker\n id=\"head\"\n orient=\"auto\"\n markerWidth=\"3\"\n markerHeight=\"4\"\n refX=\"2\"\n refY=\"2\"\n >\n <path d=\"M0,0 V4 L2,2 Z\" fill=\"red\" />\n </marker>\n </defs>\n <line\n x1={screenDStart.x}\n y1={screenDStart.y}\n x2={screenDEnd.x}\n y2={screenDEnd.y}\n markerEnd=\"url(#head)\"\n strokeWidth={1.5}\n fill=\"none\"\n stroke=\"red\"\n />\n <line\n x1={screenDStart.x}\n y1={screenDStart.y}\n x2={screenDEnd.x}\n y2={screenDStart.y}\n strokeWidth={1.5}\n fill=\"none\"\n strokeDasharray={\"2,2\"}\n stroke=\"red\"\n />\n <line\n x1={screenDEnd.x}\n y1={screenDStart.y}\n x2={screenDEnd.x}\n y2={screenDEnd.y}\n strokeWidth={1.5}\n fill=\"none\"\n strokeDasharray={\"2,2\"}\n stroke=\"red\"\n />\n </svg>\n <div\n style={{\n right: 0,\n bottom: 0,\n position: \"absolute\",\n color: \"red\",\n fontFamily: \"sans-serif\",\n fontSize: 12,\n margin: 4,\n }}\n >\n ({dStart.x.toFixed(2)},{dStart.y.toFixed(2)})<br />(\n {dEnd.x.toFixed(2)},{dEnd.y.toFixed(2)})<br />\n dist:{\" \"}\n {Math.sqrt(\n Math.pow(dEnd.x - dStart.x, 2) + Math.pow(dEnd.y - dStart.y, 2),\n ).toFixed(2)}\n </div>\n </>\n )}\n </div>\n )\n}\n","import { Fragment, useState } from \"react\"\nimport { css } from \"@emotion/css\"\nimport { type LayerRef, type PCBTraceError, all_layers } from \"circuit-json\"\nimport type { AnySoupElement } from \"circuit-json\"\nimport { LAYER_NAME_TO_COLOR } from \"lib/Drawer\"\nimport { useGlobalStore } from \"global-store\"\nimport packageJson from \"../../package.json\"\n\ninterface Props {\n children?: any\n elements?: AnySoupElement[]\n}\n\nexport const LayerButton = ({\n name,\n selected,\n onClick,\n}: {\n name: string\n selected?: boolean\n onClick: (e: any) => any\n}) => {\n return (\n <div\n className={css`\n margin-top: 2px;\n padding: 4px;\n padding-left: 8px;\n padding-right: 18px;\n cursor: pointer;\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.1);\n }\n `}\n onClick={onClick}\n >\n <span style={{ marginRight: 2, opacity: selected ? 1 : 0 }}>•</span>\n <span\n style={{\n marginLeft: 2,\n fontWeight: 500,\n color: (LAYER_NAME_TO_COLOR as any)[name.replace(/-/, \"\")],\n }}\n >\n {name}\n </span>\n </div>\n )\n}\n\nexport const ToolbarButton = ({ children, ...props }: any) => (\n <div\n {...props}\n style={{\n backgroundColor: \"#1F1F1F\",\n border: \"1px solid #666\",\n margin: 4,\n padding: 4,\n paddingLeft: 6,\n paddingRight: 6,\n borderRadius: 2,\n alignSelf: \"start\",\n color: \"#eee\",\n cursor: \"pointer\",\n ...props.style,\n }}\n >\n {children}\n </div>\n)\n\nexport const ToolbarOverlay = ({ children, elements }: Props) => {\n const [isMouseOverContainer, setIsMouseOverContainer] = useState(false)\n const [isLayerMenuOpen, setLayerMenuOpen] = useState(false)\n const [isErrorsOpen, setErrorsOpen] = useState(false)\n const [selectedLayer, selectLayer] = useGlobalStore(\n (s) => [s.selected_layer, s.selectLayer] as const,\n )\n const [in_move_footprint_mode, in_draw_trace_mode, is_showing_rats_nest] =\n useGlobalStore((s) => [\n s.in_move_footprint_mode,\n s.in_draw_trace_mode,\n s.is_showing_rats_nest,\n ])\n const setEditMode = useGlobalStore((s) => s.setEditMode)\n const setIsShowingRatsNest = useGlobalStore((s) => s.setIsShowingRatsNest)\n\n const errorCount =\n elements?.filter((e) => e.type.includes(\"error\")).length ?? 0\n\n return (\n <div\n style={{ position: \"relative\" }}\n onMouseEnter={() => {\n setIsMouseOverContainer(true)\n }}\n onMouseLeave={(e) => {\n setIsMouseOverContainer(false)\n setLayerMenuOpen(false)\n }}\n >\n {children}\n <div\n style={{\n position: \"absolute\",\n bottom: 4,\n right: 8,\n pointerEvents: \"none\",\n color: \"white\",\n fontSize: 11,\n opacity: isMouseOverContainer ? 0.5 : 0,\n transition: \"opacity 1s\",\n transitionDelay: \"2s\",\n fontFamily: \"sans-serif\",\n }}\n >\n @tscircuit/pcb-viewer@{packageJson.version}\n </div>\n <div\n style={{\n position: \"absolute\",\n opacity: isMouseOverContainer ? 1 : 0,\n top: 16,\n left: 16,\n transition: isMouseOverContainer\n ? \"opacity 100ms linear\"\n : \"opacity 1s linear\",\n zIndex: 100,\n color: \"red\",\n display: \"flex\",\n fontSize: 12,\n height: 100,\n fontFamily: \"sans-serif\",\n }}\n >\n <ToolbarButton\n onClick={() => {\n setLayerMenuOpen(!isLayerMenuOpen)\n }}\n onMouseLeave={() => {\n if (isLayerMenuOpen) {\n setLayerMenuOpen(false)\n }\n }}\n >\n <div>\n layer:{\" \"}\n <span\n style={{\n marginLeft: 2,\n fontWeight: 500,\n color: (LAYER_NAME_TO_COLOR as any)[selectedLayer as string],\n }}\n >\n {selectedLayer as string}\n </span>\n </div>\n {isLayerMenuOpen && (\n <div style={{ marginTop: 4, minWidth: 120 }}>\n {all_layers\n .map((l) => l.replace(/-/g, \"\")) // TODO remove when inner-1 becomes inner1\n .map((layer) => (\n <LayerButton\n key={layer}\n name={layer}\n selected={layer === selectedLayer}\n onClick={() => {\n selectLayer(layer.replace(/-/, \"\") as LayerRef)\n }}\n />\n ))}\n </div>\n )}\n </ToolbarButton>\n <ToolbarButton\n style={errorCount > 0 ? { color: \"red\" } : {}}\n onClick={() => setErrorsOpen(!isErrorsOpen)}\n onMouseLeave={() => setErrorsOpen(false)}\n >\n <div>{errorCount} errors</div>\n {isErrorsOpen && (\n <div\n style={{ display: \"grid\", gridTemplateColumns: \"100px 300px\" }}\n >\n {elements\n ?.filter((e): e is PCBTraceError => e.type.includes(\"error\"))\n .map((e, i) => (\n <Fragment key={i}>\n <div>{e.error_type}</div>\n <div>{e.message}</div>\n </Fragment>\n ))}\n </div>\n )}\n </ToolbarButton>\n <ToolbarButton\n style={{}}\n onClick={() => {\n setEditMode(in_draw_trace_mode ? \"off\" : \"draw_trace\")\n }}\n >\n <div>\n {in_draw_trace_mode ? \"✖ \" : \"\"}\n Edit Traces\n </div>\n </ToolbarButton>\n <ToolbarButton\n style={{}}\n onClick={() => {\n setEditMode(in_move_footprint_mode ? \"off\" : \"move_footprint\")\n }}\n >\n <div>\n {in_move_footprint_mode ? \"✖ \" : \"\"}\n Move Components\n </div>\n </ToolbarButton>\n <ToolbarButton\n style={{}}\n onClick={() => {\n setIsShowingRatsNest(!is_showing_rats_nest)\n }}\n >\n <div>\n {is_showing_rats_nest ? \"✖ \" : \"\"}\n Rats Nest\n </div>\n </ToolbarButton>\n </div>\n </div>\n )\n}\n","{\n \"name\": \"@tscircuit/pcb-viewer\",\n \"version\": \"1.10.4\",\n \"main\": \"dist/index.js\",\n \"repository\": \"tscircuit/pcb-viewer\",\n \"license\": \"MIT\",\n \"scripts\": {\n \"start\": \"storybook dev -p 6006\",\n \"build\": \"tsup ./src/index.tsx --dts --sourcemap --outDir dist\",\n \"yalc\": \"npm run build && yalc push\",\n \"storybook\": \"storybook dev -p 6006\",\n \"build-storybook\": \"storybook build\"\n },\n \"files\": [\n \"dist\"\n ],\n \"devDependencies\": {\n \"@biomejs/biome\": \"^1.7.3\",\n \"@semantic-release/commit-analyzer\": \"^9.0.2\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/npm\": \"^9.0.1\",\n \"@semantic-release/release-notes-generator\": \"^10.0.3\",\n \"@storybook/nextjs\": \"^8.0.6\",\n \"@storybook/react\": \"^8.0.6\",\n \"@swc/core\": \"^1.4.12\",\n \"@tscircuit/builder\": \"^1.11.4\",\n \"@tscircuit/core\": \"^0.0.88\",\n \"@tscircuit/eagle-xml-converter\": \"^0.0.6\",\n \"@tscircuit/props\": \"^0.0.46\",\n \"@tscircuit/react-fiber\": \"^1.1.25\",\n \"@tscircuit/soup-util\": \"^0.0.13\",\n \"@types/color\": \"^3.0.6\",\n \"@types/node\": \"18.7.23\",\n \"@types/react\": \"^18.3.3\",\n \"circuit-json\": \"^0.0.77\",\n \"next\": \"^14.1.4\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"react-use\": \"^17.4.0\",\n \"storybook\": \"^8.0.6\",\n \"tsup\": \"^8.0.2\",\n \"type-fest\": \"^3.0.0\",\n \"typescript\": \"^5.4.4\",\n \"use-mouse-matrix-transform\": \"^1.1.13\",\n \"zod\": \"^3.23.5\"\n },\n \"peerDependencies\": {\n \"@tscircuit/builder\": \"*\",\n \"@tscircuit/react-fiber\": \"*\",\n \"react\": \"*\"\n },\n \"dependencies\": {\n \"@emotion/css\": \"^11.11.2\",\n \"circuit-json-to-connectivity-map\": \"^0.0.16\",\n \"circuit-to-svg\": \"^0.0.36\",\n \"color\": \"^4.2.3\",\n \"react-supergrid\": \"^1.0.10\",\n \"react-toastify\": \"^10.0.5\",\n \"transformation-matrix\": \"^2.13.0\",\n \"zustand\": \"^4.5.2\"\n }\n}\n","import { css } from \"@emotion/css\"\nimport type { AnySoupElement, PCBPort, PCBTraceError } from \"circuit-json\"\nimport { useRef } from \"react\"\nimport { type Matrix, applyToPoint, identity } from \"transformation-matrix\"\n\ninterface Props {\n transform?: Matrix\n elements?: AnySoupElement[]\n children: any\n}\n\nconst ErrorSVG = ({\n screenPort1,\n screenPort2,\n errorCenter,\n canLineBeDrawn,\n}: any) => (\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width=\"100%\"\n height=\"100%\"\n >\n {canLineBeDrawn && (\n <>\n <line\n x1={screenPort1.x}\n y1={screenPort1.y}\n x2={errorCenter.x}\n y2={errorCenter.y}\n strokeWidth={1.5}\n strokeDasharray=\"2,2\"\n stroke=\"red\"\n />\n <line\n x1={errorCenter.x}\n y1={errorCenter.y}\n x2={screenPort2.x}\n y2={screenPort2.y}\n strokeWidth={1.5}\n strokeDasharray=\"2,2\"\n stroke=\"red\"\n />\n <rect\n x={errorCenter.x - 5}\n y={errorCenter.y - 5}\n width={10}\n height={10}\n transform={`rotate(45 ${errorCenter.x} ${errorCenter.y})`}\n fill=\"red\"\n />\n </>\n )}\n </svg>\n)\n\nexport const ErrorOverlay = ({ children, transform, elements }: Props) => {\n if (!transform) transform = identity()\n const containerRef = useRef<HTMLDivElement | null>(null)\n\n return (\n <div style={{ position: \"relative\" }} ref={containerRef}>\n {children}\n {elements\n ?.filter((el): el is PCBTraceError => el.type === \"pcb_error\")\n .map((el: PCBTraceError) => {\n const { pcb_port_ids } = el\n\n const port1 = elements.find(\n (el): el is PCBPort =>\n el.type === \"pcb_port\" && el.pcb_port_id === pcb_port_ids?.[0],\n )\n const port2 = elements.find(\n (el): el is PCBPort =>\n el.type === \"pcb_port\" && el.pcb_port_id === pcb_port_ids?.[1],\n )\n\n if (!port1 || !port2) return null\n\n const screenPort1 = applyToPoint(transform, {\n x: port1.x,\n y: port1.y,\n })\n const screenPort2 = applyToPoint(transform, {\n x: port2.x,\n y: port2.y,\n })\n\n const canLineBeDrawn = !(\n isNaN(screenPort1.x) ||\n isNaN(screenPort1.y) ||\n isNaN(screenPort2.x) ||\n isNaN(screenPort2.y)\n )\n\n const errorCenter = {\n x: (screenPort1.x + screenPort2.x) / 2,\n y: (screenPort1.y + screenPort2.y) / 2,\n }\n\n if (isNaN(errorCenter.x) || isNaN(errorCenter.y)) {\n return null\n }\n\n return (\n <>\n <ErrorSVG\n screenPort1={screenPort1}\n screenPort2={screenPort2}\n errorCenter={errorCenter}\n canLineBeDrawn={canLineBeDrawn}\n />\n <div\n className={css`\n position: absolute;\n z-index: 100;\n left: ${errorCenter.x}px;\n top: ${errorCenter.y}px;\n color: red;\n text-align: center;\n font-family: sans-serif;\n font-size: 12px;\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: pointer;\n transform: translate(-50%, -100%);\n\n & .error-message {\n opacity: 0;\n pointer-events: none;\n\n width: 200px;\n transition: opacity 0.2s;\n margin-bottom: 10px;\n }\n\n &:hover .error-message {\n opacity: 1;\n display: flex;\n }\n `}\n >\n <div className=\"error-message\">{el.message}</div>\n <div\n className={css`\n width: 10px;\n height: 10px;\n transform: translate(0, 5px) rotate(45deg);\n background-color: red;\n `}\n />\n </div>\n </>\n )\n })}\n </div>\n )\n}\n","import type { AnySoupElement, PCBComponent } from \"circuit-json\"\nimport { useGlobalStore } from \"global-store\"\nimport { EditEvent } from \"lib/edit-events\"\nimport { useEffect, useRef, useState } from \"react\"\nimport { Matrix, applyToPoint, identity, inverse } from \"transformation-matrix\"\n\ninterface Props {\n transform?: Matrix\n children: any\n soup: AnySoupElement[]\n disabled?: boolean\n cancelPanDrag: Function\n onCreateEditEvent: (event: EditEvent) => void\n onModifyEditEvent: (event: Partial<EditEvent>) => void\n}\n\nconst isInsideOf = (\n pcb_component: PCBComponent,\n point: { x: number; y: number },\n padding: number = 0,\n) => {\n const halfWidth = pcb_component.width / 2\n const halfHeight = pcb_component.height / 2\n\n const left = pcb_component.center.x - halfWidth - padding\n const right = pcb_component.center.x + halfWidth + padding\n const top = pcb_component.center.y - halfHeight - padding\n const bottom = pcb_component.center.y + halfHeight + padding\n\n return point.x > left && point.x < right && point.y > top && point.y < bottom\n}\n\nexport const EditPlacementOverlay = ({\n children,\n disabled: disabledProp,\n transform,\n soup,\n cancelPanDrag,\n onCreateEditEvent,\n onModifyEditEvent,\n}: Props) => {\n if (!transform) transform = identity()\n const containerRef = useRef<HTMLDivElement | null>(null)\n const [activePcbComponentId, setActivePcbComponent] = useState<null | string>(\n null,\n )\n const [dragState, setDragState] = useState<{\n dragStart: { x: number; y: number }\n originalCenter: { x: number; y: number }\n dragEnd: { x: number; y: number }\n edit_event_id: string\n } | null>(null)\n const isPcbComponentActive = activePcbComponentId !== null\n const in_edit_mode = useGlobalStore((s) => s.in_edit_mode)\n const in_move_footprint_mode = useGlobalStore((s) => s.in_move_footprint_mode)\n const setIsMovingComponent = useGlobalStore((s) => s.setIsMovingComponent)\n\n const disabled = disabledProp || !in_move_footprint_mode\n\n return (\n <div\n ref={containerRef}\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n }}\n onMouseDown={(e) => {\n if (disabled) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n\n let foundActiveComponent = false\n for (const e of soup) {\n if (\n e.type === \"pcb_component\" &&\n isInsideOf(e, rwMousePoint, 10 / transform.a)\n ) {\n cancelPanDrag()\n setActivePcbComponent(e.pcb_component_id)\n foundActiveComponent = true\n const edit_event_id = Math.random().toString()\n setDragState({\n dragStart: rwMousePoint,\n originalCenter: e.center,\n dragEnd: rwMousePoint,\n edit_event_id,\n })\n\n onCreateEditEvent({\n edit_event_id,\n pcb_edit_event_type: \"edit_component_location\",\n pcb_component_id: e.pcb_component_id,\n original_center: e.center,\n new_center: e.center,\n in_progress: true,\n created_at: Date.now(),\n })\n\n setIsMovingComponent(true)\n break\n }\n }\n if (!foundActiveComponent) {\n setActivePcbComponent(null)\n }\n\n if (foundActiveComponent) {\n e.preventDefault()\n return false\n }\n }}\n onMouseMove={(e) => {\n if (!activePcbComponentId || !dragState) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n setDragState({\n ...dragState,\n dragEnd: rwMousePoint,\n })\n onModifyEditEvent({\n edit_event_id: dragState.edit_event_id,\n new_center: {\n x:\n dragState.originalCenter.x +\n rwMousePoint.x -\n dragState.dragStart.x,\n y:\n dragState.originalCenter.y +\n rwMousePoint.y -\n dragState.dragStart.y,\n },\n })\n }}\n onMouseUp={(e) => {\n if (!activePcbComponentId) return\n setActivePcbComponent(null)\n setIsMovingComponent(false)\n if (dragState) {\n onModifyEditEvent({\n edit_event_id: dragState.edit_event_id,\n in_progress: false,\n })\n setDragState(null)\n }\n }}\n >\n {children}\n {!disabled &&\n soup\n .filter((e): e is PCBComponent => e.type === \"pcb_component\")\n .map((e) => {\n if (!e?.center) return null\n const projectedCenter = applyToPoint(transform, e.center)\n\n return (\n <div\n key={e.pcb_component_id}\n style={{\n position: \"absolute\",\n pointerEvents: \"none\",\n // b/c of transform, this is actually center not left/top\n left: projectedCenter.x,\n top: projectedCenter.y,\n width: e.width * transform.a + 20,\n height: e.height * transform.a + 20,\n transform: \"translate(-50%, -50%)\",\n background:\n isPcbComponentActive &&\n activePcbComponentId === e.pcb_component_id\n ? \"rgba(255, 0, 0, 0.2)\"\n : \"\",\n }}\n />\n )\n })}\n </div>\n )\n}\n","import type {\n AnySoupElement,\n PCBSMTPad,\n PcbTraceHint,\n PCBPlatedHole,\n} from \"circuit-json\"\nimport { su } from \"@tscircuit/soup-util\"\nimport { useGlobalStore } from \"global-store\"\nimport { type EditTraceHintEvent } from \"lib/edit-events\"\nimport { Fragment, useEffect, useRef, useState } from \"react\"\nimport {\n type Matrix,\n applyToPoint,\n identity,\n inverse,\n} from \"transformation-matrix\"\nimport { HotkeyActionMenu } from \"./HotkeyActionMenu\"\nimport { useToast } from \"lib/toast\"\n\ninterface Props {\n transform?: Matrix\n children: any\n soup: AnySoupElement[]\n disabled?: boolean\n cancelPanDrag: Function\n onCreateEditEvent: (event: EditTraceHintEvent) => void\n onModifyEditEvent: (event: Partial<EditTraceHintEvent>) => void\n}\n\ninterface Point {\n x: number\n y: number\n trace_width?: number\n}\n\nconst isInsideOfSmtpad = (\n elm: PCBSMTPad,\n point: { x: number; y: number },\n padding = 0,\n) => {\n if (elm.shape === \"circle\") {\n // Not implemented\n return false\n }\n const halfWidth = elm.width / 2\n const halfHeight = elm.height / 2\n\n const left = elm.x - halfWidth - padding\n const right = elm.x + halfWidth + padding\n const top = elm.y - halfHeight - padding\n const bottom = elm.y + halfHeight + padding\n\n return point.x > left && point.x < right && point.y > top && point.y < bottom\n}\n\nconst isInsideOfPlatedHole = (\n hole: PCBPlatedHole,\n point: { x: number; y: number },\n padding = 0,\n) => {\n if (hole.shape === \"circle\") {\n const distance = Math.sqrt(\n Math.pow(point.x - hole.x, 2) + Math.pow(point.y - hole.y, 2),\n )\n return distance <= hole.outer_diameter / 2 + padding\n } else {\n const halfWidth = hole.hole_width / 2\n const halfHeight = hole.hole_height / 2\n\n const left = hole.x - halfWidth - padding\n const right = hole.x + halfWidth + padding\n const top = hole.y - halfHeight - padding\n const bottom = hole.y + halfHeight + padding\n\n return (\n point.x > left && point.x < right && point.y > top && point.y < bottom\n )\n }\n}\n\n/**\n * The trace hit overlay allows you to click a pad, after\n * clicking a pad you'll start dragging out a trace.\n *\n * Each time you click, you'll add to the trace hint path.\n *\n * If you click inside any existing hint, you'll stop adding\n * to the trace hint path.\n *\n * If you select an existing hint, you'll start dragging the\n * route hint. Mouse up stops dragging.\n *\n * If you right click on a hint, you'll delete it.\n *\n * If you right click when creating a trace hint, it will\n * place a hint you'll exit adding the trace hint.\n *\n */\nexport const EditTraceHintOverlay = ({\n children,\n disabled: disabledProp,\n transform,\n soup,\n cancelPanDrag,\n onCreateEditEvent,\n onModifyEditEvent,\n}: Props) => {\n if (!transform) transform = identity()\n const containerRef = useRef<HTMLDivElement | null>(null)\n const containerBounds = containerRef.current?.getBoundingClientRect()\n const [selectedElement, setSelectedElement] = useState<\n null | PCBSMTPad | PCBPlatedHole\n >(null)\n const toast = useToast()\n const [dragState, setDragState] = useState<{\n dragStart: { x: number; y: number }\n originalCenter: { x: number; y: number }\n dragEnd: { x: number; y: number }\n editEvent: EditTraceHintEvent\n shouldDrawRouteHint?: boolean\n } | null>(null)\n const [shouldCreateAsVia, setShouldCreateAsVia] = useState(false)\n const isElementSelected = selectedElement !== null\n const in_edit_trace_mode = useGlobalStore((s) => s.in_draw_trace_mode)\n\n const disabled = disabledProp || !in_edit_trace_mode\n\n let ogCenterScreen, dragEndScreen\n if (dragState?.originalCenter && dragState?.dragEnd) {\n ogCenterScreen = applyToPoint(transform, dragState?.originalCenter!)\n dragEndScreen = applyToPoint(transform, dragState?.dragEnd!)\n }\n\n useEffect(() => {\n if (!isElementSelected) return\n\n function keyDown(e: KeyboardEvent) {\n if (e.key === \"Escape\") {\n setSelectedElement(null)\n setDragState(null)\n }\n }\n\n window.addEventListener(\"keydown\", keyDown)\n return () => window.removeEventListener(\"keydown\", keyDown)\n }, [isElementSelected])\n\n return (\n <div\n ref={containerRef}\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n }}\n onMouseDown={(e) => {\n if (disabled) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n\n if (!isElementSelected) {\n for (const e of soup) {\n if (\n (e.type === \"pcb_smtpad\" &&\n isInsideOfSmtpad(e, rwMousePoint, 10 / transform.a)) ||\n (e.type === \"pcb_plated_hole\" &&\n isInsideOfPlatedHole(e, rwMousePoint, 10 / transform.a))\n ) {\n if (!e.pcb_port_id) {\n toast.error(`pcb_port_id is null on the selected \"${e.type}\"`)\n return\n }\n setSelectedElement(e)\n setShouldCreateAsVia(false)\n setDragState({\n dragStart: rwMousePoint,\n originalCenter: { x: e.x, y: e.y },\n dragEnd: rwMousePoint,\n editEvent: {\n pcb_edit_event_type: \"edit_trace_hint\",\n pcb_port_id: e.pcb_port_id!,\n pcb_trace_hint_id: Math.random().toString(),\n route: [],\n created_at: Date.now(),\n edit_event_id: Math.random().toString(),\n in_progress: true,\n },\n shouldDrawRouteHint: false,\n })\n\n cancelPanDrag()\n break\n }\n }\n } else {\n setDragState({\n ...(dragState as any),\n dragStart: rwMousePoint,\n shouldDrawRouteHint: true,\n })\n }\n }}\n onMouseMove={(e) => {\n if (!isElementSelected || !dragState) return\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n setDragState({\n ...dragState,\n dragEnd: rwMousePoint,\n })\n }}\n onMouseUp={(e) => {\n if (!isElementSelected) return\n if (!dragState?.shouldDrawRouteHint) return\n\n // Compute distance that has been dragged\n const { dragStart, dragEnd } = dragState\n const rwDist = Math.sqrt(\n (dragEnd.x - dragStart.x) ** 2 + (dragEnd.y - dragStart.y) ** 2,\n )\n const screenDist = rwDist * transform.a\n\n // If the user dragged, don't create a point\n if (screenDist > 20) return\n\n const rect = e.currentTarget.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n if (isNaN(x) || isNaN(y)) return\n const rwMousePoint = applyToPoint(inverse(transform!), { x, y })\n\n if (dragState) {\n cancelPanDrag()\n const lastPointScreen = applyToPoint(\n transform,\n dragState.editEvent.route.slice(-1)[0] ?? dragState.originalCenter,\n )\n const distanceFromLastPoint = Math.sqrt(\n (x - lastPointScreen.x) ** 2 + (y - lastPointScreen.y) ** 2,\n )\n if (distanceFromLastPoint < 20) {\n // Close the trace hint\n onCreateEditEvent({\n ...dragState.editEvent,\n in_progress: false,\n })\n setDragState(null)\n setSelectedElement(null)\n return\n }\n // Edit existing edit event by adding a new point at the rwMousePoint\n setDragState({\n ...dragState,\n editEvent: {\n ...dragState.editEvent,\n route: [\n ...dragState.editEvent.route,\n { ...rwMousePoint, via: shouldCreateAsVia },\n ],\n },\n })\n }\n }}\n >\n {children}\n {in_edit_trace_mode &&\n dragState?.editEvent &&\n ogCenterScreen &&\n dragEndScreen && (\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width={containerBounds?.width}\n height={containerBounds?.height}\n >\n <path\n stroke=\"red\"\n d={`M ${ogCenterScreen.x} ${\n ogCenterScreen.y\n } ${dragState?.editEvent.route\n .map((p) => applyToPoint(transform!, p))\n .map((p) => `L ${p.x} ${p.y}`)\n .join(\" \")} L ${dragEndScreen.x} ${dragEndScreen.y}`}\n />\n {dragState?.editEvent.route.map((r, i) => {\n const rScreen = applyToPoint(transform!, r)\n return (\n <Fragment key={`r-${i}`}>\n {r.via && (\n <circle cx={rScreen.x} cy={rScreen.y} r={16} stroke=\"red\" />\n )}\n <circle cx={rScreen.x} cy={rScreen.y} r={8} stroke=\"red\" />\n </Fragment>\n )\n })}\n {shouldCreateAsVia && (\n <circle\n key=\"via-outer-circle\"\n cx={dragEndScreen.x}\n cy={dragEndScreen.y}\n r={16}\n stroke=\"red\"\n />\n )}\n <circle\n cx={dragEndScreen.x}\n cy={dragEndScreen.y}\n r={8}\n stroke=\"red\"\n />\n </svg>\n )}\n {!disabled && (\n <svg\n key={\"pcb-trace-hints\"}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n mixBlendMode: \"difference\",\n zIndex: 1000,\n }}\n width={containerBounds?.width}\n height={containerBounds?.height}\n >\n {soup\n .filter((e): e is PcbTraceHint => e.type === \"pcb_trace_hint\")\n .map((e) => {\n const { route } = e\n const pcb_port = su(soup as any).pcb_port.get(e.pcb_port_id)!\n const pcb_port_screen = applyToPoint(transform!, pcb_port)\n return (\n <Fragment key={e.pcb_trace_hint_id}>\n <rect\n key={`rect-${e.pcb_port_id}`}\n x={pcb_port_screen.x - 10}\n y={pcb_port_screen.y - 10}\n width={20}\n height={20}\n stroke=\"red\"\n />\n <path\n key={`path-${e.pcb_port_id}`}\n stroke=\"red\"\n d={`M ${pcb_port_screen.x} ${pcb_port_screen.y} ${route\n .map((r) => applyToPoint(transform!, r!))\n .map((r) => `L ${r.x} ${r.y}`)\n .join(\" \")}`}\n />\n {route\n .map((r) => ({ ...r, ...applyToPoint(transform, r!) }))\n .map((r, i) => (\n <Fragment key={i}>\n <circle cx={r.x} cy={r.y} r={8} stroke=\"red\" />\n {r.via && (\n <circle\n cx={r.x}\n cy={r.y}\n r={16}\n stroke=\"red\"\n fill=\"transparent\"\n />\n )}\n </Fragment>\n ))}\n </Fragment>\n )\n })}\n </svg>\n )}\n <div\n style={{\n position: \"absolute\",\n right: 0,\n bottom: 0,\n }}\n >\n {isElementSelected && (\n <HotkeyActionMenu\n hotkeys={[\n {\n key: \"v\",\n name: \"Toggle Via\",\n onUse: () => {\n setShouldCreateAsVia(!shouldCreateAsVia)\n },\n },\n // {\n // key: \"del\",\n // name: \"Delete Node\",\n // onUse: () => {},\n // },\n // {\n // key: \"r\",\n // name: \"Delete Route\",\n // onUse: () => {},\n // },\n ]}\n />\n )}\n </div>\n </div>\n )\n}\n\nfunction getExpandedStroke(\n strokeInput: (Point | [number, number] | number[])[],\n defaultWidth: number,\n): Point[] {\n if (strokeInput.length < 2) {\n throw new Error(\"Stroke must have at least two points\")\n }\n\n const stroke: Point[] = strokeInput.map((point) => {\n if (Array.isArray(point)) {\n return { x: point[0], y: point[1] }\n }\n return point as Point\n })\n\n const leftSide: Point[] = []\n const rightSide: Point[] = []\n\n function getNormal(p1: Point, p2: Point): Point {\n const dx = p2.x - p1.x\n const dy = p2.y - p1.y\n const length = Math.sqrt(dx * dx + dy * dy)\n return { x: -dy / length, y: dx / length }\n }\n\n function addPoint(\n point: Point,\n normal: Point,\n factor: number,\n width: number,\n ) {\n const halfWidth = width / 2\n const newPoint = {\n x: point.x + normal.x * halfWidth * factor,\n y: point.y + normal.y * halfWidth * factor,\n }\n if (factor > 0) {\n leftSide.push(newPoint)\n } else {\n rightSide.unshift(newPoint)\n }\n }\n\n // Handle the first point\n const firstNormal = getNormal(stroke[0]!, stroke[1]!)\n const firstWidth = stroke[0]!.trace_width ?? defaultWidth\n addPoint(stroke[0]!, firstNormal, 1, firstWidth)\n addPoint(stroke[0]!, firstNormal, -1, firstWidth)\n\n // Handle middle points\n for (let i = 1; i < stroke.length - 1; i++) {\n const prev = stroke[i - 1]!\n const current = stroke[i]!\n const next = stroke[i + 1]!\n\n const normalPrev = getNormal(prev, current)\n const normalNext = getNormal(current, next)\n\n // Calculate miter line\n const miterX = normalPrev.x + normalNext.x\n const miterY = normalPrev.y + normalNext.y\n const miterLength = Math.sqrt(miterX * miterX + miterY * miterY)\n\n const currentWidth = current.trace_width ?? defaultWidth\n\n // Check if miter is too long (sharp corner)\n const miterLimit = 2 // Adjust this value to control when to bevel\n if (miterLength / 2 > miterLimit * (currentWidth / 2)) {\n // Use bevel join\n addPoint(current, normalPrev, 1, currentWidth)\n addPoint(current, normalNext, 1, currentWidth)\n addPoint(current, normalPrev, -1, currentWidth)\n addPoint(current, normalNext, -1, currentWidth)\n } else {\n // Use miter join\n const scale = 1 / miterLength\n addPoint(\n current,\n { x: miterX * scale, y: miterY * scale },\n 1,\n currentWidth,\n )\n addPoint(\n current,\n { x: miterX * scale, y: miterY * scale },\n -1,\n currentWidth,\n )\n }\n }\n\n // Handle the last point\n const lastNormal = getNormal(\n stroke[stroke.length - 2]!,\n stroke[stroke.length - 1]!,\n )\n const lastWidth = stroke[stroke.length - 1]!.trace_width ?? defaultWidth\n addPoint(stroke[stroke.length - 1]!, lastNormal, 1, lastWidth)\n addPoint(stroke[stroke.length - 1]!, lastNormal, -1, lastWidth)\n\n // Combine left and right sides to form a closed polygon\n return [...leftSide, ...rightSide]\n}\n","import { css } from \"@emotion/css\"\nimport { useEffect } from \"react\"\n\nexport const HotkeyActionMenu = ({\n hotkeys,\n}: {\n hotkeys: Array<{\n key: string\n name: string\n onUse: Function\n }>\n}) => {\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n hotkeys.forEach((hotkey) => {\n if (event.key === hotkey.key) {\n hotkey.onUse()\n }\n })\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [hotkeys])\n\n return (\n <div\n className={css`\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n font-size: 12px;\n margin: 8px;\n `}\n >\n {hotkeys.map((hotkey) => {\n return (\n <div\n key={hotkey.name}\n className={css`\n display: flex;\n align-items: center;\n margin: 2px;\n\n & .key {\n padding: 1px;\n margin: 2px;\n color: rgba(255, 255, 255, 0.8);\n font-size: 9px;\n border-radius: 3px;\n text-align: center;\n width: 20px;\n background-color: #444;\n }\n\n & .name {\n margin-left: 4px;\n color: rgba(255, 255, 255, 0.8);\n }\n `}\n >\n <div className=\"key\">{hotkey.key}</div>{\" \"}\n <div className=\"name\">{hotkey.name}</div>\n </div>\n )\n })}\n </div>\n )\n}\n","import { useGlobalStore } from \"global-store\"\nimport { useEffect } from \"react\"\nimport {\n toast as ogToast,\n ToastContainer as OgToastContainer,\n} from \"react-toastify\"\nimport { injectStyle } from \"react-toastify/dist/inject-style\"\n\nexport const useToast = () => {\n const pcb_viewer_id = useGlobalStore((s) => s.pcb_viewer_id)\n const toast = (message: string, opts?: Parameters<typeof ogToast>[1]) =>\n ogToast(message, {\n containerId: pcb_viewer_id,\n ...opts,\n })\n\n toast.error = (message: string, opts?: Parameters<typeof ogToast.error>[1]) =>\n ogToast.error(message, {\n containerId: pcb_viewer_id,\n ...opts,\n })\n\n // TODO add container id to this\n toast.promise = ogToast.promise\n\n return toast as typeof ogToast\n}\n\nexport const ToastContainer = () => {\n useEffect(() => {\n injectStyle()\n }, [])\n const pcb_viewer_id = useGlobalStore((s) => s.pcb_viewer_id)\n return <OgToastContainer position=\"top-center\" containerId={pcb_viewer_id} />\n}\n","import type React from \"react\"\nimport { type Matrix, applyToPoint, identity } from \"transformation-matrix\"\nimport type { AnySoupElement, PCBPort } from \"circuit-json\"\nimport { su } from \"@tscircuit/soup-util\"\nimport { useGlobalStore } from \"global-store\"\n\ninterface Props {\n transform?: Matrix\n soup?: AnySoupElement[]\n children: any\n}\ntype Point = { x: number; y: number }\n\nexport const RatsNestOverlay = ({ transform, soup, children }: Props) => {\n const isShowingRatsNest = useGlobalStore((s) => s.is_showing_rats_nest)\n if (!soup || !isShowingRatsNest) return children\n if (!transform) transform = identity()\n const sourceTraces = su(soup).source_trace.list()\n\n const groups: PCBPort[][] = []\n\n sourceTraces.forEach((sourceTrace) => {\n if (sourceTrace.connected_source_port_ids) {\n const group: PCBPort[] = []\n sourceTrace.connected_source_port_ids.forEach(\n (source_port_id: string) => {\n const pcbPort = su(soup).pcb_port.getWhere({ source_port_id })\n if (pcbPort) group.push(pcbPort)\n },\n )\n groups.push(group)\n }\n })\n\n return (\n <div style={{ position: \"relative\" }}>\n {children}\n <svg\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n opacity: 0.5,\n zIndex: 100,\n }}\n >\n {groups.map((group, index) => {\n // Connect all ports in group with a line, so...\n // 2 ports = 1 line\n // 3 ports = 3 lines\n // 4 ports = 6 lines\n\n const points: Array<Point> = group.map((port) =>\n applyToPoint(transform, { x: port.x, y: port.y }),\n )\n\n const lines: Array<[Point, Point]> = []\n for (let i = 0; i < points.length; i++) {\n for (let j = i + 1; j < points.length; j++) {\n lines.push([points[i], points[j]])\n }\n }\n\n return lines.map(([start, end], index) => {\n return (\n <line\n key={index}\n x1={start.x}\n y1={start.y}\n x2={end.x}\n y2={end.y}\n stroke=\"white\"\n strokeWidth=\"1\"\n />\n )\n })\n })}\n </svg>\n </div>\n )\n}\n","import { Primitive } from \"lib/types\"\n\nexport function addInteractionMetadataToPrimitives({\n primitivesWithoutInteractionMetadata,\n drawingObjectIdsWithMouseOver,\n primitiveIdsInMousedOverNet,\n}: {\n primitivesWithoutInteractionMetadata: Primitive[]\n drawingObjectIdsWithMouseOver: Set<string>\n primitiveIdsInMousedOverNet: string[]\n}): Primitive[] {\n const newPrimitives = []\n for (const primitive of primitivesWithoutInteractionMetadata) {\n const newPrimitive = { ...primitive }\n if (primitive?.layer === \"drill\") {\n newPrimitive.is_in_highlighted_net = false\n newPrimitive.is_mouse_over = false\n } else if (\n drawingObjectIdsWithMouseOver.has(primitive._pcb_drawing_object_id)\n ) {\n newPrimitive.is_mouse_over = true\n } else if (\n primitive._element &&\n ((\"pcb_trace_id\" in primitive._element &&\n primitiveIdsInMousedOverNet.includes(\n primitive._element.pcb_trace_id,\n )) ||\n (\"pcb_port_id\" in primitive._element &&\n primitiveIdsInMousedOverNet.includes(\n primitive._element.pcb_port_id!,\n )))\n ) {\n newPrimitive.is_in_highlighted_net = true\n } else {\n newPrimitive.is_in_highlighted_net = false\n newPrimitive.is_mouse_over = false\n }\n newPrimitives.push(newPrimitive)\n }\n return newPrimitives\n}\n","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n","import { useEffect, useLayoutEffect } from 'react';\nimport { isBrowser } from './misc/util';\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n","import { useMemo, useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport { isBrowser, noop } from './misc/util';\nvar defaultState = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\nfunction useMeasure() {\n var _a = useState(null), element = _a[0], ref = _a[1];\n var _b = useState(defaultState), rect = _b[0], setRect = _b[1];\n var observer = useMemo(function () {\n return new window.ResizeObserver(function (entries) {\n if (entries[0]) {\n var _a = entries[0].contentRect, x = _a.x, y = _a.y, width = _a.width, height = _a.height, top_1 = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n setRect({ x: x, y: y, width: width, height: height, top: top_1, left: left, bottom: bottom, right: right });\n }\n });\n }, []);\n useIsomorphicLayoutEffect(function () {\n if (!element)\n return;\n observer.observe(element);\n return function () {\n observer.disconnect();\n };\n }, [element]);\n return [ref, rect];\n}\nexport default isBrowser && typeof window.ResizeObserver !== 'undefined'\n ? useMeasure\n : (function () { return [noop, defaultState]; });\n","import { transformPCBElement, transformPCBElements } from \"@tscircuit/soup-util\"\nimport type { AnySoupElement } from \"circuit-json\"\nimport type { EditEvent } from \"./edit-events\"\nimport { translate } from \"transformation-matrix\"\nimport { applyTraceHintEditEvent } from \"./apply-edit-events/apply-edit-trace-hint-event\"\n\nexport const applyEditEvents = (\n soup: AnySoupElement[],\n edit_events: EditEvent[],\n): AnySoupElement[] => {\n soup = JSON.parse(JSON.stringify(soup))\n\n for (const edit_event of edit_events) {\n if (edit_event.pcb_edit_event_type === \"edit_component_location\") {\n const mat = translate(\n edit_event.new_center.x - edit_event.original_center.x,\n edit_event.new_center.y - edit_event.original_center.y,\n )\n // TODO Future work: recurse here in case there's a nested component\n soup = soup.map((e: any) =>\n e.pcb_component_id !== edit_event.pcb_component_id\n ? e\n : transformPCBElement(e, mat),\n )\n } else if (edit_event.pcb_edit_event_type === \"edit_trace_hint\") {\n soup = applyTraceHintEditEvent(soup, edit_event)\n }\n }\n\n return soup\n}\n","import { AnySoupElement } from \"circuit-json\"\nimport { EditTraceHintEvent } from \"lib/edit-events\"\nimport { su } from \"@tscircuit/soup-util\"\n\nexport const applyTraceHintEditEvent = (\n soup: AnySoupElement[],\n edit_event: EditTraceHintEvent,\n): AnySoupElement[] => {\n const existing_trace_hint = soup.find(\n (th) =>\n th.type === \"pcb_trace_hint\" &&\n th.pcb_trace_hint_id === edit_event.pcb_trace_hint_id,\n )\n\n if (existing_trace_hint) {\n soup = soup.map((e: any) =>\n e.pcb_trace_hint_id === edit_event.pcb_trace_hint_id\n ? {\n ...e,\n route: edit_event.route,\n }\n : e,\n )\n } else {\n // create the trace hint\n const pcb_port = su(soup).pcb_port.get(edit_event.pcb_port_id!)\n\n // console.log(\"edit_event\", edit_event, pcb_port)\n\n soup = soup\n // TODO until builder supports multiple trace hints, replace any\n // old trace hints on this same port\n .filter(\n (e) =>\n !(\n e.type === \"pcb_trace_hint\" &&\n e.pcb_port_id === edit_event.pcb_port_id\n ),\n )\n .concat([\n {\n type: \"pcb_trace_hint\",\n pcb_trace_hint_id: edit_event.pcb_trace_hint_id!,\n route: edit_event.route,\n pcb_port_id: edit_event.pcb_port_id!,\n pcb_component_id: pcb_port?.pcb_component_id!,\n },\n ])\n }\n\n return soup\n}\n"]}