{"version":3,"file":"static/css/243.ffbeb611.chunk.css","mappings":"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","sources":["../node_modules/reactflow/dist/style.css","../node_modules/react-js-cron/dist/styles.css","views/workspace/storage/airflow/node.css"],"sourcesContent":["/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React Flow, they get used by base.css and style.css */\n.react-flow {\n  direction: ltr;\n}\n.react-flow__container {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n}\n.react-flow__pane {\n  z-index: 1;\n  cursor: -webkit-grab;\n  cursor: grab;\n}\n.react-flow__pane.selection {\n    cursor: pointer;\n  }\n.react-flow__pane.dragging {\n    cursor: -webkit-grabbing;\n    cursor: grabbing;\n  }\n.react-flow__viewport {\n  transform-origin: 0 0;\n  z-index: 2;\n  pointer-events: none;\n}\n.react-flow__renderer {\n  z-index: 4;\n}\n.react-flow__selection {\n  z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n  outline: none;\n}\n.react-flow .react-flow__edges {\n  pointer-events: none;\n  overflow: visible;\n}\n.react-flow__edge-path,\n.react-flow__connection-path {\n  stroke: #b1b1b7;\n  stroke-width: 1;\n  fill: none;\n}\n.react-flow__edge {\n  pointer-events: visibleStroke;\n  cursor: pointer;\n}\n.react-flow__edge.animated path {\n    stroke-dasharray: 5;\n    -webkit-animation: dashdraw 0.5s linear infinite;\n            animation: dashdraw 0.5s linear infinite;\n  }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n    stroke-dasharray: none;\n    -webkit-animation: none;\n            animation: none;\n  }\n.react-flow__edge.inactive {\n    pointer-events: none;\n  }\n.react-flow__edge.selected,\n  .react-flow__edge:focus,\n  .react-flow__edge:focus-visible {\n    outline: none;\n  }\n.react-flow__edge.selected .react-flow__edge-path,\n  .react-flow__edge:focus .react-flow__edge-path,\n  .react-flow__edge:focus-visible .react-flow__edge-path {\n    stroke: #555;\n  }\n.react-flow__edge-textwrapper {\n    pointer-events: all;\n  }\n.react-flow__edge-textbg {\n    fill: white;\n  }\n.react-flow__edge .react-flow__edge-text {\n    pointer-events: none;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n            user-select: none;\n  }\n.react-flow__connection {\n  pointer-events: none;\n}\n.react-flow__connection .animated {\n    stroke-dasharray: 5;\n    -webkit-animation: dashdraw 0.5s linear infinite;\n            animation: dashdraw 0.5s linear infinite;\n  }\n.react-flow__connectionline {\n  z-index: 1001;\n}\n.react-flow__nodes {\n  pointer-events: none;\n  transform-origin: 0 0;\n}\n.react-flow__node {\n  position: absolute;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  pointer-events: all;\n  transform-origin: 0 0;\n  box-sizing: border-box;\n  cursor: -webkit-grab;\n  cursor: grab;\n}\n.react-flow__node.dragging {\n    cursor: -webkit-grabbing;\n    cursor: grabbing;\n  }\n.react-flow__nodesselection {\n  z-index: 3;\n  transform-origin: left top;\n  pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n    position: absolute;\n    pointer-events: all;\n    cursor: -webkit-grab;\n    cursor: grab;\n  }\n.react-flow__handle {\n  position: absolute;\n  pointer-events: none;\n  min-width: 5px;\n  min-height: 5px;\n  width: 6px;\n  height: 6px;\n  background: #1a192b;\n  border: 1px solid white;\n  border-radius: 100%;\n}\n.react-flow__handle.connectionindicator {\n    pointer-events: all;\n    cursor: crosshair;\n  }\n.react-flow__handle-bottom {\n    top: auto;\n    left: 50%;\n    bottom: -4px;\n    transform: translate(-50%, 0);\n  }\n.react-flow__handle-top {\n    left: 50%;\n    top: -4px;\n    transform: translate(-50%, 0);\n  }\n.react-flow__handle-left {\n    top: 50%;\n    left: -4px;\n    transform: translate(0, -50%);\n  }\n.react-flow__handle-right {\n    right: -4px;\n    top: 50%;\n    transform: translate(0, -50%);\n  }\n.react-flow__edgeupdater {\n  cursor: move;\n  pointer-events: all;\n}\n.react-flow__panel {\n  position: absolute;\n  z-index: 5;\n  margin: 15px;\n}\n.react-flow__panel.top {\n    top: 0;\n  }\n.react-flow__panel.bottom {\n    bottom: 0;\n  }\n.react-flow__panel.left {\n    left: 0;\n  }\n.react-flow__panel.right {\n    right: 0;\n  }\n.react-flow__panel.center {\n    left: 50%;\n    transform: translateX(-50%);\n  }\n.react-flow__attribution {\n  font-size: 10px;\n  background: rgba(255, 255, 255, 0.5);\n  padding: 2px 3px;\n  margin: 0;\n}\n.react-flow__attribution a {\n    text-decoration: none;\n    color: #999;\n  }\n@-webkit-keyframes dashdraw {\n  from {\n    stroke-dashoffset: 10;\n  }\n}\n@keyframes dashdraw {\n  from {\n    stroke-dashoffset: 10;\n  }\n}\n.react-flow__edgelabel-renderer {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  pointer-events: none;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n}\n.react-flow__edge.updating .react-flow__edge-path {\n      stroke: #777;\n    }\n.react-flow__edge-text {\n    font-size: 10px;\n  }\n.react-flow__node.selectable:focus,\n  .react-flow__node.selectable:focus-visible {\n    outline: none;\n  }\n.react-flow__node-default,\n.react-flow__node-input,\n.react-flow__node-output,\n.react-flow__node-group {\n  padding: 10px;\n  border-radius: 3px;\n  width: 150px;\n  font-size: 12px;\n  color: #222;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #1a192b;\n  background-color: white;\n}\n.react-flow__node-default.selectable:hover, .react-flow__node-input.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n      box-shadow: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n    }\n.react-flow__node-default.selectable.selected,\n    .react-flow__node-default.selectable:focus,\n    .react-flow__node-default.selectable:focus-visible,\n    .react-flow__node-input.selectable.selected,\n    .react-flow__node-input.selectable:focus,\n    .react-flow__node-input.selectable:focus-visible,\n    .react-flow__node-output.selectable.selected,\n    .react-flow__node-output.selectable:focus,\n    .react-flow__node-output.selectable:focus-visible,\n    .react-flow__node-group.selectable.selected,\n    .react-flow__node-group.selectable:focus,\n    .react-flow__node-group.selectable:focus-visible {\n      box-shadow: 0 0 0 0.5px #1a192b;\n    }\n.react-flow__node-group {\n  background-color: rgba(240, 240, 240, 0.25);\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n  background: rgba(0, 89, 220, 0.08);\n  border: 1px dotted rgba(0, 89, 220, 0.8);\n}\n.react-flow__nodesselection-rect:focus,\n  .react-flow__nodesselection-rect:focus-visible,\n  .react-flow__selection:focus,\n  .react-flow__selection:focus-visible {\n    outline: none;\n  }\n.react-flow__controls {\n  box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n}\n.react-flow__controls-button {\n    border: none;\n    background: #fefefe;\n    border-bottom: 1px solid #eee;\n    box-sizing: content-box;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    width: 16px;\n    height: 16px;\n    cursor: pointer;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n            user-select: none;\n    padding: 5px;\n  }\n.react-flow__controls-button:hover {\n      background: #f4f4f4;\n    }\n.react-flow__controls-button svg {\n      width: 100%;\n      max-width: 12px;\n      max-height: 12px;\n    }\n.react-flow__controls-button:disabled {\n      pointer-events: none;\n    }\n.react-flow__controls-button:disabled svg {\n        fill-opacity: 0.4;\n      }\n.react-flow__minimap {\n  background-color: #fff;\n}\n.react-flow__minimap svg {\n  display: block;\n}\n.react-flow__resize-control {\n  position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n  cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n  cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n  cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n  cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n  width: 4px;\n  height: 4px;\n  border: 1px solid #fff;\n  border-radius: 1px;\n  background-color: #3367d9;\n  transform: translate(-50%, -50%);\n}\n.react-flow__resize-control.handle.left {\n  left: 0;\n  top: 50%;\n}\n.react-flow__resize-control.handle.right {\n  left: 100%;\n  top: 50%;\n}\n.react-flow__resize-control.handle.top {\n  left: 50%;\n  top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n  left: 50%;\n  top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n  left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n  left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n  left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n  left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n  border-color: #3367d9;\n  border-width: 0;\n  border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n  width: 1px;\n  transform: translate(-50%, 0);\n  top: 0;\n  height: 100%;\n}\n.react-flow__resize-control.line.left {\n  left: 0;\n  border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n  left: 100%;\n  border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n  height: 1px;\n  transform: translate(0, -50%);\n  left: 0;\n  width: 100%;\n}\n.react-flow__resize-control.line.top {\n  top: 0;\n  border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n  border-bottom-width: 1px;\n  top: 100%;\n}\n",".react-js-cron {\n  display: flex;\n  align-items: flex-start;\n  flex-wrap: wrap;\n}\n.react-js-cron > div,\n.react-js-cron-field {\n  display: flex;\n  align-items: center;\n}\n.react-js-cron-field {\n  margin-bottom: 10px;\n}\n.react-js-cron-field > span {\n  margin-left: 5px;\n}\ndiv.react-js-cron-select {\n  margin-left: 5px;\n}\n.react-js-cron-select.react-js-cron-select-no-prefix {\n  margin-left: 0;\n}\n.react-js-cron-select .ant-select-selection-wrap {\n  position: relative;\n  align-items: center;\n}\n/* Absolute position only when there are one child, meaning when no items are selected. */\n.react-js-cron-select\n  .ant-select-selection-overflow:has(> :nth-child(-n + 1):last-child) {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n/* Center placeholder vertically. */\n.react-js-cron-select .ant-select-selection-placeholder {\n  margin-top: -2px;\n}\ndiv.react-js-cron-error .react-js-cron-select .ant-select-selector {\n  border-color: #ff4d4f;\n  background: #fff6f6;\n}\ndiv.react-js-cron-custom-select {\n  min-width: 70px;\n  z-index: 1;\n}\ndiv.react-js-cron-error div.react-js-cron-custom-select {\n  background: #fff6f6;\n}\ndiv.react-js-cron-select.react-js-cron-custom-select.ant-select\n  div.ant-select-selector {\n  padding-left: 11px;\n  padding-right: 30px;\n}\n.react-js-cron-read-only\n  div.react-js-cron-select.react-js-cron-custom-select.ant-select\n  div.ant-select-selector {\n  padding-right: 11px;\n}\ndiv.react-js-cron-custom-select .ant-select-selection-search {\n  width: 0 !important;\n  margin: 0 !important;\n}\ndiv.react-js-cron-custom-select .ant-select-selection-placeholder {\n  position: static;\n  top: 50%;\n  right: auto;\n  left: auto;\n  transform: none;\n  transition: none;\n  opacity: 1;\n  color: inherit;\n}\n.react-js-cron-week-days-placeholder\n  .react-js-cron-custom-select\n  .ant-select-selection-placeholder,\n.react-js-cron-month-days-placeholder\n  .react-js-cron-custom-select\n  .ant-select-selection-placeholder {\n  opacity: 0.4;\n}\n.react-js-cron-custom-select-dropdown {\n  min-width: 0 !important;\n  width: 174px !important;\n}\n.react-js-cron-custom-select-dropdown .rc-virtual-list {\n  max-height: none !important;\n}\n.react-js-cron-custom-select-dropdown-grid .rc-virtual-list-holder {\n  max-height: initial !important;\n}\n.react-js-cron-custom-select-dropdown-grid .rc-virtual-list-holder-inner {\n  display: grid !important;\n  grid-template-columns: repeat(4, 1fr);\n}\n.react-js-cron-custom-select-dropdown-grid\n  .rc-virtual-list-holder-inner\n  .ant-select-item-option-content {\n  text-align: center;\n}\n.react-js-cron-custom-select-dropdown-hours-twelve-hour-clock {\n  width: 260px !important;\n}\n.react-js-cron-custom-select-dropdown-minutes-large {\n  width: 300px !important;\n}\n.react-js-cron-custom-select-dropdown-minutes-large\n  .rc-virtual-list-holder-inner {\n  grid-template-columns: repeat(6, 1fr);\n}\n.react-js-cron-custom-select-dropdown-minutes-medium {\n  width: 220px !important;\n}\n.react-js-cron-custom-select-dropdown-minutes-medium\n  .rc-virtual-list-holder-inner {\n  grid-template-columns: repeat(5, 1fr);\n}\n.react-js-cron-period > span:first-child {\n  margin-left: 0 !important;\n}\n.react-js-cron-period\n  .react-js-cron-select.ant-select-single.ant-select-open\n  .ant-select-selection-item {\n  opacity: 1;\n}\n.react-js-cron-select-dropdown-period {\n  min-width: 0 !important;\n  width: auto !important;\n}\n.react-js-cron-clear-button {\n  margin-left: 10px;\n  margin-bottom: 10px;\n}\n.react-js-cron-disabled .react-js-cron-select.ant-select-disabled {\n  background: #f5f5f5;\n}\ndiv.react-js-cron-select.react-js-cron-custom-select.ant-select\n  div.ant-select-selector\n  > .ant-select-selection-overflow {\n  align-items: center;\n  flex: initial;\n}\n","/* n8n-style: node handles (kích thước ~1/3 so với trước) */\n.dag-canvas-wrapper .react-flow__handle {\n  width: 4px;\n  height: 4px;\n  border-radius: 50%;\n  border: 1px solid #fff;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n/* Canvas: dotted background, controls */\n.dag-canvas-wrapper .react-flow__controls {\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  border-radius: 8px;\n  overflow: hidden;\n}\n\n.dag-canvas-wrapper .react-flow__controls-button {\n  background: #fff;\n  border-bottom: 1px solid #e2e8f0;\n  color: #64748b;\n}\n\n.dag-canvas-wrapper .react-flow__controls-button:hover {\n  background: #f1f5f9;\n  color: #334155;\n}\n\n.dag-canvas-wrapper .react-flow__minimap {\n  border-radius: 8px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n/* Bố cục Tùy chỉnh Cron trong form DAG – tránh vỡ layout trong cột hẹp */\n.dag-cron-editor {\n  width: 100%;\n  min-width: 0;\n  overflow-x: auto;\n}\n\n.dag-cron-editor .react-js-cron {\n  display: flex;\n  flex-direction: column;\n  flex-wrap: nowrap;\n  align-items: stretch;\n  width: 100%;\n  gap: 8px;\n}\n\n.dag-cron-editor .react-js-cron-field {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  width: 100%;\n  min-width: 0;\n  margin-bottom: 0;\n  gap: 6px;\n}\n\n.dag-cron-editor .react-js-cron-field > span {\n  margin-left: 0;\n  flex-shrink: 0;\n}\n\n.dag-cron-editor .react-js-cron-select,\n.dag-cron-editor div.react-js-cron-custom-select {\n  flex: 1 1 auto;\n  min-width: 0;\n  max-width: 100%;\n}\n\n.dag-cron-editor .ant-select {\n  min-width: 0 !important;\n  width: 100%;\n}\n\n.dag-cron-editor .ant-select-selector {\n  min-height: 32px;\n}\n\n.dag-cron-editor .react-js-cron-clear-button {\n  margin-left: 0;\n  margin-bottom: 0;\n  flex-shrink: 0;\n}\n\n.dag-cron-editor .react-js-cron-period {\n  width: 100%;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 6px;\n}\n\n.dag-cron-editor .react-js-cron > div {\n  width: 100%;\n  min-width: 0;\n}\n\n.dag-cron-editor div.react-js-cron-select {\n  margin-left: 0;\n}"],"names":[],"sourceRoot":""}