{"version":3,"file":"default-packages_cad-ui_src_index_ts.f16046ec13a273d2.0.6737.0.js","mappings":"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","sources":["webpack://aurora-new-frontend/./packages/common/packages/core/src/zone/zone.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/zone/zones.ts","webpack://aurora-new-frontend/./packages/common/packages/core/src/divider/divider.tsx","webpack://aurora-new-frontend/./packages/racking/src/racking-integration-modal/racking-integration-modal-core.tsx","webpack://aurora-new-frontend/./packages/racking/src/racking-integration-modal/racking-integration-modal-utils.ts","webpack://aurora-new-frontend/./packages/racking/src/racking-integration-modal/racking-integration-modal.generated.tsx","webpack://aurora-new-frontend/./packages/racking/src/racking-integration-modal/racking-integration-modal.tsx","webpack://aurora-new-frontend/./packages/racking/src/racking-integration-iframe/racking-integration-iframe.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/modal/modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/autostring-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/autostring-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select-item.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select-types.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select-util.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select-machine.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-select/component-select-validators.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/component-modal/component-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-modal/component-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-modal/current-inverter-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-modal/current-inverter-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/downloads/dxf-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/downloads/dxf-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/mlpe-selection/mlpe-selection.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/property-limits.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/ground-mount-modal/ground-mount-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/ground-mount-modal/util.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/ground-mount-modal/ground-mount-modal-machine.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/ground-mount-modal/ground-mount-modal.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/ground-mount-modal/ground-mount-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/hooks/use-project-ahj.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/walkway/fire-pathway-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/walkway/fire-pathway-helper-util.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/walkway/fire-pathway-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/legacy-theme.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/cad-inspector-row.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/cad-inspector-labeled-dropdown-with-remove.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/solar-panel-modal/solar-panel-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/solar-panel-modal/solar-panel-modal-state.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/solar-panel-modal/solar-panel-modal.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/solar-panel-modal/solar-panel-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/standard-imagery-modal/standard-imagery-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/standard-imagery-modal/use-tile-selector-starting-bounds.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/standard-imagery-modal/use-tile-selector-zoom.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/standard-imagery-modal/standard-imagery-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/standard-imagery-modal/use-resize-images.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/standard-imagery-modal/expand-imagery-button.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/unsaved-changes-modal/unsaved-changes-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/unsaved-changes-modal/use-prevent-navigate-away.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/unsaved-changes-modal/unsaved-changes-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-modals/cad-modals.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-modals/camera-helper-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-modals/use-cad-modal.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-modals/cad-modals.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autoroof/autoroof-machine.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autoroof/autoroof.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autoroof/use-set-autoroof-running-state.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/autoroof/autoroof.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autoroof/autoroof-modal.tsx","webpack://aurora-new-frontend/./packages/common/packages/charts-lib/src/load-chart-library.tsx","webpack://aurora-new-frontend/./packages/common/packages/charts-lib/src/utils/custom-tooltip.tsx","webpack://aurora-new-frontend/./packages/common/packages/charts-lib/src/chart-core.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/hooks/use-instance-ref/use-instance-ref.tsx","webpack://aurora-new-frontend/./packages/common/packages/charts-lib/src/utils/step-size-from-data.ts","webpack://aurora-new-frontend/./packages/common/packages/charts-lib/src/stack-sum-chart/stack-sum-chart.tsx","webpack://aurora-new-frontend/./packages/common/packages/charts-lib/src/stack-sum-chart/stack-sum-chart-util.ts","webpack://aurora-new-frontend/./packages/cad-test-utils/src/canvas-pixel-colors.ts","webpack://aurora-new-frontend/./packages/cad-test-utils/src/canvas-pixel-helpers.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-color-button/cad-color-button-utils.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-color-button/cad-color-button-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-color-button/cad-color-button-machine.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-color-button/cad-color-button.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/hourly-system-production-download.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-download-button/cad-download-button.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-download-button/cad-download-button.tsx","webpack://aurora-new-frontend/./packages/common/packages/progress-button/src/progress-button.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-lidar-button/cad-lidar-button-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-lidar-button/cad-lidar-button.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-lidar-button/cad-lidar-button.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/tab/tab.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/loss-tree/generate-loss-tree.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/loss-tree/loss-tree-bar.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/loss-tree/loss-tree-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/advanced-section-core.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/grid/grid-shared.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/grid/grid-box.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/shared/shared-form-components.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/constants/months.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/shared/shared-form-types.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/shared/shared-form-options.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/fit-form/feed-in-tariff-card.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/fit-form/fit-form.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/shared/billing-frequency-and-true-up-period.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/shared/export-rate-row.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/flat-rate-form/flat-rate-form.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/async-search-select/async-search-select-defaults.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/async-search-select/async-search-select.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/modal/aurora-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/tou-form/rate-selection-modal-form.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/tou-form/rate-selection-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/tou-form/tou-form.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/bill-saving-form-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/bill-saving-form.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/bill-saving-form/bill-saving-form.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/cad-performance-callout.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/copy-to-clipboard.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/hooks/useCopyGraphData.ts","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/graph-utils.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/copy-graph-data/copy-graph-data.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/cad-performance-dropdown-graph-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/cad-performance-stacked-graph.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/cad-performance-dropdown-panel.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/cad-performance-dropdown-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/performance-summary.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/simulation-button/simulation-button.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-performance-dropdown/cad-performance-dropdown.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-pointer-recorder/cad-pointer-recorder-button-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-pointer-recorder/cad-pointer-recorder-machine.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-pointer-recorder/cad-pointer-recorder-button.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-pointer-recorder/cad-pointer-recorder-utils.ts","webpack://aurora-new-frontend/./packages/common/packages/core/src/loader/error-message.tsx","webpack://aurora-new-frontend/./packages/common/packages/org-permissions/src/constants.ts","webpack://aurora-new-frontend/./packages/common/packages/org-permissions/src/type.ts","webpack://aurora-new-frontend/./packages/common/packages/org-permissions/src/segment.ts","webpack://aurora-new-frontend/./packages/common/packages/org-permissions/src/org-permission-rules.ts","webpack://aurora-new-frontend/./packages/common/packages/org-permissions/src/provide-org-permissions.ts","webpack://aurora-new-frontend/./packages/common/packages/org-permissions/src/org-permission-guard.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/shared-components.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/capitalize.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/legacy-aurora-simulation-form.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/pvwatts-simulation-form.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/alert-tooltip/alert-tooltip.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/monthly-loss-column.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/monthly-loss-modal-machine.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/monthly-loss-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/annual-system-loss-input.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/system-losses.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/legacy-simulation-settings-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/simulation-settings.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/legacy-simulation-settings.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/capitalize-words.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/aurora-simulation-form.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/simulation-settings-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/simulation-settings/simulation-settings.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/hooks/use-debounced-patchable-state/useDebouncedPatchableState.ts","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/stripTypenameDeep.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/system-settings/system-settings-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/system-settings/system-settings.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/system-settings/system-settings.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/design-settings.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/design-settings-button.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/design-settings/design-settings-button.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/irradiance-control/irradiance-control-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/irradiance-control/irradiance-control.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/irradiance-control/irradiance-control.tsx","webpack://aurora-new-frontend/./packages/common/packages/toggle-select/src/toggle-select.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/view-setting-toggle/view-settings-toggle.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/view-setting-toggle/view-setting-toggle.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-controls-bar/cad-controls-bar.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-controls-bar/cad-save-button.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-controls-bar/cad-controls-bar.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-map.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-map.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-mode-toolbar/cad-mode-toolbar-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-mode-toolbar/toolbars/draw-ground-mount-toolbar.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/button-images/dormer-type-gable.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/button-images/dormer-type-hip.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/button-images/dormer-type-shed.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-mode-toolbar/toolbars/roof-mode-toolbar.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/button-images/kink-type-flat.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/button-images/kink-type-pitched.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/button-images/kink-type-vertical.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-mode-toolbar/toolbars/walkway-toolbar.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-mode-toolbar/cad-mode-toolbar.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-overlay.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-toast.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-tooltips/cad-tooltip.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-tooltips/draw-ground-mount-tooltip.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-tooltips/draw-ground-mount-tooltip.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-tooltips/cad-tooltips.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-lidar-button/availability.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/cad-inspector-input-area.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/analytics.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/cad-inspector-panel.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/hooks/use-external-click.ts","webpack://aurora-new-frontend/./packages/common/packages/core/src/with-repeat-on-hold.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/slider/slider.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/distance-toggle-input-area/shared.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/distance-toggle-input-area/double-input-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/distance-toggle-input-area/distance-toggle-input-area.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/popout-slider/popout-slider.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/shared/shared-components.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/shared/solar-panel.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/shared/cad-inspector-section.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/transform-maybe.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/util.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/roof-property/explode-button.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/roof-property/roof-property-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/readonly/readonly-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/tree/tree-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/obstruction/obstruction-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/obstruction/obstruction-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/edge-face/edge-inputs.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/edge-face/edge-face-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/face-info/face-info-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/face-info/face-info-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/simple-roof-face/simple-roof-face.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/sun-path/sun-path-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/hooks/use-project-type.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/walkway/fire-pathway-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/walkway/walkway-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/walkway/walkway-inspector.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/constants/line-diagram.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/inspector-component-select.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/electrical-components/electrical-connections.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/electrical-components/electrical-components-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/solar-panel/solar-panel-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/solar-panel/solar-panel-inspector.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/solar-panel/solar-panel-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/ground-mount/ground-mount-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/ground-mount/ground-mount-inspector.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/ground-mount/ground-mount-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/fill-zone/fill-zone-advanced-panel-section.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/fill-zone/fill-zone-component-section.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/fill-zone/fill-zone-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/fill-zone/fill-zone-inspector.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/fill-zone/fill-zone-panel-info-section.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/fill-zone/fill-zone-panel-section.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/fill-zone/fill-zone-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/panel-area/panel-area-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/panel-area/panel-area.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/dormer/dormer-icons-labels.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/dormer/dormer-shape-icon.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/dormer/dormer-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/lidar/lidar-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/lidar/lidar-source-select/source-row.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/lidar/lidar-source-select/lidar-source-select-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/lidar/lidar-source-select/lidar-source-select.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/lidar/lidar-source-select/lidar-source-select.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/roof-node/roof-node-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/roof-node/roof-node.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/ruler/ruler-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/ruler-segment/ruler-segment-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/roof-edge/azimuth-edge-settings.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/roof-edge/roof-edge-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/disabled-solar-panel/disabled-solar-panel-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/custom-imagery/custom-imagery-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/mode/mode-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/inspector-renderer/inspector-renderer.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/camera/camera-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/roof-edge/roof-edge.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/lidar/lidar-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/custom-imagery/custom-imagery-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/sun-path/sun-path-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/disabled-solar-panel/disabled-solar-panel-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/walkway/mode-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/inspector-tabs-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/inspector-tabs.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/inspector-tabs.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/place-pathway-item-utils.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instrument-panel-items.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instrument-panel-util.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel-menu.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel-row-columns.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel-row.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel-menu.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel-advanced-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel-advanced.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/basic-mode-menu-items.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel-basic.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/layout-constants.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/instruments-panel/instruments-panel.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/irradiance-inspector/irradiance-inspector-monthly-chart.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/irradiance-inspector/irradiance-inspector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/irradiance-inspector/irradiance-inspector.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/irradiance-inspector/irradiance-inspector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/constants.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/use-nearmap-availability.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/nearmap-imagery-selection.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/nearmap-modal-credit-popover.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/nearmap-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/nearmap-modal.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/nearmap-unavailable-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/types.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/use-download-nearmap.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/remove-conflicting-images.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/use-remove-conflicting-images.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/nearmap-modal/nearmap-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/vexcel-modal/vexcel-modal-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/vexcel-modal/vexcel-modal.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/vexcel-modal/use-download-vexcel.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/map-imagery-modals.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/map-imagery-section-title.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/map-imagery-selector-item.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/map-imagery-selector-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/map-imagery-selector.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/use-map-imagery-items.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/use-nearmap-availability.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/use-upload-custom-images.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/use-upload-custom-images.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/map-imagery-selector/map-imagery-selector.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/sunpath-control/sunpath-control.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-overlay.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-overview.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/inspector/drawer.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/shared.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/types.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-minimum-irradiance.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-target-mode.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-selected-component.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-component-selection.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-components.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/shrinkable-header.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-energy-mode.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-panels.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner-utils.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autodesigner/autodesigner.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/inverter-params.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/autostring-core.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/settings-reducer.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/autostring-selection-section.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/components.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/use-validation-error.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/autostring.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/choose-panel-item.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/choose-panel.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/choose-panel.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-right-panel/cad-right-panel.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-right-panel/slide-in-panel.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-right-panel/cad-right-panel.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/autostring/component-query-fixed.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-overview.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/cad-overview-routes.tsx","webpack://aurora-new-frontend/./packages/common/packages/proposal-iframe/src/hook.ts","webpack://aurora-new-frontend/./packages/common/packages/proposal-iframe/src/proposal-iframe.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/shade-report/shade-report.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/shade-report/shade-report-routes.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/system-components/system-component-types.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/system-components/system-component-util.ts","webpack://aurora-new-frontend/./packages/cad-ui/src/system-components/system-components.generated.tsx","webpack://aurora-new-frontend/./packages/cad-ui/src/component-dropdown/component-dropdown.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/button-group/button-group.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/checkbox/checkbox.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/hooks/use-debounce/use-debounce.ts","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/debounce.ts","webpack://aurora-new-frontend/./packages/common/packages/core/src/input/text-input/text-input.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/radio/radio.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/switch/switch.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/clamp-and-round-number.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/total-cost-headlines.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-search-tariff/use-search-tariff.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-search-tariff/use-search-tariff.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-search-tariff/tariff-search-input.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/delete-project/use-delete-project/delete-project.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-show-incentive-errors/use-show-incentive-errors.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/delete-lead/delete-lead.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-intercept-mouse/use-intercept-mouse.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-current-user-is-EPC/use-current-user-is-EPC.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-partners-teams/use-partners-teams.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-partner-name/use-partner-name.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/utils/format-relative-date.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/agreement-status/agreement-status.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/design-request-status.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/proposal-share-status/proposal-share-status.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/status-selector/status-selector.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/proposal-share/proposal-share.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/weather-datasets/weather-datasets.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/partner-searchable-multi-select/types.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/partner-searchable-multi-select/get-updated-partner-selections.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/partner-searchable-multi-select/utils.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/partner-searchable-multi-select/use-partner-search.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/use-query-and-download-agreement/use-query-and-download-agreement.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/reassign-project-modal/reassign-project.generated.tsx","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/reassign-project-modal/use-assignee-options/use-assignee-options.ts","webpack://aurora-new-frontend/./packages/common/packages/shared-domain/src/reassign-project-modal/use-team-options/use-team-options.ts"],"sourcesContent":["import React, { FunctionComponent } from 'react';\nimport { View } from 'react-navi';\n\nimport { ZoneSymbol } from './types';\n\ninterface ZoneProps {\n view: ZoneSymbol;\n}\n\n/*\n * A Zone is just a \"view\" that is selective about which view it will render. This is because\n * navi will render the first unrendered view and it may not match the one we want. This might\n * be a lack of understanding in how zones are supposed to work in navi or a bug. Either way\n * this gives us a semantic way to render a specified view.\n * */\nexport const Zone: FunctionComponent = ({ view }) => (\n chunk?.view?.props?.view === view} />\n);\n\nexport const ZoneView: FunctionComponent = ({ children }) => <>{children};\n","export const PageContent = Symbol('PageContent');\nexport const PageNavigation = Symbol('PageNavigation');\nexport const PageContentNavigation = Symbol('PageContentNavigation');\nexport const ProjectOverviewPageSection = Symbol('ProjectOverviewPageSection');\nexport const LeadOverviewPageSection = Symbol('LeadOverviewPageSection');\n","import styled from 'styled-components';\n\nimport { Divider } from '@blueprintjs/core';\n\nimport { Colors } from '../colors';\n\nexport const FullDivider = styled(Divider)<{ linecolor?: string }>`\n margin: 0;\n border-color: ${({ linecolor }) => linecolor};\n color: ${Colors.GRAY_300};\n`;\n","import { Formik } from 'formik';\nimport React from 'react';\nimport * as yup from 'yup';\n\nimport * as DS from '@aurorasolar/ds';\n\ninterface RackingIntegrationModalResult {\n integrationSettingId: string;\n}\n\ninterface RackingIntegrationModalCoreProps {\n isOpen: boolean;\n onClose: () => void;\n options: DS.IDropdownOption[];\n defaultIntegrationSettingId?: string;\n loading: boolean;\n onSubmit: (result: RackingIntegrationModalResult) => void;\n}\n\nconst schema = yup.object().shape({\n integrationSettingId: yup.array().of(yup.string()).required('Manufacturer is required'),\n});\n\nexport const RackingIntegrationModalCore = ({\n isOpen,\n onClose,\n options,\n loading,\n onSubmit,\n defaultIntegrationSettingId,\n}: RackingIntegrationModalCoreProps) => {\n return (\n {\n onSubmit({ integrationSettingId: integrationSettingId[0] });\n resetForm();\n }}\n validationSchema={schema}\n >\n {({ submitForm, resetForm }) => (\n {\n onClose();\n resetForm();\n }}\n open={isOpen}\n size=\"sm\"\n >\n \n \n Open your manufacturer's page\n \n \n \n \n Aurora will open your manufacturer's racking form in Design Mode. Complete the\n racking form on their website. When you are finished, you will be brought back to\n Aurora. Your current design progress will not be lost.\n \n \n \n \n \n\n \n Open racking page\n {\n onClose();\n resetForm();\n }}\n variant=\"tertiary\"\n >\n Cancel\n \n \n \n )}\n \n );\n};\n","import { AnalyticsEventTypes, IAnalyticsProvider } from '@aurorasolar/common-module-loader';\nimport * as DS from '@aurorasolar/ds';\n\nimport { GetRackingIntegrationsQuery } from './racking-integration-modal.generated';\n\nexport const buildOptionsFromIntegrationUnions = (\n data: GetRackingIntegrationsQuery | undefined,\n) => {\n return (\n data?.getIntegrationUnions\n .filter((integration) => integration?.name && integration?.setting?.id)\n .map(\n (integration) =>\n ({\n label: integration?.name,\n value: integration?.setting?.id,\n } as DS.IDropdownOption),\n ) || []\n );\n};\n\ntype RackingIntegrationType = Extract<\n GetRackingIntegrationsQuery['getIntegrationUnions'][number],\n { __typename: 'RackingIntegration' }\n>;\n\nconst getIntegrationFromSettingId = (\n integrationSettingId: string,\n integrationData: GetRackingIntegrationsQuery,\n) => {\n return integrationData.getIntegrationUnions.find(\n (i) => i?.setting?.id === integrationSettingId,\n ) as RackingIntegrationType;\n};\n\nexport const trackRackingOpen = (\n integrationSettingId: string,\n analytics: IAnalyticsProvider | undefined,\n integrationData: GetRackingIntegrationsQuery | undefined,\n) => {\n if (integrationData && analytics) {\n const integration = getIntegrationFromSettingId(integrationSettingId, integrationData);\n if (integration?.id) {\n analytics.track(AnalyticsEventTypes.DesignRacking, { integration_id: integration?.id });\n }\n }\n};\n\nexport const handleSubmit = ({\n integrationSettingId,\n analytics,\n data,\n onSubmit,\n}: {\n integrationSettingId: string;\n analytics: IAnalyticsProvider | undefined;\n data: GetRackingIntegrationsQuery | undefined;\n onSubmit: ({ integrationSettingId }: { integrationSettingId: string }) => void;\n}) => {\n trackRackingOpen(integrationSettingId, analytics, data);\n onSubmit({ integrationSettingId });\n};\n\nexport const getDefaultIntegrationSettingFromOptions = (\n options: DS.IDropdownOption[],\n): string | undefined => {\n return options.length === 1 ? options[0].value : undefined;\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GetRackingIntegrationsQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetRackingIntegrationsQuery = { __typename: 'Query', getIntegrationUnions: Array<{ __typename: 'DividendIntegration', id: string, name: string, setting?: { __typename: 'DividendIntegrationSettings', id: string } | null | undefined } | { __typename: 'GenericIntegration', id: string, name: string, setting?: { __typename: 'GenericIntegrationSetting', id: string } | null | undefined } | { __typename: 'GoodLeapIntegration', id: string, name: string, setting?: { __typename: 'GoodLeapIntegrationSettings', id: string } | null | undefined } | { __typename: 'MosaicIntegration', id: string, name: string, setting?: { __typename: 'MosaicIntegrationSettings', id: string } | null | undefined } | { __typename: 'RackingIntegration', id: string, name: string, setting?: { __typename: 'RackingIntegrationSetting', id: string } | null | undefined } | { __typename: 'SungageIntegration', id: string, name: string, setting?: { __typename: 'SungageIntegrationSettings', id: string } | null | undefined } | null | undefined> };\n\n\nexport const GetRackingIntegrationsDocument = gql`\n query GetRackingIntegrations @trace_info(traceInfo: {pod: api}) {\n getIntegrationUnions(integrationType: \"racking\") {\n ... on IntegrationInterface {\n id\n name\n setting {\n ... on IntegrationSettingInterface {\n id\n }\n }\n }\n }\n}\n `;\n\n/**\n * __useGetRackingIntegrationsQuery__\n *\n * To run a query within a React component, call `useGetRackingIntegrationsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetRackingIntegrationsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetRackingIntegrationsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetRackingIntegrationsQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetRackingIntegrationsDocument, options);\n }\nexport function useGetRackingIntegrationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetRackingIntegrationsDocument, options);\n }\nexport type GetRackingIntegrationsQueryHookResult = ReturnType;\nexport type GetRackingIntegrationsLazyQueryHookResult = ReturnType;\nexport type GetRackingIntegrationsQueryResult = Apollo.QueryResult;","import React from 'react';\n\nimport { Analytics, useAppModule } from '@aurorasolar/common-module-loader';\n\nimport { RackingIntegrationModalCore } from './racking-integration-modal-core';\nimport {\n buildOptionsFromIntegrationUnions,\n getDefaultIntegrationSettingFromOptions,\n handleSubmit,\n} from './racking-integration-modal-utils';\nimport { useGetRackingIntegrationsQuery } from './racking-integration-modal.generated';\n\ninterface RackingIntegrationModalProps {\n isOpen: boolean;\n onClose: () => void;\n onSubmit: ({ integrationSettingId }: { integrationSettingId: string }) => void;\n}\n\nexport const RackingIntegrationModal = ({\n isOpen,\n onClose,\n onSubmit,\n}: RackingIntegrationModalProps) => {\n const analytics = useAppModule(Analytics);\n\n const { data, loading } = useGetRackingIntegrationsQuery();\n const options = buildOptionsFromIntegrationUnions(data);\n\n return (\n {\n handleSubmit({ analytics, data, integrationSettingId, onSubmit });\n }}\n options={options}\n />\n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GetRackingIntegrationsQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetRackingIntegrationsQuery = { __typename: 'Query', getIntegrationUnions: Array<{ __typename: 'DividendIntegration', id: string, setting?: { __typename: 'DividendIntegrationSettings', id: string } | null | undefined } | { __typename: 'GenericIntegration', id: string, setting?: { __typename: 'GenericIntegrationSetting', id: string } | null | undefined } | { __typename: 'GoodLeapIntegration', id: string, setting?: { __typename: 'GoodLeapIntegrationSettings', id: string } | null | undefined } | { __typename: 'MosaicIntegration', id: string, setting?: { __typename: 'MosaicIntegrationSettings', id: string } | null | undefined } | { __typename: 'RackingIntegration', id: string, setting?: { __typename: 'RackingIntegrationSetting', id: string } | null | undefined, configuration: { __typename: 'RackingIntegrationConfiguration', rackingIframeUrl: string } } | { __typename: 'SungageIntegration', id: string, setting?: { __typename: 'SungageIntegrationSettings', id: string } | null | undefined } | null | undefined> };\n\nexport type GetIdentityQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetIdentityQuery = { __typename: 'Query', currentTenant?: { __typename: 'Tenant', id: string } | null | undefined, currentUser?: { __typename: 'User', id: string } | null | undefined };\n\nexport type GetProjectIdForDesignQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type GetProjectIdForDesignQuery = { __typename: 'Query', designById: { __typename: 'Design', projectId: string } };\n\nexport type GenerateSessionTokenMutationVariables = Types.Exact<{\n integrationId: Types.Scalars['ID'];\n}>;\n\n\nexport type GenerateSessionTokenMutation = { __typename: 'Mutation', generateIntegrationSessionToken: { __typename: 'IntegrationSessionToken', token: string } };\n\n\nexport const GetRackingIntegrationsDocument = gql`\n query GetRackingIntegrations @trace_info(traceInfo: {pod: api}) {\n getIntegrationUnions(integrationType: \"racking\") {\n ... on IntegrationInterface {\n id\n setting {\n ... on IntegrationSettingInterface {\n id\n }\n }\n }\n ... on RackingIntegration {\n configuration {\n rackingIframeUrl\n }\n }\n }\n}\n `;\n\n/**\n * __useGetRackingIntegrationsQuery__\n *\n * To run a query within a React component, call `useGetRackingIntegrationsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetRackingIntegrationsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetRackingIntegrationsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetRackingIntegrationsQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetRackingIntegrationsDocument, options);\n }\nexport function useGetRackingIntegrationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetRackingIntegrationsDocument, options);\n }\nexport type GetRackingIntegrationsQueryHookResult = ReturnType;\nexport type GetRackingIntegrationsLazyQueryHookResult = ReturnType;\nexport type GetRackingIntegrationsQueryResult = Apollo.QueryResult;\nexport const GetIdentityDocument = gql`\n query GetIdentity @trace_info(traceInfo: {pod: api}) {\n currentTenant {\n id\n }\n currentUser {\n id\n }\n}\n `;\n\n/**\n * __useGetIdentityQuery__\n *\n * To run a query within a React component, call `useGetIdentityQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetIdentityQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetIdentityQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetIdentityQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetIdentityDocument, options);\n }\nexport function useGetIdentityLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetIdentityDocument, options);\n }\nexport type GetIdentityQueryHookResult = ReturnType;\nexport type GetIdentityLazyQueryHookResult = ReturnType;\nexport type GetIdentityQueryResult = Apollo.QueryResult;\nexport const GetProjectIdForDesignDocument = gql`\n query GetProjectIdForDesign($designId: ID!) @trace_info(traceInfo: {pod: api}) {\n designById(id: $designId) {\n projectId\n }\n}\n `;\n\n/**\n * __useGetProjectIdForDesignQuery__\n *\n * To run a query within a React component, call `useGetProjectIdForDesignQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProjectIdForDesignQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProjectIdForDesignQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useGetProjectIdForDesignQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetProjectIdForDesignDocument, options);\n }\nexport function useGetProjectIdForDesignLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetProjectIdForDesignDocument, options);\n }\nexport type GetProjectIdForDesignQueryHookResult = ReturnType;\nexport type GetProjectIdForDesignLazyQueryHookResult = ReturnType;\nexport type GetProjectIdForDesignQueryResult = Apollo.QueryResult;\nexport const GenerateSessionTokenDocument = gql`\n mutation GenerateSessionToken($integrationId: ID!) @trace_info(traceInfo: {pod: api}) {\n generateIntegrationSessionToken(integrationId: $integrationId) {\n token\n }\n}\n `;\nexport type GenerateSessionTokenMutationFn = Apollo.MutationFunction;\n\n/**\n * __useGenerateSessionTokenMutation__\n *\n * To run a mutation, you first call `useGenerateSessionTokenMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useGenerateSessionTokenMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [generateSessionTokenMutation, { data, loading, error }] = useGenerateSessionTokenMutation({\n * variables: {\n * integrationId: // value for 'integrationId'\n * },\n * });\n */\nexport function useGenerateSessionTokenMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(GenerateSessionTokenDocument, options);\n }\nexport type GenerateSessionTokenMutationHookResult = ReturnType;\nexport type GenerateSessionTokenMutationResult = Apollo.MutationResult;\nexport type GenerateSessionTokenMutationOptions = Apollo.BaseMutationOptions;","import type { M } from 'ts-toolbelt';\nimport React, { ComponentProps, PropsWithChildren, ReactNode, useMemo } from 'react';\nimport styled from 'styled-components';\nimport { space, SpaceProps } from 'styled-system';\n\nimport { Dialog, IDialogProps, Spinner } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '../button';\nimport { Colors } from '../colors';\n\nexport const MODAL_ACTION_TEST_ID = 'modal-action';\nexport enum ModalButtonState {\n loading,\n active,\n disabled,\n}\ninterface ModalButtonCustomProps {\n loading?: boolean;\n}\ntype ModalButtonProps = ComponentProps & ModalButtonCustomProps;\n\nexport interface ModalActions<\n P extends PLEASE_DO_NOT_USE_THIS_ANY_FOR_MIGRATION_ONLY = ModalButtonProps,\n> {\n [key: string]:\n | readonly [React.EventHandler, P]\n | readonly [React.EventHandler];\n}\n\n// TODO - Replace with AuroraText\nconst DefaultTitleWrapper = styled('span')`\n text-transform: uppercase;\n color: ${Colors.GRAY_600};\n`;\n\n// Reset the BluePrint Styles\n// TODO - Find a better way to do this?\nconst DialogStyled = styled(Dialog)<{ maxWidth?: number; width?: number } & SpaceProps>`\n &,\n & [class*='bp3-dialog'] {\n margin: 0;\n padding: 0;\n background: ${Colors.WHITE};\n border: none;\n box-shadow: initial;\n border-radius: 3px;\n min-width: initial;\n min-height: initial;\n max-width: ${(props) => (props.maxWidth ? `${props.maxWidth}px` : 'initial')};\n }\n\n && {\n ${space};\n width: ${(props) => (props.width ? `${props.width}px` : '')};\n\n .bp3-dialog-header {\n align-items: flex-start;\n box-shadow: none;\n }\n }\n`;\n\nconst defaultRenderTitle = (title: string) => {title};\nconst defaultRenderButton = (\n label: string,\n action: React.EventHandler,\n props: Partial,\n) => {\n const { loading, ...rest } = props;\n return (\n \n ) => action(e)}\n >\n {loading ? : label}\n \n \n );\n};\n\ninterface ModalProps

extends IDialogProps, SpaceProps {\n width?: number;\n maxWidth?: number;\n leftBottomComponent?: JSX.Element;\n title: string;\n renderTitle?: (title: string) => ReactNode;\n renderButton?: (\n label: string,\n action: React.EventHandler,\n props: P,\n ) => ReactNode;\n actions: ModalActions

;\n}\n/**\n * @deprecated\n * @see AuroraModal\n */\nexport function Modal

>({\n children,\n leftBottomComponent,\n actions,\n title,\n renderTitle = defaultRenderTitle,\n renderButton = defaultRenderButton,\n ...overlayProps\n}: PropsWithChildren>) {\n const TitleNode = useMemo(() => renderTitle(title), [title, renderTitle]);\n\n return (\n \n {children}\n \n \n {leftBottomComponent || <>}\n \n {Object.entries(actions).map(([key, actionDefinition]) => {\n const [action, buttonProps = {}] = actionDefinition;\n return renderButton(key, action, buttonProps as unknown as P);\n })}\n \n \n \n \n );\n}\n","import React from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Box } from '@rebass/grid';\n\nimport { InstrumentPanelModalProps } from '../component-modal/types';\n\ninterface AutoStringMiMlpeModalProps extends InstrumentPanelModalProps {\n confirm: () => void;\n}\n\nexport const AutoStringMiMlpeModalCore = ({\n confirm,\n onClose,\n ...modalProps\n}: AutoStringMiMlpeModalProps) => {\n const actions = {\n Cancel: [\n () => {\n onClose();\n },\n { intent: AuroraThemedButtonIntent.SECONDARY },\n ],\n 'Go to AutoStringer': [\n () => {\n confirm();\n onClose();\n },\n { intent: AuroraThemedButtonIntent.PRIMARY },\n ],\n } as ModalActions;\n return (\n \n \n \n Multi-input DC optimizers and microinverters can only be placed using AutoStringer.\n \n \n \n );\n};\n","import React from 'react';\n\nimport { AutoStringPanelInit, CADTriggerActionTypes } from '@aurorasolar/common-data-store';\n\nimport { useCadRightPanelAction } from '../hooks/useCadRightPanelAction';\nimport { AutoStringMiMlpeModalCore } from './autostring-modal-core';\n\nexport type AutoStringModalProps = {\n portalContainer?: HTMLElement;\n usePortal?: boolean;\n onClose: () => void;\n} & (\n | {\n isOpen: true;\n init: AutoStringPanelInit;\n }\n | {\n isOpen: false;\n init: null;\n }\n);\n\nexport const AutoStringMiMlpeModal = (props: AutoStringModalProps) => {\n const openRightPanel = useCadRightPanelAction(CADTriggerActionTypes.BeforeRunAutoStringer);\n const confirm = () => {\n if (props.isOpen) {\n openRightPanel(props.init);\n }\n };\n\n return ;\n};\n","import React, { FC } from 'react';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { useLocaleFormat } from '@aurorasolar/common-core/src/hooks';\nimport { AuroraIcon, AuroraIconType, IAuroraIconProps } from '@aurorasolar/common-core/src/icon';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { IconFontSize } from '@aurorasolar/common-core/src/typography';\nimport { getUnformattedWattageTuple } from '@aurorasolar/common-core/src/utils';\nimport { css, styled, x } from '@xstyled/styled-components';\n\nexport const ITEM_HEIGHT = 54;\n\nconst SelectedIcon = styled(AuroraIcon).attrs({\n fillColor: Colors.PRIMARY_GREEN,\n name: AuroraIconType.CHECKMARK,\n size: IconFontSize.EXTRA_SMALL,\n})``;\nconst formatWattageShort = (\n wattage: number,\n formatNumber: (number: number, options?: Intl.NumberFormatOptions | undefined) => string,\n) => {\n if (wattage < 1000) {\n return `${formatNumber(wattage)}W`;\n }\n const [value, suffix] = getUnformattedWattageTuple(wattage);\n return `${formatNumber(value, {\n maximumFractionDigits: 1,\n minimumFractionDigits: 0,\n })}${suffix}`;\n};\nconst SelectionChangeIcon = styled>(\n AuroraIcon,\n).attrs(({ isSelected }) => ({\n color: isSelected ? Colors.GRAY_700 : Colors.BLACK,\n name: isSelected ? AuroraIconType.CLOSE : AuroraIconType.BTN_PLUS,\n size: IconFontSize.EXTRA_SMALL,\n}))`\n display: none;\n`;\n\nexport const Text = styled.spanBox`\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12px;\n line-height: 16px;\n`;\n\nconst FlexRow = styled.div`\n align-items: baseline;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n gap: ${SPACES[0] / 2}px;\n`;\nconst CheckboxWrap = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: ${SPACES[4]}px;\n height: 100%;\n flex: 0 0 ${SPACES[4]}px;\n`;\n\nconst StyledItem = styled.li<{ canSelect: boolean; isMultiSelect: boolean }>`\n display: flex;\n flex: 1 1 auto;\n align-items: flex-end;\n height: ${ITEM_HEIGHT}px;\n padding: ${SPACES[0]}px;\n border-radius: 6px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n ${({ canSelect, isMultiSelect }) => {\n if (canSelect) {\n return css`\n cursor: pointer;\n\n &:hover {\n background: ${Colors.GRAY_200};\n ${SelectionChangeIcon} {\n display: inline;\n }\n\n ${SelectedIcon} {\n display: ${isMultiSelect ? 'none' : 'inline'};\n }\n }\n `;\n }\n return css`\n opacity: 0.5;\n `;\n }}\n`;\nexport interface ComponentSelectItemData {\n id: string;\n inputCount: number;\n manufacturer: string;\n name: string;\n rating?: number;\n}\nexport interface ComponentSelectItemProps {\n component: ComponentSelectItemData;\n isSelected: boolean;\n canSelect: boolean;\n onClick: VoidFunction;\n isMultiSelect: boolean;\n}\n\nexport const ComponentSelectItem: FC = ({\n component: { inputCount, name, manufacturer, rating },\n onClick,\n canSelect,\n isSelected,\n isMultiSelect,\n}) => {\n const { formatNumber } = useLocaleFormat();\n\n return (\n {\n if (canSelect) {\n onClick();\n }\n }}\n >\n \n {isMultiSelect && canSelect && }\n {isSelected && }\n \n \n \n {manufacturer}\n {inputCount > 1 && (\n \n {inputCount}:1\n \n )}\n \n \n \n {name}\n \n {rating && (\n \n {rating === -1 ? '' : formatWattageShort(rating, formatNumber)}\n \n )}\n \n \n \n );\n};\n","import React, { FC, RefObject } from 'react';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { DefaultInputCSS } from '@aurorasolar/common-core/src/input';\nimport {\n buttonHeight,\n defaultButtonBorderRadius,\n smallButtonBorderRadius,\n SPACES,\n} from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Collapse, IInputGroupProps, InputGroup, Popover } from '@blueprintjs/core';\nimport { styled, x } from '@xstyled/styled-components';\n\nimport { ComponentSelectItem, ComponentSelectItemData, ITEM_HEIGHT } from './component-select-item';\nimport { ComponentSelectValidation } from './component-select-types';\n\nexport const ComponentSelectTestid = {\n Button: 'component-select-button',\n SearchInput: 'component-select-search-input',\n};\n\nconst SelectButton = styled.button<{ isActive: boolean; isDisabled?: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: ${buttonHeight}px;\n background: ${({ isDisabled }) => (isDisabled ? Colors.GRAY_100 : Colors.WHITE)};\n padding: 0 ${SPACES[2]}px;\n border-radius: ${defaultButtonBorderRadius}px;\n border: 1px solid ${({ isActive }) => (isActive ? Colors.PRIMARY_GREEN : Colors.GRAY_400)};\n flex: 1 1 auto;\n cursor: pointer;\n max-width: 100%;\n span {\n flex: 0 1 auto;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n .fa {\n background: ${Colors.GRAY_200};\n border-radius: ${smallButtonBorderRadius}px;\n color: ${({ isDisabled }) => (isDisabled ? Colors.GRAY_400 : Colors.GRAY_700)};\n height: ${SPACES[3]}px;\n width: ${SPACES[3]}px;\n margin-left: ${SPACES[0] / 2}px;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n &:hover {\n background: ${Colors.GRAY_100};\n }\n`;\n\nconst NUMBER_OF_VISIBLE_ITEMS = 4;\nconst POPOVER_HEIGHT = buttonHeight + ITEM_HEIGHT * NUMBER_OF_VISIBLE_ITEMS + SPACES[4];\n\nconst SelectPopover = styled(Popover)`\n flex: 1 1 auto;\n display: flex;\n position: relative;\n\n .bp3-transition-container {\n width: 100%;\n }\n\n .bp3-popover-target {\n display: flex;\n flex: 1 1 auto;\n max-width: 100%;\n }\n .bp3-popover {\n user-select: none;\n margin-top: ${SPACES[0]}px !important;\n width: inherit;\n max-height: ${POPOVER_HEIGHT}px;\n overflow-y: auto;\n }\n\n .bp3-popover-content {\n padding: ${SPACES[0]}px;\n background: ${Colors.WHITE};\n }\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n`;\n\nconst SearchInput = styled(InputGroup)`\n ${DefaultInputCSS}\n .bp3-input {\n margin-bottom: ${SPACES[0]}px;\n background: ${Colors.GRAY_100};\n }\n`;\n\nexport interface ComponentSelectCoreProps {\n buttonLabel: string;\n buttonTestid?: string;\n disabled?: boolean;\n isOpen: boolean;\n items: ComponentSelectItemData[];\n maxSelectionSize: number;\n minSelectionSize: number;\n onClickedAway: VoidFunction;\n onComponentSelect: (id: string) => void;\n onPopoverClosing: VoidFunction;\n onPopoverOpened: VoidFunction;\n onPopoverOpening: VoidFunction;\n onSearchStringChange: (v: string) => void;\n onToggleButtonClick: VoidFunction;\n searchInput: RefObject;\n searchTestid?: string;\n selectedItems: Set;\n validation: ComponentSelectValidation;\n}\n\nexport const ComponentSelectCore: FC = ({\n buttonLabel,\n buttonTestid,\n disabled,\n isOpen,\n items,\n maxSelectionSize,\n minSelectionSize,\n onClickedAway,\n onComponentSelect,\n onPopoverClosing,\n onPopoverOpened,\n onPopoverOpening,\n onSearchStringChange,\n onToggleButtonClick,\n searchInput,\n searchTestid,\n selectedItems,\n validation,\n}) => {\n const isMultiSelect = maxSelectionSize > 1;\n const textColor = selectedItems.size === 0 || disabled ? Colors.GRAY_500 : Colors.GRAY_800;\n return (\n \n onSearchStringChange(currentTarget.value)}\n placeholder=\"Search\"\n />\n\n

    \n {items.map((item) => {\n const isSelected = selectedItems.has(item.id);\n const canSelect =\n !isMultiSelect ||\n (isSelected && minSelectionSize < selectedItems.size) ||\n (!isSelected && maxSelectionSize > selectedItems.size);\n return (\n {\n onComponentSelect(item.id);\n }}\n />\n );\n })}\n
\n \n }\n isOpen={isOpen}\n minimal\n onClosing={onPopoverClosing}\n onInteraction={(shouldBeOpen) => {\n if (!shouldBeOpen) {\n onClickedAway();\n }\n }}\n onOpened={onPopoverOpened}\n onOpening={onPopoverOpening}\n position=\"bottom\"\n target={\n \n \n \n {buttonLabel}\n \n \n \n \n {!validation.isValid && validation.message}\n \n \n }\n usePortal={false}\n />\n );\n};\n","import { ComponentSelectItemData } from './component-select-item';\nimport { ComponentSelectQuery } from './component-select.generated';\n\n/** @deprecated for use in pre-Borealis only. Use `SystemComponentType` */\nexport enum ComponentSelectType {\n CombinerBox = 'Combiner Box',\n DcOptimizer = 'DC Optimizer',\n Disconnect = 'Disconnect',\n LoadCenter = 'Load Center',\n Meter = 'Meter',\n ServicePanel = 'Service Panel',\n SolarInverter = 'Solar Inverter',\n SolarPanel = 'Solar Panel',\n Microinverter = 'Microinverter',\n SingleInputMicroinverter = 'Single Input Microinverter',\n}\n\nexport type ComponentSelectComponent =\n ComponentSelectQuery['componentSearch']['components'][number];\n/**\n * @deprecated for use in pre-Borealis only. Use `SystemComponentTypename\n * Maps a `SystemComponentType` enum to the associated GraphQL __typename.\n */\nexport type SystemComponentTypename =\n T extends ComponentSelectType.CombinerBox\n ? 'CombinerBox'\n : T extends ComponentSelectType.DcOptimizer\n ? 'DcOptimizer'\n : T extends ComponentSelectType.Disconnect\n ? 'Disconnect'\n : T extends ComponentSelectType.LoadCenter\n ? 'LoadCenter'\n : T extends ComponentSelectType.Meter\n ? 'Meter'\n : T extends ComponentSelectType.ServicePanel\n ? 'ServicePanel'\n : T extends ComponentSelectType.SolarInverter\n ? 'SolarInverter'\n : T extends ComponentSelectType.SolarPanel\n ? 'SolarPanel'\n : T extends ComponentSelectType.Microinverter\n ? 'SolarInverter'\n : T extends ComponentSelectType.SingleInputMicroinverter\n ? 'SolarInverter'\n : never;\n\n/**\n * @deprecated for use in pre-Borealis only. Use `SystemComponent`\n */\nexport type GetComponentType =\n ComponentSelectComponent & {\n __typename: SystemComponentTypename;\n };\n\nexport interface ComponentSelectContext {\n queryResult: ComponentSelectQuery | undefined;\n selectedIds: Set;\n settings: ComponentSelectSettings;\n validation: ComponentSelectValidation;\n visibleItems: ComponentSelectItemData[];\n}\n\nexport type ComponentSelectValidation =\n | {\n isValid: true;\n }\n | {\n isValid: false;\n message: string;\n };\n\nexport type ComponentSelectValidationCheck = (\n selection: GetComponentType[],\n) => ComponentSelectValidation;\n\nexport interface ComponentSelectSettings {\n componentType: ComponentSelectType;\n disabled?: boolean;\n emptySelectionLabel?: string;\n hiddenIds?: string[];\n shouldSearchAllComponents?: boolean;\n selectionSize: { min: number; max: number };\n validationCheck?: ComponentSelectValidationCheck;\n}\n\nexport type ComponentSelectEventByType =\n ComponentSelectEvent & { type: T };\n\nexport type ComponentSelectEvent =\n | { type: 'TOGGLE_BUTTON_CLICKED' }\n | { type: 'POPOVER_CLOSING' }\n | { type: 'POPOVER_OPENING' }\n | { type: 'POPOVER_OPENED' }\n | { type: 'CLICKED_AWAY' }\n | { type: 'EXTERNAL_SELECTED_ITEMS_CHANGED'; selectedIds: Set }\n | { type: 'SEARCH_STRING_CHANGED'; searchString: string }\n | { type: 'SEARCH_STRING_READY'; searchString: string }\n | { type: 'COMPONENT_SELECTED'; id: string }\n | {\n type: 'SETTINGS_CHANGED';\n settings: ComponentSelectSettings;\n }\n | {\n type: 'BEGIN_DATA_REQUEST';\n }\n | {\n type: 'DATA_LOADED';\n data: ComponentSelectQuery;\n };\n","import { ComponentSearchQuery, ComponentTypes } from '@aurorasolar/graphql-client-schema';\n\nimport { ComponentSelectItemData } from './component-select-item';\nimport {\n ComponentSelectComponent,\n ComponentSelectContext,\n ComponentSelectEventByType,\n ComponentSelectSettings,\n ComponentSelectType,\n} from './component-select-types';\nimport { ComponentSelectQuery } from './component-select.generated';\n\nconst getComponentRating = (component: ComponentSelectComponent) => {\n if ('ratingStc' in component && component.ratingStc != null) {\n return component.ratingStc;\n }\n if ('ratedPower' in component && component.ratedPower != null) {\n return component.ratedPower;\n }\n return -1;\n};\n\nconst getInputCount = (componentType: ComponentSelectType, component: ComponentSelectComponent) => {\n if (\n componentType === ComponentSelectType.DcOptimizer ||\n componentType === ComponentSelectType.Microinverter\n ) {\n if (component.__typename === 'SolarInverter') {\n return component.mppts ?? 1;\n }\n if (component.__typename === 'DcOptimizer') {\n return component.numInputs ?? 1;\n }\n }\n return 1;\n};\n\nexport const getComponentItems = (\n data: ComponentSelectQuery | undefined,\n { hiddenIds, componentType }: ComponentSelectSettings,\n): ComponentSelectItemData[] =>\n Array.isArray(data?.componentSearch.components)\n ? data!.componentSearch.components\n .filter(({ id }) => !hiddenIds?.includes(id))\n .map((component) => ({\n id: component.id ?? '',\n inputCount: getInputCount(componentType, component),\n manufacturer: component.manufacturer?.name ?? '',\n name: component.name ?? '',\n rating: getComponentRating(component),\n }))\n : [];\n\nconst lookup: Record = {\n [ComponentSelectType.CombinerBox]: { type: ComponentTypes.CombinerBox },\n [ComponentSelectType.DcOptimizer]: { type: ComponentTypes.DcOptimizer },\n [ComponentSelectType.Disconnect]: { type: ComponentTypes.Disconnect },\n [ComponentSelectType.LoadCenter]: { type: ComponentTypes.LoadCenter },\n [ComponentSelectType.Meter]: { type: ComponentTypes.Meter },\n [ComponentSelectType.Microinverter]: {\n filter: { isMicroinverter: true, isSolarCompatible: true },\n type: ComponentTypes.SolarInverter,\n },\n [ComponentSelectType.ServicePanel]: { type: ComponentTypes.ServicePanel },\n [ComponentSelectType.SolarInverter]: {\n filter: { isMicroinverter: false, isSolarCompatible: true },\n type: ComponentTypes.SolarInverter,\n },\n [ComponentSelectType.SolarPanel]: {\n type: ComponentTypes.SolarPanel,\n },\n [ComponentSelectType.SingleInputMicroinverter]: {\n filter: { isMicroinverter: true, isSingleInputMicroinverter: true, isSolarCompatible: true },\n type: ComponentTypes.SolarInverter,\n },\n};\n\nexport const getComponentSelectQueryParams = (\n { settings, queryResult }: ComponentSelectContext,\n selectedIds?: Set,\n searchString?: string,\n projectId?: string,\n) => {\n const onlyEnabledComponents = !settings?.shouldSearchAllComponents;\n const isInitialQuery = queryResult == null;\n const typeParams = lookup[settings.componentType];\n const params: ComponentSearchQuery & { filter: NonNullable } = {\n ...typeParams,\n filter: {\n ...typeParams.filter,\n },\n };\n\n if (selectedIds != null) {\n params.includeIds = Array.from(selectedIds);\n }\n\n if (isInitialQuery || onlyEnabledComponents || searchString === '') {\n // only query for enabled components\n params.filter.isEnabled = true;\n }\n\n if (searchString) {\n params.filter.query = searchString;\n }\n\n if (projectId) {\n params.projectId = projectId;\n }\n\n return { variables: { input: params } };\n};\n\nconst filterComponent =\n ({ settings, selectedIds }: ComponentSelectContext, searchString: string) =>\n (item: ComponentSelectItemData) => {\n if (selectedIds.has(item.id) || settings?.shouldSearchAllComponents) {\n return true;\n }\n const searchWords = searchString.split(' ');\n const searchables = (\n [\n item.name,\n item.manufacturer,\n item.rating === -1 ? null : item.rating?.toString(), // extra logic to account for no value/ failsafe\n ].filter((value) => value != null) as string[]\n ).map((word) => word.toLowerCase());\n\n return searchables.some((searchable) =>\n searchWords.every((searchWord) => searchable.includes(searchWord.toLowerCase())),\n );\n };\nexport const filterComponents = (\n ctx: ComponentSelectContext,\n { searchString }: ComponentSelectEventByType<'SEARCH_STRING_CHANGED'>,\n) =>\n getComponentItems(ctx.queryResult, ctx.settings).filter(filterComponent(ctx, searchString)) ?? [];\n\nexport const getButtonLabel = ({\n selectedIds,\n queryResult,\n settings: { componentType, emptySelectionLabel, selectionSize },\n}: ComponentSelectContext) => {\n if (queryResult == null) {\n return '';\n }\n if (selectedIds.size === 1) {\n const id = selectedIds.values().next().value;\n const selectedItem = queryResult.componentSearch.components?.find((item) => item.id === id);\n return selectedItem?.name ?? `1 ${componentType} selected`;\n }\n if (selectedIds.size > 1) {\n return `${selectedIds.size} ${componentType}s selected`;\n }\n if (emptySelectionLabel != null) {\n return emptySelectionLabel;\n }\n return selectionSize.max > 1\n ? `Select up to ${selectionSize.max} ${componentType}s`\n : `Select a ${componentType}`;\n};\n","import { assign, createMachine } from '@xstate/fsm';\n\nimport {\n ComponentSelectContext,\n ComponentSelectEvent,\n ComponentSelectType,\n GetComponentType,\n} from './component-select-types';\nimport { filterComponents, getComponentItems } from './component-select-util';\n\ntype ComponentSelectStates =\n | 'uninitialized'\n | 'pendingDataRequest'\n | 'fetchingInitialData'\n | 'closed'\n | 'opening'\n | 'open';\n\ninterface ComponentSelectState {\n value: ComponentSelectStates;\n context: ComponentSelectContext;\n}\n\nconst commonActions = {\n applySettings: assign<\n ComponentSelectContext,\n ComponentSelectEvent & { type: 'SETTINGS_CHANGED' }\n >({\n settings: (_, { settings }) => settings,\n visibleItems: ({ queryResult }, { settings }) => getComponentItems(queryResult, settings),\n }),\n overrideSelectedIds: assign<\n ComponentSelectContext,\n ComponentSelectEvent & { type: 'EXTERNAL_SELECTED_ITEMS_CHANGED' }\n >({\n selectedIds: (_, { selectedIds }) => new Set(selectedIds),\n }),\n processLoadedData: assign(\n (ctx, { data }) => {\n return {\n ...ctx,\n queryResult: data,\n visibleItems: getComponentItems(data, ctx.settings),\n };\n },\n ),\n\n selectItems: [\n assign(\n (ctx, { id }) => {\n const selectedIds = new Set(ctx.selectedIds);\n if (selectedIds.has(id)) {\n if (selectedIds.size > ctx.settings.selectionSize.min) {\n selectedIds.delete(id);\n }\n } else {\n if (selectedIds.size >= ctx.settings.selectionSize.max) {\n selectedIds.delete(selectedIds.values().next().value);\n }\n selectedIds.add(id);\n }\n const allComponents = (ctx.queryResult?.componentSearch.components ??\n []) as GetComponentType[];\n const selectedComponents = allComponents.filter((component) =>\n selectedIds.has(component.id),\n );\n const validation = ctx.settings.validationCheck?.(selectedComponents) ?? { isValid: true };\n\n return {\n ...ctx,\n selectedIds,\n validation,\n };\n },\n ),\n 'selection',\n ],\n};\n\nconst componentSelectActions = [\n {\n actions: commonActions.selectItems,\n cond: ({ settings: { selectionSize } }: ComponentSelectContext) => selectionSize.max === 1,\n target: 'closed',\n },\n {\n actions: commonActions.selectItems,\n cond: ({ settings: { selectionSize } }: ComponentSelectContext) => selectionSize.max > 1,\n },\n];\n\nexport const componentSelectMachine = createMachine<\n ComponentSelectContext,\n ComponentSelectEvent,\n ComponentSelectState\n>({\n context: {\n queryResult: undefined,\n selectedIds: new Set(),\n settings: {\n componentType: ComponentSelectType.SolarPanel,\n selectionSize: { max: 1, min: 0 },\n },\n validation: { isValid: true },\n visibleItems: [],\n },\n id: 'componentSelect',\n initial: 'uninitialized',\n states: {\n closed: {\n on: {\n DATA_LOADED: {\n actions: commonActions.processLoadedData,\n },\n EXTERNAL_SELECTED_ITEMS_CHANGED: { actions: commonActions.overrideSelectedIds },\n SETTINGS_CHANGED: { actions: commonActions.applySettings },\n TOGGLE_BUTTON_CLICKED: 'opening',\n },\n },\n fetchingInitialData: {\n on: {\n DATA_LOADED: {\n actions: commonActions.processLoadedData,\n target: 'closed',\n },\n EXTERNAL_SELECTED_ITEMS_CHANGED: { actions: commonActions.overrideSelectedIds },\n SETTINGS_CHANGED: { actions: commonActions.applySettings },\n },\n },\n open: {\n entry: 'focusSearchInput',\n on: {\n CLICKED_AWAY: 'closed',\n COMPONENT_SELECTED: componentSelectActions,\n DATA_LOADED: {\n actions: commonActions.processLoadedData,\n },\n EXTERNAL_SELECTED_ITEMS_CHANGED: { actions: commonActions.overrideSelectedIds },\n SEARCH_STRING_CHANGED: [\n {\n actions: ['startSearchDebounce'],\n cond: ({ settings }: ComponentSelectContext) => !!settings?.shouldSearchAllComponents,\n },\n {\n actions: assign({\n visibleItems: (ctx: ComponentSelectContext, event) => filterComponents(ctx, event),\n }),\n cond: ({ settings }: ComponentSelectContext) => !settings?.shouldSearchAllComponents,\n },\n ],\n SEARCH_STRING_READY: { actions: 'queryComponents' },\n SETTINGS_CHANGED: { actions: commonActions.applySettings },\n TOGGLE_BUTTON_CLICKED: 'closed',\n },\n },\n opening: {\n on: {\n COMPONENT_SELECTED: componentSelectActions,\n DATA_LOADED: {\n actions: commonActions.processLoadedData,\n },\n EXTERNAL_SELECTED_ITEMS_CHANGED: { actions: commonActions.overrideSelectedIds },\n POPOVER_OPENED: 'open',\n SETTINGS_CHANGED: { actions: commonActions.applySettings },\n },\n },\n pendingDataRequest: {\n on: {\n BEGIN_DATA_REQUEST: 'fetchingInitialData',\n DATA_LOADED: {\n actions: commonActions.processLoadedData,\n target: 'closed',\n },\n EXTERNAL_SELECTED_ITEMS_CHANGED: { actions: commonActions.overrideSelectedIds },\n SETTINGS_CHANGED: { actions: commonActions.applySettings },\n },\n },\n uninitialized: {\n on: {\n EXTERNAL_SELECTED_ITEMS_CHANGED: { actions: commonActions.overrideSelectedIds },\n SETTINGS_CHANGED: {\n actions: [commonActions.applySettings, 'queryComponents'],\n target: 'pendingDataRequest',\n },\n },\n },\n },\n});\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport { CadRequiredComponentPropertiesFragmentDoc } from '../../../common/packages/data-access-layer/src/graphql/cad-electrical-components-fragment.generated';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type ComponentSelectQueryVariables = Types.Exact<{\n input: Types.ComponentSearchQuery;\n}>;\n\n\nexport type ComponentSelectQuery = { __typename: 'Query', componentSearch: { __typename: 'ComponentSearchResult', components: Array<{ __typename: 'Battery', id: string, name?: string | null | undefined, starred: boolean, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'CombinerBox', id: string, name?: string | null | undefined, starred: boolean, fuseRating?: number | null | undefined, voltageRating?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'DcOptimizer', numInputs?: number | null | undefined, id: string, name?: string | null | undefined, starred: boolean, efficiency?: number | null | undefined, efficiencyMax?: number | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputShortCircuitCurrentMax?: number | null | undefined, inputVoltageMax?: number | null | undefined, isExternalMppt?: boolean | null | undefined, isLongString?: boolean | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, maxInputCurrent?: number | null | undefined, mpptOperatingVoltageMax?: number | null | undefined, mpptOperatingVoltageMin?: number | null | undefined, mpptRangeMax?: number | null | undefined, mpptRangeMin?: number | null | undefined, operatingModel?: string | null | undefined, optimizationBehavior?: string | null | undefined, outputCurrentMax?: number | null | undefined, outputVoltageMax?: number | null | undefined, price?: number | null | undefined, stcInputPowerMax?: number | null | undefined, systemVoltageMax?: number | null | undefined, usesSelectiveOptimization?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'Disconnect', id: string, name?: string | null | undefined, starred: boolean, fused?: boolean | null | undefined, fuseRating?: number | null | undefined, currentRating?: number | null | undefined, voltageRating?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'LoadCenter', id: string, name?: string | null | undefined, starred: boolean, mainBreakerRating?: number | null | undefined, busRating?: number | null | undefined, isBreaker?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'Meter', id: string, name?: string | null | undefined, starred: boolean, currentRating?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'ServicePanel', id: string, name?: string | null | undefined, starred: boolean, breakerRating?: number | null | undefined, busRating?: number | null | undefined, main?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'SolarInverter', mppts?: number | null | undefined, id: string, name?: string | null | undefined, starred: boolean, efficiencyCec?: number | null | undefined, efficiencyEuropean?: number | null | undefined, efficiencyMax?: number | null | undefined, hasExternalMppt?: boolean | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputVoltageMax?: number | null | undefined, inputVoltageMin?: number | null | undefined, inputVoltageSE?: number | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, isMicroinverter?: boolean | null | undefined, mpptRatedPowerVoltageMax?: number | null | undefined, mpptRatedPowerVoltageMin?: number | null | undefined, numPhases?: number | null | undefined, numPhysicalDcInputs?: number | null | undefined, outputCurrent?: number | null | undefined, outputVoltageNominal?: number | null | undefined, price?: number | null | undefined, ratedPower?: number | null | undefined, usableInputCurrentMax?: number | null | undefined, usableInputPowerMax?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'SolarPanel', id: string, name?: string | null | undefined, starred: boolean, efficiency?: number | null | undefined, height?: number | null | undefined, imp?: number | null | undefined, isc?: number | null | undefined, length?: number | null | undefined, noct?: number | null | undefined, panelType?: string | null | undefined, price?: number | null | undefined, ratingPtc?: number | null | undefined, ratingStc?: number | null | undefined, tempCoeffIsc?: number | null | undefined, tempCoeffPmax?: number | null | undefined, tempCoeffVoc?: number | null | undefined, vmp?: number | null | undefined, voc?: number | null | undefined, width?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined, mlpe?: { __typename: 'MLPE', id: string, type?: string | null | undefined, isSolarInverter?: boolean | null | undefined, isDcOptimizer?: boolean | null | undefined, isCellStringOptimizer?: boolean | null | undefined, solarInverter?: { __typename: 'SolarInverter', id: string, efficiencyCec?: number | null | undefined, efficiencyEuropean?: number | null | undefined, efficiencyMax?: number | null | undefined, hasExternalMppt?: boolean | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputVoltageMax?: number | null | undefined, inputVoltageMin?: number | null | undefined, inputVoltageSE?: number | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, isMicroinverter?: boolean | null | undefined, mpptRatedPowerVoltageMax?: number | null | undefined, mpptRatedPowerVoltageMin?: number | null | undefined, mppts?: number | null | undefined, name?: string | null | undefined, numPhases?: number | null | undefined, numPhysicalDcInputs?: number | null | undefined, outputCurrent?: number | null | undefined, outputVoltageNominal?: number | null | undefined, price?: number | null | undefined, ratedPower?: number | null | undefined, usableInputCurrentMax?: number | null | undefined, usableInputPowerMax?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, displayName?: string | null | undefined, name?: string | null | undefined } | null | undefined } | null | undefined, dcOptimizer?: { __typename: 'DcOptimizer', id: string, efficiency?: number | null | undefined, efficiencyMax?: number | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputShortCircuitCurrentMax?: number | null | undefined, inputVoltageMax?: number | null | undefined, isExternalMppt?: boolean | null | undefined, isLongString?: boolean | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, maxInputCurrent?: number | null | undefined, mpptOperatingVoltageMax?: number | null | undefined, mpptOperatingVoltageMin?: number | null | undefined, mpptRangeMax?: number | null | undefined, mpptRangeMin?: number | null | undefined, name?: string | null | undefined, numInputs?: number | null | undefined, operatingModel?: string | null | undefined, optimizationBehavior?: string | null | undefined, outputCurrentMax?: number | null | undefined, outputVoltageMax?: number | null | undefined, price?: number | null | undefined, stcInputPowerMax?: number | null | undefined, systemVoltageMax?: number | null | undefined, usesSelectiveOptimization?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, displayName?: string | null | undefined, name?: string | null | undefined } | null | undefined } | null | undefined, cellStringOptimizer?: { __typename: 'CellStringOptimizer', id: string, name?: string | null | undefined, voltageLimit?: boolean | null | undefined, maxOutputVoltage?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, displayName?: string | null | undefined, name?: string | null | undefined } | null | undefined } | null | undefined } | null | undefined }> } };\n\n\nexport const ComponentSelectDocument = gql`\n query ComponentSelect($input: ComponentSearchQuery!) @trace_info(traceInfo: {pod: cad}) {\n componentSearch(input: $input) {\n components {\n id\n name\n starred\n manufacturer {\n id\n name\n displayName\n }\n ... on SolarInverter {\n mppts\n }\n ... on DcOptimizer {\n numInputs\n }\n ...CadRequiredComponentProperties\n }\n }\n}\n ${CadRequiredComponentPropertiesFragmentDoc}`;\n\n/**\n * __useComponentSelectQuery__\n *\n * To run a query within a React component, call `useComponentSelectQuery` and pass it any options that fit your needs.\n * When your component renders, `useComponentSelectQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useComponentSelectQuery({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useComponentSelectQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(ComponentSelectDocument, options);\n }\nexport function useComponentSelectLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(ComponentSelectDocument, options);\n }\nexport type ComponentSelectQueryHookResult = ReturnType;\nexport type ComponentSelectLazyQueryHookResult = ReturnType;\nexport type ComponentSelectQueryResult = Apollo.QueryResult;","import React, { FC, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { OrgPermission, OrgPermissions, useAppModule } from '@aurorasolar/common-module-loader';\nimport { useMachine } from '@xstate/react/lib/fsm';\n\nimport { ComponentSelectCore } from './component-select-core';\nimport { componentSelectMachine } from './component-select-machine';\nimport {\n ComponentSelectType,\n ComponentSelectValidationCheck,\n GetComponentType,\n} from './component-select-types';\nimport { getButtonLabel, getComponentSelectQueryParams } from './component-select-util';\nimport { useComponentSelectLazyQuery } from './component-select.generated';\n\nconst COMPONENT_SELECT_DEBOUNCE_DELAY = 500;\n\nexport interface ComponentSelectProps {\n buttonTestid?: string;\n disabled?: boolean;\n emptySelectionLabel?: string;\n hiddenIds?: string[];\n maxSelectionSize?: number;\n minSelectionSize?: number;\n onSelection: (selection: Set, components: GetComponentType[]) => void;\n projectId?: string;\n searchTestid?: string;\n selectedItems?: Set;\n type: T;\n validator?: ComponentSelectValidationCheck;\n}\n\nexport const getFirstSelection =\n (fn: (id: string, component: Component) => void) =>\n (selection: Set, items: Component[]) => {\n fn(selection.values().next().value, items[0]);\n };\n\ntype CSType = ((\n props: ComponentSelectProps,\n) => ReturnType) & { getFirstSelection: typeof getFirstSelection };\n\nexport const ComponentSelect: CSType = ({\n buttonTestid,\n disabled,\n emptySelectionLabel,\n hiddenIds,\n maxSelectionSize = 1,\n minSelectionSize = maxSelectionSize > 1 ? 0 : 1,\n onSelection,\n projectId,\n searchTestid,\n selectedItems,\n type,\n validator,\n}) => {\n const shouldSearchAllComponents = useAppModule(OrgPermissions)?.getPermission(\n OrgPermission.SearchAllComponents,\n );\n\n const searchInput = useRef(null);\n const searchTimeout = useRef(undefined);\n const [refreshItems, setRefreshItems] = useState(0);\n const [state, send] = useMachine(componentSelectMachine, {\n actions: {\n focusSearchInput: () => {\n searchInput.current?.focus();\n },\n queryComponents: (ctx, event) =>\n queryComponents(\n getComponentSelectQueryParams(\n ctx,\n selectedItems,\n 'searchString' in event ? event.searchString : undefined,\n projectId,\n ),\n ),\n selection: ({ queryResult, selectedIds, validation }) => {\n const validIds = validation.isValid ? selectedIds : new Set();\n const components = queryResult?.componentSearch.components as\n | GetComponentType[]\n | undefined;\n onSelection(validIds, components?.filter(({ id }) => validIds.has(id)) ?? []);\n setRefreshItems(refreshItems + 1);\n },\n\n startSearchDebounce: (_, event) => {\n clearTimeout(searchTimeout.current);\n searchTimeout.current = window.setTimeout(() => {\n if ('searchString' in event) {\n send({ searchString: event.searchString, type: 'SEARCH_STRING_READY' });\n }\n }, COMPONENT_SELECT_DEBOUNCE_DELAY);\n },\n },\n });\n\n const [queryComponents, { data, loading }] = useComponentSelectLazyQuery();\n\n useEffect(() => {\n if (loading) {\n send({ type: 'BEGIN_DATA_REQUEST' });\n } else if (!loading && data) {\n send({ data, type: 'DATA_LOADED' });\n }\n }, [send, loading, data]);\n\n useEffect(() => {\n send({\n settings: {\n componentType: type,\n disabled,\n emptySelectionLabel,\n hiddenIds,\n selectionSize: { max: maxSelectionSize, min: minSelectionSize },\n shouldSearchAllComponents,\n validationCheck: validator,\n },\n type: 'SETTINGS_CHANGED',\n });\n }, [\n disabled,\n emptySelectionLabel,\n hiddenIds,\n maxSelectionSize,\n minSelectionSize,\n shouldSearchAllComponents,\n send,\n type,\n validator,\n ]);\n\n useEffect(() => {\n if (selectedItems != null) {\n send({ selectedIds: selectedItems, type: 'EXTERNAL_SELECTED_ITEMS_CHANGED' });\n }\n }, [selectedItems, send, refreshItems]);\n\n const buttonLabel = useMemo(() => getButtonLabel(state.context), [state.context]);\n\n return (\n send({ type: 'CLICKED_AWAY' })}\n onComponentSelect={(id) => send({ id, type: 'COMPONENT_SELECTED' })}\n onPopoverClosing={() => send({ type: 'POPOVER_CLOSING' })}\n onPopoverOpened={() => send({ type: 'POPOVER_OPENED' })}\n onPopoverOpening={() => send({ type: 'POPOVER_OPENING' })}\n onSearchStringChange={(searchString) => send({ searchString, type: 'SEARCH_STRING_CHANGED' })}\n onToggleButtonClick={() => send({ type: 'TOGGLE_BUTTON_CLICKED' })}\n searchInput={searchInput}\n searchTestid={searchTestid}\n selectedItems={state.context.selectedIds}\n validation={state.context.validation}\n />\n );\n};\n\nComponentSelect.getFirstSelection = getFirstSelection;\n","import {\n ComponentSelectType,\n ComponentSelectValidationCheck,\n GetComponentType,\n} from './component-select-types';\n\ntype MultiInputComponentType = ComponentSelectType.DcOptimizer | ComponentSelectType.Microinverter;\n\nconst isSingleInput = (component: GetComponentType) => {\n if (component.__typename === 'DcOptimizer') {\n return (component.numInputs ?? 1) <= 1 && !component.isExternalMppt;\n }\n return (component.mppts ?? 1) <= 1;\n};\n\nexport const singleInputOnly =\n (message: string): ComponentSelectValidationCheck =>\n (components) =>\n components.every(isSingleInput) ? { isValid: true } : { isValid: false, message };\n","import React, { FC } from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { AuroraSwitch } from '@aurorasolar/common-core/src/switch/switch';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { ComponentSelect, ComponentSelectType } from '../component-select';\nimport { InstrumentPanelModalProps } from './types';\n\nexport const componentModalTestIds = {\n EXISTS: 'component-modal-exists',\n IS_MAIN: 'component-modal-is-main',\n};\nexport interface ComponentModalCoreProps {\n componentType: ComponentSelectType;\n confirm: () => void;\n exists: boolean;\n genericDefault: boolean;\n isMain: boolean;\n modalProps: InstrumentPanelModalProps;\n name: string;\n setSelectedComponent: (id: string) => void;\n showExists: boolean;\n showMain: boolean;\n toggleExists: () => void;\n toggleIsMain: () => void;\n valid?: boolean;\n}\n\nexport const ComponentModalCore: FC = ({\n componentType,\n confirm,\n exists,\n genericDefault,\n isMain,\n modalProps,\n name,\n setSelectedComponent,\n showExists,\n showMain,\n toggleExists,\n toggleIsMain,\n valid = true,\n}) => {\n const actions = {\n Cancel: [\n () => {\n modalProps.onClose();\n },\n { intent: AuroraThemedButtonIntent.SECONDARY },\n ],\n Create: [\n () => {\n confirm();\n modalProps.onClose();\n },\n { disabled: !valid, intent: AuroraThemedButtonIntent.PRIMARY },\n ],\n } as ModalActions;\n\n return (\n \n \n setSelectedComponent(id))}\n type={componentType}\n />\n \n {showExists && (\n \n \n Exists\n \n \n \n \n \n )}\n {showMain && (\n \n \n Main\n \n \n \n \n \n )}\n \n );\n};\n","import React, { FC, useMemo, useState } from 'react';\n\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { FeatureFlag, FeatureFlags, useAppModule } from '@aurorasolar/common-module-loader';\nimport { CadModal } from '@aurorasolar/graphql-client-schema';\n\nimport { ComponentSelectType } from '../component-select';\nimport { useTriggerCadAction } from '../hooks';\nimport { ComponentModalCore } from './component-modal-core';\nimport { InstrumentPanelModalProps } from './types';\n\nexport interface ComponentModalDefinition {\n actionType: CADTriggerActionTypes;\n cannotBeGeneric?: boolean;\n modal: CadModal;\n name: string;\n showExists: boolean;\n showMain: boolean;\n}\n\ntype NonModalComponents =\n | ComponentSelectType.DcOptimizer\n | ComponentSelectType.SolarPanel\n | ComponentSelectType.Microinverter\n | ComponentSelectType.SingleInputMicroinverter;\n\nexport type ModalComponents = Exclude;\n\nexport const modalComponentMap: Record = {\n [ComponentSelectType.CombinerBox]: {\n actionType: CADTriggerActionTypes.PlaceCombinerBox,\n modal: CadModal.PlaceCombinerBox,\n name: 'Combiner Box',\n showExists: false,\n showMain: false,\n },\n [ComponentSelectType.Disconnect]: {\n actionType: CADTriggerActionTypes.PlaceDisconnect,\n modal: CadModal.PlaceDisconnect,\n name: 'Disconnect',\n showExists: false,\n showMain: false,\n },\n [ComponentSelectType.SolarInverter]: {\n actionType: CADTriggerActionTypes.PlaceInverter,\n cannotBeGeneric: true,\n modal: CadModal.PlaceInverter,\n name: 'Inverter',\n showExists: false,\n showMain: false,\n },\n [ComponentSelectType.LoadCenter]: {\n actionType: CADTriggerActionTypes.PlaceLoadCenter,\n modal: CadModal.PlaceLoadCenter,\n name: 'Load Center',\n showExists: false,\n showMain: false,\n },\n [ComponentSelectType.Meter]: {\n actionType: CADTriggerActionTypes.PlaceMeter,\n modal: CadModal.PlaceMeter,\n name: 'Meter',\n showExists: true,\n showMain: false,\n },\n [ComponentSelectType.ServicePanel]: {\n actionType: CADTriggerActionTypes.PlaceServicePanel,\n modal: CadModal.PlaceServicePanel,\n name: 'Service Panel',\n showExists: true,\n showMain: true,\n },\n};\n\nexport interface ComponentModalProps extends InstrumentPanelModalProps {\n componentType: ModalComponents;\n}\nexport const ComponentModal: FC = ({ componentType, ...modalProps }) => {\n const [selectedComponentId, setSelectedComponent] = useState(null);\n const [exists, setExists] = useState(false);\n const [isMain, setIsMain] = useState(false);\n const featureFlags = useAppModule(FeatureFlags);\n const disableMain = useMemo(\n () =>\n featureFlags?.variation(FeatureFlag.ComponentInspectorLineDiagram) === true &&\n componentType === ComponentSelectType.ServicePanel,\n [componentType, featureFlags],\n );\n\n const { actionType, cannotBeGeneric, name, showExists, showMain } =\n modalComponentMap[componentType];\n\n const valid = !(cannotBeGeneric && !selectedComponentId);\n\n const confirm = useTriggerCadAction(actionType, {\n databaseId: selectedComponentId!,\n exists,\n main: isMain,\n });\n\n return (\n confirm(undefined)}\n exists={exists}\n genericDefault={!cannotBeGeneric}\n isMain={isMain}\n modalProps={modalProps}\n name={name}\n setSelectedComponent={setSelectedComponent}\n showExists={showExists}\n showMain={showMain && !disableMain}\n toggleExists={() => setExists((prev) => !prev)}\n toggleIsMain={() => setIsMain((prev) => !prev)}\n valid={valid}\n />\n );\n};\n","import React from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { Box } from '@rebass/grid';\n\nimport { ComponentSelect, ComponentSelectType } from '../component-select';\nimport { InstrumentPanelModalProps } from './types';\n\nexport interface CurrentInverterModalCoreProps {\n modalProps: InstrumentPanelModalProps;\n cancel: () => void;\n confirm: () => boolean;\n setSelectedComponent: (id: string) => void;\n}\n\nexport const CurrentInverterModalCore = ({\n modalProps,\n cancel,\n confirm,\n setSelectedComponent,\n}: CurrentInverterModalCoreProps) => {\n const actions = {\n Cancel: [\n () => {\n cancel();\n modalProps.onClose();\n },\n { intent: AuroraThemedButtonIntent.SECONDARY },\n ],\n Choose: [\n () => {\n if (confirm()) {\n modalProps.onClose();\n }\n },\n { intent: AuroraThemedButtonIntent.PRIMARY },\n ],\n } as ModalActions;\n return (\n \n \n \n \n \n );\n};\n","import React, { useState } from 'react';\n\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\n\nimport { useTriggerCadAction } from '../hooks';\nimport { CurrentInverterModalCore } from './current-inverter-modal-core';\nimport { InstrumentPanelModalProps } from './types';\n\nexport const CurrentInverterModal = ({ ...modalProps }: InstrumentPanelModalProps) => {\n const [selectedComponent, setSelectedComponent] = useState(null);\n\n const setCurrentInverter = useTriggerCadAction(\n CADTriggerActionTypes.StringPanelsWithCurrentInverter,\n );\n\n const confirm = () => {\n if (selectedComponent) setCurrentInverter({ newCurrentInverterId: selectedComponent });\n return !!selectedComponent;\n };\n\n const cancel = useTriggerCadAction(CADTriggerActionTypes.StringPanelsWithCurrentInverterCanceled);\n\n return (\n \n );\n};\n","import React, { ChangeEvent } from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { AuroraSwitch } from '@aurorasolar/common-core/src/switch';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { InstrumentPanelModalProps } from '../component-modal/types';\nimport { PublicDxfParam, PublicDxfParams, PublicDxfParamsList } from './download-dxf';\n\nexport interface DownloadDxfModalCoreProps extends InstrumentPanelModalProps {\n confirm: () => void;\n setProp: (prop: PublicDxfParam, value: boolean) => void;\n settings: PublicDxfParams;\n}\n\nexport const DownloadDxfModalCore = ({\n confirm,\n onClose,\n setProp,\n settings,\n ...modalProps\n}: DownloadDxfModalCoreProps) => {\n const actions = {\n Cancel: [\n () => {\n onClose();\n },\n { intent: AuroraThemedButtonIntent.SECONDARY },\n ],\n Export: [\n () => {\n confirm();\n onClose();\n },\n { intent: AuroraThemedButtonIntent.PRIMARY },\n ],\n } as ModalActions;\n return (\n \n \n {PublicDxfParamsList.map((key) => (\n \n \n {key}\n \n \n ) =>\n setProp(key, target.checked)\n }\n />\n \n \n ))}\n \n \n );\n};\n","import React, { useState } from 'react';\n\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\n\nimport { InstrumentPanelModalProps } from '../component-modal/types';\nimport { useTriggerCadAction } from '../hooks';\nimport { PublicDxfParam, PublicDxfParams, translateDxfParams } from './download-dxf';\nimport { DownloadDxfModalCore } from './dxf-modal-core';\n\nexport const DownloadDxfModal = (props: InstrumentPanelModalProps) => {\n const [settings, updateSettings] = useState({\n 'Balance Of System': false,\n Buildings: true,\n Connections: false,\n Inverters: false,\n Modules: true,\n Obstructions: true,\n Setbacks: true,\n Strings: false,\n } as PublicDxfParams);\n\n const exportDxf = useTriggerCadAction(CADTriggerActionTypes.DXF);\n const confirm = () => exportDxf(translateDxfParams(settings));\n\n const setProp = (prop: PublicDxfParam, value: boolean) => {\n updateSettings({ ...settings, [prop]: value });\n };\n\n return (\n \n );\n};\n","import React, { FC } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n AuroraThemedButton,\n AuroraThemedButtonIntent,\n MutedButton,\n} from '@aurorasolar/common-core/src/button';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Box, Flex } from '@rebass/grid';\n\nimport {\n ComponentSelect,\n ComponentSelectType,\n ComponentSelectValidationCheck,\n} from '../component-select';\n\nexport interface MlpeSelectionProps {\n hasSelectedPanel: boolean;\n integratedMlpeType?: string;\n onRemoveMlpe: VoidFunction;\n onSelectMlpe: (id: string) => void;\n onSelectMlpeType: (type: ComponentSelectType) => void;\n selectedMlpeId?: string;\n selectedMlpeType?: ComponentSelectType;\n vertical?: boolean;\n validator?: ComponentSelectValidationCheck<\n ComponentSelectType.DcOptimizer | ComponentSelectType.Microinverter\n >;\n}\n\nconst MlpeSelectionWrapper = styled.div<{ noSelection?: boolean; vertical?: boolean }>`\n margin-bottom: ${SPACES[4]}px;\n min-height: ${({ vertical }) => (vertical ? '90px' : '66px')};\n ${({ noSelection, vertical }) =>\n noSelection &&\n css`\n display: flex;\n justify-content: ${vertical ? 'space-between' : 'flex-start'};\n flex-direction: ${vertical ? 'column' : 'row'};\n `}\n`;\n\n/**\n * @deprecated: use `cad-pro` version\n */\nexport const MlpeSelection: FC = ({\n hasSelectedPanel,\n integratedMlpeType,\n onRemoveMlpe,\n onSelectMlpe,\n onSelectMlpeType,\n selectedMlpeId,\n selectedMlpeType,\n vertical = false,\n validator,\n}) => {\n if (integratedMlpeType != null) {\n return (\n \n \n \n Integrated MLPE\n \n \n \n \n {integratedMlpeType}\n \n \n \n );\n }\n if (selectedMlpeType != null) {\n return (\n \n \n \n \n {selectedMlpeType}\n \n \n \n Remove\n \n \n \n \n \n \n \n \n );\n }\n return (\n \n \n onSelectMlpeType(ComponentSelectType.Microinverter)}\n width={vertical ? '100%' : undefined}\n >\n + Microinverter\n \n \n \n onSelectMlpeType(ComponentSelectType.DcOptimizer)}\n width={vertical ? '100%' : undefined}\n >\n + DC Optimizer\n \n \n \n );\n};\n","interface Limits {\n max: number;\n min: number;\n sliderMax?: number;\n sliderMin?: number;\n stepSize: number;\n}\ntype PropertyLimits = { [key: string]: Limits };\n\nexport const getNumericInputLimitProps = ({ max, min, stepSize }: Limits) => ({\n max,\n min,\n stepSize,\n});\n\nexport const clampToLimits =\n ({ min, max }: Limits) =>\n (n: number) =>\n Math.max(Math.min(max, n), min);\n\nconst dormer = {\n pitch: {\n stepSize: 1, // other dormer limits are dynamic\n },\n};\nconst edge: PropertyLimits = {\n height: {\n max: 500,\n min: 0,\n sliderMax: 20,\n stepSize: 1,\n },\n length: {\n max: Infinity,\n min: 0.01,\n sliderMax: 20,\n stepSize: 1,\n },\n};\nconst fillZone: PropertyLimits = {\n minSap: {\n max: 99,\n min: 0,\n stepSize: 0.1,\n },\n};\nconst lidar: PropertyLimits = {\n offsetXY: {\n max: 12.88,\n min: -13.12,\n stepSize: 1,\n },\n offsetZ: {\n max: 97.57,\n min: -98.43,\n stepSize: 1,\n },\n};\nconst obstruction: PropertyLimits = {\n height: {\n max: Infinity,\n min: 0.1,\n sliderMax: 30,\n stepSize: 0.1,\n },\n radius: {\n max: Infinity,\n min: 0.1,\n sliderMax: 10,\n stepSize: 0.1,\n },\n setback: {\n max: Infinity,\n min: 0,\n sliderMax: 10,\n stepSize: 0.1,\n },\n};\n\nconst roof: PropertyLimits = {\n height: {\n max: Infinity,\n min: 0.1,\n sliderMax: 90,\n stepSize: 1,\n },\n pitch: {\n max: 80,\n min: 1,\n sliderMax: 80,\n stepSize: 1,\n },\n slope: {\n max: 68.1,\n min: 0.1,\n sliderMax: 12,\n stepSize: 1,\n },\n stories: {\n max: Infinity,\n min: 0,\n sliderMax: 30,\n stepSize: 1,\n },\n};\nconst roofNode: PropertyLimits = {\n angle: {\n max: 180,\n min: 0,\n stepSize: 1,\n },\n};\nconst ruler: PropertyLimits = {\n length: {\n max: Infinity,\n min: 0.1,\n sliderMax: 1000, // No slider in V1\n stepSize: 0.1,\n },\n};\n\nconst solarPanel: PropertyLimits = {\n rotation: {\n max: 179,\n min: -179,\n stepSize: 1,\n },\n spacing: {\n max: Infinity,\n min: 0,\n stepSize: 0.1,\n },\n tilt: {\n max: 89,\n min: 0,\n stepSize: 1,\n },\n};\nconst tree: PropertyLimits = {\n crownDiameter: {\n max: 30,\n min: 0.1,\n sliderMax: 20,\n stepSize: 1,\n },\n crownHeight: {\n max: 100,\n min: 0.1,\n sliderMax: 40,\n stepSize: 1,\n },\n height: {\n max: 100,\n min: 0.1,\n sliderMax: 40,\n stepSize: 1,\n },\n trunkDiameter: {\n max: 4,\n min: 0.1,\n stepSize: 0.1,\n },\n};\n\nconst walkway: PropertyLimits = {\n all: {\n max: 30,\n min: 0.1,\n stepSize: 0.1,\n },\n};\n\nconst firePathway: PropertyLimits = {\n width: {\n max: 10,\n min: 0,\n sliderMax: 3,\n stepSize: 1,\n },\n};\n\nconst groundMount: PropertyLimits = {\n heightToBase: {\n max: 100,\n min: 0,\n sliderMax: 16,\n stepSize: 0.1,\n },\n maxStringLength: {\n max: Infinity,\n min: 0,\n stepSize: 1,\n },\n rotation: solarPanel.rotation,\n // columns, rows (height, width) etc\n size: {\n max: 100,\n min: 1,\n stepSize: 1,\n },\n spacing: solarPanel.spacing,\n tilt: solarPanel.tilt,\n};\n\nconst customImage: PropertyLimits = {\n opacity: {\n max: 100,\n min: 0,\n stepSize: 1,\n },\n rotation: {\n max: 360,\n min: 0,\n stepSize: 1,\n },\n size: {\n max: Infinity,\n min: 1,\n sliderMax: 300,\n sliderMin: 5,\n stepSize: 1,\n },\n};\n\nexport const limits = {\n customImage,\n dormer,\n edge,\n fillZone,\n firePathway,\n groundMount,\n lidar,\n obstruction,\n roof,\n roofNode,\n ruler,\n solarPanel,\n tree,\n walkway,\n};\n","import React, { CSSProperties, FC, useMemo } from 'react';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { AuroraButtonGroup } from '@aurorasolar/common-core/src/button-group';\nimport { AuroraCheckbox } from '@aurorasolar/common-core/src/checkbox';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { AuroraNumericInput, NumericInputRightTag } from '@aurorasolar/common-core/src/input';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { NumericInputValidators } from '@aurorasolar/common-core/src/validator';\nimport { DrawArraySettings, StringingMode } from '@aurorasolar/common-data-store';\nimport { ConversionType, withNumericConversion } from '@aurorasolar/common-numeric-conversion';\nimport { PanelOrientation } from '@aurorasolar/graphql-client-schema';\nimport { Collapse } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { ComponentSelect, ComponentSelectType, GetComponentType } from '../component-select';\nimport { getNumericInputLimitProps, limits } from '../property-limits';\nimport { GroundMountContext } from './ground-mount-modal-machine';\n\n// Needed because the collapsible area overlays the action buttons.\nconst INCREASE_BUTTON_Z: CSSProperties = { position: 'relative', zIndex: 1 };\n\nexport const groundMountModalTestid = {\n HEIGHT: 'ground-mount-modal-height',\n SPACING_X: 'ground-mount-modal-spacing-x',\n SPACING_Y: 'ground-mount-modal-spacing-y',\n STRINGING_LENGTH: 'ground-mount-modal-stringing-length',\n TILT: 'ground-mount-modal-tilt',\n};\nconst integerOnlyValidator: NumericInputValidators = [\n {\n condition: ({ value }) => value === Math.round(value),\n failureResult: {\n inline: 'Invalid Entry',\n tooltip: 'Please enter a whole number',\n },\n },\n];\nconst NumericInputWithConversion = withNumericConversion(AuroraNumericInput);\nconst orientations = [\n {\n icon: AuroraIconType.PANELS_PORTRAIT,\n key: PanelOrientation.P,\n },\n {\n icon: AuroraIconType.PANELS_LANDSCAPE,\n key: PanelOrientation.L,\n },\n];\n\nexport interface GroundMountModalCoreProps {\n isAdvancedOpen: boolean;\n isOpen: boolean;\n mlpeSection: JSX.Element;\n onClose: VoidFunction;\n onDrawButtonClick: VoidFunction;\n onPanelSelect: (panel: GetComponentType) => void;\n onStringingToggle: (checked: boolean) => void;\n onStringLengthChange: (length: number) => void;\n onToggleAdvancedSettings: VoidFunction;\n onUpdateSetting: (patch: Partial>) => void;\n portalContainer?: HTMLElement;\n settingsForCad: GroundMountContext['settingsForCad'];\n}\n\nexport const GroundMountModalCore: FC = ({\n isAdvancedOpen,\n isOpen,\n mlpeSection,\n onClose,\n onDrawButtonClick,\n onPanelSelect,\n onStringingToggle,\n onStringLengthChange,\n onToggleAdvancedSettings,\n onUpdateSetting,\n portalContainer,\n settingsForCad,\n}) => {\n const selectedSolarPanelId = settingsForCad.solarPanelId;\n\n const modalActions = useMemo(\n () => ({\n Draw: [\n onDrawButtonClick,\n {\n disabled: selectedSolarPanelId == null,\n intent: AuroraThemedButtonIntent.PRIMARY,\n style: INCREASE_BUTTON_Z,\n },\n ],\n }),\n [onDrawButtonClick, selectedSolarPanelId],\n );\n\n return (\n \n \n \n Module\n \n \n \n {\n onPanelSelect(solarPanel);\n })}\n selectedItems={\n new Set(settingsForCad.solarPanelId == null ? [] : [settingsForCad.solarPanelId])\n }\n type={ComponentSelectType.SolarPanel}\n />\n \n {mlpeSection}\n \n \n \n \n Orientation\n \n \n icon}\n selectable={{\n items: orientations,\n onItemSelected: ({ key }) => onUpdateSetting({ orientation: key }),\n selectedItem: orientations.find(({ key }) => key === settingsForCad.orientation),\n }}\n />\n \n \n onUpdateSetting({ tilt })}\n rightElement={°}\n value={settingsForCad.tilt}\n />\n \n \n onUpdateSetting({ heightToBase })}\n tagComponent={NumericInputRightTag}\n value={settingsForCad.heightToBase}\n />\n \n \n \n \n \n onStringingToggle(checked)}\n />\n \n \n \n \n \n \n \n \n Advanced Settings\n\n \n \n \n \n \n \n onUpdateSetting({ interModuleSpacingX })\n }\n tagComponent={NumericInputRightTag}\n value={settingsForCad.interModuleSpacingX}\n />\n \n \n \n onUpdateSetting({ interModuleSpacingY })\n }\n tagComponent={NumericInputRightTag}\n value={settingsForCad.interModuleSpacingY}\n />\n \n \n \n * From Design Settings\n \n \n \n \n );\n};\n","import { ComponentSelectType, GetComponentType } from '../component-select';\n\nexport const getMlpeLabel = (mlpe: GetComponentType['mlpe']) => {\n if (mlpe != null) {\n if (mlpe.isCellStringOptimizer) {\n return 'Cell String Optimizer';\n }\n if (mlpe.isDcOptimizer) {\n return 'DC Optimizer';\n }\n if (mlpe.isSolarInverter) {\n return 'Solar Inverter';\n }\n }\n return undefined;\n};\n","import { DrawArraySettings, StringingMode } from '@aurorasolar/common-data-store';\nimport { PanelOrientation } from '@aurorasolar/graphql-client-schema';\nimport { assign, createMachine } from '@xstate/fsm';\n\nimport { ComponentSelectType, GetComponentType } from '../component-select';\nimport { getMlpeLabel } from './util';\n\nexport interface GroundMountContext {\n settingsForCad: DrawArraySettings;\n isAdvancedOpen: boolean;\n integratedMlpeType?: string;\n selectedMlpeType?: ComponentSelectType;\n}\n\ntype GroundMountEvent =\n | { type: 'SETTING_CHANGED'; patch: Partial> }\n | { type: 'PANEL_SELECTED'; panel: GetComponentType }\n | { type: 'MLPE_TYPE_ADDED'; mlpeType: ComponentSelectType }\n | { type: 'MLPE_REMOVED' }\n | { type: 'ADVANCED_SETTINGS_TOGGLED' }\n | { type: 'MLPE_SELECTED'; mlpeId: string }\n | { type: 'DRAW_CLICKED' }\n | { type: 'STRINGING_TOGGLED'; checked: boolean }\n | { type: 'STRING_LENGTH_CHANGED'; length: number }\n | {\n type: 'SETTINGS_QUERY_RESPONDED';\n spacing: Pick;\n };\n\ntype EventOfType = Event & {\n type: EventType;\n};\n\ntype GroundMountState =\n | {\n value: 'notReady';\n context: {\n // The panel has not yet been selected\n settingsForCad: Omit;\n isAdvancedOpen: boolean;\n integratedMlpeType?: string;\n selectedMlpeType?: ComponentSelectType;\n };\n }\n | {\n value: 'panelIsSelected';\n context: {\n settingsForCad: DrawArraySettings;\n isAdvancedOpen: boolean;\n integratedMlpeType?: string;\n selectedMlpeType?: ComponentSelectType;\n };\n };\n\nconst sharedActions = {\n selectPanel: assign>({\n integratedMlpeType: (_, { panel }) => getMlpeLabel(panel.mlpe),\n settingsForCad: (context, { panel }) => {\n const settings = {\n ...context.settingsForCad,\n solarPanelId: panel.id,\n };\n // If there is an integrated MLPE, remove the selected one.\n if (panel.mlpe?.type != null) {\n settings.dcOptimizerId = undefined;\n settings.microinverterId = undefined;\n }\n return settings;\n },\n }),\n\n toggleAdvancedSettings: assign({\n isAdvancedOpen: (context) => !context.isAdvancedOpen,\n }),\n\n toggleStringing: assign>({\n settingsForCad: (context, { checked }) => ({\n ...context.settingsForCad,\n maxStringLength: undefined,\n stringingMode: checked ? StringingMode.EntireRow : StringingMode.None,\n }),\n }),\n\n updateSettings: assign>({\n settingsForCad: (context, { patch }) => ({ ...context.settingsForCad, ...patch }),\n }),\n\n updateStringLength: assign<\n GroundMountContext,\n EventOfType\n >({\n settingsForCad: (context, { length }) => ({\n ...context.settingsForCad,\n maxStringLength: length === 0 ? undefined : Math.round(length),\n stringingMode: length === 0 ? StringingMode.EntireRow : StringingMode.MaxLength,\n }),\n }),\n};\n\nexport const groundMountModalMachine = createMachine<\n GroundMountContext,\n GroundMountEvent,\n GroundMountState\n>({\n context: {\n isAdvancedOpen: false,\n settingsForCad: {\n arraySpacingX: 0,\n arraySpacingY: 0,\n heightToBase: 1,\n interModuleSpacingX: 0,\n interModuleSpacingY: 0,\n orientation: PanelOrientation.P,\n stringingMode: StringingMode.None,\n tilt: 0,\n },\n },\n id: 'groundMountModal',\n initial: 'notReady',\n states: {\n notReady: {\n on: {\n ADVANCED_SETTINGS_TOGGLED: { actions: sharedActions.toggleAdvancedSettings },\n PANEL_SELECTED: {\n actions: sharedActions.selectPanel,\n target: 'panelIsSelected',\n },\n SETTING_CHANGED: { actions: sharedActions.updateSettings },\n STRING_LENGTH_CHANGED: { actions: sharedActions.updateStringLength },\n STRINGING_TOGGLED: { actions: sharedActions.toggleStringing },\n },\n },\n panelIsSelected: {\n on: {\n ADVANCED_SETTINGS_TOGGLED: { actions: sharedActions.toggleAdvancedSettings },\n DRAW_CLICKED: { actions: 'startDrawing' },\n MLPE_REMOVED: {\n actions: assign({\n selectedMlpeType: (_) => undefined,\n settingsForCad: (context) => ({\n ...context.settingsForCad,\n dcOptimizerId: undefined,\n microinverterId: undefined,\n }),\n }),\n },\n MLPE_SELECTED: {\n actions: assign({\n settingsForCad: ({ settingsForCad, selectedMlpeType }, { mlpeId }) => ({\n ...settingsForCad,\n dcOptimizerId:\n selectedMlpeType === ComponentSelectType.DcOptimizer ? mlpeId : undefined,\n microinverterId:\n selectedMlpeType === ComponentSelectType.Microinverter ? mlpeId : undefined,\n }),\n }),\n },\n MLPE_TYPE_ADDED: {\n actions: assign({\n selectedMlpeType: (_, { mlpeType }) => mlpeType,\n }),\n },\n PANEL_SELECTED: { actions: sharedActions.selectPanel },\n SETTING_CHANGED: { actions: sharedActions.updateSettings },\n STRING_LENGTH_CHANGED: { actions: sharedActions.updateStringLength },\n STRINGING_TOGGLED: { actions: sharedActions.toggleStringing },\n },\n },\n },\n});\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GroundMountModalQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type GroundMountModalQuery = { __typename: 'Query', design: { __typename: 'Design', id: string, interModuleSpacingX?: number | null | undefined, interModuleSpacingY?: number | null | undefined } };\n\n\nexport const GroundMountModalDocument = gql`\n query GroundMountModal($designId: ID!) @trace_info(traceInfo: {pod: cad}) {\n design: designById(id: $designId) {\n id\n interModuleSpacingX\n interModuleSpacingY\n }\n}\n `;\n\n/**\n * __useGroundMountModalQuery__\n *\n * To run a query within a React component, call `useGroundMountModalQuery` and pass it any options that fit your needs.\n * When your component renders, `useGroundMountModalQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGroundMountModalQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useGroundMountModalQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GroundMountModalDocument, options);\n }\nexport function useGroundMountModalLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GroundMountModalDocument, options);\n }\nexport type GroundMountModalQueryHookResult = ReturnType;\nexport type GroundMountModalLazyQueryHookResult = ReturnType;\nexport type GroundMountModalQueryResult = Apollo.QueryResult;","import React, { FC, useEffect } from 'react';\n\nimport {\n CADTriggerActionTypes,\n DrawArraySettings,\n StringingMode,\n} from '@aurorasolar/common-data-store';\nimport { AnalyticsEventTypes } from '@aurorasolar/common-module-loader';\nimport { PanelOrientation } from '@aurorasolar/graphql-client-schema';\nimport { useMachine } from '@xstate/react/lib/fsm';\n\nimport { componentSelectValidator } from '../component-select';\nimport { useTriggerCadAction } from '../hooks';\nimport { useAnalytics } from '../hooks/use-analytics';\nimport { MlpeSelection } from '../mlpe-selection';\nimport { GroundMountModalCore } from './ground-mount-modal-core';\nimport { groundMountModalMachine } from './ground-mount-modal-machine';\nimport { useGroundMountModalQuery } from './ground-mount-modal.generated';\n\nexport interface GroundMountModalProps {\n designId: string;\n isOpen: boolean;\n onClose: VoidFunction;\n portalContainer?: HTMLElement;\n}\nconst singleInputOnly = componentSelectValidator.singleInputOnly(\n 'Currently, ground mounts cannot contain multi-input components',\n);\n\nexport const GroundMountModal: FC = ({\n designId,\n isOpen,\n onClose,\n portalContainer,\n}) => {\n const startDrawingGroundMount = useTriggerCadAction(CADTriggerActionTypes.DrawArrays, {});\n const queryResult = useGroundMountModalQuery({ variables: { designId } });\n const track = useAnalytics();\n const [state, send] = useMachine(groundMountModalMachine, {\n actions: {\n startDrawing: (context) => {\n if (context.settingsForCad.solarPanelId != null) {\n onClose();\n startDrawingGroundMount(context.settingsForCad as DrawArraySettings);\n const dcOptimizer = context.settingsForCad.dcOptimizerId ? 'DC optimizer' : undefined;\n const micro = context.settingsForCad.microinverterId ? 'microinverter' : undefined;\n track(AnalyticsEventTypes.DesignAddedGroundmount, {\n added_strings: context.settingsForCad.stringingMode !== StringingMode.None,\n adder: micro || dcOptimizer,\n panel_orientation:\n context.settingsForCad.orientation === PanelOrientation.L ? 'landscape' : 'portrait',\n });\n }\n },\n },\n });\n\n useEffect(() => {\n const design = queryResult.data?.design;\n if (design != null) {\n send({\n patch: {\n interModuleSpacingX: design.interModuleSpacingX ?? 0,\n interModuleSpacingY: design.interModuleSpacingY ?? 0,\n },\n type: 'SETTING_CHANGED',\n });\n }\n }, [queryResult.data?.design, send]);\n\n const { settingsForCad, isAdvancedOpen, integratedMlpeType, selectedMlpeType } = state.context;\n\n return (\n send('MLPE_REMOVED')}\n onSelectMlpe={(mlpeId) => send({ mlpeId, type: 'MLPE_SELECTED' })}\n onSelectMlpeType={(mlpeType) => send({ mlpeType, type: 'MLPE_TYPE_ADDED' })}\n selectedMlpeId={\n settingsForCad.microinverterId ?? settingsForCad.dcOptimizerId ?? undefined\n }\n selectedMlpeType={selectedMlpeType}\n validator={singleInputOnly}\n />\n }\n onClose={onClose}\n onDrawButtonClick={() => send('DRAW_CLICKED')}\n onPanelSelect={(panel) => send({ panel, type: 'PANEL_SELECTED' })}\n onStringingToggle={(checked) => send({ checked, type: 'STRINGING_TOGGLED' })}\n onStringLengthChange={(length) => send({ length, type: 'STRING_LENGTH_CHANGED' })}\n onToggleAdvancedSettings={() => send('ADVANCED_SETTINGS_TOGGLED')}\n onUpdateSetting={(patch) => send({ patch, type: 'SETTING_CHANGED' })}\n portalContainer={portalContainer}\n settingsForCad={settingsForCad}\n />\n );\n};\n","import { useProjectOrDesignId } from '@aurorasolar/common-core/src/hooks';\n\nimport { useGetJurisdictionQuery } from './hooks.generated';\n\nexport const useProjectAhj = () => {\n const { projectId } = useProjectOrDesignId();\n const { data } = useGetJurisdictionQuery({\n skip: !projectId,\n variables: {\n projectId: projectId || '',\n },\n });\n\n return { ahj: data?.project.jurisdiction, country: data?.project.country };\n};\n","import React, { useEffect, useState } from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { AuroraTooltip } from '@aurorasolar/common-core/src/tooltip';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { Position, Switch } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\nimport { styled, x } from '@xstyled/styled-components';\n\nimport { InstrumentPanelModalProps } from '../../component-modal/types';\nimport { useTriggerCadAction } from '../../hooks';\nimport { useProjectAhj } from '../../hooks/use-project-ahj';\nimport { getFireCodeYear } from './fire-pathway-helper-util';\n\nconst InfoText = styled(Text)`\n color: ${Colors.GRAY_700};\n font-size: 16px;\n`;\nconst SubTitle = styled(Text)`\n color: ${Colors.GRAY_700};\n font-weight: bold;\n font-size: 16px;\n`;\n\nconst AhjText = styled(Text)`\n color: ${Colors.NAVY};\n font-size: 16px;\n font-weight: bold;\n`;\n\nconst CodeYearText = styled(Text)`\n color: ${Colors.GRAY_700};\n font-size: 16px;\n`;\n\nconst FireSprinklerTitle = styled(Text)`\n color: ${Colors.GRAY_800};\n font-size: 14px;\n font-weight: 500;\n`;\n\nconst Section = styled(Flex)`\n flex-direction: column;\n margin-top: 16px;\n`;\n\nconst FireSprinklerToggle = styled(Flex)`\n flex-direction: row;\n align-items: center;\n margin-top: 16px;\n`;\n\nexport const AutoPlaceFirePathwayModalCore = ({\n onClose,\n ...modalProps\n}: InstrumentPanelModalProps) => {\n const [fireSprinklers, setFireSprinklers] = useState(false);\n const [fireCode, setFireCode] = useState('');\n\n // Only display modal if code year is 2015, 2018 or 2021\n const { ahj } = useProjectAhj();\n const codeYear = getFireCodeYear(ahj || undefined);\n\n useEffect(() => {\n setFireCode(codeYear || '');\n }, [codeYear]);\n\n const confirm = useTriggerCadAction(CADTriggerActionTypes.PlacePathways, {\n fireCode,\n fireSprinklers,\n });\n\n const actions = {\n 'Place fire pathways': [\n () => {\n onClose();\n confirm();\n },\n { intent: AuroraThemedButtonIntent.PRIMARY },\n ],\n } as ModalActions;\n return (\n \n \n

Auto place fire pathways

\n \n Based on AHJ and code year requirements, Aurora will auto place the minimum fire pathways\n for the system's design.\n \n
\n AHJ\n \n {ahj?.name ? (\n \n {ahj?.name}\n \n ) : (\n '-'\n )}\n \n
\n
\n \n Code year\n \n \n {ahj?.fireCode}\n
\n {codeYear && parseInt(codeYear, 10) >= 2018 && (\n \n \n Fire sprinklers\n \n \n setFireSprinklers(!fireSprinklers)}\n style={{ marginLeft: '32px' }}\n />\n \n )}\n
\n
\n );\n};\n","type FireCodeJurisdiction =\n | {\n id: string;\n name: string;\n fireCode?: string | null | undefined;\n modelFireCode?: string | null | undefined;\n }\n | undefined;\n\nexport const getFireCodeYear = (ahj: FireCodeJurisdiction) => {\n const codeYearString =\n ahj?.modelFireCode &&\n (ahj?.modelFireCode.match('2015') ||\n ahj?.modelFireCode.match('2018') ||\n ahj?.modelFireCode.match('2021'));\n\n return codeYearString && codeYearString?.length > 0 && codeYearString[0];\n};\n","import React from 'react';\n\nimport { InstrumentPanelModalProps } from '../../component-modal/types';\nimport { AutoPlaceFirePathwayModalCore } from './fire-pathway-modal-core';\n\nexport const AutoPlaceFirePathwayModal = (props: InstrumentPanelModalProps) => {\n return ;\n};\n","// TODO: Remove this file when all components are migrated to use the new DS theme provider\n\n// eslint-disable-next-line no-restricted-imports\nimport { AuroraThemeProvider } from '@aurorasolar/common-theming';\n\n/** @deprecated To be removed when the DS conversion is complete */\nexport const LegacyThemeProvider = AuroraThemeProvider;\n","import React, { FunctionComponent, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { Box, BoxProps } from '@rebass/grid';\n\nconst StyledBox = styled(Box)`\n min-height: 40px;\n`;\n\ntype CadInspectorRowProps = {\n tall?: boolean;\n noBottomPadding?: boolean;\n} & Omit;\n\nexport const CadInspectorRow: FunctionComponent = ({\n tall = false,\n noBottomPadding = false,\n ...props\n}: CadInspectorRowProps) => {\n const mb = useMemo(() => {\n if (noBottomPadding) {\n return 0;\n }\n if (tall) {\n return 6;\n }\n return 3;\n }, [tall, noBottomPadding]);\n return ;\n};\n","import React from 'react';\n\nimport { AuroraButton } from '@aurorasolar/common-core/src/button';\nimport { Text, TextType } from '@aurorasolar/common-core/src/typography';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { CadInspectorRow } from './cad-inspector-row';\n\nexport const LabeledDropDownWithRemoveButton = ({\n label,\n children,\n onRemove,\n rowProps,\n}: {\n label: string;\n onRemove?: () => void;\n children?: JSX.Element;\n rowProps?: object;\n}) => {\n return (\n \n \n \n {label}\n \n {onRemove && (\n \n Remove\n \n )}\n \n {children}\n \n );\n};\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { FlatButton, MutedButton } from '@aurorasolar/common-core/src/button';\nimport { AuroraButtonGroup } from '@aurorasolar/common-core/src/button-group';\nimport { useLocaleFormat } from '@aurorasolar/common-core/src/hooks';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { AuroraNumericInput, NumericInputRightTag } from '@aurorasolar/common-core/src/input';\nimport TooltipContent from '@aurorasolar/common-core/src/tooltip/tooltip-content';\nimport { AuroraText, TextType } from '@aurorasolar/common-core/src/typography';\nimport { ConversionType, withNumericConversion } from '@aurorasolar/common-numeric-conversion';\nimport { PanelOrientation } from '@aurorasolar/graphql-client-schema';\nimport { Collapse, Tooltip } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport {\n ComponentSelect,\n ComponentSelectType,\n componentSelectValidator,\n} from '../component-select';\nimport { LabeledDropDownWithRemoveButton } from '../inspector/cad-inspector-labeled-dropdown-with-remove';\nimport { limits } from '../property-limits';\nimport { SolarPanelModalState } from './solar-panel-modal-state';\n\nconst singleInputOnly = componentSelectValidator.singleInputOnly(\n 'Use AutoStringer to add multi-input components',\n);\nexport interface SolarPanelModalCoreProps {\n isAdvancedMode: boolean;\n isIrradianceLoaded: boolean;\n onPanelSelected: (id: string) => void;\n setState: (partial: Partial) => void;\n state: SolarPanelModalState;\n selectedPanelName?: string;\n}\nconst StyledToggleButton = styled(MutedButton)`\n padding: 0;\n`;\n\nconst testids = {\n microinverterSelectButton: 'solar-panel-modal-microinverter-select-button',\n microinverterSelectSearch: 'solar-panel-modal-microinverter-select-search',\n optimizerSelectButton: 'solar-panel-modal-optimizer-select-button',\n optimizerSelectSearch: 'solar-panel-modal-optimizer-select-search',\n panelSelectButton: 'solar-panel-modal-panel-select-button',\n panelSelectSearch: 'solar-panel-modal-panel-select-search',\n};\n\nconst OrientationButtonGroupItems = [\n {\n dataTestId: 'orientation-portrait-button',\n icon: AuroraIconType.PANELS_PORTRAIT,\n orientation: PanelOrientation.P,\n },\n {\n dataTestId: 'orientation-landscape-button',\n icon: AuroraIconType.PANELS_LANDSCAPE,\n orientation: PanelOrientation.L,\n },\n];\n\nconst CadNumericInputWithConversion = withNumericConversion(AuroraNumericInput);\nexport const SolarPanelModalCore: FC = ({\n isAdvancedMode,\n isIrradianceLoaded,\n onPanelSelected,\n setState,\n state,\n}) => {\n const {\n collapseIsOpen,\n minSap,\n orientation,\n rotation,\n spacingX,\n spacingY,\n tilt,\n useDcOptimizer,\n useMicroinverter,\n } = state;\n const { formatNumber } = useLocaleFormat();\n\n const handleCollapse = () => {\n setState({ collapseIsOpen: !collapseIsOpen });\n };\n\n const widthSize = isAdvancedMode ? 10 : 9;\n\n let collapseLabel = 'Advanced';\n\n if (!isAdvancedMode) {\n collapseLabel = collapseIsOpen ? 'Fewer Options ' : 'More Options ';\n }\n\n const showAddComponentButtons = () => isAdvancedMode && !useDcOptimizer && !useMicroinverter;\n\n return (\n \n \n \n \n Module\n \n (state.panelId ? [state.panelId] : [])}\n type={ComponentSelectType.SolarPanel}\n />\n \n \n \n Orientation\n \n item.icon}\n getItemKey={(item) => item.orientation}\n getItemTestId={(item) => item.dataTestId}\n selectable={{\n items: OrientationButtonGroupItems,\n onItemSelected: (item) => setState({ orientation: item!.orientation }),\n selectedItem: OrientationButtonGroupItems.find(\n (item) => item.orientation === orientation,\n ),\n }}\n />\n \n \n {showAddComponentButtons() && (\n \n \n setState({ useMicroinverter: true })}\n >\n + Microinverter\n \n \n \n setState({ useDcOptimizer: true })}\n >\n + DC Optimizer\n \n \n \n )}\n {useMicroinverter && (\n \n \n setState({ microinverterId: undefined, useMicroinverter: false })}\n rowProps={{ pl: 0 }}\n >\n \n setState({ microinverterId }),\n )}\n searchTestid={testids.microinverterSelectSearch}\n selectedItems={new Set(state.microinverterId ? [state.microinverterId] : [])}\n type={ComponentSelectType.Microinverter}\n validator={singleInputOnly}\n />\n \n \n \n \n )}\n {useDcOptimizer && (\n \n \n setState({ dcOptimizerId: undefined, useDcOptimizer: false })}\n rowProps={{ pl: 0 }}\n >\n \n setState({ dcOptimizerId }),\n )}\n searchTestid={testids.optimizerSelectSearch}\n selectedItems={new Set(state.dcOptimizerId ? [state.dcOptimizerId] : [])}\n type={ComponentSelectType.DcOptimizer}\n validator={singleInputOnly}\n />\n \n \n \n \n )}\n \n \n \n }\n >\n {collapseLabel}\n \n \n \n \n \n \n {\n setState({ tilt: value });\n }}\n rightElement={°}\n value={formatNumber(tilt)}\n {...limits.solarPanel.tilt}\n />\n \n \n setState({ rotation: value })}\n rightElement={°}\n value={formatNumber(rotation)}\n {...limits.solarPanel.rotation}\n />\n \n \n {\n setState({ spacingX: value });\n }}\n tagComponent={NumericInputRightTag}\n value={formatNumber(spacingX)}\n {...limits.solarPanel.spacing}\n />\n \n \n 0 ? 'Row Spacing *' : 'Spacing Y *'}\n onValueChange={(value: number) => {\n setState({ spacingY: value });\n }}\n tagComponent={NumericInputRightTag}\n value={formatNumber(spacingY)}\n {...limits.solarPanel.spacing}\n />\n \n {isAdvancedMode && (\n \n {isIrradianceLoaded ? (\n setState({ minSap: value })}\n rightElement={%}\n value={formatNumber(minSap)}\n {...limits.fillZone.minSap}\n />\n ) : (\n \n %}\n value={formatNumber(0)}\n {...limits.fillZone.minSap}\n />\n \n )}\n \n )}\n \n \n \n \n * From Design Settings\n \n \n {isAdvancedMode && (\n \n \n ** Fill Roof Face only\n \n \n )}\n \n \n \n );\n};\n","import produce from 'immer';\n\nimport { PanelOrientation } from '@aurorasolar/graphql-client-schema';\n\nexport interface SolarPanelModalState {\n collapseIsOpen: boolean;\n dcOptimizerId?: string;\n microinverterId?: string;\n minSap: number;\n orientation: PanelOrientation;\n panelId?: string;\n rotation: number;\n spacingX: number;\n spacingY: number;\n tilt: number;\n useDcOptimizer: boolean;\n useMicroinverter: boolean;\n}\nexport const solarPanelModalReducer = (\n state: SolarPanelModalState,\n partial: Partial,\n) => produce(state, (draft) => Object.assign(draft, partial));\n\nexport const getInitialState = (): SolarPanelModalState => ({\n collapseIsOpen: false,\n minSap: 0,\n orientation: PanelOrientation.P,\n rotation: 0,\n spacingX: 0,\n spacingY: 0,\n tilt: 0,\n useDcOptimizer: false,\n useMicroinverter: false,\n});\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type SolarPanelModalQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type SolarPanelModalQuery = { __typename: 'Query', design: { __typename: 'Design', id: string, interModuleSpacingX?: number | null | undefined, interModuleSpacingY?: number | null | undefined } };\n\nexport type SolarPanelModalLocalQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type SolarPanelModalLocalQuery = { __typename: 'Query', CAD: { __typename: 'CAD', irradianceState: { __typename: 'IrradianceState', roof: { __typename: 'IrradianceStateType', status?: Types.IrradianceStates | null | undefined } } } };\n\n\nexport const SolarPanelModalDocument = gql`\n query SolarPanelModal($designId: ID!) @trace_info(traceInfo: {pod: cad}) {\n design: designById(id: $designId) {\n id\n interModuleSpacingX\n interModuleSpacingY\n }\n}\n `;\n\n/**\n * __useSolarPanelModalQuery__\n *\n * To run a query within a React component, call `useSolarPanelModalQuery` and pass it any options that fit your needs.\n * When your component renders, `useSolarPanelModalQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useSolarPanelModalQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useSolarPanelModalQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(SolarPanelModalDocument, options);\n }\nexport function useSolarPanelModalLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(SolarPanelModalDocument, options);\n }\nexport type SolarPanelModalQueryHookResult = ReturnType;\nexport type SolarPanelModalLazyQueryHookResult = ReturnType;\nexport type SolarPanelModalQueryResult = Apollo.QueryResult;\nexport const SolarPanelModalLocalDocument = gql`\n query SolarPanelModalLocal @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n irradianceState {\n roof {\n status\n }\n }\n }\n}\n `;\n\n/**\n * __useSolarPanelModalLocalQuery__\n *\n * To run a query within a React component, call `useSolarPanelModalLocalQuery` and pass it any options that fit your needs.\n * When your component renders, `useSolarPanelModalLocalQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useSolarPanelModalLocalQuery({\n * variables: {\n * },\n * });\n */\nexport function useSolarPanelModalLocalQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(SolarPanelModalLocalDocument, options);\n }\nexport function useSolarPanelModalLocalLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(SolarPanelModalLocalDocument, options);\n }\nexport type SolarPanelModalLocalQueryHookResult = ReturnType;\nexport type SolarPanelModalLocalLazyQueryHookResult = ReturnType;\nexport type SolarPanelModalLocalQueryResult = Apollo.QueryResult;","import React, { FC, useCallback, useEffect, useMemo, useReducer } from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Modal } from '@aurorasolar/common-core/src/modal';\nimport { CADTriggerActionTypes, FillZonePreset } from '@aurorasolar/common-data-store';\nimport { Analytics, AnalyticsEventTypes, useAppModule } from '@aurorasolar/common-module-loader';\nimport { IrradianceStates, PanelOrientation } from '@aurorasolar/graphql-client-schema';\n\nimport { InstrumentPanelModalProps } from '../component-modal/types';\nimport { useTriggerCadAction } from '../hooks';\nimport { useCadModeQuery } from '../hooks/hooks.generated';\nimport { useInspectorState } from '../hooks/useInspectorState';\nimport { insideAdvancedMode } from '../mode-logical-operators';\nimport { SolarPanelModalCore } from './solar-panel-modal-core';\nimport { getInitialState, solarPanelModalReducer } from './solar-panel-modal-state';\nimport {\n useSolarPanelModalLocalQuery,\n useSolarPanelModalQuery,\n} from './solar-panel-modal.generated';\n\nexport interface SolarPanelModalProps extends InstrumentPanelModalProps {\n collapseOpen?: boolean;\n designId: string;\n}\n\nexport const SolarPanelModal: FC = ({\n onClose,\n designId,\n portalContainer,\n ...modalProps\n}) => {\n const { data } = useSolarPanelModalQuery({\n variables: { designId },\n });\n\n const { data: cadData } = useSolarPanelModalLocalQuery({\n returnPartialData: true,\n });\n\n const isIrradianceLoaded =\n cadData?.CAD?.irradianceState?.roof?.status === IrradianceStates.Complete;\n\n const [fillZoneData] = useInspectorState('fillZone');\n const preset = (fillZoneData.preset as FillZonePreset) || FillZonePreset['(none selected)'];\n\n const analytics = useAppModule(Analytics);\n\n const [state, dispatch] = useReducer(solarPanelModalReducer, getInitialState());\n\n const drawPanelPlane = useTriggerCadAction(CADTriggerActionTypes.DrawPanelPlane, {\n dcOptimizerId: null,\n intermoduleSpacingX: state.spacingX,\n intermoduleSpacingY: state.spacingY,\n microinverterId: null,\n orientation: state.orientation,\n rotation: state.rotation,\n rowSpacing: 0,\n solarPanelId: state.panelId,\n tilt: state.tilt,\n minSap: state.minSap,\n });\n\n const fillRoofFace = useTriggerCadAction(CADTriggerActionTypes.FillRoofFace, {\n dcOptimizerId: state.dcOptimizerId,\n intermoduleSpacingX: state.spacingX,\n rowSpacing: state.spacingY,\n microinverterId: state.microinverterId,\n orientation: state.orientation,\n preset,\n rotation: state.rotation,\n solarPanelId: state.panelId,\n tilt: state.tilt,\n minSap: state.minSap,\n });\n const placePanels = useTriggerCadAction(CADTriggerActionTypes.PlacePanels, {\n dcOptimizerId: state.dcOptimizerId,\n intermoduleSpacingX: state.spacingX,\n rowSpacing: state.spacingY,\n microinverterId: state.microinverterId,\n orientation: state.orientation,\n preset,\n rotation: state.rotation,\n solarPanelId: state.panelId,\n tilt: state.tilt,\n minSap: state.minSap,\n });\n\n const modeData = useCadModeQuery({\n returnPartialData: true,\n });\n const mode = modeData.data?.CAD?.mode;\n const isAdvancedMode = useMemo(() => !!mode && insideAdvancedMode(mode), [mode]);\n const hasPanelSelected = !!state.panelId;\n\n const handlePanelSelected = useCallback((panelId: string) => {\n dispatch({ panelId });\n }, []);\n\n const handleAddPanel = useCallback(() => {\n drawPanelPlane({});\n analytics?.track(AnalyticsEventTypes.DesignAddedManualModules);\n onClose();\n }, [analytics, drawPanelPlane, onClose]);\n\n const handlePlacePanel = useCallback(() => {\n placePanels({});\n const dcOptimizer = state.dcOptimizerId ? 'DC optimizer' : undefined;\n const microinverter = state.microinverterId ? 'microinverter' : undefined;\n analytics?.track(AnalyticsEventTypes.DesignAddedManualModules, {\n adder: microinverter || dcOptimizer,\n panel_orientation: state.orientation === PanelOrientation.L ? 'landscape' : 'portrait',\n });\n onClose();\n }, [analytics, placePanels, onClose, state]);\n\n const handleFillRoofFace = useCallback(() => {\n fillRoofFace({});\n analytics?.track(AnalyticsEventTypes.DesignFilledRoofFace);\n onClose();\n }, [analytics, fillRoofFace, onClose]);\n\n useEffect(() => {\n dispatch({\n spacingX: data?.design?.interModuleSpacingX ?? 0,\n spacingY: data?.design?.interModuleSpacingY ?? 0,\n });\n }, [data, dispatch]);\n\n const basicAction = {\n 'Add Panels': [\n handleAddPanel,\n { intent: AuroraThemedButtonIntent.PRIMARY, disabled: !hasPanelSelected },\n ] as const,\n };\n\n const advancedAction = {\n 'Manually Place': [\n handlePlacePanel,\n { intent: AuroraThemedButtonIntent.SECONDARY, disabled: !hasPanelSelected },\n ] as const,\n 'Fill Roof Face': [\n handleFillRoofFace,\n { intent: AuroraThemedButtonIntent.PRIMARY, disabled: !hasPanelSelected },\n ] as const /* eslint sort-keys: 0 */,\n };\n\n const action = isAdvancedMode ? advancedAction : basicAction;\n\n const title = isAdvancedMode ? 'ADD PANELS' : 'PANEL AREA';\n const width = isAdvancedMode ? 800 : 500;\n\n return (\n \n \n \n );\n};\n","import React, { FC, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { GoogleMap, TileSelector, TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport * as DS from '@aurorasolar/ds';\n\nconst MapWrap = styled.div`\n flex: 1 0 auto;\n overflow: hidden;\n display: flex;\n position: relative;\n justify-content: center;\n\n @media (max-width: 1080px) {\n height: 35vh;\n }\n`;\n\nconst MapOverlay = styled.div`\n position: absolute;\n z-index: 1;\n\n /* To prevent the overlay from covering the map control buttons */\n @media (max-width: 1350px) {\n display: none;\n }\n`;\n\nexport const CloseStandardModalButton = styled.div`\n cursor: pointer;\n`;\n\nexport const STANDARD_IMAGERY_MODAL_TESTID = 'standard-imagery-modal';\n\nexport interface StandardImageryModalCoreProps {\n isOpen: boolean;\n mapLocation: google.maps.LatLngLiteral;\n mapStartingSelection?: google.maps.LatLngBounds;\n onClose: VoidFunction;\n onGetImagery: VoidFunction;\n onMapSelectionUpdate: (update: TileSelectorUpdate) => void;\n zoom: number;\n}\n\nexport const StandardImageryModalCore: FC = ({\n isOpen,\n mapLocation,\n mapStartingSelection,\n onClose,\n onGetImagery,\n onMapSelectionUpdate,\n zoom,\n}) => {\n const mapOptions = useMemo(\n () => ({\n center: mapLocation,\n fullscreenControl: false,\n mapTypeId: 'hybrid',\n minZoom: 16,\n rotateControl: false,\n streetViewControl: false,\n tilt: 0,\n zoom,\n }),\n [mapLocation, zoom],\n );\n\n return (\n \n \n \n \n \n \n Select the desired area\n \n \n \n \n \n \n \n \n \n \n \n Resize standard maps\n \n \n Change the box size to reduce or expand displayed map area of Google Maps, Google\n Maps HD, and Bing Maps.\n \n \n \n Update maps\n \n \n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\n\nimport {\n CADGeodataService,\n FullGeodataService,\n GoogleMaps,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\n\nexport const useTileSelectorStartingBounds = (isModalOpen?: boolean) => {\n const [bounds, setBounds] = useState();\n const google = useAppModule(GoogleMaps);\n const geodataService = useAppModule(CADGeodataService) as FullGeodataService | undefined;\n\n // Ensure we set `bounds` at least once, as Geodata and GoogleMaps services become available\n useEffect(() => {\n const updateBounds = async () => {\n if (google?.maps == null) {\n return;\n }\n if (geodataService) {\n const { lat, lng } = await geodataService.getGeodataBounds();\n setBounds(\n new google.maps.LatLngBounds(\n { lat: lat.min, lng: lng.min },\n { lat: lat.max, lng: lng.max },\n ),\n );\n }\n };\n\n updateBounds();\n }, [geodataService, google]);\n\n // reset `bounds` when modal opens, to ensure we're using the latest geodata bounds\n useEffect(() => {\n if (isModalOpen) {\n setBounds(undefined);\n }\n }, [isModalOpen]);\n\n // Anytime `bounds` state is reset, re-fetch latest bounds from geodata service\n if (bounds == null) {\n const updateBounds = async () => {\n if (google?.maps == null) {\n return;\n }\n if (geodataService) {\n const { lat, lng } = await geodataService.getGeodataBounds();\n setBounds(\n new google.maps.LatLngBounds(\n { lat: lat.min, lng: lng.min },\n { lat: lat.max, lng: lng.max },\n ),\n );\n }\n };\n\n updateBounds();\n }\n\n return {\n bounds,\n resetBounds: () => {\n setBounds(undefined);\n },\n };\n};\n","import { useMemo } from 'react';\n\nimport { latToY, lngToX, ZOOM } from '@aurorasolar/common-google-map';\n\nexport const DEFAULT_TILE_SELECTOR_ZOOM = 18;\n\nexport const clamp16To19 = (baseZoom: number) => Math.min(Math.max(baseZoom, 16), 19);\n\nexport const getZoomLevel = (dimension: number) => {\n return 20.84 - 1.20972 * Math.log(dimension);\n};\n\nexport const getBoundsWidth = (mapStartingSelection?: google.maps.LatLngBounds) => {\n if (!mapStartingSelection) {\n return 0;\n }\n const northEastCorner = mapStartingSelection.getNorthEast();\n const southWestCorner = mapStartingSelection.getSouthWest();\n\n const lngNE = northEastCorner.lng();\n const lngSW = southWestCorner.lng();\n\n return Math.abs(lngToX(lngNE, ZOOM) - lngToX(lngSW, ZOOM));\n};\n\nexport const getBoundsHeight = (mapStartingSelection?: google.maps.LatLngBounds) => {\n if (!mapStartingSelection) {\n return 0;\n }\n const northEastCorner = mapStartingSelection.getNorthEast();\n const southWestCorner = mapStartingSelection.getSouthWest();\n\n const latNE = northEastCorner.lat();\n const latSW = southWestCorner.lat();\n\n return Math.abs(latToY(latNE, ZOOM) - latToY(latSW, ZOOM));\n};\n\nexport const useTileSelectorZoom = (mapStartingSelection?: google.maps.LatLngBounds) => {\n return useMemo(() => {\n if (!mapStartingSelection) {\n return DEFAULT_TILE_SELECTOR_ZOOM;\n }\n\n const boundsWidth = getBoundsWidth(mapStartingSelection);\n const boundsHeight = getBoundsHeight(mapStartingSelection);\n\n const boundsDimension = Math.max(boundsWidth, boundsHeight);\n const zoomLevel = getZoomLevel(boundsDimension);\n\n return clamp16To19(zoomLevel);\n }, [mapStartingSelection]);\n};\n","import React, { FC, useCallback, useMemo, useState } from 'react';\n\nimport { TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport { AnalyticsEventTypes } from '@aurorasolar/common-module-loader';\n\nimport { useAnalytics } from '../hooks/use-analytics';\nimport { StandardImageryModalCore } from './standard-imagery-modal-core';\nimport { useResizeImages } from './use-resize-images';\nimport { useTileSelectorStartingBounds } from './use-tile-selector-starting-bounds';\nimport { getBoundsHeight, getBoundsWidth, useTileSelectorZoom } from './use-tile-selector-zoom';\n\nexport interface StandardImageryModalProps {\n isOpen: boolean;\n onClose: VoidFunction;\n}\n\nexport const StandardImageryModal: FC = ({ isOpen, onClose }) => {\n const track = useAnalytics();\n const { bounds: mapStartingSelection, resetBounds } = useTileSelectorStartingBounds(isOpen);\n const location = useMemo(() => mapStartingSelection?.getCenter(), [mapStartingSelection]);\n const zoom = useTileSelectorZoom(mapStartingSelection);\n const [mapSelection, updateMapSelection] = useState();\n\n const changeToImage = useMemo(() => {\n if (mapSelection == null) {\n return 0;\n }\n\n const { max, min } = mapSelection;\n const mapCurrSelection = new google.maps.LatLngBounds(\n { lat: min.lat, lng: min.lng },\n { lat: max.lat, lng: max.lng },\n );\n\n const startBounds =\n getBoundsWidth(mapStartingSelection) * getBoundsHeight(mapStartingSelection);\n const currBound = getBoundsWidth(mapCurrSelection) * getBoundsHeight(mapCurrSelection);\n\n if (startBounds <= 0) {\n return 0;\n }\n return currBound / startBounds;\n }, [mapSelection, mapStartingSelection]);\n\n const resizeImages = useResizeImages({\n mapSelection,\n });\n\n const onCloseAndReset = useCallback(() => {\n onClose();\n resetBounds();\n }, [onClose, resetBounds]);\n\n const onGetImagery = useCallback(async () => {\n onCloseAndReset();\n track(AnalyticsEventTypes.DesignResizedImagery, {\n change: changeToImage,\n });\n return resizeImages();\n }, [resizeImages, onCloseAndReset, changeToImage, track]);\n\n const center = useMemo(() => {\n if (location == null) {\n return null;\n }\n\n const lat = location.lat();\n const lng = location.lng();\n return { lat, lng };\n }, [location]);\n\n if (center == null) {\n return null;\n }\n return (\n \n );\n};\n","import { useCallback } from 'react';\n\nimport { TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport {\n CADGeodataService,\n CadOrthoBounds,\n FullGeodataService,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\n\nexport interface ResizeImagesProps {\n mapSelection?: TileSelectorUpdate;\n}\n\nexport const useResizeImages = ({ mapSelection }: ResizeImagesProps) => {\n const geo = useAppModule(CADGeodataService) as FullGeodataService | undefined;\n return useCallback(() => {\n if (mapSelection == null) {\n return;\n }\n const { max, min } = mapSelection;\n\n const boundsParameters: CadOrthoBounds = {\n lat: {\n max: max.lat,\n min: min.lat,\n },\n lng: {\n max: max.lng,\n min: min.lng,\n },\n };\n\n geo?.onSpecifiedBoundsChange(boundsParameters);\n }, [geo, mapSelection]);\n};\n","import React, { FC } from 'react';\n\nimport { AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { CadModal } from '@aurorasolar/graphql-client-schema';\n\nimport { useCadModal } from '../cad-modals';\nimport { CadScreenButton } from '../cad-screen-button/cad-screen-button';\n\nexport const MAP_IMAGERY_RESIZE_BUTTON_TESTID = 'map-imagery-resize-button';\n\nexport const ExpandImageryButton: FC = () => {\n const [activeModal, setActiveModal] = useCadModal();\n return (\n setActiveModal(CadModal.ImageryExpansion)}\n data-testid={MAP_IMAGERY_RESIZE_BUTTON_TESTID}\n icon={AuroraIconType.EXPAND_CANVAS}\n selected={activeModal === CadModal.ImageryExpansion}\n />\n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { AuroraText } from '@aurorasolar/common-core/src/typography';\n\ninterface UnsavedChangesModalCoreProps {\n cancel: () => void;\n save: () => void;\n noSave: () => void;\n isOpen: boolean;\n isSaving: boolean;\n}\n\nexport const UnsavedChangesModalCore: FC = ({\n cancel,\n save,\n noSave,\n isOpen,\n isSaving,\n}) => {\n const actions = useMemo(\n () => ({\n Cancel: [\n cancel,\n {\n intent: AuroraThemedButtonIntent.LINK,\n },\n ],\n \"Don't Save\": [\n noSave,\n {\n intent: AuroraThemedButtonIntent.SECONDARY,\n },\n ],\n Save: [\n save,\n {\n disabled: isSaving,\n intent: AuroraThemedButtonIntent.PRIMARY,\n },\n ],\n }),\n [cancel, isSaving, noSave, save],\n );\n return (\n cancel()} title=\"\">\n You have unsaved changes.\n \n );\n};\n","import { useEffect } from 'react';\n\nconst preventNavigateAway = (event: BeforeUnloadEvent) => {\n event.stopPropagation();\n event.returnValue = '';\n};\n\nexport const usePreventNavigateAway = (condition = true) => {\n useEffect(() => {\n if (!condition) {\n return undefined;\n }\n // seeing some tests occassionally hanging in cypress. https://github.com/cypress-io/cypress/issues/1235#issuecomment-411839157\n if (!CYPRESS_BUILD) {\n window.addEventListener('beforeunload', preventNavigateAway);\n }\n return () => {\n window.removeEventListener('beforeunload', preventNavigateAway);\n };\n }, [condition]);\n};\n","import React, { FC, useCallback } from 'react';\nimport { useCurrentRoute } from 'react-navi';\n\nimport { AppRouterNavigation, useAppModule } from '@aurorasolar/common-module-loader';\n\nimport { useSaveCad } from '../hooks';\nimport { UnsavedChangesModalCore } from './unsaved-changes-modal-core';\nimport { usePreventNavigateAway } from './use-prevent-navigate-away';\n\nexport const UnsavedChangesModal: FC = () => {\n const { save, savesDisabled, isSaving, hasUnsavedChanges } = useSaveCad();\n\n const navigation = useAppModule(AppRouterNavigation);\n const route = useCurrentRoute();\n\n const {\n pathname,\n query: { redirectTo },\n } = route.url;\n\n usePreventNavigateAway(!savesDisabled && hasUnsavedChanges);\n\n const saveAndLeave = useCallback(async () => {\n await save();\n navigation?.navigate(redirectTo);\n }, [navigation, save, redirectTo]);\n\n const noSave = useCallback(() => {\n navigation?.navigate(redirectTo);\n }, [navigation, redirectTo]);\n\n const cancel = useCallback(() => {\n navigation?.navigate(pathname);\n }, [navigation, pathname]);\n\n return (\n \n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type CadModalsQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type CadModalsQuery = { __typename: 'Query', CAD: { __typename: 'CAD', activeModal?: Types.CadModal | null | undefined, activeModalData?: any | null | undefined } };\n\n\nexport const CadModalsDocument = gql`\n query CadModals @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n activeModal\n activeModalData\n }\n}\n `;\n\n/**\n * __useCadModalsQuery__\n *\n * To run a query within a React component, call `useCadModalsQuery` and pass it any options that fit your needs.\n * When your component renders, `useCadModalsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useCadModalsQuery({\n * variables: {\n * },\n * });\n */\nexport function useCadModalsQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(CadModalsDocument, options);\n }\nexport function useCadModalsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(CadModalsDocument, options);\n }\nexport type CadModalsQueryHookResult = ReturnType;\nexport type CadModalsLazyQueryHookResult = ReturnType;\nexport type CadModalsQueryResult = Apollo.QueryResult;","import React, { useState } from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { AuroraNumericInput } from '@aurorasolar/common-core/src/input';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { CADTriggerActionProps, CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { InstrumentPanelModalProps } from '../component-modal/types';\nimport { useTriggerCadAction } from '../hooks';\n\nexport const CameraHelperModal = ({ onClose, ...modalProps }: InstrumentPanelModalProps) => {\n const actions = {\n Cancel: [onClose, { intent: AuroraThemedButtonIntent.SECONDARY }],\n Set: [\n () => {\n confirm();\n onClose();\n },\n { intent: AuroraThemedButtonIntent.PRIMARY },\n ],\n } as ModalActions;\n\n const [verticalAngle, setVerticalAngle] = useState();\n const [horizontalAngle, setHorizontalAngle] = useState();\n const [radius, setRadius] = useState();\n const [x, setLookatX] = useState();\n const [y, setLookatY] = useState();\n const [z, setLookatZ] = useState();\n\n const params: CADTriggerActionProps[CADTriggerActionTypes.SetCameraPosition] = {};\n if (verticalAngle) params.verticalAngle = verticalAngle;\n if (horizontalAngle) params.horizontalAngle = horizontalAngle;\n if (radius) params.radius = radius;\n if (x != null && y != null && z != null) {\n params.lookat = { x, y, z };\n }\n const confirm = useTriggerCadAction(CADTriggerActionTypes.SetCameraPosition, params);\n\n return (\n \n \n \n Vertical Angle\n \n \n setVerticalAngle(value)}\n value={verticalAngle}\n />\n \n \n \n \n Horizontal Angle\n \n \n setHorizontalAngle(value)}\n value={horizontalAngle}\n />\n \n \n \n \n Radius\n \n \n setRadius(value)}\n value={radius}\n />\n \n \n \n \n Lookat X\n \n \n setLookatX(value)}\n value={x}\n />\n \n \n \n \n Lookat Y\n \n \n setLookatY(value)}\n value={y}\n />\n \n \n \n \n Lookat Z\n \n \n setLookatZ(value)}\n value={z}\n />\n \n \n \n );\n};\n","import { useCallback } from 'react';\n\nimport { ApolloClient, useAppModule } from '@aurorasolar/common-module-loader';\nimport { CadModal } from '@aurorasolar/graphql-client-schema';\n\nimport { CadModalsDocument, CadModalsQuery, useCadModalsQuery } from './cad-modals.generated';\n\nexport const useCadModal = () => {\n const client = useAppModule(ApolloClient);\n const query = useCadModalsQuery();\n const activeModal = query.data?.CAD.activeModal ?? null;\n const activeModalData = query.data?.CAD.activeModalData ?? null;\n const setModal = useCallback(\n (modal?: CadModal, modalData?: unknown) => {\n client?.writeQuery({\n data: {\n __typename: 'Query',\n CAD: {\n __typename: 'CAD',\n activeModal: modal ?? null,\n activeModalData: modalData ?? null,\n },\n },\n query: CadModalsDocument,\n });\n },\n [client],\n );\n return [activeModal, setModal, activeModalData] as const;\n};\n","import React, { FC, useCallback, useEffect, useRef } from 'react';\n\nimport { Analytics, AnalyticsEventTypes, useAppModule } from '@aurorasolar/common-module-loader';\nimport { CadModal } from '@aurorasolar/graphql-client-schema';\nimport { RackingIntegrationModal } from '@aurorasolar/racking';\n\nimport { AutoStringMiMlpeModal } from '../autostring/autostring-modal';\nimport {\n ComponentModal,\n modalComponentMap,\n ModalComponents,\n} from '../component-modal/component-modal';\nimport { CurrentInverterModal } from '../component-modal/current-inverter-modal';\nimport { DownloadDxfModal } from '../downloads/dxf-modal';\nimport { GroundMountModal } from '../ground-mount-modal';\nimport { AutoPlaceFirePathwayModal } from '../inspector/walkway/fire-pathway-modal';\nimport { LegacyThemeProvider } from '../legacy-theme';\nimport { SolarPanelModal } from '../solar-panel-modal/solar-panel-modal';\nimport { StandardImageryModal } from '../standard-imagery-modal';\nimport { UnsavedChangesModal } from '../unsaved-changes-modal/unsaved-changes-modal';\nimport { useCadModalsQuery } from './cad-modals.generated';\nimport { CameraHelperModal } from './camera-helper-modal';\nimport { useCadModal } from './use-cad-modal';\n\nconst modalAnalyticsMap = new Map([\n [CadModal.PlaceSolarPanels, AnalyticsEventTypes.DesignClickedInsertPanels],\n [CadModal.PlaceCombinerBox, AnalyticsEventTypes.DesignClickedCombinerBox],\n [CadModal.PlaceDisconnect, AnalyticsEventTypes.DesignClickedDisconnect],\n [CadModal.PlaceInverter, AnalyticsEventTypes.DesignClickedInverter],\n [CadModal.PlaceLoadCenter, AnalyticsEventTypes.DesignClickedLoadCenter],\n [CadModal.PlaceMeter, AnalyticsEventTypes.DesignClickedMeter],\n [CadModal.PlaceServicePanel, AnalyticsEventTypes.DesignClickedServicePanel],\n]);\nexport interface CadModalsProps {\n designId: string;\n portalContainer?: HTMLElement;\n setRackingIntegrationSettingId?: (id: string | null) => void;\n}\nexport const CadModals: FC = ({\n designId,\n portalContainer,\n setRackingIntegrationSettingId,\n}) => {\n const track = useAppModule(Analytics)?.track;\n const usePortal = portalContainer != null;\n const trackRef = useRef(track!);\n trackRef.current = track ?? (() => {});\n\n const [, setModal] = useCadModal();\n const closeModal = useCallback(() => {\n setModal();\n }, [setModal]);\n\n const cadQueryData = useCadModalsQuery({\n returnPartialData: true,\n })?.data?.CAD;\n\n const activeModal = cadQueryData?.activeModal ?? null;\n\n useEffect(() => {\n const analyticsEvent = modalAnalyticsMap.get(activeModal!);\n if (analyticsEvent && analyticsEvent !== AnalyticsEventTypes.DesignClickedInsertPanels) {\n trackRef.current(analyticsEvent, { used_shortcut: false });\n }\n }, [activeModal]);\n\n return (\n <>\n {/* Override the Borealis theme for the modals not yet converted to borealis */}\n \n \n \n\n {Object.entries(modalComponentMap).map(([type, { modal }]) => (\n \n ))}\n \n \n \n \n \n \n \n \n\n {setRackingIntegrationSettingId && (\n {\n closeModal();\n setRackingIntegrationSettingId(integrationSettingId);\n }}\n />\n )}\n \n );\n};\n","import { AiRoofType, AutoRoofCompletion, AutoRoofError } from '@aurorasolar/common-data-store';\nimport { createMachine } from '@xstate/fsm';\n\nexport type AutoRoofEvent =\n | { type: 'TOOLBAR_ITEM_SELECTED'; roofType: AiRoofType }\n | { type: 'JOB_STARTED'; roofType: AiRoofType }\n | { type: 'JOB_CANCELLED'; roofType: AiRoofType }\n | { type: 'JOB_FINISHED'; results: AutoRoofCompletion }\n | { type: 'JOB_ERRORED'; results?: AutoRoofError }\n | { type: 'REQUEST_CAD_DATA' }\n | { type: 'MODAL_OVERRIDE_ROOFS_CLICKED'; roofType: AiRoofType }\n | { type: 'MODAL_KEEP_ROOFS_CLICKED'; roofType: AiRoofType }\n | { type: 'MODAL_CLOSED' }\n | { type: 'EXISTING_ROOF_QUERY_LOADED'; hasExistingRoof: boolean }\n | { type: 'RESULT_ACTION_CLICKED'; actionType: 'edit' | 'delete' | 'keep' };\n\ntype AutoRoofStates = 'idle' | 'confirmingStart' | 'running' | 'checkingForExistingRoofs';\n\ninterface AutoRoofState {\n value: AutoRoofStates;\n context: { roofType: AiRoofType };\n}\n\nexport const autoRoofMachine = createMachine<\n { roofType: AiRoofType },\n AutoRoofEvent,\n AutoRoofState\n>({\n context: { roofType: AiRoofType.RoofPlane },\n id: 'autoRoof',\n initial: 'idle',\n states: {\n checkingForExistingRoofs: {\n entry: 'checkIfCadHasExistingRoof',\n on: {\n EXISTING_ROOF_QUERY_LOADED: [\n {\n // If there is an existing roof, open the modal.\n cond: (_, { hasExistingRoof }) => hasExistingRoof,\n target: 'confirmingStart',\n },\n {\n // If no roof already exists, just run the job\n actions: ['startJob', 'startJobWithNoExistingRoof'],\n cond: (_, { hasExistingRoof }) => !hasExistingRoof,\n },\n ],\n JOB_STARTED: {\n actions: 'setRoofType',\n target: 'running',\n },\n },\n },\n confirmingStart: {\n on: {\n JOB_STARTED: {\n actions: 'setRoofType',\n target: 'running',\n },\n MODAL_CLOSED: {\n target: 'idle',\n },\n MODAL_KEEP_ROOFS_CLICKED: {\n actions: 'startJob',\n },\n MODAL_OVERRIDE_ROOFS_CLICKED: {\n actions: ['clearRoofs', 'startJob'],\n },\n },\n },\n idle: {\n on: {\n TOOLBAR_ITEM_SELECTED: {\n actions: 'setRoofType',\n target: 'checkingForExistingRoofs',\n },\n },\n },\n running: {\n entry: 'emitRunningTrue',\n exit: 'emitRunningFalse',\n on: {\n JOB_CANCELLED: {\n actions: 'showCancelToast',\n target: 'idle',\n },\n JOB_ERRORED: {\n actions: 'showErrorToast',\n target: 'idle',\n },\n JOB_FINISHED: {\n actions: 'showSuccessToast',\n target: 'idle',\n },\n },\n },\n },\n});\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type RoofCountQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type RoofCountQuery = { __typename: 'Query', cadState: { __typename: 'CAD', roofCount: number } };\n\nexport type CadModalQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type CadModalQuery = { __typename: 'Query', cadState: { __typename: 'CAD', activeModal?: Types.CadModal | null | undefined, activeModalData?: any | null | undefined } };\n\nexport type AutoRoofRunningStateQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type AutoRoofRunningStateQuery = { __typename: 'Query', cadState: { __typename: 'CAD', isAutoRoofRunning: boolean } };\n\nexport type UpdateAutoroofRequestMutationVariables = Types.Exact<{\n updatedAutoroofRequest: Types.AutoRoofRequestInput;\n id: Types.Scalars['ID'];\n}>;\n\n\nexport type UpdateAutoroofRequestMutation = { __typename: 'Mutation', updateAutoroofRequest?: { __typename: 'AutoroofRequest', id?: string | null | undefined, state?: string | null | undefined } | null | undefined };\n\nexport type CancelAutoroofRequestMutationVariables = Types.Exact<{\n id: Types.Scalars['ID'];\n}>;\n\n\nexport type CancelAutoroofRequestMutation = { __typename: 'Mutation', cancelAutoroofRequest: string };\n\n\nexport const RoofCountDocument = gql`\n query RoofCount @trace_info(traceInfo: {pod: cad}) {\n cadState: CAD @client {\n roofCount\n }\n}\n `;\n\n/**\n * __useRoofCountQuery__\n *\n * To run a query within a React component, call `useRoofCountQuery` and pass it any options that fit your needs.\n * When your component renders, `useRoofCountQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useRoofCountQuery({\n * variables: {\n * },\n * });\n */\nexport function useRoofCountQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(RoofCountDocument, options);\n }\nexport function useRoofCountLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(RoofCountDocument, options);\n }\nexport type RoofCountQueryHookResult = ReturnType;\nexport type RoofCountLazyQueryHookResult = ReturnType;\nexport type RoofCountQueryResult = Apollo.QueryResult;\nexport const CadModalDocument = gql`\n query CadModal @trace_info(traceInfo: {pod: cad}) {\n cadState: CAD @client {\n activeModal\n activeModalData\n }\n}\n `;\n\n/**\n * __useCadModalQuery__\n *\n * To run a query within a React component, call `useCadModalQuery` and pass it any options that fit your needs.\n * When your component renders, `useCadModalQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useCadModalQuery({\n * variables: {\n * },\n * });\n */\nexport function useCadModalQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(CadModalDocument, options);\n }\nexport function useCadModalLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(CadModalDocument, options);\n }\nexport type CadModalQueryHookResult = ReturnType;\nexport type CadModalLazyQueryHookResult = ReturnType;\nexport type CadModalQueryResult = Apollo.QueryResult;\nexport const AutoRoofRunningStateDocument = gql`\n query AutoRoofRunningState @trace_info(traceInfo: {pod: cad}) {\n cadState: CAD @client {\n isAutoRoofRunning\n }\n}\n `;\n\n/**\n * __useAutoRoofRunningStateQuery__\n *\n * To run a query within a React component, call `useAutoRoofRunningStateQuery` and pass it any options that fit your needs.\n * When your component renders, `useAutoRoofRunningStateQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useAutoRoofRunningStateQuery({\n * variables: {\n * },\n * });\n */\nexport function useAutoRoofRunningStateQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(AutoRoofRunningStateDocument, options);\n }\nexport function useAutoRoofRunningStateLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(AutoRoofRunningStateDocument, options);\n }\nexport type AutoRoofRunningStateQueryHookResult = ReturnType;\nexport type AutoRoofRunningStateLazyQueryHookResult = ReturnType;\nexport type AutoRoofRunningStateQueryResult = Apollo.QueryResult;\nexport const UpdateAutoroofRequestDocument = gql`\n mutation UpdateAutoroofRequest($updatedAutoroofRequest: AutoRoofRequestInput!, $id: ID!) @trace_info(traceInfo: {pod: cad}) {\n updateAutoroofRequest(updatedAutoroofRequest: $updatedAutoroofRequest, id: $id) {\n id\n state\n }\n}\n `;\nexport type UpdateAutoroofRequestMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateAutoroofRequestMutation__\n *\n * To run a mutation, you first call `useUpdateAutoroofRequestMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateAutoroofRequestMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateAutoroofRequestMutation, { data, loading, error }] = useUpdateAutoroofRequestMutation({\n * variables: {\n * updatedAutoroofRequest: // value for 'updatedAutoroofRequest'\n * id: // value for 'id'\n * },\n * });\n */\nexport function useUpdateAutoroofRequestMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateAutoroofRequestDocument, options);\n }\nexport type UpdateAutoroofRequestMutationHookResult = ReturnType;\nexport type UpdateAutoroofRequestMutationResult = Apollo.MutationResult;\nexport type UpdateAutoroofRequestMutationOptions = Apollo.BaseMutationOptions;\nexport const CancelAutoroofRequestDocument = gql`\n mutation CancelAutoroofRequest($id: ID!) @trace_info(traceInfo: {pod: cad}) {\n cancelAutoroofRequest(id: $id)\n}\n `;\nexport type CancelAutoroofRequestMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCancelAutoroofRequestMutation__\n *\n * To run a mutation, you first call `useCancelAutoroofRequestMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCancelAutoroofRequestMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [cancelAutoroofRequestMutation, { data, loading, error }] = useCancelAutoroofRequestMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useCancelAutoroofRequestMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CancelAutoroofRequestDocument, options);\n }\nexport type CancelAutoroofRequestMutationHookResult = ReturnType;\nexport type CancelAutoroofRequestMutationResult = Apollo.MutationResult;\nexport type CancelAutoroofRequestMutationOptions = Apollo.BaseMutationOptions;","import { useCallback } from 'react';\n\nimport { ApolloClient, useAppModule } from '@aurorasolar/common-module-loader';\n\nimport { AutoRoofRunningStateDocument, AutoRoofRunningStateQuery } from './autoroof.generated';\n\nexport const useSetAutoRoofRunningState = () => {\n const client = useAppModule(ApolloClient);\n return useCallback(\n (isAutoRoofRunning: boolean) => {\n client?.writeQuery({\n data: {\n __typename: 'Query',\n cadState: {\n __typename: 'CAD',\n isAutoRoofRunning,\n },\n },\n query: AutoRoofRunningStateDocument,\n });\n },\n [client],\n );\n};\n","import React, { FC, useCallback, useEffect } from 'react';\n\nimport { useProjectOrDesignId } from '@aurorasolar/common-core/src/hooks';\nimport {\n AiRoofType,\n AutoRoofCompletion,\n AutoRoofError,\n CadEventTypes,\n CADTriggerActionTypes,\n UberMode,\n} from '@aurorasolar/common-data-store';\nimport {\n AnalyticsEventTypes,\n ApolloClient,\n Notification,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\nimport {\n createErrorNotification,\n createProgressNotification,\n createSuccessNotification,\n TOAST_CHANNEL,\n useNotifications,\n} from '@aurorasolar/common-notifications';\nimport { CadModal } from '@aurorasolar/graphql-client-schema';\nimport { useMachine } from '@xstate/react/lib/fsm';\n\nimport { useCadModal } from '../cad-modals';\nimport { useAnalytics, useSubscribeToCadEvent, useTriggerCadAction } from '../hooks';\nimport { autoRoofMachine } from './autoroof-machine';\nimport { AutoRoofRunConfirmationModal } from './autoroof-types';\nimport {\n RoofCountDocument,\n RoofCountQuery,\n RoofCountQueryVariables,\n useCancelAutoroofRequestMutation,\n useUpdateAutoroofRequestMutation,\n} from './autoroof.generated';\nimport { useSetAutoRoofRunningState } from './use-set-autoroof-running-state';\n\ntype AutoRoofCompletionActionSlug = 'keep' | 'edit' | 'delete';\ntype AutoRoofActionEvents = 'accepted' | 'canceled' | 'edited' | 'finished' | 'rejected' | 'ran';\ninterface AutoRoofProps {\n RunConfirmationModal: AutoRoofRunConfirmationModal;\n analyticsEvents: {\n [key in Exclude]: AnalyticsEventTypes;\n } & { edited?: AnalyticsEventTypes };\n allowedActions?: AutoRoofCompletionActionSlug[];\n}\n\ninterface AutoRoofCompletionAction {\n callback: () => void;\n slug: AutoRoofCompletionActionSlug;\n style: Notification.ActionStyle.CTA;\n text: string;\n}\n\nconst AUTOROOF_RUNNING_NOTIFICATION = Symbol('AutoRoof Running Notification');\nconst AUTOROOF_COMPLETE_NOTIFICATION = Symbol('AutoRoof Complete Notification');\n\nconst getAutoRoofAnalyticsType = (roofType: AiRoofType) => {\n return (\n {\n [AiRoofType.RoofPlane]: 'ai-roof-faces',\n [AiRoofType.SmartRoof]: 'ai-smart-roof',\n } as const\n )[roofType];\n};\n\nexport const AutoRoof: FC = ({\n RunConfirmationModal,\n analyticsEvents,\n allowedActions = ['keep', 'edit', 'delete'],\n}) => {\n const apolloClient = useAppModule(ApolloClient);\n\n const toast = useNotifications(TOAST_CHANNEL);\n const track = useAnalytics();\n\n useSubscribeToCadEvent(CadEventTypes.AutoRoofStarted, ({ roofType }) =>\n send({\n roofType,\n type: 'JOB_STARTED',\n }),\n );\n useSubscribeToCadEvent(CadEventTypes.AutoRoofFinished, (results) =>\n send({ results, type: 'JOB_FINISHED' }),\n );\n useSubscribeToCadEvent(CadEventTypes.AutoRoofErrored, (results) =>\n send({ results, type: 'JOB_ERRORED' }),\n );\n useSubscribeToCadEvent(CadEventTypes.AutoRoofCancelled, ({ roofType }) =>\n send({\n roofType,\n type: 'JOB_CANCELLED',\n }),\n );\n const [updateAutoroofRequestMutation] = useUpdateAutoroofRequestMutation();\n const [cancelAutoroofRequestMutation] = useCancelAutoroofRequestMutation();\n const { projectId } = useProjectOrDesignId();\n\n const [externalActiveModal, setModalState, activeModalData] = useCadModal();\n const clearExternalModalState = useCallback(() => {\n setModalState();\n }, [setModalState]);\n\n const beforeStartJob = useTriggerCadAction(CADTriggerActionTypes.BeforeRunAutoRoof);\n const startJob = useTriggerCadAction(CADTriggerActionTypes.RunAutoRoof);\n const clearSystem = useTriggerCadAction(CADTriggerActionTypes.ClearSystemDesign);\n const clearRoof = useTriggerCadAction(CADTriggerActionTypes.ClearRoofDesign);\n const cancelAutoRoof = useTriggerCadAction(CADTriggerActionTypes.CancelAutoRoof);\n\n const clearEverything = useCallback(() => {\n clearSystem();\n clearRoof();\n }, [clearSystem, clearRoof]);\n\n const deleteEntitiesByIds = useTriggerCadAction(CADTriggerActionTypes.DeleteEntitiesByIds);\n const selectEntitiesByIds = useTriggerCadAction(CADTriggerActionTypes.SelectEntitiesByIds);\n const triggerCadModeChange = useTriggerCadAction(CADTriggerActionTypes.SetUberMode);\n const getCompletionActions = useCallback(\n (results: AutoRoofCompletion | AutoRoofError, roofType: AiRoofType) =>\n (\n [\n {\n callback: () => {\n const type = getAutoRoofAnalyticsType(roofType);\n if (!analyticsEvents.edited) {\n console.warn(`Analytics event for edited ${type} not defined.`);\n } else {\n track(analyticsEvents.edited, { type });\n }\n const entityIds = results?.roofIds ?? [];\n triggerCadModeChange({ mode: UberMode.Site });\n selectEntitiesByIds({ entityIds });\n toast.dismiss?.(AUTOROOF_COMPLETE_NOTIFICATION);\n },\n slug: 'edit',\n style: Notification.ActionStyle.CTA,\n text: 'Edit',\n },\n {\n callback: () => {\n updateAutoroofRequestMutation({\n variables: {\n id: results.autoroofRequestId,\n updatedAutoroofRequest: {\n state: 'rejected',\n },\n },\n });\n const type = getAutoRoofAnalyticsType(roofType);\n track(analyticsEvents.rejected, { type });\n const entityIds = [...(results?.roofIds ?? []), ...(results?.obstructionIds ?? [])];\n deleteEntitiesByIds({ entityIds });\n toast.dismiss?.(AUTOROOF_COMPLETE_NOTIFICATION);\n },\n slug: 'delete',\n style: Notification.ActionStyle.CTA,\n text: 'Delete',\n },\n {\n callback: () => {\n updateAutoroofRequestMutation({\n variables: {\n id: results.autoroofRequestId,\n updatedAutoroofRequest: {\n state: 'accepted',\n },\n },\n });\n const type = getAutoRoofAnalyticsType(roofType);\n track(analyticsEvents.accepted, { type });\n toast.dismiss?.(AUTOROOF_COMPLETE_NOTIFICATION);\n },\n slug: 'keep',\n style: Notification.ActionStyle.CTA,\n text: 'Keep',\n },\n ] as AutoRoofCompletionAction[]\n ).filter((action) => allowedActions.includes(action.slug)),\n [\n allowedActions,\n analyticsEvents.accepted,\n analyticsEvents.edited,\n analyticsEvents.rejected,\n deleteEntitiesByIds,\n selectEntitiesByIds,\n toast,\n track,\n triggerCadModeChange,\n updateAutoroofRequestMutation,\n ],\n );\n\n const getRetryActions = useCallback(\n () => [\n {\n callback: () => {\n toast.dismiss?.(AUTOROOF_COMPLETE_NOTIFICATION);\n },\n style: Notification.ActionStyle.CTA,\n text: 'OK',\n },\n {\n callback: () => {\n beforeStartJob({ roofType: AiRoofType.RoofPlane });\n toast.dismiss?.(AUTOROOF_COMPLETE_NOTIFICATION);\n },\n style: Notification.ActionStyle.CTA,\n text: 'Try AI Roof faces',\n },\n ],\n [beforeStartJob, toast],\n );\n\n const setExternalRunningState = useSetAutoRoofRunningState();\n\n const [state, send] = useMachine(autoRoofMachine, {\n actions: {\n checkIfCadHasExistingRoof: async () => {\n const result = await apolloClient?.query({\n query: RoofCountDocument,\n });\n send({\n hasExistingRoof: !!result?.data.cadState.roofCount,\n type: 'EXISTING_ROOF_QUERY_LOADED',\n });\n },\n clearRoofs: () => {\n clearEverything();\n },\n emitRunningFalse: () => {\n setExternalRunningState(false);\n toast.dismiss?.(AUTOROOF_RUNNING_NOTIFICATION);\n },\n emitRunningTrue: (_, event) => {\n if (\n event?.type === 'JOB_STARTED' ||\n event?.type === 'MODAL_KEEP_ROOFS_CLICKED' ||\n event?.type === 'MODAL_OVERRIDE_ROOFS_CLICKED'\n ) {\n setExternalRunningState(true);\n const message =\n event.roofType === AiRoofType.RoofPlane\n ? 'Running AI Roof faces'\n : 'Running AI SmartRoof';\n toast.push?.(\n createProgressNotification(message, Notification.DismissType.STATE, [\n {\n callback: () => {\n if (projectId) {\n cancelAutoroofRequestMutation({ variables: { id: projectId } });\n }\n cancelAutoRoof();\n },\n style: Notification.ActionStyle.CTA,\n text: 'Cancel',\n },\n ]),\n AUTOROOF_RUNNING_NOTIFICATION,\n );\n }\n },\n setRoofType: (context, event) => {\n if (event?.type === 'TOOLBAR_ITEM_SELECTED' || event?.type === 'JOB_STARTED') {\n context.roofType = event.roofType;\n }\n },\n showCancelToast: (_, event) => {\n if (event?.type === 'JOB_CANCELLED') {\n const message = event.roofType === AiRoofType.RoofPlane ? 'Roof faces' : 'SmartRoof';\n const type = getAutoRoofAnalyticsType(event.roofType);\n track(analyticsEvents.canceled, { type });\n toast.push?.(createSuccessNotification(`AI ${message} canceled`));\n }\n },\n showErrorToast: (_, event) => {\n if (event?.type === 'JOB_ERRORED') {\n const type = getAutoRoofAnalyticsType(event.results?.roofType!);\n track(analyticsEvents.finished, {\n error: true,\n error_type: event?.results ? 'Job Succeeded with Roof Errors' : 'Job Failed',\n type,\n });\n\n if (event.results?.roofType != null) {\n if (event.results.roofIds != null) {\n const message =\n event.results.roofType === AiRoofType.RoofPlane ? 'Roof faces' : 'SmartRoof';\n toast.push?.(\n createErrorNotification(\n `AI ${message} completed, but may have errors`,\n Notification.DismissType.STATE,\n getCompletionActions(event.results, event.results.roofType),\n ),\n AUTOROOF_COMPLETE_NOTIFICATION,\n );\n } else if (event.results.roofType === AiRoofType.RoofPlane) {\n const message = event?.results?.error?.message;\n toast.push?.(\n createErrorNotification(\n message || 'Aurora AI Roof could not be generated',\n Notification.DismissType.STATE,\n undefined,\n message ? `Aurora AI Roof could not be generated` : undefined,\n ),\n );\n } else if (event.results.roofType === AiRoofType.SmartRoof) {\n const message = event?.results?.error?.message;\n toast.push?.(\n createErrorNotification(\n message || 'AI Smartroof could not be generated',\n Notification.DismissType.STATE,\n getRetryActions(),\n message ? `AI Smartroof could not be generated` : undefined,\n ),\n AUTOROOF_COMPLETE_NOTIFICATION,\n );\n }\n } else {\n toast.push?.(createErrorNotification(`AI Roof failed`));\n }\n }\n },\n showSuccessToast: (_, event) => {\n if (event.type === 'JOB_FINISHED') {\n const type = getAutoRoofAnalyticsType(event.results.roofType);\n track(analyticsEvents.finished, {\n error: false,\n type,\n });\n const message =\n event.results.roofType === AiRoofType.RoofPlane\n ? 'AI Roof faces complete'\n : 'AI SmartRoof complete';\n toast.push?.(\n createSuccessNotification(\n message,\n Notification.DismissType.STATE,\n getCompletionActions(event.results, event.results.roofType),\n ),\n AUTOROOF_COMPLETE_NOTIFICATION,\n );\n }\n },\n startJob: ({ roofType }) => startJob({ roofType }),\n startJobWithNoExistingRoof: ({ roofType }) => {\n const type = getAutoRoofAnalyticsType(roofType);\n track(analyticsEvents.ran, {\n deleted_roof: false,\n existing_roof: false,\n type,\n });\n },\n },\n });\n\n useEffect(() => {\n /*\n Determine if AutoRoof was selected by checking\n if the cadModal state changed to \"AutoRoof\"\n */\n if (externalActiveModal === CadModal.AutoRoof) {\n /*\n Clear the cadModal state because the autoroof modal\n has its own logic to determine its modal state\n */\n clearExternalModalState();\n send({ type: 'TOOLBAR_ITEM_SELECTED', ...activeModalData });\n }\n }, [send, externalActiveModal, clearExternalModalState, activeModalData]);\n\n return (\n send('MODAL_CLOSED')}\n onKeepClicked={() => {\n const type = getAutoRoofAnalyticsType(state.context.roofType);\n track(analyticsEvents.ran, {\n deleted_roof: false,\n existing_roof: true,\n type,\n });\n send({\n roofType: state.context.roofType,\n type: 'MODAL_KEEP_ROOFS_CLICKED',\n });\n }}\n onOverrideClicked={() => {\n const type = getAutoRoofAnalyticsType(state.context.roofType);\n track(analyticsEvents.ran, {\n deleted_roof: true,\n existing_roof: true,\n type,\n });\n send({\n roofType: state.context.roofType,\n type: 'MODAL_OVERRIDE_ROOFS_CLICKED',\n });\n }}\n />\n );\n};\n","import React, { useMemo } from 'react';\n\nimport { AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Modal, ModalActions } from '@aurorasolar/common-core/src/modal';\nimport { AuroraText } from '@aurorasolar/common-core/src/typography';\n\nimport { AutoRoofRunConfirmationModal } from './autoroof-types';\n\nexport const AutoRoofModal: AutoRoofRunConfirmationModal = ({\n isOpen,\n onCloseClicked,\n onKeepClicked,\n onOverrideClicked,\n}) => {\n const actions = useMemo(\n () => ({\n Keep: [\n onKeepClicked,\n {\n intent: AuroraThemedButtonIntent.SECONDARY,\n },\n ],\n 'Override roofs': [\n onOverrideClicked,\n {\n intent: AuroraThemedButtonIntent.PRIMARY,\n },\n ],\n }),\n [onOverrideClicked, onKeepClicked],\n );\n return (\n \n \n Running AI Roof with existing roofs may cause errors or duplications. Do you want to keep or\n override existing roofs and any structures on existing roofs?\n \n \n );\n};\n","import { ActiveElement } from 'chart.js/auto';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport isChromatic from 'chromatic';\nimport * as React from 'react';\n\nimport * as DS from '@aurorasolar/ds';\n\nlet chartSingleton: undefined | typeof import('chart.js/auto')['default'];\n\n/**\n * Populates the chart singleton. Can be used to\n * preload the chart library\n */\nexport async function loadChartLibrary() {\n if (!chartSingleton) {\n chartSingleton = (\n await import(/* webpackPrefetch: true, webpackChunkName: 'Chart.JS' */ 'chart.js/auto')\n ).default;\n\n /**\n * Sets defaults for library. These can be overridden on a\n * chart by chart basis.\n */\n\n // Sets legend to appear at bottom\n chartSingleton.defaults.plugins.legend.position = 'bottom';\n\n // Set font family for chart\n chartSingleton.defaults.font.family = DS.BorealisTheme.fonts.sans;\n\n // reduces data point size to not be visible but still displays the tooltip\n // if set to 0, tooltip will not show\n chartSingleton.defaults.elements.point.radius = 0.5;\n\n // tooltop styling\n chartSingleton.defaults.plugins.tooltip.cornerRadius = 0;\n chartSingleton.defaults.plugins.tooltip.padding = 15;\n\n // legend styling\n chartSingleton.defaults.plugins.legend.labels.usePointStyle = false;\n chartSingleton.defaults.plugins.legend.labels.boxHeight = 12;\n chartSingleton.defaults.plugins.legend.labels.boxWidth = 12;\n\n chartSingleton.defaults.scale.grid.drawTicks = false;\n chartSingleton.defaults.scale.grid.drawOnChartArea = false;\n\n chartSingleton.defaults.scale.ticks.padding = 8;\n\n // Add support for setting the chart background\n chartSingleton.register({\n beforeDraw: (chart) => {\n const { ctx } = chart;\n const color = chart.options.plugins?.canvasBackgroundColor?.color;\n if (ctx && color) {\n ctx.save();\n ctx.globalCompositeOperation = 'destination-over';\n ctx.fillStyle = color;\n ctx.fillRect(0, 0, chart.width, chart.height);\n ctx.restore();\n }\n },\n id: 'canvas-background-color',\n });\n\n // Adds support for drawing a white line on the x axis along\n // hovered points\n chartSingleton.register({\n afterDatasetsDraw: (chart) => {\n const { ctx, chartArea } = chart;\n const enabled = chart.options.plugins?.hoverXAxisLine?.enabled;\n\n if (!enabled) {\n return;\n }\n\n const elements: ActiveElement[] = chart.getActiveElements();\n\n if (ctx && elements[0]) {\n const { x } = elements[0].element;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(x, chartArea.top);\n ctx.lineTo(x, chartArea.bottom);\n ctx.lineWidth = 2;\n ctx.strokeStyle = DS.BorealisTheme.colors['gray-400'];\n ctx.stroke();\n ctx.restore();\n\n elements.forEach(({ element }) => {\n const exposedElement = element as unknown as {\n draw: (ctx: CanvasRenderingContext2D) => void;\n };\n exposedElement.draw(ctx);\n });\n }\n },\n id: 'hover-x-axis-line',\n });\n\n // Enable annotations to add highlighting a range on the chart\n chartSingleton.register(annotationPlugin);\n\n // Disable animations during cypress\n if (CYPRESS_BUILD || isChromatic()) {\n chartSingleton.defaults.animation = false;\n }\n }\n\n return chartSingleton;\n}\nconst useGetLibraryEffect = (hasLibrary: boolean, setHasLibrary: (result: boolean) => void) =>\n React.useEffect(() => {\n async function getLibrary() {\n const result = await loadChartLibrary();\n if (!result) {\n console.warn('Could not import chart library');\n }\n setHasLibrary(!!result);\n }\n if (!hasLibrary) {\n getLibrary();\n }\n }, [hasLibrary, setHasLibrary]);\n\n/**\n * Hook for using the chart library\n */\nexport const useChart = () => {\n const [hasLibrary, setHasLibrary] = React.useState(!!chartSingleton);\n\n useGetLibraryEffect(hasLibrary, setHasLibrary);\n\n return chartSingleton;\n};\n","import React, { ReactNode, useContext, useEffect, useState } from 'react';\nimport { Observable } from 'rxjs';\n\nimport styled from '@xstyled/styled-components';\n\nimport { Chart } from '../types';\n\nimport type { TooltipDataPoints } from '../types';\n/**\n * Using the built in external tooltip support directly creates\n * a separate render pipeline that isn't a part of the normal react tree.\n * By using a ref callback we can get the tooltip info out of the chart\n * and into react.\n */\n\nexport interface TooltipData {\n animate: boolean;\n opacity: number;\n top: number;\n left: number;\n flip: boolean;\n dataPoints: TooltipDataPoints;\n}\n\nconst TooltipContext = React.createContext([]);\n\n/**\n * Provides information about the currently highlighted\n * datapoints\n */\nexport function useTooltipContext() {\n return useContext(TooltipContext);\n}\n\n/**\n * Calls the tooltipCallback with the current values\n */\nexport function externalTooltipFactory(\n onTooltipUpdate: (value: TooltipData) => void,\n animate: boolean,\n) {\n return ({ chart }: { chart: Chart }) => {\n if (!chart.tooltip) {\n return;\n }\n // Round down to prevent half-pixel rendering issues\n const left = Math.floor(chart.tooltip.caretX);\n const top = Math.floor(chart.tooltip.caretY);\n const flip = chart.tooltip?.caretX > chart.width / 2;\n const { opacity, dataPoints } = chart.tooltip;\n\n // All this data changes on each invocation so no need to memoize\n onTooltipUpdate({\n animate,\n dataPoints,\n flip,\n left,\n opacity,\n top,\n });\n };\n}\n\nconst tooltipOffset = 10;\n\nfunction buildTranslate(left: number, top: number, flip: boolean) {\n const yTranslate = `calc(-50% + ${top}px)`;\n const xTranslate = flip ? `calc(-100% + ${left - tooltipOffset}px)` : `${left + tooltipOffset}px`;\n\n return `translate(${xTranslate}, ${yTranslate})`;\n}\n\ninterface TooltipContainerProps {\n animate: boolean;\n top: number;\n left: number;\n flip: boolean;\n opacity: number;\n}\n/**\n * Positions the tooltip. Naive implementation that can\n * probably handle positioning better.\n */\nconst TooltipContainer = styled.div`\n opacity: ${({ opacity }) => opacity};\n position: absolute;\n pointer-events: none;\n transition: ${({ animate }) => (animate ? 'opacity 0.3s' : 'unset')};\n transform: ${({ left, top, flip }) => buildTranslate(left, top, flip)};\n top: 0;\n left: 0;\n z-index: ${({ theme }) => theme?.zIndices?.tooltip ?? 5};\n`;\n\ninterface TooltipPortalProps {\n tooltip$: Observable;\n children: ReactNode;\n}\n\nexport const CustomTooltip = ({ tooltip$, children }: TooltipPortalProps) => {\n const [tooltipState, setTooltipState] = useState({\n animate: true,\n dataPoints: [],\n flip: false,\n left: 0,\n opacity: 0,\n top: 0,\n });\n\n useEffect(() => {\n const subscription = tooltip$.subscribe((data) => {\n setTooltipState(data);\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [tooltip$]);\n\n return (\n \n {children}\n \n );\n};\n","import React from 'react';\nimport { Subject } from 'rxjs';\n\nimport { useInstanceRef } from '@aurorasolar/common-core/src/hooks';\nimport styled from '@xstyled/styled-components';\n\nimport { useChart } from './load-chart-library';\nimport type { Chart, ChartConfiguration, ChartDataset, ChartOptions, ChartType } from './types';\nimport { CustomTooltip, externalTooltipFactory, TooltipData } from './utils/custom-tooltip';\n\nfunction mergeWhileRetainingReference<\n Original = Record,\n NewProperties = Record,\n>(a: Original, b: NewProperties): NewProperties {\n // Must fully clear out object before adding new fields\n Object.keys(a).forEach((key) => {\n if (key !== '_meta') {\n delete a[key];\n }\n });\n Object.keys(b).forEach((key) => {\n a[key] = b[key];\n });\n\n return a as unknown as NewProperties;\n}\n\n// If we want the chart to animate we must maintain the chart dataset object references.\n// This assumes that data order doesn't change (if there are the same amount of sets)\nfunction useBuildChartDataset(data: ChartDataset[]) {\n const holder = React.useRef[]>([]);\n const [toReturn, setToReturn] = React.useState[]>([]);\n\n React.useEffect(() => {\n if (holder.current.length !== data.length) {\n holder.current = Array.from({ length: data.length }, () => ({} as ChartDataset));\n }\n const arr = holder.current;\n data.map((element, i) => mergeWhileRetainingReference(arr[i], element));\n setToReturn(arr);\n }, [data]);\n return toReturn;\n}\n\nfunction enableReactTooltip(\n options: Exclude['options'], Array>,\n hasReactTooltip: boolean,\n onTooltipUpdate: (value: TooltipData) => void,\n) {\n const optionsOrDefault =\n options ?? ({} as Exclude, undefined | Array>);\n\n if (!hasReactTooltip) {\n return optionsOrDefault;\n }\n\n return {\n ...optionsOrDefault,\n plugins: {\n ...(optionsOrDefault.plugins ?? {}),\n tooltip: {\n ...(optionsOrDefault.plugins?.tooltip ?? {}),\n enabled: false,\n external: externalTooltipFactory(onTooltipUpdate, optionsOrDefault.animation !== false),\n },\n },\n };\n}\n\nexport interface ChartCoreProps extends ChartConfiguration {\n options?: Exclude, Array>;\n // Making tooltip its own prop so changing it doesn't re-render the chart\n reactTooltip?: React.ReactElement;\n}\n\nconst ChartContainer = styled.div`\n position: relative;\n height: 100%;\n width: 100%;\n`;\n\n/** Simplified version of Chart.js component. Should only be used in the new-charts package internally */\nexport function ChartCore(props: ChartCoreProps) {\n const ChartImpl = useChart();\n const canvasRef = React.useRef();\n const chartInstance = React.useRef>();\n const tooltipSubjectRef = useInstanceRef(() => new Subject());\n\n // eslint-disable-next-line react/destructuring-assignment\n const datasets = useBuildChartDataset(props.data.datasets);\n const { reactTooltip } = props;\n\n const launchChart = React.useCallback(\n (node: HTMLCanvasElement | null) => {\n if (ChartImpl && node && node !== canvasRef.current) {\n canvasRef.current = node;\n chartInstance.current = new ChartImpl(node, {\n data: {\n ...props.data,\n datasets,\n },\n options: enableReactTooltip(props.options, !!props.reactTooltip, (data) =>\n tooltipSubjectRef.current.next(data),\n ),\n plugins: props.plugins,\n type: props.type,\n });\n }\n },\n [ChartImpl, props, datasets, tooltipSubjectRef],\n );\n\n React.useEffect(() => {\n if (chartInstance.current) {\n const chart = chartInstance.current;\n\n if (props.data) {\n chart.data = {\n ...props.data,\n datasets,\n };\n }\n if (props.options) {\n chart.options = enableReactTooltip(props.options, !!props.reactTooltip, (data) =>\n tooltipSubjectRef.current.next(data),\n );\n }\n\n chart.update();\n }\n }, [props, datasets, tooltipSubjectRef]);\n\n React.useEffect(() => {\n const observable$ = tooltipSubjectRef.current;\n\n return () => {\n observable$.complete();\n };\n }, [tooltipSubjectRef]);\n\n if (!ChartImpl) {\n return null;\n }\n\n return (\n \n \n {reactTooltip ? (\n \n {reactTooltip}\n \n ) : null}\n \n );\n}\n","import { MutableRefObject, useRef } from 'react';\n\n// Initial values for refs are evaluated on every render. This is one way\n// to get around that.\n// Recommended pattern by the React team\n// https://github.com/facebook/react/issues/14490#issuecomment-454973512\n// https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\nexport function useInstanceRef(initialValue: () => T): MutableRefObject {\n const instanceRef = useRef();\n const outputRef = useRef>({\n get current() {\n if (!instanceRef.current) {\n instanceRef.current = initialValue();\n }\n\n return instanceRef.current;\n },\n set current(newValue) {\n instanceRef.current = newValue;\n },\n });\n\n return outputRef.current;\n}\n","export function stepSizeFromData(data: (number | null | undefined)[], stepCount: number) {\n const nonNullData = data.filter((num): num is number => num != null);\n const dataMin = Math.min(0, ...nonNullData);\n const minMaxOffset = dataMin < 0 ? 1 : 0;\n const step = (Math.max(...nonNullData) - dataMin) / (stepCount - minMaxOffset);\n if (step === 0) {\n return { max: 1, min: 0, stepSize: 1 / stepCount };\n }\n\n const SMALL = 1e-10;\n const stepNumDigits = Math.ceil(Math.log10(Math.max(step, SMALL))) - 2;\n const wholeStep = 10 ** stepNumDigits * 5;\n const stepRounded = Math.ceil(step / wholeStep) * wholeStep;\n\n const totalRange = stepRounded * stepCount;\n const min = Math.floor(dataMin / stepRounded) * stepRounded;\n const max = totalRange + min;\n return { max, min, stepSize: (max - min) / stepCount };\n}\n","import React, { useMemo } from 'react';\n\nimport { CurrencyTypes } from '@aurorasolar/common-core/src/constants/currencies';\nimport { useLocaleFormat } from '@aurorasolar/common-core/src/hooks';\n\nimport { ChartCore } from '../chart-core';\nimport { ChartConfiguration } from '../types';\nimport { stepSizeFromData } from '../utils';\nimport { StackSumData } from './stack-sum-chart-types';\nimport { calculatePerStackValue } from './stack-sum-chart-util';\n\nfunction buildTooltipLabel(\n { datasetIndex, dataIndex }: { datasetIndex: number; dataIndex: number },\n datasets: StackSumData['datasets'],\n formatCurrency: (\n value?: number | null | undefined,\n minPlaces?: number,\n maxPlaces?: number,\n fallback?: string,\n ) => string,\n) {\n const { stack, tooltipLabel, label, data } = datasets[datasetIndex];\n const value = data[dataIndex];\n\n const ySum = datasets.reduce((sum, set) => {\n if (set.stack !== stack) {\n return sum;\n }\n return sum + set.data[dataIndex];\n }, 0);\n const percentOfSum = Math.round((value / ySum) * 100);\n\n const labelToUse = tooltipLabel ?? label;\n\n const moneyValue = formatCurrency(value);\n\n return `${labelToUse}: ${moneyValue} (${percentOfSum}%)`;\n}\n\nfunction buildTooltipTitle(\n data: { datasetIndex: number; dataIndex: number }[],\n datasets: StackSumData['datasets'],\n formatCurrency: (\n value?: number | null | undefined,\n minPlaces?: number,\n maxPlaces?: number,\n fallback?: string,\n ) => string,\n) {\n const valueSum = formatCurrency(\n data.reduce((sum, { datasetIndex, dataIndex }) => {\n return sum + datasets[datasetIndex].data[dataIndex];\n }, 0),\n );\n return `${valueSum}`;\n}\n\nconst optionsFactory = (\n allData: number[],\n formatCurrency: (\n value?: number | null | undefined,\n minPlaces?: number,\n maxPlaces?: number,\n fallback?: string,\n ) => string,\n): ChartConfiguration<'bar'>['options'] => {\n return {\n aspectRatio: 3.5,\n datasets: {\n bar: {\n borderRadius: 20,\n },\n },\n maintainAspectRatio: true,\n plugins: {\n legend: {\n labels: {\n usePointStyle: true,\n },\n onClick: (e) => e.native?.stopPropagation(),\n position: 'bottom',\n },\n tooltip: {\n callbacks: {\n label: function label(context) {\n return buildTooltipLabel(\n context,\n this.chart.data.datasets as StackSumData['datasets'],\n formatCurrency,\n );\n },\n title: function title(context) {\n return buildTooltipTitle(\n context,\n this.chart.data.datasets as StackSumData['datasets'],\n formatCurrency,\n );\n },\n },\n mode: 'x',\n },\n },\n responsive: true,\n scales: {\n x: {\n grid: {\n display: false,\n },\n stacked: true,\n },\n y: {\n grid: {\n color: 'transparent',\n },\n stacked: true,\n ticks: {\n callback: (value) =>\n typeof value === 'number' ? formatCurrency(value) : formatCurrency(Number(value)),\n ...stepSizeFromData(allData, 4),\n },\n },\n },\n };\n};\n\nexport interface StackSumChartProps extends StackSumData {\n currency: CurrencyTypes;\n}\n\n/**\n * Renders a rounded bar chart that sums up values in the stack and\n * displays all values as money\n */\nexport const StackSumChart = ({ currency, datasets, labels }: StackSumChartProps) => {\n const { formatCurrency } = useLocaleFormat(currency);\n\n const options = useMemo(\n () => optionsFactory(calculatePerStackValue(datasets), formatCurrency),\n [datasets, formatCurrency],\n );\n const data = useMemo(\n () => ({\n datasets,\n labels,\n }),\n [datasets, labels],\n );\n\n return ;\n};\n","import { StackSumData } from './stack-sum-chart-types';\n\ntype Stacks = {\n [id: string]: number[];\n};\n\n/**\n * Returns the sum for each stack column. Will return stack-amount * period of items\n */\nexport function calculatePerStackValue(datasets: StackSumData['datasets']) {\n const stacks: Stacks = {};\n datasets.forEach(({ data, stack }) => {\n if (!stacks[stack]) {\n stacks[stack] = [...data];\n } else {\n stacks[stack].forEach((stackData: number, index: number) => {\n stacks[stack][index] = stackData + data[index];\n });\n }\n });\n return Object.values(stacks).flat();\n}\n","/**\n * This file is imported in to the app, so keep if free of Cypress types/code\n */\nimport { CAD_CONTAINER_TESTID } from './testids';\n\nexport type PixelColor = { red: number; green: number; blue: number };\nexport type ActualPixel = { color: PixelColor; skipCheck: boolean };\n\nexport interface Coordinates {\n x: number;\n y: number;\n}\nexport interface PixelMatch {\n coordinates: Coordinates;\n color: PixelColor;\n message?: string;\n}\n\nexport interface PixelMatchArea {\n x: number; // Left\n y: number; // Top\n width: number; // Positive values are to the right\n height: number; // Positive values are down\n}\n\nconst printMatchedPixel = (x: number, y: number, webglCanvas: HTMLCanvasElement): PixelMatch => {\n if (!webglCanvas) {\n throw new Error('Canvas not found');\n }\n\n const result = getPixel(x, y, webglCanvas);\n\n // eslint-disable-next-line\n console.log(\n '%c Selected Color ',\n `background-color: rgb(${result.red}, ${result.green}, ${result.blue})`,\n );\n\n // eslint-disable-next-line\n console.log(`\n const untitled: PixelMatch = {\n color: {\n blue: ${result.blue},\n green: ${result.green},\n red: ${result.red},\n },\n coordinates: { x: ${x}, y: ${y} },\n };\n canvasPixelMatches(untitled);\n `);\n return { color: result, coordinates: { x, y } };\n};\n\nconst getCanvasContext = (webglCanvas: HTMLCanvasElement) => {\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = webglCanvas.width;\n offscreenCanvas.height = webglCanvas.height;\n\n const ctx = offscreenCanvas.getContext('2d');\n if (ctx === null) {\n throw new Error('Context not found');\n }\n return ctx;\n};\n\nexport const getPixel = (x: number, y: number, webglCanvas: HTMLCanvasElement) => {\n const ctx = getCanvasContext(webglCanvas);\n\n try {\n ctx.drawImage(webglCanvas, 0, 0);\n } catch {\n return {\n blue: NaN,\n green: NaN,\n red: NaN,\n };\n }\n const imgData = ctx.getImageData(x, y, 1, 1);\n\n return {\n blue: imgData.data[2],\n green: imgData.data[1],\n red: imgData.data[0],\n };\n};\n\nexport const getRegionPixels = (\n { x, y, width, height }: PixelMatchArea,\n webglCanvas: HTMLCanvasElement,\n) => {\n const ctx = getCanvasContext(webglCanvas);\n\n ctx.drawImage(webglCanvas, 0, 0);\n return ctx.getImageData(x, y, width, height).data;\n};\n\nexport const listenForClick = ({\n containerSelector = `[data-testid=\"${CAD_CONTAINER_TESTID}\"]`,\n windowHandle = window,\n onPointerMove,\n}: {\n containerSelector?: string;\n windowHandle?: Window;\n onPointerMove?: (params: PixelMatch) => void;\n} = {}) =>\n new Promise((resolve) => {\n const container = windowHandle.document.querySelector(containerSelector);\n const canvas = container!.querySelector('canvas')!;\n\n const moveListener = (event: Event) => {\n if (onPointerMove) {\n const { x: offsetX, y: offsetY } = (event.target as HTMLElement).getBoundingClientRect();\n const x = Math.round((event as PointerEvent).clientX - offsetX);\n const y = Math.round((event as PointerEvent).clientY - offsetY);\n onPointerMove({\n color: getPixel(x, y, canvas),\n coordinates: { x, y },\n });\n }\n event.stopPropagation();\n };\n windowHandle.addEventListener('pointermove', moveListener, true);\n if (container) {\n container.addEventListener(\n 'pointerdown',\n (event: Event) => {\n container.removeEventListener('pointermove', moveListener);\n event.stopPropagation();\n const { x: offsetX, y: offsetY } = (event.target as HTMLElement).getBoundingClientRect();\n resolve(\n printMatchedPixel(\n Math.round((event as PointerEvent).clientX - offsetX),\n Math.round((event as PointerEvent).clientY - offsetY),\n canvas,\n ),\n );\n },\n { capture: true, once: true },\n );\n }\n });\n","/**\n * Modified from https://raw.githubusercontent.com/mapbox/pixelmatch/master/index.js\n * The original repo was optimized for speed and was a tiny amount of code so it is reproduced\n * here in a way that allows our tests to extract more info about the comparison.\n * We also don't care as much about anti aliasing or performance since we check small regions of the image inside of specific shapes.\n * This allows us to validate rendering in a targeted way that hopefully reduces the likelihood of flakiness.\n */\n\nexport const SCALE_8_BIT = 1.0 / 255.0;\n\ntype ArrayBufferTypes = Uint8Array | Uint8ClampedArray;\n\n/** normalizes the given signed 8bit squared delta to be between [-1, 1] linearly (it takes the sqrt) */\nexport function normalizeYIQDelta(delta: number) {\n // maximum acceptable square distance between two colors;\n // 35215 is the maximum possible value for the YIQ difference metric\n const maxDelta = 35215;\n\n return Math.sqrt(Math.abs(delta) / maxDelta) * Math.sign(delta);\n}\n\nfunction checkImage(img1: ArrayBufferTypes, width: number, height: number) {\n if (!isPixelData(img1)) {\n throw new Error('Image data: Uint8Array, Uint8ClampedArray or Buffer expected.');\n }\n\n if (img1.length !== width * height * 4) {\n throw new Error('Image data size does not match width/height.');\n }\n}\n\nexport function compareImageRegionToColor(\n img1: ArrayBufferTypes,\n color: [number, number, number] | [number, number, number, number],\n width: number,\n height: number,\n threshold: number = 0.1, // matching threshold (0 to 1); smaller is more sensitive\n) {\n checkImage(img1, width, height);\n\n const deltas: number[] = []; // just the ones above threshold\n const deltaIndices: number[] = []; // Index per delta above threshold\n\n const allDeltas: number[] = [];\n let debugMessage = 'Actual pixels found:\\n';\n\n // compare each pixel of one image against the other one\n for (let y = 0; y < height; y += 1) {\n for (let x = 0; x < width; x += 1) {\n const pos = (y * width + x) * 4;\n\n const delta = perceptualColorDelta(img1, color, pos, 0);\n\n // the color difference is above the threshold\n const deltaNormalized = Math.abs(normalizeYIQDelta(delta));\n if (deltaNormalized > threshold) {\n deltas.push(deltaNormalized);\n deltaIndices.push(pos);\n }\n debugMessage += `[${x},${y}]:(${img1[pos + 0]},${img1[pos + 1]},${img1[pos + 2]}) `;\n allDeltas.push(deltaNormalized);\n }\n debugMessage += '\\n';\n }\n\n // return the number of different pixels\n return { allDeltas, debugMessage, deltaIndices, deltas };\n}\n\n/**\n * computes the perceptual difference between two images, collecting the pixels that are outside of the given threshold\n * @param img1 first image in RGBA255\n * @param img2 second image in RGBA255\n * @param width width of the images\n * @param height height of the images\n * @param threshold minimum perceptual distance to consider a pixel as changed. should be between [0,1]. default is 0.1\n * @returns 'allDeltas', and 'deltas' which are outside of the threshold\n */\nexport function compareImageRegions(\n img1: ArrayBufferTypes,\n img2: ArrayBufferTypes,\n width: number,\n height: number,\n threshold: number = 0.1, // matching threshold (0 to 1); smaller is more sensitive\n) {\n checkImage(img1, width, height);\n checkImage(img2, width, height);\n\n // check if images are identical\n const len = width * height;\n const a32 = new Uint32Array(img1.buffer, img1.byteOffset, len);\n const b32 = new Uint32Array(img2.buffer, img2.byteOffset, len);\n let identical = true;\n\n for (let i = 0; i < len; i += 1) {\n if (a32[i] !== b32[i]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n // fast path if identical\n return null;\n }\n\n const deltas: number[] = []; // just the ones above threshold\n\n const allDeltas: number[] = [];\n\n // compare each pixel of one image against the other one\n for (let y = 0; y < height; y += 1) {\n for (let x = 0; x < width; x += 1) {\n const pos = (y * width + x) * 4;\n\n const delta = perceptualColorDelta(img1, img2, pos, pos);\n\n // the color difference is above the threshold\n const deltaNormalized = normalizeYIQDelta(delta);\n if (deltaNormalized > threshold) {\n deltas.push(deltaNormalized);\n }\n allDeltas.push(deltaNormalized);\n }\n }\n\n // return the number of different pixels\n return { allDeltas, deltas };\n}\n\n/**\n * The following mathematical color functions are unmodified\n * from the 'pixelmatch' library other than converting to TypeScript and comments.\n * See top of file for more info.\n */\n\nfunction isPixelData(arr: ArrayBufferTypes) {\n // work around instanceof Uint8Array not working properly in some Jest environments\n return ArrayBuffer.isView(arr) && arr.BYTES_PER_ELEMENT === 1;\n}\n\n/** calculate color difference according to the paper \"Measuring perceived color difference\n * using YIQ NTSC transmission color space in mobile applications\" by Y. Kotsarenko and F. Ramos\n * returns squared YUV distance between colors at this pixel position, negative if the img2 pixel is darker\n * @param img1 first image buffer with RGBA pixels\n * @param img2 second image buffer with RGBA pixels\n * @param k index of the pixel in img1\n * @param m index of hte pixel in img2\n * @param yOnly option to compare brightness value only\n */\nexport function perceptualColorDelta(\n img1: ArrayBufferTypes | number[],\n img2: ArrayBufferTypes | number[],\n k: number,\n m: number,\n yOnly?: boolean,\n) {\n let r1 = img1[k + 0];\n let g1 = img1[k + 1];\n let b1 = img1[k + 2];\n let a1 = img1[k + 3];\n\n let r2 = img2[m + 0];\n let g2 = img2[m + 1];\n let b2 = img2[m + 2];\n let a2 = img2[m + 3];\n\n if (a1 === a2 && r1 === r2 && g1 === g2 && b1 === b2) return 0;\n\n if (a1 < 255) {\n a1 /= 255;\n r1 = blend(r1, a1);\n g1 = blend(g1, a1);\n b1 = blend(b1, a1);\n }\n\n if (a2 < 255) {\n a2 /= 255;\n r2 = blend(r2, a2);\n g2 = blend(g2, a2);\n b2 = blend(b2, a2);\n }\n\n const y1 = rgb2y(r1, g1, b1);\n const y2 = rgb2y(r2, g2, b2);\n const y = y1 - y2;\n\n // brightness difference only\n if (yOnly) {\n return y;\n }\n\n const i = rgb2i(r1, g1, b1) - rgb2i(r2, g2, b2);\n const q = rgb2q(r1, g1, b1) - rgb2q(r2, g2, b2);\n\n return computePerceptualDeltaYIQ(y, i, q);\n}\n\n/**\n * calculate color difference according to the paper \"Measuring perceived color difference\n * using YIQ NTSC transmission color space in mobile applications\" by Y. Kotsarenko and F. Ramos\n * @param dy difference in y channel\n * @param di difference in i channel\n * @param dq difference in q channel\n * @returns squared YUV distance between colors at this pixel position, negative if the img2 pixel is darker\n */\nexport function computePerceptualDeltaYIQ(dy: number, di: number, dq: number) {\n const delta = 0.5053 * dy * dy + 0.299 * di * di + 0.1957 * dq * dq;\n\n // encode whether the pixel lightens or darkens in the sign\n return Math.sign(dy) * delta;\n}\n\nexport function rgb2y(r: number, g: number, b: number) {\n return r * 0.29889531 + g * 0.58662247 + b * 0.11448223;\n}\nexport function rgb2i(r: number, g: number, b: number) {\n return r * 0.59597799 - g * 0.2741761 - b * 0.32180189;\n}\nexport function rgb2q(r: number, g: number, b: number) {\n return r * 0.21147017 - g * 0.52261711 + b * 0.31114694;\n}\n\nexport function yiq2r(y: number, i: number, q: number) {\n return y + i * 0.95608445 + q * 0.6208885;\n}\n\nexport function yiq2g(y: number, i: number, q: number) {\n return y - i * 0.27137664 - q * 0.6486059;\n}\n\nexport function yiq2b(y: number, i: number, q: number) {\n return y - i * 1.10561724 + q * 1.70250126;\n}\n\n// blend semi-transparent color with white\nfunction blend(c: number, a: number) {\n return 255 + (c - 255) * a;\n}\n","import { useMemo, useRef, useState } from 'react';\n\nimport { getRegionPixels, PixelMatch } from '@aurorasolar/cad-test-utils/src/canvas-pixel-colors';\nimport {\n computePerceptualDeltaYIQ,\n normalizeYIQDelta,\n perceptualColorDelta,\n rgb2i,\n rgb2q,\n rgb2y,\n} from '@aurorasolar/cad-test-utils/src/canvas-pixel-helpers';\nimport { RGB255 } from '@aurorasolar/cad-test-utils/src/canvas-pixel-matching';\n\nexport function useColorDisplay() {\n const colorDisplayRef = useRef(null);\n const updateDisplay = (pixel: PixelMatch) => {\n if (colorDisplayRef.current == null) {\n return;\n }\n // Laggy if you don't set it directly.\n colorDisplayRef.current.style.background = `rgba(${pixel.color.red},${pixel.color.green},${pixel.color.blue})`;\n colorDisplayRef.current.innerHTML = `\n
x: ${pixel.coordinates.x}
\n
y: ${pixel.coordinates.y}
\n `;\n };\n return { colorDisplayRef, updateDisplay };\n}\n\nexport function useRegionRectDisplay(cadContainer: HTMLElement | null | undefined) {\n const [div] = useState(document.createElement('div'));\n\n const initRect = ({ x, y }: { x: number; y: number }) => {\n div.style.position = 'absolute';\n div.style.outline = 'red solid 1px';\n div.style.pointerEvents = 'none';\n\n div.style.left = `${x}px`;\n div.style.top = `${y}px`;\n div.style.width = `${0}px`;\n div.style.height = `${0}px`;\n if (cadContainer) {\n cadContainer.appendChild(div);\n }\n };\n\n const updateRect = (topLeft: { x: number; y: number }, bottomRight: { x: number; y: number }) => {\n div.style.left = `${topLeft.x}px`;\n div.style.top = `${topLeft.y}px`;\n div.style.width = `${bottomRight.x - topLeft.x}px`;\n div.style.height = `${bottomRight.y - topLeft.y}px`;\n };\n\n const hideRect = () => {\n if (cadContainer && cadContainer.contains(div)) {\n cadContainer.removeChild(div);\n }\n };\n\n return { hideRect, initRect, updateRect };\n}\n\nexport function useMatchedPixelsInRegion(\n regionPixelsRGB: Uint8ClampedArray,\n referenceColorRGB: RGB255,\n maxDelta: number,\n): [Uint8ClampedArray, number] {\n return useMemo(() => {\n const filteredPixels = new Uint8ClampedArray(regionPixelsRGB);\n let matchedCount = 0;\n for (let p = 0; p < regionPixelsRGB.length; p += 4) {\n const delta = perceptualColorDelta(regionPixelsRGB, [...referenceColorRGB, 255], p, 0);\n const deltaNormalized = Math.abs(normalizeYIQDelta(delta));\n if (deltaNormalized > maxDelta) {\n filteredPixels[p + 3] = 0;\n } else {\n matchedCount += 1;\n }\n }\n return [filteredPixels, matchedCount];\n }, [regionPixelsRGB, referenceColorRGB, maxDelta]);\n}\n\nexport function useYIQDeltaBuckets(regionPixelsYIQ: RGB255[], referenceColorYIQ: RGB255) {\n return useMemo(() => {\n let deltaMin = 0;\n let deltaMax = 0;\n const deltaValues =\n regionPixelsYIQ?.map((d) => {\n const dy = d[0] - referenceColorYIQ[0];\n const di = d[1] - referenceColorYIQ[1];\n const dq = d[2] - referenceColorYIQ[2];\n const delta = computePerceptualDeltaYIQ(dy, di, dq);\n const ret = normalizeYIQDelta(delta);\n deltaMin = Math.min(deltaMin, ret);\n deltaMax = Math.max(deltaMax, ret);\n return ret;\n }) ?? [];\n\n const chunks = 101;\n const thresholds = makeThresholds(deltaMin, deltaMax, chunks);\n const buckets = binData(deltaValues, thresholds);\n return buckets;\n }, [regionPixelsYIQ, referenceColorYIQ]);\n}\n\nexport function useRegionPixels(\n cadDomNode: HTMLCanvasElement | null | undefined,\n topLeft: { x: number; y: number },\n regionWidth: number,\n regionHeight: number,\n) {\n const regionPixelsRGB = useMemo(() => {\n return cadDomNode\n ? getRegionPixels(\n {\n height: regionHeight,\n width: regionWidth,\n x: topLeft.x,\n y: topLeft.y,\n },\n cadDomNode,\n )\n : new Uint8ClampedArray();\n }, [topLeft.x, topLeft.y, regionWidth, regionHeight, cadDomNode]);\n\n const regionPixelsYIQ = useMemo(() => {\n const ret = [];\n for (let i = 0; i < regionPixelsRGB.length; i += 4) {\n const r = regionPixelsRGB[i];\n const g = regionPixelsRGB[i + 1];\n const b = regionPixelsRGB[i + 2];\n const yc = rgb2y(r, g, b);\n const ic = rgb2i(r, g, b) + 128;\n const qc = rgb2q(r, g, b) + 128;\n ret.push([yc, ic, qc] as RGB255);\n }\n return ret;\n }, [regionPixelsRGB]);\n return { regionPixelsRGB, regionPixelsYIQ };\n}\n\nexport function useYIQBuckets(regionPixelsYIQ: RGB255[]) {\n const thresholds = useMemo(() => {\n return makeThresholds(0, 255, 255);\n }, []);\n\n const yBuckets = useMemo(() => {\n return binData(regionPixelsYIQ?.map((d) => d[0]) ?? [], thresholds);\n }, [regionPixelsYIQ, thresholds]);\n\n const iBuckets = useMemo(() => {\n return binData(regionPixelsYIQ?.map((d) => d[1]) ?? [], thresholds);\n }, [regionPixelsYIQ, thresholds]);\n\n const qBuckets = useMemo(() => {\n return binData(regionPixelsYIQ?.map((d) => d[2]) ?? [], thresholds);\n }, [regionPixelsYIQ, thresholds]);\n return { iBuckets, qBuckets, yBuckets };\n}\n\nexport type Bucket = number[] & { x0: number; x1: number };\n\nexport function binData(data: number[], thresholds: number[]) {\n const buckets: Bucket[] = [];\n for (let i = 0; i < thresholds.length - 1; i += 1) {\n const bucket = [] as unknown as Bucket;\n bucket.x0 = thresholds[i];\n bucket.x1 = thresholds[i + 1];\n buckets.push(bucket);\n }\n const insertValue = (value: number) => {\n let i = Math.floor(buckets.length / 2);\n let step = Math.max(Math.floor(i / 2), 1);\n let added = false;\n while (!added) {\n if (i === buckets.length) {\n buckets[buckets.length - 1].push(value);\n return;\n }\n const bucket = buckets[i];\n if (value >= bucket.x0) {\n if (value < bucket.x1) {\n bucket.push(value);\n added = true;\n } else {\n i += step;\n step = Math.max(Math.floor(step / 2), 1);\n }\n } else {\n i -= step;\n step = Math.max(Math.floor(step / 2), 1);\n }\n }\n };\n data.forEach(insertValue);\n\n return buckets;\n}\n\nexport function makeThresholds(min: number, max: number, chunks: number) {\n const thresholds = [];\n for (let i = 0; i < chunks; i += 1) {\n thresholds.push(min + (i / chunks) * (max - min));\n }\n thresholds.push(max);\n return thresholds;\n}\n\nexport function scaleLinear(domain: [number, number], range: [number, number]) {\n const scaler = (input: number) => {\n const t = (input - domain[0]) / (domain[1] - domain[0]);\n return range[0] + t * (range[1] - range[0]);\n };\n\n scaler.invert = (output: number) => {\n const t = (output - range[0]) / (range[1] - range[0]);\n return domain[0] + t * (domain[1] - domain[0]);\n };\n return scaler;\n}\n","import React, { forwardRef, RefObject, useEffect, useMemo, useRef } from 'react';\n\nimport { yiq2b, yiq2g, yiq2r } from '@aurorasolar/cad-test-utils/src/canvas-pixel-helpers';\nimport { RGB255 } from '@aurorasolar/cad-test-utils/src/canvas-pixel-matching';\nimport * as DS from '@aurorasolar/ds';\nimport styled, { x } from '@xstyled/styled-components';\n\nimport { Bucket, scaleLinear } from './cad-color-button-utils';\n\nconst ColorDisplay = styled.div`\n height: 40px;\n text-align: center;\n width: 100px;\n line-height: 20px;\n border-radius: 6px;\n color: white;\n`;\n\nexport interface CadColorButtonCoreProps {\n colorDisplayRef: RefObject;\n disabled: boolean;\n deltas: Bucket[];\n icon: string;\n isModalOpen: boolean;\n isWaitingForRegion: boolean;\n filteredPixelsRGB: Uint8ClampedArray;\n matchPercentage: number;\n maxDelta: number;\n onButtonClick: VoidFunction;\n onMaxDeltaChange: (delta: number) => void;\n onIChange: (i: number) => void;\n onModalClose: VoidFunction;\n onPreviewClick: (x: number, y: number) => void;\n onQChange: (q: number) => void;\n onYChange: (y: number) => void;\n outputString: string;\n referenceColorRGB: RGB255;\n referenceColorYIQ: RGB255;\n regionWidth: number;\n regionHeight: number;\n regionPixelsRGB: Uint8ClampedArray;\n yBuckets: Bucket[];\n iBuckets: Bucket[];\n qBuckets: Bucket[];\n}\nexport const CadColorButtonCore = forwardRef(\n (\n {\n colorDisplayRef,\n deltas,\n disabled,\n outputString,\n icon,\n isModalOpen,\n isWaitingForRegion,\n filteredPixelsRGB,\n matchPercentage,\n maxDelta,\n onButtonClick,\n onIChange,\n onMaxDeltaChange,\n onModalClose,\n onPreviewClick,\n onQChange,\n onYChange,\n referenceColorRGB,\n referenceColorYIQ,\n regionPixelsRGB,\n regionHeight,\n regionWidth,\n yBuckets,\n iBuckets,\n qBuckets,\n ...buttonProps\n },\n ref,\n ) => {\n const textArea = useRef(null);\n const previewCanvas = useRef(null);\n const filteredCanvas = useRef(null);\n\n const canvasHeight = 200;\n const canvasScale = canvasHeight / regionHeight;\n const histWidth = 400;\n const histHeight = 33;\n const regionPixelCount = regionWidth * regionHeight;\n\n // set preview region pixels\n useEffect(() => {\n const canvas = previewCanvas.current;\n if (canvas) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.putImageData(new ImageData(regionPixelsRGB, regionWidth), 0, 0);\n }\n canvas.style.height = `${canvasHeight}px`;\n canvas.style.imageRendering = `pixelated`;\n }\n }, [regionPixelsRGB, regionWidth, previewCanvas, canvasHeight, regionHeight]);\n\n // set filtered preview region pixels\n useEffect(() => {\n const canvas = filteredCanvas.current;\n if (canvas) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.putImageData(new ImageData(filteredPixelsRGB, regionWidth), 0, 0);\n }\n canvas.style.height = `${canvasHeight}px`;\n canvas.style.imageRendering = `pixelated`;\n }\n }, [filteredPixelsRGB, regionWidth, filteredCanvas, canvasHeight, regionHeight]);\n\n // prepare yiq histogram scales and rects\n const xScale = useMemo(() => {\n return scaleLinear([0, 255], [2, histWidth - 2]);\n }, [histWidth]);\n\n const yScale = useMemo(() => {\n const max = Math.max(\n ...[...yBuckets, ...iBuckets, ...qBuckets].map((bucket) => bucket?.length),\n );\n return scaleLinear([0, max], [histHeight, 0]);\n }, [histHeight, yBuckets, iBuckets, qBuckets]);\n\n const makeRects = (buckets: Bucket[], toRGB: (x: number) => RGB255) => {\n return buckets.map((bucket, i) => {\n if (bucket.x0 === undefined || bucket.x1 === undefined) {\n return null;\n }\n const color = toRGB(bucket.x0);\n const colorString = `rgb(${color[0]},${color[1]},${color[2]})`;\n return (\n \n );\n });\n };\n\n const yRects = makeRects(yBuckets, (y) => [\n yiq2r(y * 0.8, 0, 0),\n yiq2g(y * 0.8, 0, 0),\n yiq2b(y * 0.8, 0, 0),\n ]);\n const iRects = makeRects(iBuckets, (u) => [\n yiq2r(140, u - 128, 0),\n yiq2g(140, u - 128, 0),\n yiq2b(140, u - 128, 0),\n ]);\n const qRects = makeRects(qBuckets, (v) => [\n yiq2r(140, 0, v - 128),\n yiq2g(140, 0, v - 128),\n yiq2b(140, 0, v - 128),\n ]);\n\n // prepare delta histogram scales and rects\n const deltaXScale = useMemo(() => {\n const max =\n Math.max(0, Math.max(...deltas.map((b) => (b && b.length > 0 ? b.x1! : 0)))) + 0.01;\n const min =\n Math.min(0, Math.min(...deltas.map((b) => (b && b.length > 0 ? b.x0! : 0)))) - 0.01;\n return scaleLinear([min, max], [0, histWidth]);\n }, [histWidth, deltas]);\n\n const deltaYScale = useMemo(() => {\n const lengths = deltas.map((bucket) => bucket?.length);\n const max = Math.max(1, Math.max(...lengths));\n return scaleLinear([0, max], [histHeight, 0]);\n }, [histHeight, deltas]);\n\n const deltaRects = deltas.map((bucket, i) => {\n if (bucket.x0 === undefined || bucket.x1 === undefined) {\n return null;\n }\n return (\n \n );\n });\n\n return (\n <>\n \n \n {icon}\n \n {isWaitingForRegion && }\n \n \n {' '}\n \n \n CAD canvas pixels\n \n \n \n \n Region Preview: {regionWidth} x {regionHeight}\n \n \n {\n const canvas = previewCanvas.current;\n if (canvas) {\n const rect = canvas.getBoundingClientRect()!;\n const cx = event.clientX - rect.left;\n const cy = event.clientY - rect.top;\n const px = Math.floor(cx / canvasScale);\n const py = Math.floor(cy / canvasScale);\n onPreviewClick(px, py);\n }\n }}\n width={regionWidth}\n />\n \n {regionPixelCount > 1 && (\n \n Region Color Histogram\n \n \n {\n const svgElement = event.currentTarget;\n if (svgElement) {\n const rect = svgElement.getBoundingClientRect()!;\n const cx = event.clientX - rect.left;\n const newDist = xScale.invert(cx);\n const rounded = Math.round(newDist);\n onYChange(rounded);\n }\n }}\n style={{ width: 400 }}\n width=\"400px\"\n >\n {yRects}\n \n \n \n \n {\n const svgElement = event.currentTarget;\n if (svgElement) {\n const rect = svgElement.getBoundingClientRect()!;\n const cx = event.clientX - rect.left;\n const newDist = xScale.invert(cx);\n const rounded = Math.round(newDist);\n onIChange(rounded);\n }\n }}\n style={{ width: 400 }}\n width=\"400px\"\n >\n {iRects}\n \n \n \n \n {\n const svgElement = event.currentTarget;\n if (svgElement) {\n const rect = svgElement.getBoundingClientRect()!;\n const cx = event.clientX - rect.left;\n const newDist = xScale.invert(cx);\n const rounded = Math.round(newDist);\n onQChange(rounded);\n }\n }}\n style={{ width: 400 }}\n width=\"400px\"\n >\n {qRects}\n \n \n \n \n \n Expected Y: \n onYChange(event.currentTarget.valueAsNumber)}\n type=\"number\"\n value={referenceColorYIQ[0]}\n />\n \n \n Expected I: \n onIChange(event.currentTarget.valueAsNumber)}\n type=\"number\"\n value={referenceColorYIQ[1]}\n />\n \n \n Expected Q: \n onQChange(event.currentTarget.valueAsNumber)}\n type=\"number\"\n value={referenceColorYIQ[2]}\n />\n \n \n Delta Histogram\n \n \n {\n const svgElement = event.currentTarget;\n if (svgElement) {\n const rect = svgElement.getBoundingClientRect()!;\n const cx = event.clientX - rect.left;\n const newDist = deltaXScale.invert(cx);\n const rounded = Math.round(newDist * 1000) / 1000;\n onMaxDeltaChange(rounded);\n }\n }}\n style={{ width: 400 }}\n >\n {deltaRects}\n \n \n \n \n \n Max delta: \n {\n onMaxDeltaChange(event.currentTarget.valueAsNumber);\n }}\n type=\"number\"\n value={maxDelta}\n />\n \n \n Match percentage:{' '}\n {Number(matchPercentage).toLocaleString(undefined, {\n minimumFractionDigits: 2,\n style: 'percent',\n })}\n \n \n \n )}\n\n \n {outputString}\n \n \n \n {\n textArea.current?.select();\n document.execCommand('copy');\n }}\n variant=\"cta\"\n >\n Copy Code\n \n \n \n \n );\n },\n);\n","import { Subscription } from 'rxjs';\n\nimport { assign, createMachine } from '@xstate/fsm';\n\nexport enum ColorPickerState {\n WAITING_FOR_CAD = 'waitingForCad',\n IDLE = 'idle',\n SELECTING_REGION = 'selectingRegion',\n DISPLAY_RESULTS = 'displayResults',\n}\nexport enum ColorPickerEvent {\n DOM_NODE_READY = 'DOM_NODE_READY',\n COLOR_BUTTON_CLICK = 'COLOR_BUTTON_CLICK',\n REGION_SELECTED = 'REGION_SELECTED',\n MODAL_CLOSE = 'MODAL_CLOSE',\n}\nexport enum ColorPickerAction {\n SELECT_REGION = 'selectRegion',\n REGION_SELECTED = 'regionSelected',\n}\n\ninterface ColorContext {\n buttonIcon: string;\n eventSubscription: Subscription | null;\n topLeft: { x: number; y: number };\n bottomRight: { x: number; y: number };\n regionJustSelected: boolean;\n}\n\nexport const colorButtonMachine = createMachine({\n context: {\n bottomRight: { x: 0, y: 0 },\n buttonIcon: '⏳',\n eventSubscription: null,\n regionJustSelected: false,\n topLeft: { x: 0, y: 0 },\n },\n id: 'cadColorPicker',\n initial: ColorPickerState.WAITING_FOR_CAD,\n states: {\n [ColorPickerState.WAITING_FOR_CAD]: {\n on: {\n [ColorPickerEvent.DOM_NODE_READY]: ColorPickerState.IDLE,\n },\n },\n [ColorPickerState.IDLE]: {\n entry: assign({ buttonIcon: '🎨' }),\n exit: assign({ buttonIcon: '🔴' }),\n on: {\n [ColorPickerEvent.COLOR_BUTTON_CLICK]: ColorPickerState.SELECTING_REGION,\n },\n },\n [ColorPickerState.SELECTING_REGION]: {\n entry: ColorPickerAction.SELECT_REGION,\n exit: ColorPickerAction.REGION_SELECTED,\n on: {\n [ColorPickerEvent.REGION_SELECTED]: ColorPickerState.DISPLAY_RESULTS,\n },\n },\n [ColorPickerState.DISPLAY_RESULTS]: {\n on: {\n [ColorPickerEvent.MODAL_CLOSE]: ColorPickerState.IDLE,\n },\n },\n },\n});\n","import React, { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { fromEvent, merge } from 'rxjs';\n\nimport { getPixel } from '@aurorasolar/cad-test-utils/src/canvas-pixel-colors';\nimport { yiq2b, yiq2g, yiq2r } from '@aurorasolar/cad-test-utils/src/canvas-pixel-helpers';\nimport { RGB255 } from '@aurorasolar/cad-test-utils/src/canvas-pixel-matching';\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { useMachine } from '@xstate/react/lib/fsm';\n\nimport { useTriggerCadAction } from '../hooks';\nimport { useCadContext } from '../use-cad';\nimport { CadColorButtonCore, CadColorButtonCoreProps } from './cad-color-button-core';\nimport {\n colorButtonMachine,\n ColorPickerAction,\n ColorPickerEvent,\n ColorPickerState,\n} from './cad-color-button-machine';\nimport {\n Bucket,\n useColorDisplay,\n useMatchedPixelsInRegion,\n useRegionPixels,\n useRegionRectDisplay,\n useYIQBuckets,\n useYIQDeltaBuckets,\n} from './cad-color-button-utils';\n\nconst eventsOfInterest = ['pointerdown', 'pointerup', 'pointermove'] as const;\n\nexport const CadColorButton = forwardRef((buttonProps, ref) => {\n const enableInput = useTriggerCadAction(CADTriggerActionTypes.EnableInput);\n const disableInput = useTriggerCadAction(CADTriggerActionTypes.DisableInput);\n\n const [referenceY, setReferenceY] = useState(0);\n const [referenceI, setReferenceI] = useState(0);\n const [referenceQ, setReferenceQ] = useState(0);\n const [maxDelta, setMaxDelta] = useState(0.1);\n\n const cadDomNode = useCadContext()?.domNode?.querySelector('canvas');\n\n const regionDisplay = useRegionRectDisplay(cadDomNode?.parentElement);\n const { updateDisplay, colorDisplayRef } = useColorDisplay();\n\n const [state, send] = useMachine(colorButtonMachine, {\n actions: {\n [ColorPickerAction.SELECT_REGION]: (ctx) => {\n disableInput();\n ctx.topLeft = { x: 0, y: 0 };\n ctx.bottomRight = { x: 0, y: 0 };\n ctx.eventSubscription = merge(\n ...eventsOfInterest.map((eventType) => fromEvent(cadDomNode!, eventType)),\n ).subscribe((event) => {\n event.stopPropagation();\n const { x: offsetX, y: offsetY } = (event.target as HTMLElement).getBoundingClientRect();\n const x = Math.round((event as PointerEvent).clientX - offsetX);\n const y = Math.round((event as PointerEvent).clientY - offsetY);\n if (event.type === 'pointerdown') {\n ctx.topLeft.x = x;\n ctx.topLeft.y = y;\n regionDisplay.initRect(ctx.topLeft);\n } else if (event.type === 'pointerup') {\n regionDisplay.hideRect();\n send(ColorPickerEvent.REGION_SELECTED);\n } else if (event.type === 'pointermove') {\n const tlx = ctx.topLeft.x;\n const tly = ctx.topLeft.y;\n ctx.topLeft.x = Math.min(tlx, x);\n ctx.bottomRight.x = Math.max(tlx, x);\n ctx.topLeft.y = Math.min(tly, y);\n ctx.bottomRight.y = Math.max(tly, y);\n regionDisplay.updateRect(ctx.topLeft, ctx.bottomRight);\n if (cadDomNode) {\n updateDisplay({\n color: getPixel(x, y, cadDomNode),\n coordinates: { x, y },\n });\n }\n }\n });\n },\n\n [ColorPickerAction.REGION_SELECTED]: (ctx) => {\n enableInput();\n ctx.eventSubscription?.unsubscribe();\n ctx.regionJustSelected = true;\n },\n },\n });\n\n useEffect(() => {\n if (cadDomNode != null) {\n send(ColorPickerEvent.DOM_NODE_READY);\n }\n }, [cadDomNode, send]);\n\n const ctx = state.context;\n const regionHeight = Math.max(1, Math.abs(ctx.bottomRight.y - ctx.topLeft.y));\n const regionWidth = Math.max(1, Math.abs(ctx.bottomRight.x - ctx.topLeft.x));\n const { topLeft } = ctx;\n\n const { regionPixelsYIQ, regionPixelsRGB } = useRegionPixels(\n cadDomNode,\n topLeft,\n regionWidth,\n regionHeight,\n );\n\n const { yBuckets, iBuckets, qBuckets } = useYIQBuckets(regionPixelsYIQ);\n\n if (ctx.regionJustSelected) {\n const getMaxValue = (buckets: Bucket[]) => {\n return buckets.reduce(\n (prev, curr) => (curr.length > prev[0] ? [curr.length, curr.x0!] : prev),\n [0, 0],\n );\n };\n const yMax = getMaxValue(yBuckets);\n const iMax = getMaxValue(iBuckets);\n const qMax = getMaxValue(qBuckets);\n setReferenceY(yMax[1]);\n setReferenceI(iMax[1]);\n setReferenceQ(qMax[1]);\n setMaxDelta(0.1);\n ctx.regionJustSelected = false;\n }\n\n const referenceColorYIQ = useMemo(\n () => [referenceY, referenceI, referenceQ],\n [referenceY, referenceI, referenceQ],\n );\n\n const referenceColorRGB = useMemo(\n () => [\n Math.round(yiq2r(referenceY, referenceI - 128, referenceQ - 128)),\n Math.round(yiq2g(referenceY, referenceI - 128, referenceQ - 128)),\n Math.round(yiq2b(referenceY, referenceI - 128, referenceQ - 128)),\n ],\n [referenceY, referenceI, referenceQ],\n );\n\n const deltas = useYIQDeltaBuckets(regionPixelsYIQ, referenceColorYIQ);\n\n const [filteredPixelsRGB, matchCount] = useMatchedPixelsInRegion(\n regionPixelsRGB,\n referenceColorRGB,\n maxDelta,\n );\n\n const matchPercentage = matchCount / (regionWidth * regionHeight);\n\n const regionString = `const matchArea: PixelMatchArea = {\n height: ${regionHeight},\n width: ${regionWidth},\n x: ${topLeft.x},\n y: ${topLeft.y},\n };\n\n const colorOptions: ContainColorOptions = {\n expectedColor: [${referenceColorRGB}],\n label: 'my new color test',\n matchFractionMax: ${Math.round(matchPercentage * 1.1 * 1000) / 1000},\n matchFractionMin: ${Math.round(matchPercentage * 0.9 * 1000) / 1000},\n maxPixelColorDelta: ${maxDelta},\n };\n\n captureCurrentPixels(matchArea).should(\n containColor(colorOptions),\n );\n `;\n const pixelString = `const untitled: PixelMatch = {\n color: {\n blue: ${referenceColorRGB[2]},\n green: ${referenceColorRGB[1]},\n red: ${referenceColorRGB[0]},\n },\n coordinates: { x: ${topLeft.x}, y: ${topLeft.y} },\n };\n `;\n const outputString = regionWidth * regionHeight > 1 ? regionString : pixelString;\n\n const coreProps: CadColorButtonCoreProps = {\n colorDisplayRef,\n deltas,\n disabled:\n state.value === ColorPickerState.WAITING_FOR_CAD ||\n state.value === ColorPickerState.DISPLAY_RESULTS,\n filteredPixelsRGB,\n iBuckets,\n icon: state.context.buttonIcon,\n isModalOpen: state.matches(ColorPickerState.DISPLAY_RESULTS),\n isWaitingForRegion: state.value === ColorPickerState.SELECTING_REGION,\n matchPercentage,\n maxDelta,\n onButtonClick: () => {\n send(ColorPickerEvent.COLOR_BUTTON_CLICK);\n },\n onIChange: (i: number) => {\n setReferenceI(i);\n },\n onMaxDeltaChange: (delta: number) => {\n setMaxDelta(Math.abs(delta));\n },\n onModalClose: () => {\n send(ColorPickerEvent.MODAL_CLOSE);\n },\n onPreviewClick: (x: number, y: number) => {\n const py = regionPixelsYIQ[y * regionWidth + x][0];\n const pu = regionPixelsYIQ[y * regionWidth + x][1];\n const pv = regionPixelsYIQ[y * regionWidth + x][2];\n setReferenceY(Math.round(py));\n setReferenceI(Math.round(pu));\n setReferenceQ(Math.round(pv));\n },\n onQChange: (q: number) => {\n setReferenceQ(q);\n },\n onYChange: (y: number) => {\n setReferenceY(y);\n },\n outputString,\n qBuckets,\n referenceColorRGB,\n referenceColorYIQ,\n regionHeight,\n regionPixelsRGB,\n regionWidth,\n yBuckets,\n };\n return ;\n});\n","import { createCSVDataURL, downloadDataURL } from './download-utils';\n\nexport interface HourlySystemProductionData {\n hourly_ac_energies?: number[] | null;\n}\n\nexport async function fetchHourlySystemProductionJSON(\n resultUrl: string,\n): Promise {\n if (!resultUrl) {\n throw new Error('No result URL provided');\n }\n\n const response = await fetch(resultUrl);\n const data = await response.json();\n\n return data as HourlySystemProductionData;\n}\n\n/**\n * Value of one hour in milliseconds\n */\nconst ONE_HOUR_IN_MS = 60 * 60 * 1000;\n\nexport const CSVFileName = 'Hourly-Production-Estimate.csv';\n\n/**\n * Use arrays to reduce complexity/time to format dates/hours into strings\n */\nconst Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nexport const HeaderRow = ['\"\"', 'Month', 'Day', 'Hour', 'Energy Production [kWh]'];\nexport function convertJSONtoHourlyProductionCSVString(\n productionData: HourlySystemProductionData,\n): string[][] | null {\n const dateIterator = new Date(new Date().getFullYear(), 0, 1);\n const csvArr: string[][] = [['\"\"', 'Month', 'Day', 'Hour', 'Energy Production [kWh]']];\n const hourlyACEnergies = (productionData?.hourly_ac_energies ?? []) as number[];\n\n if (!hourlyACEnergies.length) {\n return null;\n }\n\n /**\n * Loop over each item in hourACEnergies, add it to csvArr, and increment dateIterator by\n * one hour to ensure valid date-times are used (like Feb 29 for leap years)\n */\n hourlyACEnergies.forEach((energy, index) => {\n csvArr.push([\n `${index + 1}`,\n Months[dateIterator.getMonth()],\n `${dateIterator.getDate()}`,\n `${`${dateIterator.getHours()}`.padStart(2, '0')}:00`,\n `${parseFloat((energy / 1000).toFixed(2))}`.padEnd(3, '.0'),\n ]);\n dateIterator.setTime(dateIterator.getTime() + ONE_HOUR_IN_MS);\n });\n\n return csvArr;\n}\n\nexport async function downloadHourlyProductionCSV(resultUrl: string) {\n const data = await fetchHourlySystemProductionJSON(resultUrl);\n const csvArr = convertJSONtoHourlyProductionCSVString(data);\n if (!csvArr) {\n throw new Error('No Hourly Production Data Found');\n }\n const csvDataUrl = createCSVDataURL(csvArr);\n await downloadDataURL(csvDataUrl, `Hourly-Production-Estimate.csv`);\n}\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type CadDownloadButtonQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type CadDownloadButtonQuery = { __typename: 'Query', CAD: { __typename: 'CAD', isCadStateAvailable: boolean, panelCount: number }, cadUploadState?: { __typename: 'CadUploadState', screenshotInProgress?: boolean | null | undefined } | null | undefined };\n\nexport type SimulationCsvResultsQueryVariables = Types.Exact<{\n performanceSimulationId: Types.Scalars['ID'];\n}>;\n\n\nexport type SimulationCsvResultsQuery = { __typename: 'Query', performanceSimulation: { __typename: 'PerformanceSimulation', id: string, resultUrl?: string | null | undefined } };\n\n\nexport const CadDownloadButtonDocument = gql`\n query CadDownloadButton @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n isCadStateAvailable\n panelCount\n }\n cadUploadState @client {\n screenshotInProgress\n }\n}\n `;\n\n/**\n * __useCadDownloadButtonQuery__\n *\n * To run a query within a React component, call `useCadDownloadButtonQuery` and pass it any options that fit your needs.\n * When your component renders, `useCadDownloadButtonQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useCadDownloadButtonQuery({\n * variables: {\n * },\n * });\n */\nexport function useCadDownloadButtonQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(CadDownloadButtonDocument, options);\n }\nexport function useCadDownloadButtonLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(CadDownloadButtonDocument, options);\n }\nexport type CadDownloadButtonQueryHookResult = ReturnType;\nexport type CadDownloadButtonLazyQueryHookResult = ReturnType;\nexport type CadDownloadButtonQueryResult = Apollo.QueryResult;\nexport const SimulationCsvResultsDocument = gql`\n query SimulationCsvResults($performanceSimulationId: ID!) @trace_info(traceInfo: {pod: cad}) {\n performanceSimulation: fullPerformanceSimulationById(\n id: $performanceSimulationId\n ) {\n id\n resultUrl\n }\n}\n `;\n\n/**\n * __useSimulationCsvResultsQuery__\n *\n * To run a query within a React component, call `useSimulationCsvResultsQuery` and pass it any options that fit your needs.\n * When your component renders, `useSimulationCsvResultsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useSimulationCsvResultsQuery({\n * variables: {\n * performanceSimulationId: // value for 'performanceSimulationId'\n * },\n * });\n */\nexport function useSimulationCsvResultsQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(SimulationCsvResultsDocument, options);\n }\nexport function useSimulationCsvResultsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(SimulationCsvResultsDocument, options);\n }\nexport type SimulationCsvResultsQueryHookResult = ReturnType;\nexport type SimulationCsvResultsLazyQueryHookResult = ReturnType;\nexport type SimulationCsvResultsQueryResult = Apollo.QueryResult;","import React, { FC, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { withDisabledTooltip } from '@aurorasolar/common-core/src/tooltip/with-disabled-tooltip';\nimport { CADTriggerActionTypes, setCadModalAction } from '@aurorasolar/common-data-store';\nimport {\n AnalyticsEventTypes,\n AppRouterNavigation,\n FeatureFlag,\n OrgPermission,\n OrgPermissions,\n ReduxStore,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\nimport { FeatureFlagGuard } from '@aurorasolar/common-feature-flag';\nimport { Menu, MenuItem, Popover, Position } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { downloadHourlyProductionCSV } from '@aurorasolar/common-core/src/utils/hourly-system-production-download';\nimport { useSaveCad, useSimulations, useTriggerCadAction } from '../hooks';\nimport {\n CadDownloadButtonQuery,\n useCadDownloadButtonQuery,\n useSimulationCsvResultsQuery,\n} from './cad-download-button.generated';\nimport { useAnalytics } from '../hooks/use-analytics';\n\ntype CadDownloadItemProps = {\n queryResult?: CadDownloadButtonQuery;\n};\n\ninterface CadDownloadProductionDataProps extends CadDownloadItemProps {\n designId: string;\n}\n\nconst DxfButton: FC = () => {\n const dispatch = useAppModule(ReduxStore)?.dispatch;\n const track = useAnalytics();\n return (\n {\n dispatch?.(setCadModalAction(CADTriggerActionTypes.BeforeDxf));\n track(AnalyticsEventTypes.DesignClickedDownload, { type: 'DXF' });\n }}\n text={}\n />\n );\n};\n\nconst ScreenshotButton: FC = ({ queryResult }) => {\n const track = useAnalytics();\n const screenshot = useTriggerCadAction(CADTriggerActionTypes.PNG);\n const disabled = !!queryResult?.cadUploadState?.screenshotInProgress || !screenshot;\n return withDisabledTooltip(\n disabled,\n undefined,\n {\n screenshot?.();\n track(AnalyticsEventTypes.DesignClickedDownload, { type: 'screenshot' });\n }}\n text={}\n />,\n );\n};\n\nconst ShadeReportButton: FC = ({ queryResult }) => {\n const track = useAnalytics();\n const { save } = useSaveCad();\n const navigation = useAppModule(AppRouterNavigation);\n const orgPermission = useAppModule(OrgPermissions);\n\n const disabledResult = useMemo(() => {\n const hasPermission = orgPermission?.getPermission(OrgPermission.DesignCadShadeReport);\n return {\n disabled: !hasPermission || !queryResult?.CAD?.panelCount || !save || !navigation,\n disabledReason: !hasPermission ? 'Shade Report is not available for this license' : '',\n };\n }, [orgPermission, queryResult, navigation, save]);\n\n return withDisabledTooltip(\n disabledResult.disabled,\n disabledResult.disabledReason,\n {\n await save();\n navigation?.navigate('shade-report');\n track(AnalyticsEventTypes.DesignClickedDownload, { type: 'shade report' });\n }}\n text={}\n />,\n );\n};\n\nconst ProductionDataButton = ({ designId }: CadDownloadProductionDataProps) => {\n const {\n simulationResults: { simulation },\n } = useSimulations(designId);\n const track = useAnalytics();\n\n const { data } = useSimulationCsvResultsQuery({\n skip: !simulation,\n variables: { performanceSimulationId: simulation!.id },\n });\n\n const disabled = useMemo(() => {\n return !simulation || !simulation?.valid || !data?.performanceSimulation.resultUrl;\n }, [simulation, data]);\n\n return withDisabledTooltip(\n disabled,\n undefined,\n {\n if (!data?.performanceSimulation.resultUrl) {\n return;\n }\n await downloadHourlyProductionCSV(data.performanceSimulation.resultUrl);\n track(AnalyticsEventTypes.DesignClickedDownload, { type: 'production data' });\n }}\n text={}\n />,\n );\n};\n\nconst CadDownloadMenu = styled(Menu)`\n width: 220px;\n`;\n\nconst StyledCadDownloadButtonItem = styled(Flex).attrs({\n alignItems: 'center',\n})`\n height: 30px;\n\n * {\n padding-right: ${SPACES[1]}px;\n\n &:last-child {\n padding-right: 0;\n }\n }\n`;\nconst CadDownloadButtonItem: FC<{ icon: AuroraIconType; text: string }> = ({ icon, text }) => {\n return (\n \n \n {text}\n \n );\n};\n\ninterface CADDownloadButtonProps {\n designId: string;\n}\n\nconst Cad3dDownloadButtonItem = () => {\n const track = useAnalytics();\n const triggerAction = useTriggerCadAction(CADTriggerActionTypes.JSON3D);\n return (\n {\n triggerAction();\n track(AnalyticsEventTypes.DesignClickedDownload, { type: '3D Site JSON' });\n }}\n text={}\n />\n );\n};\n\nexport const CADDownloadButton = ({ designId }: CADDownloadButtonProps) => {\n const dispatch = useAppModule(ReduxStore)?.dispatch;\n const { data: queryResult } = useCadDownloadButtonQuery({\n returnPartialData: true,\n });\n\n const loading = useMemo(() => {\n return dispatch == null || !queryResult?.CAD.isCadStateAvailable;\n }, [dispatch, queryResult]);\n\n return (\n \n e.preventDefault()}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { lighten } from 'polished';\nimport React, { ComponentProps, FunctionComponent } from 'react';\nimport styled from 'styled-components';\n\nimport { Button } from '@blueprintjs/core';\n\nconst linearGradient = (\n amountToLighten: number,\n { leftColor, rightColor }: { leftColor: string; rightColor: string },\n) => {\n return `linear-gradient(to right, ${lighten(amountToLighten, leftColor)}, ${lighten(\n amountToLighten,\n rightColor,\n )}, ${lighten(amountToLighten, leftColor)}, ${lighten(amountToLighten, rightColor)})`;\n};\nconst whichGradient = (\n amountToLighten: number,\n { isActive, flatColor, leftColor, rightColor }: ButtonGradiantTypes,\n) => {\n return isActive\n ? linearGradient(0 + amountToLighten, { leftColor, rightColor })\n : linearGradient(0.4 - amountToLighten, { leftColor: flatColor, rightColor: flatColor });\n};\n\ntype ButtonGradiantTypes = ComponentProps & {\n flatColor: string;\n leftColor: string;\n rightColor: string;\n textColor?: string;\n isActive: boolean;\n};\n\nconst ButtonGradientBackGround = styled(\n ({ isActive, flatColor, leftColor, rightColor, textColor, ...rest }: ButtonGradiantTypes) => (\n \n \n \n \n );\n};\n","import React, { FC } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Maybe } from '@aurorasolar/graphql-client-schema';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { IrradianceInspectorMonthlyChart } from './irradiance-inspector-monthly-chart';\n\nconst roundOrBlank = (n?: number | null) => (n != null ? Math.round(n).toLocaleString() : '-');\n\nconst HEIGHT = 182;\nconst ERROR_HEIGHT = 222;\nconst EXPANDED_HEIGHT = 226;\n\nconst WIDTH = 250;\nconst EXPANDED_WIDTH = 562;\n\nconst StyledIrradianceInspector = styled.div<{ isExpanded: boolean; hasError: boolean }>`\n ${({ isExpanded, hasError }) =>\n isExpanded\n ? css`\n padding: ${SPACES[3]}px ${SPACES[3]}px;\n height: ${EXPANDED_HEIGHT}px;\n `\n : css`\n padding: ${hasError ? SPACES[3] : SPACES[2]}px ${SPACES[3]}px;\n height: ${hasError ? ERROR_HEIGHT : HEIGHT}px;\n `};\n justify-content: flex-start;\n width: ${({ isExpanded }) => (isExpanded ? EXPANDED_WIDTH : WIDTH)}px;\n flex: 0 0 auto;\n background: ${Colors.GRAY_800};\n display: flex;\n opacity: 0.8;\n border-radius: ${SPACES[0]}px;\n backdrop-filter: blur(${SPACES[0] / 2}px);\n color: ${Colors.WHITE};\n transition: height 0.2s ease, width 0.2s ease, padding 0.2s ease;\n overflow: hidden;\n h4 {\n text-transform: uppercase;\n color: inherit;\n margin: 0;\n }\n\n button {\n background: none;\n border: none;\n padding: 0;\n color: inherit;\n outline: none;\n cursor: pointer;\n animation: fade-in 0.2s ease;\n }\n`;\nexport interface IrradianceInspectorCoreProps {\n error?: string;\n irradiance?: Maybe;\n isExpanded: boolean;\n monthlyIrradiance?: Maybe;\n monthlySap?: Maybe;\n sap?: Maybe;\n tof?: Maybe;\n toggleExpanded: VoidFunction;\n tsrf?: Maybe;\n type: string;\n isAverage?: boolean;\n}\nexport const IrradianceInspectorCore: FC = ({\n error,\n irradiance,\n isExpanded,\n monthlyIrradiance,\n monthlySap,\n sap,\n isAverage,\n tof,\n toggleExpanded,\n tsrf,\n type,\n}) => {\n return (\n \n \n \n \n Annual\n \n\n \n \n \n ({type})\n \n \n\n \n {isAverage ? 'average' : 'point'}\n \n \n\n {!isExpanded && (\n \n )}\n \n \n Irradiance\n {roundOrBlank(irradiance)} kWh/m²/yr\n \n \n Solar Access\n {roundOrBlank(sap)}%\n \n \n TOF\n {roundOrBlank(tof)}%\n \n \n TSRF\n {roundOrBlank(tsrf)}%\n \n {error && (\n \n \n \n \n \n {error}\n \n \n )}\n \n \n \n \n \n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type IrradianceInspectorQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type IrradianceInspectorQuery = { __typename: 'Query', CAD: { __typename: 'CAD', averageIrradiance?: number | null | undefined, averageSap?: number | null | undefined, averageTof?: number | null | undefined, averageTsrf?: number | null | undefined, panelCount: number, irradianceValuesType: Types.IrradianceValuesType, irradianceValue?: number | null | undefined, sapValue: number, tofValue: number, tsrfValue: number, irrMonthlyValues?: Array | null | undefined, sapMonthlyValues?: Array | null | undefined, viewSettings: { __typename: 'ViewSettings', design3d?: { __typename: 'ViewPortViewSettings', irradianceMap?: boolean | null | undefined, irradianceMapPanels?: boolean | null | undefined } | null | undefined } } };\n\n\nexport const IrradianceInspectorDocument = gql`\n query IrradianceInspector @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n averageIrradiance\n averageSap\n averageTof\n averageTsrf\n panelCount\n irradianceValuesType\n irradianceValue\n sapValue\n tofValue\n tsrfValue\n irrMonthlyValues\n sapMonthlyValues\n viewSettings {\n design3d {\n irradianceMap\n irradianceMapPanels\n }\n }\n }\n}\n `;\n\n/**\n * __useIrradianceInspectorQuery__\n *\n * To run a query within a React component, call `useIrradianceInspectorQuery` and pass it any options that fit your needs.\n * When your component renders, `useIrradianceInspectorQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useIrradianceInspectorQuery({\n * variables: {\n * },\n * });\n */\nexport function useIrradianceInspectorQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(IrradianceInspectorDocument, options);\n }\nexport function useIrradianceInspectorLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(IrradianceInspectorDocument, options);\n }\nexport type IrradianceInspectorQueryHookResult = ReturnType;\nexport type IrradianceInspectorLazyQueryHookResult = ReturnType;\nexport type IrradianceInspectorQueryResult = Apollo.QueryResult;","import React, { FC, useMemo, useState } from 'react';\n\nimport { IrradianceInspectorCore } from './irradiance-inspector-core';\nimport {\n IrradianceInspectorQuery,\n useIrradianceInspectorQuery,\n} from './irradiance-inspector.generated';\n\nconst capitalizeWord = (word: string) =>\n `${word.charAt(0).toUpperCase()}${word.slice(1).toLocaleLowerCase()}`;\n\nconst getData = (cad?: IrradianceInspectorQuery['CAD']) => {\n if (\n cad == null ||\n (cad.panelCount < 1 &&\n (cad.viewSettings.design3d?.irradianceMapPanels || cad.irradianceValue == null)) ||\n !cad.irradianceValuesType\n ) {\n return {\n type: 'Roof',\n };\n }\n if (cad.irradianceValue == null) {\n return {\n irradiance: cad.averageIrradiance,\n isAverage: true,\n sap: cad.averageSap,\n tof: cad.averageTof,\n tsrf: cad.averageTsrf,\n type: 'Panels',\n };\n }\n return {\n irradiance: cad.irradianceValue,\n monthlyIrradiance: cad.irrMonthlyValues,\n monthlySap: cad.sapMonthlyValues,\n sap: cad.sapValue,\n tof: cad.tofValue,\n tsrf: cad.tsrfValue,\n type: capitalizeWord(cad.irradianceValuesType?.replace(/s$/, '')),\n };\n};\n\nexport const IrradianceInspector: FC = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const CAD = useIrradianceInspectorQuery({\n returnPartialData: true,\n }).data?.CAD;\n const props = useMemo(() => getData(CAD), [CAD]);\n\n if (\n !(CAD?.viewSettings.design3d?.irradianceMap || CAD?.viewSettings.design3d?.irradianceMapPanels)\n ) {\n return null;\n }\n return (\n setIsExpanded((v) => !v)}\n />\n );\n};\n","export const MAX_CUSTOM_IMAGE_COUNT = 4;\nexport const MAX_CUSTOM_IMAGERY_MESSAGE = `Maximum of ${MAX_CUSTOM_IMAGE_COUNT} displayed custom maps reached`;\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type NearmapAvailabilityInfoQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type NearmapAvailabilityInfoQuery = { __typename: 'Query', design: { __typename: 'Design', id: string, latitude: number, longitude: number }, nearmapService?: { __typename: 'AddOnService', id: string, remainingCredits?: number | null | undefined, setting?: { __typename: 'AddOnServiceSettings', apiKeyPresent?: boolean | null | undefined, credentials?: { __typename: 'AddOnServiceCredentials', id: string } | null | undefined } | null | undefined } | null | undefined };\n\n\nexport const NearmapAvailabilityInfoDocument = gql`\n query NearmapAvailabilityInfo($designId: ID!) @trace_info(traceInfo: {pod: cad}) {\n design: designById(id: $designId) {\n id\n latitude\n longitude\n }\n nearmapService: addOnServiceByName(name: \"Nearmap Imagery\") {\n id\n remainingCredits\n setting {\n apiKeyPresent\n credentials {\n id\n }\n }\n }\n}\n `;\n\n/**\n * __useNearmapAvailabilityInfoQuery__\n *\n * To run a query within a React component, call `useNearmapAvailabilityInfoQuery` and pass it any options that fit your needs.\n * When your component renders, `useNearmapAvailabilityInfoQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useNearmapAvailabilityInfoQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useNearmapAvailabilityInfoQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(NearmapAvailabilityInfoDocument, options);\n }\nexport function useNearmapAvailabilityInfoLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(NearmapAvailabilityInfoDocument, options);\n }\nexport type NearmapAvailabilityInfoQueryHookResult = ReturnType;\nexport type NearmapAvailabilityInfoLazyQueryHookResult = ReturnType;\nexport type NearmapAvailabilityInfoQueryResult = Apollo.QueryResult;","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraCheckbox } from '@aurorasolar/common-core/src/checkbox/checkbox';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { NearMapAvailableImage } from '@aurorasolar/graphql-client-schema';\nimport { Box } from '@rebass/grid';\n\nimport { MapImageryItem } from '../map-imagery-selector/map-imagery-selector-item';\n\nconst StyledImagerySelection = styled.div`\n width: 346px;\n border: solid 1px ${Colors.GRAY_400};\n border-radius: 6px;\n overflow-y: auto;\n flex: 1 0;\n`;\nconst StyledRow = styled.label`\n display: flex;\n align-items: center;\n padding: ${SPACES[0] / 2}px ${SPACES[2]}px;\n\n &:first-child {\n padding-top: ${SPACES[2]}px;\n }\n\n &:last-child {\n padding-bottom: ${SPACES[2]}px;\n }\n\n .bp3-control {\n margin: 0;\n padding: 0;\n\n .bp3-control-indicator {\n margin: 0;\n }\n }\n`;\n\nexport const NearmapImagerySelection: FC<{\n images: NearMapAvailableImage[];\n selection: Set;\n onChange: (selection: Set) => void;\n trueOrthoItems: MapImageryItem[];\n}> = ({ images, onChange, selection, trueOrthoItems }) => {\n const getDate = (item: MapImageryItem | NearMapAvailableImage): number => {\n if ('nearmapDate' in item) {\n return Number(new Date(item.readableDate!));\n }\n if ('label' in item) {\n // TEMPORARY\n return Number(new Date(item.label.split('(True Ortho)')[0]));\n }\n return -1;\n };\n const sortedItems: (MapImageryItem | NearMapAvailableImage)[] = [\n ...trueOrthoItems,\n ...images,\n ].sort((imageA, imageB) => getDate(imageB) - getDate(imageA));\n\n return (\n \n {sortedItems.map((item, index) => {\n if ('readableDate' in item && item.readableDate) {\n return (\n \n \n {\n const newSelection = new Set(selection);\n if ((target as HTMLInputElement).checked) {\n newSelection.add(item.readableDate!);\n } else {\n newSelection.delete(item.readableDate!);\n }\n onChange(newSelection);\n }}\n />\n \n \n \n {item.readableDate}\n \n \n\n {index === 0 && (\n \n Latest\n \n )}\n \n );\n }\n if ('label' in item) {\n return (\n \n \n \n \n \n \n {item.label}\n \n \n\n {index === 0 && (\n \n Latest\n \n )}\n \n );\n }\n return null;\n })}\n \n );\n};\n","import React, { FC, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Popover } from '@blueprintjs/core';\nimport { Box } from '@rebass/grid';\n\ninterface NearmapModalCreditPopoverProps {\n creditsToConsume: number;\n availableCredits: number;\n}\n\nconst StyledCreditPopover = styled.div`\n .bp3-popover-wrapper {\n display: block;\n }\n\n button {\n background: none;\n border: none;\n padding: 0 ${SPACES[0]}px;\n display: flex;\n align-items: center;\n height: ${SPACES[4]}px;\n }\n`;\nexport const NearmapModalCreditPopover: FC = ({\n creditsToConsume,\n availableCredits,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n return (\n \n setIsOpen(false)} position=\"bottom-right\">\n \n \n {availableCredits} credits in account\n \n \n \n );\n};\n","import React, { FC, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { MaxHeightFlex, modalBorderRadius, SPACES } from '@aurorasolar/common-core/src/layout';\nimport { IconFontSize, Text } from '@aurorasolar/common-core/src/typography';\nimport { GoogleMap, TileSelector, TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport { FeatureFlag, FeatureFlags, useAppModule } from '@aurorasolar/common-module-loader';\nimport { NearMapAvailableImage } from '@aurorasolar/graphql-client-schema';\nimport { Dialog } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { NearmapImagerySelection } from './nearmap-imagery-selection';\nimport { NearmapModalCreditPopover } from './nearmap-modal-credit-popover';\nimport { MapImageryItem } from '../map-imagery-selector/map-imagery-selector-item';\n\nexport const StyledNearmapDialog = styled(Dialog)`\n padding: 0;\n width: 70vw;\n background: ${Colors.WHITE};\n height: 70vh;\n border: solid 1px ${Colors.GRAY_300};\n border-radius: ${modalBorderRadius}px;\n box-shadow: 0 0 6px rgba(0, 0, 0, 0.25);\n\n h2 {\n font-weight: 500;\n margin: 0;\n padding: 0;\n }\n`;\n\nconst MapWrap = styled.div`\n flex: 1 0 auto;\n border-radius: ${modalBorderRadius}px 0 0 ${modalBorderRadius}px;\n overflow: hidden;\n display: flex;\n position: relative;\n justify-content: center;\n\n /* To cover the modal's border */\n margin: -1px;\n`;\n\nconst MapOverlay = styled.div`\n position: absolute;\n z-index: 1;\n top: ${SPACES[3]}px;\n\n /* To prevent the overlay from covering the map control buttons */\n @media (max-width: 1350px) {\n display: none;\n }\n`;\n\nexport const CloseNearmapModalButton = styled.div`\n cursor: pointer;\n`;\n\nconst Divider = styled.div`\n border-bottom: solid 1px ${Colors.GRAY_400};\n margin: ${SPACES[4]}px ${SPACES[2]}px ${SPACES[1]}px ${SPACES[2]}px;\n`;\nexport interface NearMapModalCoreProps {\n availableCredits?: number;\n availableImages: NearMapAvailableImage[];\n creditsToConsume: number;\n ignoreCredits: boolean;\n isOpen: boolean;\n mapLocation: google.maps.LatLngLiteral;\n mapStartingSelection?: google.maps.LatLngBounds;\n onClose: VoidFunction;\n onGetImagery: VoidFunction;\n onMapSelectionUpdate: (update: TileSelectorUpdate) => void;\n selectedImages: Set;\n setSelectedImages: (selection: Set) => void;\n trueOrthoItems: MapImageryItem[];\n}\n\nexport const NearmapModalCore: FC = ({\n availableCredits = 0,\n availableImages,\n creditsToConsume,\n ignoreCredits,\n isOpen,\n mapLocation,\n mapStartingSelection,\n onClose,\n onGetImagery,\n onMapSelectionUpdate,\n selectedImages,\n setSelectedImages,\n trueOrthoItems,\n}) => {\n const mapOptions = useMemo(\n () => ({\n center: mapLocation,\n fullscreenControl: false,\n mapTypeId: 'hybrid',\n minZoom: 14,\n rotateControl: false,\n streetViewControl: false,\n tilt: 0,\n zoom: 18,\n }),\n [mapLocation],\n );\n const featureFlags = useAppModule(FeatureFlags);\n const showEMSCredits = featureFlags?.variation(FeatureFlag.ShowEMSCredits);\n const hasEnoughCredits = creditsToConsume <= availableCredits;\n return (\n \n \n \n \n \n Select the desired area\n \n \n \n \n \n \n \n \n

Nearmap Imagery

\n \n \n \n
\n \n \n Purchase high quality aerial images for a selected area.\n \n \n\n \n\n \n {!ignoreCredits && showEMSCredits && (\n \n \n The selected area uses\n \n \n \n )}\n \n Get Imagery\n \n
\n
\n
\n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type ConsumeCreditsMutationVariables = Types.Exact<{\n id: Types.Scalars['ID'];\n input: Types.ConsumeAddOnServiceCredits;\n}>;\n\n\nexport type ConsumeCreditsMutation = { __typename: 'Mutation', consumeAddOnServiceCredits: { __typename: 'AddOnServiceCreditConsumed', remainingCredits?: number | null | undefined, status?: string | null | undefined } };\n\n\nexport const ConsumeCreditsDocument = gql`\n mutation ConsumeCredits($id: ID!, $input: ConsumeAddOnServiceCredits!) @trace_info(traceInfo: {pod: cad}) {\n consumeAddOnServiceCredits(id: $id, input: $input) {\n remainingCredits\n status\n }\n}\n `;\nexport type ConsumeCreditsMutationFn = Apollo.MutationFunction;\n\n/**\n * __useConsumeCreditsMutation__\n *\n * To run a mutation, you first call `useConsumeCreditsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useConsumeCreditsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [consumeCreditsMutation, { data, loading, error }] = useConsumeCreditsMutation({\n * variables: {\n * id: // value for 'id'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useConsumeCreditsMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(ConsumeCreditsDocument, options);\n }\nexport type ConsumeCreditsMutationHookResult = ReturnType;\nexport type ConsumeCreditsMutationResult = Apollo.MutationResult;\nexport type ConsumeCreditsMutationOptions = Apollo.BaseMutationOptions;","import React, { FC } from 'react';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { MaxHeightFlex } from '@aurorasolar/common-core/src/layout';\nimport { IconFontSize, Text } from '@aurorasolar/common-core/src/typography';\nimport { NearmapColorKeys, NearmapCoverage } from '@aurorasolar/common-google-map';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { CloseNearmapModalButton, StyledNearmapDialog } from './nearmap-modal-core';\n\ninterface NearmapUnavailableModalCoreProps {\n center: google.maps.LatLngLiteral;\n isOpen: boolean;\n onClose: VoidFunction;\n}\nexport const NearmapUnavailableModalCore: FC = ({\n center,\n isOpen,\n onClose,\n}) => {\n return (\n \n \n \n

Sorry, Nearmap is not available for this location

\n \n \n \n
\n \n \n Areas with Nearmap coverage are shown below:\n \n \n \n \n \n \n
\n
\n );\n};\n","import { NearMapAvailableImage } from '@aurorasolar/graphql-client-schema';\n\nexport enum NearmapAvailabilityType {\n LOADING,\n NO_IMAGERY,\n NO_SERVICE,\n AVAILABLE,\n}\n\nexport interface NearmapAvailabilityInfo {\n apiKey?: string;\n availability: NearmapAvailabilityType;\n images: NearMapAvailableImage[];\n location?: { latitude: number; longitude: number };\n remainingCredits?: number;\n serviceId?: string;\n}\n","import { useCallback } from 'react';\n\nimport { TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport {\n CADGeodataService,\n FullGeodataService,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\nimport {\n AsyncJobParametersNearmapMetadata,\n NearMapAvailableImage,\n} from '@aurorasolar/graphql-client-schema';\n\nexport const PIXEL_DEFINITION = {\n x: {\n max: 256,\n min: 0,\n },\n y: {\n max: 256,\n min: 0,\n },\n};\n\nexport interface DownloadNearmapProps {\n availableImages: NearMapAvailableImage[];\n mapSelection?: TileSelectorUpdate;\n selectedImages: Set;\n}\n\nexport const useDownloadNearmap = ({\n availableImages,\n mapSelection,\n selectedImages,\n}: DownloadNearmapProps) => {\n const geo = useAppModule(CADGeodataService) as FullGeodataService | undefined;\n return useCallback(() => {\n const dates = availableImages\n .filter(({ readableDate }) => selectedImages.has(readableDate!))\n .map(({ __typename, ...rest }) => rest);\n\n if (mapSelection == null || dates.length === 0) {\n return;\n }\n\n const { max, min } = mapSelection;\n const nearmapParameters: Omit = {\n bounds: {\n lat: {\n max: max.lat,\n min: min.lat,\n },\n lng: {\n max: max.lng,\n min: min.lng,\n },\n },\n pixel: PIXEL_DEFINITION,\n tile: {\n x: {\n max: max.x - 1,\n min: min.x,\n },\n y: {\n max: max.y - 1,\n min: min.y,\n },\n },\n };\n\n geo?.downloadNearmap({ dates, nearmapMetadata: nearmapParameters });\n }, [geo, availableImages, mapSelection, selectedImages]);\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type RemoveConflictingImagesMutationVariables = Types.Exact<{\n ids: Array | Types.Scalars['ID'];\n}>;\n\n\nexport type RemoveConflictingImagesMutation = { __typename: 'Mutation', deleteOrthoImages: Array };\n\n\nexport const RemoveConflictingImagesDocument = gql`\n mutation removeConflictingImages($ids: [ID!]!) @trace_info(traceInfo: {pod: cad}) {\n deleteOrthoImages(ids: $ids)\n}\n `;\nexport type RemoveConflictingImagesMutationFn = Apollo.MutationFunction;\n\n/**\n * __useRemoveConflictingImagesMutation__\n *\n * To run a mutation, you first call `useRemoveConflictingImagesMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useRemoveConflictingImagesMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [removeConflictingImagesMutation, { data, loading, error }] = useRemoveConflictingImagesMutation({\n * variables: {\n * ids: // value for 'ids'\n * },\n * });\n */\nexport function useRemoveConflictingImagesMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(RemoveConflictingImagesDocument, options);\n }\nexport type RemoveConflictingImagesMutationHookResult = ReturnType;\nexport type RemoveConflictingImagesMutationResult = Apollo.MutationResult;\nexport type RemoveConflictingImagesMutationOptions = Apollo.BaseMutationOptions;","import { useCallback, useMemo } from 'react';\n\nimport { MapImageryItem } from '../map-imagery-selector/map-imagery-selector-item';\nimport { useRemoveConflictingImagesMutation } from './remove-conflicting-images.generated';\n\nexport interface UseRemoveConflictingImagesProps {\n existingImages: MapImageryItem[];\n selectedImages: Set;\n}\n\nexport const useRemoveConflictingImages = ({\n existingImages,\n selectedImages,\n}: UseRemoveConflictingImagesProps) => {\n const conflictingImages = useMemo(\n () =>\n existingImages.reduce((conflicts: string[], image) => {\n if (image.id != null && selectedImages.has(image.label!)) {\n conflicts.push(image.id);\n }\n return conflicts;\n }, []),\n [existingImages, selectedImages],\n );\n const [remove] = useRemoveConflictingImagesMutation({\n variables: { ids: conflictingImages },\n });\n\n const removeConflictingImages = useCallback(async () => {\n if (conflictingImages.length > 0) {\n await remove();\n }\n }, [remove, conflictingImages]);\n\n return {\n conflictingImages,\n removeConflictingImages,\n };\n};\n","import React, { FC, useCallback, useMemo, useState } from 'react';\nimport { useCurrentRoute } from 'react-navi';\n\nimport { TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport {\n AnalyticsEventTypes,\n FeatureFlag,\n FeatureFlags,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\n\nimport { useAnalytics } from '../hooks/use-analytics';\nimport { MapImageryItem } from '../map-imagery-selector/map-imagery-selector-item';\nimport { NearmapAvailabilityInfoDocument } from '../map-imagery-selector/use-nearmap-availability.generated';\nimport { useTileSelectorStartingBounds } from '../standard-imagery-modal/use-tile-selector-starting-bounds';\nimport { NearmapModalCore } from './nearmap-modal-core';\nimport { useConsumeCreditsMutation } from './nearmap-modal.generated';\nimport { NearmapUnavailableModalCore } from './nearmap-unavailable-modal-core';\nimport { NearmapAvailabilityInfo, NearmapAvailabilityType } from './types';\nimport { useDownloadNearmap } from './use-download-nearmap';\nimport { useRemoveConflictingImages } from './use-remove-conflicting-images';\n\nconst TILE_PRICE = 1 / 135;\n\nexport interface NearmapModalProps {\n availabilityInfo: NearmapAvailabilityInfo;\n existingImages: MapImageryItem[];\n isOpen: boolean;\n onClose: VoidFunction;\n}\n\nexport const NearmapModal: FC = ({\n availabilityInfo: { serviceId, apiKey, images, availability, remainingCredits, location },\n existingImages,\n isOpen,\n onClose,\n}) => {\n const track = useAnalytics();\n const { bounds: mapStartingSelection } = useTileSelectorStartingBounds();\n\n const { designId, projectId } =\n (useCurrentRoute().data as { designId?: string; projectId?: string }) ?? {};\n\n const [consumeCredits] = useConsumeCreditsMutation({\n refetchQueries: [{ query: NearmapAvailabilityInfoDocument, variables: { designId } }],\n });\n const hasApiKey = apiKey != null;\n const [mapSelection, updateMapSelection] = useState();\n const tileCount = mapSelection?.tileCount ?? 1;\n\n const featureFlags = useAppModule(FeatureFlags);\n const tierBillingModel = featureFlags?.variation(FeatureFlag.BillingModel) !== 'legacy';\n\n const [selectedImages, onSelectImage] = useState(() => {\n const id = images[0]?.readableDate;\n return new Set(id ? [id] : undefined);\n });\n\n const downloadNearmap = useDownloadNearmap({\n availableImages: images,\n mapSelection,\n selectedImages,\n });\n\n const { removeConflictingImages } = useRemoveConflictingImages({\n existingImages,\n selectedImages,\n });\n\n const creditsToConsume = useMemo(\n () => Math.ceil(tileCount * selectedImages.size * TILE_PRICE),\n [tileCount, selectedImages],\n );\n const imagesCount = useMemo(() => selectedImages.size, [selectedImages]);\n\n // NOTE this is temporary until true ortho images are returned as part of availabilityInfo\n const trueOrthoItems = useMemo(\n () => existingImages.filter((item) => item.label.includes('True Ortho')),\n [existingImages],\n );\n\n const onGetImagery = useCallback(async () => {\n onClose();\n\n if (designId == null || projectId == null || serviceId == null) {\n return console.error('No Nearmap Service Found');\n }\n\n if (!hasApiKey) {\n const params = {\n variables: {\n id: serviceId,\n input: {\n credits: creditsToConsume,\n designId,\n },\n },\n };\n const [mostRecent] = selectedImages;\n const recency = images.findIndex((i) => i.readableDate === mostRecent) + 1;\n if (!tierBillingModel) {\n track(AnalyticsEventTypes.DesignUsedNearmapCredits, {\n credits_used: creditsToConsume,\n images_downloaded: imagesCount,\n });\n }\n track(AnalyticsEventTypes.DesignClickedGetHdImagery, {\n date: mostRecent,\n recency,\n });\n\n // consume credits, bypass if on the new credit model\n if (!tierBillingModel) {\n await consumeCredits(params);\n }\n }\n await removeConflictingImages();\n return downloadNearmap();\n }, [\n hasApiKey,\n consumeCredits,\n downloadNearmap,\n designId,\n projectId,\n creditsToConsume,\n imagesCount,\n serviceId,\n removeConflictingImages,\n onClose,\n track,\n selectedImages,\n images,\n tierBillingModel,\n ]);\n\n const center = useMemo(() => {\n if (location == null) {\n return null;\n }\n const { latitude: lat, longitude: lng } = location;\n return { lat, lng };\n }, [location]);\n\n if (center == null) {\n return null;\n }\n if (availability === NearmapAvailabilityType.NO_IMAGERY) {\n return ;\n }\n return (\n \n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { Formik } from 'formik';\n\nimport * as DS from '@aurorasolar/ds';\nimport { useIntl } from '@aurorasolar/intl';\nimport { GoogleMap, TileSelector, TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport { VexcelAvailableImage } from '@aurorasolar/graphql-client-schema';\n\nexport interface VexcelModalCoreProps {\n availableImages: VexcelAvailableImage[];\n isOpen: boolean;\n mapLocation: google.maps.LatLngLiteral;\n mapStartingSelection?: google.maps.LatLngBounds;\n onClose: VoidFunction;\n onGetImagery: VoidFunction;\n onMapSelectionUpdate: (update: TileSelectorUpdate) => void;\n}\n\nexport const VexcelModalCore: FC = ({\n availableImages,\n isOpen,\n mapLocation,\n mapStartingSelection,\n onClose,\n onGetImagery,\n onMapSelectionUpdate,\n}) => {\n const { formatDateTime } = useIntl();\n const mapOptions = useMemo(\n () => ({\n center: mapLocation,\n fullscreenControl: false,\n mapTypeId: 'hybrid',\n minZoom: 14,\n rotateControl: false,\n streetViewControl: false,\n tilt: 0,\n zoom: 18,\n }),\n [mapLocation],\n );\n\n const image = availableImages[0];\n if (!image) {\n return null;\n }\n const date = formatDateTime(new Date(image.captureDate!), {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n });\n\n return (\n \n \n \n \n \n \n \n \n Vexcel Imagery & LIDAR\n \n \n Enable high quality aerial images & LIDAR for your site.\n \n \n {}}>\n \n \n \n \n \n aerial imagery & LIDAR elevation\n \n \n \n \n \n Enable\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { FC, useCallback, useMemo, useState } from 'react';\nimport { useCurrentRoute } from 'react-navi';\n\nimport { TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport { GoogleMaps, useAppModule } from '@aurorasolar/common-module-loader';\n\nimport { VexcelModalCore } from './vexcel-modal-core';\nimport { useDownloadVexcel } from './use-download-vexcel';\nimport { VexcelAvailabilityInfo, VexcelAvailabilityType } from '../map-imagery-selector/types';\n\nconst LNG_DISTANCE = 0.00072;\nconst LAT_DISTANCE = 0.00045;\n\nexport interface VexcelModalProps {\n availabilityInfo: VexcelAvailabilityInfo;\n existingImages: { captureDate: string; id: string }[];\n isOpen: boolean;\n onClose: VoidFunction;\n}\n\nexport const VexcelModal: FC = ({\n availabilityInfo,\n existingImages,\n isOpen,\n onClose,\n}) => {\n const google = useAppModule(GoogleMaps);\n\n const { designId, projectId } =\n (useCurrentRoute().data as { designId?: string; projectId?: string }) ?? {};\n\n const [mapSelection, updateMapSelection] = useState();\n\n const downloadVexcel = useDownloadVexcel({\n availability: { dsmLayers: availabilityInfo.dsms, imageLayers: availabilityInfo.images },\n mapSelection,\n });\n\n const onGetImagery = useCallback(async () => {\n onClose();\n\n // Only allow 1 image for MVP\n if (existingImages.length > 0) {\n return undefined;\n }\n if (\n designId == null ||\n projectId == null ||\n availabilityInfo.availability !== VexcelAvailabilityType.AVAILABLE\n ) {\n return console.error('No Vexcel Service Found');\n }\n\n return downloadVexcel();\n }, [downloadVexcel, designId, projectId, onClose, existingImages, availabilityInfo]);\n\n const center = useMemo(() => {\n if (availabilityInfo.location == null) {\n return null;\n }\n const { latitude: lat, longitude: lng } = availabilityInfo.location;\n return { lat, lng };\n }, [availabilityInfo]);\n\n const bounds = useMemo(\n () =>\n google && center\n ? new google.maps.LatLngBounds(\n { lat: center.lat - LAT_DISTANCE, lng: center.lng - LNG_DISTANCE },\n { lat: center.lat + LAT_DISTANCE, lng: center.lng + LNG_DISTANCE },\n )\n : null,\n [center, google],\n );\n\n if (bounds == null || center == null) {\n return null;\n }\n\n return (\n \n );\n};\n","import { useCallback } from 'react';\n\nimport { TileSelectorUpdate } from '@aurorasolar/common-google-map';\nimport {\n CADGeodataService,\n FullGeodataService,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\nimport { VexcelAvailability } from '@aurorasolar/graphql-client-schema';\n\nexport interface DownloadVexcelProps {\n availability: VexcelAvailability;\n mapSelection?: TileSelectorUpdate;\n}\n\nexport const useDownloadVexcel = ({ availability, mapSelection }: DownloadVexcelProps) => {\n const geo = useAppModule(CADGeodataService) as FullGeodataService | undefined;\n return useCallback(() => {\n if (mapSelection == null || availability.imageLayers.length === 0) {\n return;\n }\n\n const { max, min } = mapSelection;\n const vexcelParameters = {\n maxLat: max.lat,\n maxLng: max.lng,\n minLat: min.lat,\n minLng: min.lng,\n vexcelMetadata: {\n dsmDate: availability.dsmLayers[0]?.captureDate,\n dsmLayerName: availability.dsmLayers[0]?.layerName,\n imageDate: availability.imageLayers[0].captureDate,\n imageryLayerName: availability.imageLayers[0].layerName,\n },\n };\n\n geo?.downloadVexcel(vexcelParameters);\n }, [geo, availability, mapSelection]);\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { ModalType } from '@aurorasolar/cad-state';\nimport { NearmapAvailabilityInfo, NearmapModal } from '../nearmap-modal';\nimport { VexcelModal } from '../vexcel-modal/vexcel-modal';\nimport { MapImageryItem } from './map-imagery-selector-item';\nimport { VexcelAvailabilityInfo } from './types';\nimport { useCadState } from '../use-cad';\n\nexport interface MapImageryModalsProps {\n images: { captureDate?: string | null; id: string; source: string }[];\n items: MapImageryItem[];\n nearmapAvailabilityInfo: NearmapAvailabilityInfo;\n onClose: VoidFunction;\n vexcelAvailabilityInfo: VexcelAvailabilityInfo;\n}\n\nexport const MapImageryModals: FC = ({\n images,\n items,\n nearmapAvailabilityInfo,\n onClose,\n vexcelAvailabilityInfo,\n}) => {\n const { activeModal, closeModal } = useCadState((cadState) => {\n return {\n activeModal: cadState?.data.modalData.activeModal ?? ModalType.None,\n closeModal: cadState?.actions.modalActions.closeModal ?? (() => {}),\n };\n });\n\n const vexcelImages = useMemo(\n () => images.filter((i) => i.source === 'vexcel' && !!i.captureDate),\n [images],\n );\n return (\n <>\n \n \n \n );\n};\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon } from '@aurorasolar/common-core/src/icon';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Position, Tooltip } from '@blueprintjs/core';\n\nimport { MapImageryItem } from './map-imagery-selector-item';\n\ninterface MapImagerySectionTitleProps {\n item: MapImageryItem;\n onClick: (event: React.MouseEvent) => void;\n uploadInProgress?: boolean;\n}\n\nconst StyledTitle = styled.li`\n padding: ${SPACES[2]}px ${SPACES[2]}px ${SPACES[0]}px;\n text-transform: capitalize;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n position: relative;\n min-width: 200px;\n\n button {\n background: transparent;\n border: none;\n padding: 4px 6px;\n margin: -4px;\n border-radius: 6px;\n cursor: pointer;\n\n :hover {\n background: ${Colors.GRAY_200};\n }\n }\n &:not(:first-child) {\n border-top: solid 1px transparent;\n padding-bottom: 16px;\n\n /* Horizontal Rule */\n &::before {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n display: block;\n margin: 0 ${SPACES[2]}px;\n border-bottom: solid 1px ${Colors.GRAY_300};\n }\n }\n &:last-child {\n padding: ${SPACES[2]}px ${SPACES[2]}px ${SPACES[2]}px;\n }\n`;\n\nexport const MapImagerySectionTitle: FC = ({\n item,\n onClick,\n uploadInProgress,\n}) => {\n return (\n \n \n {item.label}\n \n {item.titleIcon && item.action && (\n {\n event.stopPropagation();\n onClick(event);\n }}\n type=\"button\"\n >\n {item.tooltip ? (\n \n \n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport * as DS from '@aurorasolar/ds';\nimport { Position, Tooltip } from '@blueprintjs/core';\nimport { Flex } from '@rebass/grid';\n\nexport interface MapImageryItem {\n id: string;\n active?: boolean;\n action?: VoidFunction;\n secondaryAction?: VoidFunction;\n isCustom?: boolean;\n isTitle?: boolean;\n label: string;\n selectedLabel?: string;\n titleIcon?: AuroraIconType;\n isEdited?: boolean;\n finishEditing?: () => void;\n isUploading?: boolean;\n tooltip?: string;\n}\n\nconst StyledImagerySelectItem = styled.li<{\n isSelected: boolean;\n isEdited: boolean;\n isUploading: boolean;\n isMaxImageryTooltipShown: boolean;\n}>`\n color: ${Colors.GRAY_800};\n padding: ${SPACES[1]}px ${SPACES[2]}px ${SPACES[1]}px ${SPACES[4]}px;\n font-size: 12px;\n cursor: ${({ isMaxImageryTooltipShown }) =>\n isMaxImageryTooltipShown ? `not-allowed` : `pointer`};\n ${({ isSelected }) => isSelected && `font-weight: 500`};\n ${({ isEdited, isUploading }) =>\n (isEdited || isUploading) && `background: ${isEdited ? Colors.GRAY_100 : Colors.GRAY_200}`};\n\n .bp3-popover-target {\n display: flex;\n min-width: 200px;\n }\n\n :hover {\n background: ${Colors.GRAY_200};\n }\n\n :active {\n background: ${Colors.GRAY_300};\n }\n\n button {\n background: transparent;\n border: none;\n padding: 4px;\n margin: -4px;\n margin-left: 4px;\n border-radius: 6px;\n cursor: pointer;\n\n :hover {\n background: ${Colors.GRAY_300};\n }\n }\n\n button[disabled] {\n cursor: not-allowed;\n\n :hover {\n background: none;\n }\n }\n\n &:last-child {\n padding-bottom: ${SPACES[2]}px;\n }\n`;\n\nconst ActiveMapLabelContainer = styled(Flex)`\n min-width: 0;\n overflow: hidden;\n`;\n\nconst OverflowText = styled(Text)`\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n`;\n\ninterface MapSelectorItemProps {\n item: MapImageryItem;\n onClick?: (event: React.MouseEvent) => void;\n isMaxImageryReached?: boolean;\n isSelected: boolean;\n uploadInProgress?: boolean;\n}\n\nconst MapImagerySelectorItemEditTestID = 'MapImagerySelectorItemEdit';\nconst MapImagerySelectorItemCheckmarkTestID = 'MapImagerySelectorItemCheckmark';\nconst MapImagerySelectorItemCloseTestID = 'MapImagerySelectorItemClose';\n\nexport const MapImagerySelectorItem = ({\n item,\n onClick,\n isMaxImageryReached,\n isSelected,\n uploadInProgress,\n}: MapSelectorItemProps) => {\n const [isHovered, setHovered] = useState(false);\n const isMaxImageryTooltipShown = !!(\n item.isCustom &&\n isHovered &&\n isMaxImageryReached &&\n !item.active\n );\n const color = uploadInProgress && item.isCustom ? Colors.GRAY_400 : Colors.GRAY_800;\n let secondaryIcon: null | 'checkmark' | 'edit' | 'finish-editing' = null;\n if (item.isEdited && isHovered) {\n secondaryIcon = 'finish-editing';\n } else if (item.secondaryAction && isHovered) {\n secondaryIcon = 'edit';\n } else if (isSelected) {\n secondaryIcon = 'checkmark';\n }\n return (\n \n {\n if (uploadInProgress && item.isCustom) {\n return;\n }\n onClick?.(event);\n }\n }\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n \n \n \n {item.label?.replace(/ /g, '\\u00A0')}\n \n {secondaryIcon === 'checkmark' && (\n \n \n \n )}\n {secondaryIcon === 'edit' && (\n {\n e.stopPropagation();\n item.secondaryAction?.();\n }}\n type=\"button\"\n >\n \n \n )}\n {secondaryIcon === 'finish-editing' && (\n {\n e.stopPropagation();\n if (item.finishEditing) {\n item.finishEditing();\n }\n }}\n type=\"button\"\n >\n \n \n )}\n \n \n \n \n );\n};\n","import React, { FC, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport * as DS from '@aurorasolar/ds';\nimport { CadModal } from '@aurorasolar/graphql-client-schema';\nimport { ButtonGroup, Popover, PopoverInteractionKind, PopoverPosition } from '@blueprintjs/core';\nimport { x } from '@xstyled/styled-components';\n\nimport { FeatureFlag, FeatureFlags, useAppModule } from '@aurorasolar/common-module-loader';\nimport { useCadModal } from '../cad-modals';\nimport { CadScreenButton } from '../cad-screen-button/cad-screen-button';\nimport { MapImagerySectionTitle } from './map-imagery-section-title';\nimport { MapImageryItem, MapImagerySelectorItem } from './map-imagery-selector-item';\n\nconst MapSelectorList = styled.ul`\n list-style-type: none;\n padding: 0;\n margin: 0;\n max-width: 290px;\n border-radius: 5px;\n overflow: hidden;\n`;\n\ninterface MapImagerySelectorCoreProps {\n isActive: boolean;\n isMaxImageryReached?: boolean;\n isMenuToggleButtonSelected?: boolean;\n items: MapImageryItem[];\n onFinishEditing?: () => void;\n selectedId?: string;\n setIsMenuToggleButtonSelected?: React.Dispatch>;\n toggleMap: () => void;\n uploadInProgress?: boolean;\n useDS?: boolean;\n}\n\nconst OldMapSelectorButtonWrap = styled(ButtonGroup)`\n position: relative;\n margin-right: ${SPACES[0]}px;\n max-width: 290px;\n max-height: 30px;\n\n * {\n overflow: hidden;\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nconst DSMapSelectorButtonWrap = styled(DS.ButtonGroup).attrs({\n boxShadow: 3,\n})`\n gap: 1px;\n`;\n\nconst CustomDSButton = styled(DS.Button)`\n background-color: 'uiBg';\n max-width: 280px;\n :hover {\n background-color: 'gray-200';\n }\n &[aria-pressed='true'] {\n background-color: 'gray-300';\n }\n`;\n\nexport const TOGGLE_MAP_IMAGERY_TESTID = 'toggle-map-imagery';\nexport const MAP_IMAGERY_SELECT_BUTTON_TESTID = 'map-imagery-select-button';\nconst MAP_IMAGERY_RESIZE_BUTTON_TESTID = 'map-imagery-resize-button';\n\nexport const MapImagerySelectorCore = ({\n isActive,\n isMaxImageryReached,\n isMenuToggleButtonSelected,\n items,\n setIsMenuToggleButtonSelected = () => {},\n toggleMap,\n uploadInProgress,\n useDS = false,\n}: MapImagerySelectorCoreProps) => {\n const disabledMapResizing = (selectedItem: MapImageryItem[]) => {\n const disabledMaps: string[] = [];\n selectedItem.forEach((item) => {\n if (\n item.label.toLowerCase().includes('nearmap') ||\n item.label.toLowerCase().includes('custom') ||\n item.label.toLowerCase().includes('vexcel')\n ) {\n disabledMaps.push(item.label);\n }\n if (\n item.selectedLabel &&\n (item.selectedLabel.toLowerCase().includes('vexcel') ||\n item.selectedLabel.toLowerCase().includes('custom') ||\n item.selectedLabel.toLowerCase().includes('nearmap'))\n ) {\n disabledMaps.push(item.selectedLabel.slice(0, item.selectedLabel.indexOf(':')));\n }\n });\n return disabledMaps;\n };\n\n const { title, isMapResizeDisabled, mapResizeTooltipCopy } = useMemo((): {\n title: string;\n isMapResizeDisabled: boolean;\n mapResizeTooltipCopy: string;\n } => {\n const selectedItem = items.filter(({ active }) => active);\n const disabled = disabledMapResizing(selectedItem);\n if (selectedItem.length === 0) {\n return {\n isMapResizeDisabled: true,\n mapResizeTooltipCopy: 'Select a map before resizing',\n title: 'No map selected',\n };\n }\n if (selectedItem.length > 1) {\n return {\n isMapResizeDisabled: disabled.length === selectedItem.length,\n mapResizeTooltipCopy:\n disabled.length === selectedItem.length\n ? `Resizing not available for ${disabled.join(' or ')} images`\n : 'Resize Map',\n title: `${selectedItem.length} maps selected`,\n };\n }\n return {\n isMapResizeDisabled: disabled.length > 0,\n mapResizeTooltipCopy:\n disabled.length > 0 ? `Resizing not available for ${disabled[0]} images` : 'Resize Map',\n title: selectedItem[0]?.selectedLabel || selectedItem[0]?.label || 'No map selected',\n };\n }, [items]);\n const [activeModal, setActiveModal] = useCadModal();\n const featureFlags = useAppModule(FeatureFlags);\n\n const hasMapResizeFF = featureFlags?.variation(FeatureFlag.HideMapExpansion);\n const MapSelectorButtonWrap = (useDS ? DSMapSelectorButtonWrap : OldMapSelectorButtonWrap) as FC;\n return (\n \n {!useDS ? (\n \n ) : (\n <>\n )}\n setIsMenuToggleButtonSelected(false)}\n onOpening={() => setIsMenuToggleButtonSelected(true)}\n position={PopoverPosition.TOP_LEFT}\n >\n {!useDS ? (\n \n ) : (\n \n setIsMenuToggleButtonSelected(!isMenuToggleButtonSelected)}\n pressed={isMenuToggleButtonSelected}\n pressedIcon={DS.IconMapFill}\n variant=\"ghost\"\n >\n {title}\n {isMenuToggleButtonSelected ? (\n \n ) : (\n \n )}\n \n \n )}\n \n {items.map((item) =>\n item.isTitle ? (\n {})}\n uploadInProgress={uploadInProgress}\n />\n ) : (\n \n ),\n )}\n \n \n {!useDS ? (\n <>\n ) : (\n <>\n \n \n }\n preferredAlignment=\"N\"\n >\n {isActive ? 'Hide map' : 'Show map'}\n \n \n \n setActiveModal(CadModal.ImageryExpansion)}\n data-testid={MAP_IMAGERY_RESIZE_BUTTON_TESTID}\n disabled={!!hasMapResizeFF && isMapResizeDisabled}\n icon={DS.IconResizeCanvas}\n pressed={activeModal === CadModal.ImageryExpansion}\n pressedIcon={DS.IconResizeCanvasFill}\n variant=\"ghost\"\n />\n }\n preferredAlignment=\"N\"\n >\n {hasMapResizeFF && mapResizeTooltipCopy}\n \n \n \n )}\n \n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type MapSelectionFragment = { __typename: 'OrthoImage', id: string, source: Types.OrthoImageSource, active: boolean, name: string, captureDate?: string | null | undefined, resource?: { __typename: 'GeodataResource', id?: string | null | undefined } | null | undefined };\n\nexport type MapImageryItemsQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type MapImageryItemsQuery = { __typename: 'Query', design: { __typename: 'Design', id: string, project: { __typename: 'Project', id: string, orthoImages: Array<{ __typename: 'OrthoImage', id: string, source: Types.OrthoImageSource, active: boolean, name: string, captureDate?: string | null | undefined, resource?: { __typename: 'GeodataResource', id?: string | null | undefined } | null | undefined }> } } };\n\nexport type ImageryVisibilityQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type ImageryVisibilityQuery = { __typename: 'Query', CAD: { __typename: 'CAD', viewSettings: { __typename: 'ViewSettings', design3d?: { __typename: 'ViewPortViewSettings', mapImagery?: boolean | null | undefined } | null | undefined } } };\n\nexport const MapSelectionFragmentDoc = gql`\n fragment MapSelection on OrthoImage {\n id\n source\n active\n name\n captureDate\n resource {\n id\n }\n}\n `;\nexport const MapImageryItemsDocument = gql`\n query MapImageryItems($designId: ID!) @trace_info(traceInfo: {pod: cad}) {\n design: designById(id: $designId) {\n id\n project {\n id\n orthoImages {\n ...MapSelection\n }\n }\n }\n}\n ${MapSelectionFragmentDoc}`;\n\n/**\n * __useMapImageryItemsQuery__\n *\n * To run a query within a React component, call `useMapImageryItemsQuery` and pass it any options that fit your needs.\n * When your component renders, `useMapImageryItemsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useMapImageryItemsQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useMapImageryItemsQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(MapImageryItemsDocument, options);\n }\nexport function useMapImageryItemsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(MapImageryItemsDocument, options);\n }\nexport type MapImageryItemsQueryHookResult = ReturnType;\nexport type MapImageryItemsLazyQueryHookResult = ReturnType;\nexport type MapImageryItemsQueryResult = Apollo.QueryResult;\nexport const ImageryVisibilityDocument = gql`\n query ImageryVisibility @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n viewSettings {\n design3d {\n mapImagery\n }\n }\n }\n}\n `;\n\n/**\n * __useImageryVisibilityQuery__\n *\n * To run a query within a React component, call `useImageryVisibilityQuery` and pass it any options that fit your needs.\n * When your component renders, `useImageryVisibilityQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useImageryVisibilityQuery({\n * variables: {\n * },\n * });\n */\nexport function useImageryVisibilityQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(ImageryVisibilityDocument, options);\n }\nexport function useImageryVisibilityLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(ImageryVisibilityDocument, options);\n }\nexport type ImageryVisibilityQueryHookResult = ReturnType;\nexport type ImageryVisibilityLazyQueryHookResult = ReturnType;\nexport type ImageryVisibilityQueryResult = Apollo.QueryResult;","import { useMemo } from 'react';\n\nimport { AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { CADTriggerActionProps, CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { OrthoImageSource } from '@aurorasolar/graphql-client-schema';\nimport { useIntl } from '@aurorasolar/intl';\n\nimport { useInspectorState, useTriggerCadAction } from '../hooks';\nimport { useCadModeQuery } from '../hooks/hooks.generated';\nimport { getDeepestMode } from '../mode-logical-operators';\nimport { NearmapAvailabilityType } from '../nearmap-modal';\nimport { MapImageryItem } from './map-imagery-selector-item';\nimport {\n MapImageryItemActionProps,\n MapImageryTitleAction,\n OrthoImage,\n VexcelAvailabilityType,\n} from './types';\n\ntype SelectItem = (props: MapImageryItemActionProps) => void;\ntype TitleAction = (actionType: MapImageryTitleAction) => void;\n\nexport interface MapImageryItemsProps {\n images: OrthoImage[];\n nearmapAvailability: NearmapAvailabilityType;\n vexcelAvailability: VexcelAvailabilityType;\n onTitleAction: TitleAction;\n selectItem: SelectItem;\n uploadedFileNames: string[];\n uploadInProgress: boolean;\n}\n\nconst getStandardItems = (images: OrthoImage[], selectItem: SelectItem) => {\n const google = images.find((image) => image.source === OrthoImageSource.Google);\n const sunroof = images.find((image) => image.source === OrthoImageSource.Sunroof);\n\n const items: MapImageryItem[] = [\n {\n id: 'standard title',\n isTitle: true,\n label: 'Standard',\n },\n ];\n\n if (google?.id != null) {\n items.push({\n action: () => selectItem(google),\n active: google.active,\n id: google.id,\n label: 'Google Maps',\n });\n }\n\n items.push({\n action: sunroof?.id\n ? () => selectItem(sunroof)\n : () => selectItem({ source: OrthoImageSource.Sunroof }),\n active: !!sunroof?.id && sunroof.active,\n id: sunroof?.id ?? 'null',\n label: 'Google Maps HD',\n });\n\n const bing = images.find((image) => image.source === OrthoImageSource.Bing);\n const label = 'Bing Maps';\n items.push({\n action:\n bing?.id == null\n ? () => selectItem({ source: OrthoImageSource.Bing })\n : () => selectItem(bing),\n active: !!bing?.id && bing.active,\n id: bing?.id ?? 'null',\n label,\n });\n\n return items;\n};\n\nconst getNearmapItems = (\n images: OrthoImage[],\n nearmapAvailability: NearmapAvailabilityType,\n selectItem: SelectItem,\n onTitleAction: TitleAction,\n): MapImageryItem[] => [\n {\n action: () => onTitleAction(MapImageryTitleAction.Nearmap),\n id: 'nearmap title',\n isTitle: true,\n label: 'Nearmap',\n titleIcon:\n nearmapAvailability === NearmapAvailabilityType.NO_IMAGERY\n ? AuroraIconType.CHEVRON_RIGHT\n : AuroraIconType.PLUS,\n },\n ...images\n .filter(\n (image) =>\n (image?.source === OrthoImageSource.Nearmap ||\n image?.source === OrthoImageSource.NearmapTrueOrtho) &&\n image?.id != null,\n )\n .sort((imageA, imageB) => {\n const getDate = (image: OrthoImage) => {\n if (image.name === 'Nearmap Pending') return -1;\n return Number(new Date(image.name.split('Nearmap ')[1].split(/\\s*\\(True Ortho\\)/i)[0]));\n };\n\n return getDate(imageB) - getDate(imageA);\n })\n .map((image) => {\n if (image.name === 'Nearmap Pending') {\n return {\n action: () => selectItem(image),\n active: image.active,\n id: image.id,\n label: image.name,\n selectedLabel: image.name,\n };\n }\n const trueOrtho = image?.source === OrthoImageSource.NearmapTrueOrtho ? ' (True Ortho)' : '';\n const label = image.name\n .split('Nearmap ')[1]\n .split(/\\s*\\(True Ortho\\)/i)[0]\n .replace(/$/, trueOrtho);\n const [month, year = ''] = label.split(', ');\n return {\n action: () => selectItem(image),\n active: image.active,\n id: image.id,\n label,\n selectedLabel: `Nearmap: ${month}, ${year.substring(2, 4)}${trueOrtho}`,\n };\n }),\n];\n\nconst getVexcelItems = (\n images: OrthoImage[],\n vexcelAvailability: VexcelAvailabilityType,\n selectItem: SelectItem,\n onTitleAction: TitleAction,\n formatDateTime: ReturnType['formatDateTime'],\n): MapImageryItem[] => [\n {\n action: () => onTitleAction(MapImageryTitleAction.Vexcel),\n id: 'vexcel title',\n isTitle: true,\n label:\n vexcelAvailability === VexcelAvailabilityType.NO_IMAGERY ? 'Vexcel (unavailable)' : 'Vexcel',\n titleIcon:\n vexcelAvailability === VexcelAvailabilityType.AVAILABLE &&\n !images.find((i) => i.source === OrthoImageSource.Vexcel)\n ? AuroraIconType.PLUS\n : undefined,\n },\n ...images\n .filter((image) => image?.source === OrthoImageSource.Vexcel && image?.id != null)\n .map((image) => {\n if (image.name === 'Vexcel Pending') {\n return {\n action: () => selectItem(image),\n active: image.active,\n id: image.id,\n label: image.name,\n selectedLabel: image.name,\n };\n }\n const label = formatDateTime(new Date(image.captureDate!), {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n });\n const shortLabel = formatDateTime(new Date(image.captureDate!), {\n day: 'numeric',\n month: 'short',\n year: '2-digit',\n });\n\n return {\n action: () => selectItem(image),\n active: image.active,\n id: image.id,\n label,\n selectedLabel: `Vexcel: ${shortLabel}`,\n };\n }),\n];\n\nconst getCustomItems = (\n images: OrthoImage[],\n selectItem: SelectItem,\n onTitleAction: TitleAction,\n editItem: (item: CADTriggerActionProps[CADTriggerActionTypes.EditOrthoImage]) => void,\n editedId: string | null,\n finishEditing: () => void,\n): MapImageryItem[] => [\n {\n action: () => onTitleAction(MapImageryTitleAction.Custom),\n id: 'custom title',\n isTitle: true,\n label: 'Custom',\n titleIcon: AuroraIconType.PLUS,\n },\n ...images\n .filter((image) => image.source === OrthoImageSource.Custom && image.id != null)\n .map((image) => ({\n action: () => selectItem(image),\n active: image.active,\n finishEditing: editedId && editedId === image.id ? finishEditing : undefined,\n id: image.id,\n isCustom: true,\n isEdited: !!(editedId && editedId === image.id),\n label: image.name,\n secondaryAction: () => {\n if (!image.active) {\n selectItem(image);\n }\n editItem({ orthoImage: { id: image.id } });\n },\n selectedLabel: `Custom: ${image.name}`,\n })),\n];\n\nexport const useMapImageryItems = ({\n images,\n nearmapAvailability,\n onTitleAction,\n selectItem,\n uploadedFileNames,\n uploadInProgress,\n vexcelAvailability,\n}: MapImageryItemsProps) => {\n const { formatDateTime } = useIntl();\n\n const editCustomImage = useTriggerCadAction(CADTriggerActionTypes.EditOrthoImage);\n const finishEditing = useTriggerCadAction(CADTriggerActionTypes.ExitMode);\n const [inspectedImage] = useInspectorState('orthoImageEditor');\n const mode = getDeepestMode(\n useCadModeQuery({\n returnPartialData: true,\n }).data?.CAD?.mode ?? '',\n );\n const editedId =\n mode === 'ortho-image-editing' && inspectedImage.sourceId ? inspectedImage.sourceId : null;\n\n const items = useMemo(() => {\n const imageryItems: MapImageryItem[] = getStandardItems(images, selectItem);\n\n if (\n ![NearmapAvailabilityType.LOADING, NearmapAvailabilityType.NO_SERVICE].includes(\n nearmapAvailability,\n )\n ) {\n imageryItems.push(...getNearmapItems(images, nearmapAvailability, selectItem, onTitleAction));\n }\n if (\n ![VexcelAvailabilityType.LOADING, VexcelAvailabilityType.NO_SERVICE].includes(\n vexcelAvailability,\n )\n ) {\n imageryItems.push(\n ...getVexcelItems(images, vexcelAvailability, selectItem, onTitleAction, formatDateTime),\n );\n }\n\n imageryItems.push(\n ...getCustomItems(\n images,\n selectItem,\n onTitleAction,\n editCustomImage,\n editedId,\n finishEditing,\n ),\n );\n if (uploadInProgress) {\n imageryItems.push(\n ...uploadedFileNames.map((fileName) => ({\n id: '',\n isCustom: true,\n isTitle: false,\n isUploading: true,\n label: fileName,\n secondaryAction: () => {},\n })),\n );\n }\n\n return imageryItems;\n }, [\n editCustomImage,\n editedId,\n finishEditing,\n formatDateTime,\n images,\n nearmapAvailability,\n vexcelAvailability,\n onTitleAction,\n selectItem,\n uploadedFileNames,\n uploadInProgress,\n ]);\n\n return {\n activeId: items.find((image) => image.active && !image.isCustom)?.id,\n items,\n };\n};\n","import { useEffect, useState } from 'react';\nimport { useCurrentRoute } from 'react-navi';\n\nimport { useStartAsyncJobMutation } from '@aurorasolar/common-data-access-layer';\nimport { AsyncJobType, NearmapAvailability } from '@aurorasolar/graphql-client-schema';\n\nimport { NearmapAvailabilityInfo, NearmapAvailabilityType } from '../nearmap-modal';\nimport { useNearmapAvailabilityInfoQuery } from './use-nearmap-availability.generated';\n\nexport const useNearmapAvailabilityInfo = ({ skip }: { skip?: boolean } = {}) => {\n const [availability, setAvailability] = useState({\n availability: NearmapAvailabilityType.LOADING,\n images: [],\n });\n const { designId } = (useCurrentRoute().data as { designId?: string }) ?? {};\n\n const [startAsyncJob] = useStartAsyncJobMutation();\n\n const { data } = useNearmapAvailabilityInfoQuery({\n skip: designId == null || skip,\n variables: { designId: designId ?? '' },\n });\n\n useEffect(() => {\n const { design, nearmapService } = data ?? {};\n if (nearmapService == null || design?.latitude == null || design?.longitude == null) {\n setAvailability({\n availability: NearmapAvailabilityType.NO_SERVICE,\n images: [],\n });\n return;\n }\n const runNearmapAvailabilityJob = async () => {\n const location = {\n latitude: design.latitude,\n longitude: design.longitude,\n };\n const result = await startAsyncJob({\n variables: {\n settings: location,\n type: AsyncJobType.NearmapAvailability,\n },\n });\n const images = (result.data?.startAsyncJob as NearmapAvailability)?.dates ?? [];\n setAvailability({\n apiKey: nearmapService.setting?.credentials?.id ?? undefined,\n availability:\n images.length > 0\n ? NearmapAvailabilityType.AVAILABLE\n : NearmapAvailabilityType.NO_IMAGERY,\n images,\n location,\n remainingCredits: nearmapService.remainingCredits ?? undefined,\n serviceId: nearmapService.id,\n });\n };\n runNearmapAvailabilityJob();\n }, [data, startAsyncJob]);\n\n return availability;\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GetUploadInfoMutationVariables = Types.Exact<{\n projectId: Types.Scalars['ID'];\n input: Types.OrthoImageUpload;\n}>;\n\n\nexport type GetUploadInfoMutation = { __typename: 'Mutation', uploadOrthoImage: { __typename: 'OrthoImageUploadUrl', id: string, url: string } };\n\n\nexport const GetUploadInfoDocument = gql`\n mutation GetUploadInfo($projectId: ID!, $input: OrthoImageUpload!) @trace_info(traceInfo: {pod: cad}) {\n uploadOrthoImage(projectId: $projectId, input: $input) {\n id\n url\n }\n}\n `;\nexport type GetUploadInfoMutationFn = Apollo.MutationFunction;\n\n/**\n * __useGetUploadInfoMutation__\n *\n * To run a mutation, you first call `useGetUploadInfoMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useGetUploadInfoMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [getUploadInfoMutation, { data, loading, error }] = useGetUploadInfoMutation({\n * variables: {\n * projectId: // value for 'projectId'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useGetUploadInfoMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(GetUploadInfoDocument, options);\n }\nexport type GetUploadInfoMutationHookResult = ReturnType;\nexport type GetUploadInfoMutationResult = Apollo.MutationResult;\nexport type GetUploadInfoMutationOptions = Apollo.BaseMutationOptions;","import { useCallback, useState } from 'react';\n\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport {\n CADGeodataService,\n FullGeodataService,\n Notification,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\nimport {\n createInfoNotification,\n TOAST_CHANNEL,\n useNotifications,\n} from '@aurorasolar/common-notifications';\n\nimport { useTriggerCadAction } from '../hooks';\nimport { MAX_CUSTOM_IMAGERY_MESSAGE } from './constants';\nimport { useGetUploadInfoMutation } from './use-upload-custom-images.generated';\n\nconst getImageDimensions = (file: File) =>\n new Promise<{ height: number; width: number }>((resolve) => {\n const image = new Image();\n const objectUrl = URL.createObjectURL(file);\n\n image.addEventListener('load', () => {\n URL.revokeObjectURL(objectUrl);\n resolve({ height: image.height, width: image.width });\n });\n\n image.src = objectUrl;\n });\n\nconst requestFilesFromUser = ({\n allowMultiple,\n allowedTypes,\n}: {\n allowMultiple?: boolean;\n allowedTypes: string;\n}) =>\n new Promise((resolve) => {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('multiple', `${!!allowMultiple}`);\n input.setAttribute('accept', allowedTypes);\n\n const collectFiles = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const files = target.files ? Array.from(target.files) : [];\n document.body.removeEventListener('click', removeEventListenersAndExit);\n input.removeEventListener('input', collectFiles);\n resolve(files);\n };\n\n const removeEventListenersAndExit = () => {\n document.body.removeEventListener('click', removeEventListenersAndExit);\n input.removeEventListener('input', collectFiles);\n resolve([]);\n };\n\n input.addEventListener('input', collectFiles);\n\n /*\n There is not way to detect that a user clicked \"cancel\" on the file upload menu.\n So we can resolve the promise with no files selected if we detect\n a click on the document body.\n */\n document.body.addEventListener('click', removeEventListenersAndExit);\n\n input.click();\n });\n\nconst uploadToS3 = (url: string, file: File) =>\n fetch(url, {\n body: file,\n headers: {\n 'Content-Type': file.type,\n },\n method: 'PUT',\n mode: 'cors',\n });\n\nexport const useUploadCustomImages = ({\n projectId,\n allowMultiple,\n isMaxImageryReached,\n}: {\n projectId: string;\n allowMultiple?: boolean;\n isMaxImageryReached: boolean;\n}) => {\n const [getUploadInfo] = useGetUploadInfoMutation();\n const geodataService = useAppModule(CADGeodataService) as FullGeodataService | undefined;\n const notify = useNotifications(TOAST_CHANNEL);\n const startImageEditMode = useTriggerCadAction(CADTriggerActionTypes.EditOrthoImage);\n const [uploadInProgress, setUploadInProgress] = useState(false);\n const [fileNames, setFileNames] = useState([]);\n\n const uploadImage = useCallback(async () => {\n try {\n const files = await requestFilesFromUser({\n allowedTypes: 'image/jpeg,image/png,image/gif,image/tiff',\n allowMultiple,\n });\n\n if (files.length === 0) {\n return; // no images were selected\n }\n\n setUploadInProgress(true);\n setFileNames(files.map((file) => file.name.replace(/\\.[^.]*$/, '')));\n\n const uploadRequests = files.map(async (file) => {\n const uploadInfo = await getUploadInfo({\n variables: {\n input: {\n active: !isMaxImageryReached,\n filename: file.name,\n filetype: file.type,\n ...(await getImageDimensions(file)),\n },\n projectId,\n },\n }).then(({ data }) => data?.uploadOrthoImage);\n\n if (uploadInfo?.id == null || uploadInfo?.url == null) {\n return undefined; // upload information request failed\n }\n\n await uploadToS3(uploadInfo.url, file);\n\n return uploadInfo.id;\n });\n\n const messageId = notify.push?.({\n dismissType: Notification.DismissType.STATE,\n estimatedCompletion: { durationSeconds: 3, startTimestamp: Date.now() },\n message: 'Uploading custom map imagery',\n messageType: Notification.MessageType.PROGRESS,\n });\n\n const firstImageId = await Promise.all(uploadRequests).then(\n (ids) => ids.filter((id) => id != null)[0],\n );\n\n notify.dismiss?.(messageId!);\n\n if (isMaxImageryReached) {\n notify.push?.(createInfoNotification(MAX_CUSTOM_IMAGERY_MESSAGE));\n }\n\n if (firstImageId == null) {\n setUploadInProgress(false);\n setFileNames([]);\n return; // no images were uploaded\n }\n\n await geodataService?.refetchImagery();\n\n startImageEditMode({ orthoImage: { id: firstImageId } });\n setUploadInProgress(false);\n setFileNames([]);\n } catch (err) {\n setUploadInProgress(false);\n setFileNames([]);\n throw err;\n }\n }, [\n isMaxImageryReached,\n getUploadInfo,\n projectId,\n startImageEditMode,\n geodataService,\n allowMultiple,\n notify,\n setFileNames,\n ]);\n\n return { fileNames, uploadImage, uploadInProgress };\n};\n","import React, { useCallback, useMemo, useState } from 'react';\n\nimport { FlatButton } from '@aurorasolar/common-core/src/button';\nimport { ErrorMessage, Loader } from '@aurorasolar/common-core/src/loader';\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport {\n CADGeodataService,\n FullGeodataService,\n Notifications,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\nimport { createInfoNotification, TOAST_CHANNEL } from '@aurorasolar/common-notifications';\nimport * as DS from '@aurorasolar/ds';\nimport { OrthoImageSource } from '@aurorasolar/graphql-client-schema';\n\nimport { ModalType } from '@aurorasolar/cad-state';\nimport { useInspectorState, useTriggerCadAction } from '../hooks';\nimport { MAX_CUSTOM_IMAGE_COUNT, MAX_CUSTOM_IMAGERY_MESSAGE } from './constants';\nimport { MapImageryModals } from './map-imagery-modals';\nimport { MapImagerySelectorCore } from './map-imagery-selector-core';\nimport {\n MapImageryItemsQuery,\n useImageryVisibilityQuery,\n useMapImageryItemsQuery,\n} from './map-imagery-selector.generated';\nimport { MapImageryItemActionProps, MapImageryTitleAction, OrthoImage } from './types';\nimport { useMapImageryItems } from './use-map-imagery-items';\nimport { useNearmapAvailabilityInfo } from './use-nearmap-availability';\nimport { useUploadCustomImages } from './use-upload-custom-images';\nimport { useVexcelAvailabilityInfo } from './use-vexcel-availability';\nimport { useCadState } from '../use-cad';\n\ninterface MapImagerySelectorProps {\n designId: string;\n projectId: string;\n useDS?: boolean;\n}\n\nfunction groupImages(images: MapImageryItemsQuery['design']['project']['orthoImages']) {\n const providerImages: OrthoImage[] = [];\n const customImages: OrthoImage[] = [];\n images.forEach((image) => {\n if (!image) {\n return;\n }\n if (image.source === OrthoImageSource.Custom) {\n customImages.push(image);\n } else {\n providerImages.push(image);\n }\n });\n return { customImages, providerImages };\n}\n\nfunction orderCustomImagesByName(images: OrthoImage[]): OrthoImage[] {\n return [...images].sort((image1, image2) => {\n if (image1.name < image2.name) {\n return -1;\n }\n if (image1.name > image2.name) {\n return 1;\n }\n return 0;\n });\n}\n\nexport const MapImagerySelector = ({\n designId,\n projectId,\n useDS = false,\n}: MapImagerySelectorProps) => {\n const [isMenuToggleButtonSelected, setIsMenuToggleButtonSelected] = useState(false);\n const { data, loading, error } = useMapImageryItemsQuery({ variables: { designId } });\n const { data: visibilityButton } = useImageryVisibilityQuery({\n returnPartialData: true,\n });\n const exitMode = useTriggerCadAction(CADTriggerActionTypes.ExitMode);\n const [inspectedImage] = useInspectorState('orthoImageEditor');\n\n const images = useMemo(() => {\n const { customImages, providerImages } = groupImages(data?.design?.project?.orthoImages || []);\n return [...providerImages, ...orderCustomImagesByName(customImages)];\n }, [data]);\n\n const notifications = useAppModule(Notifications);\n const toasts = notifications?.getChannel(TOAST_CHANNEL);\n\n const geodataService = useAppModule(CADGeodataService) as FullGeodataService | undefined;\n\n const { openModal } = useCadState((cadState) => {\n return {\n activeModal: cadState?.data.modalData.activeModal ?? ModalType.None,\n openModal: cadState?.actions.modalActions.openModal ?? (() => {}),\n };\n });\n\n const isMaxImageryReached =\n images.filter((item) => item.active && item.source === OrthoImageSource.Custom).length >=\n MAX_CUSTOM_IMAGE_COUNT;\n\n const {\n fileNames: uploadedFileNames,\n uploadImage,\n uploadInProgress,\n } = useUploadCustomImages({\n allowMultiple: false,\n isMaxImageryReached,\n projectId,\n });\n\n const nearmapAvailabilityInfo = useNearmapAvailabilityInfo() ?? [];\n const vexcelAvailabilityInfo = useVexcelAvailabilityInfo() ?? [];\n\n const onTitleAction = useCallback(\n (actionType: MapImageryTitleAction) => {\n if (actionType === MapImageryTitleAction.Nearmap) {\n openModal(ModalType.Nearmap);\n } else if (actionType === MapImageryTitleAction.Vexcel) {\n openModal(ModalType.Vexcel);\n } else {\n openModal(ModalType.None);\n }\n if (actionType === MapImageryTitleAction.Custom) {\n uploadImage();\n }\n },\n [openModal, uploadImage],\n );\n\n const isImageryVisible = !!visibilityButton?.CAD?.viewSettings?.design3d?.mapImagery;\n const toggleMapVisibility = useTriggerCadAction(CADTriggerActionTypes.SetVisibility, {\n mapImagery: !isImageryVisible,\n });\n\n const toggleImage = async (image: MapImageryItemActionProps) => {\n if (!('id' in image)) {\n if (image.source === OrthoImageSource.Bing) {\n await geodataService?.downloadBing();\n } else if (image.source === OrthoImageSource.Sunroof) {\n await geodataService?.downloadSunroof();\n }\n } else if (image.source === OrthoImageSource.Custom) {\n if (!image.active && isMaxImageryReached) {\n toasts?.push(createInfoNotification(MAX_CUSTOM_IMAGERY_MESSAGE));\n } else {\n // If edited image is getting untoggled, we should cancel the edit mode\n if (image.active && inspectedImage.sourceId === image.id) {\n exitMode();\n }\n await geodataService?.updateOrthoImage(image.id, { active: !image.active });\n }\n } else if (\n image.source === OrthoImageSource.Nearmap ||\n image.source === OrthoImageSource.NearmapTrueOrtho\n ) {\n await geodataService?.toggleNearmapImage(image.id);\n } else {\n await geodataService?.toggleSyncImage(image.source);\n }\n };\n\n const { items, activeId } = useMapImageryItems({\n images,\n nearmapAvailability: nearmapAvailabilityInfo.availability,\n onTitleAction,\n selectItem: toggleImage,\n uploadedFileNames,\n uploadInProgress,\n vexcelAvailability: vexcelAvailabilityInfo.availability,\n });\n\n if (loading) {\n return useDS ? (\n \n ) : (\n \n \n \n );\n }\n\n if (error) {\n return useDS ? (\n {error} \n ) : (\n \n \n \n );\n }\n\n return (\n <>\n openModal(ModalType.None)}\n vexcelAvailabilityInfo={vexcelAvailabilityInfo}\n />\n \n \n );\n};\n","import React, { FC } from 'react';\n\nimport { AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { AnalyticsEventTypes } from '@aurorasolar/common-module-loader';\n\nimport { CadScreenButton } from '../cad-screen-button/cad-screen-button';\nimport { useTriggerCadAction } from '../hooks';\nimport { useAnalytics } from '../hooks/use-analytics';\nimport { useViewSettingsToggleQuery } from '../view-setting-toggle/view-settings-toggle.generated';\n\nexport const SunpathControl: FC = () => {\n const track = useAnalytics();\n const { data } = useViewSettingsToggleQuery({\n returnPartialData: true,\n });\n const visible = data?.CAD.viewSettings.design3d?.sunpath;\n const setVisibility = useTriggerCadAction(CADTriggerActionTypes.SetVisibility, {});\n const actionParams = { v2: true };\n const select = useTriggerCadAction(CADTriggerActionTypes.SelectSunAnimation, actionParams);\n\n const toggle = () => {\n track(AnalyticsEventTypes.DesignClickedSunPath);\n if (visible) {\n setVisibility({ sunpath: false });\n } else {\n select();\n }\n };\n\n return ;\n};\n","import React, { FC, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { MaxHeightFlex, SPACES } from '@aurorasolar/common-core/src/layout';\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { AnalyticsEventTypes } from '@aurorasolar/common-module-loader';\nimport { ProjectType } from '@aurorasolar/graphql-client-schema';\nimport { Flex } from '@rebass/grid';\n\nimport { CadModeToolbar } from './cad-mode-toolbar/cad-mode-toolbar';\nimport { useCadOverlayQuery } from './cad-overlay.generated';\nimport { CadScreenButton } from './cad-screen-button/cad-screen-button';\nimport { CadToast } from './cad-toast';\nimport { CadTooltips } from './cad-tooltips';\nimport { CadPanButton } from './camera-controls/pan-button';\nimport { CadZoomButton } from './camera-controls/zoom-button';\nimport { useTriggerCadAction } from './hooks';\nimport { useGetProjectDataQuery } from './hooks/hooks.generated';\nimport { useAnalytics } from './hooks/use-analytics';\nimport { InspectorTabs, MINIMUM_TAB_WRAPPER_WIDTH } from './inspector/inspector-tabs';\nimport { InstrumentsPanel } from './instruments-panel/instruments-panel';\nimport { IrradianceInspector } from './irradiance-inspector';\nimport { MapImagerySelector } from './map-imagery-selector';\nimport { ExpandImageryButton } from './standard-imagery-modal';\nimport { SunpathControl } from './sunpath-control/sunpath-control';\n\nconst IrradianceAndTabWrapper = styled(Flex).attrs({\n alignItems: 'flex-start',\n flexDirection: 'row-reverse',\n mr: -6,\n})`\n /* This prevents the tab shadow from being cast on the inspectors */\n overflow: hidden;\n\n /* This allows the rest of the tab shadow to be visible */\n min-width: ${MINIMUM_TAB_WRAPPER_WIDTH}px;\n gap: ${SPACES[4]}px;\n`;\n\ninterface CadOverlayProps {\n designId: string;\n projectId: string;\n isCadAvailable: boolean;\n}\n\nexport const CadOverlay: FC = ({ designId, projectId, isCadAvailable }) => {\n const track = useAnalytics();\n const { mapView, streetView } =\n useCadOverlayQuery({\n returnPartialData: true,\n }).data?.CAD?.viewSettings.design3d ?? {};\n const drawRuler = useTriggerCadAction(CADTriggerActionTypes.DrawRuler);\n const toggleSplitview = useTriggerCadAction(CADTriggerActionTypes.ToggleSplitview);\n const handleToggleSplitview = useCallback(() => {\n track(AnalyticsEventTypes.DesignClickedMapSplit);\n toggleSplitview();\n }, [toggleSplitview, track]);\n const projectData = useGetProjectDataQuery({\n skip: projectId == null,\n variables: { id: projectId },\n });\n\n if (!isCadAvailable) return null;\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n drawRuler()} icon={AuroraIconType.CAD_RULER} />\n \n \n \n \n \n \n \n \n \n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type CadOverviewQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type CadOverviewQuery = { __typename: 'Query', CAD: { __typename: 'CAD', isCadStateAvailable: boolean } };\n\nexport type CadOverviewRoutesQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type CadOverviewRoutesQuery = { __typename: 'Query', CAD: { __typename: 'CAD', hasUnsavedChanges: boolean } };\n\n\nexport const CadOverviewDocument = gql`\n query CadOverview @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n isCadStateAvailable\n }\n}\n `;\n\n/**\n * __useCadOverviewQuery__\n *\n * To run a query within a React component, call `useCadOverviewQuery` and pass it any options that fit your needs.\n * When your component renders, `useCadOverviewQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useCadOverviewQuery({\n * variables: {\n * },\n * });\n */\nexport function useCadOverviewQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(CadOverviewDocument, options);\n }\nexport function useCadOverviewLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(CadOverviewDocument, options);\n }\nexport type CadOverviewQueryHookResult = ReturnType;\nexport type CadOverviewLazyQueryHookResult = ReturnType;\nexport type CadOverviewQueryResult = Apollo.QueryResult;\nexport const CadOverviewRoutesDocument = gql`\n query CadOverviewRoutes @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n hasUnsavedChanges\n }\n}\n `;\n\n/**\n * __useCadOverviewRoutesQuery__\n *\n * To run a query within a React component, call `useCadOverviewRoutesQuery` and pass it any options that fit your needs.\n * When your component renders, `useCadOverviewRoutesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useCadOverviewRoutesQuery({\n * variables: {\n * },\n * });\n */\nexport function useCadOverviewRoutesQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(CadOverviewRoutesDocument, options);\n }\nexport function useCadOverviewRoutesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(CadOverviewRoutesDocument, options);\n }\nexport type CadOverviewRoutesQueryHookResult = ReturnType;\nexport type CadOverviewRoutesLazyQueryHookResult = ReturnType;\nexport type CadOverviewRoutesQueryResult = Apollo.QueryResult;","import React, { ComponentProps } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { defaultButtonBorderRadius, SPACES } from '@aurorasolar/common-core/src/layout';\nimport { ButtonGroup } from '@blueprintjs/core';\n\nexport const DrawerTitle = styled.h4`\n text-transform: uppercase;\n margin: ${SPACES[4]}px 0;\n padding: 0;\n color: ${Colors.GRAY_700};\n font-size: 14px;\n font-weight: 700;\n line-height: 22px;\n`;\n\nexport const DrawerSection = styled.div`\n border-bottom: 1px solid ${Colors.GRAY_300};\n padding-top: ${SPACES[0]}px;\n\n &:last-child {\n border-bottom: none;\n }\n\n &:first-child {\n padding-top: 0;\n }\n`;\n\nexport const DrawerTabGroup = styled(ButtonGroup)`\n border: solid 1px ${Colors.GRAY_300};\n border-radius: ${defaultButtonBorderRadius}px;\n overflow: hidden;\n`;\n\ntype DrawerTabSelectedProps = ComponentProps;\n\nconst DrawerTabSelected = styled(AuroraThemedButton).attrs({\n grouped: true,\n intent: AuroraThemedButtonIntent.SECONDARY,\n})`\n && {\n border: none;\n border-radius: 0;\n box-shadow: inset 0 -2px ${Colors.GRAY_800};\n color: ${Colors.GRAY_800};\n font-weight: 500;\n }\n`;\n\ntype DrawerTabNotSelectedProps = ComponentProps;\n\nconst DrawerTabNotSelected = styled(AuroraThemedButton).attrs({\n grouped: true,\n intent: AuroraThemedButtonIntent.SECONDARY,\n})`\n border: none;\n border-radius: 0;\n color: ${Colors.GRAY_700};\n`;\n\ntype DrawerTabProps =\n | ({ isSelected: true } & DrawerTabSelectedProps)\n | ({ isSelected: false } & DrawerTabNotSelectedProps);\n\nexport const DrawerTab = ({ isSelected = false, ...props }: DrawerTabProps) => {\n return isSelected ? : ;\n};\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { Box, Flex } from '@rebass/grid';\n\nexport const AutoDesignerInputArea: FC<{\n alignTop?: boolean;\n numericInputOffset?: boolean;\n labelArea: React.ReactNode;\n fill?: boolean;\n}> = ({ alignTop = false, numericInputOffset = false, fill = false, labelArea, children }) => (\n \n \n {labelArea}\n \n {children}\n \n);\n\nexport const AutoDesignerRadioButton = styled(AuroraThemedButton).attrs({\n grouped: true,\n intent: AuroraThemedButtonIntent.TERTIARY,\n selectedBgOverlayColor: Colors.GRAY_300,\n})`\n min-width: initial;\n border-color: ${Colors.GRAY_300};\n`;\n","import { Immutable } from 'immer';\nimport { FC } from 'react';\n\nimport { DcOptimizer, SolarInverter, SolarPanel } from '@aurorasolar/graphql-client-schema';\n\nexport enum TargetMode {\n Energy = 'Energy',\n MaxFit = 'Max Fit',\n}\nexport enum FillerRowSetting {\n Auto,\n None,\n}\n\nexport type Patch = (patch: Partial) => void;\n\nexport enum PanelOrientation {\n Landscape = 'landscape',\n Portrait = 'portrait',\n Auto = 'landscape,portrait',\n}\n\nexport interface AutoDesignerReducerState {\n components: {\n dcOptimizers: DcOptimizer[];\n microinverters: SolarInverter[];\n stringInverters: SolarInverter[];\n };\n energy: {\n annual?: number;\n offset: number;\n target?: number;\n };\n minimumIrradiance: {\n sap?: number;\n tsrf?: number;\n };\n targetMode: {\n availableModes: TargetMode[];\n selectedMode: TargetMode;\n };\n panels: {\n fillerRow: FillerRowSetting;\n orientation: PanelOrientation;\n solarPanels: SolarPanel[];\n spacingX: number;\n spacingY: number;\n };\n}\nexport type AutoDesignerState = Immutable;\n\nexport type AutoDesignerStateComponent = FC<\n {\n [Key in K]: AutoDesignerState[Key];\n } & {\n [Key in K as `on${Capitalize}Change`]: Patch;\n } & { selectedMode: AutoDesignerState['targetMode']['selectedMode'] }\n>;\n","import React from 'react';\n\nimport { CadInspectorNumericInput } from '@aurorasolar/common-core/src/input';\nimport { Text } from '@aurorasolar/common-core/src/typography';\n\nimport { DrawerSection, DrawerTitle } from '../inspector/drawer';\nimport { AutoDesignerInputArea } from './shared';\nimport { AutoDesignerStateComponent, TargetMode } from './types';\n\nexport const testids = {\n MIN_SAP: 'autodesigner-min-sap',\n TSRF: 'autodesigner-tsrf',\n};\nexport const AutoDesignerMinimumIrradiance: AutoDesignerStateComponent<'minimumIrradiance'> = ({\n minimumIrradiance,\n onMinimumIrradianceChange,\n selectedMode,\n}) => {\n if (selectedMode === TargetMode.Energy) {\n return null;\n }\n return (\n \n Minimum Irradiance\n Solar Access Percentage}\n numericInputOffset\n >\n onMinimumIrradianceChange({ sap })}\n rightTag=\"%\"\n value={minimumIrradiance.sap}\n />\n \n Total Solar Resource Fraction}\n numericInputOffset\n >\n onMinimumIrradianceChange({ tsrf })}\n rightTag=\"%\"\n value={minimumIrradiance.tsrf}\n />\n \n \n );\n};\n","import React from 'react';\n\nimport { Box } from '@rebass/grid';\n\nimport { DrawerTab, DrawerTabGroup, DrawerTitle } from '../inspector/drawer';\nimport { AutoDesignerStateComponent, TargetMode } from './types';\n\nexport const AutoDesignerModeButtonTestIds: { [Key in TargetMode]: string } = {\n [TargetMode.Energy]: 'autodesigner-energy-button',\n [TargetMode.MaxFit]: 'autodesigner-max-fit-button',\n};\n\nconst allModes = [TargetMode.Energy, TargetMode.MaxFit];\nconst hiddenModes = [TargetMode.MaxFit];\n\nexport const AutoDesignerTargetMode: AutoDesignerStateComponent<'targetMode'> = ({\n targetMode,\n onTargetModeChange,\n}) => {\n const { selectedMode, availableModes } = targetMode;\n\n if (availableModes.length === 1 && availableModes[0] === TargetMode.MaxFit) {\n return null;\n }\n\n return (\n \n Target Mode\n \n {allModes.map((mode) => {\n const isDisabled = !availableModes.includes(mode);\n if (isDisabled && hiddenModes.includes(mode)) {\n return null;\n }\n return (\n onTargetModeChange({ selectedMode: mode })}\n >\n {mode}\n \n );\n })}\n \n \n );\n};\n","import React, { FC, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { smallButtonBorderRadius, SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\n\nconst SelectedComponent = styled.div`\n font-size: 14px;\n height: ${SPACES[5]}px;\n padding: 0 ${SPACES[0]}px 0 ${SPACES[1]}px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-radius: ${smallButtonBorderRadius}px;\n\n &:hover {\n background: ${Colors.GRAY_200};\n }\n`;\n\ninterface AutoDesignerSelectedComponentProps {\n name: string;\n onClick: () => void;\n}\n\nexport const AutoDesignerSelectedComponent: FC = ({\n name,\n onClick,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n const icon = useMemo(\n () =>\n isHovered\n ? { fillColor: Colors.GRAY_700, name: AuroraIconType.CLOSE }\n : { fillColor: Colors.PRIMARY_GREEN, name: AuroraIconType.CHECKMARK },\n [isHovered],\n );\n return (\n setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {name}\n \n \n );\n};\n","import { Immutable } from 'immer';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { FullDivider } from '@aurorasolar/common-core/src/divider';\nimport { useProjectIdDesignIdOrSubRoute } from '@aurorasolar/common-core/src/hooks';\nimport { defaultButtonBorderRadius, SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { DcOptimizer, SolarInverter, SolarPanel } from '@aurorasolar/graphql-client-schema';\nimport { Flex } from '@rebass/grid';\n\nimport { ComponentSelect, ComponentSelectType } from '../component-select';\nimport { AutoDesignerSelectedComponent } from './autodesigner-selected-component';\nimport { AutoDesignerInputArea } from './shared';\n\nconst SelectedComponents = styled.div`\n background: ${Colors.WHITE};\n border-radius: ${defaultButtonBorderRadius}px;\n padding: ${SPACES[0]}px;\n border: 1px solid ${Colors.GRAY_300};\n margin-top: ${SPACES[0]}px;\n`;\n\nconst SelectionDivider = styled(FullDivider)`\n margin-left: -${SPACES[0]}px;\n margin-right: -${SPACES[0]}px;\n margin-top: ${SPACES[0]}px;\n margin-bottom: ${SPACES[0]}px;\n`;\n\nconst ListItem = styled.li`\n list-style: none;\n\n &:first-child {\n .divider {\n display: none;\n }\n }\n`;\n\nexport enum AutoDesignerComponentType {\n SolarPanels = 'Solar Panels',\n StringInverters = 'String Inverters',\n Microinverters = 'Microinverters',\n DcOptimizers = 'DC Optimizer',\n}\n\ntype ComponentLookup =\n T extends AutoDesignerComponentType.SolarPanels\n ? SolarPanel\n : T extends AutoDesignerComponentType.StringInverters\n ? SolarInverter\n : T extends AutoDesignerComponentType.Microinverters\n ? SolarInverter\n : T extends AutoDesignerComponentType.DcOptimizers\n ? DcOptimizer\n : never;\n\ninterface ComponentInformation {\n label: string;\n type: ComponentSelectType;\n filters?: { isMicroinverter: boolean; isSolarCompatible: true };\n}\nexport const componentMap: {\n [Key in AutoDesignerComponentType]: ComponentInformation;\n} = {\n [AutoDesignerComponentType.SolarPanels]: {\n label: 'solar panels',\n type: ComponentSelectType.SolarPanel,\n },\n [AutoDesignerComponentType.StringInverters]: {\n label: 'string inverters',\n type: ComponentSelectType.SolarInverter,\n },\n [AutoDesignerComponentType.Microinverters]: {\n label: 'microinverters',\n type: ComponentSelectType.Microinverter,\n },\n [AutoDesignerComponentType.DcOptimizers]: {\n label: 'DC optimizers',\n type: ComponentSelectType.DcOptimizer,\n },\n};\n\nexport interface AutoDesignerComponentSelectionProps<\n ComponentType extends AutoDesignerComponentType,\n Item extends Immutable> = Immutable<\n ComponentLookup\n >,\n> {\n type: ComponentType;\n items: readonly Item[];\n itemsChildren?: JSX.Element[];\n updateItems?: (newItems: Item[]) => void;\n addItem?: (item: Item) => void;\n removeItem?: (item: Item) => void;\n limit: number;\n alignSelectionBox?: boolean;\n}\n\nexport const AutoDesignerComponentSelection = <\n ComponentType extends AutoDesignerComponentType,\n Item extends Immutable> = Immutable<\n ComponentLookup\n >,\n>({\n type: lookupType,\n items,\n itemsChildren,\n updateItems,\n addItem,\n removeItem,\n limit,\n alignSelectionBox = true,\n}: AutoDesignerComponentSelectionProps) => {\n const ids = items.map(({ id }) => id);\n const { label, type } = componentMap[lookupType];\n const fieldLabel = `${label.charAt(0).toUpperCase()}${label.slice(1)}`;\n\n const removeItemInternal = (idToRemove: string) => () => {\n if (removeItem) {\n const item = items.find(({ id }) => id === idToRemove);\n if (item) {\n removeItem(item);\n }\n return;\n }\n updateItems?.(items.filter(({ id }) => id !== idToRemove));\n };\n\n const addItemInternal = (item: Item) => {\n if (addItem) {\n addItem(item);\n return;\n }\n updateItems?.([...items, item]);\n };\n\n const selections = items.length > 0 && (\n \n {items.map(({ id, name }, i) => (\n \n {itemsChildren && }\n \n {itemsChildren && itemsChildren[i]}\n \n ))}\n \n );\n\n // send the project ID to get project-scoped panels if available\n const { projectId }: { projectId?: string | undefined } = useProjectIdDesignIdOrSubRoute();\n\n return (\n \n \n
\n {fieldLabel}\n
\n
\n \n Up to {limit} {limit === 1 ? 'selection' : 'selections'}\n \n
\n \n }\n >\n = limit}\n emptySelectionLabel={`Select ${label}`}\n hiddenIds={ids}\n onSelection={ComponentSelect.getFirstSelection((_, item) => {\n addItemInternal(item as Item);\n })}\n projectId={projectId}\n selectedItems={new Set([])}\n type={type}\n />\n {alignSelectionBox && selections}\n \n \n {!alignSelectionBox && selections}\n \n
\n );\n};\n","import React, { useCallback } from 'react';\n\nimport { DrawerSection, DrawerTitle } from '../inspector/drawer';\nimport {\n AutoDesignerComponentSelection,\n AutoDesignerComponentType,\n} from './autodesigner-component-selection';\nimport { AutoDesignerState, AutoDesignerStateComponent, TargetMode } from './types';\n\nexport const AutoDesignerComponents: AutoDesignerStateComponent<'components'> = ({\n selectedMode,\n components,\n onComponentsChange,\n}) => {\n const updateItems = useCallback(\n (key: K) =>\n (newItems: AutoDesignerState['components'][K]) => {\n onComponentsChange({\n [key]: newItems,\n });\n },\n [onComponentsChange],\n );\n\n if (selectedMode === TargetMode.MaxFit) {\n return null;\n }\n\n return (\n \n Components\n \n \n \n \n );\n};\n","import React, { CSSProperties, FC } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\n\nexport const SHRINKABLE_HEADER_TESTID = 'shrinkable-header';\n\nconst StyledShrinkableHeader = styled.div`\n --shrink: 0;\n\n flex: 0 0 auto;\n background: white;\n display: flex;\n align-items: center;\n border-bottom: solid 1px #e0e0e0;\n min-height: 46px;\n height: calc(64px - calc(var(--shrink) / 4));\n box-shadow: 0 4px 28px rgba(0, 0, 0, 0.08);\n padding: 0 ${SPACES[4]}px;\n`;\n\nexport const ShrinkableHeader: FC<{ contentScrollTop: number }> = ({\n contentScrollTop,\n children,\n}) => (\n \n \n {children}\n \n \n);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Tooltip } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { ShrinkableHeader } from './shrinkable-header';\n\nconst PanelBody = styled(Box).attrs({ flex: '1 1 auto' })`\n padding: ${SPACES[0]}px ${SPACES[5]}px ${SPACES[4]}px ${SPACES[5]}px;\n overflow-y: auto;\n`;\n\nconst BottomArea = styled(Flex).attrs({ flexDirection: 'row-reverse' })`\n height: 80px;\n background: white;\n border-top: solid 1px #e0e0e0;\n padding: ${SPACES[3]}px;\n`;\ninterface AutoDesignerCoreProps {\n onCancel: () => void;\n onRun: () => void;\n scrollTop: number;\n setScrollTop: (value: number) => void;\n validationError: string | null;\n}\n\nexport const AutoDesignerCore: FC = ({\n children,\n onCancel,\n onRun,\n scrollTop,\n setScrollTop,\n validationError,\n}) => {\n return (\n \n AutoDesigner\n {\n setScrollTop(currentTarget.scrollTop);\n }}\n >\n {children}\n \n \n \n \n \n Run AutoDesigner\n \n \n \n \n \n Cancel\n \n \n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { CadInspectorNumericInput } from '@aurorasolar/common-core/src/input';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { Box } from '@rebass/grid';\n\nimport { DrawerSection } from '../inspector/drawer';\nimport { AutoDesignerInputArea } from './shared';\nimport { AutoDesignerStateComponent, TargetMode } from './types';\n\nexport const DEFAULT_TARGET = 10000;\n\nconst EnergyTargetInput = styled(CadInspectorNumericInput)`\n && {\n .bp3-input-group {\n width: 182px;\n\n .bp3-input {\n width: 100%;\n padding-right: 0;\n }\n .bp3-tag {\n width: unset;\n padding: 0 16px;\n }\n }\n }\n`;\nexport const AUTODESIGNER_ENERGY_TARGET_TESTID = 'autodesigner-energy-target';\nexport const AUTODESIGNER_ENERGY_OFFSET_TESTID = 'autodesigner-energy-offset';\n\nexport const AutoDesignerEnergyMode: AutoDesignerStateComponent<'energy'> = ({\n energy,\n onEnergyChange,\n selectedMode,\n}) => {\n const hasAnnualEnergy = !!energy.annual;\n if (selectedMode !== TargetMode.Energy) {\n return null;\n }\n return (\n \n \n \n onEnergyChange({ target })}\n rightTag=\"kWh/year\"\n step={100}\n value={energy.target ?? DEFAULT_TARGET}\n />\n \n \n {hasAnnualEnergy ? (\n onEnergyChange({ offset })}\n rightTag=\"%\"\n value={energy.offset}\n />\n ) : (\n \n No Consumption profile defined\n \n )}\n \n \n \n );\n};\n","import React, { useReducer } from 'react';\n\nimport { AlertTooltip } from '@aurorasolar/common-core/src/alert-tooltip';\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { AuroraNumericInput, NumericInputRightTag } from '@aurorasolar/common-core/src/input';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { ConversionType, withNumericConversion } from '@aurorasolar/common-numeric-conversion';\nimport { ButtonGroup, Collapse } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { DrawerSection, DrawerTitle } from '../inspector/drawer';\nimport {\n AutoDesignerComponentSelection,\n AutoDesignerComponentType,\n} from './autodesigner-component-selection';\nimport { AutoDesignerInputArea, AutoDesignerRadioButton } from './shared';\nimport { AutoDesignerStateComponent, FillerRowSetting, TargetMode } from './types';\n\nconst ConversionInput = withNumericConversion(AuroraNumericInput);\n\nconst distanceLimits = {\n max: Infinity,\n min: 0,\n stepSize: 0.1,\n};\nexport const testids = {\n SPACING_X: 'autodesigner-module-spacing-x',\n SPACING_Y: 'autodesigner-module-spacing-y',\n};\nexport enum PanelOrientation {\n Landscape = 'landscape',\n Portrait = 'portrait',\n Auto = 'landscape,portrait',\n}\nconst fillerRowSettings = [\n { label: 'None', value: FillerRowSetting.None },\n { label: 'Auto', value: FillerRowSetting.Auto },\n];\n\nexport const orientationOptions = [\n {\n icon: AuroraIconType.PANELS_PORTRAIT,\n label: '',\n type: PanelOrientation.Portrait,\n },\n {\n icon: AuroraIconType.PANELS_LANDSCAPE,\n label: '',\n type: PanelOrientation.Landscape,\n },\n {\n label: 'Auto',\n type: PanelOrientation.Auto,\n },\n];\nexport const AutoDesignerPanels: AutoDesignerStateComponent<'panels'> = ({\n panels,\n onPanelsChange,\n selectedMode,\n}) => {\n const [isAdvancedOpen, toggleIsAdvancedOpen] = useReducer((v) => !v, false);\n return (\n \n Panels\n {\n onPanelsChange({ solarPanels });\n }}\n />\n Orientation}>\n \n \n {orientationOptions.map((item) => {\n const content = item.icon ? : item.label;\n return (\n {\n onPanelsChange({ orientation: item.type });\n }}\n >\n {content}\n \n );\n })}\n \n \n \n \n Advanced Settings\n \n \n \n \n \n {(selectedMode === TargetMode.MaxFit || selectedMode === TargetMode.Energy) && (\n \n Filler row\n \n \n \n \n \n \n }\n >\n \n {fillerRowSettings.map((setting) => (\n {\n onPanelsChange({ fillerRow: setting.value });\n }}\n >\n {setting.label}\n \n ))}\n \n \n )}\n Spacing X}\n numericInputOffset\n >\n onPanelsChange({ spacingX })}\n tagComponent={NumericInputRightTag}\n value={panels.spacingX}\n width=\"96px\"\n {...distanceLimits}\n />\n \n Spacing Y}\n numericInputOffset\n >\n onPanelsChange({ spacingY })}\n tagComponent={NumericInputRightTag}\n value={panels.spacingY}\n width=\"96px\"\n {...distanceLimits}\n />\n \n \n \n \n \n );\n};\n","import { AutoDesignerState, FillerRowSetting, PanelOrientation, TargetMode } from './types';\n\nexport const getInitialState = (): AutoDesignerState => ({\n components: {\n dcOptimizers: [],\n microinverters: [],\n stringInverters: [],\n },\n energy: {\n annual: undefined,\n offset: 80,\n target: undefined,\n },\n minimumIrradiance: {\n sap: undefined,\n tsrf: undefined,\n },\n panels: {\n fillerRow: FillerRowSetting.None,\n orientation: PanelOrientation.Auto,\n solarPanels: [],\n spacingX: 0,\n spacingY: 0,\n },\n targetMode: {\n availableModes: [TargetMode.Energy, TargetMode.MaxFit],\n selectedMode: TargetMode.MaxFit,\n },\n});\n\nexport enum ValidationError {\n NoModules = 'Please specify a module to continue',\n NoInverters = 'Please specify an inverter to continue',\n}\n\nexport const getValidationError = (\n state: AutoDesignerState,\n): ValidationError.NoModules | ValidationError.NoInverters | null => {\n if (state.panels.solarPanels.length < 1) {\n return ValidationError.NoModules;\n }\n const needsInverter =\n state.targetMode.selectedMode !== TargetMode.MaxFit &&\n !state.panels.solarPanels.some(({ mlpe }) => mlpe?.isSolarInverter ?? true);\n if (\n state.components.stringInverters.length < 1 &&\n state.components.microinverters.length < 1 &&\n needsInverter\n ) {\n return ValidationError.NoInverters;\n }\n return null;\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type AutoDesignerQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type AutoDesignerQuery = { __typename: 'Query', design: { __typename: 'Design', id: string, interModuleSpacingX?: number | null | undefined, interModuleSpacingY?: number | null | undefined, loadProfile: { __typename: 'LoadProfile', id: string, annualEnergy?: number | null | undefined } } };\n\n\nexport const AutoDesignerDocument = gql`\n query AutoDesigner($designId: ID!) @trace_info(traceInfo: {pod: cad}) {\n design: designById(id: $designId) {\n id\n interModuleSpacingX\n interModuleSpacingY\n loadProfile {\n id\n annualEnergy\n }\n }\n}\n `;\n\n/**\n * __useAutoDesignerQuery__\n *\n * To run a query within a React component, call `useAutoDesignerQuery` and pass it any options that fit your needs.\n * When your component renders, `useAutoDesignerQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useAutoDesignerQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useAutoDesignerQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(AutoDesignerDocument, options);\n }\nexport function useAutoDesignerLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(AutoDesignerDocument, options);\n }\nexport type AutoDesignerQueryHookResult = ReturnType;\nexport type AutoDesignerLazyQueryHookResult = ReturnType;\nexport type AutoDesignerQueryResult = Apollo.QueryResult;","import produce from 'immer';\nimport React, { FC, useCallback, useMemo, useReducer, useState } from 'react';\n\nimport { useStartAsyncJobMutation } from '@aurorasolar/common-data-access-layer';\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { AnalyticsEventTypes } from '@aurorasolar/common-module-loader';\nimport {\n AsyncJobParameters,\n AsyncJobType,\n AutoDesigner as AutoDesignerResponse,\n} from '@aurorasolar/graphql-client-schema';\n\nimport { useSaveCad, useTriggerCadAction } from '../hooks';\nimport { useAnalytics } from '../hooks/use-analytics';\nimport { useCadState } from '../use-cad';\nimport { AutoDesignerComponents } from './autodesigner-components';\nimport { AutoDesignerCore } from './autodesigner-core';\nimport { AutoDesignerEnergyMode, DEFAULT_TARGET } from './autodesigner-energy-mode';\nimport { AutoDesignerMinimumIrradiance } from './autodesigner-minimum-irradiance';\nimport { AutoDesignerPanels } from './autodesigner-panels';\nimport { AutoDesignerTargetMode } from './autodesigner-target-mode';\nimport { getInitialState, getValidationError } from './autodesigner-utils';\nimport { useAutoDesignerQuery } from './autodesigner.generated';\nimport { AutoDesignerReducerState, AutoDesignerState, FillerRowSetting, TargetMode } from './types';\n\nconst autoDesignerReducer = produce(\n (\n draft: AutoDesignerReducerState,\n { key, payload }: { key: T; payload: AutoDesignerState[T] },\n ) => {\n draft[key] = {\n ...draft[key],\n ...payload,\n };\n if (key === 'energy') {\n const energy = payload as AutoDesignerState['energy'];\n const targetNeedsToBeSet = energy.target === undefined && draft.energy.target === undefined;\n\n if (!!draft.energy.annual && (energy.offset !== undefined || targetNeedsToBeSet)) {\n // calculate the target when the offset is changed or if the target is not set\n draft.energy.target = Math.round((draft.energy.offset / 100) * draft.energy.annual);\n }\n if (!!draft.energy.annual && energy.target !== undefined) {\n // calculate offset when the target is changed.\n draft.energy.offset = Math.round((draft.energy.target! / draft.energy.annual) * 100);\n }\n }\n },\n);\n\ninterface AutoDesignerProps {\n data: undefined;\n designId: string;\n onClose: () => void;\n}\n\nconst getAsyncJobParameters = ({\n components,\n minimumIrradiance,\n panels,\n targetMode,\n energy,\n}: AutoDesignerState): NonNullable => {\n const getId = ({ id }: T) => id;\n const isMaxFit = targetMode.selectedMode === TargetMode.MaxFit;\n const parameters: AsyncJobParameters['inputs'] = {\n components: {\n dc_optimizers: [] as string[],\n solar_inverters: [] as string[],\n solar_panels: panels.solarPanels.map(getId),\n },\n constraints: {\n energy: isMaxFit ? undefined : energy.target ?? DEFAULT_TARGET,\n max_fit: isMaxFit,\n savings: null,\n },\n objective: 'cost',\n options: {\n allow_filler_row: panels.fillerRow === FillerRowSetting.Auto,\n column_spacing_m: panels.spacingX,\n min_sap: minimumIrradiance.sap != null ? minimumIrradiance.sap / 100 : undefined,\n min_tsrf: minimumIrradiance.tsrf != null ? minimumIrradiance.tsrf / 100 : undefined,\n orientations: panels.orientation.split(','),\n row_spacing_m: panels.spacingY,\n },\n post_solar: {},\n };\n\n if (!isMaxFit) {\n parameters.components.solar_inverters = [\n ...components.stringInverters,\n ...components.microinverters,\n ].map(getId);\n parameters.components.dc_optimizers = components.dcOptimizers.map(getId);\n }\n return parameters;\n};\n\nexport const AutoDesigner: FC = ({ designId, onClose }) => {\n const [scrollTop, setScrollTop] = useState(0);\n\n const [startAsyncJob] = useStartAsyncJobMutation();\n const loadDesign = useTriggerCadAction(CADTriggerActionTypes.LoadSystemDesign);\n const { save } = useSaveCad();\n const track = useAnalytics();\n\n const [state, updateState] = useReducer(autoDesignerReducer, getInitialState());\n\n const update = useCallback(\n (key: K) =>\n (payload: Partial) =>\n updateState({ key, payload }),\n [updateState],\n );\n\n useAutoDesignerQuery({\n onCompleted: (data) => {\n const annual = data?.design?.loadProfile?.annualEnergy ?? undefined;\n if (annual != null) {\n update('energy')({ annual });\n }\n const spacingX = data?.design?.interModuleSpacingX;\n const spacingY = data?.design?.interModuleSpacingY;\n if (spacingX != null && spacingY != null) {\n update('panels')({ spacingX, spacingY });\n }\n },\n variables: { designId },\n });\n\n const validationError = useMemo(() => getValidationError(state), [state]);\n const { autoDesignerFinish, autoDesignerStart } = useCadState((cadState) => {\n return {\n autoDesignerFinish: cadState?.actions?.autoDesignerActions?.autoDesignerFinish,\n autoDesignerStart: cadState?.actions.autoDesignerActions.autoDesignerStart,\n };\n });\n\n const onRun = useCallback(async () => {\n const parameters = getAsyncJobParameters(state);\n onClose();\n track(AnalyticsEventTypes.DesignRanAutoDesigner, {\n mode: state.targetMode.selectedMode as 'Energy' | 'Max Fit',\n offset: state.energy.offset,\n panel_orientation: state.panels.orientation,\n });\n await save?.();\n autoDesignerStart?.();\n const design = await startAsyncJob({\n variables: {\n settings: {\n design_id: designId,\n inputs: parameters,\n },\n type: AsyncJobType.Autodes,\n },\n })\n .then((response) => {\n if (response.data?.startAsyncJob == null) {\n return undefined;\n }\n\n return JSON.parse((response.data?.startAsyncJob as AutoDesignerResponse).design);\n })\n .catch(() => {\n console.warn('Failed to parse AutoDesigner design');\n })\n .finally(() => {\n autoDesignerFinish?.();\n });\n if (design) {\n loadDesign({ design });\n }\n }, [\n save,\n designId,\n state,\n startAsyncJob,\n onClose,\n loadDesign,\n track,\n autoDesignerStart,\n autoDesignerFinish,\n ]);\n\n const { selectedMode } = state.targetMode;\n return (\n \n \n \n \n \n \n \n );\n};\n","import React, { FC } from 'react';\n\nimport { AuroraNumericInput } from '@aurorasolar/common-core/src/input';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { withNumericConversion } from '@aurorasolar/common-numeric-conversion';\nimport { Flex } from '@rebass/grid';\n\nexport enum AutoStringInverter {\n StringInverter,\n Microinverter,\n}\n\nexport type AutoStringInverterOption = {\n minStringLength: number;\n maxStringLength: number;\n dcAcRatio: number;\n};\n\nexport type AutoStringInverterOptions = {\n inverters: Record;\n microinverters: Record;\n};\n\ninterface AutoStringInverterParamsProps {\n dcAcRatio: number;\n updateDcAcRatio: (value: number) => void;\n maxStringLength: number;\n updateMaxStringLength: (value: number) => void;\n minStringLength: number;\n updateMinStringLength: (value: number) => void;\n}\n\nconst NumericInput = withNumericConversion(AuroraNumericInput);\n\nexport const AutoStringInverterParams: FC = ({\n dcAcRatio,\n updateDcAcRatio,\n maxStringLength,\n updateMaxStringLength,\n minStringLength,\n updateMinStringLength,\n}) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { Immutable } from 'immer';\nimport React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { AuroraCheckbox } from '@aurorasolar/common-core/src/checkbox/checkbox';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { DcOptimizer, SolarInverter } from '@aurorasolar/graphql-client-schema';\nimport { Tooltip } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport {\n AutoDesignerComponentSelection,\n AutoDesignerComponentType,\n} from '../autodesigner/autodesigner-component-selection';\nimport { ShrinkableHeader } from '../autodesigner/shrinkable-header';\nimport { DrawerSection, DrawerTab, DrawerTabGroup, DrawerTitle } from '../inspector/drawer';\nimport { AutoStringInverterQuery, SolarPanelAutoStringQuery } from './components.generated';\nimport {\n AutoStringInverter,\n AutoStringInverterOption,\n AutoStringInverterOptions,\n AutoStringInverterParams,\n} from './inverter-params';\n\ninterface AutoStringerCoreProps {\n onCancel: () => void;\n onRun: () => void;\n validationError: string | null | undefined;\n inverters: SolarInverter[];\n microinverters: SolarInverter[];\n addMicroinverter: (inverter: Immutable) => void;\n removeMicroinverter: (inverter: Immutable) => void;\n inverterType: AutoStringInverter;\n setInverterType: (inverterType: AutoStringInverter) => void;\n addInverter: (inverter: Immutable) => void;\n removeInverter: (inverter: Immutable) => void;\n settings: AutoStringInverterOptions;\n updateSettings: (id: string, prop: keyof AutoStringInverterOption, value: number) => void;\n autoParams: boolean;\n updateAutoParams(on: boolean): void;\n solarPanel?: SolarPanelAutoStringQuery['component'];\n integratedMicroinverter?: AutoStringInverterQuery['component'];\n dcOptimizer: DcOptimizer | undefined;\n addDcOptimizer: (dcOptimizer: Immutable) => void;\n removeDcOptimizer: (dcOptimizer: Immutable) => void;\n currentSelectionSection: JSX.Element;\n}\n\nconst PanelBody = styled(Box).attrs({ flex: '1 1 auto' })`\n padding: 0 20px 24px 20px;\n overflow-y: auto;\n`;\n\nconst BottomArea = styled(Flex).attrs({ flexDirection: 'row-reverse' })`\n height: 80px;\n background: white;\n border-top: solid 1px #e0e0e0;\n padding: 20px;\n`;\n\nexport const AutoStringerCore = ({\n addDcOptimizer,\n addInverter,\n addMicroinverter,\n autoParams,\n currentSelectionSection,\n dcOptimizer,\n inverters,\n inverterType,\n setInverterType,\n microinverters,\n integratedMicroinverter,\n onCancel,\n onRun,\n removeDcOptimizer,\n removeInverter,\n removeMicroinverter,\n settings,\n solarPanel,\n updateAutoParams,\n updateSettings,\n validationError,\n}: AutoStringerCoreProps) => {\n const itemsChildren = autoParams\n ? undefined\n : inverters.map((inv) => {\n const setting = settings.inverters[inv.id];\n return (\n !!setting && (\n updateSettings(inv.id, 'dcAcRatio', value)}\n updateMaxStringLength={(value) => updateSettings(inv.id, 'maxStringLength', value)}\n updateMinStringLength={(value) => updateSettings(inv.id, 'minStringLength', value)}\n />\n )\n );\n });\n\n const hasIntegratedMlpe = !!solarPanel?.mlpe;\n const dcOptimizers = dcOptimizer ? [dcOptimizer] : [];\n\n return (\n \n AutoStringer\n \n {currentSelectionSection}\n\n {!integratedMicroinverter ? (\n <>\n Inverter type\n\n \n setInverterType(AutoStringInverter.StringInverter)}\n >\n String Inverter\n \n setInverterType(AutoStringInverter.Microinverter)}\n >\n Microinverter\n \n \n\n {inverterType === AutoStringInverter.StringInverter ? (\n \n \n\n {inverters.length > 0 && (\n \n updateAutoParams(event.currentTarget.checked)}\n />\n Automatic electrical parameters\n \n )}\n\n {!hasIntegratedMlpe ? (\n \n ) : (\n \n )}\n \n ) : (\n \n {!hasIntegratedMlpe ? (\n \n ) : (\n <>\n \n \n This module uses an integrated optimizer and cannot be connected to a\n microinverter.\n \n \n\n \n \n )}\n \n )}\n \n ) : (\n <>\n \n \n This module uses an integrated microinverter and does not require stringing within\n Aurora.\n \n \n\n \n \n )}\n \n\n \n \n \n \n Run AutoStringer\n \n \n \n \n \n Cancel\n \n \n \n \n );\n};\n\nconst AutoStringerMlpe: FC<{\n solarPanel?: SolarPanelAutoStringQuery['component'];\n integratedMicroinverter?: AutoStringInverterQuery['component'];\n}> = ({ solarPanel, integratedMicroinverter }) => {\n const mlpe =\n solarPanel?.mlpe?.cellStringOptimizer ||\n solarPanel?.mlpe?.solarInverter ||\n solarPanel?.mlpe?.dcOptimizer;\n\n const chosenMlpe = mlpe || integratedMicroinverter;\n\n if (!chosenMlpe) {\n return null;\n }\n\n const manufacturerName = chosenMlpe.manufacturer?.name;\n\n return (\n <>\n \n \n Module level power electronics\n \n \n\n \n \n {manufacturerName ? `${manufacturerName}, ` : ''}\n {chosenMlpe.name}\n \n \n \n );\n};\n","import produce, { Immutable } from 'immer';\n\nimport { getDcAcRatio, getMaxStringSize, getMinStringSize } from '@aurorasolar/cad-services';\nimport {\n CadFillZone,\n CadSolarPanelFree,\n DcOptimizer,\n SolarInverter,\n} from '@aurorasolar/graphql-client-schema';\n\nimport { GetDesignByIdQuery } from '../cad.generated';\nimport { AutoStringDcOptimizerQuery, SolarPanelAutoStringQuery } from './components.generated';\nimport {\n AutoStringInverter,\n AutoStringInverterOption,\n AutoStringInverterOptions,\n} from './inverter-params';\n\nexport enum AutoStringSelectionType {\n Nothing,\n SolarPanel,\n FillZone,\n}\n\nexport interface AutoStringState {\n dcOptimizer: DcOptimizer | undefined | null;\n design: GetDesignByIdQuery['designById'] | undefined;\n integratedDcOptimizer: DcOptimizer | undefined | null;\n inverterType: AutoStringInverter;\n inverters: SolarInverter[];\n microinverters: SolarInverter[];\n selectionType: AutoStringSelectionType;\n settings: AutoStringInverterOptions;\n solarPanel: SolarPanelAutoStringQuery['component'] | undefined;\n selectedSolarPanel: CadSolarPanelFree | undefined;\n selectedFillZone: CadFillZone | undefined;\n}\n\nexport enum AutoStringActionType {\n SetInverterType,\n AddInverter,\n RemoveInverter,\n AddMicroinverter,\n RemoveMicroinverter,\n AddDcOptimizer,\n RemoveDcOptimizer,\n SolarPanelQueryFinished,\n UpdateIntegratedDcOptimizer,\n DesignChanged,\n UpdateAutoParams,\n UpdateSetting,\n FillZoneSelectionChanged,\n SelectionTypeChanged,\n SolarPanelSelectionChanged,\n}\n\ntype AutoStringAction =\n | {\n type: AutoStringActionType.UpdateIntegratedDcOptimizer;\n payload: {\n integratedDcOptimizer: AutoStringDcOptimizerQuery['component'];\n };\n }\n | {\n type: AutoStringActionType.UpdateSetting;\n payload: {\n id: string;\n prop: keyof AutoStringInverterOption;\n value: number;\n };\n }\n | { type: AutoStringActionType.UpdateAutoParams }\n | {\n type: AutoStringActionType.DesignChanged;\n payload: {\n design: GetDesignByIdQuery['designById'] | undefined;\n };\n }\n | {\n type: AutoStringActionType.FillZoneSelectionChanged;\n payload: {\n selectedFillZone: CadFillZone | undefined;\n };\n }\n | {\n type: AutoStringActionType.SelectionTypeChanged;\n payload: {\n selectionId: string | undefined;\n selectionType: AutoStringSelectionType;\n };\n }\n | {\n type: AutoStringActionType.SetInverterType;\n payload: { inverterType: AutoStringInverter };\n }\n | {\n type: AutoStringActionType.AddInverter;\n payload: { inverter: Immutable };\n }\n | {\n type: AutoStringActionType.RemoveInverter;\n payload: { inverter: Immutable };\n }\n | {\n type: AutoStringActionType.AddMicroinverter;\n payload: { microinverter: Immutable };\n }\n | {\n type: AutoStringActionType.RemoveMicroinverter;\n payload: { microinverter: Immutable };\n }\n | {\n type: AutoStringActionType.AddDcOptimizer;\n payload: { dcOptimizer: Immutable };\n }\n | {\n type: AutoStringActionType.RemoveDcOptimizer;\n payload: { dcOptimizer: Immutable };\n }\n | {\n type: AutoStringActionType.SolarPanelQueryFinished;\n payload: { solarPanel: SolarPanelAutoStringQuery['component'] };\n }\n | {\n type: AutoStringActionType.SolarPanelSelectionChanged;\n payload: { selectedSolarPanel: CadSolarPanelFree | undefined };\n };\n\nconst getInverterParams = ({\n dcOptimizer,\n design,\n inverters,\n inverterType,\n integratedDcOptimizer,\n microinverters,\n solarPanel,\n}: AutoStringState): AutoStringInverterOption => {\n if (solarPanel == null) {\n return { dcAcRatio: NaN, maxStringLength: NaN, minStringLength: NaN };\n }\n\n const actualDcOpt =\n inverterType === AutoStringInverter.StringInverter\n ? integratedDcOptimizer || dcOptimizer\n : undefined;\n\n const inverter =\n inverterType === AutoStringInverter.StringInverter ? inverters[0] : microinverters[0];\n\n return {\n dcAcRatio: getDcAcRatio(inverter),\n maxStringLength:\n getMaxStringSize(solarPanel, inverter, design?.temperatureMin, [], actualDcOpt) || NaN,\n minStringLength:\n getMinStringSize(solarPanel, inverter, design?.temperatureMax, actualDcOpt) || NaN,\n };\n};\n\nconst getNewSettings = (params: AutoStringState): AutoStringInverterOptions => ({\n inverters:\n params.inverterType !== AutoStringInverter.StringInverter\n ? params.settings.inverters\n : params.inverters.reduce(\n (settings, inverter) => ({\n ...settings,\n [inverter.id]: getInverterParams({ ...params, inverters: [inverter] }),\n }),\n {} as Record,\n ),\n microinverters:\n params.inverterType !== AutoStringInverter.Microinverter\n ? params.settings.microinverters\n : params.microinverters.reduce(\n (settings, microinverter) => ({\n ...settings,\n [microinverter.id]: getInverterParams({ ...params, microinverters: [microinverter] }),\n }),\n {} as Record,\n ),\n});\n\nconst omit = (obj: Record, key: string) => {\n delete obj[key];\n return obj;\n};\n\nexport const getEmptyAutoStringState = (): AutoStringState => ({\n dcOptimizer: undefined,\n design: undefined,\n integratedDcOptimizer: undefined,\n inverters: [],\n inverterType: AutoStringInverter.StringInverter,\n microinverters: [],\n selectedFillZone: undefined,\n selectedSolarPanel: undefined,\n selectionType: AutoStringSelectionType.Nothing,\n settings: {\n inverters: {},\n microinverters: {},\n },\n solarPanel: undefined,\n});\n\nexport const settingsReducer = produce((draft: AutoStringState, action: AutoStringAction) => {\n if (action.type === AutoStringActionType.FillZoneSelectionChanged) {\n draft.selectedFillZone = action.payload.selectedFillZone;\n return draft;\n }\n\n if (action.type === AutoStringActionType.SelectionTypeChanged) {\n if (action.payload.selectionType === AutoStringSelectionType.Nothing) {\n draft.solarPanel = undefined;\n draft.selectedSolarPanel = undefined;\n draft.integratedDcOptimizer = undefined;\n draft.dcOptimizer = undefined;\n }\n draft.selectionType = action.payload.selectionType;\n return draft;\n }\n\n if (action.type === AutoStringActionType.SetInverterType) {\n draft.inverterType = action.payload.inverterType;\n return draft;\n }\n\n if (action.type === AutoStringActionType.AddInverter) {\n const newSetting = getInverterParams({\n ...draft,\n inverters: [action.payload.inverter as SolarInverter],\n });\n draft.inverters.push(action.payload.inverter as SolarInverter);\n draft.settings.inverters[action.payload.inverter.id] = newSetting;\n return draft;\n }\n\n if (action.type === AutoStringActionType.RemoveInverter) {\n draft.inverters = draft.inverters.filter(({ id }) => id !== action.payload.inverter!.id);\n omit(draft.settings.inverters, action.payload.inverter.id);\n return draft;\n }\n\n if (action.type === AutoStringActionType.AddMicroinverter) {\n const newSetting = getInverterParams({\n ...draft,\n microinverters: [action.payload.microinverter as SolarInverter],\n });\n draft.microinverters.push(action.payload.microinverter as SolarInverter);\n draft.settings.microinverters[action.payload.microinverter.id] = newSetting;\n return draft;\n }\n\n if (action.type === AutoStringActionType.RemoveMicroinverter) {\n draft.microinverters = draft.microinverters.filter(\n ({ id }) => id !== action.payload.microinverter!.id,\n );\n omit(draft.settings.microinverters, action.payload.microinverter.id);\n return draft;\n }\n\n if (action.type === AutoStringActionType.AddDcOptimizer) {\n draft.dcOptimizer = action.payload.dcOptimizer as DcOptimizer;\n draft.settings = getNewSettings(draft);\n return draft;\n }\n\n if (action.type === AutoStringActionType.RemoveDcOptimizer) {\n draft.dcOptimizer = undefined;\n draft.settings = getNewSettings(draft);\n return draft;\n }\n\n if (action.type === AutoStringActionType.SolarPanelQueryFinished) {\n draft.solarPanel = action.payload.solarPanel;\n draft.settings = getNewSettings(draft);\n return draft;\n }\n\n if (action.type === AutoStringActionType.UpdateIntegratedDcOptimizer) {\n draft.integratedDcOptimizer = action.payload.integratedDcOptimizer;\n draft.settings = getNewSettings(draft);\n return draft;\n }\n\n if (action.type === AutoStringActionType.DesignChanged) {\n draft.design = action.payload.design;\n draft.settings = getNewSettings(draft);\n return draft;\n }\n\n if (action.type === AutoStringActionType.UpdateAutoParams) {\n // Revert settings back to being derived from the rest of the state\n draft.settings = getNewSettings(draft);\n return draft;\n }\n\n if (action.type === AutoStringActionType.UpdateSetting) {\n // Manual input settings that deviate from the main state\n if (\n draft.inverterType === AutoStringInverter.StringInverter &&\n draft.settings.inverters[action.payload.id]\n ) {\n draft.settings.inverters[action.payload.id][action.payload.prop] = action.payload.value;\n } else if (draft.settings.microinverters[action.payload.id]) {\n draft.settings.microinverters[action.payload.id][action.payload.prop] = action.payload.value;\n }\n return draft;\n }\n\n if (action.type === AutoStringActionType.SolarPanelSelectionChanged) {\n draft.selectedSolarPanel = action.payload.selectedSolarPanel;\n return draft;\n }\n\n return draft;\n});\n","import React, { FC } from 'react';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { useLocaleFormat } from '@aurorasolar/common-core/src/hooks';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { formatWattage } from '@aurorasolar/common-core/src/utils';\nimport { Box } from '@rebass/grid';\n\nimport { AutoStringSelectionType, AutoStringState } from './settings-reducer';\n\ntype AutoStringSelectionSectionProps = Pick<\n AutoStringState,\n 'selectionType' | 'selectedSolarPanel' | 'selectedFillZone'\n>;\n\nconst SelectionDetails: FC<{\n componentLabel: string;\n count?: number | null;\n wattage?: number | null;\n minCount?: number;\n prefixLabel?: string;\n}> = ({ componentLabel, count, wattage, minCount = 1, prefixLabel }) => {\n const { locale } = useLocaleFormat();\n if (wattage == null || (count ?? 1) < minCount) {\n return null;\n }\n return (\n \n \n {prefixLabel != null ? `${prefixLabel} ` : null}\n {count} {componentLabel} ({formatWattage(wattage, locale)}) selected\n \n \n );\n};\n\nexport const AutoStringSelectionSection: FC = ({\n selectedFillZone,\n selectedSolarPanel,\n selectionType,\n}) => {\n if (selectionType === AutoStringSelectionType.SolarPanel) {\n return (\n \n );\n }\n if (selectionType === AutoStringSelectionType.FillZone) {\n if (selectedFillZone?.panelCount == null) {\n return (\n \n Multiple fill zones selected\n \n );\n }\n return (\n \n );\n }\n return ;\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type AutoStringInverterFragmentFragment = { __typename: 'SolarInverter', id: string, starred: boolean, isCustom: boolean, efficiencyCec?: number | null | undefined, efficiencyEuropean?: number | null | undefined, efficiencyMax?: number | null | undefined, hasExternalMppt?: boolean | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputVoltageMax?: number | null | undefined, inputVoltageMin?: number | null | undefined, inputVoltageSE?: number | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, mpptRatedPowerVoltageMax?: number | null | undefined, mpptRatedPowerVoltageMin?: number | null | undefined, mppts?: number | null | undefined, name?: string | null | undefined, numPhases?: number | null | undefined, numPhysicalDcInputs?: number | null | undefined, outputCurrent?: number | null | undefined, outputVoltageNominal?: number | null | undefined, price?: number | null | undefined, ratedPower?: number | null | undefined, usableInputCurrentMax?: number | null | undefined, usableInputPowerMax?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined };\n\nexport type AutoStringDcOptimizerFragmentFragment = { __typename: 'DcOptimizer', id: string, starred: boolean, isCustom?: boolean | null | undefined, efficiency?: number | null | undefined, efficiencyMax?: number | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputShortCircuitCurrentMax?: number | null | undefined, inputVoltageMax?: number | null | undefined, isExternalMppt?: boolean | null | undefined, isLongString?: boolean | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, maxInputCurrent?: number | null | undefined, mpptOperatingVoltageMax?: number | null | undefined, mpptOperatingVoltageMin?: number | null | undefined, mpptRangeMax?: number | null | undefined, mpptRangeMin?: number | null | undefined, name?: string | null | undefined, numInputs?: number | null | undefined, operatingModel?: string | null | undefined, optimizationBehavior?: string | null | undefined, outputCurrentMax?: number | null | undefined, outputVoltageMax?: number | null | undefined, price?: number | null | undefined, stcInputPowerMax?: number | null | undefined, systemVoltageMax?: number | null | undefined, usesSelectiveOptimization?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined };\n\nexport type SolarPanelAutoStringQueryVariables = Types.Exact<{\n id: Types.Scalars['ID'];\n}>;\n\n\nexport type SolarPanelAutoStringQuery = { __typename: 'Query', component?: { __typename: 'SolarPanel', id: string, starred: boolean, isCustom: boolean, efficiency?: number | null | undefined, height?: number | null | undefined, imp?: number | null | undefined, isc?: number | null | undefined, length?: number | null | undefined, name?: string | null | undefined, noct?: number | null | undefined, panelType?: string | null | undefined, price?: number | null | undefined, ratingPtc?: number | null | undefined, ratingStc?: number | null | undefined, tempCoeffIsc?: number | null | undefined, tempCoeffPmax?: number | null | undefined, tempCoeffVoc?: number | null | undefined, vmp?: number | null | undefined, voc?: number | null | undefined, width?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined, mlpe?: { __typename: 'MLPE', id: string, type?: string | null | undefined, isSolarInverter?: boolean | null | undefined, isDcOptimizer?: boolean | null | undefined, isCellStringOptimizer?: boolean | null | undefined, solarInverter?: { __typename: 'SolarInverter', id: string, starred: boolean, isCustom: boolean, efficiencyCec?: number | null | undefined, efficiencyEuropean?: number | null | undefined, efficiencyMax?: number | null | undefined, hasExternalMppt?: boolean | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputVoltageMax?: number | null | undefined, inputVoltageMin?: number | null | undefined, inputVoltageSE?: number | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, mpptRatedPowerVoltageMax?: number | null | undefined, mpptRatedPowerVoltageMin?: number | null | undefined, mppts?: number | null | undefined, name?: string | null | undefined, numPhases?: number | null | undefined, numPhysicalDcInputs?: number | null | undefined, outputCurrent?: number | null | undefined, outputVoltageNominal?: number | null | undefined, price?: number | null | undefined, ratedPower?: number | null | undefined, usableInputCurrentMax?: number | null | undefined, usableInputPowerMax?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined } | null | undefined, dcOptimizer?: { __typename: 'DcOptimizer', id: string, starred: boolean, isCustom?: boolean | null | undefined, efficiency?: number | null | undefined, efficiencyMax?: number | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputShortCircuitCurrentMax?: number | null | undefined, inputVoltageMax?: number | null | undefined, isExternalMppt?: boolean | null | undefined, isLongString?: boolean | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, maxInputCurrent?: number | null | undefined, mpptOperatingVoltageMax?: number | null | undefined, mpptOperatingVoltageMin?: number | null | undefined, mpptRangeMax?: number | null | undefined, mpptRangeMin?: number | null | undefined, name?: string | null | undefined, numInputs?: number | null | undefined, operatingModel?: string | null | undefined, optimizationBehavior?: string | null | undefined, outputCurrentMax?: number | null | undefined, outputVoltageMax?: number | null | undefined, price?: number | null | undefined, stcInputPowerMax?: number | null | undefined, systemVoltageMax?: number | null | undefined, usesSelectiveOptimization?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined } | null | undefined, cellStringOptimizer?: { __typename: 'CellStringOptimizer', id: string, name?: string | null | undefined, voltageLimit?: boolean | null | undefined, maxOutputVoltage?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined } | null | undefined } | null | undefined } | null | undefined };\n\nexport type AutoStringInverterQueryVariables = Types.Exact<{\n id: Types.Scalars['ID'];\n}>;\n\n\nexport type AutoStringInverterQuery = { __typename: 'Query', component?: { __typename: 'SolarInverter', id: string, starred: boolean, isCustom: boolean, efficiencyCec?: number | null | undefined, efficiencyEuropean?: number | null | undefined, efficiencyMax?: number | null | undefined, hasExternalMppt?: boolean | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputVoltageMax?: number | null | undefined, inputVoltageMin?: number | null | undefined, inputVoltageSE?: number | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, mpptRatedPowerVoltageMax?: number | null | undefined, mpptRatedPowerVoltageMin?: number | null | undefined, mppts?: number | null | undefined, name?: string | null | undefined, numPhases?: number | null | undefined, numPhysicalDcInputs?: number | null | undefined, outputCurrent?: number | null | undefined, outputVoltageNominal?: number | null | undefined, price?: number | null | undefined, ratedPower?: number | null | undefined, usableInputCurrentMax?: number | null | undefined, usableInputPowerMax?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined } | null | undefined };\n\nexport type AutoStringDcOptimizerQueryVariables = Types.Exact<{\n id: Types.Scalars['ID'];\n}>;\n\n\nexport type AutoStringDcOptimizerQuery = { __typename: 'Query', component: { __typename: 'DcOptimizer', id: string, starred: boolean, isCustom?: boolean | null | undefined, efficiency?: number | null | undefined, efficiencyMax?: number | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputShortCircuitCurrentMax?: number | null | undefined, inputVoltageMax?: number | null | undefined, isExternalMppt?: boolean | null | undefined, isLongString?: boolean | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, maxInputCurrent?: number | null | undefined, mpptOperatingVoltageMax?: number | null | undefined, mpptOperatingVoltageMin?: number | null | undefined, mpptRangeMax?: number | null | undefined, mpptRangeMin?: number | null | undefined, name?: string | null | undefined, numInputs?: number | null | undefined, operatingModel?: string | null | undefined, optimizationBehavior?: string | null | undefined, outputCurrentMax?: number | null | undefined, outputVoltageMax?: number | null | undefined, price?: number | null | undefined, stcInputPowerMax?: number | null | undefined, systemVoltageMax?: number | null | undefined, usesSelectiveOptimization?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined, isCustom: boolean } | null | undefined } };\n\nexport const AutoStringInverterFragmentFragmentDoc = gql`\n fragment AutoStringInverterFragment on SolarInverter {\n id\n starred\n isCustom\n efficiencyCec\n efficiencyEuropean\n efficiencyMax\n hasExternalMppt\n hasGlobalMppt\n inputVoltageMax\n inputVoltageMin\n inputVoltageSE\n isHuawei\n isSolarEdge\n mpptRatedPowerVoltageMax\n mpptRatedPowerVoltageMin\n mppts\n name\n numPhases\n numPhysicalDcInputs\n outputCurrent\n outputVoltageNominal\n price\n ratedPower\n usableInputCurrentMax\n usableInputPowerMax\n manufacturer {\n id\n name\n displayName\n isCustom\n }\n}\n `;\nexport const AutoStringDcOptimizerFragmentFragmentDoc = gql`\n fragment AutoStringDcOptimizerFragment on DcOptimizer {\n id\n starred\n isCustom\n efficiency\n efficiencyMax\n hasGlobalMppt\n inputShortCircuitCurrentMax\n inputVoltageMax\n isExternalMppt\n isLongString\n isHuawei\n isSolarEdge\n maxInputCurrent\n mpptOperatingVoltageMax\n mpptOperatingVoltageMin\n mpptRangeMax\n mpptRangeMin\n name\n numInputs\n operatingModel\n optimizationBehavior\n outputCurrentMax\n outputVoltageMax\n price\n stcInputPowerMax\n systemVoltageMax\n usesSelectiveOptimization\n manufacturer {\n id\n name\n displayName\n isCustom\n }\n}\n `;\nexport const SolarPanelAutoStringDocument = gql`\n query SolarPanelAutoString($id: ID!) @trace_info(traceInfo: {pod: cad}) {\n component: solarPanelById(id: $id) {\n id\n starred\n isCustom\n efficiency\n height\n imp\n isc\n length\n name\n noct\n panelType\n price\n ratingPtc\n ratingStc\n tempCoeffIsc\n tempCoeffPmax\n tempCoeffVoc\n vmp\n voc\n width\n manufacturer {\n id\n name\n displayName\n isCustom\n }\n mlpe {\n id\n type\n isSolarInverter\n isDcOptimizer\n isCellStringOptimizer\n solarInverter {\n ...AutoStringInverterFragment\n }\n dcOptimizer {\n ...AutoStringDcOptimizerFragment\n }\n cellStringOptimizer {\n id\n name\n voltageLimit\n maxOutputVoltage\n manufacturer {\n id\n name\n displayName\n isCustom\n }\n }\n }\n }\n}\n ${AutoStringInverterFragmentFragmentDoc}\n${AutoStringDcOptimizerFragmentFragmentDoc}`;\n\n/**\n * __useSolarPanelAutoStringQuery__\n *\n * To run a query within a React component, call `useSolarPanelAutoStringQuery` and pass it any options that fit your needs.\n * When your component renders, `useSolarPanelAutoStringQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useSolarPanelAutoStringQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useSolarPanelAutoStringQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(SolarPanelAutoStringDocument, options);\n }\nexport function useSolarPanelAutoStringLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(SolarPanelAutoStringDocument, options);\n }\nexport type SolarPanelAutoStringQueryHookResult = ReturnType;\nexport type SolarPanelAutoStringLazyQueryHookResult = ReturnType;\nexport type SolarPanelAutoStringQueryResult = Apollo.QueryResult;\nexport const AutoStringInverterDocument = gql`\n query AutoStringInverter($id: ID!) @trace_info(traceInfo: {pod: cad}) {\n component: solarInverterById(id: $id) {\n ...AutoStringInverterFragment\n }\n}\n ${AutoStringInverterFragmentFragmentDoc}`;\n\n/**\n * __useAutoStringInverterQuery__\n *\n * To run a query within a React component, call `useAutoStringInverterQuery` and pass it any options that fit your needs.\n * When your component renders, `useAutoStringInverterQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useAutoStringInverterQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useAutoStringInverterQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(AutoStringInverterDocument, options);\n }\nexport function useAutoStringInverterLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(AutoStringInverterDocument, options);\n }\nexport type AutoStringInverterQueryHookResult = ReturnType;\nexport type AutoStringInverterLazyQueryHookResult = ReturnType;\nexport type AutoStringInverterQueryResult = Apollo.QueryResult;\nexport const AutoStringDcOptimizerDocument = gql`\n query AutoStringDcOptimizer($id: ID!) @trace_info(traceInfo: {pod: cad}) {\n component: dcOptimizerById(id: $id) {\n ...AutoStringDcOptimizerFragment\n }\n}\n ${AutoStringDcOptimizerFragmentFragmentDoc}`;\n\n/**\n * __useAutoStringDcOptimizerQuery__\n *\n * To run a query within a React component, call `useAutoStringDcOptimizerQuery` and pass it any options that fit your needs.\n * When your component renders, `useAutoStringDcOptimizerQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useAutoStringDcOptimizerQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useAutoStringDcOptimizerQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(AutoStringDcOptimizerDocument, options);\n }\nexport function useAutoStringDcOptimizerLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(AutoStringDcOptimizerDocument, options);\n }\nexport type AutoStringDcOptimizerQueryHookResult = ReturnType;\nexport type AutoStringDcOptimizerLazyQueryHookResult = ReturnType;\nexport type AutoStringDcOptimizerQueryResult = Apollo.QueryResult;","import { useMemo } from 'react';\n\nimport { DcOptimizer, SolarPanel } from '@aurorasolar/graphql-client-schema';\n\nimport { checkStringingRules } from '../../../cad-services/src/cad-design-validator/stringing-rules';\nimport { AutoStringDcOptimizerQuery, AutoStringInverterQuery } from './components.generated';\nimport { AutoStringInverter } from './inverter-params';\nimport { AutoStringSelectionType, AutoStringState } from './settings-reducer';\n\nexport const useAutostringValidationError = ({\n panelCount,\n state: {\n inverterType,\n microinverters,\n inverters,\n design,\n solarPanel,\n selectionType,\n selectedFillZone,\n },\n dcOptimizerResult,\n microinverterResult,\n}: {\n panelCount?: number | null;\n state: AutoStringState;\n dcOptimizerResult?: AutoStringDcOptimizerQuery['component'] | DcOptimizer;\n microinverterResult?: AutoStringInverterQuery['component'];\n}) => {\n return useMemo(() => {\n const invertersToCheck =\n inverterType === AutoStringInverter.StringInverter\n ? [...inverters, ...(microinverterResult ? [microinverterResult] : [])]\n : [...microinverters];\n\n if (design?.temperatureMin == null || design?.temperatureMax == null) {\n return 'Set min and max temperature in the \"System\" tab of your design settings';\n }\n\n if (\n selectionType === AutoStringSelectionType.FillZone &&\n selectedFillZone?.solarPanelId == null\n ) {\n return 'Select only one fill zone';\n }\n\n if (solarPanel == null || (panelCount != null && panelCount < 2)) {\n return 'Select at least 2 modules';\n }\n\n if (invertersToCheck.length === 0) {\n return inverterType === AutoStringInverter.StringInverter\n ? 'Select an inverter'\n : 'Select an microinverter';\n }\n\n return checkStringingRules({\n dcOptimizer:\n inverterType === AutoStringInverter.StringInverter ? dcOptimizerResult : undefined,\n inverters: invertersToCheck,\n solarPanel: solarPanel as SolarPanel,\n temperatureMax: design?.temperatureMax,\n temperatureMin: design?.temperatureMin,\n })[0];\n }, [\n panelCount,\n design,\n microinverters,\n inverterType,\n inverters,\n solarPanel,\n dcOptimizerResult,\n microinverterResult,\n selectionType,\n selectedFillZone,\n ]);\n};\n","import { Immutable } from 'immer';\nimport React, { FC, useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react';\n\nimport {\n AutoStringModalInitType,\n AutoStringPanelInit,\n CADTriggerActionTypes,\n FillZonePreset,\n StringingSettings,\n} from '@aurorasolar/common-data-store';\nimport { CadSolarPanelFree, DcOptimizer, SolarInverter } from '@aurorasolar/graphql-client-schema';\n\nimport { useGetDesignByIdQuery } from '../cad.generated';\nimport { useInspectorSelectedModel, useInspectorState, useTriggerCadAction } from '../hooks';\nimport { AutoStringerCore } from './autostring-core';\nimport { AutoStringSelectionSection } from './autostring-selection-section';\nimport { useSolarPanelQueryFixed } from './component-query-fixed';\nimport {\n SolarPanelAutoStringQuery,\n useAutoStringDcOptimizerQuery,\n useAutoStringInverterQuery,\n} from './components.generated';\nimport { AutoStringInverter, AutoStringInverterOption } from './inverter-params';\nimport {\n AutoStringActionType,\n AutoStringSelectionType,\n AutoStringState,\n getEmptyAutoStringState,\n settingsReducer,\n} from './settings-reducer';\nimport { useAutostringValidationError } from './use-validation-error';\n\ninterface AutoStringerProps {\n data: null | AutoStringPanelInit;\n designId: string;\n onClose: () => void;\n}\n\nconst removeEmptyFields = (obj: T) => {\n Object.keys(obj).forEach((key) => {\n if (obj[key] == null) {\n delete obj[key];\n }\n });\n};\n\nconst getSelectedId = ({ selectedFillZone, selectedSolarPanel, selectionType }: AutoStringState) =>\n selectionType === AutoStringSelectionType.FillZone\n ? selectedFillZone?.solarPanelId\n : selectedSolarPanel?.databaseId;\n\nconst DEFAULT_DC_AC_RATIO = 1.2;\nconst EMPTY_STRING_LENGTH = NaN;\n\nconst getSettings = (\n {\n inverterType,\n selectionType,\n selectedFillZone,\n settings,\n integratedDcOptimizer,\n dcOptimizer,\n selectedSolarPanel,\n }: AutoStringState,\n microinverterId: string | null | undefined,\n): StringingSettings | undefined => {\n if (\n selectionType === AutoStringSelectionType.SolarPanel &&\n selectedSolarPanel?.databaseId == null\n ) {\n console.warn('no solar panel id found');\n return undefined;\n }\n\n if (\n selectionType === AutoStringSelectionType.FillZone &&\n selectedFillZone?.solarPanelId == null\n ) {\n console.warn('no fill zone solar panel id found');\n return undefined;\n }\n\n const inverterSettings =\n inverterType === AutoStringInverter.StringInverter\n ? settings.inverters\n : settings.microinverters;\n\n const dcOptimizerId =\n inverterType === AutoStringInverter.StringInverter\n ? integratedDcOptimizer?.id || dcOptimizer?.id\n : undefined;\n\n const [setting1, setting2, setting3] = Object.entries(inverterSettings).map(([id, value]) => ({\n id,\n ...value,\n }));\n\n const params = {\n dcAcRatio1: setting1?.dcAcRatio ?? DEFAULT_DC_AC_RATIO,\n dcAcRatio2: setting2?.dcAcRatio ?? DEFAULT_DC_AC_RATIO,\n dcAcRatio3: setting3?.dcAcRatio ?? DEFAULT_DC_AC_RATIO,\n dcOptimizerId,\n inverterId1: setting1?.id,\n inverterId2: setting2?.id,\n inverterId3: setting3?.id,\n maxStringLength1: setting1?.maxStringLength ?? EMPTY_STRING_LENGTH,\n maxStringLength2: setting2?.maxStringLength ?? EMPTY_STRING_LENGTH,\n maxStringLength3: setting3?.maxStringLength ?? EMPTY_STRING_LENGTH,\n microinverterId,\n minStringLength1: setting1?.minStringLength ?? EMPTY_STRING_LENGTH,\n minStringLength2: setting2?.minStringLength ?? EMPTY_STRING_LENGTH,\n minStringLength3: setting3?.minStringLength ?? EMPTY_STRING_LENGTH,\n preset: FillZonePreset['(none selected)'],\n solarPanelId:\n selectionType === AutoStringSelectionType.FillZone\n ? selectedFillZone?.solarPanelId!\n : selectedSolarPanel?.databaseId!,\n };\n\n removeEmptyFields(params);\n\n return params;\n};\n\nconst useAutoStringInitialComponents = ({\n state,\n initData,\n}: {\n state: AutoStringState;\n initData: null | AutoStringPanelInit;\n}) => {\n let initialDcOptimizerId: string | null | undefined = null;\n let initialMicroinverterId: string | null | undefined = null;\n\n const initialSolarPanelRefs = useRef<{\n selectedSolarPanel: CadSolarPanelFree | undefined;\n solarPanel: AutoStringState['solarPanel'] | undefined;\n }>({\n selectedSolarPanel: undefined,\n solarPanel: undefined,\n });\n\n if (!initData) {\n if (!initialSolarPanelRefs.current.selectedSolarPanel) {\n initialSolarPanelRefs.current.selectedSolarPanel = state.selectedSolarPanel;\n }\n if (!initialSolarPanelRefs.current.solarPanel) {\n initialSolarPanelRefs.current.solarPanel = state.solarPanel;\n }\n initialDcOptimizerId = initialSolarPanelRefs.current.solarPanel?.mlpe?.isDcOptimizer\n ? undefined\n : initialSolarPanelRefs.current.selectedSolarPanel?.dcOptimizerId;\n } else if (initData.type === AutoStringModalInitType.DcOptimizer) {\n initialDcOptimizerId = initData.id;\n } else {\n initialMicroinverterId = initData.id;\n }\n\n const initialDcOptimizerResult = useAutoStringDcOptimizerQuery({\n fetchPolicy: 'cache-first',\n skip: !initialDcOptimizerId,\n variables: {\n id: initialDcOptimizerId!,\n },\n }).data?.component;\n\n const initialMicroinverterResult = useAutoStringInverterQuery({\n fetchPolicy: 'cache-first',\n skip: !initialMicroinverterId,\n variables: {\n id: initialMicroinverterId!,\n },\n }).data?.component;\n\n return {\n initialDcOptimizerResult,\n initialMicroinverterResult,\n };\n};\n\nexport const AutoStringer: FC = ({ designId, onClose, data: initData }) => {\n const [autoParams, updateAutoParams] = useState(true);\n const [selectedSolarPanel] = useInspectorState('solarPanel_free');\n const [selectedFillZone] = useInspectorState('fillZone');\n const { isSelected } = useInspectorSelectedModel();\n const [state, dispatch] = useReducer(settingsReducer, getEmptyAutoStringState());\n const { inverterType, microinverters, dcOptimizer, settings, inverters } = state;\n const { selectionSize } = selectedSolarPanel;\n\n useEffect(() => {\n const payload = { selectionId: undefined, selectionType: AutoStringSelectionType.Nothing };\n\n if (isSelected('fillZone')) {\n payload.selectionType = AutoStringSelectionType.FillZone;\n } else if (isSelected('solarPanel_free')) {\n payload.selectionType = AutoStringSelectionType.SolarPanel;\n }\n\n dispatch({ payload, type: AutoStringActionType.SelectionTypeChanged });\n }, [isSelected]);\n\n useEffect(() => {\n dispatch({\n payload: { selectedSolarPanel },\n type: AutoStringActionType.SolarPanelSelectionChanged,\n });\n }, [selectedSolarPanel]);\n\n const selectedPanelId = useMemo(() => getSelectedId(state), [state]);\n\n useGetDesignByIdQuery({\n onCompleted: (data) => {\n dispatch({ payload: { design: data.designById }, type: AutoStringActionType.DesignChanged });\n },\n skip: !designId,\n variables: {\n id: designId,\n },\n });\n\n const onSolarPanelQueryCompleted = useCallback(\n (solarPanel: SolarPanelAutoStringQuery['component']) => {\n dispatch({\n payload: { solarPanel },\n type: AutoStringActionType.SolarPanelQueryFinished,\n });\n },\n [dispatch],\n );\n\n useSolarPanelQueryFixed({\n onCompleted: onSolarPanelQueryCompleted,\n selectedPanelId,\n });\n\n const microinverterId = state.solarPanel?.mlpe?.isSolarInverter ? state.solarPanel.mlpe.id : null;\n\n const microinverterResult = useAutoStringInverterQuery({\n fetchPolicy: 'cache-first',\n skip: !microinverterId,\n variables: {\n id: microinverterId!,\n },\n }).data?.component;\n\n const integratedDcOptimizerId = state.solarPanel?.mlpe?.isDcOptimizer\n ? state.solarPanel.mlpe.id\n : null;\n\n const integratedDcOptimizerResult = useAutoStringDcOptimizerQuery({\n fetchPolicy: 'cache-first',\n skip: !integratedDcOptimizerId,\n variables: {\n id: integratedDcOptimizerId!,\n },\n }).data?.component;\n\n const validationError: string | undefined = useAutostringValidationError({\n dcOptimizerResult: integratedDcOptimizerResult || dcOptimizer || undefined,\n microinverterResult,\n panelCount: selectionSize,\n state,\n });\n\n useEffect(() => {\n if (integratedDcOptimizerResult != null) {\n dispatch({\n payload: { integratedDcOptimizer: integratedDcOptimizerResult },\n type: AutoStringActionType.UpdateIntegratedDcOptimizer,\n });\n }\n }, [integratedDcOptimizerResult]);\n\n const { initialDcOptimizerResult, initialMicroinverterResult } = useAutoStringInitialComponents({\n initData,\n state,\n });\n\n useEffect(() => {\n if (initData?.type === AutoStringModalInitType.DcOptimizer) {\n dispatch({\n payload: { inverterType: AutoStringInverter.StringInverter },\n type: AutoStringActionType.SetInverterType,\n });\n } else if (initData?.type === AutoStringModalInitType.Microinverter) {\n dispatch({\n payload: { inverterType: AutoStringInverter.Microinverter },\n type: AutoStringActionType.SetInverterType,\n });\n }\n }, [initData]);\n\n useEffect(() => {\n if (initialDcOptimizerResult) {\n dispatch({\n payload: { dcOptimizer: initialDcOptimizerResult },\n type: AutoStringActionType.AddDcOptimizer,\n });\n }\n }, [initialDcOptimizerResult]);\n\n useEffect(() => {\n if (initialMicroinverterResult) {\n dispatch({\n payload: { microinverter: initialMicroinverterResult },\n type: AutoStringActionType.AddMicroinverter,\n });\n }\n }, [initialMicroinverterResult]);\n\n useEffect(() => {\n dispatch({\n payload: { selectedFillZone },\n type: AutoStringActionType.FillZoneSelectionChanged,\n });\n }, [selectedFillZone]);\n\n const setInverterType = (newInverterType: AutoStringInverter) =>\n dispatch({\n payload: { inverterType: newInverterType },\n type: AutoStringActionType.SetInverterType,\n });\n\n const addInverter = (newInverter: Immutable) =>\n dispatch({\n payload: { inverter: newInverter },\n type: AutoStringActionType.AddInverter,\n });\n\n const removeInverter = (oldInverter: Immutable) =>\n dispatch({\n payload: { inverter: oldInverter },\n type: AutoStringActionType.RemoveInverter,\n });\n\n const addMicroinverter = (newMicroinverter: Immutable) =>\n dispatch({\n payload: { microinverter: newMicroinverter },\n type: AutoStringActionType.AddMicroinverter,\n });\n\n const removeMicroinverter = (oldMicroinverter: Immutable) =>\n dispatch({\n payload: { microinverter: oldMicroinverter },\n type: AutoStringActionType.RemoveMicroinverter,\n });\n\n const updateAutoParamsSettings = (value: boolean) => {\n updateAutoParams(value);\n if (value) {\n dispatch({ type: AutoStringActionType.UpdateAutoParams });\n }\n };\n\n const updateSetting = (id: string, prop: keyof AutoStringInverterOption, value: number) => {\n dispatch({ payload: { id, prop, value }, type: AutoStringActionType.UpdateSetting });\n };\n\n const addDcOptimizer = (newDcOptimizer: Immutable) =>\n dispatch({\n payload: { dcOptimizer: newDcOptimizer },\n type: AutoStringActionType.AddDcOptimizer,\n });\n\n const removeDcOptimizer = (oldDcOptimizer: Immutable) =>\n dispatch({\n payload: { dcOptimizer: oldDcOptimizer },\n type: AutoStringActionType.RemoveDcOptimizer,\n });\n\n const stringFillZone = useTriggerCadAction(CADTriggerActionTypes.StringFillZones);\n const stringPanels = useTriggerCadAction(CADTriggerActionTypes.RunAutoStringer);\n const run = useCallback(() => {\n const params = { settings: getSettings(state, microinverterId) };\n if (params.settings == null) {\n return;\n }\n if (state.selectionType === AutoStringSelectionType.FillZone) {\n stringFillZone(params);\n onClose();\n return;\n }\n if (state.selectionType === AutoStringSelectionType.SolarPanel) {\n stringPanels(params);\n onClose();\n }\n }, [state, microinverterId, onClose, stringFillZone, stringPanels]);\n\n return (\n \n }\n dcOptimizer={dcOptimizer || undefined}\n integratedMicroinverter={microinverterResult || undefined}\n inverters={inverters}\n inverterType={inverterType}\n microinverters={microinverters}\n onCancel={onClose}\n onRun={run}\n removeDcOptimizer={removeDcOptimizer}\n removeInverter={removeInverter}\n removeMicroinverter={removeMicroinverter}\n setInverterType={setInverterType}\n settings={settings}\n solarPanel={state.solarPanel || undefined}\n updateAutoParams={updateAutoParamsSettings}\n updateSettings={updateSetting}\n validationError={validationError}\n />\n );\n};\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { useLocaleFormat } from '@aurorasolar/common-core/src/hooks';\nimport { defaultButtonBorderRadius, SPACES } from '@aurorasolar/common-core/src/layout';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { formatOrFallback, formatWattage } from '@aurorasolar/common-core/src/utils';\nimport { Radio } from '@blueprintjs/core';\nimport { Flex } from '@rebass/grid';\n\nimport { useSolarPanelAutoStringQuery } from './components.generated';\n\nconst Row = styled(Flex)`\n background: ${Colors.WHITE};\n border-radius: ${defaultButtonBorderRadius}px;\n padding: ${SPACES[0]}px;\n border: 1px solid ${Colors.GRAY_300};\n margin-top: ${SPACES[0]}px;\n flex-grow: 1;\n justify-content: space-between;\n`;\nconst ListItem = styled.li`\n list-style: none;\n`;\nconst RadioEl = styled(Radio)`\n margin: 0;\n`;\n\ninterface AutoStringerChoosePanelItemProps {\n solarPanelId: string;\n onSelect(): void;\n selectedId?: string;\n}\n\nexport const AutoStringerChoosePanelItem: FC = ({\n solarPanelId,\n onSelect,\n selectedId,\n}) => {\n const { locale } = useLocaleFormat();\n\n const solarPanel = useSolarPanelAutoStringQuery({\n fetchPolicy: 'cache-first',\n variables: { id: solarPanelId },\n }).data?.component;\n\n if (!solarPanel) {\n return ;\n }\n return (\n \n \n \n \n \n \n {solarPanel?.manufacturer?.name}\n \n {solarPanel?.name}\n \n \n {formatOrFallback(solarPanel?.ratingStc, (value) => formatWattage(value, locale), '')}\n \n \n \n \n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type AutoStringerChoosePanelsTypesQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type AutoStringerChoosePanelsTypesQuery = { __typename: 'Query', CAD: { __typename: 'CAD', panelTypes: Array } };\n\n\nexport const AutoStringerChoosePanelsTypesDocument = gql`\n query AutoStringerChoosePanelsTypes @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n panelTypes\n }\n}\n `;\n\n/**\n * __useAutoStringerChoosePanelsTypesQuery__\n *\n * To run a query within a React component, call `useAutoStringerChoosePanelsTypesQuery` and pass it any options that fit your needs.\n * When your component renders, `useAutoStringerChoosePanelsTypesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useAutoStringerChoosePanelsTypesQuery({\n * variables: {\n * },\n * });\n */\nexport function useAutoStringerChoosePanelsTypesQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(AutoStringerChoosePanelsTypesDocument, options);\n }\nexport function useAutoStringerChoosePanelsTypesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(AutoStringerChoosePanelsTypesDocument, options);\n }\nexport type AutoStringerChoosePanelsTypesQueryHookResult = ReturnType;\nexport type AutoStringerChoosePanelsTypesLazyQueryHookResult = ReturnType;\nexport type AutoStringerChoosePanelsTypesQueryResult = Apollo.QueryResult;","import React, { FC, useCallback, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { AuroraThemedButton, AuroraThemedButtonIntent } from '@aurorasolar/common-core/src/button';\nimport { Text } from '@aurorasolar/common-core/src/typography';\nimport { CADTriggerActionTypes } from '@aurorasolar/common-data-store';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { ShrinkableHeader } from '../autodesigner/shrinkable-header';\nimport { useCadRightPanelAction, useTriggerCadAction } from '../hooks';\nimport { AutoStringerChoosePanelItem } from './choose-panel-item';\nimport { useAutoStringerChoosePanelsTypesQuery } from './choose-panel.generated';\n\nconst PanelBody = styled(Box).attrs({ flex: '1 1 auto' })`\n padding: 0 20px 24px 20px;\n overflow-y: auto;\n`;\nconst BottomArea = styled(Flex).attrs({ flexDirection: 'row-reverse' })`\n height: 80px;\n background: white;\n border-top: solid 1px #e0e0e0;\n padding: 20px;\n`;\n\ninterface AutoStringerChoosePanelProps {\n data: undefined;\n onClose(): void;\n designId: string;\n}\n\nexport const AutoStringerChoosePanel: FC = ({ onClose }) => {\n const openAutoStringer = useCadRightPanelAction(CADTriggerActionTypes.BeforeRunAutoStringer);\n const selectPanelInCad = useTriggerCadAction(CADTriggerActionTypes.SelectPanelType);\n const choosePanel = useCallback(\n (solarPanelId: string) => {\n selectPanelInCad({ solarPanelId });\n openAutoStringer(null);\n },\n [openAutoStringer, selectPanelInCad],\n );\n\n const solarPanelTypes = useAutoStringerChoosePanelsTypesQuery({\n returnPartialData: true,\n })?.data?.CAD?.panelTypes;\n\n const [selected, setSelected] = useState();\n\n return (\n \n AutoString\n \n \n Multiple module types are present: Select a module type to AutoString.\n \n \n \n *AutoString is not available for ground mounts at this time.\n \n \n \n {solarPanelTypes?.map((typeId) => (\n setSelected(typeId)}\n selectedId={selected}\n solarPanelId={typeId}\n />\n ))}\n \n \n\n \n \n choosePanel(selected!)}\n >\n Continue\n \n \n \n \n Cancel\n \n \n \n \n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type CadRightPanelQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type CadRightPanelQuery = { __typename: 'Query', CAD: { __typename: 'CAD', activeRightPanel?: Types.CadRightPanel | null | undefined, activeRightPanelData?: any | null | undefined } };\n\n\nexport const CadRightPanelDocument = gql`\n query CadRightPanel @trace_info(traceInfo: {pod: cad}) {\n CAD @client {\n activeRightPanel\n activeRightPanelData\n }\n}\n `;\n\n/**\n * __useCadRightPanelQuery__\n *\n * To run a query within a React component, call `useCadRightPanelQuery` and pass it any options that fit your needs.\n * When your component renders, `useCadRightPanelQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useCadRightPanelQuery({\n * variables: {\n * },\n * });\n */\nexport function useCadRightPanelQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(CadRightPanelDocument, options);\n }\nexport function useCadRightPanelLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(CadRightPanelDocument, options);\n }\nexport type CadRightPanelQueryHookResult = ReturnType;\nexport type CadRightPanelLazyQueryHookResult = ReturnType;\nexport type CadRightPanelQueryResult = Apollo.QueryResult;","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { cadSlideInPanelWidth } from '@aurorasolar/common-core/src/layout';\n\nimport { cadZIndex } from '../z-index';\n\nconst StyledSlideInPanel = styled.div`\n background: ${Colors.GRAY_100};\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n transform: translateX(101%);\n transition: transform 0.2s ease;\n display: flex;\n\n &[aria-label='open panel'] {\n width: ${cadSlideInPanelWidth}px;\n transform: translateX(0);\n }\n`;\n\nexport interface SlideInPanelProps {\n isOpen: boolean;\n onClosed: () => void;\n /**\n * Used for compatibility with new borealis styles\n */\n zIndex?: number;\n}\n\nexport const SlideInPanel: FC = ({\n isOpen,\n children,\n onClosed,\n zIndex = cadZIndex.slideInPanel,\n}) => {\n const onTransitionEnd = () => {\n if (!isOpen) {\n onClosed();\n }\n };\n return (\n \n {children}\n \n );\n};\n","import React, { FC, useCallback, useState } from 'react';\nimport { useCurrentRoute } from 'react-navi';\n\nimport { tokens, useAppModule } from '@aurorasolar/common-module-loader';\nimport { CadRightPanel as CadRightPanelType } from '@aurorasolar/graphql-client-schema';\n\nimport { AutoDesigner } from '../autodesigner';\nimport { AutoStringer, AutoStringerChoosePanel } from '../autostring';\nimport {\n CadRightPanelDocument,\n CadRightPanelQuery,\n useCadRightPanelQuery,\n} from './cad-right-panel.generated';\nimport { SlideInPanel } from './slide-in-panel';\n\ntype RightPanelProps = {\n data: CadRightPanelQuery['CAD']['activeRightPanelData'];\n onClose(): void;\n designId: string;\n};\n\nconst panelMap = new Map>([\n [CadRightPanelType.AutoDesigner, AutoDesigner],\n [CadRightPanelType.AutoStringer, AutoStringer],\n [CadRightPanelType.AutoStringerChoosePanel, AutoStringerChoosePanel],\n]);\n\nconst isPanelActive = (panel: CadRightPanelType | null | undefined): panel is CadRightPanelType =>\n panel != null;\n\nexport const CadRightPanel: FC<{ zIndex?: number }> = ({ zIndex }) => {\n const { designId }: { designId?: string } = useCurrentRoute()?.data ?? {};\n const cadQuery = useCadRightPanelQuery({\n returnPartialData: true,\n }).data?.CAD;\n const activePanel = cadQuery?.activeRightPanel ?? null;\n const activePanelData = cadQuery?.activeRightPanelData ?? null;\n const client = useAppModule(tokens.ApolloClient);\n const [isClosing, setIsClosing] = useState(false);\n const closePanel = useCallback(() => {\n client?.writeQuery({\n data: {\n __typename: 'Query',\n CAD: {\n __typename: 'CAD',\n activeRightPanel: null,\n activeRightPanelData: null,\n },\n },\n query: CadRightPanelDocument,\n });\n setIsClosing(false);\n }, [client]);\n const hasActivePanel = isPanelActive(activePanel);\n const Contents = hasActivePanel && panelMap.get(activePanel!);\n return (\n \n {designId && Contents && (\n setIsClosing(true)} />\n )}\n \n );\n};\n","import { useEffect, useMemo } from 'react';\n\nimport { ApolloClient, useAppModule } from '@aurorasolar/common-module-loader';\n\nimport {\n SolarPanelAutoStringDocument,\n SolarPanelAutoStringQuery,\n SolarPanelAutoStringQueryVariables,\n} from './components.generated';\n\n/**\n * Apollo cache has a bug that results in returning\n * null for cellStringOptimizer on panels when\n * panel is switched from one to another. The fix is to\n * use \"network-only\" requests and \"manage\" cache locally\n * within the component.\n */\nexport const useSolarPanelQueryFixed = ({\n selectedPanelId,\n onCompleted,\n}: {\n selectedPanelId: string | null | undefined;\n onCompleted: (data: SolarPanelAutoStringQuery['component']) => void;\n}) => {\n const client = useAppModule(ApolloClient);\n const solarPanelCache = useMemo(\n () => new Map(),\n [],\n );\n\n useEffect(() => {\n if (!client) {\n return undefined;\n }\n\n if (!selectedPanelId) {\n onCompleted(undefined);\n return undefined;\n }\n\n const solarPanel = solarPanelCache.get(selectedPanelId);\n if (solarPanel) {\n onCompleted(solarPanel);\n return undefined;\n }\n\n let isCancelled = false;\n client\n .query({\n fetchPolicy: 'network-only',\n query: SolarPanelAutoStringDocument,\n variables: {\n id: selectedPanelId,\n },\n })\n .then(({ data }) => {\n if (!isCancelled) {\n solarPanelCache.set(selectedPanelId, data.component);\n onCompleted(data.component);\n }\n return null;\n })\n .catch((error) => {\n console.error(error);\n });\n\n return () => {\n isCancelled = true;\n };\n }, [onCompleted, selectedPanelId, solarPanelCache, client]);\n};\n","import React, { FunctionComponent, useMemo, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { FullDivider } from '@aurorasolar/common-core/src/divider';\nimport { smallButtonBorderRadius } from '@aurorasolar/common-core/src/layout';\nimport { AnalyticsEventTypes } from '@aurorasolar/common-module-loader';\nimport * as DS from '@aurorasolar/ds';\nimport { Flex } from '@rebass/grid';\n\nimport { AutoRoof, AutoRoofModal } from './autoroof';\nimport { CadControlsBar } from './cad-controls-bar/cad-controls-bar';\nimport { CadMap } from './cad-map';\nimport { CadModals } from './cad-modals';\nimport { CadOverlay } from './cad-overlay';\nimport { useCadOverviewQuery } from './cad-overview.generated';\nimport { CadRightPanel } from './cad-right-panel/cad-right-panel';\nimport { CadWrapper } from './cad-wrapper';\nimport { InspectorRenderer } from './inspector/inspector-renderer/inspector-renderer';\nimport { CadContextProvider, CadContextValue } from './use-cad/cad-context';\nimport { useProCad } from './use-cad/use-pro-cad';\nimport { cadZIndex } from './z-index';\n\nconst CadArea = styled(Flex).attrs(() => ({\n id: 'cad-region', // used by cad for map split\n}))`\n overflow: hidden;\n position: relative;\n flex-grow: 1;\n`;\nconst CadVerticalWrap = styled(Flex)`\n background-color: ${Colors.GRAY_200};\n position: relative;\n z-index: ${cadZIndex.overlay};\n flex: 1 1 100%;\n justify-content: space-between;\n flex-direction: column;\n height: fill-available;\n`;\n\nconst DropdownPortal = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: ${cadZIndex.dropdown};\n\n .bp3-portal {\n position: static;\n }\n`;\n\nconst ToastWrap = styled.div.attrs(() => ({\n className: 'cad-viewport',\n}))`\n @keyframes cad-toast-pop {\n from {\n transform: translateY(100%) translateX(-50%);\n }\n }\n\n .cad-toast-message {\n position: absolute;\n z-index: ${cadZIndex.overlay};\n left: 50%;\n bottom: 0;\n background: ${Colors.PRIMARY_GREEN};\n padding: 8px 16px 16px;\n color: ${Colors.WHITE};\n transform: translateY(0) translateX(-50%);\n animation: cad-toast-pop 0.2s ease;\n border-radius: ${smallButtonBorderRadius}px ${smallButtonBorderRadius}px 0 0;\n\n &.error {\n background: ${Colors.RED};\n }\n }\n`;\n\ninterface CadOverviewProps {\n designId: string;\n projectId: string;\n}\n\nexport const CadOverview: FunctionComponent = ({ designId, projectId }) => {\n const dropdownPortal = useRef(null);\n const isCadAvailable =\n useCadOverviewQuery({\n returnPartialData: true,\n }).data?.CAD?.isCadStateAvailable === true;\n\n const cadContextValue = useMemo(() => ({ isLoaded: false }), []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n {isCadAvailable && }\n \n \n \n \n \n \n \n \n );\n};\n","import { map, NaviRequest, redirect, route } from 'navi';\nimport React from 'react';\n\nimport { Zones, ZoneView } from '@aurorasolar/common-core/src/zone';\nimport { INavigationContext, NavigationGuardFunction } from '@aurorasolar/common-module-loader';\n\nimport { CadOverview } from './cad-overview';\nimport {\n CadOverviewRoutesDocument,\n CadOverviewRoutesQuery,\n CadOverviewRoutesQueryVariables,\n} from './cad-overview.generated';\n\nexport const unsavedChangesGuard =\n (originalRequest: NaviRequest): NavigationGuardFunction =>\n async (matcher, request, context) => {\n const result = context.client.cache.readQuery<\n CadOverviewRoutesQuery,\n CadOverviewRoutesQueryVariables\n >({\n query: CadOverviewRoutesDocument,\n returnPartialData: true,\n });\n\n if (!result?.CAD?.hasUnsavedChanges) {\n return matcher;\n }\n\n const search = new URLSearchParams(originalRequest.search);\n search.append('redirectTo', request.originalUrl);\n\n return redirect(`${originalRequest.mountpath}?${search}`, {\n exact: false,\n });\n };\n\nexport const routes = map(async (request, context) => {\n if (!request.params.redirectTo) {\n context.guard.add(unsavedChangesGuard(request));\n }\n return route(async () => ({\n data: {\n designId: request.params.designId,\n projectId: request.params.projectId,\n section: 'system_design',\n },\n view: (\n \n \n \n ),\n }));\n});\n","import { useEffect, useState } from 'react';\n\nimport { AppConfig, AuthToken, useAppModule } from '@aurorasolar/common-module-loader';\n\nenum ProposalPath {\n PROPOSAL = 'proposals',\n TEMPLATE = 'proposal-templates',\n}\n\nexport const useProposalTemplateIFrameSrc = (id: string) => {\n return useIFrameSrc(id, ProposalPath.TEMPLATE);\n};\n\nexport const useProposalIFrameSrc = (id: string) => {\n return useIFrameSrc(id, ProposalPath.PROPOSAL);\n};\n\nconst useIFrameSrc = (id: string, path: ProposalPath) => {\n const [iframeSrc, setIframeSrc] = useState('');\n const token$ = useAppModule(AuthToken);\n const appConfig = useAppModule(AppConfig);\n\n useEffect(() => {\n if (token$ && appConfig) {\n const host = appConfig.proposalsIFrameHost;\n const token = token$.getValue();\n setIframeSrc(`//${host}/${path}/${id}?authToken=${token}`);\n }\n }, [appConfig, id, path, token$]);\n\n return iframeSrc;\n};\n","import React, { FC, useCallback, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Loader } from '@aurorasolar/common-core/src/loader';\n\nconst StyledIFrame = styled.iframe`\n border: none;\n height: 100%;\n width: 100%;\n`;\n\nconst StyledLoader = styled(Loader)`\n position: absolute;\n height: 100%;\n width: 100%;\n background-color: white;\n`;\n\nexport const ProposalIFrame: FC<{ iframeSrc: string; useLoader?: boolean }> = ({\n iframeSrc,\n useLoader = true,\n}) => {\n const iframe = useRef(null);\n const [loading, setLoading] = useState(useLoader);\n\n const handleIFrameLoad = useCallback((event) => {\n setLoading(false);\n event.target.focus(); // Fixes bug with holding spacebar to pan CAD\n }, []);\n return (\n <>\n {loading && }\n \n \n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { Loader, LoaderProps } from '@aurorasolar/common-core/src/loader';\nimport { AppConfig, AuthToken, useAppModule } from '@aurorasolar/common-module-loader';\nimport { ProposalIFrame } from '@aurorasolar/common-proposal-iframe';\n\n// Messages from the iframe\nconst PORTAL_LOADED_MESSAGE = 'shade-report-portal-loaded';\nconst MODEL_LOADED_MESSAGE = 'shade-report-model-loaded';\n\nenum ShadeReportState {\n ROUTE_LOADING,\n MODEL_LOADING,\n LOADED,\n}\nconst ShadeReportLoader = styled>(Loader)`\n position: absolute;\n z-index: 2;\n height: 100%;\n width: 100%;\n && {\n .bp3-spinner-head {\n transition: stroke 0.5s ease;\n stroke: ${({ white }) => (white ? Colors.WHITE : Colors.PRIMARY_GREEN)};\n }\n }\n`;\nconst EmptyShadeReport = styled.div<{ state: ShadeReportState }>`\n background: ${Colors.GRAY_500};\n height: 100%;\n width: 100%;\n overflow: hidden;\n position: relative;\n\n &::before {\n /* simulates the V1 title bar */\n content: 'Shade Report';\n position: absolute;\n background: ${Colors.WHITE};\n width: 100%;\n height: 64px;\n line-height: 64px;\n top: 0;\n padding-left: 32px;\n font-size: 20px;\n font-weight: 500;\n }\n\n iframe {\n transition: opacity 0.5s ease;\n opacity: ${({ state }) => (state === ShadeReportState.ROUTE_LOADING ? 0 : 1)};\n width: 100%;\n height: 100%;\n position: relative;\n z-index: 1;\n }\n`;\n\nexport const ShadeReport: FC<{ designId: string; projectId: string }> = ({\n designId,\n projectId,\n}) => {\n const [state, setState] = useState(ShadeReportState.ROUTE_LOADING);\n const [iframeSrc, setIframeSrc] = useState('');\n const token$ = useAppModule(AuthToken);\n const appConfig = useAppModule(AppConfig);\n\n useEffect(() => {\n const listenForPortalLoad = (event: MessageEvent) => {\n setState((previousState) => {\n if (\n previousState === ShadeReportState.ROUTE_LOADING &&\n event.data === PORTAL_LOADED_MESSAGE\n ) {\n return ShadeReportState.MODEL_LOADING;\n }\n if (\n previousState === ShadeReportState.MODEL_LOADING &&\n event.data === MODEL_LOADED_MESSAGE\n ) {\n return ShadeReportState.LOADED;\n }\n return previousState;\n });\n };\n window.addEventListener('message', listenForPortalLoad);\n\n return () => {\n window.removeEventListener('message', listenForPortalLoad);\n };\n }, []);\n\n useEffect(() => {\n if (token$ == null || appConfig == null) {\n return () => {};\n }\n const tokenSubscription = token$.subscribe((token) => {\n const host = appConfig.proposalsIFrameHost;\n const path = `/projects/${projectId}/designs/${designId}/shade-report-portal`;\n setIframeSrc(`//${host}${path}?authToken=${token}`);\n });\n\n return () => tokenSubscription.unsubscribe();\n }, [designId, projectId, token$, appConfig]);\n return (\n \n {state !== ShadeReportState.LOADED && (\n \n )}\n ;\n \n );\n};\n","import { route } from 'navi';\nimport React from 'react';\n\nimport { Zones, ZoneView } from '@aurorasolar/common-core/src/zone';\n\nimport { ShadeReport } from './shade-report';\n\nexport const shadeReportRoutes = route((request) => ({\n data: { section: 'documents' },\n view: (\n \n \n \n ),\n}));\n","import { SystemComponentSearchQuery } from './system-components.generated';\n\n/**\n * The types of system components that can be queried.\n *\n * The string values are used by the UI\n */\nexport enum SystemComponentType {\n CombinerBox = 'Combiner box',\n DcOptimizer = 'DC optimizer',\n Disconnect = 'Disconnect',\n LoadCenter = 'Load center',\n Meter = 'Meter',\n ServicePanel = 'Service panel',\n SolarInverter = 'Solar inverter',\n SolarPanel = 'Solar panel',\n Microinverter = 'Microinverter',\n SingleInputMicroinverter = 'Single input microinverter',\n}\n\n/**\n * Maps a `SystemComponentType` enum to the associated GraphQL __typename.\n */\nexport type SystemComponentTypename =\n T extends SystemComponentType.CombinerBox\n ? 'CombinerBox'\n : T extends SystemComponentType.DcOptimizer\n ? 'DcOptimizer'\n : T extends SystemComponentType.Disconnect\n ? 'Disconnect'\n : T extends SystemComponentType.LoadCenter\n ? 'LoadCenter'\n : T extends SystemComponentType.Meter\n ? 'Meter'\n : T extends SystemComponentType.ServicePanel\n ? 'ServicePanel'\n : T extends SystemComponentType.SolarInverter\n ? 'SolarInverter'\n : T extends SystemComponentType.SolarPanel\n ? 'SolarPanel'\n : T extends SystemComponentType.Microinverter\n ? 'SolarInverter'\n : T extends SystemComponentType.SingleInputMicroinverter\n ? 'SolarInverter'\n : never;\n\n/**\n * A system electrical component\n * contains all of the fields necessary for CAD\n * and all fields necessary to display in the UI\n */\nexport type SystemComponent =\n SystemComponentSearchQuery['componentSearch']['components'][0] & {\n __typename: SystemComponentTypename;\n };\n","import { ComponentTypes } from '@aurorasolar/graphql-client-schema';\n\nimport { SystemComponentType } from './system-component-types';\nimport { SystemComponentSearchQueryVariables } from './system-components.generated';\n\nexport const componentQueryParams: Record<\n SystemComponentType,\n {\n type: ComponentTypes;\n filter?: SystemComponentSearchQueryVariables['input']['filter'];\n }\n> = {\n [SystemComponentType.CombinerBox]: { type: ComponentTypes.CombinerBox },\n [SystemComponentType.DcOptimizer]: { type: ComponentTypes.DcOptimizer },\n [SystemComponentType.Disconnect]: { type: ComponentTypes.Disconnect },\n [SystemComponentType.LoadCenter]: { type: ComponentTypes.LoadCenter },\n [SystemComponentType.Meter]: { type: ComponentTypes.Meter },\n [SystemComponentType.Microinverter]: {\n filter: { isMicroinverter: true, isSolarCompatible: true },\n type: ComponentTypes.SolarInverter,\n },\n [SystemComponentType.ServicePanel]: { type: ComponentTypes.ServicePanel },\n [SystemComponentType.SolarInverter]: {\n filter: { isMicroinverter: false, isSolarCompatible: true },\n type: ComponentTypes.SolarInverter,\n },\n [SystemComponentType.SolarPanel]: {\n type: ComponentTypes.SolarPanel,\n },\n [SystemComponentType.SingleInputMicroinverter]: {\n filter: { isMicroinverter: true, isSingleInputMicroinverter: true, isSolarCompatible: true },\n type: ComponentTypes.SolarInverter,\n },\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport { CadRequiredComponentPropertiesFragmentDoc } from '../../../common/packages/data-access-layer/src/graphql/cad-electrical-components-fragment.generated';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type SystemComponentSearchQueryVariables = Types.Exact<{\n input: Types.ComponentSearchQuery;\n}>;\n\n\nexport type SystemComponentSearchQuery = { __typename: 'Query', componentSearch: { __typename: 'ComponentSearchResult', components: Array<{ __typename: 'Battery', id: string, name?: string | null | undefined, starred: boolean, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'CombinerBox', id: string, name?: string | null | undefined, starred: boolean, fuseRating?: number | null | undefined, voltageRating?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'DcOptimizer', numInputs?: number | null | undefined, id: string, name?: string | null | undefined, starred: boolean, efficiency?: number | null | undefined, efficiencyMax?: number | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputShortCircuitCurrentMax?: number | null | undefined, inputVoltageMax?: number | null | undefined, isExternalMppt?: boolean | null | undefined, isLongString?: boolean | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, maxInputCurrent?: number | null | undefined, mpptOperatingVoltageMax?: number | null | undefined, mpptOperatingVoltageMin?: number | null | undefined, mpptRangeMax?: number | null | undefined, mpptRangeMin?: number | null | undefined, operatingModel?: string | null | undefined, optimizationBehavior?: string | null | undefined, outputCurrentMax?: number | null | undefined, outputVoltageMax?: number | null | undefined, price?: number | null | undefined, stcInputPowerMax?: number | null | undefined, systemVoltageMax?: number | null | undefined, usesSelectiveOptimization?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'Disconnect', id: string, name?: string | null | undefined, starred: boolean, fused?: boolean | null | undefined, fuseRating?: number | null | undefined, currentRating?: number | null | undefined, voltageRating?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'LoadCenter', id: string, name?: string | null | undefined, starred: boolean, mainBreakerRating?: number | null | undefined, busRating?: number | null | undefined, isBreaker?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'Meter', id: string, name?: string | null | undefined, starred: boolean, currentRating?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'ServicePanel', id: string, name?: string | null | undefined, starred: boolean, breakerRating?: number | null | undefined, busRating?: number | null | undefined, main?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'SolarInverter', mppts?: number | null | undefined, id: string, name?: string | null | undefined, starred: boolean, efficiencyCec?: number | null | undefined, efficiencyEuropean?: number | null | undefined, efficiencyMax?: number | null | undefined, hasExternalMppt?: boolean | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputVoltageMax?: number | null | undefined, inputVoltageMin?: number | null | undefined, inputVoltageSE?: number | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, isMicroinverter?: boolean | null | undefined, mpptRatedPowerVoltageMax?: number | null | undefined, mpptRatedPowerVoltageMin?: number | null | undefined, numPhases?: number | null | undefined, numPhysicalDcInputs?: number | null | undefined, outputCurrent?: number | null | undefined, outputVoltageNominal?: number | null | undefined, price?: number | null | undefined, ratedPower?: number | null | undefined, usableInputCurrentMax?: number | null | undefined, usableInputPowerMax?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined } | { __typename: 'SolarPanel', id: string, name?: string | null | undefined, starred: boolean, efficiency?: number | null | undefined, height?: number | null | undefined, imp?: number | null | undefined, isc?: number | null | undefined, length?: number | null | undefined, noct?: number | null | undefined, panelType?: string | null | undefined, price?: number | null | undefined, ratingPtc?: number | null | undefined, ratingStc?: number | null | undefined, tempCoeffIsc?: number | null | undefined, tempCoeffPmax?: number | null | undefined, tempCoeffVoc?: number | null | undefined, vmp?: number | null | undefined, voc?: number | null | undefined, width?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, name?: string | null | undefined, displayName?: string | null | undefined } | null | undefined, mlpe?: { __typename: 'MLPE', id: string, type?: string | null | undefined, isSolarInverter?: boolean | null | undefined, isDcOptimizer?: boolean | null | undefined, isCellStringOptimizer?: boolean | null | undefined, solarInverter?: { __typename: 'SolarInverter', id: string, efficiencyCec?: number | null | undefined, efficiencyEuropean?: number | null | undefined, efficiencyMax?: number | null | undefined, hasExternalMppt?: boolean | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputVoltageMax?: number | null | undefined, inputVoltageMin?: number | null | undefined, inputVoltageSE?: number | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, isMicroinverter?: boolean | null | undefined, mpptRatedPowerVoltageMax?: number | null | undefined, mpptRatedPowerVoltageMin?: number | null | undefined, mppts?: number | null | undefined, name?: string | null | undefined, numPhases?: number | null | undefined, numPhysicalDcInputs?: number | null | undefined, outputCurrent?: number | null | undefined, outputVoltageNominal?: number | null | undefined, price?: number | null | undefined, ratedPower?: number | null | undefined, usableInputCurrentMax?: number | null | undefined, usableInputPowerMax?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, displayName?: string | null | undefined, name?: string | null | undefined } | null | undefined } | null | undefined, dcOptimizer?: { __typename: 'DcOptimizer', id: string, efficiency?: number | null | undefined, efficiencyMax?: number | null | undefined, hasGlobalMppt?: boolean | null | undefined, inputShortCircuitCurrentMax?: number | null | undefined, inputVoltageMax?: number | null | undefined, isExternalMppt?: boolean | null | undefined, isLongString?: boolean | null | undefined, isHuawei?: boolean | null | undefined, isSolarEdge?: boolean | null | undefined, maxInputCurrent?: number | null | undefined, mpptOperatingVoltageMax?: number | null | undefined, mpptOperatingVoltageMin?: number | null | undefined, mpptRangeMax?: number | null | undefined, mpptRangeMin?: number | null | undefined, name?: string | null | undefined, numInputs?: number | null | undefined, operatingModel?: string | null | undefined, optimizationBehavior?: string | null | undefined, outputCurrentMax?: number | null | undefined, outputVoltageMax?: number | null | undefined, price?: number | null | undefined, stcInputPowerMax?: number | null | undefined, systemVoltageMax?: number | null | undefined, usesSelectiveOptimization?: boolean | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, displayName?: string | null | undefined, name?: string | null | undefined } | null | undefined } | null | undefined, cellStringOptimizer?: { __typename: 'CellStringOptimizer', id: string, name?: string | null | undefined, voltageLimit?: boolean | null | undefined, maxOutputVoltage?: number | null | undefined, manufacturer?: { __typename: 'Manufacturer', id: string, displayName?: string | null | undefined, name?: string | null | undefined } | null | undefined } | null | undefined } | null | undefined }> } };\n\n\nexport const SystemComponentSearchDocument = gql`\n query SystemComponentSearch($input: ComponentSearchQuery!) @trace_info(traceInfo: {pod: cad}) {\n componentSearch(input: $input) {\n components {\n id\n name\n starred\n manufacturer {\n id\n name\n displayName\n }\n ... on SolarInverter {\n mppts\n }\n ... on DcOptimizer {\n numInputs\n }\n ...CadRequiredComponentProperties\n }\n }\n}\n ${CadRequiredComponentPropertiesFragmentDoc}`;\n\n/**\n * __useSystemComponentSearchQuery__\n *\n * To run a query within a React component, call `useSystemComponentSearchQuery` and pass it any options that fit your needs.\n * When your component renders, `useSystemComponentSearchQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useSystemComponentSearchQuery({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useSystemComponentSearchQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(SystemComponentSearchDocument, options);\n }\nexport function useSystemComponentSearchLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(SystemComponentSearchDocument, options);\n }\nexport type SystemComponentSearchQueryHookResult = ReturnType;\nexport type SystemComponentSearchLazyQueryHookResult = ReturnType;\nexport type SystemComponentSearchQueryResult = Apollo.QueryResult;","import { Formik, FormikConfig } from 'formik';\nimport React, { useMemo } from 'react';\nimport * as yup from 'yup';\n\nimport * as DS from '@aurorasolar/ds';\n\nimport { SystemComponentType } from '../system-components';\nimport {\n ComponentDropdownInput,\n ComponentDropdownInputBaseProps,\n} from './component-dropdown-input';\n\nexport type ComponentDropdownValidate = FormikConfig<{ value: string[] }>['validate'];\n\ntype ComponentDropdownFormProps = { validate?: ComponentDropdownValidate };\n\nexport type ComponentDropdownProps = ComponentDropdownFormProps &\n Omit, 'name'> & {\n selectedId?: string | null;\n onSelection: (id: string) => void;\n error?: string;\n };\n\n/**\n * A dropdown that allows the user to select a single component.\n *\n * Technically this is a wrapper around the ComponentMultiSelectDropdown,\n * but it helps avoid a foot-gun of passing in an un-memoized array of selectedIds.\n */\nexport function ComponentDropdown({\n selectedId,\n onSelection,\n ...inputProps\n}: ComponentDropdownProps) {\n const selectedIds = useMemo(() => (selectedId ? [selectedId] : []), [selectedId]);\n return (\n onSelection(value[0])}\n selectedIds={selectedIds}\n />\n );\n}\n\ntype ComponentMultiSelectDropdownProps = ComponentDropdownFormProps &\n Omit, 'name'> & {\n selectedIds?: string[];\n onSelection: (ids: string[]) => void;\n error?: string;\n };\n\nconst NO_SELECTED_IDS: string[] = [];\nconst schema = yup.array().of(yup.string()).required();\n\n/**\n * A dropdown that allows the user to select multiple components.\n */\nexport function ComponentMultiSelectDropdown({\n selectedIds = NO_SELECTED_IDS,\n onSelection,\n error,\n validate,\n ...inputProps\n}: ComponentMultiSelectDropdownProps) {\n return (\n {\n onSelection(data.value);\n }}\n validate={validate}\n validationSchema={schema}\n >\n \n \n \n \n );\n}\n","import { rgba } from 'polished';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { Flex, FlexProps } from '@rebass/grid';\n\nimport {\n AuroraThemedButton,\n AuroraThemedButtonIntent,\n AuroraThemedButtonProps,\n} from '../button/themed-button';\nimport { Colors } from '../colors';\nimport { AuroraIcon, AuroraIconType } from '../icon';\nimport { Selectable } from '../select';\n\nconst identity = (_: unknown): string => _ as string;\n\nconst InlineFlex = styled(Flex)`\n display: inline-flex;\n`;\n\nexport interface AuroraButtonGroupProps extends FlexProps {\n selectable: Selectable;\n getComparison?: (item: T, selectable: T | undefined) => boolean;\n getItemKey?: (item: T) => string;\n getItemLabel?: (item: T) => string | undefined;\n getItemTestId?: (item: T) => string;\n getItemIcon?: (item: T) => AuroraIconType | undefined;\n getItemIconFillColor?: (item: T) => Colors | undefined;\n getItemImage?: (item: T) => string;\n buttonProps?: Partial;\n disabled?: boolean;\n}\n\nexport function AuroraButtonGroup(props: AuroraButtonGroupProps) {\n const {\n selectable,\n getItemKey,\n getItemLabel,\n getItemIcon,\n getItemIconFillColor,\n getItemImage,\n getItemTestId,\n getComparison,\n buttonProps = {},\n disabled = false,\n ...rest\n } = props;\n\n const { children: _, ref: __, ...flexProps } = rest;\n\n return (\n \n {selectable.items.map((item) => {\n const isSelected =\n getComparison && selectable.selectedItem\n ? getComparison(item, selectable.selectedItem)\n : item === selectable.selectedItem;\n const label = getItemLabel?.(item) ?? (typeof item === 'string' ? item : undefined);\n const textElement = label != null ? {label} : undefined;\n\n const icon = getItemIcon?.(item);\n const iconFillColor = getItemIconFillColor?.(item);\n const selectedIconColor = iconFillColor ?? Colors.GRAY_800;\n const unselectedIconColor = iconFillColor ? rgba(iconFillColor, 0.4) : 'currentcolor';\n const iconElement = icon && (\n \n );\n\n const image = getItemImage?.(item);\n const imageElement = image && {label};\n\n const isIconOnly = iconElement && !textElement;\n const iconOnlyProps = isIconOnly ? { minWidth: 'initial', px: 0, py: 0, width: 40 } : {};\n\n const children = isIconOnly ? iconElement : [iconElement, textElement, imageElement];\n\n return (\n selectable.onItemSelected?.(item, event)}\n role=\"radio\"\n selectedBgOverlayColor={Colors.GRAY_300}\n selectedTextWeight={500}\n {...{\n ...iconOnlyProps,\n ...(buttonProps as PLEASE_DO_NOT_USE_THIS_ANY_FOR_MIGRATION_ONLY),\n }}\n >\n {children}\n \n );\n })}\n \n );\n}\n","import { darken } from 'polished';\nimport styled from 'styled-components';\n\nimport { Checkbox } from '@blueprintjs/core';\n\nimport { Colors } from '../colors';\n\nexport const AuroraCheckbox = styled(Checkbox)`\n color: ${Colors.GRAY_800};\n margin-bottom: 12;\n\n && {\n .bp3-control-indicator {\n border: 1px solid ${Colors.GRAY_400};\n border-radius: 3px;\n box-shadow: unset;\n background: white;\n font-size: 18px;\n margin-right: 11px;\n }\n\n input:checked ~ .bp3-control-indicator {\n box-shadow: unset;\n border: unset;\n background-color: #010619;\n\n &::before {\n /* stylelint-disable-next-line */\n font: normal normal normal 20px/1 FrontendV2;\n\n /* unicode for component-enabled */\n content: '\\f065';\n height: inherit;\n width: inherit;\n position: absolute;\n right: 1px;\n bottom: 1px;\n }\n }\n\n input:indeterminate ~ .bp3-control-indicator {\n box-shadow: unset;\n border: unset;\n background-color: #010619;\n\n &::before {\n /* stylelint-disable-next-line */\n font: normal normal normal 20px/1 FrontendV2;\n\n /* unicode for component-disabled */\n content: '\\f063';\n height: inherit;\n width: inherit;\n position: absolute;\n right: 1px;\n bottom: 1px;\n }\n }\n\n input:disabled:not(:checked) ~ .bp3-control-indicator {\n border: 1px solid ${Colors.GRAY_300};\n background: white;\n }\n\n input:disabled:checked ~ .bp3-control-indicator {\n background: ${Colors.GRAY_400};\n }\n }\n\n &:hover {\n input:checked:not(:disabled) ~ .bp3-control-indicator {\n background-color: ${darken(0.1, '#010619')};\n }\n\n input:indeterminate:not(:disabled) ~ .bp3-control-indicator {\n background-color: ${darken(0.1, '#010619')};\n box-shadow: unset !important;\n }\n\n input:not(:checked):not(:indeterminate):not(:disabled) ~ .bp3-control-indicator {\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);\n border: 1px solid ${Colors.GRAY_400};\n }\n }\n`;\n","import { useEffect, useMemo, useRef } from 'react';\n\nimport { debounce } from '../../utils';\n\ntype DebouncedMethod = (...args: Args) => void;\ntype CancelDebounce = () => void;\n\n/**\n * Returns a debounced method. Clears itself on unmount.\n * @param method\n * @returns\n */\nexport function useDebounce(\n method: (...args: Args) => void,\n timeout: number = 500,\n): [DebouncedMethod, CancelDebounce] {\n const methodRef = useRef(method);\n\n if (methodRef.current !== method) {\n methodRef.current = method;\n }\n\n const output = useMemo(\n () => debounce((...args) => methodRef.current(...args), timeout),\n [timeout],\n );\n\n useEffect(() => {\n return () => {\n output[1]();\n };\n }, [output]);\n\n return output;\n}\n","export function debounce(\n method: (...args: Args) => void,\n delay = 500,\n): [(...args: Args) => void, () => void] {\n let timeout: number;\n\n return [\n (...args: Args) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = window.setTimeout(() => {\n return method(...args);\n }, delay);\n },\n () => clearTimeout(timeout),\n ];\n}\n","import React, { FC, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { HTMLInputProps, IInputGroupProps, InputGroup } from '@blueprintjs/core';\nimport { Box, Flex } from '@rebass/grid';\n\nimport { Colors } from '../../colors';\nimport { Text } from '../../typography';\nimport { generateUuid } from '../../utils';\nimport { TextInputValidators, useValidator } from '../../validator';\nimport { DefaultInputCSS } from '../base';\nimport { InputError } from '../input-error';\n\nexport const MAX_INPUT_LENGTH = 255;\n\nconst StyledInputGroup = styled(InputGroup)`\n ${DefaultInputCSS}\n\n &.bp3-input-group {\n width: ${(props) => (!props.fill ? '300px' : '100%')};\n }\n`;\n\nexport interface AuroraInputGroupCustomProps {\n disableSelectAllOnFocus?: boolean;\n maxLength?: number;\n label?: string;\n validators?: TextInputValidators;\n noInlineErrors?: boolean;\n passedInErrors?: string[];\n}\n\nexport type AuroraInputGroupsProps = HTMLInputProps &\n IInputGroupProps &\n AuroraInputGroupCustomProps;\n\nexport const AuroraInputGroup: FC = ({\n disableSelectAllOnFocus,\n id,\n maxLength = MAX_INPUT_LENGTH,\n label,\n noInlineErrors = false,\n validators,\n passedInErrors = [],\n ...props\n}) => {\n const [inputId] = useState(id ?? generateUuid());\n const { disabled } = props;\n const [errors, validate] = useValidator(validators);\n\n return (\n \n {label && (\n \n \n {label}\n \n \n )}\n {\n const newValue = event.currentTarget.value;\n\n if (validate({ value: newValue })) {\n props.onInput?.(event);\n }\n }}\n onFocus={(e) => {\n if (!disableSelectAllOnFocus) {\n e.target.select();\n }\n return props.onFocus?.(e);\n }}\n {...props}\n />\n\n {!noInlineErrors && (\n \n \n \n )}\n \n );\n};\n","import styled from 'styled-components';\n\nimport { Radio } from '@blueprintjs/core';\n\nimport { Colors } from '../colors';\n\nexport const AuroraRadio = styled(Radio)`\n color: ${Colors.GRAY_800};\n margin-bottom: 12;\n\n &.bp3-radio.bp3-control.bp3-disabled {\n color: ${Colors.GRAY_500};\n font-size: 14px;\n line-height: 22px;\n }\n\n && {\n .bp3-control-indicator {\n height: 18px;\n width: 18px;\n border-radius: 50%;\n border: solid 1px ${Colors.GRAY_400};\n background: none;\n box-shadow: none;\n\n &::before {\n display: none;\n }\n }\n\n input:checked ~ .bp3-control-indicator {\n background: none;\n background-image: radial-gradient(${Colors.PRIMARY_GREEN} 5.5px, transparent 6px);\n border: solid 1px ${Colors.PRIMARY_GREEN};\n box-shadow: none;\n }\n\n input:checked:disabled ~ .bp3-control-indicator {\n border: solid 1px ${Colors.GRAY_400};\n background-image: radial-gradient(${Colors.GRAY_400} 5.5px, transparent 6px);\n }\n\n input:not(:checked):enabled ~ .bp3-control-indicator {\n :hover {\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);\n border: 1px solid ${Colors.GRAY_400};\n }\n }\n\n input:not(:checked):disabled ~ .bp3-control-indicator {\n background: white;\n border: 1px solid ${Colors.GRAY_300};\n }\n }\n`;\n","import { darken } from 'polished';\nimport styled from 'styled-components';\n\nimport { Switch } from '@blueprintjs/core';\n\nimport { Colors } from '../colors';\n\nexport const AuroraSwitch = styled(Switch).attrs(() => ({ large: true }))`\n color: ${Colors.GRAY_800};\n margin-bottom: 12;\n\n && {\n .bp3-control-indicator {\n margin-right: 11px;\n margin-left: 11px;\n\n &::before {\n box-shadow: unset;\n }\n }\n\n input:checked ~ .bp3-control-indicator {\n background: #010916;\n }\n\n input:disabled ~ .bp3-control-indicator {\n background: ${Colors.GRAY_300};\n }\n\n input:not(:checked):enabled ~ .bp3-control-indicator {\n background: ${Colors.GRAY_500};\n color: ${Colors.WHITE};\n }\n /* stylelint-disable-next-line no-descending-specificity */\n &:hover {\n input:checked:enabled ~ .bp3-control-indicator {\n background: ${darken(0.1, '#010916')};\n }\n\n input:not(:checked):enabled ~ .bp3-control-indicator {\n background: ${darken(0.1, Colors.GRAY_500)};\n }\n }\n\n &:active {\n input:checked:enabled ~ .bp3-control-indicator {\n background: ${darken(0.2, '#010916')};\n }\n }\n }\n`;\n","export const clampAndRoundNumber = (cfg: {\n n: number | string;\n min?: number;\n max?: number;\n decimalPlaces?: number;\n}) => {\n const { n, min, max, decimalPlaces } = cfg;\n const safeNumber = Number(n);\n if (Number.isNaN(safeNumber)) {\n return undefined;\n }\n let value = typeof n === 'number' ? n : parseFloat(n) || 0;\n if (min !== undefined) {\n value = Math.max(value, min);\n }\n if (max !== undefined) {\n value = Math.min(value, max);\n }\n if (decimalPlaces !== undefined) {\n value = parseFloat(value.toFixed(Math.floor(decimalPlaces)));\n }\n return value;\n};\n","import { FinancingOptions } from '@aurorasolar/graphql-client-schema';\n\nexport const totalCostHeadings: Record = {\n [FinancingOptions.Cash]: 'Total Cost',\n [FinancingOptions.Lease]: 'Total System Cost',\n [FinancingOptions.Ppa]: 'Total System Cost',\n [FinancingOptions.Loans]: 'Financed Amount',\n};\n\nexport const totalCostHeadingsSentenceCase: Record = {\n [FinancingOptions.Cash]: 'Total cost',\n [FinancingOptions.Lease]: 'Total system cost',\n [FinancingOptions.Ppa]: 'Total system cost',\n [FinancingOptions.Loans]: 'Financed amount',\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type TariffOutputFragment = { __typename: 'Tariff', id: string, tariffKey?: string | null | undefined, tariffType?: Types.TariffType | null | undefined, name?: string | null | undefined, utilityName?: string | null | undefined, isSolarPvEligible?: boolean | null | undefined };\n\nexport type TariffSearchQueryVariables = Types.Exact<{\n query: Types.FullTextSearchQuery;\n}>;\n\n\nexport type TariffSearchQuery = { __typename: 'Query', fullTextSearch: Array<{ __typename: 'Battery' } | { __typename: 'CombinerBox' } | { __typename: 'DcOptimizer' } | { __typename: 'Disconnect' } | { __typename: 'LoadCenter' } | { __typename: 'Meter' } | { __typename: 'ServicePanel' } | { __typename: 'SolarInverter' } | { __typename: 'SolarPanel' } | { __typename: 'Tariff', id: string, tariffKey?: string | null | undefined, tariffType?: Types.TariffType | null | undefined, name?: string | null | undefined, utilityName?: string | null | undefined, isSolarPvEligible?: boolean | null | undefined }> };\n\nexport const TariffOutputFragmentDoc = gql`\n fragment TariffOutput on Tariff {\n id\n tariffKey\n tariffType\n name\n utilityName\n isSolarPvEligible\n}\n `;\nexport const TariffSearchDocument = gql`\n query TariffSearch($query: FullTextSearchQuery!) @trace_info(traceInfo: {pod: pricing}) {\n fullTextSearch(query: $query) {\n ...TariffOutput\n }\n}\n ${TariffOutputFragmentDoc}`;\n\n/**\n * __useTariffSearchQuery__\n *\n * To run a query within a React component, call `useTariffSearchQuery` and pass it any options that fit your needs.\n * When your component renders, `useTariffSearchQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useTariffSearchQuery({\n * variables: {\n * query: // value for 'query'\n * },\n * });\n */\nexport function useTariffSearchQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(TariffSearchDocument, options);\n }\nexport function useTariffSearchLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(TariffSearchDocument, options);\n }\nexport type TariffSearchQueryHookResult = ReturnType;\nexport type TariffSearchLazyQueryHookResult = ReturnType;\nexport type TariffSearchQueryResult = Apollo.QueryResult;","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useDebounce } from '@aurorasolar/common-core/src/hooks';\nimport { ComponentTypes } from '@aurorasolar/graphql-client-schema';\n\nimport { TariffSearchResult } from './use-search-tariff-types';\nimport { TariffSearchQuery, useTariffSearchLazyQuery } from './use-search-tariff.generated';\n\ntype SearchTariff = (query: string) => void;\ntype TariffSearchResults = TariffSearchResult[];\nexport type SearchTariffTuple = [SearchTariff, TariffSearchResults, boolean];\ninterface SearchTariffOptions {\n lazy?: boolean;\n debounce?: number; // defaults to 300\n}\n\nexport function useSearchTariff(\n projectId: string,\n { lazy = false, debounce = 300 }: SearchTariffOptions = {},\n): SearchTariffTuple {\n const initialMountRef = useRef(true);\n const [result, setResult] = useState([]);\n const [loading, setLoading] = useState(!lazy);\n\n const [runSearchQuery] = useTariffSearchLazyQuery({\n fetchPolicy: 'network-only',\n onCompleted: (data) => {\n const filteredResults = data.fullTextSearch.reduce((holder, element) => {\n if (isRightShape(element)) {\n holder.push(element as TariffSearchResult);\n }\n\n return holder;\n }, new Array());\n setResult(filteredResults);\n setLoading(false);\n },\n });\n\n const search = useCallback(\n (newQuery: string) => {\n runSearchQuery({\n variables: {\n query: {\n filter: [{ property: 'projectId', value: projectId }],\n query: newQuery,\n type: ComponentTypes.Tariff,\n },\n },\n });\n },\n [projectId, runSearchQuery],\n );\n const [debouncedSearch] = useDebounce(search, debounce);\n\n const publicSearch = useCallback(\n (query: string, skipDebounce?: boolean) => {\n setLoading(true);\n\n if (skipDebounce) {\n search(query);\n } else {\n debouncedSearch(query);\n }\n },\n [search, debouncedSearch],\n );\n\n useEffect(() => {\n if (initialMountRef.current && !lazy) {\n initialMountRef.current = false;\n publicSearch('', true);\n }\n }, [lazy, publicSearch]);\n\n return [publicSearch, result, loading];\n}\n\nfunction isRightShape(element: TariffSearchQuery['fullTextSearch'][0]): boolean {\n if (\n element &&\n element.__typename === 'Tariff' &&\n element.id &&\n element.tariffKey &&\n element.tariffType &&\n element.name &&\n element.utilityName\n ) {\n return true;\n }\n return false;\n}\n","import React, { useMemo } from 'react';\n\nimport { FeatureFlag, FeatureFlags, useAppModule } from '@aurorasolar/common-module-loader';\nimport * as DS from '@aurorasolar/ds';\nimport { Tariff } from '@aurorasolar/graphql-client-schema';\n\nimport { TariffSearchResult } from './use-search-tariff-types';\n\n// Needed to avoid client side filtering\nfunction alwaysTrue() {\n return true;\n}\n\nexport function sortTariffs(t: T[]): T[] {\n return [\n ...t.filter(({ isSolarPvEligible }) => isSolarPvEligible === true),\n ...t.filter(\n ({ isSolarPvEligible }) =>\n isSolarPvEligible === null || typeof isSolarPvEligible === 'undefined',\n ),\n ...t.filter(({ isSolarPvEligible }) => isSolarPvEligible === false),\n ];\n}\n\nconst loadingProps = {\n icon: DS.IconProgressSpinner,\n iconProps: {\n animation: {\n animationDuration: 'base',\n motionSafe: 'spin',\n },\n },\n};\n\ninterface DSTariffOption extends DS.IDropdownOption {\n isSolarPvEligible?: boolean | null;\n utilityName: string;\n}\n\nexport interface TariffSearchInputProps\n extends Omit<\n DS.IAutocompleteInput,\n 'options' | 'handleUserInput' | 'filterAlgorithm' | 'optionLabelTemplate' | 'loading'\n > {\n onQuery: (value: string) => void;\n tariffs: TariffSearchResult[];\n loading?: boolean;\n isPostSolarRate?: boolean;\n}\n\nexport const TariffSearchInput = ({\n isPostSolarRate,\n onQuery,\n tariffs,\n loading,\n ...props\n}: TariffSearchInputProps) => {\n const featureFlags = useAppModule(FeatureFlags);\n const autoPopulatePostSolarRates =\n featureFlags?.variation(FeatureFlag.AutoPopulatePostSolarRates) === true;\n\n // eslint-disable-next-line prefer-destructuring, react/destructuring-assignment\n const value: TariffSearchResult | undefined = props.field.value?.[0];\n const additionalProps = loading ? loadingProps : {};\n\n const transformedOptions: DSTariffOption[] = useMemo(() => {\n let needsValue = true;\n\n const sortedTariffs =\n autoPopulatePostSolarRates && isPostSolarRate ? sortTariffs(tariffs) : tariffs;\n const output = sortedTariffs.map((opt) => {\n let optionValue = opt;\n\n if (value && opt.name === value.name && opt.utilityName === value.utilityName) {\n needsValue = false;\n optionValue = value;\n }\n return {\n isSolarPvEligible: opt.isSolarPvEligible,\n label: opt.name,\n utilityName: opt.utilityName,\n value: optionValue,\n };\n });\n\n if (needsValue && value) {\n output.push({\n isSolarPvEligible: value.isSolarPvEligible,\n label: value.name,\n utilityName: value.utilityName,\n value,\n });\n }\n\n return output;\n }, [autoPopulatePostSolarRates, isPostSolarRate, tariffs, value]);\n\n return (\n (\n \n \n {isPostSolarRate && option.isSolarPvEligible ? (\n \n Solar\n \n ) : null}\n {option.utilityName}\n \n }\n value={option.label}\n />\n \n )}\n options={transformedOptions}\n {...props}\n {...additionalProps}\n />\n );\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type DeleteProjectMutationVariables = Types.Exact<{\n projectId: Types.Scalars['ID'];\n}>;\n\n\nexport type DeleteProjectMutation = { __typename: 'Mutation', deleteProject: string };\n\n\nexport const DeleteProjectDocument = gql`\n mutation DeleteProject($projectId: ID!) @trace_info(traceInfo: {pod: projectCollaboration}) {\n deleteProject(id: $projectId)\n}\n `;\nexport type DeleteProjectMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteProjectMutation__\n *\n * To run a mutation, you first call `useDeleteProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteProjectMutation, { data, loading, error }] = useDeleteProjectMutation({\n * variables: {\n * projectId: // value for 'projectId'\n * },\n * });\n */\nexport function useDeleteProjectMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteProjectDocument, options);\n }\nexport type DeleteProjectMutationHookResult = ReturnType;\nexport type DeleteProjectMutationResult = Apollo.MutationResult;\nexport type DeleteProjectMutationOptions = Apollo.BaseMutationOptions;","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GetIncentiveErrorsQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type GetIncentiveErrorsQuery = { __typename: 'Query', designById: { __typename: 'Design', id: string, eProposalFinancing?: { __typename: 'Financing', id: string, financialAnalysis?: { __typename: 'FinancialAnalysis', id: string, incentiveErrors?: Array | null | undefined } | null | undefined } | null | undefined } };\n\n\nexport const GetIncentiveErrorsDocument = gql`\n query GetIncentiveErrors($designId: ID!) @trace_info(traceInfo: {pod: pricing}) {\n designById(id: $designId) {\n id\n eProposalFinancing {\n id\n financialAnalysis {\n id\n incentiveErrors\n }\n }\n }\n}\n `;\n\n/**\n * __useGetIncentiveErrorsQuery__\n *\n * To run a query within a React component, call `useGetIncentiveErrorsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetIncentiveErrorsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetIncentiveErrorsQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useGetIncentiveErrorsQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetIncentiveErrorsDocument, options);\n }\nexport function useGetIncentiveErrorsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetIncentiveErrorsDocument, options);\n }\nexport type GetIncentiveErrorsQueryHookResult = ReturnType;\nexport type GetIncentiveErrorsLazyQueryHookResult = ReturnType;\nexport type GetIncentiveErrorsQueryResult = Apollo.QueryResult;","import React from 'react';\n\nimport * as DS from '@aurorasolar/ds';\n\ninterface DeleteLeadProps {\n confirmDeleteOpen: boolean;\n setConfirmDeleteOpen: (value: boolean) => void;\n onDelete: () => void;\n}\n\nexport const DELETE_SELECTED_LEAD_TESTID = 'delete-selected-lead';\nexport const CANCEL_SELECTED_LEAD_TESTID = 'cancel-selected-lead';\n\nexport const DeleteLeadModal = ({\n confirmDeleteOpen,\n setConfirmDeleteOpen,\n onDelete,\n}: DeleteLeadProps) => {\n const closeConfirmDeleteModal = () => setConfirmDeleteOpen(false);\n\n return (\n \n \n \n Delete lead\n \n \n Are you sure you want to permanently delete your selected lead?\n \n \n This action is irreversible.\n \n \n \n \n \n Cancel\n
\n onDelete()}\n variant=\"destructive\"\n >\n Delete\n \n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\n\ninterface UseInterceptMouseProps {\n cadDomNode?: HTMLCanvasElement | null;\n}\n\nexport const useInterceptMouse = ({ cadDomNode }: UseInterceptMouseProps) => {\n const [clicked, setClicked] = useState(false);\n\n useEffect(() => {\n if (!cadDomNode) return undefined;\n const onMouse = () => {\n setClicked(true);\n };\n const options = { capture: true, once: true, passive: true };\n // NOTE: This may fire more than once, but the total number of events should be small\n cadDomNode.addEventListener('pointerdown', onMouse, options);\n\n return () => {\n cadDomNode.removeEventListener('pointerdown', onMouse, options);\n };\n }, [cadDomNode]);\n\n return clicked;\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GetCurrentUserQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetCurrentUserQuery = { __typename: 'Query', currentUser?: { __typename: 'User', id: string, partnerId?: string | null | undefined } | null | undefined };\n\n\nexport const GetCurrentUserDocument = gql`\n query GetCurrentUser @trace_info(traceInfo: {pod: projectCollaboration}) {\n currentUser {\n id\n partnerId\n }\n}\n `;\n\n/**\n * __useGetCurrentUserQuery__\n *\n * To run a query within a React component, call `useGetCurrentUserQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetCurrentUserQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetCurrentUserQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetCurrentUserQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetCurrentUserDocument, options);\n }\nexport function useGetCurrentUserLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetCurrentUserDocument, options);\n }\nexport type GetCurrentUserQueryHookResult = ReturnType;\nexport type GetCurrentUserLazyQueryHookResult = ReturnType;\nexport type GetCurrentUserQueryResult = Apollo.QueryResult;","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GetPartnersQueryVariables = Types.Exact<{\n pagination?: Types.InputMaybe;\n search?: Types.InputMaybe;\n}>;\n\n\nexport type GetPartnersQuery = { __typename: 'Query', getPartners: { __typename: 'PartnerSearchResult', partners: Array<{ __typename: 'Partner', id: string, name: string }> } };\n\nexport type GetTeamsQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetTeamsQuery = { __typename: 'Query', teams?: Array<{ __typename: 'Team', id: string, name?: string | null | undefined, partner?: { __typename: 'TeamPartner', id: string } | null | undefined } | null | undefined> | null | undefined };\n\n\nexport const GetPartnersDocument = gql`\n query GetPartners($pagination: SearchPagination, $search: String) @trace_info(traceInfo: {pod: projectCollaboration}) {\n getPartners(pagination: $pagination, search: $search) {\n partners {\n id\n name\n }\n }\n}\n `;\n\n/**\n * __useGetPartnersQuery__\n *\n * To run a query within a React component, call `useGetPartnersQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetPartnersQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetPartnersQuery({\n * variables: {\n * pagination: // value for 'pagination'\n * search: // value for 'search'\n * },\n * });\n */\nexport function useGetPartnersQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetPartnersDocument, options);\n }\nexport function useGetPartnersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetPartnersDocument, options);\n }\nexport type GetPartnersQueryHookResult = ReturnType;\nexport type GetPartnersLazyQueryHookResult = ReturnType;\nexport type GetPartnersQueryResult = Apollo.QueryResult;\nexport const GetTeamsDocument = gql`\n query GetTeams @trace_info(traceInfo: {pod: projectCollaboration}) {\n teams {\n id\n name\n partner {\n id\n }\n }\n}\n `;\n\n/**\n * __useGetTeamsQuery__\n *\n * To run a query within a React component, call `useGetTeamsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTeamsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTeamsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetTeamsQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetTeamsDocument, options);\n }\nexport function useGetTeamsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetTeamsDocument, options);\n }\nexport type GetTeamsQueryHookResult = ReturnType;\nexport type GetTeamsLazyQueryHookResult = ReturnType;\nexport type GetTeamsQueryResult = Apollo.QueryResult;","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type GetTenantNameQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetTenantNameQuery = { __typename: 'Query', currentTenant?: { __typename: 'Tenant', id: string, name?: string | null | undefined } | null | undefined };\n\n\nexport const GetTenantNameDocument = gql`\n query GetTenantName @trace_info(traceInfo: {pod: projectCollaboration}) {\n currentTenant {\n id\n name\n }\n}\n `;\n\n/**\n * __useGetTenantNameQuery__\n *\n * To run a query within a React component, call `useGetTenantNameQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTenantNameQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTenantNameQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetTenantNameQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetTenantNameDocument, options);\n }\nexport function useGetTenantNameLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetTenantNameDocument, options);\n }\nexport type GetTenantNameQueryHookResult = ReturnType;\nexport type GetTenantNameLazyQueryHookResult = ReturnType;\nexport type GetTenantNameQueryResult = Apollo.QueryResult;","import { format, isToday, isTomorrow, isYesterday } from 'date-fns';\n\ninterface FormatType {\n month?: string;\n day?: string;\n separator?: string;\n time?: string;\n}\n\n/* eslint-disable sort-keys */\nconst defaultFormat = {\n month: 'MMMM',\n day: 'd',\n separator: ', ',\n time: `h:mm a`,\n};\n\nconst getPrefix = (timestamp: Date, fm: FormatType): string => {\n switch (true) {\n case isYesterday(timestamp):\n return 'Yesterday';\n case isToday(timestamp):\n return 'Today';\n case isTomorrow(timestamp):\n return 'Tomorrow';\n default:\n return format(timestamp, `${fm.month} ${fm.day}`);\n }\n};\n\n/**\n * Formats a date in words relative to the given timestamp, using\n * 'yesterday', 'today', and 'tomorrow' nouns.\n */\nexport const formatRelativeDate = (timestamp: Date, customFormat: FormatType = {}): string => {\n const fm = {\n ...defaultFormat,\n ...customFormat,\n };\n\n const preffix = getPrefix(timestamp, fm);\n\n return `${preffix}${fm.separator}${format(timestamp, fm.time)}`;\n};\n","import { AgreementStatus } from '@aurorasolar/graphql-client-schema';\n\nconst badStatusColor = 'red-500';\n\nexport const agreementStatusMap: Record<\n AgreementStatus,\n {\n color: string;\n description: string;\n }\n> = {\n [AgreementStatus.Signed]: {\n color: 'green-400',\n description: 'Agreement Completed',\n },\n [AgreementStatus.Viewed]: {\n color: 'cyan-300',\n description: 'Agreement Viewed',\n },\n [AgreementStatus.Sent]: {\n color: 'cyan-300',\n description: 'Agreement Sent',\n },\n [AgreementStatus.Error]: {\n color: badStatusColor,\n description: 'Agreement Error',\n },\n [AgreementStatus.Declined]: {\n color: badStatusColor,\n description: 'Agreement Declined',\n },\n [AgreementStatus.CancelPending]: {\n color: badStatusColor,\n description: 'Agreement Error',\n },\n [AgreementStatus.Canceled]: {\n color: badStatusColor,\n description: 'Agreement Error',\n },\n [AgreementStatus.Draft]: {\n color: badStatusColor,\n description: 'Agreement Error',\n },\n};\n\nexport const agreementStatusPriorityMap = {\n [AgreementStatus.Signed]: 0,\n [AgreementStatus.Declined]: 1,\n [AgreementStatus.Viewed]: 2,\n [AgreementStatus.Sent]: 3,\n [AgreementStatus.Error]: 4,\n [AgreementStatus.Canceled]: 5,\n [AgreementStatus.CancelPending]: 5,\n [AgreementStatus.Draft]: 5,\n};\n\nexport function sortAgreementsByPriority(\n a: Agreement,\n b: Agreement,\n): number {\n return (\n (a.status ? agreementStatusPriorityMap[a.status] : 99) -\n (b.status ? agreementStatusPriorityMap[b.status] : 99)\n );\n}\n","import { DesignRequestStatus } from '@aurorasolar/graphql-client-schema';\n\nexport const designRequestStatusMap: Record<\n DesignRequestStatus,\n { color: string; description: string }\n> = {\n [DesignRequestStatus.Accepted]: {\n color: 'black',\n description: 'Design Accepted',\n },\n [DesignRequestStatus.DesignerRejected]: {\n color: 'red-500',\n description: 'Design Request rejected',\n },\n [DesignRequestStatus.Submitted]: {\n color: 'cyan-300',\n description: 'Design In progress',\n },\n [DesignRequestStatus.DesignerCompleted]: {\n color: 'green-400',\n description: 'Design Completed',\n },\n [DesignRequestStatus.Rejected]: {\n color: 'red-500',\n description: 'Design Rejected',\n },\n};\n","import { AgreementStatus, DesignRequestStatus } from '@aurorasolar/graphql-client-schema';\n\nexport enum ProposalShareStatus {\n FOLLOWUP_REQUESTED = 'followup_requested',\n VIEWED = 'viewed',\n SENT = 'sent',\n LINK_EXPIRED = 'link_expired',\n}\n\nexport interface ProposalShareStatusInfo {\n status: ProposalShareStatus;\n timestamp: Date;\n onClick?: () => void;\n}\n\nexport interface AgreementStatusInfo {\n status: AgreementStatus;\n timestamp?: Date;\n onClick?: () => void;\n}\n\nexport interface DesignRequestStatusInfo {\n status: DesignRequestStatus;\n timestamp?: Date;\n onClick?: () => void;\n}\n\nexport const proposalShareStatusMap: Record =\n {\n [ProposalShareStatus.FOLLOWUP_REQUESTED]: {\n color: 'orange-400',\n text: 'Proposal Followup Requested',\n },\n [ProposalShareStatus.VIEWED]: {\n color: 'green-500',\n text: 'Proposal Viewed',\n },\n [ProposalShareStatus.SENT]: {\n color: 'green-500',\n text: 'Proposal Sent',\n },\n [ProposalShareStatus.LINK_EXPIRED]: {\n color: 'red-500',\n text: 'Proposal Link Expired',\n },\n };\n\nexport function proposalShareInfoToStatus({\n tokenExpiry,\n lastViewedAt,\n lastSentAt,\n followUpRequestedAt,\n followUpRequested,\n}: {\n tokenExpiry: string | null;\n lastViewedAt: string | null;\n lastSentAt: string | null;\n followUpRequestedAt: string | null;\n followUpRequested: boolean | null;\n}): ProposalShareStatusInfo | undefined {\n if (followUpRequested && followUpRequestedAt) {\n return {\n status: ProposalShareStatus.FOLLOWUP_REQUESTED,\n timestamp: new Date(followUpRequestedAt),\n };\n }\n if (tokenExpiry && new Date(tokenExpiry).getTime() < Date.now()) {\n return { status: ProposalShareStatus.LINK_EXPIRED, timestamp: new Date(tokenExpiry) };\n }\n if (lastViewedAt) {\n return { status: ProposalShareStatus.VIEWED, timestamp: new Date(lastViewedAt) };\n }\n if (lastSentAt) {\n return { status: ProposalShareStatus.SENT, timestamp: new Date(lastSentAt) };\n }\n\n return undefined;\n}\n","import React, { ReactElement } from 'react';\n\nimport { formatRelativeDate } from '@aurorasolar/common-core/src/utils';\nimport * as DS from '@aurorasolar/ds';\nimport { styled } from '@xstyled/styled-components';\n\nimport { agreementStatusMap } from '../agreement-status/agreement-status';\nimport { designRequestStatusMap } from '../design-request-status';\nimport {\n AgreementStatusInfo,\n DesignRequestStatusInfo,\n ProposalShareStatusInfo,\n proposalShareStatusMap,\n} from '../proposal-share-status/proposal-share-status';\n\ninterface StatusChild {\n color: string;\n text: string;\n timestamp?: Date;\n onClick?: () => void;\n icon: ReactElement;\n}\n\nfunction buildStatusChildren({\n designRequestStatus,\n agreementStatus,\n webProposalStatus,\n}: StatusSelectorProps) {\n const output: StatusChild[] = [];\n\n if (designRequestStatus) {\n output.push({\n color: designRequestStatusMap[designRequestStatus.status].color,\n icon: ,\n text: designRequestStatusMap[designRequestStatus.status].description,\n ...designRequestStatus,\n });\n }\n\n if (agreementStatus) {\n output.push({\n color: agreementStatusMap[agreementStatus.status].color,\n icon: ,\n text: agreementStatusMap[agreementStatus.status].description,\n ...agreementStatus,\n });\n }\n\n if (webProposalStatus) {\n output.push({\n color: proposalShareStatusMap[webProposalStatus.status].color,\n icon: ,\n text: proposalShareStatusMap[webProposalStatus.status].text,\n ...webProposalStatus,\n });\n }\n\n return output;\n}\n\nconst StatusRow = styled(DS.Flex)`\n > * {\n border-left: 2px solid background;\n\n &:not(:first-child) {\n margin-left: -4px;\n }\n }\n &:hover > *:not(:first-child) {\n margin-left: 0px;\n }\n`;\n\ninterface ExpandedStatusProps {\n status: StatusChild;\n}\n\nconst ExpandedStatus = ({ status }: ExpandedStatusProps) => {\n return (\n \n {status.icon}\n \n {status.text}\n {status.timestamp && (\n \n {formatRelativeDate(status.timestamp, {\n month: 'MMM',\n separator: ' | ',\n time: 'hh:mm a',\n })}\n \n )}\n \n \n );\n};\n\ninterface IconContainerProps {\n children: ReactElement;\n backgroundColor: string;\n}\n\nconst IconContainer = ({ children, backgroundColor }: IconContainerProps) => {\n return (\n \n {children}\n \n );\n};\n\nexport interface StatusSelectorProps {\n designRequestStatus?: DesignRequestStatusInfo;\n agreementStatus?: AgreementStatusInfo;\n webProposalStatus?: ProposalShareStatusInfo;\n _open?: boolean;\n 'data-testid'?: string;\n}\n\nexport const StatusSelector = React.memo((props: StatusSelectorProps) => {\n const statuses: StatusChild[] = buildStatusChildren(props);\n\n return (\n \n {statuses.map(({ icon, text, color }) => (\n \n {icon}\n \n ))}\n \n }\n defaultVisible={props._open}\n disableChildPadding\n >\n \n {statuses.map((status, i) => (\n \n \n {i !== statuses.length - 1 ? : null}\n \n ))}\n \n \n );\n});\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type ProposalInfoFragment = { __typename: 'ProposalShareInfo', id: string, token?: string | null | undefined, tokenExpiry?: string | null | undefined, lastViewedAt?: string | null | undefined, createdAt?: string | null | undefined, followUpRequested?: boolean | null | undefined, followUpRequestedAt?: string | null | undefined };\n\nexport type GetProposalShareInfoQueryVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type GetProposalShareInfoQuery = { __typename: 'Query', proposalShareInfoByDesignId?: { __typename: 'ProposalShareInfo', id: string, token?: string | null | undefined, tokenExpiry?: string | null | undefined, lastViewedAt?: string | null | undefined, createdAt?: string | null | undefined, followUpRequested?: boolean | null | undefined, followUpRequestedAt?: string | null | undefined } | null | undefined };\n\nexport type GetProposalShareEmailsQueryVariables = Types.Exact<{\n projectId: Types.Scalars['ID'];\n}>;\n\n\nexport type GetProposalShareEmailsQuery = { __typename: 'Query', proposalShareEmailsByProjectId?: Array<{ __typename: 'ProposalShareEmail', lastSent?: string | null | undefined, emails?: Array | null | undefined, designId: string } | null | undefined> | null | undefined };\n\nexport type CreateProposalShareMutationVariables = Types.Exact<{\n designId: Types.Scalars['String'];\n}>;\n\n\nexport type CreateProposalShareMutation = { __typename: 'Mutation', createProposalShare: { __typename: 'ProposalShareInfo', id: string, token?: string | null | undefined, tokenExpiry?: string | null | undefined, lastViewedAt?: string | null | undefined, createdAt?: string | null | undefined, followUpRequested?: boolean | null | undefined, followUpRequestedAt?: string | null | undefined } };\n\nexport type UpdateProposalShareMutationVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n updatedProposalShare: Types.UpdatedProposalShare;\n}>;\n\n\nexport type UpdateProposalShareMutation = { __typename: 'Mutation', updateProposalShare: { __typename: 'ProposalShareInfo', id: string, token?: string | null | undefined, tokenExpiry?: string | null | undefined, lastViewedAt?: string | null | undefined, createdAt?: string | null | undefined, followUpRequested?: boolean | null | undefined, followUpRequestedAt?: string | null | undefined } };\n\nexport type RefreshProposalShareTokenMutationVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n}>;\n\n\nexport type RefreshProposalShareTokenMutation = { __typename: 'Mutation', refreshProposalShareToken: { __typename: 'ProposalShareToken', token?: string | null | undefined } };\n\nexport type SendProposalShareEmailsMutationVariables = Types.Exact<{\n designId: Types.Scalars['ID'];\n input: Types.ProposalShareDesignEmailsInput;\n}>;\n\n\nexport type SendProposalShareEmailsMutation = { __typename: 'Mutation', sendProposalShareEmails: { __typename: 'ProposalShareDesignEmails', design?: { __typename: 'ProposalShareEmails', emails?: Array | null | undefined } | null | undefined } };\n\nexport const ProposalInfoFragmentDoc = gql`\n fragment proposalInfo on ProposalShareInfo {\n id\n token\n tokenExpiry\n lastViewedAt\n createdAt\n followUpRequested\n followUpRequestedAt\n}\n `;\nexport const GetProposalShareInfoDocument = gql`\n query GetProposalShareInfo($designId: ID!) @trace_info(traceInfo: {pod: proposals}) {\n proposalShareInfoByDesignId(designId: $designId) {\n ...proposalInfo\n }\n}\n ${ProposalInfoFragmentDoc}`;\n\n/**\n * __useGetProposalShareInfoQuery__\n *\n * To run a query within a React component, call `useGetProposalShareInfoQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProposalShareInfoQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProposalShareInfoQuery({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useGetProposalShareInfoQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetProposalShareInfoDocument, options);\n }\nexport function useGetProposalShareInfoLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetProposalShareInfoDocument, options);\n }\nexport type GetProposalShareInfoQueryHookResult = ReturnType;\nexport type GetProposalShareInfoLazyQueryHookResult = ReturnType;\nexport type GetProposalShareInfoQueryResult = Apollo.QueryResult;\nexport const GetProposalShareEmailsDocument = gql`\n query GetProposalShareEmails($projectId: ID!) @trace_info(traceInfo: {pod: proposals}) {\n proposalShareEmailsByProjectId(projectId: $projectId) {\n lastSent\n emails\n designId\n }\n}\n `;\n\n/**\n * __useGetProposalShareEmailsQuery__\n *\n * To run a query within a React component, call `useGetProposalShareEmailsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProposalShareEmailsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProposalShareEmailsQuery({\n * variables: {\n * projectId: // value for 'projectId'\n * },\n * });\n */\nexport function useGetProposalShareEmailsQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetProposalShareEmailsDocument, options);\n }\nexport function useGetProposalShareEmailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetProposalShareEmailsDocument, options);\n }\nexport type GetProposalShareEmailsQueryHookResult = ReturnType;\nexport type GetProposalShareEmailsLazyQueryHookResult = ReturnType;\nexport type GetProposalShareEmailsQueryResult = Apollo.QueryResult;\nexport const CreateProposalShareDocument = gql`\n mutation CreateProposalShare($designId: String!) @trace_info(traceInfo: {pod: proposals}) {\n createProposalShare(designId: $designId) {\n ...proposalInfo\n }\n}\n ${ProposalInfoFragmentDoc}`;\nexport type CreateProposalShareMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateProposalShareMutation__\n *\n * To run a mutation, you first call `useCreateProposalShareMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateProposalShareMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createProposalShareMutation, { data, loading, error }] = useCreateProposalShareMutation({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useCreateProposalShareMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateProposalShareDocument, options);\n }\nexport type CreateProposalShareMutationHookResult = ReturnType;\nexport type CreateProposalShareMutationResult = Apollo.MutationResult;\nexport type CreateProposalShareMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateProposalShareDocument = gql`\n mutation UpdateProposalShare($designId: ID!, $updatedProposalShare: UpdatedProposalShare!) @trace_info(traceInfo: {pod: proposals}) {\n updateProposalShare(\n designId: $designId\n updatedProposalShare: $updatedProposalShare\n ) {\n ...proposalInfo\n }\n}\n ${ProposalInfoFragmentDoc}`;\nexport type UpdateProposalShareMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateProposalShareMutation__\n *\n * To run a mutation, you first call `useUpdateProposalShareMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateProposalShareMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateProposalShareMutation, { data, loading, error }] = useUpdateProposalShareMutation({\n * variables: {\n * designId: // value for 'designId'\n * updatedProposalShare: // value for 'updatedProposalShare'\n * },\n * });\n */\nexport function useUpdateProposalShareMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateProposalShareDocument, options);\n }\nexport type UpdateProposalShareMutationHookResult = ReturnType;\nexport type UpdateProposalShareMutationResult = Apollo.MutationResult;\nexport type UpdateProposalShareMutationOptions = Apollo.BaseMutationOptions;\nexport const RefreshProposalShareTokenDocument = gql`\n mutation RefreshProposalShareToken($designId: ID!) @trace_info(traceInfo: {pod: proposals}) {\n refreshProposalShareToken(designId: $designId) {\n token\n }\n}\n `;\nexport type RefreshProposalShareTokenMutationFn = Apollo.MutationFunction;\n\n/**\n * __useRefreshProposalShareTokenMutation__\n *\n * To run a mutation, you first call `useRefreshProposalShareTokenMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useRefreshProposalShareTokenMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [refreshProposalShareTokenMutation, { data, loading, error }] = useRefreshProposalShareTokenMutation({\n * variables: {\n * designId: // value for 'designId'\n * },\n * });\n */\nexport function useRefreshProposalShareTokenMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(RefreshProposalShareTokenDocument, options);\n }\nexport type RefreshProposalShareTokenMutationHookResult = ReturnType;\nexport type RefreshProposalShareTokenMutationResult = Apollo.MutationResult;\nexport type RefreshProposalShareTokenMutationOptions = Apollo.BaseMutationOptions;\nexport const SendProposalShareEmailsDocument = gql`\n mutation SendProposalShareEmails($designId: ID!, $input: ProposalShareDesignEmailsInput!) @trace_info(traceInfo: {pod: proposals}) {\n sendProposalShareEmails(designId: $designId, input: $input) {\n design {\n emails\n }\n }\n}\n `;\nexport type SendProposalShareEmailsMutationFn = Apollo.MutationFunction;\n\n/**\n * __useSendProposalShareEmailsMutation__\n *\n * To run a mutation, you first call `useSendProposalShareEmailsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSendProposalShareEmailsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [sendProposalShareEmailsMutation, { data, loading, error }] = useSendProposalShareEmailsMutation({\n * variables: {\n * designId: // value for 'designId'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useSendProposalShareEmailsMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(SendProposalShareEmailsDocument, options);\n }\nexport type SendProposalShareEmailsMutationHookResult = ReturnType;\nexport type SendProposalShareEmailsMutationResult = Apollo.MutationResult;\nexport type SendProposalShareEmailsMutationOptions = Apollo.BaseMutationOptions;","import { LoadedWeatherDatasetInput, WeatherDataset } from '@aurorasolar/graphql-client-schema';\n\nconst BEST_AVAILABLE = {\n geography: 'Global',\n id: '00000000-0000-0000-0000-000000000000',\n name: 'Best available',\n};\nexport const TENANT_SETTING_ORDER = [BEST_AVAILABLE.name, 'NREL-PSM', 'TMY3', 'CWEC', 'IWEC2'];\nexport const PREFERRED_ORDER = ['NREL-PSM', 'Solcast', 'TMY3', 'CWEC', 'IWEC2'];\nexport const LEGACY_PREFERRED_ORDER = ['NREL-PSM', 'TMY3', 'CWEC', 'IWEC2'];\n\nexport type DisplayWeatherDataset = Omit;\n\nexport function designSettingWeatherDatasets(\n weatherDatasets: DisplayWeatherDataset[],\n solcastEnabled = false,\n) {\n const result = [] as DisplayWeatherDataset[];\n (solcastEnabled ? PREFERRED_ORDER : LEGACY_PREFERRED_ORDER).forEach((datasetName) => {\n const found = weatherDatasets.find((dataset) => dataset.name === datasetName);\n if (found) {\n result.push(found);\n }\n });\n return result;\n}\n\nexport function tenantSettingWeatherDatasets(\n weatherDatasets: DisplayWeatherDataset[],\n solcastEnabled = false,\n) {\n const result = [] as DisplayWeatherDataset[];\n (solcastEnabled ? TENANT_SETTING_ORDER : LEGACY_PREFERRED_ORDER).forEach((datasetName) => {\n const found = weatherDatasets.find((dataset) => dataset.name === datasetName);\n if (found) {\n result.push(found);\n }\n if (!found && datasetName === BEST_AVAILABLE.name) {\n result.push(BEST_AVAILABLE);\n }\n });\n return result;\n}\n\n// Dynamic datasets do not provide weather data in bulk; instead, we retrieve data on demand by calling their API.\nconst DYNAMIC_DATASET_LAST_4 = {\n SOLCAST: '91c9',\n};\nexport function isDynamicWeatherDataset(datasetOrId?: DisplayWeatherDataset | string | null) {\n if (datasetOrId) {\n const id = typeof datasetOrId === 'object' ? datasetOrId.id : datasetOrId;\n return Object.values(DYNAMIC_DATASET_LAST_4).some((last4: string) => id.endsWith(last4));\n }\n return false;\n}\n\nexport function mapDisplayWeatherDatasetToInput(\n dataset: DisplayWeatherDataset,\n): LoadedWeatherDatasetInput {\n return {\n geography: dataset.geography,\n id: dataset.id,\n isDynamic: isDynamicWeatherDataset(dataset),\n name: dataset.name,\n };\n}\n","export interface SearchablePartnerOption {\n label: string;\n value: string;\n}\n\nexport interface SearchablePartnerGroupOption {\n groupTitle: string;\n options: SearchablePartnerOption[];\n}\n\nexport enum StaticPartnerOptionLabels {\n AllPartners = 'All partners',\n NoPartner = 'No partner',\n}\n\nexport enum StaticPartnerOptionValues {\n All = 'all',\n}\n\nexport enum PartnerOptionGroupTitles {\n StaticGroup = 'Select all or no partners',\n QueryGroup = 'Select specific partners',\n}\n","import { Unassigned } from '@aurorasolar/graphql-client-schema';\n\nimport {\n PartnerOptionGroupTitles,\n SearchablePartnerGroupOption,\n SearchablePartnerOption,\n StaticPartnerOptionLabels,\n StaticPartnerOptionValues,\n} from './types';\n\n// 'set-to-all-partners': user has clicked on 'All partners'\n// 'set-to-no-partner': user has clicked on 'No partner'\n// 'exclude-all-partner': user had prev selected 'All partners' then chooses another option\n// 'exclude-no-partner': user had prev selected 'No partner' then chooses another option\n// 'default': user had prev selected a specific partner and again chooses a specific partner\nenum UpdatePartnerActionType {\n SetToAllPartners = 'set-to-all-partners',\n SetToNoPartner = 'set-to-no-partner',\n ExcludeAllPartners = 'exclude-all-parters',\n ExcludeNoPartner = 'exclude-no-partner',\n Default = 'default',\n}\n\n// compare the prev and curr sets of selections to identify what type of action is needed\nconst getActionType = (prev: string[], curr: string[]): UpdatePartnerActionType => {\n if (\n !!curr.find((id) => id === StaticPartnerOptionValues.All) &&\n !prev.find((id) => id === StaticPartnerOptionValues.All)\n ) {\n return UpdatePartnerActionType.SetToAllPartners;\n }\n if (\n !!curr.find((id) => id === Unassigned.Partner) &&\n !prev.find((id) => id === Unassigned.Partner)\n ) {\n return UpdatePartnerActionType.SetToNoPartner;\n }\n if (!!curr.find((id) => id === StaticPartnerOptionValues.All) && curr.length > 1) {\n return UpdatePartnerActionType.ExcludeAllPartners;\n }\n if (!!curr.find((id) => id === Unassigned.Partner) && curr.length > 1) {\n return UpdatePartnerActionType.ExcludeNoPartner;\n }\n return UpdatePartnerActionType.Default;\n};\n\n// the partner multiselect needs to automatically remove some selections when certain new selections are made\n// evaluating the prev and curr sets of selections allows us to make those changes\nexport const getUpdatedPartnerSelections = (\n previousSelectedIds: string[],\n currentSelectedIds: string[],\n options: SearchablePartnerGroupOption[],\n) => {\n let updatedSelectedPartnerIds: string[] = [];\n let updatedSelectedPartnerOptions: SearchablePartnerOption[] = [];\n\n switch (getActionType(previousSelectedIds, currentSelectedIds)) {\n // only include 'All partners'\n case UpdatePartnerActionType.SetToAllPartners: {\n updatedSelectedPartnerIds = [StaticPartnerOptionValues.All];\n updatedSelectedPartnerOptions = [\n {\n label: StaticPartnerOptionLabels.AllPartners,\n value: StaticPartnerOptionValues.All,\n },\n ];\n break;\n }\n // only include 'No partner'\n case UpdatePartnerActionType.SetToNoPartner: {\n updatedSelectedPartnerIds = [Unassigned.Partner];\n updatedSelectedPartnerOptions = [\n {\n label: StaticPartnerOptionLabels.NoPartner,\n value: Unassigned.Partner,\n },\n ];\n break;\n }\n // include all selections except 'All partners'\n case UpdatePartnerActionType.ExcludeAllPartners: {\n updatedSelectedPartnerIds = currentSelectedIds.filter(\n (id) => id !== StaticPartnerOptionValues.All,\n );\n updatedSelectedPartnerOptions = currentSelectedIds\n .filter((id) => id !== StaticPartnerOptionValues.All)\n .map((id) => {\n return {\n label:\n options\n .find((o) => o.groupTitle === PartnerOptionGroupTitles.QueryGroup)!\n .options.find((o) => o.value === id)?.label ?? '',\n value: id,\n };\n });\n break;\n }\n // include all selections except 'No partner'\n case UpdatePartnerActionType.ExcludeNoPartner: {\n updatedSelectedPartnerIds = currentSelectedIds.filter((id) => id !== Unassigned.Partner);\n updatedSelectedPartnerOptions = currentSelectedIds\n .filter((id) => id !== Unassigned.Partner)\n .map((id) => {\n return {\n label:\n options\n .find((o) => o.groupTitle === PartnerOptionGroupTitles.QueryGroup)!\n .options.find((o) => o.value === id)?.label ?? '',\n value: id,\n };\n });\n break;\n }\n default: {\n updatedSelectedPartnerIds = currentSelectedIds;\n updatedSelectedPartnerOptions = currentSelectedIds.map((id) => {\n return {\n label:\n options\n .find((o) => o.groupTitle === PartnerOptionGroupTitles.QueryGroup)!\n .options.find((o) => o.value === id)?.label ?? '',\n value: id,\n };\n });\n }\n }\n\n return {\n updatedSelectedPartnerIds,\n updatedSelectedPartnerOptions,\n };\n};\n","import { Unassigned } from '@aurorasolar/graphql-client-schema';\n\nimport {\n SearchablePartnerOption,\n StaticPartnerOptionLabels,\n StaticPartnerOptionValues,\n} from './types';\n\nexport const TEST_ID_PREFACE = 'partner-searchable-multi-select';\n\nexport const STATIC_PARTNER_OPTIONS: SearchablePartnerOption[] = [\n {\n label: StaticPartnerOptionLabels.AllPartners,\n value: StaticPartnerOptionValues.All,\n },\n {\n label: StaticPartnerOptionLabels.NoPartner,\n value: Unassigned.Partner,\n },\n];\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type SearchPartnersQueryVariables = Types.Exact<{\n pagination?: Types.InputMaybe;\n search?: Types.InputMaybe;\n}>;\n\n\nexport type SearchPartnersQuery = { __typename: 'Query', getPartners: { __typename: 'PartnerSearchResult', partners: Array<{ __typename: 'Partner', id: string, name: string }> } };\n\n\nexport const SearchPartnersDocument = gql`\n query SearchPartners($pagination: SearchPagination, $search: String) @trace_info(traceInfo: {pod: pricing}) {\n getPartners(pagination: $pagination, search: $search) {\n partners {\n id\n name\n }\n }\n}\n `;\n\n/**\n * __useSearchPartnersQuery__\n *\n * To run a query within a React component, call `useSearchPartnersQuery` and pass it any options that fit your needs.\n * When your component renders, `useSearchPartnersQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useSearchPartnersQuery({\n * variables: {\n * pagination: // value for 'pagination'\n * search: // value for 'search'\n * },\n * });\n */\nexport function useSearchPartnersQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(SearchPartnersDocument, options);\n }\nexport function useSearchPartnersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(SearchPartnersDocument, options);\n }\nexport type SearchPartnersQueryHookResult = ReturnType;\nexport type SearchPartnersLazyQueryHookResult = ReturnType;\nexport type SearchPartnersQueryResult = Apollo.QueryResult;","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type DownloadAgreementQueryVariables = Types.Exact<{\n id: Types.Scalars['ID'];\n}>;\n\n\nexport type DownloadAgreementQuery = { __typename: 'Query', downloadAgreement?: { __typename: 'AgreementDownload', base64?: string | null | undefined, filename?: string | null | undefined } | null | undefined };\n\n\nexport const DownloadAgreementDocument = gql`\n query DownloadAgreement($id: ID!) @trace_info(traceInfo: {pod: proposals}) {\n downloadAgreement(id: $id, fileType: pdf) {\n base64\n filename\n }\n}\n `;\n\n/**\n * __useDownloadAgreementQuery__\n *\n * To run a query within a React component, call `useDownloadAgreementQuery` and pass it any options that fit your needs.\n * When your component renders, `useDownloadAgreementQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useDownloadAgreementQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDownloadAgreementQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(DownloadAgreementDocument, options);\n }\nexport function useDownloadAgreementLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(DownloadAgreementDocument, options);\n }\nexport type DownloadAgreementQueryHookResult = ReturnType;\nexport type DownloadAgreementLazyQueryHookResult = ReturnType;\nexport type DownloadAgreementQueryResult = Apollo.QueryResult;","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type ProjectTeamAndAssigneeFragment = { __typename: 'Project', teamId?: string | null | undefined, ownerId?: string | null | undefined };\n\nexport type TeamDropdownDataFragment = { __typename: 'Team', id: string, name?: string | null | undefined, userCount?: number | null | undefined };\n\nexport type GetAvailableTeamsQueryVariables = Types.Exact<{\n partnerId: Types.Scalars['ID'];\n}>;\n\n\nexport type GetAvailableTeamsQuery = { __typename: 'Query', currentUser?: { __typename: 'User', id: string, teams?: Array<{ __typename: 'Team', id: string } | null | undefined> | null | undefined } | null | undefined, teamsByPartnerId?: Array<{ __typename: 'Team', id: string, name?: string | null | undefined, userCount?: number | null | undefined } | null | undefined> | null | undefined };\n\nexport type GetAssignableUsersQueryVariables = Types.Exact<{\n teamIds?: Types.InputMaybe | Types.Scalars['String']>;\n partnerIds?: Types.InputMaybe | Types.Scalars['String']>;\n includeAdmin: Types.Scalars['Boolean'];\n}>;\n\n\nexport type GetAssignableUsersQuery = { __typename: 'Query', assignableUsers: Array<{ __typename: 'User', id: string, firstName?: string | null | undefined, lastName?: string | null | undefined, role?: { __typename: 'Role', id: string, name: string, userLevel: string } | null | undefined }> };\n\nexport type AssignTeamMutationVariables = Types.Exact<{\n type: Types.AsyncJobType;\n projectIds: Array | Types.Scalars['ID'];\n teamId?: Types.InputMaybe;\n userId?: Types.InputMaybe;\n}>;\n\n\nexport type AssignTeamMutation = { __typename: 'Mutation', startAsyncJob: { __typename: 'AsyncDxf' } | { __typename: 'AutoDesigner' } | { __typename: 'AutoStringing' } | { __typename: 'AvoidedCost' } | { __typename: 'BaseAsyncJobResult', jobType: string } | { __typename: 'ExternalPDFGeneration' } | { __typename: 'FileUploaderResult' } | { __typename: 'Financing' } | { __typename: 'GeodataMessage' } | { __typename: 'GetFinancingProducts' } | { __typename: 'GetFinancings' } | { __typename: 'IntegrationSettingValidation' } | { __typename: 'IrradianceResult' } | { __typename: 'LineDiagramDxf' } | { __typename: 'LinkToResource' } | { __typename: 'NearmapAvailability' } | { __typename: 'PerformanceSimulation' } | { __typename: 'PricingAsyncJobResult' } | { __typename: 'VexcelAvailability' } };\n\nexport const ProjectTeamAndAssigneeFragmentDoc = gql`\n fragment ProjectTeamAndAssignee on Project {\n teamId\n ownerId\n}\n `;\nexport const TeamDropdownDataFragmentDoc = gql`\n fragment TeamDropdownData on Team {\n id\n name\n userCount\n}\n `;\nexport const GetAvailableTeamsDocument = gql`\n query GetAvailableTeams($partnerId: ID!) @trace_info(traceInfo: {pod: projectCollaboration}) {\n currentUser {\n id\n teams {\n id\n }\n }\n teamsByPartnerId(partnerId: $partnerId) {\n ...TeamDropdownData\n }\n}\n ${TeamDropdownDataFragmentDoc}`;\n\n/**\n * __useGetAvailableTeamsQuery__\n *\n * To run a query within a React component, call `useGetAvailableTeamsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetAvailableTeamsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetAvailableTeamsQuery({\n * variables: {\n * partnerId: // value for 'partnerId'\n * },\n * });\n */\nexport function useGetAvailableTeamsQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetAvailableTeamsDocument, options);\n }\nexport function useGetAvailableTeamsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetAvailableTeamsDocument, options);\n }\nexport type GetAvailableTeamsQueryHookResult = ReturnType;\nexport type GetAvailableTeamsLazyQueryHookResult = ReturnType;\nexport type GetAvailableTeamsQueryResult = Apollo.QueryResult;\nexport const GetAssignableUsersDocument = gql`\n query GetAssignableUsers($teamIds: [String!], $partnerIds: [String!], $includeAdmin: Boolean!) @trace_info(traceInfo: {pod: projectCollaboration}) {\n assignableUsers(\n teamIds: $teamIds\n partnerIds: $partnerIds\n includeAdmin: $includeAdmin\n ) {\n id\n firstName\n lastName\n role {\n id\n name\n userLevel\n }\n }\n}\n `;\n\n/**\n * __useGetAssignableUsersQuery__\n *\n * To run a query within a React component, call `useGetAssignableUsersQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetAssignableUsersQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetAssignableUsersQuery({\n * variables: {\n * teamIds: // value for 'teamIds'\n * partnerIds: // value for 'partnerIds'\n * includeAdmin: // value for 'includeAdmin'\n * },\n * });\n */\nexport function useGetAssignableUsersQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetAssignableUsersDocument, options);\n }\nexport function useGetAssignableUsersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetAssignableUsersDocument, options);\n }\nexport type GetAssignableUsersQueryHookResult = ReturnType;\nexport type GetAssignableUsersLazyQueryHookResult = ReturnType;\nexport type GetAssignableUsersQueryResult = Apollo.QueryResult;\nexport const AssignTeamDocument = gql`\n mutation AssignTeam($type: AsyncJobType!, $projectIds: [ID!]!, $teamId: ID, $userId: ID) @trace_info(traceInfo: {pod: projectCollaboration}) {\n startAsyncJob(\n type: $type\n settings: {projectIds: $projectIds, teamId: $teamId, userId: $userId}\n ) {\n ... on BaseAsyncJobResult {\n jobType\n }\n }\n}\n `;\nexport type AssignTeamMutationFn = Apollo.MutationFunction;\n\n/**\n * __useAssignTeamMutation__\n *\n * To run a mutation, you first call `useAssignTeamMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useAssignTeamMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [assignTeamMutation, { data, loading, error }] = useAssignTeamMutation({\n * variables: {\n * type: // value for 'type'\n * projectIds: // value for 'projectIds'\n * teamId: // value for 'teamId'\n * userId: // value for 'userId'\n * },\n * });\n */\nexport function useAssignTeamMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(AssignTeamDocument, options);\n }\nexport type AssignTeamMutationHookResult = ReturnType;\nexport type AssignTeamMutationResult = Apollo.MutationResult;\nexport type AssignTeamMutationOptions = Apollo.BaseMutationOptions;","import { useMemo } from 'react';\n\nimport { useLocaleFormat } from '@aurorasolar/common-core/src/hooks';\nimport { Unassigned } from '@aurorasolar/graphql-client-schema';\n\nimport { useGetAssignableUsersQuery } from '../reassign-project.generated';\n\nimport type { SelectableUser } from '../shared';\n\nconst unassignedUserOption: SelectableUser = {\n description: 'Unassigned from user',\n isUnassignedOption: true,\n label: 'No assignee',\n roleName: '',\n value: Unassigned.Project,\n};\n\nexport interface UseAssigneeOptionsProps {\n selectedTeamId: string | null | undefined;\n skip: boolean;\n canOnlyUnassign: boolean;\n selectedProjectPartnerId: string | null | undefined;\n}\n\nexport const useAssigneeOptions = ({\n selectedTeamId,\n skip,\n canOnlyUnassign,\n selectedProjectPartnerId,\n}: UseAssigneeOptionsProps) => {\n const { data: teamUsersData } = useGetAssignableUsersQuery({\n skip,\n variables: {\n // we don't allow admin to be assigned to partner project\n includeAdmin: selectedProjectPartnerId == null,\n partnerIds: [selectedProjectPartnerId ?? Unassigned.Partner],\n teamIds: [selectedTeamId ?? Unassigned.Team],\n },\n });\n\n const { stringComparator } = useLocaleFormat();\n\n return useMemo(() => {\n const userOptions = [unassignedUserOption];\n\n if (teamUsersData?.assignableUsers == null || canOnlyUnassign) {\n return userOptions;\n }\n\n return userOptions.concat(\n teamUsersData.assignableUsers\n .map((user) => ({\n label: [user?.firstName, user.lastName].filter(Boolean).join(' ') ?? '',\n roleName: user.role?.name ?? '',\n value: user?.id!,\n }))\n // TODO: Remove once Backend sorts users A-Z (after July 27, 2023)\n .sort((x, y) => stringComparator(x.label, y.label)),\n );\n }, [canOnlyUnassign, stringComparator, teamUsersData?.assignableUsers]);\n};\n","import { Unassigned } from '@aurorasolar/graphql-client-schema';\nimport { TeamDropdownDataFragment, useGetAvailableTeamsQuery } from '../reassign-project.generated';\nimport type { SelectableTeam } from '../shared';\n\nconst noTeamOption = {\n description: 'Unassigned from team',\n isUnassignedOption: true,\n label: 'No team',\n userCount: 0,\n value: Unassigned.Team,\n};\n\nexport const convertTeamToSelectable: (\n showNoTeamOption: boolean,\n data: (TeamDropdownDataFragment | undefined | null)[] | undefined | null,\n) => SelectableTeam[] = (showNoTeamOption, data) => {\n const teamOptions = [...(showNoTeamOption ? [noTeamOption] : [])];\n\n if (data == null) {\n return teamOptions;\n }\n return [\n ...teamOptions,\n ...data.map((team) => ({\n label: team?.name ?? '',\n userCount: team?.userCount ?? 0,\n value: team?.id!,\n })),\n ];\n};\n\nexport const useTeamOptions = ({\n skip,\n isTeamsEnabled,\n partnerId,\n}: {\n skip: boolean;\n isTeamsEnabled: boolean;\n partnerId: string | undefined | null;\n}) => {\n const { data } = useGetAvailableTeamsQuery({\n skip: skip || !isTeamsEnabled,\n variables: { partnerId: partnerId ?? Unassigned.Partner },\n });\n const showNoTeamOption = data?.currentUser?.teams?.length === 0;\n const teamData = data?.teamsByPartnerId;\n return convertTeamToSelectable(showNoTeamOption, teamData);\n};\n"],"names":["ZoneView","children","PageContent","Symbol","FullDivider","linecolor","schema","shape","integrationSettingId","of","required","RackingIntegrationModalCore","isOpen","onClose","options","loading","onSubmit","defaultIntegrationSettingId","Formik","enableReinitialize","initialValues","resetForm","validationSchema","submitForm","handleClose","open","size","as","text","component","disabled","label","name","placeholder","onClick","variant","handleSubmit","analytics","data","integrationData","integration","getIntegrationUnions","find","i","setting","id","getIntegrationFromSettingId","track","integration_id","trackRackingOpen","getDefaultIntegrationSettingFromOptions","length","value","undefined","defaultOptions","GetRackingIntegrationsDocument","RackingIntegrationModal","baseOptions","filter","map","buildOptionsFromIntegrationUnions","ModalButtonState","DefaultTitleWrapper","DialogStyled","props","maxWidth","space","width","defaultRenderTitle","title","defaultRenderButton","action","rest","key","alignSelf","ml","intent","e","Modal","leftBottomComponent","actions","renderTitle","renderButton","overlayProps","TitleNode","useMemo","p","my","justifyContent","flexDirection","Object","entries","actionDefinition","buttonProps","AutoStringMiMlpeModalCore","confirm","modalProps","Cancel","pb","AutoStringMiMlpeModal","openRightPanel","useCadRightPanelAction","init","SelectedIcon","attrs","fillColor","SelectionChangeIcon","isSelected","color","FlexRow","CheckboxWrap","StyledItem","canSelect","isMultiSelect","ComponentSelectItem","inputCount","manufacturer","rating","formatNumber","x","display","flex","overflow","wattage","suffix","maximumFractionDigits","minimumFractionDigits","formatWattageShort","ComponentSelectTestid","SelectButton","isDisabled","isActive","POPOVER_HEIGHT","ITEM_HEIGHT","SelectPopover","SearchInput","ComponentSelectCore","buttonLabel","buttonTestid","items","maxSelectionSize","minSelectionSize","onClickedAway","onComponentSelect","onPopoverClosing","onPopoverOpened","onPopoverOpening","onSearchStringChange","onToggleButtonClick","searchInput","searchTestid","selectedItems","validation","textColor","content","inputRef","leftIcon","onInput","currentTarget","item","has","minimal","onClosing","onInteraction","shouldBeOpen","onOpened","onOpening","position","target","fontSize","type","isValid","message","usePortal","ComponentSelectType","getComponentRating","ratingStc","ratedPower","getInputCount","componentType","DcOptimizer","Microinverter","__typename","mppts","numInputs","getComponentItems","hiddenIds","Array","isArray","componentSearch","components","includes","lookup","CombinerBox","Disconnect","LoadCenter","Meter","isMicroinverter","isSolarCompatible","ServicePanel","SolarInverter","SolarPanel","SingleInputMicroinverter","isSingleInputMicroinverter","commonActions","applySettings","assign","settings","_","visibleItems","queryResult","overrideSelectedIds","selectedIds","Set","processLoadedData","ctx","selectItems","selectionSize","min","delete","max","values","next","add","selectedComponents","validationCheck","componentSelectActions","cond","componentSelectMachine","createMachine","context","initial","states","closed","on","DATA_LOADED","EXTERNAL_SELECTED_ITEMS_CHANGED","SETTINGS_CHANGED","TOGGLE_BUTTON_CLICKED","fetchingInitialData","entry","CLICKED_AWAY","COMPONENT_SELECTED","SEARCH_STRING_CHANGED","shouldSearchAllComponents","event","searchString","searchWords","split","toString","word","toLowerCase","some","searchable","every","searchWord","filterComponent","filterComponents","SEARCH_STRING_READY","opening","POPOVER_OPENED","pendingDataRequest","BEGIN_DATA_REQUEST","uninitialized","ComponentSelectDocument","ComponentSelect","emptySelectionLabel","onSelection","projectId","validator","getPermission","useRef","searchTimeout","refreshItems","setRefreshItems","useState","state","send","useMachine","focusSearchInput","current","focus","queryComponents","onlyEnabledComponents","isInitialQuery","typeParams","params","includeIds","from","isEnabled","query","variables","input","getComponentSelectQueryParams","selection","validIds","startSearchDebounce","clearTimeout","window","setTimeout","useComponentSelectLazyQuery","useEffect","selectedItem","getButtonLabel","getFirstSelection","fn","isSingleInput","isExternalMppt","singleInputOnly","componentModalTestIds","ComponentModalCore","exists","genericDefault","isMain","setSelectedComponent","showExists","showMain","toggleExists","toggleIsMain","valid","Create","py","checked","onChange","modalComponentMap","actionType","modal","cannotBeGeneric","ComponentModal","selectedComponentId","setExists","setIsMain","featureFlags","disableMain","variation","databaseId","main","prev","CurrentInverterModalCore","cancel","Choose","CurrentInverterModal","selectedComponent","setCurrentInverter","newCurrentInverterId","DownloadDxfModalCore","setProp","Export","DownloadDxfModal","updateSettings","Buildings","Connections","Inverters","Modules","Obstructions","Setbacks","Strings","exportDxf","prop","MlpeSelectionWrapper","vertical","noSelection","css","MlpeSelection","hasSelectedPanel","integratedMlpeType","onRemoveMlpe","onSelectMlpe","onSelectMlpeType","selectedMlpeId","selectedMlpeType","alignItems","style","marginTop","mr","getNumericInputLimitProps","stepSize","solarPanel","rotation","spacing","Infinity","tilt","limits","customImage","opacity","sliderMax","sliderMin","dormer","pitch","edge","height","fillZone","minSap","firePathway","groundMount","heightToBase","maxStringLength","lidar","offsetXY","offsetZ","obstruction","radius","setback","roof","slope","stories","roofNode","angle","ruler","tree","crownDiameter","crownHeight","trunkDiameter","walkway","all","INCREASE_BUTTON_Z","zIndex","groundMountModalTestid","integerOnlyValidator","condition","Math","round","failureResult","inline","tooltip","NumericInputWithConversion","orientations","icon","P","GroundMountModalCore","isAdvancedOpen","mlpeSection","onDrawButtonClick","onPanelSelect","onStringingToggle","onStringLengthChange","onToggleAdvancedSettings","onUpdateSetting","portalContainer","settingsForCad","selectedSolarPanelId","solarPanelId","modalActions","Draw","pr","getItemIcon","selectable","onItemSelected","orientation","fill","onValueChange","rightElement","conversionType","tagComponent","stringingMode","allowEmptyValueOutput","validators","mb","flip","pt","interModuleSpacingX","interModuleSpacingY","getMlpeLabel","mlpe","isCellStringOptimizer","isDcOptimizer","isSolarInverter","sharedActions","selectPanel","panel","dcOptimizerId","microinverterId","toggleAdvancedSettings","toggleStringing","patch","updateStringLength","groundMountModalMachine","arraySpacingX","arraySpacingY","notReady","ADVANCED_SETTINGS_TOGGLED","PANEL_SELECTED","SETTING_CHANGED","STRING_LENGTH_CHANGED","STRINGING_TOGGLED","panelIsSelected","DRAW_CLICKED","MLPE_REMOVED","MLPE_SELECTED","mlpeId","MLPE_TYPE_ADDED","mlpeType","GroundMountModalDocument","GroundMountModal","designId","startDrawingGroundMount","useGroundMountModalQuery","startDrawing","dcOptimizer","micro","added_strings","adder","panel_orientation","design","useProjectAhj","skip","ahj","project","jurisdiction","country","InfoText","SubTitle","AhjText","CodeYearText","FireSprinklerTitle","Section","FireSprinklerToggle","AutoPlaceFirePathwayModalCore","fireSprinklers","setFireSprinklers","fireCode","setFireCode","codeYear","codeYearString","modelFireCode","match","getFireCodeYear","fontWeight","href","tooltipKey","parseInt","large","marginLeft","AutoPlaceFirePathwayModal","LegacyThemeProvider","StyledBox","tall","noBottomPadding","LabeledDropDownWithRemoveButton","onRemove","rowProps","textprops","bolded","StyledToggleButton","testids","OrientationButtonGroupItems","dataTestId","CadNumericInputWithConversion","SolarPanelModalCore","isAdvancedMode","isIrradianceLoaded","onPanelSelected","setState","collapseIsOpen","spacingX","spacingY","useDcOptimizer","useMicroinverter","widthSize","collapseLabel","panelId","pl","getItemKey","getItemTestId","rightIcon","allowNumericCharactersOnly","solarPanelModalReducer","partial","draft","SolarPanelModalDocument","SolarPanelModalLocalDocument","SolarPanelModal","useSolarPanelModalQuery","cadData","useSolarPanelModalLocalQuery","returnPartialData","CAD","irradianceState","status","fillZoneData","useInspectorState","preset","dispatch","useReducer","drawPanelPlane","intermoduleSpacingX","intermoduleSpacingY","rowSpacing","fillRoofFace","placePanels","mode","hasPanelSelected","handlePanelSelected","useCallback","handleAddPanel","handlePlacePanel","microinverter","handleFillRoofFace","basicAction","advancedAction","MapWrap","MapOverlay","StandardImageryModalCore","mapLocation","mapStartingSelection","onGetImagery","onMapSelectionUpdate","zoom","mapOptions","center","fullscreenControl","mapTypeId","minZoom","rotateControl","streetViewControl","trunc","lat","lng","maxHeight","minHeight","minWidth","columnGap","flexGrow","rowGap","lg","maxTileCount","shouldConstrainToSquare","startingSelection","h","gap","fullWidth","useTileSelectorStartingBounds","isModalOpen","bounds","setBounds","google","geodataService","async","maps","getGeodataBounds","LatLngBounds","updateBounds","resetBounds","getBoundsWidth","northEastCorner","getNorthEast","southWestCorner","getSouthWest","lngNE","lngSW","abs","getBoundsHeight","latNE","latSW","useTileSelectorZoom","boundsWidth","boundsHeight","boundsDimension","zoomLevel","dimension","log","baseZoom","StandardImageryModal","location","getCenter","mapSelection","updateMapSelection","changeToImage","mapCurrSelection","startBounds","currBound","resizeImages","geo","boundsParameters","onSpecifiedBoundsChange","useResizeImages","onCloseAndReset","change","ExpandImageryButton","activeModal","setActiveModal","useCadModal","selected","UnsavedChangesModalCore","save","noSave","isSaving","Save","preventNavigateAway","stopPropagation","returnValue","UnsavedChangesModal","savesDisabled","hasUnsavedChanges","navigation","route","pathname","redirectTo","url","addEventListener","removeEventListener","usePreventNavigateAway","saveAndLeave","navigate","CadModalsDocument","useCadModalsQuery","CameraHelperModal","verticalAngle","setVerticalAngle","horizontalAngle","setHorizontalAngle","setRadius","setLookatX","y","setLookatY","z","setLookatZ","lookat","client","activeModalData","modalData","writeQuery","modalAnalyticsMap","Map","CadModals","setRackingIntegrationSettingId","trackRef","setModal","closeModal","cadQueryData","analyticsEvent","get","used_shortcut","autoRoofMachine","roofType","checkingForExistingRoofs","EXISTING_ROOF_QUERY_LOADED","hasExistingRoof","JOB_STARTED","confirmingStart","MODAL_CLOSED","MODAL_KEEP_ROOFS_CLICKED","MODAL_OVERRIDE_ROOFS_CLICKED","idle","TOOLBAR_ITEM_SELECTED","running","exit","JOB_CANCELLED","JOB_ERRORED","JOB_FINISHED","RoofCountDocument","AutoRoofRunningStateDocument","UpdateAutoroofRequestDocument","CancelAutoroofRequestDocument","AUTOROOF_RUNNING_NOTIFICATION","AUTOROOF_COMPLETE_NOTIFICATION","getAutoRoofAnalyticsType","AutoRoof","RunConfirmationModal","analyticsEvents","allowedActions","apolloClient","toast","results","updateAutoroofRequestMutation","useUpdateAutoroofRequestMutation","cancelAutoroofRequestMutation","useCancelAutoroofRequestMutation","externalActiveModal","setModalState","clearExternalModalState","beforeStartJob","startJob","clearSystem","clearRoof","cancelAutoRoof","clearEverything","deleteEntitiesByIds","selectEntitiesByIds","triggerCadModeChange","getCompletionActions","callback","edited","console","warn","entityIds","roofIds","dismiss","slug","autoroofRequestId","updatedAutoroofRequest","rejected","obstructionIds","accepted","getRetryActions","setExternalRunningState","isAutoRoofRunning","cadState","useSetAutoRoofRunningState","checkIfCadHasExistingRoof","result","roofCount","clearRoofs","emitRunningFalse","emitRunningTrue","push","setRoofType","showCancelToast","canceled","showErrorToast","finished","error","error_type","showSuccessToast","startJobWithNoExistingRoof","ran","deleted_roof","existing_roof","onCloseClicked","onKeepClicked","onOverrideClicked","AutoRoofModal","Keep","chartSingleton","loadChartLibrary","default","defaults","plugins","legend","font","family","elements","point","cornerRadius","padding","labels","usePointStyle","boxHeight","boxWidth","scale","grid","drawTicks","drawOnChartArea","ticks","register","beforeDraw","chart","canvasBackgroundColor","globalCompositeOperation","fillStyle","fillRect","restore","afterDatasetsDraw","chartArea","enabled","hoverXAxisLine","getActiveElements","element","beginPath","moveTo","top","lineTo","bottom","lineWidth","strokeStyle","stroke","forEach","draw","isChromatic","animation","useChart","hasLibrary","setHasLibrary","getLibrary","useGetLibraryEffect","TooltipContext","externalTooltipFactory","onTooltipUpdate","animate","left","floor","caretX","caretY","dataPoints","TooltipContainer","buildTranslate","theme","zIndices","CustomTooltip","tooltip$","tooltipState","setTooltipState","subscription","subscribe","unsubscribe","Provider","useBuildChartDataset","holder","toReturn","setToReturn","arr","mergeWhileRetainingReference","a","b","keys","enableReactTooltip","hasReactTooltip","optionsOrDefault","external","ChartContainer","ChartImpl","canvasRef","chartInstance","tooltipSubjectRef","initialValue","instanceRef","newValue","useInstanceRef","Subject","datasets","reactTooltip","launchChart","node","update","observable$","complete","ref","asObservable","stepSizeFromData","stepCount","nonNullData","num","dataMin","minMaxOffset","step","wholeStep","ceil","log10","stepRounded","totalRange","optionsFactory","allData","formatCurrency","aspectRatio","bar","borderRadius","maintainAspectRatio","native","callbacks","datasetIndex","dataIndex","stack","tooltipLabel","ySum","reduce","sum","set","percentOfSum","buildTooltipLabel","this","buildTooltipTitle","responsive","scales","stacked","Number","StackSumChart","currency","stacks","stackData","index","flat","calculatePerStackValue","getCanvasContext","webglCanvas","offscreenCanvas","document","createElement","getContext","Error","getPixel","drawImage","blue","NaN","green","red","imgData","getImageData","normalizeYIQDelta","delta","sqrt","sign","perceptualColorDelta","img1","img2","k","m","yOnly","r1","g1","b1","a1","r2","g2","b2","a2","blend","rgb2y","computePerceptualDeltaYIQ","rgb2i","rgb2q","dy","di","dq","r","g","yiq2r","q","yiq2g","yiq2b","c","useRegionPixels","cadDomNode","topLeft","regionWidth","regionHeight","regionPixelsRGB","getRegionPixels","Uint8ClampedArray","regionPixelsYIQ","ret","yc","ic","qc","binData","thresholds","buckets","bucket","x0","x1","added","makeThresholds","chunks","scaleLinear","domain","range","scaler","t","invert","output","ColorDisplay","CadColorButtonCore","forwardRef","colorDisplayRef","deltas","outputString","isWaitingForRegion","filteredPixelsRGB","matchPercentage","maxDelta","onButtonClick","onIChange","onMaxDeltaChange","onModalClose","onPreviewClick","onQChange","onYChange","referenceColorRGB","referenceColorYIQ","yBuckets","iBuckets","qBuckets","textArea","previewCanvas","filteredCanvas","canvasHeight","canvasScale","histWidth","histHeight","regionPixelCount","canvas","putImageData","ImageData","imageRendering","xScale","yScale","makeRects","toRGB","colorString","yRects","iRects","u","qRects","v","deltaXScale","deltaYScale","lengths","deltaRects","border","rect","getBoundingClientRect","cx","clientX","cy","clientY","px","borderBottom","svgElement","newDist","rounded","strokeWidth","x2","y1","y2","htmlFor","valueAsNumber","background","toLocaleString","bg","fontFamily","readOnly","rows","userSelect","whiteSpace","select","execCommand","ColorPickerState","ColorPickerEvent","ColorPickerAction","colorButtonMachine","bottomRight","buttonIcon","eventSubscription","regionJustSelected","WAITING_FOR_CAD","DOM_NODE_READY","IDLE","COLOR_BUTTON_CLICK","SELECTING_REGION","SELECT_REGION","REGION_SELECTED","DISPLAY_RESULTS","MODAL_CLOSE","eventsOfInterest","CadColorButton","enableInput","disableInput","referenceY","setReferenceY","referenceI","setReferenceI","referenceQ","setReferenceQ","setMaxDelta","domNode","querySelector","regionDisplay","cadContainer","div","hideRect","contains","removeChild","initRect","outline","pointerEvents","appendChild","updateRect","useRegionRectDisplay","parentElement","updateDisplay","pixel","innerHTML","coordinates","useColorDisplay","merge","eventType","fromEvent","offsetX","offsetY","tlx","tly","d","useYIQBuckets","getMaxValue","curr","yMax","iMax","qMax","deltaMin","deltaMax","useYIQDeltaBuckets","matchCount","filteredPixels","matchedCount","useMatchedPixelsInRegion","regionString","pixelString","coreProps","matches","pu","pv","Months","downloadHourlyProductionCSV","resultUrl","response","fetch","json","fetchHourlySystemProductionJSON","csvArr","productionData","dateIterator","Date","getFullYear","hourlyACEnergies","hourly_ac_energies","energy","getMonth","getDate","getHours","padStart","parseFloat","toFixed","padEnd","setTime","getTime","convertJSONtoHourlyProductionCSVString","csvDataUrl","CadDownloadButtonDocument","SimulationCsvResultsDocument","DxfButton","CadDownloadButtonItem","ScreenshotButton","screenshot","cadUploadState","screenshotInProgress","ShadeReportButton","orgPermission","disabledResult","hasPermission","panelCount","disabledReason","ProductionDataButton","simulationResults","simulation","useSimulationCsvResultsQuery","performanceSimulationId","performanceSimulation","CadDownloadMenu","StyledCadDownloadButtonItem","Cad3dDownloadButtonItem","triggerAction","CADDownloadButton","useCadDownloadButtonQuery","isCadStateAvailable","modifiers","arrow","offset","onMouseDown","preventDefault","flag","linearGradient","amountToLighten","leftColor","rightColor","whichGradient","flatColor","ButtonGradientBackGround","ProgressButton","colorScheme","role","getToolTipMessage","lidarFeatureAvailable","lidarAvailable","lidarResolved","LidarSpan","CadLidarButtonCore","lidarButtonData","lidarIcon","CadLidarButtonDocument","CadLidarButton","orgPermissions","lidarController","useCadLidarButtonQuery","viewSettings","design3d","toggleLidar","UnderlineTabs","selectedTextColor","tabColor","notSelectedTextColor","hoverTextColor","lossNames","energy_after_ac_conversion","energy_after_age_loss","energy_after_availability_loss","energy_after_clipping","energy_after_connections_loss","energy_after_dc_wiring_loss","energy_after_lid_loss","energy_after_mismatch_loss","energy_after_nameplate_loss","energy_after_other_loss","energy_after_pv_conversion","energy_at_conditions","irradiance_after_horizon_loss","irradiance_after_iam_loss","irradiance_after_shade_loss","irradiance_after_snow_loss","irradiance_after_soiling_loss","irradiance_at_optimal_tof","irradiance_on_modules","lossPercentagesToSkip","getLossPercentage","previousValue","getLast","generateGroup","startingValue","startingWidth","previous","previousWidth","lossValue","previousLossValue","lossPercentage","lossTreeBarTestIds","LossTreeBar","stripes","LossTreeCore","lossTreeData","acGroupBar","dcGroupBar","irradianceGroupBar","otherGroupBar","irradianceData","dcData","acData","otherData","lastIrradianceBar","lastDcBar","lastAcBar","generateLossTree","uppercase","capitalize","barData","SimLog","AdvancedSectionCore","kwhPerKwp","performanceRatio","simulationLogs","simulationLogIsOpen","toggleSimulationLog","toggleCollapse","simLogs","rule","makeRule","breakpoints","rules","cssRule","join","typedValues","mediumBreakpoint","md","largeBreakpoint","sm","BoxGrid","column","columnEnd","columnStart","row","rowEnd","rowStart","Grid","columns","gridFlow","FormNumericInput","testId","leftText","rightText","cadNumericProps","LeftTag","noInlineErrors","FormPricePerUnit","unit","currencyType","symbol","FormSelectInput","onSelect","buttonType","defaultText","getItemLabel","FormGridRow","labelText","LabelWithTooltip","muted","small","AdvancedToggle","MONTHS","THREE_LETTER_MONTH_ABBREVIATIONS","slice","FixedChargeUnit","MONTHLY_ANNUAL","EXPORT_RATE_OPTIONS","ELECTRICITY_RATE_TYPE","getFixedChargeUnitOptions","DAY","MONTH","NET_SURPLUS_COMPENSATION_OPTIONS","MONTHLY_ANNUAL_OPTIONS","MONTHLY","ANNUAL","MONTH_OPTIONS","month","Card","FeedInTariffCard","startPeriod","rate","escalation","onCardFieldEdit","onCardDelete","onBlur","FitForm","setFieldValue","pushTariff","removeTariff","fixedUnitOptions","fixedCharge","opt","fixedChargeUnit","feedInTariffs","card","val","lastItem","newItem","BillingFrequencyAndTrueUpPeriod","billingFrequency","trueUpPeriod","endOfBillingCycle","billingFrequencyOptions","getBillingFrequencyOptions","trueUpPeriodOptions","getTrueUpPeriodOptions","ExportRateRow","rateInput","exportRule","exportPenalty","percentExport","flatExportRate","deriveRateInputComponent","FlatRateForm","setCollapse","flatRate","netSurplusCompensation","netSurplusCompensationType","minimumBill","minimumBillUnit","defaultItemRenderer","AsyncSearchSelectDropdownList","itemRenderer","AsyncSearchInput","onSearch","isPopoverOpen","AsyncSearchSelect","setSearchString","setPopoverState","handleSearchChange","interactionKind","isFocused","classList","StyledDialog","AuroraModal","leftActionArea","subTitle","dialogProps","mt","buttonChildren","tariffToOption","tariff","RateSelectionModalForm","defaultTariff","defaultEscalationRate","onChangeTariff","tariffOptions","onTariffSearch","modalLabel","isPostSolar","autoPopulatePostSolarRates","setIsSaving","initialSettings","autofillAdvancedSettings","chosenTariff","escalationRate","overwriteAdvancedSettings","tariffKey","tariffType","finally","option","isSolarPvEligible","backgroundColor","utilityName","renderOption","labelTooltipKey","ReadOnlyAuroraInputGroup","RateSelectionModal","onSave","setIsOpen","TouForm","preSolarTariffOptions","searchPreSolarTariffs","postSolarTariffOptions","searchPostSolarTariffs","preSolarEscalationRate","preSolarTariff","postSolarTariff","SelectStyleOverwrite","BillSavingFormCore","setValues","elecRateType","transitionDuration","FieldArray","remove","BillSavingFormDocument","UpdatePreSolarTariffDocument","UpdateAvoidedCostSolarTariffDocument","transformToInputTariff","buildFormShape","avoidedCostData","projectData","elecRateTypeStrict","exportRuleStrict","postSolarTariffOverwriteSettings","utilityRateEscalation","BillSavingForm","saveChanges","useBillSavingFormMutation","setPreSolarRate","useUpdatePreSolarTariffMutation","setPostSolarRate","useUpdateAvoidedCostSolarTariffMutation","preSolarTariffResults","postSolarTariffResults","lastSavedValues","handleSave","slimmedValues","updatedAvoidedCost","_____","hasPreSolarTariffChanges","hasPostSolarTariffChanges","nextProjectData","nextAvoidedCostData","then","updateAvoidedCost","setTariffOnProject","avoidedCostId","setPostSolarTariffOnAvoidedCost","saveResults","debounceHandleSave","cancelDebounce","updateForm","CADPerformanceCallout","stats","textTransform","stat","copy","fallbackTargetElementId","copyPermission","navigator","permissions","clipboard","writeText","isFallbackCopySuccessful","targetElementId","copyTextArea","targetElement","getElementById","body","isCopySuccessful","fallbackCopy","useCopyGraphData","isCopied","setIsCopied","debouncedSetIsCopied","errorMsg","setErrorMsg","headers","rowFormatter","str","header","rowHeader","rowValues","rowValue","err","copyGraphData","CopyGraphData","CadPerformanceDropdownGraphCore","labelUnit","dataSets","barChartProps","colors","gridLineColor","uniqueDataset","n","decimalPlaces","useSingleYAxis","CadPerformanceStackedGraph","MONTHLY_UTILITY_BILL_SAVINGS","CADPerformancePanelType","ProductionPanel","chartData","calloutData","advancedData","primaryStat","UtilityBillSavingPanel","performanceWithDemandChargesChartData","hasDemandCharges","year1PreSolarDemandCharges","year1PostSolarDemandCharges","PerformanceDropdownWrapper","CustomTabs","CadPerformanceDropdownCore","dropdownPortal","utilityBillSavingData","tabs","PRODUCTION","SAVINGS","backdropClassName","canOutsideClickClose","hasBackdrop","renderActiveTabPanelOnly","PerformanceSummaryArea","isDrawerOpen","PerformanceSummary","billSavingsValue","productionValue","systemSize","toggleDrawer","toKwString","tooltipMap","SimulationButton","runSimulations","simulationState","tooltipMessage","handleRunSimulations","CadPerformanceDropdown","avoidedCost","production","savings","summary","setIsDrawerOpen","CadPointerRecorderButtonCore","formattedRecording","outputTextRows","RecorderState","RecorderEvent","RecorderAction","pointerRecorderMachine","recordedEvents","RECORDER_BUTTON_CLICK","RECORDING","START_RECORDING","STOP_RECORDING","CadPointerRecorderButton","getInstruction","filteredRecording","accumulator","upDownDelta","upX","upY","upType","downX","downY","downType","getUpDownDelta","recording","formatRecording","errorMessageDefaultProps","description","ErrorMessage","ELEVATION_TENANT_IDS","FREEDOM_FOREVER_TENANT_IDS","EMPOWER_HOME_SOLAR_TENANT_IDS","SALES_MODE_EXIT_BUTTON_TENANT_IDS","UserAccountType","isAuroraAdmin","_isAuroraAdmin","isAdmin","userLevel","isTeamMember","custom","isLimitedTeamMember","isPremiumAccount","userAccountType","isDesignerAccount","isEnterpriseAccount","tenantAccountType","isDesignAccount","isRecurlyEnabled","recurlyEnabled","isElevationTenant","tenantId","isEmpowerHomeSolarTenant","isFreedomForeverTenant","canAccessProjectIndex","rolePermissions","accessProjectIndexPage","PERMISSIONS","partnerId","isEPCTenant","accessDatabasePage","canAccessDatabase","isModernConceptsTenant","isGasFastTenant","accessDesignMode","canAccessDesignMode","isSecureMode","editSiteModel","canEditSiteMode","permissionsMode","isUnlockedMode","isSalesModeExitButtonTenant","updatePricing","createProjects","canCreateProjects","debugLogger","extend","OrgPermissionGuard","localStorage","apiInfo$","ready$","combineLatest","pipe","switchMap","apiInfo","user","email","getItem","orgProps","access_database_page","access_design_mode","access_project_index_page","create_projects","edit_site_model","readTeamProject","read_team_project","updateConsumptionData","update_consumption_data","update_pricing","aurora_admin","tenant","permissions_mode","limited_team_members_cannot_update_site_model","partner_id","permission_mode","has_automated_billing","account_type","user_level","getUserData","permission","checkUserOrgPermission","elseShow","isChildShown","SettingsTitle","SettingsDivider","SettingsInputArea","compact","twoThirds","GroupedBox","toUpperCase","capitalizeWords","words","AuroraSimulationFormTestid","LegacyAuroraSimulationForm","weatherStations","weatherDatasets","updateDesign","updateCadIrradiance","irradianceModels","updatePerformanceSimulation","setWeatherDataset","perfSim","masterPerformanceSimulation","activeWeatherDataset","irradianceWeatherDatasetId","rawWeatherStations","activeWeatherStation","irradianceWeatherStationId","WEATHER_DATA","weatherDataset","WEATHER_STATION","weatherStation","IRRADIANCE_MODEL","irradianceModel","model","INVERTER_CLIPPING","defaultChecked","inverterClipping","SUBMODULE_SIMULATION","submoduleSimulation","pvWattsWeatherDatasets","PVWattsSimulationFormTestid","PVWattsSimulationForm","pvwattsWeatherDataset","WEATHER_DATASET","dataset","INVERTER_EFFICIENCY","inverterEfficiency","DC_AC_RATIO","dcAcRatio","AlertTooltipType","Icons","DANGER","WARNING","INFO","StyledTooltip","AlertTooltipContent","lineHeight","AlertTooltip","tooltipProps","monthlyColumnLabels","StyledLossColumn","MonthlyLossColumn","losses","monthlyTotalLoss","onUpdateLoss","visibleLosses","lowercaseMonth","lossName","loss","monthlyValues","updatedValue","monthlyLossModalMachine","MODAL_OPENED","initialLosses","openedWith","opened","CANCEL_CLICKED","DONE_CLICKED","MONTHLY_LOSS_ADDED","MONTHLY_LOSS_REMOVED","monthlyLosses","MONTHLY_LOSS_UPDATED","monthlyAllowedLosses","LossLabelColumn","calculateMonthlyTotalLosses","totals","annualValue","MonthlyLossModal","onUpdateLosses","closeExternal","setLossTypesToAnnual","updateLosses","hiddenLosses","monthlyTotalLosses","visible","overflowX","monthLabel","StyledLink","ButtonHeightCheckbox","lossLabelOverrides","AnnualSystemLossInput","onLossUpdate","onOpenMonthlyModal","isMonthlyEditingAllowed","getLossInfo","disabledMap","isSimulationShadingEnabled","isUsingMLPE","disabledCheck","stripTypename","ob","SystemLosses","monthlyOpenedWith","setMonthlyOpenedWith","shadingEngineEnabled","updateLoss","newLosses","systemLosses","newLoss","annualLossInputProps","totalLoss","total","acc","average","getTotalLoss","SimulationSettingsTestid","LegacySimulationSettingsCore","simulationEngines","simulationEngine","engineMatches","SIMULATION_ENGINE","selectedEngine","SHADING_ENGINE","HORIZON_SHADING","useHorizonProfile","LIDAR_SHADING","useLidarShading","PerformanceSimSettingsFragmentDoc","SimulationSettingsFragmentDoc","SimulationSettingsDocument","useSimulationSettingsQuery","SimulationSettingsWeatherStationsDocument","ClosestWeatherStationsDocument","UpdateSimulationDesignDocument","useUpdateSimulationDesignMutation","UpdatePerformanceSimDocument","useUpdatePerformanceSimMutation","getOptimisticPerfSimResponse","updatedPerfSim","mergedPerfSim","mergeDeep","LegacySimulationSettings","updateDesignMutation","updatePerfSimMutation","refetchQueries","perfSimId","irradianceSettingsChanged","updatedPerformanceSimulation","optimisticResponse","weatherDatasetId","latitude","longitude","updatedDesign","allWeatherDatasets","searchWeatherDatasetIds","geography","countryIsIncluded","weatherStationsResult","useSimulationSettingsWeatherStationsQuery","weatherDatasetIds","allWeatherStations","hasErrors","isLoading","weatherReady","AuroraSimulationForm","weatherStationsReloading","initialLoad","emptyStations","invalidDataset","defaultWeatherDatasetText","defaultWeatherStationText","className","renderAfter","SimulationSettingsCore","SimulationSettings","solcastEnabled","queryError","queryLoading","onCompleted","isInitialDatasetDynamic","setInit","activeDatasetId","allDatasets","weatherStationsData","weatherStationsError","refetch","refetchWeatherStations","useClosestWeatherStationsQuery","setWeatherStationsReloading","loadedDatasets","closestWeatherStations","availableStations","availableDatasets","loadedDatasetIds","onError","newId","closestStation","newData","newClosestStation","loadedDataset","catch","_err","emptyState","useDebouncedPatchableState","externalState","patchExternalState","wait","setDelta","updateExternal","stripTypenameDeep","rawObject","isTypenamedArray","newObject","StyledButton","SystemSettingsTestid","places","multiplier","distanceLimits","SystemSettingsCore","jurisdictions","updateSetbackSettings","resetSetbacks","setbacks","canEditSite","jurisdictionName","setbackInputs","SETBACKS_VALLEYS","maxDecimalPlaces","JURISDICTION","jurisdictionId","SETBACKS_ALL","flexWrap","dormers","SETBACKS_DORMERS","ROW_SPACING","MODULE_SPACING_X","MODULE_SPACING_Y","temperatureSource","TEMPERATURE_MIN","temperatureMax","temperatureMin","TEMPERATURE_MAX","SystemSettingsDocument","SystemSettingsLocalDocument","UpdateSystemSettingsDocument","SystemSettings","updateSetbacksTrigger","useSystemSettingsQuery","useSystemSettingsLocalQuery","updateSettingsMutation","useUpdateSystemSettingsMutation","saveDesign","updatedSettings","saveSetbackSettings","setbacksPatch","safeSetbacks","updateSetbacks","DropdownWrapper","DesignSettingsTab","DesignSettings","onClosed","selectedTab","setSelectedTab","SYSTEM","tab","selectedTabId","SIMULATION","DesignSettingsButtonDocument","OverlayState","DesignSettingsButton","overlayState","setOverlayState","CLOSED","setbackSettings","useDesignSettingsButtonQuery","OPEN","isClosed","CLOSING","IrradianceControlCore","sideButtonIsActive","mainButtonIsActive","showMainProgress","showSideProgress","onMainButtonClick","onSideButtonClick","mainButtonDisabled","sideButtonDisabled","showSideRefresh","irradianceSunIcon","IrradianceControlDocument","checkDisabled","stateType","jobCanBeRun","checkSettled","IrradianceControl","useIrradianceControlQuery","panelIsDisabled","panels","roofIsDisabled","roofIsActive","irradianceMap","roofIsSettled","panelsIsSettled","roofIsComplete","panelsIsComplete","irradianceMapPanels","runPanelIrradiance","toggleIrradiance","ToggleSelectWrapperElement","ToggleSelectElement","popoverProps","popoverClassName","ToggleSelectMenuItemText","ToggleSelect","iconPositive","iconNegative","onItemSelect","filterable","handleClick","ViewSettingsToggleDocument","useViewSettingsToggleQuery","VIEW_TOGGLE_LIST","ToggleDropdownButton","ViewSettingToggle","setVisibility","toggles","ele","CadControlsBarDocument","CadSaveButton","canSave","hasRecentSave","iconProps","spin","CadControlsBar","useCadControlsBarQuery","canRedo","canUndo","undo","redo","CadMapDocument","SplitviewElement","CadMap","useCadMapQuery","switchSplitView","mapView","streetView","setToStreetView","setToMapView","hidden","cursor","CenteredContent","typography","ToolbarAction","ToolbarFrame","ToolbarTitle","ToolbarChildren","CadModeToolbarCore","onExitClicked","subStateTextMap","xSizing","ySizing","DrawGroundMountToolbar","subState","DormerTypeGable","widthPx","heightPx","viewBox","xmlns","transform","DormerTypeHip","DormerTypeShed","DormerShapeButtonIcons","KinkShapeButtonIcons","ToolbarButton","RoofModeToolbar","dormerAction","placeDormer","kinkAction","placeKink","nowrap","mx","foldType","ShapeType","walkwaySubStateTextMap","drawing","firePathwaySubStateTextMap","DrawWalkwayToolbar","DrawFirePathwayToolbar","CadModeToolbar","isResidential","deepestMode","CustomComponent","stringing","getToolbarMap","CadOverlayDocument","CadToastGrow","SPACER_HEIGHT","Spacer","CadToast","StyledCadTooltip","CadTooltip","cadWrapper","tooltipEl","trackPosition","setProperty","hide","DrawGroundMountTooltipDocument","tooltips","groundMountTooltipColumns","groundMountTooltipRows","useDrawGroundMountTooltipQuery","CadTooltips","ToolTip","LidarAvailableDocument","useLidarAvailableQuery","InputBox","CadInspectorInputArea","customLabelWidth","leftElement","numericInputOffset","InspectorAnalyticsMap","obstruction_circle","obstruction_polygon","inspectorAnalytics","category","modelType","test","withOpacity","StyledCard","BOTTOM_AREA_OUTER_HEIGHT","BottomAreaPlaceholder","BottomButtonArea","$hasOverflow","TopBar","TopBarTopHalf","BottomPanel","TopBarNameRow","hasCopy","hasDelete","additionalActions","deleteAction","duplicateAction","handleDelete","handleDuplicate","actionItems","testid","CadInspectorPanel","bottomButton","bottomButtonArea","hasOverflow","wrapper","useExternalClick","domRef","handler","callbackRef","handleClickWithRefs","availableRefs","handleExternalClick","withRepeatOnHold","CoreComponent","repeatableAction","delay","interval","actionRef","disabledRef","press","setPress","pressRef","repeatAction","thisPress","ms","start","stop","onMouseLeave","onMouseUp","onTouchEnd","onTouchStart","StyledWrapper","RepeaterButton","StyledSlider","roundTo","Slider","clampToMinMax","clamp","safeStepSize","safeInput","labelRenderer","ClickableInspectorTag","SmallInput","DoubleInputCore","onFocus","clickHandler","convertedValue","largeVal","smallVal","separateUnit","handleValueChange","newLargeVal","newSmallVal","combinedVal","DistanceToggleInputArea","dataTestid","turnOnFtInDisplay","unitType","toggleDisplay","setToggleDisplay","isImperial","rightTag","testIds","getSliderProps","getInputProps","SliderWrapper","SliderCollapse","PopoutWrapper","forceActiveStyles","PopoutSlider","rawProps","safeProps","getPropDefaults","isInputFocused","setInputFocus","disabledMessage","tooltipChildren","setFocus","isDistance","wheelHandler","deltaY","valueDelta","clampedValue","onWheel","CadInspectorSectionTitle","CadInspectorSwitch","alignIndicator","CadInspectorPrimaryActionButton","CadInspectorValueDisplay","SolarPanelStc","PanelSelectionDetails","componentLabel","count","minCount","fontStyle","formatWattage","StyledSection","BUTTON_VERTICAL_OFFSET","BUTTON_HORIZONTAL_OFFSET","CollapseButton","CadInspectorSection","collapsible","hideDivider","externalIsOpen","padBottom","sectionTitle","internalIsOpen","toggleIsOpen","isControlled","divider","childContainer","ToggleTitle","onToggle","transformMaybe","azimuthToCardinalDirection","azimuth","cardinalDirections","chunk","removeNullFromValue","numericDisabledProp","propPipeline","factories","args","numericProps","switchProps","ExplodeButtonState","ExplodeButtonTooltip","NotAvailable","Available","ExplodeButton","available","explodeAction","handleExplode","RoofTypeOptions","ReadonlyInspector","info","openSetCamera","TreeShapeOptions","ObstructionType","CadInspectorObstructionCore","areMultipleSelected","updateObstruction","detectSimilar","selectSimilar","flush","heightAbove","setbackProxy","handleSwitchChange","toggled","radiusSlider","CIRCLE","ObstructionInspector","obstructionType","multipleSelected","detectSimilarAction","selectSimilarAction","EdgeDirectionOptions","EdgeInputs","updateSingleEdge","edgeDirection","setEdgeDirection","applyToAllEdges","setApplyToAllEdges","setAllEdgeHeights","attr","restrictToFaces","updateEdgeLength","setEdgeHeight","setEdgeLength","newLength","anchorSide","updateEdgeDirection","direction","EdgeFaceModel","PitchTypeOptions","isVertical","EdgeFaceInspector","face","updateFace","setIsVertical","applyToAllFaces","setApplyToAllFaces","setAll","convertToVertical","convertFromVertical","setPitch","setSlope","setVertical","willBeVertical","EDGE_PERIMETER","Title","NoSelect","CopyIconContainer","RoofDataContainer","RoofDataHeaderContainer","getDataString","textData","unitLabel","formattedValue","replace","wrapUnitLabel","DataSection","notify","copySectionToClipboard","datum","DataCell","isLastRow","unitSuffix","FaceInfoInspectorCore","roofData","roofId","downloadCSV","download","modelId","dataString","copyAllSectionsToClipboard","IRRADIANCE_UNIT","formatIfAvailable","formatFn","formatOrFallback","getRoofCharacteristicsSection","distanceUnit","areaCumulative","panelsAreaCumulative","panelsCountCumulative","roofCoverage","SIZE_UNIT","convertArea","getIrradianceRoofDataSection","averageIrradiance","totalEnergy","sap","tof","tsrf","SunPathRadioButton","SunPathInspectorCoreRadioLabel","SunPathInspectorCoreInputName","SunPathInspectorCoreTestId","SunPathInspectorCore","animationMode","sky","onChangeAnimationMode","onStartAnimation","onStopAnimation","onUpdateSky","isPlaying","currAnimMode","playIcon","date","day","hours","hour","minutes","getCadSkyDate","dateString","format","DATE_STRING","HOUR_INPUT","HOUR","DAY_INPUT","daysInCurrentMonth","MONTH_INPUT","useProjectType","projectById","projectType","Label","Value","FirePathwayInspectorCore","isInstance","isSplit","widthLeft","widthRight","buildingModuleCoverage","setWidth","setWidthLeft","setWidthRight","isSingleWidthShown","textAlign","CutoutType","CutoutTypeReverseMapping","myEnum","reverseMapping","generateEnumReverseMapping","cutoutItems","WalkwayInspectorCore","cutoutType","cutoutWidth","cutoutLength","cutoutSpacing","FirePathwayInspector","firePathwaysState","selectionActions","firePathways","selectionData","MAX_BREAKER_SIZE","componentDropdownMap","InspectorComponentSelect","onComponentUpdated","updateComponent","ElectricalConnections","updatePort","handleSelection","inspectableConnections","thisConnection","cadId","toPort","component_type","connection_type","allDisabled","selects","connection","safeOptions","String","TEST_ID","SLIDER_CURRENT_RATING","SWITCH_FUSED","SLIDER_MAIN_BREAKER_RATING","SWITCH_EXISTS","SLIDER_BREAKER_RATING","SLIDER_BUS_RATING","SWITCH_COMBINED_METER","SolarPanelDimensions","dimensions","AutoStringButton","selectedPanelCount","isVisible","PanelOrientationOptions","SolarPanelInspectorCore","wattageCumulative","updateFn","setAddDcOptimizerClicked","hasMultiInputMLPE","setAddMicroInverterClicked","addDcOptimizerClicked","addMicroInverterClicked","setPanelOrientation","setPanelRotation","setPanelTilt","setPanelDatabaseId","openAutoString","openAutoStringModal","showAddComponentButtons","showDcOptimizerSelect","showMicroinverterSelect","newDatabaseId","boundary","targetProps","newOrientation","newTilt","newRotation","SolarPanelInspectorPanelDocument","NumericInput","groundMountInspectorTestids","GroundMountInspectorCore","onUpdateGroundMount","moduleSpacingX","moduleSpacingY","GroundMountInspectorDocument","FillZoneAdvancedPanelSection","isIrradianceReady","onFillZoneChange","settingsApplied","FillZoneComponentSection","onRerunAutoStringer","componentCount","wasStrung","FillZoneInspectorCore","componentSection","onPlacePanels","onRunAutoStringer","onUpdatePanels","panelInfoSection","panelSection","predicate","button","findAction","wasFilled","fillComplete","FillZoneNameInfoFragmentDoc","FillZoneInspectorDocument","zeroToUndefined","FillZonePanelInfoSection","onExplode","onTogglePanels","hasEverBeenFilled","setHasEverBeenFilled","hasPanels","orientationOptions","tiltPatternOptions","fillMode","FillZonePanelSection","advancedSection","hasComponents","selectedOrientation","selectedTiltPattern","inverterIdKeys","removeEmpties","maybe","useFillZoneQuery","componentIds","getComponentIds","useFillZoneInspectorQuery","inverterIds","inverters","DisplayBox","PanelAreaInspectorCore","setDatabaseIdDefault","setOrientationDefault","setTiltDefault","setRotationDefault","triggerRefill","isEditMode","setEditMode","solarPanelModel","updateRoof","isSolarPanelPresent","solarPanelSettings","updateSolarPanelSettings","updateSolarPanelSettingsPartial","newState","setDatabaseId","setOrientation","setTilt","setRotation","fillParams","pitchProxy","DormerShapeLabels","ShapeWrapper","active","DormerShapeIcon","lidarStyles","LidarInspectorCore","elevation","textured","fitToLidar","lidarSourceSelect","updateElevation","SourceRow","LidarAvailability","AURORA_LIDAR_LABEL","SUNROOF_LABEL","lidarSource","LidarSourceSelectCore","activeSource","availability","selectSource","AURORA_ONLY","SUNROOF_ONLY","BOTH","LidarSourceSelectDocument","LidarSourceSelectLocalDocument","LidarSourceSelect","useLidarSourceSelectQuery","useLidarSourceSelectLocalQuery","sources","elevationSources","sort","right","parse","createdAt","source","sunroofMaybeAvailable","sunroofLidarAvailability","auroraLidarMaybeAvailable","auroraLidarAvailability","NONE","getLidarAvailability","setActiveElevationSource","AnchorSideOptions","RoofNodeCore","setAngle","setAnchorSide","fixZero","RulerTypeOptions","isFlat","AzimuthEdgeSettings","setEdge","azimuthValue","roofHeight","roofStories","roofPitch","setbackTypes","AzimuthEdgeButton","RoofEdgeCore","setAzimuthEdge","isAzimuthEdge","newType","setbackType","DisabledSolarPanelInspectorCore","enableAllPanels","selectedDisabled","selectedEnabled","enableSelectedPanels","CustomImageryInspectorCore","image","updateImage","onToggleVisibility","finishEditing","angleZ","ModeInspector","MissingInspectorModels","HighLevelModes","CustomLogicModels","ModeInspectorExceptions","inspectorMap","camera","comp","lookatX","lookatY","lookatZ","combinerBox","disconnect","disconnects","fused","setFused","currentRating","setCurrentRating","convertToRoof","isHip","updateShape","pitchMax","pitchMin","pitchFront","pitchFrontMax","pitchFrontMin","edge_perimeter","edge_roofPlane","fitAll","face_building","faceInfo","annualIrradiance","faceAnnual","irrFace","faceId","roofIrradianceSection","panelsIrradianceSection","sections","formatRoofData","updateFillZones","usePlacePanels","openUninitAutoString","kink","loadCenter","loadCenters","mainBreakerRating","setMainBreakerRating","meter","updateMeter","modeManager","node_perimeter","newAngle","orthoImageEditor","exitMode","sourceId","updateOrthoImage","panel_plane","read_only","moveAction","handleMove","setFlatRoof","setPitchedRoof","setStories","nextStories","setRoofHeight","hasLidar","isLidarComplete","fitAction","handleFitToLidar","onEditRoofSelected","isPitchedRoof","inFlatMode","canExplode","roof_plane","roofPlane","updateLength","updateIsFlat","setLength","setIsFlat","newIsFlat","rulerSegment","lengthContent","isOnlySegment","isEndSegment","isRulerFlat","servicePanel","servicePanels","trackServicePanelEvent","component_id","setMain","combinedMeter","setCombinedMeter","busRating","setBusRating","breakerRating","setBreakerRating","currentAnimationMode","setCurrentAnimationMode","updateSky","startAction","stopAnimation","startAnimation","changeAnimationMode","solarArray","updateGroundMountState","mlpeTypeToAdd","setMlpeTypeToAdd","selectedMlpe","setGroundMountHeight","solarPanelResult","useGroundMountInspectorQuery","fetchPolicy","directUpdate","newHeight","solarInverter","updateSolarInverter","fuseRating","solarPanel_disabled","disabledPanels","solarPanels","solarPanel_free","useSolarPanelInspectorPanelQuery","otherProps","useCadModalAction","renameShape","parsedData","walkwayCutoutLength","walkwayCutoutSpacing","walkwayCutoutType","walkwayCutoutWidth","walkwayWidth","parseUpdate","updated","getInspectorConfigKey","inspectorSelection","except","uberMode","inDesignatedMode","selectedModels","shouldShowPanelArea","selectionOnlyIncludes","shouldShowDisabledPanel","modelsData","selectedModelData","firstModelKey","isModeMissing","isHighLevelMode","useGetInspectorConfig","useInspectorSelectedModel","InspectorRenderer","Comp","StyledInspectorTabs","InspectorTab","InspectorTabsCore","InspectorTabsDocument","InspectorTabs","useInspectorTabsQuery","inspectableModels","typesPresent","inUberMode","selectLidar","retainSelection","selectSunPath","v2","selectModeModel","deselectAll","deselectLidar","onlyLidar","activeIcon","useNonCustomInspectorIcon","unshift","sunpath","present","autoPlaceFirePathwaysDisabledCheck","roofDisabledCheck","autoRoofDisabledCheck","isResolved","isAvailable","trigger","cadContext","cadInstance","engine","getSiteInstrumentPanelItems","submenu","showInCommercial","shortcut","getSystemInstrumentPanelItems","isFirePathway","tracking","showInResidential","panelTypes","payload","multi","filterItem","filterSources","check","flags","flagCheck","hideInResidentialCheck","hideInCommercialCheck","permissionCheck","filterItems","filteredItem","InstrumentsPanelMenuClientDocument","InstrumentsPanelMenuRouteDocument","InstrumentsPanelRowColumns","isMinimized","InstrumentDivider","InstrumentsPanelMenuItem","submenuCornersType","portalClassName","SubmenuCornersType","Rounded","InstrumentsPanelRow","instrumentPanelClientData","remainingSiblingsCount","Straight","activeCheck","filteredSubmenu","subItem","instrumentCount","subitem","instrumentIndex","captureDismiss","hoverCloseDelay","shouldDismissPopover","InstrumentsPanelMenu","instruments","useInstrumentsPanelMenuRouteQuery","useInstrumentsPanelMenuClientQuery","filteredInstruments","menuRows","MinimizedTab","InstrumentsTabs","InstrumentsPanelMenuWrapper","BLUEPRINT_POPOVER_Z_INDEX","InstrumentsPanelAdvancedCore","currentTab","onModeChange","InstrumentsPanelAdvanced","triggerModeChange","BASIC_INSTRUMENTS_LIST","InstrumentsPanelBasic","InstrumentsPanelDocument","InstrumentPanelCard","cardProps","InstrumentsPanel","useInstrumentsPanelQuery","setIsMinimized","WHITE","ORANGE","EMPTY_DATA","months","labelMonths","getDataset","labelSuffix","labelFormatter","StyledIrradianceMonthly","ChartWrap","IrradianceInspectorMonthlyChart","monthlySap","monthlyIrradiance","solarAccessData","areAnimationsDisabled","displayXAxis","hideLegend","labelColors","roundedBars","roundOrBlank","StyledIrradianceInspector","isExpanded","hasError","IrradianceInspectorCore","irradiance","isAverage","toggleExpanded","IrradianceInspectorDocument","IrradianceInspector","setIsExpanded","useIrradianceInspectorQuery","getData","cad","irradianceValue","irradianceValuesType","averageSap","averageTof","averageTsrf","irrMonthlyValues","sapMonthlyValues","sapValue","tofValue","tsrfValue","charAt","toLocaleLowerCase","MAX_CUSTOM_IMAGERY_MESSAGE","NearmapAvailabilityInfoDocument","StyledImagerySelection","StyledRow","NearmapImagerySelection","images","trueOrthoItems","readableDate","sortedItems","imageA","imageB","newSelection","StyledCreditPopover","NearmapModalCreditPopover","creditsToConsume","availableCredits","StyledNearmapDialog","CloseNearmapModalButton","Divider","NearmapModalCore","availableImages","ignoreCredits","selectedImages","setSelectedImages","showEMSCredits","hasEnoughCredits","ConsumeCreditsDocument","NearmapUnavailableModalCore","NearmapAvailabilityType","PIXEL_DEFINITION","RemoveConflictingImagesDocument","useRemoveConflictingImages","existingImages","conflictingImages","conflicts","useRemoveConflictingImagesMutation","ids","removeConflictingImages","NearmapModal","availabilityInfo","serviceId","apiKey","remainingCredits","consumeCredits","useConsumeCreditsMutation","hasApiKey","tileCount","tierBillingModel","onSelectImage","downloadNearmap","dates","nearmapParameters","tile","nearmapMetadata","useDownloadNearmap","imagesCount","credits","mostRecent","recency","findIndex","credits_used","images_downloaded","NO_IMAGERY","VexcelModalCore","formatDateTime","captureDate","year","borderColor","borderWidth","vexcel","useCenter","useCorners","LNG_DISTANCE","LAT_DISTANCE","VexcelModal","downloadVexcel","imageLayers","vexcelParameters","maxLat","maxLng","minLat","minLng","vexcelMetadata","dsmDate","dsmLayers","dsmLayerName","layerName","imageDate","imageryLayerName","useDownloadVexcel","dsms","MapImageryModals","nearmapAvailabilityInfo","vexcelAvailabilityInfo","vexcelImages","StyledTitle","MapImagerySectionTitle","uploadInProgress","titleIcon","StyledImagerySelectItem","isMaxImageryTooltipShown","isEdited","isUploading","ActiveMapLabelContainer","OverflowText","MapImagerySelectorItem","isMaxImageryReached","isHovered","setHovered","isCustom","secondaryIcon","secondaryAction","onMouseEnter","MapSelectorList","OldMapSelectorButtonWrap","DSMapSelectorButtonWrap","boxShadow","CustomDSButton","TOGGLE_MAP_IMAGERY_TESTID","MAP_IMAGERY_SELECT_BUTTON_TESTID","MapImagerySelectorCore","isMenuToggleButtonSelected","setIsMenuToggleButtonSelected","toggleMap","useDS","isMapResizeDisabled","mapResizeTooltipCopy","disabledMaps","selectedLabel","indexOf","disabledMapResizing","hasMapResizeFF","MapSelectorButtonWrap","highlighted","pressed","pressedIcon","isTitle","anchor","preferredAlignment","MapSelectionFragmentDoc","MapImageryItemsDocument","ImageryVisibilityDocument","useMapImageryItems","nearmapAvailability","onTitleAction","selectItem","uploadedFileNames","vexcelAvailability","editCustomImage","inspectedImage","editedId","imageryItems","sunroof","bing","getStandardItems","LOADING","NO_SERVICE","trueOrtho","substring","getNearmapItems","shortLabel","getVexcelItems","editItem","orthoImage","getCustomItems","fileName","activeId","useNearmapAvailabilityInfo","setAvailability","startAsyncJob","useNearmapAvailabilityInfoQuery","nearmapService","credentials","AVAILABLE","runNearmapAvailabilityJob","GetUploadInfoDocument","getImageDimensions","file","Promise","resolve","Image","objectUrl","URL","createObjectURL","revokeObjectURL","src","useUploadCustomImages","allowMultiple","getUploadInfo","useGetUploadInfoMutation","startImageEditMode","setUploadInProgress","fileNames","setFileNames","uploadImage","files","allowedTypes","setAttribute","collectFiles","removeEventListenersAndExit","click","requestFilesFromUser","uploadRequests","uploadInfo","filename","filetype","uploadOrthoImage","method","uploadToS3","messageId","dismissType","estimatedCompletion","durationSeconds","startTimestamp","now","messageType","firstImageId","refetchImagery","orderCustomImagesByName","image1","image2","MapImagerySelector","useMapImageryItemsQuery","visibilityButton","useImageryVisibilityQuery","customImages","providerImages","groupImages","orthoImages","toasts","getChannel","openModal","isImageryVisible","mapImagery","toggleMapVisibility","toggleNearmapImage","toggleSyncImage","downloadBing","downloadSunroof","selectedId","SunpathControl","IrradianceAndTabWrapper","TAB_WIDTH","CadOverlay","isCadAvailable","useCadOverlayQuery","drawRuler","toggleSplitview","handleToggleSplitview","zoomDirection","CadOverviewDocument","CadOverviewRoutesDocument","DrawerTitle","DrawerSection","DrawerTabGroup","DrawerTabSelected","grouped","DrawerTabNotSelected","DrawerTab","AutoDesignerInputArea","alignTop","labelArea","AutoDesignerRadioButton","selectedBgOverlayColor","TargetMode","FillerRowSetting","PanelOrientation","AutoDesignerMinimumIrradiance","minimumIrradiance","onMinimumIrradianceChange","selectedMode","Energy","AutoDesignerModeButtonTestIds","MaxFit","allModes","hiddenModes","AutoDesignerTargetMode","targetMode","onTargetModeChange","availableModes","SelectedComponent","AutoDesignerSelectedComponent","setIsHovered","SelectedComponents","SelectionDivider","ListItem","AutoDesignerComponentType","componentMap","SolarPanels","StringInverters","Microinverters","DcOptimizers","AutoDesignerComponentSelection","lookupType","itemsChildren","updateItems","addItem","removeItem","limit","alignSelectionBox","fieldLabel","selections","idToRemove","addItemInternal","AutoDesignerComponents","onComponentsChange","newItems","stringInverters","microinverters","dcOptimizers","StyledShrinkableHeader","ShrinkableHeader","contentScrollTop","PanelBody","BottomArea","AutoDesignerCore","onCancel","onRun","scrollTop","setScrollTop","validationError","onScroll","EnergyTargetInput","AutoDesignerEnergyMode","onEnergyChange","hasAnnualEnergy","annual","ConversionInput","fillerRowSettings","None","Auto","Portrait","Landscape","AutoDesignerPanels","onPanelsChange","toggleIsAdvancedOpen","fillerRow","ValidationError","AutoDesignerDocument","autoDesignerReducer","targetNeedsToBeSet","AutoStringInverter","AutoStringInverterParams","updateDcAcRatio","updateMaxStringLength","minStringLength","updateMinStringLength","isNaN","AutoStringerCore","addDcOptimizer","addInverter","addMicroinverter","autoParams","currentSelectionSection","inverterType","setInverterType","integratedMicroinverter","removeDcOptimizer","removeInverter","removeMicroinverter","updateAutoParams","inv","hasIntegratedMlpe","AutoStringerMlpe","marginBottom","StringInverter","chosenMlpe","cellStringOptimizer","manufacturerName","AutoStringSelectionType","AutoStringActionType","getInverterParams","integratedDcOptimizer","actualDcOpt","inverter","getNewSettings","omit","obj","settingsReducer","FillZoneSelectionChanged","selectedFillZone","SelectionTypeChanged","selectionType","Nothing","selectedSolarPanel","SetInverterType","AddInverter","newSetting","RemoveInverter","AddMicroinverter","RemoveMicroinverter","AddDcOptimizer","RemoveDcOptimizer","SolarPanelQueryFinished","UpdateIntegratedDcOptimizer","DesignChanged","UpdateAutoParams","UpdateSetting","SolarPanelSelectionChanged","SelectionDetails","prefixLabel","locale","AutoStringSelectionSection","FillZone","AutoStringInverterFragmentFragmentDoc","AutoStringDcOptimizerFragmentFragmentDoc","SolarPanelAutoStringDocument","AutoStringInverterDocument","useAutoStringInverterQuery","AutoStringDcOptimizerDocument","useAutoStringDcOptimizerQuery","EMPTY_STRING_LENGTH","getSettings","inverterSettings","setting1","setting2","setting3","dcAcRatio1","dcAcRatio2","dcAcRatio3","inverterId1","inverterId2","inverterId3","maxStringLength1","maxStringLength2","maxStringLength3","minStringLength1","minStringLength2","minStringLength3","Row","RadioEl","AutoStringerChoosePanelItem","useSolarPanelAutoStringQuery","AutoStringerChoosePanelsTypesDocument","CadRightPanelDocument","StyledSlideInPanel","SlideInPanel","onTransitionEnd","panelMap","loadDesign","updateState","useAutoDesignerQuery","loadProfile","annualEnergy","NoModules","needsInverter","NoInverters","getValidationError","autoDesignerFinish","autoDesignerStart","autoDesignerActions","parameters","getId","isMaxFit","dc_optimizers","solar_inverters","solar_panels","constraints","max_fit","objective","allow_filler_row","column_spacing_m","min_sap","min_tsrf","row_spacing_m","post_solar","getAsyncJobParameters","design_id","inputs","JSON","initData","selectionId","selectedPanelId","getSelectedId","designById","onSolarPanelQueryCompleted","solarPanelCache","isCancelled","useSolarPanelQueryFixed","microinverterResult","integratedDcOptimizerId","integratedDcOptimizerResult","dcOptimizerResult","invertersToCheck","useAutostringValidationError","initialDcOptimizerResult","initialMicroinverterResult","initialDcOptimizerId","initialMicroinverterId","initialSolarPanelRefs","useAutoStringInitialComponents","stringFillZone","stringPanels","run","newDcOptimizer","newInverter","newMicroinverter","oldDcOptimizer","oldInverter","oldMicroinverter","newInverterType","openAutoStringer","selectPanelInCad","choosePanel","solarPanelTypes","useAutoStringerChoosePanelsTypesQuery","setSelected","typeId","CadRightPanel","cadQuery","useCadRightPanelQuery","activePanel","activeRightPanel","activePanelData","activeRightPanelData","isClosing","setIsClosing","closePanel","hasActivePanel","Contents","CadArea","CadVerticalWrap","DropdownPortal","ToastWrap","CadOverview","useCadOverviewQuery","cadContextValue","isLoaded","useCad","request","originalRequest","guard","matcher","cache","readQuery","search","URLSearchParams","append","originalUrl","mountpath","exact","section","view","ProposalPath","StyledIFrame","StyledLoader","ProposalIFrame","iframeSrc","useLoader","iframe","setLoading","handleIFrameLoad","onLoad","ShadeReportState","ShadeReportLoader","white","EmptyShadeReport","ROUTE_LOADING","ShadeReport","setIframeSrc","token$","appConfig","listenForPortalLoad","previousState","MODEL_LOADING","LOADED","tokenSubscription","token","host","proposalsIFrameHost","SystemComponentType","InlineFlex","AuroraButtonGroup","getItemIconFillColor","getItemImage","getComparison","__","flexProps","textElement","iconFillColor","selectedIconColor","unselectedIconColor","iconElement","imageElement","alt","isIconOnly","iconOnlyProps","activeBgOverlayColor","hoverBgOverlayColor","hoverTextWeight","selectedTextWeight","AuroraCheckbox","useDebounce","timeout","methodRef","debounce","StyledInputGroup","AuroraInputGroup","disableSelectAllOnFocus","maxLength","passedInErrors","inputId","errors","validate","AuroraRadio","AuroraSwitch","clampAndRoundNumber","cfg","safeNumber","TariffOutputFragmentDoc","TariffSearchDocument","useSearchTariff","lazy","initialMountRef","setResult","runSearchQuery","useTariffSearchLazyQuery","filteredResults","fullTextSearch","isRightShape","newQuery","property","debouncedSearch","publicSearch","skipDebounce","sortTariffs","useInterceptMouse","clicked","setClicked","onMouse","capture","once","passive","defaultFormat","separator","time","formatRelativeDate","timestamp","customFormat","fm","preffix","isYesterday","isToday","isTomorrow","getPrefix","badStatusColor","agreementStatusMap","designRequestStatusMap","ProposalShareStatus","proposalShareStatusMap","FOLLOWUP_REQUESTED","VIEWED","SENT","LINK_EXPIRED","StatusRow","ExpandedStatus","w","IconContainer","transitionProperty","transitionTimingFunction","ProposalInfoFragmentDoc","statuses","designRequestStatus","agreementStatus","webProposalStatus","buildStatusChildren","defaultVisible","_open","disableChildPadding","PREFERRED_ORDER","LEGACY_PREFERRED_ORDER","designSettingWeatherDatasets","datasetName","found","DYNAMIC_DATASET_LAST_4","SOLCAST","isDynamicWeatherDataset","datasetOrId","last4","endsWith","mapDisplayWeatherDatasetToInput","isDynamic","UpdatePartnerActionType","StaticPartnerOptionLabels","StaticPartnerOptionValues","PartnerOptionGroupTitles","TeamDropdownDataFragmentDoc"],"sourceRoot":""}