// Copyright (C) 2025 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

@use "../assets/theme" as *;

.pf-canvas {
  isolation: isolate; // Don't allow z-index to escape container.
  overflow: hidden; // Clip overflowing content.
  position: relative; // Place absolute children relative to this container.
  height: 450px; // Give the canvas some intrinsic height by default.

  touch-action: none; // Disable default touch actions for panning.
  user-select: none; // Disable text selection during dragging.

  font-family: var(--pf-font-compact); // Consistent font.
  cursor: grab; // Indicate panning by default.

  // Dot pattern background.
  background-color: color-mix(
    in srgb,
    var(--pf-color-background) 90%,
    var(--pf-color-border-secondary) 10%
  );
  background-image: radial-gradient(
    circle,
    color-mix(in srgb, var(--pf-color-border-secondary) 85%, black 15%) 1px,
    transparent 0px
  );
  background-size: 20px 20px;

  &--fill-height {
    height: 100%; // Fill parent height when modifier class applied.
  }
}

.pf-canvas-content {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: visible;

  svg {
    isolation: isolate;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    overflow: visible;
  }
}

.pf-nodegraph-controls {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 3;
  pointer-events: auto;
  display: flex;
  gap: 8px;
}

.pf-node {
  position: relative;
  background: var(--pf-color-background-secondary);
  border: 2px solid var(--pf-color-border);
  border-radius: 8px;
  min-width: 180px;
  cursor: move;
  pointer-events: auto;
  width: 100%;

  // Hide elements with this class, show on node hover
  .pf-show-on-hover {
    visibility: hidden;
  }

  &:hover .pf-show-on-hover {
    visibility: visible;
  }
}

.pf-node--has-accent-bar::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 10px;
  height: 100%;
  background-color: var(
    --pf-color-border
  ); /* Fallback color when hue not set */
  border-top-left-radius: 6px;
  border-bottom-left-radius: 6px;
}

/* Override with hue-based color when --pf-node-hue is set via inline styles */
.pf-node[style*="--pf-node-hue"].pf-node--has-accent-bar::before {
  background: color-mix(
    in srgb,
    hsl(var(--pf-node-hue), 60%, 50%) 50%,
    var(--pf-color-background)
  );
}

.pf-node-body {
  padding-block: 12px;
}

// Wrapper for dock chains - uses flexbox to make children same width
.pf-node-wrapper {
  isolation: isolate; // Don't allow z-index to escape container.
  position: absolute;
  display: flex;
  flex-direction: column;
  pointer-events: auto;
  box-shadow: 0 4px 12px var(--pf-color-box-shadow);
  border-radius: 8px;
  width: max-content;
  transition:
    left 0.1s ease-out,
    top 0.1s ease-out;

  &--dragging {
    z-index: 1; // Ensure dragging entire chain appears above other nodes.

    // Don't animate transitions while dragging to avoid laggy movement
    transition: none;

    // TODO Might want to add some visual indication of dragging entire chain
    // using box shadow, and maybe make slightly transparent.
    // opacity: 0.8;
    // box-shadow: 6px 6px 24px var(--pf-color-box-shadow);
  }
}

.pf-node.pf-selected {
  border-color: var(--pf-color-accent);
  box-shadow: 0 0 0 3px
    color-mix(in srgb, var(--pf-color-accent) 50%, transparent);
  z-index: 1; // Make sure box shadow appears above other nodes
}

// Docked child: flush top edge with no rounded corners or border
.pf-node.pf-docked-child {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  margin-top: -2px; // Overlap border with parent
}

// Parent with docked child: flush bottom edge with no rounded corners
.pf-node.pf-has-docked-child {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}

// Dock target highlight with pulsing animation
.pf-node.pf-dock-target {
  box-shadow: 0 4px 0 3px var(--pf-color-accent);
  animation: pulse-dock 0.6s ease-in-out infinite;
}

