{"version":3,"file":"xxmachina-components-templates-flow.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/templates/flow/nodes/group/group.node.ts","../../../../../packages/@xxmachina/components/src/lib/templates/flow/nodes/group/group.node.meta.ts","../../../../../packages/@xxmachina/components/src/lib/templates/flow/flow.template.ts","../../../../../packages/@xxmachina/components/src/lib/templates/flow/xxmachina-components-templates-flow.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgAtomicComponent } from '@ng-atomic/core';\n\nexport interface GroupNodeData {\n  label: string;\n  status?: string;\n  assignee?: string;\n  assigneeIcon?: string;\n  childCount?: number;\n  expanded?: boolean;\n}\n\nenum ActionId {\n  EXPANDED_CHANGE = 'EXPANDED_CHANGE',\n}\n\n@Component({\n  selector: 'flow-group-node',\n  standalone: true,\n  imports: [MatIconModule],\n  template: `\n    <div class=\"group-node\" [class]=\"'s-' + data()?.status\">\n      <div class=\"group-header\">\n        <span class=\"dot\"></span>\n        <span class=\"status-badge\">{{ getStatusLabel(data()?.status) }}</span>\n        @if (data()?.childCount) {\n          <span class=\"child-count\">{{ data()?.childCount }}</span>\n        }\n      </div>\n      <div class=\"group-title\">{{ data()?.label }}</div>\n      @if (data()?.assignee) {\n        <div class=\"group-footer\">\n          <span class=\"assignee\">\n            @if (data()?.assigneeIcon) {\n              <img [src]=\"data()?.assigneeIcon\" class=\"assignee-avatar\" alt=\"\" />\n            } @else {\n              <mat-icon class=\"assignee-icon\">group</mat-icon>\n            }\n            {{ data()?.assignee }}\n          </span>\n        </div>\n      }\n    </div>\n  `,\n  styles: [`\n    :host { display: block; width: 180px; }\n\n    .group-node {\n      background: #0a0a0a;\n      border: 1px solid rgba(51, 51, 51, 0.8);\n      border-radius: 10px;\n      padding: 12px;\n      font-family: 'SF Mono', Monaco, monospace;\n      transition: all 0.2s ease;\n      box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);\n    }\n\n    .group-node:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n      border-color: rgba(80, 80, 80, 0.8);\n    }\n\n    .group-node.s-root { border-color: rgba(99, 102, 241, 0.6); }\n    .group-node.s-completed { border-color: rgba(16, 185, 129, 0.6); }\n    .group-node.s-in_progress { border-color: rgba(59, 130, 246, 0.6); }\n    .group-node.s-pending { border-color: rgba(136, 136, 136, 0.6); }\n    .group-node.s-sprint_planned { border-color: rgba(139, 92, 246, 0.6); }\n    .group-node.s-needs_breakdown { border-color: rgba(245, 158, 11, 0.6); }\n\n    .group-header {\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      margin-bottom: 8px;\n    }\n\n    .dot {\n      width: 10px;\n      height: 10px;\n      border-radius: 50%;\n      flex-shrink: 0;\n      box-shadow: 0 0 10px currentColor;\n    }\n\n    .s-root .dot { background: #6366f1; color: #6366f1; }\n    .s-completed .dot { background: #10b981; color: #10b981; }\n    .s-in_progress .dot { background: #3b82f6; color: #3b82f6; animation: pulse 2s infinite; }\n    .s-pending .dot { background: #888; color: #888; }\n    .s-sprint_planned .dot { background: #8b5cf6; color: #8b5cf6; }\n    .s-needs_breakdown .dot { background: #f59e0b; color: #f59e0b; }\n\n    @keyframes pulse {\n      0%, 100% { box-shadow: 0 0 4px rgba(59, 130, 246, 0.4); }\n      50% { box-shadow: 0 0 12px rgba(59, 130, 246, 0.8); }\n    }\n\n    .status-badge {\n      font-size: 10px;\n      font-weight: 600;\n      padding: 2px 8px;\n      border-radius: 10px;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n    }\n\n    .s-root .status-badge { background: rgba(99, 102, 241, 0.2); color: #6366f1; }\n    .s-completed .status-badge { background: rgba(16, 185, 129, 0.2); color: #10b981; }\n    .s-in_progress .status-badge { background: rgba(59, 130, 246, 0.2); color: #3b82f6; }\n    .s-pending .status-badge { background: rgba(136, 136, 136, 0.2); color: #888; }\n    .s-sprint_planned .status-badge { background: rgba(139, 92, 246, 0.2); color: #8b5cf6; }\n    .s-needs_breakdown .status-badge { background: rgba(245, 158, 11, 0.2); color: #f59e0b; }\n\n    .child-count {\n      margin-left: auto;\n      font-size: 11px;\n      font-weight: 600;\n      color: #888;\n      background: rgba(255, 255, 255, 0.05);\n      padding: 2px 8px;\n      border-radius: 10px;\n    }\n\n    .group-title {\n      font-size: 14px;\n      font-weight: 500;\n      color: #e0e0e0;\n      line-height: 1.4;\n      margin-bottom: 8px;\n    }\n\n    .group-footer {\n      padding-top: 8px;\n      border-top: 1px solid rgba(51, 51, 51, 0.5);\n    }\n\n    .assignee {\n      display: inline-flex;\n      align-items: center;\n      gap: 4px;\n      font-size: 11px;\n      color: #888;\n      font-weight: 500;\n    }\n\n    .assignee-icon {\n      font-size: 14px;\n      width: 14px;\n      height: 14px;\n      color: #666;\n    }\n\n    .assignee-avatar {\n      width: 18px;\n      height: 18px;\n      border-radius: 50%;\n      object-fit: cover;\n      border: 1px solid rgba(255, 255, 255, 0.1);\n    }\n  `]\n})\nexport class GroupNodeComponent extends NgAtomicComponent {\n  static readonly ActionId = ActionId;\n\n  readonly data = input<GroupNodeData>();\n  readonly expandedChange = output<boolean>();\n\n  getStatusLabel(status?: string): string {\n    const labels: Record<string, string> = {\n      'root': 'ROOT',\n      'in_progress': 'WIP',\n      'completed': 'DONE',\n      'pending': 'TODO',\n      'sprint_planned': 'PLAN',\n      'needs_breakdown': 'BREAK',\n      'under_consideration': 'REVIEW',\n      'abandoned': 'DROP'\n    };\n    return labels[status || ''] || status?.toUpperCase() || '';\n  }\n\n  onExpandedChange(expanded: boolean): void {\n    this.dispatch({id: ActionId.EXPANDED_CHANGE, payload: { expanded, data: this.data() }});\n  }\n}\n","import { Type } from '@angular/core';\nimport { GroupNodeComponent, GroupNodeData } from './group.node';\n\ninterface ComponentMeta<T = unknown> {\n  title: string;\n  group?: 'atoms' | 'molecules' | 'organisms' | 'templates' | 'presenters' | 'extras';\n  component: Type<T>;\n  inputs?: Record<string, unknown>;\n  viewport?: { width?: number; height?: number };\n  variants?: { name: string; inputs: Record<string, unknown> }[];\n}\n\nexport const groupNodeMeta: ComponentMeta = {\n  title: 'Flow Group Node',\n  group: 'molecules',\n  component: GroupNodeComponent,\n  viewport: { width: 280, height: 180 },\n  variants: [\n    {\n      name: 'root',\n      inputs: {\n        data: {\n          label: 'Project Tasks',\n          status: 'root',\n          childCount: 12,\n        } as GroupNodeData,\n      },\n    },\n    {\n      name: 'in progress',\n      inputs: {\n        data: {\n          label: 'Sprint 1 Tasks',\n          status: 'in_progress',\n          assignee: 'Team Alpha',\n          childCount: 5,\n        } as GroupNodeData,\n      },\n    },\n    {\n      name: 'completed',\n      inputs: {\n        data: {\n          label: 'Completed Features',\n          status: 'completed',\n          assignee: 'Team Beta',\n          childCount: 8,\n        } as GroupNodeData,\n      },\n    },\n    {\n      name: 'pending',\n      inputs: {\n        data: {\n          label: 'Backlog Items',\n          status: 'pending',\n          childCount: 15,\n        } as GroupNodeData,\n      },\n    },\n    {\n      name: 'sprint planned',\n      inputs: {\n        data: {\n          label: 'Sprint 2 Planned',\n          status: 'sprint_planned',\n          assignee: 'Team Gamma',\n          childCount: 6,\n        } as GroupNodeData,\n      },\n    },\n    {\n      name: 'with avatar',\n      inputs: {\n        data: {\n          label: 'Design Review',\n          status: 'in_progress',\n          assignee: 'Design Team',\n          assigneeIcon: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Team',\n          childCount: 3,\n        } as GroupNodeData,\n      },\n    },\n  ],\n};\n","import { Component, computed, Directive, input, output, Type } from '@angular/core';\nimport { ReactFlowComponent, FlowNodeDirective } from '@xxmachina/components/extras/flow';\nimport { Node, Edge, NodeChange, EdgeChange, Connection, MarkerType, Viewport, ReactFlowInstance } from 'reactflow';\nimport { GroupNodeComponent } from './nodes/group';\nimport { TaskNodeComponent } from './nodes/task';\nimport { Effect, InjectableComponent, NgAtomicComponent, provideComponent, TokenizedType } from '@ng-atomic/core';\nimport { ScrollFrame } from '@ng-atomic/components/frames/scroll';\n\nexport type FlowInteractionMode = 'desktop' | 'touch';\n\nenum ActionId {\n  EXPANDED_CHANGE = '[FlowTemplate] EXPANDED_CHANGE',\n}\n\n@TokenizedType()\n@Directive({ standalone: true, selector: 'flow-node' })\nexport class FlowNodeStore<T> extends InjectableComponent {\n  static provideComponent(loader: () => Promise<Type<any>> | Type<any>) {\n    return provideComponent(FlowNodeStore, loader);\n  }\n\n  readonly data = input<T>();\n}\n\n@Component({\n  selector: 'templates-flow',\n  standalone: true,\n  imports: [\n    ReactFlowComponent,\n    FlowNodeDirective,\n    GroupNodeComponent,\n    FlowNodeStore,\n    ScrollFrame,\n],\n  template: `\n    <frames-scroll>\n      <ng-content select=\"[top]\" top />\n      <machina-react-flow\n      [nodes]=\"nodes()\"\n      [edges]=\"edges()\"\n      [deleteKeyCode]=\"deleteKeyCode()\"\n      [defaultEdgeOptions]=\"defaultEdgeOptions()\"\n      [enableTouchPassthrough]=\"interactionMode() === 'touch'\"\n      [minZoom]=\"0.05\"\n      [maxZoom]=\"2\"\n      [fitView]=\"true\"\n      [fitViewOptions]=\"{ padding: 0.1, minZoom: 0.1, maxZoom: 0.5 }\"\n      [defaultViewport]=\"{ x: 0, y: 0, zoom: 0.3 }\"\n      [nodesDraggable]=\"nodesDraggable_()\"\n      [nodesConnectable]=\"true\"\n      [elementsSelectable]=\"elementsSelectable_()\"\n      [onlyRenderVisibleElements]=\"true\"\n      [panOnDrag]=\"panOnDrag_\"\n      [panOnScroll]=\"true\"\n      [selectionOnDrag]=\"false\"\n      [zoomOnScroll]=\"true\"\n      [zoomOnPinch]=\"true\"\n      [zoomOnDoubleClick]=\"true\"\n      (action)=\"dispatch($event)\"\n      (onNodeClick)=\"nodeClick.emit($event)\"\n      (onNodesChange)=\"nodesChange.emit($event)\"\n      (onNodeDragStop)=\"nodeDragStop.emit($event)\"\n      (onEdgesChange)=\"edgesChange.emit($event)\"\n      (onConnect)=\"connect.emit($event)\"\n      (onNodeResizeEnd)=\"nodeResizeEnd.emit($event)\"\n      (onMove)=\"onViewportMove($event)\"\n      (onMoveEnd)=\"onViewportMove($event)\"\n      (onInit)=\"onFlowInit($event)\"\n    >\n      <flow-node injectable\n        *flowNode=\"'task'; let data\"\n        [data]=\"data\"\n        (action)=\"dispatch($event)\"\n      />\n      <flow-group-node\n        *flowNode=\"'group'; let data; let node\"\n        [data]=\"data\"\n        (action)=\"dispatch($event)\"\n      />\n    </machina-react-flow>\n    </frames-scroll>\n  `,\n  styleUrl: './flow.template.scss',\n})\nexport class FlowTemplate extends NgAtomicComponent {\n  static readonly ActionId = ActionId;\n\n  readonly nodes = input<Node[]>([]);\n  readonly edges = input<Edge[]>([]);\n  readonly interactionMode = input<FlowInteractionMode>('desktop');\n  readonly deleteKeyCode = input<string | null>(null);\n  protected readonly panOnDrag_ = true;\n  protected readonly nodesDraggable_ = computed(() => this.interactionMode() !== 'touch');\n  protected readonly elementsSelectable_ = computed(() => this.interactionMode() !== 'touch');\n  readonly defaultEdgeOptions = input({\n    type: 'smoothstep',\n    animated: true,\n    markerEnd: {\n      type: MarkerType.ArrowClosed,\n    },\n    style: {\n      stroke: '#333',\n      strokeWidth: 2,\n    }\n  });\n\n  readonly nodeClick = output<[MouseEvent, Node]>();\n  readonly nodesChange = output<NodeChange[]>();\n  readonly nodeDragStop = output<[MouseEvent, Node, Node[]]>();\n  readonly edgesChange = output<EdgeChange[]>();\n  readonly connect = output<Connection>();\n  readonly nodeData = output<[string, any]>();\n  readonly nodeResizeEnd = output<{ nodeId: string; width: number; height: number }>();\n  readonly viewportChange = output<Viewport>();\n\n  protected onViewportMove([_event, viewport]: [MouseEvent, Viewport]): void {\n    this.viewportChange.emit(viewport);\n  }\n\n  protected onFlowInit([instance]: [ReactFlowInstance]): void {\n    requestAnimationFrame(() => {\n      const viewport = instance.getViewport();\n      this.viewportChange.emit(viewport);\n    });\n  }\n\n  @Effect(GroupNodeComponent.ActionId.EXPANDED_CHANGE)\n  protected onGroupExpandedChange(payload: { expanded: boolean, data: any }): void {\n    const nodeId = payload.data?.task?.id;\n    if (nodeId) {\n      this.dispatch({ id: ActionId.EXPANDED_CHANGE, payload: { nodeId, expanded: payload.expanded } });\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ActionId"],"mappings":"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"}