@keyframes pulse-dock {
  0%,
  100% {
    box-shadow: 0 4px 0 3px var(--pf-color-accent);
  }
  50% {
    box-shadow: 0 6px 0 5px var(--pf-color-accent);
    opacity: 0.95;
  }
}

.pf-node-header {
  /* Default background when hue is not set */
  background: var(--pf-color-background);
  padding: 6px 6px;
  border-radius: 6px 6px 0 0;
  display: flex;
  border-bottom: 1px solid var(--pf-color-border);
  justify-content: space-between;
  align-items: center;
  gap: 6px;
}

/* Override with hue-based color when --pf-node-hue is set via inline styles */
.pf-node[style*="--pf-node-hue"] .pf-node-header {
  background: color-mix(
    in srgb,
    hsl(var(--pf-node-hue), 60%, 50%) 50%,
    var(--pf-color-background)
  );
}

.pf-node--has-accent-bar .pf-node-header {
  padding-left: 22px;
}

.pf-docked-child .pf-node-header {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

.pf-has-docked-child .pf-node-header {
  border-bottom-left-radius: 0;
}

.pf-docked-child::before {
  border-top-left-radius: 0;
}

.pf-has-docked-child::before {
  border-bottom-left-radius: 0;
}

.pf-node-title {
  flex: 1;
}

.pf-node-title-icon {
  align-self: center;
}

.pf-node-context-menu {
  position: absolute;
  top: 6px;
  right: 6px;
}

.pf-node-content {
  padding-inline: 12px;
}

.pf-node--has-accent-bar .pf-node-content {
  padding-left: 22px;
}

.pf-port-row {
  position: relative;
  margin: 8px 0;
  color: var(--pf-color-text-muted);
  font-size: 13px;
  padding: 4px 16px;

  .pf-port {
    transform: translateY(-50%);
  }
}

.pf-node--has-accent-bar .pf-port-row {
  padding-left: 22px;
}

.pf-port-input {
  text-align: left;
}

.pf-port-output {
  text-align: right;
}

.pf-port {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--pf-color-background-secondary);
  border: 2px solid var(--pf-color-border);
  cursor: crosshair;
  position: absolute;
  top: 50%;

  &--with-context-menu {
    cursor: pointer;
    &::after {
      // Render a little plus button to indicate context menu availability
      @include material-icon("add");
      position: absolute;
      font-size: 15px;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
  }

  &.pf-connected {
    background: var(--pf-color-accent);
    border-color: var(--pf-color-accent);
    color: var(--pf-color-text-on-accent);
  }
}

.pf-output {
  background: var(--pf-color-border);
  z-index: 2; // Make outputs appear above inputs when docked.
}

.pf-output:hover {
  background: var(--pf-color-accent);
  border-color: var(--pf-color-accent);
  color: var(--pf-color-text-on-accent);
}

.pf-port.pf-input {
  left: -9px;
}

.pf-port.pf-port-top {
  top: -1px;
  left: 50%;
  transform: translate(-50%, -50%);
}

.pf-port.pf-port-bottom {
  top: unset;
  bottom: -1px;
  left: 50%;
  transform: translate(-50%, 50%);
}

.pf-port.pf-output {
  right: -9px;
}

.pf-connection {
  stroke: var(--pf-color-accent);
  color: var(--pf-color-accent);
  stroke-width: 2;
  fill: none;
  transition:
    stroke-width 0.2s,
    stroke 0.2s;
  pointer-events: auto;
  cursor: pointer;
}

.pf-connection-group:hover .pf-connection {
  stroke: var(--pf-color-danger);
  filter: drop-shadow(
    0 0 6px color-mix(in srgb, var(--pf-color-danger) 80%, transparent)
  );
}

.pf-temp-connection {
  stroke: var(--pf-color-text-muted);
  stroke-width: 2;
  fill: none;
  stroke-dasharray: 5, 5;
}

.pf-connecting {
  cursor: crosshair;

  .pf-input:hover {
    background: var(--pf-color-accent);
    border-color: var(--pf-color-accent);
    cursor: copy;
  }
  .pf-output:hover {
    background: var(--pf-color-border);
    border-color: var(--pf-color-border-secondary);
    cursor: not-allowed;
  }
}

.pf-output.pf-active,
.pf-output.pf-active:hover {
  background: var(--pf-color-accent);
  border-color: var(--pf-color-accent);
  color: var(--pf-color-text-on-accent);
  cursor: crosshair;
}

.pf-panning {
  cursor: grabbing;
}

.pf-selection-rect {
  position: absolute;
  border: 2px solid var(--pf-color-accent);
  background: color-mix(in srgb, var(--pf-color-accent) 15%, transparent);
  pointer-events: none;
  z-index: 2; // Render selection rectangle above nodes.
}

.pf-node.pf-invalid {
  border-color: var(--pf-color-danger);
  background: color-mix(
    in srgb,
    var(--pf-color-danger) 8%,
    var(--pf-color-background-secondary)
  );

  .pf-node-header {
    background: color-mix(
      in srgb,
      var(--pf-color-danger) 15%,
      var(--pf-color-background)
    );
    border-bottom-color: var(--pf-color-danger);
  }
}

// Invalid nodes override hue-based styling
.pf-node.pf-invalid[style*="--pf-node-hue"] .pf-node-header {
  background: color-mix(
    in srgb,
    var(--pf-color-danger) 15%,
    var(--pf-color-background)
  );
}

.pf-node.pf-invalid.pf-node--has-accent-bar::before {
  background-color: var(--pf-color-danger);
}

// Label styles
.pf-label {
  position: absolute;
  background: color-mix(
    in srgb,
    var(--pf-color-background-secondary) 85%,
    var(--pf-color-accent) 15%
  );
  border: 2px solid var(--pf-color-border);
  cursor: move;
  pointer-events: auto;
  box-sizing: border-box;

  &.pf-dragging {
    opacity: 0.7;
    cursor: grabbing;
  }

  &.pf-selected {
    border-color: var(--pf-color-accent);
    box-shadow: 0 0 0 3px
      color-mix(in srgb, var(--pf-color-accent) 50%, transparent);
  }

  .pf-label-resize-handle {
    position: absolute;
    right: -5px;
    top: 50%;
    transform: translateY(-50%);
    width: 10px;
    height: 20px;
    background: var(--pf-color-accent);
    border-radius: 3px;
    cursor: ew-resize;
    opacity: 0;
    transition: opacity 0.2s;

    &:hover {
      opacity: 1;
    }
  }

  &:hover .pf-label-resize-handle {
    opacity: 0.6;
  }

  &.pf-selected .pf-label-resize-handle {
    opacity: 1;
  }

  .pf-label-delete-button {
    position: absolute;
    top: -10px;
    right: -10px;
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--pf-color-danger);
    color: white;
    border-radius: 3px;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.2s;

    &:hover {
      opacity: 1;
      background: color-mix(in srgb, var(--pf-color-danger) 85%, black 15%);
    }

    .pf-icon {
      font-size: var(--pf-font-size-s);
    }
  }

  &:hover .pf-label-delete-button,
  &.pf-selected .pf-label-delete-button {
    opacity: 1;
  }
}

.pf-label-content {
  width: 100%;
  max-height: 400px;
  overflow-y: auto;
  box-sizing: border-box;

  > .pf-simple-label-text {
    padding: 12px;
    font-family: var(--pf-font-compact);
    font-size: var(--pf-font-size-m);
    line-height: 1.4;
    color: var(--pf-color-text);
  }

  > .pf-simple-label-button {
    padding: 8px;
  }

  > .pf-label-placeholder {
    padding: 8px;
    color: var(--pf-color-text-secondary);
    font-style: italic;
  }
}
