@nywqs/scada-engine 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/scada-engine.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[data-scada-theme] .scada-header[data-v-9bbedc41]{height:60px;background:#16213e;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #0f3460;gap:24px}[data-scada-theme] .header-left[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .logo[data-v-9bbedc41]{font-size:20px;font-weight:600;margin:0;color:#e2e8f0}[data-scada-theme] .version[data-v-9bbedc41]{font-size:12px;color:#64748b;padding:2px 8px;background:#0f172a;border-radius:4px}[data-scada-theme] .header-center[data-v-9bbedc41]{flex:1;display:flex;justify-content:center;align-items:center}[data-scada-theme] .header-right[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .tool-group[data-v-9bbedc41]{display:flex;gap:8px}[data-scada-theme] .header-btn[data-v-9bbedc41]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s;font-size:13px}[data-scada-theme] .header-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-1px)}[data-scada-theme] .header-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .tip[data-v-9bbedc41]{font-size:13px;color:#94a3b8}[data-scada-theme] .divider[data-v-9bbedc41]{width:1px;height:32px;background:#334155;margin:0 12px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:16px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .toolbar-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .toolbar-btn .icon-svg[data-v-9bbedc41]{width:18px;height:18px;display:block}[data-scada-theme] .canvas-info[data-v-9bbedc41]{display:flex;align-items:center;gap:16px}[data-scada-theme] .info-text[data-v-9bbedc41]{font-size:12px;color:#64748b}[data-scada-theme] .component-library[data-v-92bb4e17]{width:260px;height:100%;background:#1e293b;border-right:1px solid #0f3460;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .library-header[data-v-92bb4e17]{padding:16px;line-height:50px;text-align:center;border-bottom:1px solid #0f3460}[data-scada-theme] .library-header h3[data-v-92bb4e17]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .library-content[data-v-92bb4e17]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .component-section[data-v-92bb4e17]{margin-bottom:24px}[data-scada-theme] .component-section[data-v-92bb4e17]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-92bb4e17]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .component-grid[data-v-92bb4e17]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}[data-scada-theme] .component-item[data-v-92bb4e17]{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;background:#0f172a;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .component-item[data-v-92bb4e17]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-2px);box-shadow:0 4px 8px #3b82f64d}[data-scada-theme] .component-item[data-v-92bb4e17]:active{transform:translateY(0)}[data-scada-theme] .component-icon[data-v-92bb4e17]{font-size:24px;color:#e2e8f0}[data-scada-theme] .component-name[data-v-92bb4e17]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar{width:8px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-area[data-v-a869f6aa]{flex:1;display:flex;align-items:center;justify-content:center;background:#0f172a;overflow:auto;position:relative}[data-scada-theme] .canvas-container[data-v-a869f6aa]{position:relative;border:2px solid #334155;box-shadow:0 4px 12px #0000004d;transition:transform .2s ease}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar{width:8px;height:8px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-config-panel[data-v-f309895b]{width:100%;height:100%;background:#1e293b;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .panel-header[data-v-f309895b]{padding:16px;border-bottom:1px solid #0f3460}[data-scada-theme] .panel-header h3[data-v-f309895b]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .panel-content[data-v-f309895b]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .config-section[data-v-f309895b]{margin-bottom:24px}[data-scada-theme] .config-section[data-v-f309895b]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-f309895b]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .config-item[data-v-f309895b]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}[data-scada-theme] .config-item label[data-v-f309895b]{font-size:13px;color:#cbd5e1;flex-shrink:0}[data-scada-theme] .config-select[data-v-f309895b]{width:160px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;font-size:13px}[data-scada-theme] .config-number[data-v-f309895b]{width:80px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;text-align:center;font-size:13px}[data-scada-theme] .config-color[data-v-f309895b]{width:50px;height:32px;border:1px solid #334155;border-radius:4px;cursor:pointer;background:#0f172a}[data-scada-theme] .slider-group[data-v-f309895b]{display:flex;align-items:center;gap:8px;flex:1;max-width:160px}[data-scada-theme] .config-slider[data-v-f309895b]{flex:1}[data-scada-theme] .value-display[data-v-f309895b]{font-size:12px;color:#94a3b8;min-width:30px;text-align:right}[data-scada-theme] .number-input-group[data-v-f309895b]{display:flex;gap:4px}[data-scada-theme] .adjust-btn[data-v-f309895b]{width:32px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:14px}[data-scada-theme] .adjust-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .upload-btn[data-v-f309895b]{width:50px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s}[data-scada-theme] .upload-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .image-upload[data-v-f309895b]{display:flex;gap:8px}[data-scada-theme] .clear-btn[data-v-f309895b]{width:32px;height:32px;background:#dc2626;color:#fff;border:1px solid #991b1b;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s}[data-scada-theme] .clear-btn[data-v-f309895b]:hover{background:#b91c1c;border-color:#7f1d1d}[data-scada-theme] .switch[data-v-f309895b]{position:relative;display:inline-block;width:48px;height:24px}[data-scada-theme] .switch input[data-v-f309895b]{opacity:0;width:0;height:0}[data-scada-theme] .switch .slider[data-v-f309895b]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#475569;transition:.3s;border-radius:24px}[data-scada-theme] .switch .slider[data-v-f309895b]:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]{background-color:#3b82f6}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]:before{transform:translate(24px)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar{width:8px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tab-pane[data-v-def84c5f]{animation:fadeIn-def84c5f .2s}@keyframes fadeIn-def84c5f{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-def84c5f]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-def84c5f]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item[data-v-def84c5f]{margin-bottom:12px}[data-scada-theme] .property-item-inline[data-v-def84c5f]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline[data-v-def84c5f]:has(.checkbox-wrapper){justify-content:flex-start}[data-scada-theme] .property-item-inline label[data-v-def84c5f]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-def84c5f],[data-scada-theme] .property-item-inline select[data-v-def84c5f]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:0 0 auto}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:focus,[data-scada-theme] .property-item-inline select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .color-input-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px}[data-scada-theme] .property-item-inline .color-input-wrapper input[type=color][data-v-def84c5f]{width:40px;height:28px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .property-item-inline .color-input-wrapper .color-value[data-v-def84c5f]{flex:1;min-width:0;font-size:11px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .property-item label[data-v-def84c5f]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item input[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item input[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .property-item input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-row[data-v-def84c5f]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-def84c5f]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-def84c5f]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .checkbox-wrapper[data-v-def84c5f]{display:inline-flex;align-items:center;gap:6px}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-def84c5f]{width:16px;height:16px;cursor:pointer;accent-color:#3b82f6;pointer-events:auto!important;-webkit-appearance:auto!important;-moz-appearance:auto!important;appearance:auto!important;opacity:1!important;z-index:1!important;position:relative!important;flex-shrink:0}[data-scada-theme] .checkbox-label[data-v-def84c5f]{font-size:12px;color:#cbd5e1;white-space:nowrap}[data-scada-theme] select[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] select option[data-v-def84c5f]{background:#0f172a;color:#e2e8f0}[data-scada-theme] .property-hint[data-v-def84c5f]{display:block;font-size:11px;color:#64748b;margin-top:2px;font-weight:400}[data-scada-theme] .tab-pane[data-v-5b515f8a]{animation:fadeIn-5b515f8a .2s}@keyframes fadeIn-5b515f8a{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-5b515f8a]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-5b515f8a]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item-inline[data-v-5b515f8a]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline label[data-v-5b515f8a]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-5b515f8a],[data-scada-theme] .property-item-inline select[data-v-5b515f8a]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:focus,[data-scada-theme] .property-item-inline select[data-v-5b515f8a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-5b515f8a]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-5b515f8a]{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6}[data-scada-theme] .checkbox-label[data-v-5b515f8a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .edge-properties-tab[data-v-e47f1784]{padding:0}[data-scada-theme] .property-section[data-v-e47f1784]{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-e47f1784]:last-child{border-bottom:none;margin-bottom:0}[data-scada-theme] .section-title[data-v-e47f1784]{font-size:13px;font-weight:600;color:#e2e8f0;margin:0 0 12px;padding:0}[data-scada-theme] .property-item[data-v-e47f1784]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-e47f1784]:last-child{margin-bottom:0}[data-scada-theme] .property-label[data-v-e47f1784]{display:block;font-size:12px;color:#94a3b8;margin-bottom:6px;font-weight:500}[data-scada-theme] .color-input-wrapper[data-v-e47f1784]{display:flex;gap:8px;align-items:center}[data-scada-theme] .color-input[data-v-e47f1784]{width:40px;height:32px;border:1px solid #475569;border-radius:4px;cursor:pointer;background:#1e293b;padding:2px}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-text[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;font-family:Consolas,monospace}[data-scada-theme] .color-text[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .number-input-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:8px}[data-scada-theme] .property-input[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px}[data-scada-theme] .property-input[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .input-unit[data-v-e47f1784]{font-size:12px;color:#64748b;min-width:24px}[data-scada-theme] .property-select[data-v-e47f1784]{width:100%;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;cursor:pointer}[data-scada-theme] .property-select[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .slider-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:12px}[data-scada-theme] .property-slider[data-v-e47f1784]{flex:1;height:4px;background:#334155;border-radius:2px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}[data-scada-theme] .property-slider[data-v-e47f1784]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:#3b82f6;border-radius:50%;cursor:pointer}[data-scada-theme] .property-slider[data-v-e47f1784]::-moz-range-thumb{width:14px;height:14px;background:#3b82f6;border-radius:50%;border:none;cursor:pointer}[data-scada-theme] .slider-value[data-v-e47f1784]{font-size:12px;color:#94a3b8;min-width:40px;text-align:right}[data-scada-theme] .delete-btn[data-v-e47f1784]{width:100%;height:36px;background:#dc2626;border:none;border-radius:4px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .delete-btn[data-v-e47f1784]:hover{background:#b91c1c}[data-scada-theme] .delete-btn[data-v-e47f1784]:active{transform:scale(.98)}[data-scada-theme] .event-card[data-v-af7c633a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-af7c633a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-af7c633a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-af7c633a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-af7c633a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-af7c633a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-af7c633a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-af7c633a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-af7c633a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-af7c633a]{animation:slideDown-af7c633a .2s ease-out}@keyframes slideDown-af7c633a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .event-field[data-v-af7c633a]{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}[data-scada-theme] .event-field[data-v-af7c633a]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-af7c633a]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-af7c633a],[data-scada-theme] .event-field select[data-v-af7c633a],[data-scada-theme] .event-field textarea[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .event-field input[data-v-af7c633a]:focus,[data-scada-theme] .event-field select[data-v-af7c633a]:focus,[data-scada-theme] .event-field textarea[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-title[data-v-af7c633a]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-af7c633a]:first-child{margin-top:0}[data-scada-theme] .field-hint[data-v-af7c633a]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-config[data-v-af7c633a]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-af7c633a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-af7c633a],[data-scada-theme] .condition-input[data-v-af7c633a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-af7c633a]:focus,[data-scada-theme] .condition-input[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .config-section[data-v-af7c633a]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .btn-config[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-af7c633a]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .selected-workflow-info[data-v-af7c633a]{margin-top:12px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .info-row[data-v-af7c633a]{display:flex;align-items:center;gap:8px;margin-bottom:12px}[data-scada-theme] .info-label[data-v-af7c633a]{font-size:12px;color:#94a3b8}[data-scada-theme] .info-value[data-v-af7c633a]{font-size:13px;color:#10b981;font-weight:500}[data-scada-theme] .modal-overlay[data-v-7884b850]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-7884b850 .2s ease-out}@keyframes fadeIn-7884b850{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-7884b850]{width:800px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-7884b850 .3s ease-out}@keyframes slideUp-7884b850{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-7884b850]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-7884b850]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-7884b850]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .device-point-selector[data-v-7884b850]{display:grid;grid-template-columns:1fr 1.5fr;gap:12px;height:500px;padding:16px 24px;overflow:hidden}[data-scada-theme] .modal-footer[data-v-7884b850]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7884b850],[data-scada-theme] .btn-confirm[data-v-7884b850]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-7884b850]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-7884b850]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7884b850]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7884b850]:hover{background:#2563eb}[data-scada-theme] .btn-confirm[data-v-7884b850]:disabled{background:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .device-list-panel[data-v-7884b850],[data-scada-theme] .point-list-panel[data-v-7884b850]{display:flex;flex-direction:column;background:#1e293b;border:1px solid #334155;border-radius:6px;overflow:hidden}[data-scada-theme] .panel-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#334155;border-bottom:1px solid #475569}[data-scada-theme] .panel-header h4[data-v-7884b850]{margin:0;font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .device-count[data-v-7884b850],[data-scada-theme] .point-count[data-v-7884b850]{font-size:12px;color:#94a3b8;background:#1e293b;padding:2px 8px;border-radius:10px}[data-scada-theme] .search-box[data-v-7884b850]{padding:12px 16px;border-bottom:1px solid #334155}[data-scada-theme] .search-input[data-v-7884b850]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .search-input[data-v-7884b850]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .search-input[data-v-7884b850]::placeholder{color:#64748b}[data-scada-theme] .device-list[data-v-7884b850],[data-scada-theme] .point-list[data-v-7884b850]{flex:1;overflow-y:auto;padding:8px}[data-scada-theme] .device-item[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .device-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .device-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .device-item.offline[data-v-7884b850]{opacity:.6}[data-scada-theme] .device-info[data-v-7884b850]{flex:1}[data-scada-theme] .device-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .status-dot[data-v-7884b850]{width:8px;height:8px;border-radius:50%;background:#64748b}[data-scada-theme] .status-dot.online[data-v-7884b850]{background:#10b981;box-shadow:0 0 8px #10b98180}[data-scada-theme] .status-dot.offline[data-v-7884b850]{background:#64748b}[data-scada-theme] .status-dot.error[data-v-7884b850]{background:#ef4444;box-shadow:0 0 8px #ef444480}[data-scada-theme] .device-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .device-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .device-arrow[data-v-7884b850]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .device-item:hover .device-arrow[data-v-7884b850]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .point-item[data-v-7884b850]{padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .point-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .point-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .point-item.disabled[data-v-7884b850]{opacity:.5;cursor:not-allowed}[data-scada-theme] .point-info[data-v-7884b850]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .point-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0}[data-scada-theme] .access-mode[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;font-weight:400}[data-scada-theme] .access-mode.read[data-v-7884b850]{background:#3b82f633;color:#60a5fa}[data-scada-theme] .access-mode.write[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .access-mode.readWrite[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .point-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .point-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .point-unit[data-v-7884b850]{color:#3b82f6}[data-scada-theme] .point-type[data-v-7884b850]{background:#334155;padding:2px 6px;border-radius:3px}[data-scada-theme] .point-value[data-v-7884b850]{font-size:12px;color:#94a3b8}[data-scada-theme] .point-value .value[data-v-7884b850]{color:#e2e8f0;font-weight:500;margin:0 4px}[data-scada-theme] .quality[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;margin-left:8px}[data-scada-theme] .quality.good[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .quality.bad[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .quality.uncertain[data-v-7884b850]{background:#f59e0b33;color:#fbbf24}[data-scada-theme] .empty-hint[data-v-7884b850]{text-align:center;padding:40px 20px;color:#64748b;font-size:13px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar{width:6px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-track,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .modal-overlay[data-v-ef9e0ee1]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-ef9e0ee1 .2s ease-out}@keyframes fadeIn-ef9e0ee1{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-ef9e0ee1]{width:600px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-ef9e0ee1 .3s ease-out}@keyframes slideUp-ef9e0ee1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-ef9e0ee1]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-ef9e0ee1]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-ef9e0ee1]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-ef9e0ee1]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .modal-footer[data-v-ef9e0ee1]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1],[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]:hover{background:#2563eb}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]{max-height:60vh;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-item[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .config-item label[data-v-ef9e0ee1]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .required[data-v-ef9e0ee1]{color:#ef4444;margin-left:2px}[data-scada-theme] .field-hint[data-v-ef9e0ee1]{font-size:11px;color:#64748b;margin-top:4px;line-height:1.4}[data-scada-theme] .field-hint.error[data-v-ef9e0ee1]{color:#ef4444}[data-scada-theme] .config-item select[data-v-ef9e0ee1],[data-scada-theme] .config-item input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .config-item select[data-v-ef9e0ee1]:focus,[data-scada-theme] .config-item input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .unit-config[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .checkbox-label[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;font-size:13px;color:#cbd5e1;cursor:pointer}[data-scada-theme] .checkbox-label input[type=checkbox][data-v-ef9e0ee1]{width:auto;cursor:pointer}[data-scada-theme] .custom-unit[data-v-ef9e0ee1]{margin-left:24px}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .mapping-details[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:12px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .range-rules[data-v-ef9e0ee1],[data-scada-theme] .enum-mappings[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .range-rule[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping input[data-v-ef9e0ee1]{flex:1;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:first-child,[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:nth-child(3){max-width:80px}[data-scada-theme] .range-separator[data-v-ef9e0ee1],[data-scada-theme] .range-arrow[data-v-ef9e0ee1],[data-scada-theme] .enum-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:14px;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]{padding:8px 16px;background:#334155;border:1px dashed #475569;border-radius:4px;color:#94a3b8;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]:hover{background:#3b82f6;border-color:#3b82f6;color:#fff;border-style:solid}[data-scada-theme] .mapping-preview[data-v-ef9e0ee1]{padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .mapping-preview label[data-v-ef9e0ee1]{display:block;font-size:12px;color:#94a3b8;margin-bottom:8px}[data-scada-theme] .preview-content[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .preview-item[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#1e293b;border-radius:4px;font-size:12px}[data-scada-theme] .preview-input[data-v-ef9e0ee1]{color:#94a3b8;font-family:monospace}[data-scada-theme] .preview-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:12px}[data-scada-theme] .preview-output[data-v-ef9e0ee1]{color:#3b82f6;font-weight:500}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar{width:6px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .event-card[data-v-3731c19a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-3731c19a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-3731c19a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-3731c19a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-3731c19a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-3731c19a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-3731c19a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-3731c19a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-3731c19a]{animation:slideDown-3731c19a .2s ease-out}@keyframes slideDown-3731c19a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .property-item[data-v-3731c19a]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-3731c19a]:last-child{margin-bottom:0}[data-scada-theme] .property-item label[data-v-3731c19a]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item select[data-v-3731c19a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item select[data-v-3731c19a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .selected-point[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .point-main[data-v-3731c19a]{display:flex;align-items:center;gap:8px;font-size:13px}[data-scada-theme] .device-name[data-v-3731c19a]{color:#94a3b8;font-size:12px}[data-scada-theme] .point-name[data-v-3731c19a]{color:#e2e8f0;font-weight:500}[data-scada-theme] .point-details[data-v-3731c19a]{display:flex;gap:8px;font-size:11px;color:#64748b}[data-scada-theme] .point-code[data-v-3731c19a]{font-family:monospace}[data-scada-theme] .point-unit[data-v-3731c19a]{color:#3b82f6}[data-scada-theme] .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .selector-arrow[data-v-3731c19a]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .point-selector-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .mapping-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .mapping-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .mapping-summary[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .mapping-type-label[data-v-3731c19a]{font-size:13px;color:#e2e8f0;font-weight:500}[data-scada-theme] .mapping-detail[data-v-3731c19a]{font-size:11px;color:#64748b}[data-scada-theme] .mapping-trigger .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .mapping-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .dialog-overlay[data-v-90af9944]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-90af9944 .2s}@keyframes fadeIn-90af9944{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-content[data-v-90af9944]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-90af9944 .3s}@keyframes slideUp-90af9944{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-90af9944]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-90af9944]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-90af9944]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-90af9944]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-90af9944]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .btn-add-group[data-v-90af9944]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-90af9944]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-90af9944]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-90af9944]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-90af9944]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-90af9944]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-90af9944],[data-scada-theme] .group-field select[data-v-90af9944]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-90af9944]:focus,[data-scada-theme] .group-field select[data-v-90af9944]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-90af9944]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-90af9944]{width:60px;height:36px}[data-scada-theme] .color-value[data-v-90af9944]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .btn-delete-group[data-v-90af9944]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-90af9944]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .empty-hint[data-v-90af9944]{font-size:12px;color:#64748b;text-align:center;padding:16px;background:#0f172a;border-radius:4px;margin-bottom:12px}[data-scada-theme] .dialog-footer[data-v-90af9944]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-90af9944],[data-scada-theme] .btn-confirm[data-v-90af9944]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-90af9944]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-90af9944]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-90af9944]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-90af9944]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-add3567b]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-add3567b .2s}@keyframes fadeIn-add3567b{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-large[data-v-add3567b]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-content[data-v-add3567b]{background:#1e293b;border-radius:8px;width:90%;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-add3567b .3s}@keyframes slideUp-add3567b{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-add3567b]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-add3567b]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-add3567b]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body-split[data-v-add3567b]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden;padding:24px}[data-scada-theme] .code-editor-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-add3567b]{flex:1;resize:none;height:100%!important}[data-scada-theme] .code-textarea[data-v-add3567b]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-add3567b]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-add3567b]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-add3567b]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-add3567b]{color:#10b981}[data-scada-theme] .status-error[data-v-add3567b]{color:#ef4444}[data-scada-theme] .btn-test[data-v-add3567b]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-add3567b]:hover{background:#059669;border-color:#059669}[data-scada-theme] .code-preview-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-add3567b]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-add3567b]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-add3567b]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-add3567b]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-add3567b]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-add3567b]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-add3567b]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-add3567b]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-add3567b]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-add3567b]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-add3567b]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-add3567b]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-add3567b]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-add3567b],[data-scada-theme] .btn-confirm[data-v-add3567b]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-add3567b]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-add3567b]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-add3567b]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-add3567b]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-c9a88e33]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}[data-scada-theme] .dialog-container[data-v-c9a88e33]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .dialog-header[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-c9a88e33]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-close[data-v-c9a88e33]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-c9a88e33]{flex:1;overflow-y:auto;padding:20px 24px}[data-scada-theme] .empty-state[data-v-c9a88e33]{text-align:center;padding:40px 20px;color:#64748b}[data-scada-theme] .empty-state p[data-v-c9a88e33]{margin:8px 0;font-size:14px}[data-scada-theme] .empty-state .hint[data-v-c9a88e33]{font-size:12px;color:#475569}[data-scada-theme] .workflow-list[data-v-c9a88e33]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .workflow-item[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .workflow-item[data-v-c9a88e33]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .workflow-item.selected[data-v-c9a88e33]{border-color:#10b981;background:#10b9811a}[data-scada-theme] .workflow-info[data-v-c9a88e33]{flex:1}[data-scada-theme] .workflow-name[data-v-c9a88e33]{font-size:15px;font-weight:500;color:#e2e8f0;margin-bottom:6px}[data-scada-theme] .workflow-meta[data-v-c9a88e33]{display:flex;gap:12px;font-size:12px;color:#64748b}[data-scada-theme] .workflow-id[data-v-c9a88e33]{color:#94a3b8}[data-scada-theme] .workflow-date[data-v-c9a88e33]{color:#64748b}[data-scada-theme] .workflow-actions[data-v-c9a88e33]{display:flex;gap:8px}[data-scada-theme] .btn-icon[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:1px solid #334155;border-radius:4px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-icon[data-v-c9a88e33]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .dialog-footer[data-v-c9a88e33]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-c9a88e33],[data-scada-theme] .btn-primary[data-v-c9a88e33]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-c9a88e33]{background:transparent;border:1px solid #475569;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-c9a88e33]:hover{background:#334155;border-color:#64748b}[data-scada-theme] .btn-primary[data-v-c9a88e33]{background:#10b981;border:1px solid #10b981;color:#fff}[data-scada-theme] .btn-primary[data-v-c9a88e33]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-primary[data-v-c9a88e33]:disabled{background:#334155;border-color:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .property-panel[data-v-7d3281c0]{width:300px;height:100%;background:#1e293b;border-left:1px solid #0f3460;overflow-y:auto}[data-scada-theme] .empty-state[data-v-7d3281c0]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:#64748b;text-align:center;padding:24px}[data-scada-theme] .empty-state p[data-v-7d3281c0]{font-size:16px;margin-bottom:8px}[data-scada-theme] .empty-state .hint[data-v-7d3281c0]{font-size:12px;color:#475569}[data-scada-theme] .properties[data-v-7d3281c0]{padding:12px}[data-scada-theme] .panel-title[data-v-7d3281c0]{font-size:15px;font-weight:600;color:#e2e8f0;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-7d3281c0]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .hint-text[data-v-7d3281c0]{font-size:12px;color:#64748b;margin-bottom:12px;line-height:1.5}[data-scada-theme] .empty-hint[data-v-7d3281c0]{display:flex;justify-content:center;align-items:center;padding:24px 16px;color:#64748b;font-size:12px;text-align:center;background:#0f172a;border-radius:4px;margin-bottom:10px}[data-scada-theme] .property-item[data-v-7d3281c0]{margin-bottom:10px}[data-scada-theme] .property-item label[data-v-7d3281c0]{display:block;font-size:11px;color:#cbd5e1;margin-bottom:4px}[data-scada-theme] .property-item input[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item input[data-v-7d3281c0]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item select[data-v-7d3281c0],[data-scada-theme] .property-item textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item select[data-v-7d3281c0]:focus,[data-scada-theme] .property-item textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item textarea[data-v-7d3281c0]{resize:vertical;min-height:50px;font-family:Consolas,Monaco,monospace}[data-scada-theme] .property-row[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-7d3281c0]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tabs[data-v-7d3281c0]{display:flex;gap:3px;margin-bottom:12px;padding:3px;background:#0f172a;border-radius:5px}[data-scada-theme] .tab-btn[data-v-7d3281c0]{flex:1;padding:6px 10px;background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:12px;font-weight:500;border-radius:4px;transition:all .2s}[data-scada-theme] .tab-btn[data-v-7d3281c0]:hover{color:#cbd5e1;background:#1e293b}[data-scada-theme] .tab-btn.active[data-v-7d3281c0]{color:#fff;background:#3b82f6}[data-scada-theme] .tab-content[data-v-7d3281c0]{min-height:0}[data-scada-theme] .tab-pane[data-v-7d3281c0]{animation:fadeIn-7d3281c0 .2s}@keyframes fadeIn-7d3281c0{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown-7d3281c0{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}[data-scada-theme] .section-header h4[data-v-7d3281c0]{margin:0}[data-scada-theme] .btn-add[data-v-7d3281c0]{padding:5px 10px;background:#3b82f6;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-add[data-v-7d3281c0]:hover{background:#2563eb}[data-scada-theme] .event-list[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .event-card[data-v-7d3281c0]{background:#0f172a;border:1px solid #334155;border-radius:5px;padding:10px;transition:all .2s}[data-scada-theme] .event-card[data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-7d3281c0]:hover{background:#3b82f60d;margin:-4px -6px 6px;padding:4px 6px 10px;border-radius:4px}[data-scada-theme] .header-left[data-v-7d3281c0]{display:flex;align-items:center;gap:6px}[data-scada-theme] .collapse-icon[data-v-7d3281c0]{font-size:9px;color:#64748b;transition:transform .2s;display:inline-block;width:10px}[data-scada-theme] .event-type-label[data-v-7d3281c0]{font-size:12px;font-weight:500;color:#e2e8f0}[data-scada-theme] .event-action-badge[data-v-7d3281c0]{font-size:10px;padding:2px 6px;background:#3b82f6;color:#fff;border-radius:8px}[data-scada-theme] .event-card-body[data-v-7d3281c0]{animation:slideDown-7d3281c0 .2s ease-out}[data-scada-theme] .event-index[data-v-7d3281c0]{font-size:12px;font-weight:600;color:#3b82f6}[data-scada-theme] .btn-remove[data-v-7d3281c0]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}[data-scada-theme] .event-field[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-7d3281c0]{font-size:11px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-7d3281c0],[data-scada-theme] .event-field select[data-v-7d3281c0],[data-scada-theme] .event-field textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .event-field input[data-v-7d3281c0]:focus,[data-scada-theme] .event-field select[data-v-7d3281c0]:focus,[data-scada-theme] .event-field textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .field-hint[data-v-7d3281c0]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-group[data-v-7d3281c0]{background:#1e293b;border-radius:4px;padding:12px;margin-bottom:12px}[data-scada-theme] .config-section[data-v-7d3281c0]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .section-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-7d3281c0]:first-child{margin-top:0}[data-scada-theme] .btn-config[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .condition-config[data-v-7d3281c0]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-7d3281c0]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-7d3281c0],[data-scada-theme] .condition-input[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-7d3281c0]:focus,[data-scada-theme] .condition-input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .event-title[data-v-7d3281c0]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:hover{border-color:#475569}[data-scada-theme] .code-textarea[data-v-7d3281c0]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;resize:vertical;min-height:120px;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .dialog-overlay[data-v-7d3281c0]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-7d3281c0 .2s}[data-scada-theme] .dialog-content[data-v-7d3281c0]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-7d3281c0 .3s}[data-scada-theme] .dialog-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-7d3281c0]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-7d3281c0]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-7d3281c0]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-7d3281c0]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .btn-add-group[data-v-7d3281c0]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-7d3281c0]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-7d3281c0]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-7d3281c0]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-7d3281c0],[data-scada-theme] .group-field select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-7d3281c0]:focus,[data-scada-theme] .group-field select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-7d3281c0]{width:60px;height:36px}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .dialog-large[data-v-7d3281c0]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-body-split[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden}[data-scada-theme] .code-editor-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-7d3281c0]{flex:1;resize:none;height:100%!important}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-7d3281c0]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-7d3281c0]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-7d3281c0]{color:#10b981}[data-scada-theme] .status-error[data-v-7d3281c0]{color:#ef4444}[data-scada-theme] .btn-test[data-v-7d3281c0]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-7d3281c0]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-clear[data-v-7d3281c0]{padding:4px 12px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:12px;transition:all .2s}[data-scada-theme] .btn-clear[data-v-7d3281c0]:hover{background:#334155;color:#cbd5e1}[data-scada-theme] .code-preview-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-7d3281c0]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-7d3281c0]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-7d3281c0]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-7d3281c0]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-7d3281c0]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-7d3281c0]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-7d3281c0]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-7d3281c0]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-7d3281c0]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-7d3281c0]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7d3281c0],[data-scada-theme] .btn-confirm[data-v-7d3281c0]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-7d3281c0]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-7d3281c0]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7d3281c0]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7d3281c0]:hover{background:#2563eb;border-color:#2563eb}@keyframes slideUp-7d3281c0{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .scada-footer[data-v-52b6d4b1]{height:32px;background:#1e293b;border-top:1px solid #0f3460;display:flex;align-items:center;padding:0 32px;flex-shrink:0}[data-scada-theme] .footer-content[data-v-52b6d4b1]{width:100%;display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .footer-left[data-v-52b6d4b1],[data-scada-theme] .footer-right[data-v-52b6d4b1]{display:flex;align-items:center;gap:12px}[data-scada-theme] .copyright[data-v-52b6d4b1],[data-scada-theme] .license[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .divider[data-v-52b6d4b1]{color:#475569!important;font-size:12px}[data-scada-theme] .contact-item[data-v-52b6d4b1]{display:flex;align-items:center;gap:4px}[data-scada-theme] .contact-item .icon[data-v-52b6d4b1]{font-size:12px}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]:hover{color:#3b82f6!important;cursor:pointer}[data-scada-theme] .authorized-icon[data-v-52b6d4b1]{font-size:14px;margin-right:6px}[data-scada-theme] .authorized-text[data-v-52b6d4b1]{font-size:12px;color:#10b981!important;font-weight:500}[data-scada-theme] .expiry-text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .element-selector-overlay[data-v-882704dd]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}[data-scada-theme] .element-selector-dialog[data-v-882704dd]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;box-shadow:0 4px 24px #0000004d}[data-scada-theme] .dialog-header[data-v-882704dd]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-882704dd]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-882704dd]{width:28px;height:28px;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-882704dd]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-882704dd]{flex:1;padding:20px;display:flex;flex-direction:column;gap:16px;overflow:hidden}[data-scada-theme] .search-box input[data-v-882704dd]{width:100%;padding:10px 14px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#e2e8f0;font-size:14px}[data-scada-theme] .search-box input[data-v-882704dd]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .element-list[data-v-882704dd]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px}[data-scada-theme] .element-item[data-v-882704dd]{display:flex;align-items:center;gap:12px;padding:12px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .element-item[data-v-882704dd]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .element-item.active[data-v-882704dd]{border-color:#3b82f6;background:#3b82f61a}[data-scada-theme] .element-icon[data-v-882704dd]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#3b82f61a;border-radius:6px;font-size:20px;flex-shrink:0}[data-scada-theme] .element-info[data-v-882704dd]{flex:1}[data-scada-theme] .element-name[data-v-882704dd]{font-size:14px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .element-type[data-v-882704dd]{font-size:12px;color:#94a3b8}[data-scada-theme] .element-check[data-v-882704dd]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#3b82f6;border-radius:50%;color:#fff;font-size:14px;font-weight:700}[data-scada-theme] .empty-state[data-v-882704dd]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#64748b;padding:40px 20px}[data-scada-theme] .empty-state p[data-v-882704dd]{margin:0;font-size:14px}[data-scada-theme] .empty-hint[data-v-882704dd]{margin-top:8px;font-size:12px;color:#475569}[data-scada-theme] .dialog-footer[data-v-882704dd]{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-882704dd],[data-scada-theme] .btn-primary[data-v-882704dd]{padding:8px 20px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-882704dd]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-882704dd]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-882704dd]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-882704dd]:hover{background:#2563eb}[data-scada-theme] .btn-primary[data-v-882704dd]:disabled{background:#475569;cursor:not-allowed;opacity:.5}[data-scada-theme] .node-config[data-v-fa65eb56]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-fa65eb56]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-fa65eb56]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-fa65eb56]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-fa65eb56]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-fa65eb56]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-fa65eb56]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-fa65eb56]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-fa65eb56],[data-scada-theme] .config-group textarea[data-v-fa65eb56],[data-scada-theme] .config-group select[data-v-fa65eb56]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-fa65eb56]:focus,[data-scada-theme] .config-group textarea[data-v-fa65eb56]:focus,[data-scada-theme] .config-group select[data-v-fa65eb56]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-42e029d4]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-42e029d4]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-42e029d4]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-42e029d4]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-42e029d4]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-42e029d4]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-42e029d4]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-42e029d4]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-42e029d4],[data-scada-theme] .config-group textarea[data-v-42e029d4],[data-scada-theme] .config-group select[data-v-42e029d4]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-42e029d4]:focus,[data-scada-theme] .config-group textarea[data-v-42e029d4]:focus,[data-scada-theme] .config-group select[data-v-42e029d4]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-15975920]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-15975920]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-15975920],[data-scada-theme] .config-group textarea[data-v-15975920],[data-scada-theme] .config-group select[data-v-15975920]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-15975920]:focus,[data-scada-theme] .config-group textarea[data-v-15975920]:focus,[data-scada-theme] .config-group select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .branches-section[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .section-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-15975920]{font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .btn-add[data-v-15975920]{padding:4px 12px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add[data-v-15975920]:hover{background:#2563eb}[data-scada-theme] .branch-list[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .branch-item[data-v-15975920]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px}[data-scada-theme] .branch-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}[data-scada-theme] .branch-number[data-v-15975920]{font-size:12px;color:#3b82f6;font-weight:500}[data-scada-theme] .btn-remove[data-v-15975920]{width:20px;height:20px;background:#ef4444;color:#fff;border:none;border-radius:50%;font-size:16px;line-height:1;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-15975920]:hover{background:#dc2626}[data-scada-theme] .branch-config[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-row[data-v-15975920]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .config-row label[data-v-15975920]{font-size:12px;color:#94a3b8}[data-scada-theme] .config-row input[data-v-15975920],[data-scada-theme] .config-row select[data-v-15975920]{padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .config-row input[data-v-15975920]:focus,[data-scada-theme] .config-row select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .default-branch-label[data-v-15975920]{font-size:12px;color:#94a3b8;text-align:center;padding:8px;background:#1e293b;border-radius:4px}[data-scada-theme] .node-config[data-v-4c312eea]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-4c312eea]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-4c312eea]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-4c312eea],[data-scada-theme] .config-group textarea[data-v-4c312eea],[data-scada-theme] .config-group select[data-v-4c312eea]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-4c312eea]:focus,[data-scada-theme] .config-group textarea[data-v-4c312eea]:focus,[data-scada-theme] .config-group select[data-v-4c312eea]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .config-group textarea[data-v-4c312eea]{resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .node-config[data-v-f7115383]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-f7115383]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-f7115383]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group textarea[data-v-f7115383]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .config-group textarea[data-v-f7115383]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .code-hint[data-v-f7115383]{padding:12px;background:#3b82f61a;border-left:3px solid #3b82f6;border-radius:4px}[data-scada-theme] .code-hint p[data-v-f7115383]{margin:0 0 8px;font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .code-hint ul[data-v-f7115383]{margin:0;padding-left:20px}[data-scada-theme] .code-hint li[data-v-f7115383]{font-size:12px;color:#64748b;margin-bottom:4px}[data-scada-theme] .node-config[data-v-323381bc]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-323381bc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-323381bc]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-323381bc],[data-scada-theme] .config-group select[data-v-323381bc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-323381bc]:focus,[data-scada-theme] .config-group select[data-v-323381bc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-d102fb63]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-d102fb63]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-d102fb63]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-d102fb63],[data-scada-theme] .config-group select[data-v-d102fb63]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-d102fb63]:focus,[data-scada-theme] .config-group select[data-v-d102fb63]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .timer-hint[data-v-d102fb63]{padding:12px;background:#faad141a;border-left:3px solid #faad14;border-radius:4px}[data-scada-theme] .timer-hint p[data-v-d102fb63]{margin:0;font-size:12px;color:#94a3b8}[data-scada-theme] .timer-hint.warning[data-v-d102fb63]{background:#ef44441a;border-left-color:#ef4444}[data-scada-theme] .property-panel[data-v-8304acbc]{width:300px;background:#1e293b;border-left:1px solid #334155;display:flex;flex-direction:column}[data-scada-theme] .property-panel h3[data-v-8304acbc]{margin:0;padding:16px;font-size:14px;font-weight:600;color:#e2e8f0;border-bottom:1px solid #334155}[data-scada-theme] .property-content[data-v-8304acbc]{padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}[data-scada-theme] .property-group[data-v-8304acbc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .property-group label[data-v-8304acbc]{font-size:13px;color:#94a3b8}[data-scada-theme] .property-group input[data-v-8304acbc],[data-scada-theme] .property-group textarea[data-v-8304acbc],[data-scada-theme] .property-group select[data-v-8304acbc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .property-group input[data-v-8304acbc]:focus,[data-scada-theme] .property-group textarea[data-v-8304acbc]:focus,[data-scada-theme] .property-group select[data-v-8304acbc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .property-group input[data-v-8304acbc]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-empty[data-v-8304acbc]{flex:1;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:13px}[data-scada-theme] .divider[data-v-8304acbc]{height:1px;background:#334155;margin:8px 0}[data-scada-theme] .toolbar[data-v-b3e0a4fc]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#1e293b;border-bottom:1px solid #334155}[data-scada-theme] .toolbar-left[data-v-b3e0a4fc]{display:flex;align-items:center;gap:24px}[data-scada-theme] .toolbar-left h2[data-v-b3e0a4fc]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .toolbar-right[data-v-b3e0a4fc]{display:flex;gap:12px}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc],[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{padding:8px 16px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]:hover{background:#2563eb}[data-scada-theme] .btn-close[data-v-b3e0a4fc]{width:36px;height:36px;padding:0;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;margin-left:8px}[data-scada-theme] .btn-close[data-v-b3e0a4fc]:hover{background:#475569;border-color:#64748b;color:#e2e8f0}[data-scada-theme] .close-icon[data-v-b3e0a4fc]{font-size:24px;line-height:1}[data-scada-theme] .menu-overlay[data-v-aa6fccf8]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0000004d;z-index:999}[data-scada-theme] .add-node-menu[data-v-aa6fccf8]{position:fixed;z-index:1000;background:#1e293b;border:1px solid #334155;border-radius:8px;box-shadow:0 4px 12px #0000004d;min-width:280px;max-width:320px}[data-scada-theme] .menu-header[data-v-aa6fccf8]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #334155;color:#e2e8f0;font-size:14px;font-weight:600}[data-scada-theme] .btn-close[data-v-aa6fccf8]{width:24px;height:24px;background:transparent;border:none;color:#94a3b8;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-aa6fccf8]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .menu-list[data-v-aa6fccf8]{padding:8px}[data-scada-theme] .menu-item[data-v-aa6fccf8]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .menu-item[data-v-aa6fccf8]:hover{background:#334155}[data-scada-theme] .menu-item-icon[data-v-aa6fccf8]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:18px;flex-shrink:0}[data-scada-theme] .node-icon-getProperty[data-v-aa6fccf8]{background:#1890ff1a}[data-scada-theme] .node-icon-setProperty[data-v-aa6fccf8]{background:#13c2c21a}[data-scada-theme] .node-icon-condition[data-v-aa6fccf8]{background:#faad141a}[data-scada-theme] .node-icon-httpRequest[data-v-aa6fccf8]{background:#722ed11a}[data-scada-theme] .node-icon-customCode[data-v-aa6fccf8]{background:#eb2f961a}[data-scada-theme] .node-icon-timer[data-v-aa6fccf8]{background:#52c41a1a}[data-scada-theme] .node-icon-clearTimer[data-v-aa6fccf8]{background:#ff4d4f1a}[data-scada-theme] .menu-item-info[data-v-aa6fccf8]{flex:1}[data-scada-theme] .menu-item-name[data-v-aa6fccf8]{font-size:14px;color:#e2e8f0;font-weight:500}[data-scada-theme] .menu-item-desc[data-v-aa6fccf8]{font-size:12px;color:#94a3b8;margin-top:2px}[data-scada-theme] .workflow-editor[data-v-649349a2]{display:flex;flex-direction:column;height:100vh;background:#0f172a;color:#e2e8f0}[data-scada-theme] .editor-main[data-v-649349a2]{display:flex;flex:1;overflow:hidden}[data-scada-theme] .canvas-area[data-v-649349a2]{flex:1;position:relative;overflow:hidden;background:#0f172a}[data-scada-theme] #workflow-container[data-v-649349a2]{width:100%;height:100%}[data-scada-theme] .workflow-dialog-overlay[data-v-4e7f6ab7]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;z-index:9999;display:flex;align-items:center;justify-content:center}[data-scada-theme] .workflow-dialog[data-v-4e7f6ab7]{width:100vw;height:100vh;background:#0f172a;overflow:hidden}.scada-layout[data-v-f1c65631]{width:100%;height:100%;min-height:100vh;display:flex;flex-direction:column;background:#1a1a2e}[data-scada-theme] .scada-canvas-container[data-v-f1c65631]{flex:1;display:flex;background:#0f172a;overflow:hidden;min-height:0}[data-scada-theme][data-v-f1c65631] .x6-node-selected{outline:2px solid #3b82f6;outline-offset:2px;box-shadow:0 0 0 4px #3b82f626,0 0 12px #3b82f64d;transition:outline .15s ease,box-shadow .15s ease}[data-scada-theme][data-v-f1c65631] .x6-node-selected rect,[data-scada-theme][data-v-f1c65631] .x6-node-selected circle,[data-scada-theme][data-v-f1c65631] .x6-node-selected ellipse{filter:brightness(1.05)}.scada-toast{position:fixed;top:20px;left:50%;transform:translate(-50%) translateY(-100px);padding:12px 24px;border-radius:6px;color:#fff;font-size:14px;font-weight:500;box-shadow:0 4px 12px #0000004d;z-index:9999;opacity:0;transition:all .3s ease;pointer-events:none}.scada-toast.show{transform:translate(-50%) translateY(0);opacity:1}.scada-toast-success{background:linear-gradient(135deg,#10b981,#059669)}.scada-toast-error{background:linear-gradient(135deg,#ef4444,#dc2626)}.scada-toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706)}@keyframes edge-flow-f1c65631{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}[data-scada-theme][data-v-f1c65631] .x6-edge path{transition:stroke .3s ease,stroke-width .3s ease}[data-scada-theme][data-v-f1c65631] .edge-flow-slow{animation:edge-flow-f1c65631 4s linear infinite}[data-scada-theme][data-v-f1c65631] .edge-flow-normal{animation:edge-flow-f1c65631 2s linear infinite}[data-scada-theme][data-v-f1c65631] .edge-flow-fast{animation:edge-flow-f1c65631 1s linear infinite}.scada-layout[data-scada-theme=dark]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;color:#e2e8f0!important;font-size:14px!important;line-height:1.5!important;box-sizing:border-box!important;margin:0!important;padding:0!important;border:none!important;display:flex!important;flex-direction:column!important;flex:1!important;width:100%!important;height:100%!important;min-height:100vh!important;background:#1a1a2e!important;overflow:hidden!important;position:relative!important}.scada-layout[data-scada-theme=dark] *,.scada-layout[data-scada-theme=dark] *:before,.scada-layout[data-scada-theme=dark] *:after{box-sizing:border-box!important;margin:0;padding:0}.scada-layout[data-scada-theme=dark]>*{box-sizing:border-box!important}.scada-layout[data-scada-theme=dark]>.scada-header,.scada-layout[data-scada-theme=dark]>.scada-footer{color:#e2e8f0!important;margin:0!important}.scada-layout[data-scada-theme=dark] .property-panel>.panel-header,.scada-layout[data-scada-theme=dark] .component-library>.library-header,.scada-layout[data-scada-theme=dark] .canvas-config-panel>.config-header{color:#e2e8f0!important;margin:0!important;padding:0!important}.scada-layout[data-scada-theme=dark] .scada-header h1,.scada-layout[data-scada-theme=dark] .scada-header h2,.scada-layout[data-scada-theme=dark] .scada-header h3,.scada-layout[data-scada-theme=dark] .scada-header h4{color:#e2e8f0!important;margin:0!important;padding:0!important;font-weight:600!important}.scada-layout[data-scada-theme=dark] .canvas-area input:not([class*=ant-]):not([type=range]):not([type=color]):not([type=checkbox]),.scada-layout[data-scada-theme=dark] .canvas-area select:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area textarea:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area button:not([class*=ant-]){-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;outline:none!important;border:none!important;background:none!important;margin:0!important;padding:0!important;color:inherit!important;font-family:inherit!important;font-size:inherit!important}.scada-layout[data-scada-theme=dark] .canvas-area label,.scada-layout[data-scada-theme=dark] .canvas-area span,.scada-layout[data-scada-theme=dark] .canvas-area p,.scada-layout[data-scada-theme=dark] .canvas-area div{color:inherit!important;font-family:inherit!important;line-height:normal!important}.scada-layout[data-scada-theme] ::-webkit-scrollbar{width:8px;height:8px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}.scada-layout[data-scada-theme] ::-webkit-scrollbar-corner{background:#0f172a}.scada-layout .x6-node-selected rect{stroke:#3b82f6!important;stroke-width:2!important;filter:drop-shadow(0 0 8px rgba(59,130,246,.6))!important}.scada-layout .x6-edge-selected path{stroke:#3b82f6!important;stroke-width:3!important}.scada-layout .x6-widget-selection-box{border:2px solid #3b82f6!important;background-color:#3b82f61a!important}.scada-layout[data-scada-theme] input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:linear-gradient(90deg,#475569,#334155);border-radius:2px;outline:none;opacity:.9;transition:opacity .2s}.scada-layout[data-scada-theme] input[type=range]:hover{opacity:1}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}
|
|
1
|
+
[data-scada-theme] .scada-header[data-v-9bbedc41]{height:60px;background:#16213e;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #0f3460;gap:24px}[data-scada-theme] .header-left[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .logo[data-v-9bbedc41]{font-size:20px;font-weight:600;margin:0;color:#e2e8f0}[data-scada-theme] .version[data-v-9bbedc41]{font-size:12px;color:#64748b;padding:2px 8px;background:#0f172a;border-radius:4px}[data-scada-theme] .header-center[data-v-9bbedc41]{flex:1;display:flex;justify-content:center;align-items:center}[data-scada-theme] .header-right[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .tool-group[data-v-9bbedc41]{display:flex;gap:8px}[data-scada-theme] .header-btn[data-v-9bbedc41]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s;font-size:13px}[data-scada-theme] .header-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-1px)}[data-scada-theme] .header-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .tip[data-v-9bbedc41]{font-size:13px;color:#94a3b8}[data-scada-theme] .divider[data-v-9bbedc41]{width:1px;height:32px;background:#334155;margin:0 12px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:16px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .toolbar-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .toolbar-btn .icon-svg[data-v-9bbedc41]{width:18px;height:18px;display:block}[data-scada-theme] .canvas-info[data-v-9bbedc41]{display:flex;align-items:center;gap:16px}[data-scada-theme] .info-text[data-v-9bbedc41]{font-size:12px;color:#64748b}[data-scada-theme] .component-library[data-v-92bb4e17]{width:260px;height:100%;background:#1e293b;border-right:1px solid #0f3460;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .library-header[data-v-92bb4e17]{padding:16px;line-height:50px;text-align:center;border-bottom:1px solid #0f3460}[data-scada-theme] .library-header h3[data-v-92bb4e17]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .library-content[data-v-92bb4e17]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .component-section[data-v-92bb4e17]{margin-bottom:24px}[data-scada-theme] .component-section[data-v-92bb4e17]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-92bb4e17]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .component-grid[data-v-92bb4e17]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}[data-scada-theme] .component-item[data-v-92bb4e17]{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;background:#0f172a;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .component-item[data-v-92bb4e17]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-2px);box-shadow:0 4px 8px #3b82f64d}[data-scada-theme] .component-item[data-v-92bb4e17]:active{transform:translateY(0)}[data-scada-theme] .component-icon[data-v-92bb4e17]{font-size:24px;color:#e2e8f0}[data-scada-theme] .component-name[data-v-92bb4e17]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar{width:8px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-area[data-v-a869f6aa]{flex:1;display:flex;align-items:center;justify-content:center;background:#0f172a;overflow:auto;position:relative}[data-scada-theme] .canvas-container[data-v-a869f6aa]{position:relative;border:2px solid #334155;box-shadow:0 4px 12px #0000004d;transition:transform .2s ease}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar{width:8px;height:8px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-config-panel[data-v-f309895b]{width:100%;height:100%;background:#1e293b;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .panel-header[data-v-f309895b]{padding:16px;border-bottom:1px solid #0f3460}[data-scada-theme] .panel-header h3[data-v-f309895b]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .panel-content[data-v-f309895b]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .config-section[data-v-f309895b]{margin-bottom:24px}[data-scada-theme] .config-section[data-v-f309895b]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-f309895b]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .config-item[data-v-f309895b]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}[data-scada-theme] .config-item label[data-v-f309895b]{font-size:13px;color:#cbd5e1;flex-shrink:0}[data-scada-theme] .config-select[data-v-f309895b]{width:160px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;font-size:13px}[data-scada-theme] .config-number[data-v-f309895b]{width:80px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;text-align:center;font-size:13px}[data-scada-theme] .config-color[data-v-f309895b]{width:50px;height:32px;border:1px solid #334155;border-radius:4px;cursor:pointer;background:#0f172a}[data-scada-theme] .slider-group[data-v-f309895b]{display:flex;align-items:center;gap:8px;flex:1;max-width:160px}[data-scada-theme] .config-slider[data-v-f309895b]{flex:1}[data-scada-theme] .value-display[data-v-f309895b]{font-size:12px;color:#94a3b8;min-width:30px;text-align:right}[data-scada-theme] .number-input-group[data-v-f309895b]{display:flex;gap:4px}[data-scada-theme] .adjust-btn[data-v-f309895b]{width:32px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:14px}[data-scada-theme] .adjust-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .upload-btn[data-v-f309895b]{width:50px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s}[data-scada-theme] .upload-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .image-upload[data-v-f309895b]{display:flex;gap:8px}[data-scada-theme] .clear-btn[data-v-f309895b]{width:32px;height:32px;background:#dc2626;color:#fff;border:1px solid #991b1b;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s}[data-scada-theme] .clear-btn[data-v-f309895b]:hover{background:#b91c1c;border-color:#7f1d1d}[data-scada-theme] .switch[data-v-f309895b]{position:relative;display:inline-block;width:48px;height:24px}[data-scada-theme] .switch input[data-v-f309895b]{opacity:0;width:0;height:0}[data-scada-theme] .switch .slider[data-v-f309895b]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#475569;transition:.3s;border-radius:24px}[data-scada-theme] .switch .slider[data-v-f309895b]:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]{background-color:#3b82f6}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]:before{transform:translate(24px)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar{width:8px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tab-pane[data-v-def84c5f]{animation:fadeIn-def84c5f .2s}@keyframes fadeIn-def84c5f{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-def84c5f]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-def84c5f]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item[data-v-def84c5f]{margin-bottom:12px}[data-scada-theme] .property-item-inline[data-v-def84c5f]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline[data-v-def84c5f]:has(.checkbox-wrapper){justify-content:flex-start}[data-scada-theme] .property-item-inline label[data-v-def84c5f]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-def84c5f],[data-scada-theme] .property-item-inline select[data-v-def84c5f]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:0 0 auto}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:focus,[data-scada-theme] .property-item-inline select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .color-input-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px}[data-scada-theme] .property-item-inline .color-input-wrapper input[type=color][data-v-def84c5f]{width:40px;height:28px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .property-item-inline .color-input-wrapper .color-value[data-v-def84c5f]{flex:1;min-width:0;font-size:11px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .property-item label[data-v-def84c5f]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item input[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item input[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .property-item input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-row[data-v-def84c5f]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-def84c5f]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-def84c5f]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .checkbox-wrapper[data-v-def84c5f]{display:inline-flex;align-items:center;gap:6px}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-def84c5f]{width:16px;height:16px;cursor:pointer;accent-color:#3b82f6;pointer-events:auto!important;-webkit-appearance:auto!important;-moz-appearance:auto!important;appearance:auto!important;opacity:1!important;z-index:1!important;position:relative!important;flex-shrink:0}[data-scada-theme] .checkbox-label[data-v-def84c5f]{font-size:12px;color:#cbd5e1;white-space:nowrap}[data-scada-theme] select[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] select option[data-v-def84c5f]{background:#0f172a;color:#e2e8f0}[data-scada-theme] .property-hint[data-v-def84c5f]{display:block;font-size:11px;color:#64748b;margin-top:2px;font-weight:400}[data-scada-theme] .tab-pane[data-v-5b515f8a]{animation:fadeIn-5b515f8a .2s}@keyframes fadeIn-5b515f8a{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-5b515f8a]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-5b515f8a]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item-inline[data-v-5b515f8a]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline label[data-v-5b515f8a]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-5b515f8a],[data-scada-theme] .property-item-inline select[data-v-5b515f8a]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:focus,[data-scada-theme] .property-item-inline select[data-v-5b515f8a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-5b515f8a]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-5b515f8a]{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6}[data-scada-theme] .checkbox-label[data-v-5b515f8a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .edge-properties-tab[data-v-e47f1784]{padding:0}[data-scada-theme] .property-section[data-v-e47f1784]{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-e47f1784]:last-child{border-bottom:none;margin-bottom:0}[data-scada-theme] .section-title[data-v-e47f1784]{font-size:13px;font-weight:600;color:#e2e8f0;margin:0 0 12px;padding:0}[data-scada-theme] .property-item[data-v-e47f1784]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-e47f1784]:last-child{margin-bottom:0}[data-scada-theme] .property-label[data-v-e47f1784]{display:block;font-size:12px;color:#94a3b8;margin-bottom:6px;font-weight:500}[data-scada-theme] .color-input-wrapper[data-v-e47f1784]{display:flex;gap:8px;align-items:center}[data-scada-theme] .color-input[data-v-e47f1784]{width:40px;height:32px;border:1px solid #475569;border-radius:4px;cursor:pointer;background:#1e293b;padding:2px}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-text[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;font-family:Consolas,monospace}[data-scada-theme] .color-text[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .number-input-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:8px}[data-scada-theme] .property-input[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px}[data-scada-theme] .property-input[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .input-unit[data-v-e47f1784]{font-size:12px;color:#64748b;min-width:24px}[data-scada-theme] .property-select[data-v-e47f1784]{width:100%;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;cursor:pointer}[data-scada-theme] .property-select[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .slider-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:12px}[data-scada-theme] .property-slider[data-v-e47f1784]{flex:1;height:4px;background:#334155;border-radius:2px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}[data-scada-theme] .property-slider[data-v-e47f1784]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:#3b82f6;border-radius:50%;cursor:pointer}[data-scada-theme] .property-slider[data-v-e47f1784]::-moz-range-thumb{width:14px;height:14px;background:#3b82f6;border-radius:50%;border:none;cursor:pointer}[data-scada-theme] .slider-value[data-v-e47f1784]{font-size:12px;color:#94a3b8;min-width:40px;text-align:right}[data-scada-theme] .delete-btn[data-v-e47f1784]{width:100%;height:36px;background:#dc2626;border:none;border-radius:4px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .delete-btn[data-v-e47f1784]:hover{background:#b91c1c}[data-scada-theme] .delete-btn[data-v-e47f1784]:active{transform:scale(.98)}[data-scada-theme] .event-card[data-v-af7c633a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-af7c633a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-af7c633a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-af7c633a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-af7c633a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-af7c633a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-af7c633a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-af7c633a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-af7c633a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-af7c633a]{animation:slideDown-af7c633a .2s ease-out}@keyframes slideDown-af7c633a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .event-field[data-v-af7c633a]{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}[data-scada-theme] .event-field[data-v-af7c633a]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-af7c633a]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-af7c633a],[data-scada-theme] .event-field select[data-v-af7c633a],[data-scada-theme] .event-field textarea[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .event-field input[data-v-af7c633a]:focus,[data-scada-theme] .event-field select[data-v-af7c633a]:focus,[data-scada-theme] .event-field textarea[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-title[data-v-af7c633a]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-af7c633a]:first-child{margin-top:0}[data-scada-theme] .field-hint[data-v-af7c633a]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-config[data-v-af7c633a]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-af7c633a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-af7c633a],[data-scada-theme] .condition-input[data-v-af7c633a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-af7c633a]:focus,[data-scada-theme] .condition-input[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .config-section[data-v-af7c633a]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .btn-config[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-af7c633a]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .selected-workflow-info[data-v-af7c633a]{margin-top:12px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .info-row[data-v-af7c633a]{display:flex;align-items:center;gap:8px;margin-bottom:12px}[data-scada-theme] .info-label[data-v-af7c633a]{font-size:12px;color:#94a3b8}[data-scada-theme] .info-value[data-v-af7c633a]{font-size:13px;color:#10b981;font-weight:500}[data-scada-theme] .modal-overlay[data-v-7884b850]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-7884b850 .2s ease-out}@keyframes fadeIn-7884b850{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-7884b850]{width:800px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-7884b850 .3s ease-out}@keyframes slideUp-7884b850{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-7884b850]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-7884b850]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-7884b850]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .device-point-selector[data-v-7884b850]{display:grid;grid-template-columns:1fr 1.5fr;gap:12px;height:500px;padding:16px 24px;overflow:hidden}[data-scada-theme] .modal-footer[data-v-7884b850]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7884b850],[data-scada-theme] .btn-confirm[data-v-7884b850]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-7884b850]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-7884b850]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7884b850]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7884b850]:hover{background:#2563eb}[data-scada-theme] .btn-confirm[data-v-7884b850]:disabled{background:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .device-list-panel[data-v-7884b850],[data-scada-theme] .point-list-panel[data-v-7884b850]{display:flex;flex-direction:column;background:#1e293b;border:1px solid #334155;border-radius:6px;overflow:hidden}[data-scada-theme] .panel-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#334155;border-bottom:1px solid #475569}[data-scada-theme] .panel-header h4[data-v-7884b850]{margin:0;font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .device-count[data-v-7884b850],[data-scada-theme] .point-count[data-v-7884b850]{font-size:12px;color:#94a3b8;background:#1e293b;padding:2px 8px;border-radius:10px}[data-scada-theme] .search-box[data-v-7884b850]{padding:12px 16px;border-bottom:1px solid #334155}[data-scada-theme] .search-input[data-v-7884b850]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .search-input[data-v-7884b850]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .search-input[data-v-7884b850]::placeholder{color:#64748b}[data-scada-theme] .device-list[data-v-7884b850],[data-scada-theme] .point-list[data-v-7884b850]{flex:1;overflow-y:auto;padding:8px}[data-scada-theme] .device-item[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .device-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .device-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .device-item.offline[data-v-7884b850]{opacity:.6}[data-scada-theme] .device-info[data-v-7884b850]{flex:1}[data-scada-theme] .device-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .status-dot[data-v-7884b850]{width:8px;height:8px;border-radius:50%;background:#64748b}[data-scada-theme] .status-dot.online[data-v-7884b850]{background:#10b981;box-shadow:0 0 8px #10b98180}[data-scada-theme] .status-dot.offline[data-v-7884b850]{background:#64748b}[data-scada-theme] .status-dot.error[data-v-7884b850]{background:#ef4444;box-shadow:0 0 8px #ef444480}[data-scada-theme] .device-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .device-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .device-arrow[data-v-7884b850]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .device-item:hover .device-arrow[data-v-7884b850]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .point-item[data-v-7884b850]{padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .point-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .point-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .point-item.disabled[data-v-7884b850]{opacity:.5;cursor:not-allowed}[data-scada-theme] .point-info[data-v-7884b850]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .point-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0}[data-scada-theme] .access-mode[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;font-weight:400}[data-scada-theme] .access-mode.read[data-v-7884b850]{background:#3b82f633;color:#60a5fa}[data-scada-theme] .access-mode.write[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .access-mode.readWrite[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .point-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .point-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .point-unit[data-v-7884b850]{color:#3b82f6}[data-scada-theme] .point-type[data-v-7884b850]{background:#334155;padding:2px 6px;border-radius:3px}[data-scada-theme] .point-value[data-v-7884b850]{font-size:12px;color:#94a3b8}[data-scada-theme] .point-value .value[data-v-7884b850]{color:#e2e8f0;font-weight:500;margin:0 4px}[data-scada-theme] .quality[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;margin-left:8px}[data-scada-theme] .quality.good[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .quality.bad[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .quality.uncertain[data-v-7884b850]{background:#f59e0b33;color:#fbbf24}[data-scada-theme] .empty-hint[data-v-7884b850]{text-align:center;padding:40px 20px;color:#64748b;font-size:13px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar{width:6px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-track,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .modal-overlay[data-v-ef9e0ee1]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-ef9e0ee1 .2s ease-out}@keyframes fadeIn-ef9e0ee1{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-ef9e0ee1]{width:600px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-ef9e0ee1 .3s ease-out}@keyframes slideUp-ef9e0ee1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-ef9e0ee1]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-ef9e0ee1]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-ef9e0ee1]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-ef9e0ee1]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .modal-footer[data-v-ef9e0ee1]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1],[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]:hover{background:#2563eb}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]{max-height:60vh;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-item[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .config-item label[data-v-ef9e0ee1]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .required[data-v-ef9e0ee1]{color:#ef4444;margin-left:2px}[data-scada-theme] .field-hint[data-v-ef9e0ee1]{font-size:11px;color:#64748b;margin-top:4px;line-height:1.4}[data-scada-theme] .field-hint.error[data-v-ef9e0ee1]{color:#ef4444}[data-scada-theme] .config-item select[data-v-ef9e0ee1],[data-scada-theme] .config-item input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .config-item select[data-v-ef9e0ee1]:focus,[data-scada-theme] .config-item input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .unit-config[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .checkbox-label[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;font-size:13px;color:#cbd5e1;cursor:pointer}[data-scada-theme] .checkbox-label input[type=checkbox][data-v-ef9e0ee1]{width:auto;cursor:pointer}[data-scada-theme] .custom-unit[data-v-ef9e0ee1]{margin-left:24px}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .mapping-details[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:12px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .range-rules[data-v-ef9e0ee1],[data-scada-theme] .enum-mappings[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .range-rule[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping input[data-v-ef9e0ee1]{flex:1;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:first-child,[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:nth-child(3){max-width:80px}[data-scada-theme] .range-separator[data-v-ef9e0ee1],[data-scada-theme] .range-arrow[data-v-ef9e0ee1],[data-scada-theme] .enum-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:14px;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]{padding:8px 16px;background:#334155;border:1px dashed #475569;border-radius:4px;color:#94a3b8;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]:hover{background:#3b82f6;border-color:#3b82f6;color:#fff;border-style:solid}[data-scada-theme] .mapping-preview[data-v-ef9e0ee1]{padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .mapping-preview label[data-v-ef9e0ee1]{display:block;font-size:12px;color:#94a3b8;margin-bottom:8px}[data-scada-theme] .preview-content[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .preview-item[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#1e293b;border-radius:4px;font-size:12px}[data-scada-theme] .preview-input[data-v-ef9e0ee1]{color:#94a3b8;font-family:monospace}[data-scada-theme] .preview-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:12px}[data-scada-theme] .preview-output[data-v-ef9e0ee1]{color:#3b82f6;font-weight:500}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar{width:6px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .event-card[data-v-3731c19a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-3731c19a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-3731c19a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-3731c19a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-3731c19a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-3731c19a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-3731c19a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-3731c19a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-3731c19a]{animation:slideDown-3731c19a .2s ease-out}@keyframes slideDown-3731c19a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .property-item[data-v-3731c19a]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-3731c19a]:last-child{margin-bottom:0}[data-scada-theme] .property-item label[data-v-3731c19a]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item select[data-v-3731c19a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item select[data-v-3731c19a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .selected-point[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .point-main[data-v-3731c19a]{display:flex;align-items:center;gap:8px;font-size:13px}[data-scada-theme] .device-name[data-v-3731c19a]{color:#94a3b8;font-size:12px}[data-scada-theme] .point-name[data-v-3731c19a]{color:#e2e8f0;font-weight:500}[data-scada-theme] .point-details[data-v-3731c19a]{display:flex;gap:8px;font-size:11px;color:#64748b}[data-scada-theme] .point-code[data-v-3731c19a]{font-family:monospace}[data-scada-theme] .point-unit[data-v-3731c19a]{color:#3b82f6}[data-scada-theme] .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .selector-arrow[data-v-3731c19a]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .point-selector-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .mapping-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .mapping-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .mapping-summary[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .mapping-type-label[data-v-3731c19a]{font-size:13px;color:#e2e8f0;font-weight:500}[data-scada-theme] .mapping-detail[data-v-3731c19a]{font-size:11px;color:#64748b}[data-scada-theme] .mapping-trigger .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .mapping-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .dialog-overlay[data-v-90af9944]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-90af9944 .2s}@keyframes fadeIn-90af9944{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-content[data-v-90af9944]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-90af9944 .3s}@keyframes slideUp-90af9944{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-90af9944]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-90af9944]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-90af9944]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-90af9944]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-90af9944]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .btn-add-group[data-v-90af9944]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-90af9944]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-90af9944]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-90af9944]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-90af9944]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-90af9944]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-90af9944],[data-scada-theme] .group-field select[data-v-90af9944]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-90af9944]:focus,[data-scada-theme] .group-field select[data-v-90af9944]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-90af9944]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-90af9944]{width:60px;height:36px}[data-scada-theme] .color-value[data-v-90af9944]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .btn-delete-group[data-v-90af9944]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-90af9944]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .empty-hint[data-v-90af9944]{font-size:12px;color:#64748b;text-align:center;padding:16px;background:#0f172a;border-radius:4px;margin-bottom:12px}[data-scada-theme] .dialog-footer[data-v-90af9944]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-90af9944],[data-scada-theme] .btn-confirm[data-v-90af9944]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-90af9944]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-90af9944]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-90af9944]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-90af9944]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-add3567b]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-add3567b .2s}@keyframes fadeIn-add3567b{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-large[data-v-add3567b]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-content[data-v-add3567b]{background:#1e293b;border-radius:8px;width:90%;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-add3567b .3s}@keyframes slideUp-add3567b{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-add3567b]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-add3567b]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-add3567b]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body-split[data-v-add3567b]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden;padding:24px}[data-scada-theme] .code-editor-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-add3567b]{flex:1;resize:none;height:100%!important}[data-scada-theme] .code-textarea[data-v-add3567b]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-add3567b]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-add3567b]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-add3567b]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-add3567b]{color:#10b981}[data-scada-theme] .status-error[data-v-add3567b]{color:#ef4444}[data-scada-theme] .btn-test[data-v-add3567b]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-add3567b]:hover{background:#059669;border-color:#059669}[data-scada-theme] .code-preview-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-add3567b]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-add3567b]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-add3567b]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-add3567b]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-add3567b]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-add3567b]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-add3567b]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-add3567b]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-add3567b]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-add3567b]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-add3567b]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-add3567b]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-add3567b]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-add3567b],[data-scada-theme] .btn-confirm[data-v-add3567b]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-add3567b]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-add3567b]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-add3567b]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-add3567b]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-c9a88e33]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}[data-scada-theme] .dialog-container[data-v-c9a88e33]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .dialog-header[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-c9a88e33]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-close[data-v-c9a88e33]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-c9a88e33]{flex:1;overflow-y:auto;padding:20px 24px}[data-scada-theme] .empty-state[data-v-c9a88e33]{text-align:center;padding:40px 20px;color:#64748b}[data-scada-theme] .empty-state p[data-v-c9a88e33]{margin:8px 0;font-size:14px}[data-scada-theme] .empty-state .hint[data-v-c9a88e33]{font-size:12px;color:#475569}[data-scada-theme] .workflow-list[data-v-c9a88e33]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .workflow-item[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .workflow-item[data-v-c9a88e33]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .workflow-item.selected[data-v-c9a88e33]{border-color:#10b981;background:#10b9811a}[data-scada-theme] .workflow-info[data-v-c9a88e33]{flex:1}[data-scada-theme] .workflow-name[data-v-c9a88e33]{font-size:15px;font-weight:500;color:#e2e8f0;margin-bottom:6px}[data-scada-theme] .workflow-meta[data-v-c9a88e33]{display:flex;gap:12px;font-size:12px;color:#64748b}[data-scada-theme] .workflow-id[data-v-c9a88e33]{color:#94a3b8}[data-scada-theme] .workflow-date[data-v-c9a88e33]{color:#64748b}[data-scada-theme] .workflow-actions[data-v-c9a88e33]{display:flex;gap:8px}[data-scada-theme] .btn-icon[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:1px solid #334155;border-radius:4px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-icon[data-v-c9a88e33]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .dialog-footer[data-v-c9a88e33]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-c9a88e33],[data-scada-theme] .btn-primary[data-v-c9a88e33]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-c9a88e33]{background:transparent;border:1px solid #475569;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-c9a88e33]:hover{background:#334155;border-color:#64748b}[data-scada-theme] .btn-primary[data-v-c9a88e33]{background:#10b981;border:1px solid #10b981;color:#fff}[data-scada-theme] .btn-primary[data-v-c9a88e33]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-primary[data-v-c9a88e33]:disabled{background:#334155;border-color:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .property-panel[data-v-7d3281c0]{width:300px;height:100%;background:#1e293b;border-left:1px solid #0f3460;overflow-y:auto}[data-scada-theme] .empty-state[data-v-7d3281c0]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:#64748b;text-align:center;padding:24px}[data-scada-theme] .empty-state p[data-v-7d3281c0]{font-size:16px;margin-bottom:8px}[data-scada-theme] .empty-state .hint[data-v-7d3281c0]{font-size:12px;color:#475569}[data-scada-theme] .properties[data-v-7d3281c0]{padding:12px}[data-scada-theme] .panel-title[data-v-7d3281c0]{font-size:15px;font-weight:600;color:#e2e8f0;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-7d3281c0]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .hint-text[data-v-7d3281c0]{font-size:12px;color:#64748b;margin-bottom:12px;line-height:1.5}[data-scada-theme] .empty-hint[data-v-7d3281c0]{display:flex;justify-content:center;align-items:center;padding:24px 16px;color:#64748b;font-size:12px;text-align:center;background:#0f172a;border-radius:4px;margin-bottom:10px}[data-scada-theme] .property-item[data-v-7d3281c0]{margin-bottom:10px}[data-scada-theme] .property-item label[data-v-7d3281c0]{display:block;font-size:11px;color:#cbd5e1;margin-bottom:4px}[data-scada-theme] .property-item input[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item input[data-v-7d3281c0]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item select[data-v-7d3281c0],[data-scada-theme] .property-item textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item select[data-v-7d3281c0]:focus,[data-scada-theme] .property-item textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item textarea[data-v-7d3281c0]{resize:vertical;min-height:50px;font-family:Consolas,Monaco,monospace}[data-scada-theme] .property-row[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-7d3281c0]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tabs[data-v-7d3281c0]{display:flex;gap:3px;margin-bottom:12px;padding:3px;background:#0f172a;border-radius:5px}[data-scada-theme] .tab-btn[data-v-7d3281c0]{flex:1;padding:6px 10px;background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:12px;font-weight:500;border-radius:4px;transition:all .2s}[data-scada-theme] .tab-btn[data-v-7d3281c0]:hover{color:#cbd5e1;background:#1e293b}[data-scada-theme] .tab-btn.active[data-v-7d3281c0]{color:#fff;background:#3b82f6}[data-scada-theme] .tab-content[data-v-7d3281c0]{min-height:0}[data-scada-theme] .tab-pane[data-v-7d3281c0]{animation:fadeIn-7d3281c0 .2s}@keyframes fadeIn-7d3281c0{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown-7d3281c0{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}[data-scada-theme] .section-header h4[data-v-7d3281c0]{margin:0}[data-scada-theme] .btn-add[data-v-7d3281c0]{padding:5px 10px;background:#3b82f6;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-add[data-v-7d3281c0]:hover{background:#2563eb}[data-scada-theme] .event-list[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .event-card[data-v-7d3281c0]{background:#0f172a;border:1px solid #334155;border-radius:5px;padding:10px;transition:all .2s}[data-scada-theme] .event-card[data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-7d3281c0]:hover{background:#3b82f60d;margin:-4px -6px 6px;padding:4px 6px 10px;border-radius:4px}[data-scada-theme] .header-left[data-v-7d3281c0]{display:flex;align-items:center;gap:6px}[data-scada-theme] .collapse-icon[data-v-7d3281c0]{font-size:9px;color:#64748b;transition:transform .2s;display:inline-block;width:10px}[data-scada-theme] .event-type-label[data-v-7d3281c0]{font-size:12px;font-weight:500;color:#e2e8f0}[data-scada-theme] .event-action-badge[data-v-7d3281c0]{font-size:10px;padding:2px 6px;background:#3b82f6;color:#fff;border-radius:8px}[data-scada-theme] .event-card-body[data-v-7d3281c0]{animation:slideDown-7d3281c0 .2s ease-out}[data-scada-theme] .event-index[data-v-7d3281c0]{font-size:12px;font-weight:600;color:#3b82f6}[data-scada-theme] .btn-remove[data-v-7d3281c0]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}[data-scada-theme] .event-field[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-7d3281c0]{font-size:11px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-7d3281c0],[data-scada-theme] .event-field select[data-v-7d3281c0],[data-scada-theme] .event-field textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .event-field input[data-v-7d3281c0]:focus,[data-scada-theme] .event-field select[data-v-7d3281c0]:focus,[data-scada-theme] .event-field textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .field-hint[data-v-7d3281c0]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-group[data-v-7d3281c0]{background:#1e293b;border-radius:4px;padding:12px;margin-bottom:12px}[data-scada-theme] .config-section[data-v-7d3281c0]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .section-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-7d3281c0]:first-child{margin-top:0}[data-scada-theme] .btn-config[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .condition-config[data-v-7d3281c0]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-7d3281c0]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-7d3281c0],[data-scada-theme] .condition-input[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-7d3281c0]:focus,[data-scada-theme] .condition-input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .event-title[data-v-7d3281c0]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:hover{border-color:#475569}[data-scada-theme] .code-textarea[data-v-7d3281c0]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;resize:vertical;min-height:120px;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .dialog-overlay[data-v-7d3281c0]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-7d3281c0 .2s}[data-scada-theme] .dialog-content[data-v-7d3281c0]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-7d3281c0 .3s}[data-scada-theme] .dialog-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-7d3281c0]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-7d3281c0]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-7d3281c0]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-7d3281c0]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .btn-add-group[data-v-7d3281c0]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-7d3281c0]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-7d3281c0]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-7d3281c0]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-7d3281c0],[data-scada-theme] .group-field select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-7d3281c0]:focus,[data-scada-theme] .group-field select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-7d3281c0]{width:60px;height:36px}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .dialog-large[data-v-7d3281c0]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-body-split[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden}[data-scada-theme] .code-editor-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-7d3281c0]{flex:1;resize:none;height:100%!important}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-7d3281c0]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-7d3281c0]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-7d3281c0]{color:#10b981}[data-scada-theme] .status-error[data-v-7d3281c0]{color:#ef4444}[data-scada-theme] .btn-test[data-v-7d3281c0]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-7d3281c0]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-clear[data-v-7d3281c0]{padding:4px 12px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:12px;transition:all .2s}[data-scada-theme] .btn-clear[data-v-7d3281c0]:hover{background:#334155;color:#cbd5e1}[data-scada-theme] .code-preview-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-7d3281c0]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-7d3281c0]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-7d3281c0]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-7d3281c0]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-7d3281c0]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-7d3281c0]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-7d3281c0]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-7d3281c0]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-7d3281c0]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-7d3281c0]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7d3281c0],[data-scada-theme] .btn-confirm[data-v-7d3281c0]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-7d3281c0]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-7d3281c0]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7d3281c0]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7d3281c0]:hover{background:#2563eb;border-color:#2563eb}@keyframes slideUp-7d3281c0{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .scada-footer[data-v-52b6d4b1]{height:32px;background:#1e293b;border-top:1px solid #0f3460;display:flex;align-items:center;padding:0 32px;flex-shrink:0}[data-scada-theme] .footer-content[data-v-52b6d4b1]{width:100%;display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .footer-left[data-v-52b6d4b1],[data-scada-theme] .footer-right[data-v-52b6d4b1]{display:flex;align-items:center;gap:12px}[data-scada-theme] .copyright[data-v-52b6d4b1],[data-scada-theme] .license[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .divider[data-v-52b6d4b1]{color:#475569!important;font-size:12px}[data-scada-theme] .contact-item[data-v-52b6d4b1]{display:flex;align-items:center;gap:4px}[data-scada-theme] .contact-item .icon[data-v-52b6d4b1]{font-size:12px}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]:hover{color:#3b82f6!important;cursor:pointer}[data-scada-theme] .authorized-icon[data-v-52b6d4b1]{font-size:14px;margin-right:6px}[data-scada-theme] .authorized-text[data-v-52b6d4b1]{font-size:12px;color:#10b981!important;font-weight:500}[data-scada-theme] .expiry-text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .element-selector-overlay[data-v-882704dd]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}[data-scada-theme] .element-selector-dialog[data-v-882704dd]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;box-shadow:0 4px 24px #0000004d}[data-scada-theme] .dialog-header[data-v-882704dd]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-882704dd]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-882704dd]{width:28px;height:28px;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-882704dd]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-882704dd]{flex:1;padding:20px;display:flex;flex-direction:column;gap:16px;overflow:hidden}[data-scada-theme] .search-box input[data-v-882704dd]{width:100%;padding:10px 14px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#e2e8f0;font-size:14px}[data-scada-theme] .search-box input[data-v-882704dd]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .element-list[data-v-882704dd]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px}[data-scada-theme] .element-item[data-v-882704dd]{display:flex;align-items:center;gap:12px;padding:12px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .element-item[data-v-882704dd]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .element-item.active[data-v-882704dd]{border-color:#3b82f6;background:#3b82f61a}[data-scada-theme] .element-icon[data-v-882704dd]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#3b82f61a;border-radius:6px;font-size:20px;flex-shrink:0}[data-scada-theme] .element-info[data-v-882704dd]{flex:1}[data-scada-theme] .element-name[data-v-882704dd]{font-size:14px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .element-type[data-v-882704dd]{font-size:12px;color:#94a3b8}[data-scada-theme] .element-check[data-v-882704dd]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#3b82f6;border-radius:50%;color:#fff;font-size:14px;font-weight:700}[data-scada-theme] .empty-state[data-v-882704dd]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#64748b;padding:40px 20px}[data-scada-theme] .empty-state p[data-v-882704dd]{margin:0;font-size:14px}[data-scada-theme] .empty-hint[data-v-882704dd]{margin-top:8px;font-size:12px;color:#475569}[data-scada-theme] .dialog-footer[data-v-882704dd]{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-882704dd],[data-scada-theme] .btn-primary[data-v-882704dd]{padding:8px 20px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-882704dd]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-882704dd]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-882704dd]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-882704dd]:hover{background:#2563eb}[data-scada-theme] .btn-primary[data-v-882704dd]:disabled{background:#475569;cursor:not-allowed;opacity:.5}[data-scada-theme] .node-config[data-v-fa65eb56]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-fa65eb56]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-fa65eb56]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-fa65eb56]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-fa65eb56]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-fa65eb56]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-fa65eb56]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-fa65eb56]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-fa65eb56],[data-scada-theme] .config-group textarea[data-v-fa65eb56],[data-scada-theme] .config-group select[data-v-fa65eb56]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-fa65eb56]:focus,[data-scada-theme] .config-group textarea[data-v-fa65eb56]:focus,[data-scada-theme] .config-group select[data-v-fa65eb56]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-42e029d4]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-42e029d4]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-42e029d4]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-42e029d4]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-42e029d4]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-42e029d4]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-42e029d4]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-42e029d4]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-42e029d4],[data-scada-theme] .config-group textarea[data-v-42e029d4],[data-scada-theme] .config-group select[data-v-42e029d4]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-42e029d4]:focus,[data-scada-theme] .config-group textarea[data-v-42e029d4]:focus,[data-scada-theme] .config-group select[data-v-42e029d4]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-15975920]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-15975920]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-15975920],[data-scada-theme] .config-group textarea[data-v-15975920],[data-scada-theme] .config-group select[data-v-15975920]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-15975920]:focus,[data-scada-theme] .config-group textarea[data-v-15975920]:focus,[data-scada-theme] .config-group select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .branches-section[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .section-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-15975920]{font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .btn-add[data-v-15975920]{padding:4px 12px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add[data-v-15975920]:hover{background:#2563eb}[data-scada-theme] .branch-list[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .branch-item[data-v-15975920]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px}[data-scada-theme] .branch-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}[data-scada-theme] .branch-number[data-v-15975920]{font-size:12px;color:#3b82f6;font-weight:500}[data-scada-theme] .btn-remove[data-v-15975920]{width:20px;height:20px;background:#ef4444;color:#fff;border:none;border-radius:50%;font-size:16px;line-height:1;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-15975920]:hover{background:#dc2626}[data-scada-theme] .branch-config[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-row[data-v-15975920]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .config-row label[data-v-15975920]{font-size:12px;color:#94a3b8}[data-scada-theme] .config-row input[data-v-15975920],[data-scada-theme] .config-row select[data-v-15975920]{padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .config-row input[data-v-15975920]:focus,[data-scada-theme] .config-row select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .default-branch-label[data-v-15975920]{font-size:12px;color:#94a3b8;text-align:center;padding:8px;background:#1e293b;border-radius:4px}[data-scada-theme] .node-config[data-v-4c312eea]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-4c312eea]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-4c312eea]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-4c312eea],[data-scada-theme] .config-group textarea[data-v-4c312eea],[data-scada-theme] .config-group select[data-v-4c312eea]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-4c312eea]:focus,[data-scada-theme] .config-group textarea[data-v-4c312eea]:focus,[data-scada-theme] .config-group select[data-v-4c312eea]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .config-group textarea[data-v-4c312eea]{resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .node-config[data-v-f7115383]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-f7115383]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-f7115383]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group textarea[data-v-f7115383]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .config-group textarea[data-v-f7115383]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .code-hint[data-v-f7115383]{padding:12px;background:#3b82f61a;border-left:3px solid #3b82f6;border-radius:4px}[data-scada-theme] .code-hint p[data-v-f7115383]{margin:0 0 8px;font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .code-hint ul[data-v-f7115383]{margin:0;padding-left:20px}[data-scada-theme] .code-hint li[data-v-f7115383]{font-size:12px;color:#64748b;margin-bottom:4px}[data-scada-theme] .node-config[data-v-323381bc]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-323381bc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-323381bc]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-323381bc],[data-scada-theme] .config-group select[data-v-323381bc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-323381bc]:focus,[data-scada-theme] .config-group select[data-v-323381bc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-d102fb63]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-d102fb63]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-d102fb63]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-d102fb63],[data-scada-theme] .config-group select[data-v-d102fb63]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-d102fb63]:focus,[data-scada-theme] .config-group select[data-v-d102fb63]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .timer-hint[data-v-d102fb63]{padding:12px;background:#faad141a;border-left:3px solid #faad14;border-radius:4px}[data-scada-theme] .timer-hint p[data-v-d102fb63]{margin:0;font-size:12px;color:#94a3b8}[data-scada-theme] .timer-hint.warning[data-v-d102fb63]{background:#ef44441a;border-left-color:#ef4444}[data-scada-theme] .property-panel[data-v-8304acbc]{width:300px;background:#1e293b;border-left:1px solid #334155;display:flex;flex-direction:column}[data-scada-theme] .property-panel h3[data-v-8304acbc]{margin:0;padding:16px;font-size:14px;font-weight:600;color:#e2e8f0;border-bottom:1px solid #334155}[data-scada-theme] .property-content[data-v-8304acbc]{padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}[data-scada-theme] .property-group[data-v-8304acbc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .property-group label[data-v-8304acbc]{font-size:13px;color:#94a3b8}[data-scada-theme] .property-group input[data-v-8304acbc],[data-scada-theme] .property-group textarea[data-v-8304acbc],[data-scada-theme] .property-group select[data-v-8304acbc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .property-group input[data-v-8304acbc]:focus,[data-scada-theme] .property-group textarea[data-v-8304acbc]:focus,[data-scada-theme] .property-group select[data-v-8304acbc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .property-group input[data-v-8304acbc]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-empty[data-v-8304acbc]{flex:1;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:13px}[data-scada-theme] .divider[data-v-8304acbc]{height:1px;background:#334155;margin:8px 0}[data-scada-theme] .toolbar[data-v-b3e0a4fc]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#1e293b;border-bottom:1px solid #334155}[data-scada-theme] .toolbar-left[data-v-b3e0a4fc]{display:flex;align-items:center;gap:24px}[data-scada-theme] .toolbar-left h2[data-v-b3e0a4fc]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .toolbar-right[data-v-b3e0a4fc]{display:flex;gap:12px}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc],[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{padding:8px 16px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]:hover{background:#2563eb}[data-scada-theme] .btn-close[data-v-b3e0a4fc]{width:36px;height:36px;padding:0;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;margin-left:8px}[data-scada-theme] .btn-close[data-v-b3e0a4fc]:hover{background:#475569;border-color:#64748b;color:#e2e8f0}[data-scada-theme] .close-icon[data-v-b3e0a4fc]{font-size:24px;line-height:1}[data-scada-theme] .menu-overlay[data-v-aa6fccf8]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0000004d;z-index:999}[data-scada-theme] .add-node-menu[data-v-aa6fccf8]{position:fixed;z-index:1000;background:#1e293b;border:1px solid #334155;border-radius:8px;box-shadow:0 4px 12px #0000004d;min-width:280px;max-width:320px}[data-scada-theme] .menu-header[data-v-aa6fccf8]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #334155;color:#e2e8f0;font-size:14px;font-weight:600}[data-scada-theme] .btn-close[data-v-aa6fccf8]{width:24px;height:24px;background:transparent;border:none;color:#94a3b8;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-aa6fccf8]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .menu-list[data-v-aa6fccf8]{padding:8px}[data-scada-theme] .menu-item[data-v-aa6fccf8]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .menu-item[data-v-aa6fccf8]:hover{background:#334155}[data-scada-theme] .menu-item-icon[data-v-aa6fccf8]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:18px;flex-shrink:0}[data-scada-theme] .node-icon-getProperty[data-v-aa6fccf8]{background:#1890ff1a}[data-scada-theme] .node-icon-setProperty[data-v-aa6fccf8]{background:#13c2c21a}[data-scada-theme] .node-icon-condition[data-v-aa6fccf8]{background:#faad141a}[data-scada-theme] .node-icon-httpRequest[data-v-aa6fccf8]{background:#722ed11a}[data-scada-theme] .node-icon-customCode[data-v-aa6fccf8]{background:#eb2f961a}[data-scada-theme] .node-icon-timer[data-v-aa6fccf8]{background:#52c41a1a}[data-scada-theme] .node-icon-clearTimer[data-v-aa6fccf8]{background:#ff4d4f1a}[data-scada-theme] .menu-item-info[data-v-aa6fccf8]{flex:1}[data-scada-theme] .menu-item-name[data-v-aa6fccf8]{font-size:14px;color:#e2e8f0;font-weight:500}[data-scada-theme] .menu-item-desc[data-v-aa6fccf8]{font-size:12px;color:#94a3b8;margin-top:2px}[data-scada-theme] .workflow-editor[data-v-649349a2]{display:flex;flex-direction:column;height:100vh;background:#0f172a;color:#e2e8f0}[data-scada-theme] .editor-main[data-v-649349a2]{display:flex;flex:1;overflow:hidden}[data-scada-theme] .canvas-area[data-v-649349a2]{flex:1;position:relative;overflow:hidden;background:#0f172a}[data-scada-theme] #workflow-container[data-v-649349a2]{width:100%;height:100%}[data-scada-theme] .workflow-dialog-overlay[data-v-4e7f6ab7]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;z-index:9999;display:flex;align-items:center;justify-content:center}[data-scada-theme] .workflow-dialog[data-v-4e7f6ab7]{width:100vw;height:100vh;background:#0f172a;overflow:hidden}.scada-layout[data-v-b0fa22a3]{width:100%;height:100%;min-height:100vh;display:flex;flex-direction:column;background:#1a1a2e}[data-scada-theme] .scada-canvas-container[data-v-b0fa22a3]{flex:1;display:flex;background:#0f172a;overflow:hidden;min-height:0}[data-scada-theme][data-v-b0fa22a3] .x6-node-selected{outline:2px solid #3b82f6;outline-offset:2px;box-shadow:0 0 0 4px #3b82f626,0 0 12px #3b82f64d;transition:outline .15s ease,box-shadow .15s ease}[data-scada-theme][data-v-b0fa22a3] .x6-node-selected rect,[data-scada-theme][data-v-b0fa22a3] .x6-node-selected circle,[data-scada-theme][data-v-b0fa22a3] .x6-node-selected ellipse{filter:brightness(1.05)}.scada-toast{position:fixed;top:20px;left:50%;transform:translate(-50%) translateY(-100px);padding:12px 24px;border-radius:6px;color:#fff;font-size:14px;font-weight:500;box-shadow:0 4px 12px #0000004d;z-index:9999;opacity:0;transition:all .3s ease;pointer-events:none}.scada-toast.show{transform:translate(-50%) translateY(0);opacity:1}.scada-toast-success{background:linear-gradient(135deg,#10b981,#059669)}.scada-toast-error{background:linear-gradient(135deg,#ef4444,#dc2626)}.scada-toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706)}@keyframes edge-flow-b0fa22a3{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}[data-scada-theme][data-v-b0fa22a3] .x6-edge path{transition:stroke .3s ease,stroke-width .3s ease}[data-scada-theme][data-v-b0fa22a3] .edge-flow-slow{animation:edge-flow-b0fa22a3 4s linear infinite}[data-scada-theme][data-v-b0fa22a3] .edge-flow-normal{animation:edge-flow-b0fa22a3 2s linear infinite}[data-scada-theme][data-v-b0fa22a3] .edge-flow-fast{animation:edge-flow-b0fa22a3 1s linear infinite}.scada-layout[data-scada-theme=dark]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;color:#e2e8f0!important;font-size:14px!important;line-height:1.5!important;box-sizing:border-box!important;margin:0!important;padding:0!important;border:none!important;display:flex!important;flex-direction:column!important;flex:1!important;width:100%!important;height:100%!important;min-height:100vh!important;background:#1a1a2e!important;overflow:hidden!important;position:relative!important}.scada-layout[data-scada-theme=dark] *,.scada-layout[data-scada-theme=dark] *:before,.scada-layout[data-scada-theme=dark] *:after{box-sizing:border-box!important;margin:0;padding:0}.scada-layout[data-scada-theme=dark]>*{box-sizing:border-box!important}.scada-layout[data-scada-theme=dark]>.scada-header,.scada-layout[data-scada-theme=dark]>.scada-footer{color:#e2e8f0!important;margin:0!important}.scada-layout[data-scada-theme=dark] .property-panel>.panel-header,.scada-layout[data-scada-theme=dark] .component-library>.library-header,.scada-layout[data-scada-theme=dark] .canvas-config-panel>.config-header{color:#e2e8f0!important;margin:0!important;padding:0!important}.scada-layout[data-scada-theme=dark] .scada-header h1,.scada-layout[data-scada-theme=dark] .scada-header h2,.scada-layout[data-scada-theme=dark] .scada-header h3,.scada-layout[data-scada-theme=dark] .scada-header h4{color:#e2e8f0!important;margin:0!important;padding:0!important;font-weight:600!important}.scada-layout[data-scada-theme=dark] .canvas-area input:not([class*=ant-]):not([type=range]):not([type=color]):not([type=checkbox]),.scada-layout[data-scada-theme=dark] .canvas-area select:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area textarea:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area button:not([class*=ant-]){-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;outline:none!important;border:none!important;background:none!important;margin:0!important;padding:0!important;color:inherit!important;font-family:inherit!important;font-size:inherit!important}.scada-layout[data-scada-theme=dark] .canvas-area label,.scada-layout[data-scada-theme=dark] .canvas-area span,.scada-layout[data-scada-theme=dark] .canvas-area p,.scada-layout[data-scada-theme=dark] .canvas-area div{color:inherit!important;font-family:inherit!important;line-height:normal!important}.scada-layout[data-scada-theme] ::-webkit-scrollbar{width:8px;height:8px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}.scada-layout[data-scada-theme] ::-webkit-scrollbar-corner{background:#0f172a}.scada-layout .x6-node-selected rect{stroke:#3b82f6!important;stroke-width:2!important;filter:drop-shadow(0 0 8px rgba(59,130,246,.6))!important}.scada-layout .x6-edge-selected path{stroke:#3b82f6!important;stroke-width:3!important}.scada-layout .x6-widget-selection-box{border:2px solid #3b82f6!important;background-color:#3b82f61a!important}.scada-layout[data-scada-theme] input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:linear-gradient(90deg,#475569,#334155);border-radius:2px;outline:none;opacity:.9;transition:opacity .2s}.scada-layout[data-scada-theme] input[type=range]:hover{opacity:1}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}
|
package/dist/scada-engine.es.js
CHANGED
|
@@ -12024,10 +12024,11 @@ const Ge = new gp(), hp = {
|
|
|
12024
12024
|
return;
|
|
12025
12025
|
}
|
|
12026
12026
|
try {
|
|
12027
|
-
if (o.onSave) {
|
|
12028
|
-
await o.onSave();
|
|
12027
|
+
if (console.log("[ScadaCanvas] handleSave 被调用"), console.log("[ScadaCanvas] props.onSave:", o.onSave), o.onSave) {
|
|
12028
|
+
console.log("[ScadaCanvas] 调用自定义 onSave 回调"), await o.onSave(), console.log("[ScadaCanvas] 自定义 onSave 回调执行完成");
|
|
12029
12029
|
return;
|
|
12030
12030
|
}
|
|
12031
|
+
console.log("[ScadaCanvas] 没有自定义回调,执行默认下载");
|
|
12031
12032
|
const A = {
|
|
12032
12033
|
version: "1.0.0",
|
|
12033
12034
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -12354,7 +12355,7 @@ const Ge = new gp(), hp = {
|
|
|
12354
12355
|
}, null, 8, ["visible", "scada-graph"])
|
|
12355
12356
|
]));
|
|
12356
12357
|
}
|
|
12357
|
-
}), yp = /* @__PURE__ */ ie(bp, [["__scopeId", "data-v-
|
|
12358
|
+
}), yp = /* @__PURE__ */ ie(bp, [["__scopeId", "data-v-b0fa22a3"]]), Cp = {
|
|
12358
12359
|
ScadaCanvas: yp,
|
|
12359
12360
|
PropertyPanel: go,
|
|
12360
12361
|
Header: Q0,
|
package/dist/scada-engine.umd.js
CHANGED
|
@@ -50,4 +50,4 @@
|
|
|
50
50
|
`;if(k+=x.map($=>" • "+$).join(`
|
|
51
51
|
`),k+=`
|
|
52
52
|
|
|
53
|
-
是否继续保存?`,!confirm(k))return}const y=prompt("请输入流程名称:","未命名流程");if(!y||!y.trim())return;const v=t.toJSON(),A=t.getNodes().map(k=>({id:k.id,shape:k.shape,position:k.getPosition(),size:k.getSize(),attrs:k.getAttrs(),data:k.getData()})),F=t.getEdges().map(k=>({id:k.id,source:k.getSourceCellId(),target:k.getTargetCellId(),attrs:k.getAttrs(),data:k.getData()})),C={id:"workflow_"+Date.now(),name:y.trim(),data:{...v,nodes:A,edges:F},createdAt:Date.now(),updatedAt:Date.now()};try{const k=localStorage.getItem("saved-workflows"),$=k?JSON.parse(k):[];$.push(C),localStorage.setItem("saved-workflows",JSON.stringify($)),alert("✓ 流程保存成功!"),console.log("流程已保存:",C)}catch(k){console.error("保存流程失败:",k),alert("保存失败,请重试")}};e.onMounted(()=>{n(),window.addEventListener("resize",c)});const c=()=>{!t||!l.value||t.resize(l.value.clientWidth,l.value.clientHeight)};return e.onBeforeUnmount(()=>{window.removeEventListener("resize",c);const p=x=>{if(x.key==="Delete"||x.key==="Backspace"){if(!t)return;const y=t.getSelectedCells();y.length&&(x.preventDefault(),t.removeCells(y),s.value&&y.includes(s.value.cell)&&(s.value=null))}};document.removeEventListener("keydown",p),t&&t.dispose()}),(p,x)=>(e.openBlock(),e.createElementBlock("div",K1,[e.createVNode(O1,{"show-close":g.showClose,onClear:u,onValidate:B,onSave:V,onClose:x[0]||(x[0]=y=>p.$emit("close"))},null,8,["show-close"]),e.createElementVNode("div",J1,[e.createElementVNode("div",Z1,[e.createElementVNode("div",{id:"workflow-container",ref_key:"containerRef",ref:l},null,512)]),e.createVNode(R1,{"selected-cell":s.value,"onUpdate:label":i},null,8,["selected-cell"])]),e.createVNode(X1,{visible:h.value,position:m.value,"node-types":o.value,onClose:x[1]||(x[1]=y=>h.value=!1),onSelect:f},null,8,["visible","position","node-types"])]))}}),[["__scopeId","data-v-649349a2"]]),ep={key:0,class:"workflow-dialog-overlay"},tp={class:"workflow-dialog"},op=oe(e.defineComponent({__name:"WorkflowDialog",props:{visible:{type:Boolean},scadaGraph:{default:null}},emits:["update:visible","close"],setup(g,{emit:E}){const o=g,l=E;e.watch(()=>o.visible,h=>{h?document.body.style.overflow="hidden":document.body.style.overflow=""});const t=()=>{l("update:visible",!1),l("close")},s=h=>{h.key==="Escape"&&o.visible&&t()};return typeof window<"u"&&window.addEventListener("keydown",s),(h,m)=>g.visible?(e.openBlock(),e.createElementBlock("div",ep,[e.createElementVNode("div",tp,[e.createVNode(Q1,{"scada-graph":g.scadaGraph,"show-close":!0,onClose:t},null,8,["scada-graph"])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-4e7f6ab7"]]);class np{constructor(){Ue(this,"animations",new Map)}startAnimation(E,o){if(!E||o.type==="none")return;this.stopAnimation(E.id);const l=E.id;let t=null;switch(o.type){case"blink":t=this.createBlinkAnimation(E,o);break;case"scale":t=this.createScaleAnimation(E,o);break;case"rotate":t=this.createRotateAnimation(E,o);break;case"float":t=this.createFloatAnimation(E,o);break;case"pulse":t=this.createPulseAnimation(E,o);break}t&&this.animations.set(l,t)}stopAnimation(E){const o=this.animations.get(E);o&&(o.stop&&o.stop(),o.intervalId&&clearInterval(o.intervalId),this.animations.delete(E))}createBlinkAnimation(E,o){const l=E.getAttrByPath("body/opacity")||1;let t=!0;const s=setInterval(()=>{t=!t,E.setAttrByPath("body/opacity",t?l:.2),o.loop||(clearInterval(s),E.setAttrByPath("body/opacity",l))},o.duration/2);return{intervalId:s,stop:()=>{clearInterval(s),E.setAttrByPath("body/opacity",l)}}}createScaleAnimation(E,o){const l=E.getSize();let t=!0;const s=.05;let h=1;const m=setInterval(()=>{t?(h+=s,h>=1.2&&(t=!1)):(h-=s,h<=.8&&(t=!0)),E.resize(l.width*h,l.height*h),!o.loop&&h>=.99&&h<=1.01&&(clearInterval(m),E.resize(l.width,l.height))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.resize(l.width,l.height)}}}createRotateAnimation(E,o){let l=0;const t=360/(o.duration/50),s=setInterval(()=>{l=(l+t)%360,E.rotate(l,{absolute:!0}),!o.loop&&l>=360&&(clearInterval(s),E.rotate(0,{absolute:!0}))},50);return{intervalId:s,stop:()=>{clearInterval(s),E.rotate(0,{absolute:!0})}}}createFloatAnimation(E,o){const l=E.position();let t=!0;const s=2;let h=l.y;const m=setInterval(()=>{t?(h-=s,h<=l.y-10&&(t=!1)):(h+=s,h>=l.y+10&&(t=!0)),E.position(l.x,h),!o.loop&&Math.abs(h-l.y)<1&&(clearInterval(m),E.position(l.x,l.y))},o.duration/40);return{intervalId:m,stop:()=>{clearInterval(m),E.position(l.x,l.y)}}}createPulseAnimation(E,o){const l=E.getAttrByPath("body/fill"),t=E.getAttrByPath("body/stroke");let s=0,h=!0;const m=setInterval(()=>{h?(s+=.1,s>=1&&(h=!1)):(s-=.1,s<=0&&(h=!0)),E.setAttrByPath("body/opacity",.5+s*.5),!o.loop&&s<=.05&&(clearInterval(m),E.setAttrByPath("body/fill",l),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.setAttrByPath("body/fill",l),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1)}}}clearAll(){this.animations.forEach((E,o)=>{this.stopAnimation(o)}),this.animations.clear()}}const Be=new np,ap={class:"scada-layout","data-scada-theme":"dark"},rp={class:"scada-canvas-container"},Xo=oe(e.defineComponent({name:"ScadaCanvas",inheritAttrs:!0,__name:"ScadaCanvas",props:{authCode:{default:""},customFooter:{default:void 0},previewMode:{type:Boolean,default:!1},onSave:{type:Function,default:void 0}},setup(g,{expose:E}){const o=g,l=e.ref(null),t=e.ref(null),s=e.ref(null),h=e.ref(0),m=e.ref(null),d=e.ref(!1);let a=null;e.onMounted(()=>{var U,Q;if(!((U=l.value)!=null&&U.containerRef))return;const N=J.getConfig();ge.Graph.registerEdge("animated-edge",{inherit:"edge",markup:[{tagName:"path",selector:"line",attrs:{fill:"none"}},{tagName:"path",selector:"wrap",attrs:{fill:"none",stroke:"transparent",strokeWidth:20}},{tagName:"circle",selector:"circle"}],attrs:{line:{connection:!0,stroke:"#10b981",strokeWidth:2,targetMarker:{name:"block",width:8,height:6}},wrap:{connection:!0,strokeLinecap:"round",strokeLinejoin:"round"}}},!0);const I=l.value.containerRef,D=N.size.width,_=N.size.height;(M=>{I.style.width=`${D}px`,I.style.height=`${_}px`,I.style.transform=`scale(${M})`,I.style.transformOrigin="center center"})(N.zoom.scale),a=new ge.Graph({container:I,width:D,height:_,background:N.background.image?{color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}:{color:N.background.color||"#1e293b"},grid:N.grid.enabled?{size:N.grid.size,visible:!0,type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}:!1,interacting:{nodeMovable:!0},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:{name:"orth",args:{padding:10}},connector:{name:"rounded",args:{radius:8}},snap:N.magnetism.enabled?{radius:N.magnetism.threshold||10}:!1,allowBlank:!1,allowLoop:!1,allowNode:!1,allowEdge:!1,highlight:!0,createEdge(){return a.createEdge({shape:"animated-edge",zIndex:0})},validateConnection({targetMagnet:M}){return!!M}}}),a.use(new Gt.Selection({enabled:!0,movable:!0,rubberband:!0,showNodeSelectionBox:!1,showEdgeSelectionBox:!1,multiple:!0,pointerEvents:"none"})),N.guides.enabled&&a.use(new nn.Snapline({enabled:!0,sharp:!0,clean:!0}));const z=eo(Ie.SCADA_EDITOR_DATA);if(((Q=z==null?void 0:z.cells)==null?void 0:Q.length)>0)try{const M=z.cells.map(j=>{var ne;return j.position&&typeof j.position=="object"&&(typeof j.position.x!="number"||typeof j.position.y!="number")&&(j.position={x:100,y:100}),(j.shape==="edge"||j.shape==="animated-edge")&&(j.router==="manhattan"||((ne=j.router)==null?void 0:ne.name)==="manhattan")&&(j.router={name:"orth",args:{padding:10}}),j});a.fromJSON({cells:M}),a.getEdges().forEach(j=>{var pe;const ne=j.getData();(pe=ne==null?void 0:ne.animation)!=null&&pe.enabled&&V(j,ne.animation)})}catch(M){console.error("恢复画布数据失败,清空缓存:",M),sessionStorage.removeItem(Ie.SCADA_EDITOR_DATA)}a.on("selection:changed",({selected:M})=>{var ne,pe;const j=M?M.filter(ae=>ae.isNode()):[];if(h.value=j.length,M&&M.length>0){const ae=M[0];if(ae.isNode())t.value=ae,s.value=null;else if(ae.isEdge()){s.value=ae,t.value=null;const se=ae.getAttrs();ae.data={...ae.data,originalAttrs:se},ae.attr("line/stroke","#3b82f6")}}else{if(s.value&&((ne=s.value.data)!=null&&ne.originalAttrs)){const ae=s.value.data.originalAttrs;s.value.attr("line/stroke",((pe=ae.line)==null?void 0:pe.stroke)||"#10b981")}t.value=null,s.value=null}}),a.on("edge:click",({edge:M})=>{a.select(M)}),a.on("blank:click",()=>{s.value=null,t.value=null}),a.on("node:change:position",()=>{}),a.on("node:change:size",()=>{}),a.on("node:change:data",({node:M})=>{const j=M.getData();if(j.animation)if(j.animation.enabled===!0){const ne={type:j.animation.type||"none",duration:j.animation.duration||1e3,loop:j.animation.loop!==!1};Be.startAnimation(M,ne)}else Be.stopAnimation(M.id)}),a.on("edge:change:data",({edge:M})=>{const j=M.getData();j!=null&&j.animation&&V(M,j.animation)});const W=M=>{if(M.key==="Delete"&&a){if(t.value){const j=t.value.id;Be.stopAnimation(j),a.removeNode(j),t.value=null}else if(s.value){const j=s.value.id;a.removeEdge(j),s.value=null}}};document.addEventListener("keydown",W),e.onUnmounted(()=>{document.removeEventListener("keydown",W)})}),e.onUnmounted(()=>{if(a){Be.clearAll();const N={cells:a.toJSON().cells};ot(Ie.SCADA_EDITOR_DATA,N),a.dispose()}}),e.watch(()=>J.getConfig(),N=>{var D;if(!a)return;N.background.image?a.drawBackground({color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}):a.drawBackground({color:N.background.color||"#1e293b"});const I=(D=l.value)==null?void 0:D.containerRef;I&&(I.style.transform=`scale(${N.zoom.scale})`,I.style.transformOrigin="center center",a.resize(N.size.width,N.size.height),I.style.width=`${N.size.width}px`,I.style.height=`${N.size.height}px`),N.grid.enabled?(a.drawGrid({type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}),a.showGrid()):a.hideGrid(),N.grid.enabled&&N.grid.size&&a.setGridSize(N.grid.size),a.translate(N.offset.x,N.offset.y)},{deep:!0});const n=e.ref({}),r=(N,I)=>(n.value[N]||(n.value[N]=0),n.value[N]++,`${I}_${n.value[N]}`),i=N=>{var U,Q,M,j;if(!a)return;const I=Pe.getComponent(N);if(!I){console.error(`未找到组件配置: ${N}`);return}const D=r(N,I.metadata.name),_={enabled:!1,type:"none",duration:1e3,loop:!0},w=ao(50,50,400,300),z={x:w.x,y:w.y,shape:I.shape,width:I.width,height:I.height,label:I.label,attrs:I.attrs,ports:I.ports,data:{...I.data,componentType:N,componentName:D,props:I.props,animation:_,originalStroke:((Q=(U=I.attrs)==null?void 0:U.body)==null?void 0:Q.stroke)||"#2563eb",originalStrokeWidth:((j=(M=I.attrs)==null?void 0:M.body)==null?void 0:j.strokeWidth)||2}},W=a.addNode(z);a.cleanSelection(),a.select(W)},f=N=>{if(t.value&&(N.attrs&&Object.keys(N.attrs).forEach(I=>{const D=N.attrs[I];typeof D=="object"?Object.keys(D).forEach(_=>{t.value.attr(`${I}/${_}`,D[_])}):t.value.attr(I,D)}),N.position&&(typeof N.position.x=="number"&&typeof N.position.y=="number"?t.value.setPosition(N.position):console.error("position 数据格式错误:",N.position)),N.size&&(typeof N.size.width=="number"&&typeof N.size.height=="number"?t.value.setSize(N.size):console.error("size 数据格式错误:",N.size)),N.data)){const I={...N.data};delete I.position,delete I.size,t.value.store.set("data",I)}},u=()=>{if(!t.value||!a)return;const N=t.value.id;Be.stopAnimation(N),a.removeNode(N),t.value=null},b=N=>{if(s.value){if(N.attrs){Object.keys(N.attrs).forEach(D=>{const _=N.attrs[D];typeof _=="object"?Object.keys(_).forEach(w=>{var z,W;s.value.attr(`${D}/${w}`,_[w]),(W=(z=s.value.data)==null?void 0:z.originalAttrs)!=null&&W[D]&&(s.value.data.originalAttrs[D][w]=_[w])}):s.value.attr(D,_)});const I=s.value.getAttrs();s.value.data={...s.value.data,originalAttrs:I},s.value.attr("line/stroke","#3b82f6")}N.router&&s.value.setRouter(N.router),N.connector&&s.value.setConnector(N.connector),N.animation&&V(s.value,N.animation),N.data&&s.value.setData({...s.value.data,...N.data})}},B=()=>{!s.value||!a||(a.removeEdge(s.value.id),s.value=null)},V=(N,I)=>{if(!N||typeof N.attr!="function"){console.warn("applyEdgeAnimation: edge 对象无效",N);return}if(!I||!I.enabled){N.attr("line/strokeDasharray",void 0),typeof N.removeAttr=="function"&&N.removeAttr("line/class"),N.attr("circle",void 0),typeof N.stopTransition=="function"&&N.stopTransition("attrs/circle/atConnectionRatio");return}const D=I.duration||2e3;N.attr("circle",{r:4,atConnectionRatio:0,fill:{type:"radialGradient",stops:[{offset:"0%",color:"#FFF"},{offset:"100%",color:N.attr("line/stroke")||"#10b981"}]},stroke:N.attr("line/stroke")||"#10b981",strokeWidth:1});const _=()=>{N.attr("circle/atConnectionRatio",0,{silent:!0}),N.transition("attrs/circle/atConnectionRatio",1,{delay:0,duration:D,timing:"linear",complete:()=>{_()}})};_()},c=()=>{a&&confirm("确定要清空画布吗?")&&(Be.clearAll(),a.clearCells(),t.value=null,to(Ie.SCADA_EDITOR_DATA))},p=()=>{if(!a)return;const N=J.getConfig().zoom.scale,I=Math.min(5,N+.1);J.setZoom(I)},x=()=>{if(!a)return;const N=J.getConfig().zoom.scale,I=Math.max(.1,N-.1);J.setZoom(I)},y=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.min(...N.map(D=>D.getPosition().x));N.forEach(D=>{D.setPosition({x:I,y:D.getPosition().y})})},v=()=>{if(!a)return;const N=a.getSelectedCells().filter(_=>_.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=N.map(_=>_.getPosition().x+_.getSize().width/2),D=I.reduce((_,w)=>_+w,0)/I.length;N.forEach(_=>{const w=D-_.getSize().width/2;_.setPosition({x:w,y:_.getPosition().y})})},A=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.max(...N.map(D=>D.getPosition().x+D.getSize().width));N.forEach(D=>{const _=I-D.getSize().width;D.setPosition({x:_,y:D.getPosition().y})})},F=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.min(...N.map(D=>D.getPosition().y));N.forEach(D=>{D.setPosition({x:D.getPosition().x,y:I})})},S=()=>{if(!a)return;const N=a.getSelectedCells().filter(_=>_.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=N.map(_=>_.getPosition().y+_.getSize().height/2),D=I.reduce((_,w)=>_+w,0)/I.length;N.forEach(_=>{const w=D-_.getSize().height/2;_.setPosition({x:_.getPosition().x,y:w})})},C=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.max(...N.map(D=>D.getPosition().y+D.getSize().height));N.forEach(D=>{const _=I-D.getSize().height;D.setPosition({x:D.getPosition().x,y:_})})},k=()=>{if(!a)return;const N=a.getSelectedCells().filter(W=>W.isNode());if(N.length<3){re("请选择至少三个节点","warning");return}const I=N.sort((W,U)=>W.getPosition().x-U.getPosition().x),D=I[0],z=(I[I.length-1].getPosition().x-D.getPosition().x)/(I.length-1);I.forEach((W,U)=>{if(U===0||U===I.length-1)return;const Q=D.getPosition().x+z*U;W.setPosition({x:Q,y:W.getPosition().y})})},$=()=>{if(!a)return;const N=a.getSelectedCells().filter(W=>W.isNode());if(N.length<3){re("请选择至少三个节点","warning");return}const I=N.sort((W,U)=>W.getPosition().y-U.getPosition().y),D=I[0],z=(I[I.length-1].getPosition().y-D.getPosition().y)/(I.length-1);I.forEach((W,U)=>{if(U===0||U===I.length-1)return;const Q=D.getPosition().y+z*U;W.setPosition({x:W.getPosition().x,y:Q})})},T=async()=>{if(!a){re("画布未初始化","error");return}try{if(o.onSave){await o.onSave();return}const N={version:"1.0.0",timestamp:new Date().toISOString(),config:{size:J.getConfig().size,background:J.getConfig().background,grid:J.getConfig().grid,guides:J.getConfig().guides,magnetism:J.getConfig().magnetism,zoom:J.getConfig().zoom},cells:a.toJSON().cells},I=new Blob([JSON.stringify(N,null,2)],{type:"application/json"}),D=URL.createObjectURL(I),_=document.createElement("a"),w=`scada-canvas-${new Date().getTime()}.json`;_.href=D,_.download=w,_.click(),URL.revokeObjectURL(D),re("保存成功","success")}catch(N){console.error("保存失败",N),re("保存失败,请查看控制台","error")}},H=()=>{m.value&&m.value.click()},L=N=>{var w;const D=(w=N.target.files)==null?void 0:w[0];if(!D){re("请选择文件","error");return}const _=new FileReader;_.onload=z=>{var W;try{const U=JSON.parse((W=z.target)==null?void 0:W.result);if(!U.cells){re("无效的JSON文件格式","error");return}if(!confirm("导入将清空当前画布,是否继续?"))return;if(a){if(a.clearCells(),a.fromJSON({cells:U.cells}),a.getEdges().forEach(Q=>{var j;const M=Q.getData();(j=M==null?void 0:M.animation)!=null&&j.enabled&&V(Q,M.animation)}),U.config&&J.updateConfig(U.config),U.workflows&&Array.isArray(U.workflows)&&U.workflows.length>0)try{const Q=localStorage.getItem("saved-workflows"),M=Q?JSON.parse(Q):[];let j=0,ne=0;U.workflows.forEach(pe=>{const ae=M.findIndex(se=>se.id===pe.id);ae>=0?(M[ae]={...pe,updatedAt:Date.now()},ne++):(M.push(pe),j++)}),localStorage.setItem("saved-workflows",JSON.stringify(M)),re(`导入成功 画布已加载,流程: 新增${j}个,更新${ne}个`,"success")}catch(Q){console.error("导入流程数据失败:",Q),re("画布导入成功, 但流程数据导入失败","warning")}else re("导入成功","success");m.value&&(m.value.value="")}}catch(U){console.error("导入失败",U),re("导入失败,JSON格式错误","error"),m.value&&(m.value.value="")}},_.readAsText(D)},X=()=>{if(!a)return;const N={cells:a.toJSON().cells,config:{width:J.getConfig().size.width,height:J.getConfig().size.height,background:J.getConfig().background,grid:J.getConfig().grid}};ot(Ie.SCADA_PREVIEW_DATA,N)},Z=()=>{d.value=!0},te=()=>{if(!a){re("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:at(rt()),config:{size:J.getConfig().size,background:J.getConfig().background,grid:J.getConfig().grid,guides:J.getConfig().guides,magnetism:J.getConfig().magnetism,zoom:J.getConfig().zoom},cells:a.toJSON().cells,nodes:a.getNodes().map(_=>({id:_.id,type:_.shape,position:_.getPosition(),size:_.getSize(),label:_.attr("label/text"),data:_.getData()})),edges:a.getEdges().map(_=>({id:_.id,source:_.getSourceCellId(),target:_.getTargetCellId()})),workflows:[]},I=new Set;if(a.getNodes().forEach(_=>{const w=_.getData();w!=null&&w.events&&Array.isArray(w.events)&&w.events.forEach(z=>{var W;z.action==="callProcess"&&((W=z.params)!=null&&W.processId)&&I.add(z.params.processId)})}),I.size>0)try{const _=localStorage.getItem("saved-workflows");if(_){const w=JSON.parse(_);N.workflows=w.filter(z=>I.has(z.id))}}catch(_){console.error("加载流程数据失败:",_)}const D=oo(N,"scada-export");re(`已导出为 ${D}`,"success")}catch(N){console.error("导出失败",N),re("导出失败,请查看控制台","error")}};return E({save:T,import:H,export:te,preview:X,workflow:Z,zoomIn:p,zoomOut:x,clearAll:c,alignLeft:y,alignCenter:v,alignRight:A,alignTop:F,alignMiddle:S,alignBottom:C,distributeHorizontal:k,distributeVertical:$,addNode:i,updateNode:f,deleteNode:u,getSelectedNode:()=>t.value,selectNode:N=>{if(!a)return!1;const I=a.getCellById(N);return I?(a.select(I),!0):!1},clearSelection:()=>{a&&(a.unselect(a.getSelectedCells()),t.value=null)},getGraph:()=>a,getCanvasData:()=>a?{version:"1.0.0",timestamp:at(rt()),config:J.getConfig(),cells:a.toJSON().cells,nodes:a.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})),edges:a.getEdges().map(N=>({id:N.id,source:N.getSourceCellId(),target:N.getTargetCellId()}))}:null,loadCanvasData:N=>{if(!a)return!1;try{return a.clearCells(),a.fromJSON({cells:N.cells}),N.config&&J.updateConfig(N.config),!0}catch(I){return console.error("加载画布数据失败:",I),!1}},getAllNodes:()=>a?a.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})):[],getNodeById:N=>{if(!a)return null;const I=a.getCellById(N);if(!I||!I.isNode())return null;const D=I;return{id:D.id,type:D.shape,position:D.getPosition(),size:D.getSize(),label:D.attr("label/text"),data:D.getData()}},getConfigManager:()=>J,updateCanvasConfig:N=>{J.updateConfig(N)},setZoom:N=>{J.setZoom(N)},setCanvasSize:(N,I)=>{J.updateSize({width:N,height:I})},setBackgroundColor:N=>{J.updateBackground({color:N})},getAnimationEngine:()=>Be}),(N,I)=>(e.openBlock(),e.createElementBlock("div",ap,[e.createVNode(Ge,{"selected-nodes-count":h.value,onSave:T,onImport:H,onWorkflow:Z,onPreview:X,onExport:te,onZoomIn:p,onZoomOut:x,onClearAll:c,onAlignLeft:y,onAlignCenter:v,onAlignRight:A,onAlignTop:F,onAlignMiddle:S,onAlignBottom:C,onDistributeHorizontal:k,onDistributeVertical:$},null,8,["selected-nodes-count"]),e.createElementVNode("input",{ref_key:"fileInputRef",ref:m,type:"file",accept:".json",style:{display:"none"},onChange:L},null,544),e.createElementVNode("div",rp,[e.createVNode(Xe,{onAddComponent:i}),e.createVNode(Kn,{ref_key:"canvasAreaRef",ref:l},null,512),e.createVNode(lt,{ref:"propertyPanelRef","selected-node":t.value,"selected-edge":s.value,onUpdateNode:f,onDeleteNode:u,onUpdateEdge:b,onDeleteEdge:B},null,8,["selected-node","selected-edge"])]),e.createVNode(Ed,{"auth-code":g.authCode,"custom-footer":g.customFooter},null,8,["auth-code","custom-footer"]),e.createVNode(op,{visible:d.value,"onUpdate:visible":I[0]||(I[0]=D=>d.value=D),"scada-graph":e.unref(a),onClose:I[1]||(I[1]=D=>d.value=!1)},null,8,["visible","scada-graph"])]))}}),[["__scopeId","data-v-f1c65631"]]),lp={ScadaCanvas:Xo,PropertyPanel:lt,Header:Ge,ComponentLibrary:Xe,CanvasConfigPanel:Ye,BindingCard:Qe,EventCard:Je,BasicPropertiesTab:Ke,AttributeConfigDialog:et,CustomCodeDialog:tt},Yo=g=>{Object.entries(lp).forEach(([E,o])=>{g.component(E,o)})},sp={install:Yo,version:"1.0.0"};q.AttributeConfigDialog=et,q.BasicComponents=wn,q.BasicPropertiesTab=Ke,q.BindingCard=Qe,q.CanvasConfigPanel=Ye,q.ComponentLibrary=Xe,q.CustomCodeDialog=tt,q.EventCard=Je,q.Header=Ge,q.IoTComponents=Sn,q.PropertyPanel=lt,q.STORAGE_KEYS=Ie,q.ScadaCanvas=Xo,q.animationEngine=Be,q.canvasConfigItems=zn,q.canvasConfigManager=J,q.componentRegistry=Pe,q.default=sp,q.defaultCanvasConfig=je,q.exportToJSON=oo,q.formatTimestamp=at,q.generateEventId=no,q.generateNodeId=dc,q.generateUniqueId=nt,q.getCurrentTimestamp=rt,q.install=Yo,q.loadFromLocal=ic,q.loadFromSession=eo,q.randomPosition=ao,q.removeFromLocal=cc,q.removeFromSession=to,q.saveToLocal=sc,q.saveToSession=ot,q.showMessage=re,q.sizePresetMap=Re,Object.defineProperties(q,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
53
|
+
是否继续保存?`,!confirm(k))return}const y=prompt("请输入流程名称:","未命名流程");if(!y||!y.trim())return;const v=t.toJSON(),A=t.getNodes().map(k=>({id:k.id,shape:k.shape,position:k.getPosition(),size:k.getSize(),attrs:k.getAttrs(),data:k.getData()})),F=t.getEdges().map(k=>({id:k.id,source:k.getSourceCellId(),target:k.getTargetCellId(),attrs:k.getAttrs(),data:k.getData()})),C={id:"workflow_"+Date.now(),name:y.trim(),data:{...v,nodes:A,edges:F},createdAt:Date.now(),updatedAt:Date.now()};try{const k=localStorage.getItem("saved-workflows"),$=k?JSON.parse(k):[];$.push(C),localStorage.setItem("saved-workflows",JSON.stringify($)),alert("✓ 流程保存成功!"),console.log("流程已保存:",C)}catch(k){console.error("保存流程失败:",k),alert("保存失败,请重试")}};e.onMounted(()=>{n(),window.addEventListener("resize",c)});const c=()=>{!t||!l.value||t.resize(l.value.clientWidth,l.value.clientHeight)};return e.onBeforeUnmount(()=>{window.removeEventListener("resize",c);const p=x=>{if(x.key==="Delete"||x.key==="Backspace"){if(!t)return;const y=t.getSelectedCells();y.length&&(x.preventDefault(),t.removeCells(y),s.value&&y.includes(s.value.cell)&&(s.value=null))}};document.removeEventListener("keydown",p),t&&t.dispose()}),(p,x)=>(e.openBlock(),e.createElementBlock("div",K1,[e.createVNode(O1,{"show-close":g.showClose,onClear:u,onValidate:B,onSave:V,onClose:x[0]||(x[0]=y=>p.$emit("close"))},null,8,["show-close"]),e.createElementVNode("div",J1,[e.createElementVNode("div",Z1,[e.createElementVNode("div",{id:"workflow-container",ref_key:"containerRef",ref:l},null,512)]),e.createVNode(R1,{"selected-cell":s.value,"onUpdate:label":i},null,8,["selected-cell"])]),e.createVNode(X1,{visible:h.value,position:m.value,"node-types":o.value,onClose:x[1]||(x[1]=y=>h.value=!1),onSelect:f},null,8,["visible","position","node-types"])]))}}),[["__scopeId","data-v-649349a2"]]),ep={key:0,class:"workflow-dialog-overlay"},tp={class:"workflow-dialog"},op=oe(e.defineComponent({__name:"WorkflowDialog",props:{visible:{type:Boolean},scadaGraph:{default:null}},emits:["update:visible","close"],setup(g,{emit:E}){const o=g,l=E;e.watch(()=>o.visible,h=>{h?document.body.style.overflow="hidden":document.body.style.overflow=""});const t=()=>{l("update:visible",!1),l("close")},s=h=>{h.key==="Escape"&&o.visible&&t()};return typeof window<"u"&&window.addEventListener("keydown",s),(h,m)=>g.visible?(e.openBlock(),e.createElementBlock("div",ep,[e.createElementVNode("div",tp,[e.createVNode(Q1,{"scada-graph":g.scadaGraph,"show-close":!0,onClose:t},null,8,["scada-graph"])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-4e7f6ab7"]]);class np{constructor(){Ue(this,"animations",new Map)}startAnimation(E,o){if(!E||o.type==="none")return;this.stopAnimation(E.id);const l=E.id;let t=null;switch(o.type){case"blink":t=this.createBlinkAnimation(E,o);break;case"scale":t=this.createScaleAnimation(E,o);break;case"rotate":t=this.createRotateAnimation(E,o);break;case"float":t=this.createFloatAnimation(E,o);break;case"pulse":t=this.createPulseAnimation(E,o);break}t&&this.animations.set(l,t)}stopAnimation(E){const o=this.animations.get(E);o&&(o.stop&&o.stop(),o.intervalId&&clearInterval(o.intervalId),this.animations.delete(E))}createBlinkAnimation(E,o){const l=E.getAttrByPath("body/opacity")||1;let t=!0;const s=setInterval(()=>{t=!t,E.setAttrByPath("body/opacity",t?l:.2),o.loop||(clearInterval(s),E.setAttrByPath("body/opacity",l))},o.duration/2);return{intervalId:s,stop:()=>{clearInterval(s),E.setAttrByPath("body/opacity",l)}}}createScaleAnimation(E,o){const l=E.getSize();let t=!0;const s=.05;let h=1;const m=setInterval(()=>{t?(h+=s,h>=1.2&&(t=!1)):(h-=s,h<=.8&&(t=!0)),E.resize(l.width*h,l.height*h),!o.loop&&h>=.99&&h<=1.01&&(clearInterval(m),E.resize(l.width,l.height))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.resize(l.width,l.height)}}}createRotateAnimation(E,o){let l=0;const t=360/(o.duration/50),s=setInterval(()=>{l=(l+t)%360,E.rotate(l,{absolute:!0}),!o.loop&&l>=360&&(clearInterval(s),E.rotate(0,{absolute:!0}))},50);return{intervalId:s,stop:()=>{clearInterval(s),E.rotate(0,{absolute:!0})}}}createFloatAnimation(E,o){const l=E.position();let t=!0;const s=2;let h=l.y;const m=setInterval(()=>{t?(h-=s,h<=l.y-10&&(t=!1)):(h+=s,h>=l.y+10&&(t=!0)),E.position(l.x,h),!o.loop&&Math.abs(h-l.y)<1&&(clearInterval(m),E.position(l.x,l.y))},o.duration/40);return{intervalId:m,stop:()=>{clearInterval(m),E.position(l.x,l.y)}}}createPulseAnimation(E,o){const l=E.getAttrByPath("body/fill"),t=E.getAttrByPath("body/stroke");let s=0,h=!0;const m=setInterval(()=>{h?(s+=.1,s>=1&&(h=!1)):(s-=.1,s<=0&&(h=!0)),E.setAttrByPath("body/opacity",.5+s*.5),!o.loop&&s<=.05&&(clearInterval(m),E.setAttrByPath("body/fill",l),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.setAttrByPath("body/fill",l),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1)}}}clearAll(){this.animations.forEach((E,o)=>{this.stopAnimation(o)}),this.animations.clear()}}const Be=new np,ap={class:"scada-layout","data-scada-theme":"dark"},rp={class:"scada-canvas-container"},Xo=oe(e.defineComponent({name:"ScadaCanvas",inheritAttrs:!0,__name:"ScadaCanvas",props:{authCode:{default:""},customFooter:{default:void 0},previewMode:{type:Boolean,default:!1},onSave:{type:Function,default:void 0}},setup(g,{expose:E}){const o=g,l=e.ref(null),t=e.ref(null),s=e.ref(null),h=e.ref(0),m=e.ref(null),d=e.ref(!1);let a=null;e.onMounted(()=>{var U,Q;if(!((U=l.value)!=null&&U.containerRef))return;const N=J.getConfig();ge.Graph.registerEdge("animated-edge",{inherit:"edge",markup:[{tagName:"path",selector:"line",attrs:{fill:"none"}},{tagName:"path",selector:"wrap",attrs:{fill:"none",stroke:"transparent",strokeWidth:20}},{tagName:"circle",selector:"circle"}],attrs:{line:{connection:!0,stroke:"#10b981",strokeWidth:2,targetMarker:{name:"block",width:8,height:6}},wrap:{connection:!0,strokeLinecap:"round",strokeLinejoin:"round"}}},!0);const I=l.value.containerRef,D=N.size.width,_=N.size.height;(M=>{I.style.width=`${D}px`,I.style.height=`${_}px`,I.style.transform=`scale(${M})`,I.style.transformOrigin="center center"})(N.zoom.scale),a=new ge.Graph({container:I,width:D,height:_,background:N.background.image?{color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}:{color:N.background.color||"#1e293b"},grid:N.grid.enabled?{size:N.grid.size,visible:!0,type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}:!1,interacting:{nodeMovable:!0},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:{name:"orth",args:{padding:10}},connector:{name:"rounded",args:{radius:8}},snap:N.magnetism.enabled?{radius:N.magnetism.threshold||10}:!1,allowBlank:!1,allowLoop:!1,allowNode:!1,allowEdge:!1,highlight:!0,createEdge(){return a.createEdge({shape:"animated-edge",zIndex:0})},validateConnection({targetMagnet:M}){return!!M}}}),a.use(new Gt.Selection({enabled:!0,movable:!0,rubberband:!0,showNodeSelectionBox:!1,showEdgeSelectionBox:!1,multiple:!0,pointerEvents:"none"})),N.guides.enabled&&a.use(new nn.Snapline({enabled:!0,sharp:!0,clean:!0}));const z=eo(Ie.SCADA_EDITOR_DATA);if(((Q=z==null?void 0:z.cells)==null?void 0:Q.length)>0)try{const M=z.cells.map(j=>{var ne;return j.position&&typeof j.position=="object"&&(typeof j.position.x!="number"||typeof j.position.y!="number")&&(j.position={x:100,y:100}),(j.shape==="edge"||j.shape==="animated-edge")&&(j.router==="manhattan"||((ne=j.router)==null?void 0:ne.name)==="manhattan")&&(j.router={name:"orth",args:{padding:10}}),j});a.fromJSON({cells:M}),a.getEdges().forEach(j=>{var pe;const ne=j.getData();(pe=ne==null?void 0:ne.animation)!=null&&pe.enabled&&V(j,ne.animation)})}catch(M){console.error("恢复画布数据失败,清空缓存:",M),sessionStorage.removeItem(Ie.SCADA_EDITOR_DATA)}a.on("selection:changed",({selected:M})=>{var ne,pe;const j=M?M.filter(ae=>ae.isNode()):[];if(h.value=j.length,M&&M.length>0){const ae=M[0];if(ae.isNode())t.value=ae,s.value=null;else if(ae.isEdge()){s.value=ae,t.value=null;const se=ae.getAttrs();ae.data={...ae.data,originalAttrs:se},ae.attr("line/stroke","#3b82f6")}}else{if(s.value&&((ne=s.value.data)!=null&&ne.originalAttrs)){const ae=s.value.data.originalAttrs;s.value.attr("line/stroke",((pe=ae.line)==null?void 0:pe.stroke)||"#10b981")}t.value=null,s.value=null}}),a.on("edge:click",({edge:M})=>{a.select(M)}),a.on("blank:click",()=>{s.value=null,t.value=null}),a.on("node:change:position",()=>{}),a.on("node:change:size",()=>{}),a.on("node:change:data",({node:M})=>{const j=M.getData();if(j.animation)if(j.animation.enabled===!0){const ne={type:j.animation.type||"none",duration:j.animation.duration||1e3,loop:j.animation.loop!==!1};Be.startAnimation(M,ne)}else Be.stopAnimation(M.id)}),a.on("edge:change:data",({edge:M})=>{const j=M.getData();j!=null&&j.animation&&V(M,j.animation)});const W=M=>{if(M.key==="Delete"&&a){if(t.value){const j=t.value.id;Be.stopAnimation(j),a.removeNode(j),t.value=null}else if(s.value){const j=s.value.id;a.removeEdge(j),s.value=null}}};document.addEventListener("keydown",W),e.onUnmounted(()=>{document.removeEventListener("keydown",W)})}),e.onUnmounted(()=>{if(a){Be.clearAll();const N={cells:a.toJSON().cells};ot(Ie.SCADA_EDITOR_DATA,N),a.dispose()}}),e.watch(()=>J.getConfig(),N=>{var D;if(!a)return;N.background.image?a.drawBackground({color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}):a.drawBackground({color:N.background.color||"#1e293b"});const I=(D=l.value)==null?void 0:D.containerRef;I&&(I.style.transform=`scale(${N.zoom.scale})`,I.style.transformOrigin="center center",a.resize(N.size.width,N.size.height),I.style.width=`${N.size.width}px`,I.style.height=`${N.size.height}px`),N.grid.enabled?(a.drawGrid({type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}),a.showGrid()):a.hideGrid(),N.grid.enabled&&N.grid.size&&a.setGridSize(N.grid.size),a.translate(N.offset.x,N.offset.y)},{deep:!0});const n=e.ref({}),r=(N,I)=>(n.value[N]||(n.value[N]=0),n.value[N]++,`${I}_${n.value[N]}`),i=N=>{var U,Q,M,j;if(!a)return;const I=Pe.getComponent(N);if(!I){console.error(`未找到组件配置: ${N}`);return}const D=r(N,I.metadata.name),_={enabled:!1,type:"none",duration:1e3,loop:!0},w=ao(50,50,400,300),z={x:w.x,y:w.y,shape:I.shape,width:I.width,height:I.height,label:I.label,attrs:I.attrs,ports:I.ports,data:{...I.data,componentType:N,componentName:D,props:I.props,animation:_,originalStroke:((Q=(U=I.attrs)==null?void 0:U.body)==null?void 0:Q.stroke)||"#2563eb",originalStrokeWidth:((j=(M=I.attrs)==null?void 0:M.body)==null?void 0:j.strokeWidth)||2}},W=a.addNode(z);a.cleanSelection(),a.select(W)},f=N=>{if(t.value&&(N.attrs&&Object.keys(N.attrs).forEach(I=>{const D=N.attrs[I];typeof D=="object"?Object.keys(D).forEach(_=>{t.value.attr(`${I}/${_}`,D[_])}):t.value.attr(I,D)}),N.position&&(typeof N.position.x=="number"&&typeof N.position.y=="number"?t.value.setPosition(N.position):console.error("position 数据格式错误:",N.position)),N.size&&(typeof N.size.width=="number"&&typeof N.size.height=="number"?t.value.setSize(N.size):console.error("size 数据格式错误:",N.size)),N.data)){const I={...N.data};delete I.position,delete I.size,t.value.store.set("data",I)}},u=()=>{if(!t.value||!a)return;const N=t.value.id;Be.stopAnimation(N),a.removeNode(N),t.value=null},b=N=>{if(s.value){if(N.attrs){Object.keys(N.attrs).forEach(D=>{const _=N.attrs[D];typeof _=="object"?Object.keys(_).forEach(w=>{var z,W;s.value.attr(`${D}/${w}`,_[w]),(W=(z=s.value.data)==null?void 0:z.originalAttrs)!=null&&W[D]&&(s.value.data.originalAttrs[D][w]=_[w])}):s.value.attr(D,_)});const I=s.value.getAttrs();s.value.data={...s.value.data,originalAttrs:I},s.value.attr("line/stroke","#3b82f6")}N.router&&s.value.setRouter(N.router),N.connector&&s.value.setConnector(N.connector),N.animation&&V(s.value,N.animation),N.data&&s.value.setData({...s.value.data,...N.data})}},B=()=>{!s.value||!a||(a.removeEdge(s.value.id),s.value=null)},V=(N,I)=>{if(!N||typeof N.attr!="function"){console.warn("applyEdgeAnimation: edge 对象无效",N);return}if(!I||!I.enabled){N.attr("line/strokeDasharray",void 0),typeof N.removeAttr=="function"&&N.removeAttr("line/class"),N.attr("circle",void 0),typeof N.stopTransition=="function"&&N.stopTransition("attrs/circle/atConnectionRatio");return}const D=I.duration||2e3;N.attr("circle",{r:4,atConnectionRatio:0,fill:{type:"radialGradient",stops:[{offset:"0%",color:"#FFF"},{offset:"100%",color:N.attr("line/stroke")||"#10b981"}]},stroke:N.attr("line/stroke")||"#10b981",strokeWidth:1});const _=()=>{N.attr("circle/atConnectionRatio",0,{silent:!0}),N.transition("attrs/circle/atConnectionRatio",1,{delay:0,duration:D,timing:"linear",complete:()=>{_()}})};_()},c=()=>{a&&confirm("确定要清空画布吗?")&&(Be.clearAll(),a.clearCells(),t.value=null,to(Ie.SCADA_EDITOR_DATA))},p=()=>{if(!a)return;const N=J.getConfig().zoom.scale,I=Math.min(5,N+.1);J.setZoom(I)},x=()=>{if(!a)return;const N=J.getConfig().zoom.scale,I=Math.max(.1,N-.1);J.setZoom(I)},y=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.min(...N.map(D=>D.getPosition().x));N.forEach(D=>{D.setPosition({x:I,y:D.getPosition().y})})},v=()=>{if(!a)return;const N=a.getSelectedCells().filter(_=>_.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=N.map(_=>_.getPosition().x+_.getSize().width/2),D=I.reduce((_,w)=>_+w,0)/I.length;N.forEach(_=>{const w=D-_.getSize().width/2;_.setPosition({x:w,y:_.getPosition().y})})},A=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.max(...N.map(D=>D.getPosition().x+D.getSize().width));N.forEach(D=>{const _=I-D.getSize().width;D.setPosition({x:_,y:D.getPosition().y})})},F=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.min(...N.map(D=>D.getPosition().y));N.forEach(D=>{D.setPosition({x:D.getPosition().x,y:I})})},S=()=>{if(!a)return;const N=a.getSelectedCells().filter(_=>_.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=N.map(_=>_.getPosition().y+_.getSize().height/2),D=I.reduce((_,w)=>_+w,0)/I.length;N.forEach(_=>{const w=D-_.getSize().height/2;_.setPosition({x:_.getPosition().x,y:w})})},C=()=>{if(!a)return;const N=a.getSelectedCells().filter(D=>D.isNode());if(N.length<2){re("请选择至少两个节点","warning");return}const I=Math.max(...N.map(D=>D.getPosition().y+D.getSize().height));N.forEach(D=>{const _=I-D.getSize().height;D.setPosition({x:D.getPosition().x,y:_})})},k=()=>{if(!a)return;const N=a.getSelectedCells().filter(W=>W.isNode());if(N.length<3){re("请选择至少三个节点","warning");return}const I=N.sort((W,U)=>W.getPosition().x-U.getPosition().x),D=I[0],z=(I[I.length-1].getPosition().x-D.getPosition().x)/(I.length-1);I.forEach((W,U)=>{if(U===0||U===I.length-1)return;const Q=D.getPosition().x+z*U;W.setPosition({x:Q,y:W.getPosition().y})})},$=()=>{if(!a)return;const N=a.getSelectedCells().filter(W=>W.isNode());if(N.length<3){re("请选择至少三个节点","warning");return}const I=N.sort((W,U)=>W.getPosition().y-U.getPosition().y),D=I[0],z=(I[I.length-1].getPosition().y-D.getPosition().y)/(I.length-1);I.forEach((W,U)=>{if(U===0||U===I.length-1)return;const Q=D.getPosition().y+z*U;W.setPosition({x:W.getPosition().x,y:Q})})},T=async()=>{if(!a){re("画布未初始化","error");return}try{if(console.log("[ScadaCanvas] handleSave 被调用"),console.log("[ScadaCanvas] props.onSave:",o.onSave),o.onSave){console.log("[ScadaCanvas] 调用自定义 onSave 回调"),await o.onSave(),console.log("[ScadaCanvas] 自定义 onSave 回调执行完成");return}console.log("[ScadaCanvas] 没有自定义回调,执行默认下载");const N={version:"1.0.0",timestamp:new Date().toISOString(),config:{size:J.getConfig().size,background:J.getConfig().background,grid:J.getConfig().grid,guides:J.getConfig().guides,magnetism:J.getConfig().magnetism,zoom:J.getConfig().zoom},cells:a.toJSON().cells},I=new Blob([JSON.stringify(N,null,2)],{type:"application/json"}),D=URL.createObjectURL(I),_=document.createElement("a"),w=`scada-canvas-${new Date().getTime()}.json`;_.href=D,_.download=w,_.click(),URL.revokeObjectURL(D),re("保存成功","success")}catch(N){console.error("保存失败",N),re("保存失败,请查看控制台","error")}},H=()=>{m.value&&m.value.click()},L=N=>{var w;const D=(w=N.target.files)==null?void 0:w[0];if(!D){re("请选择文件","error");return}const _=new FileReader;_.onload=z=>{var W;try{const U=JSON.parse((W=z.target)==null?void 0:W.result);if(!U.cells){re("无效的JSON文件格式","error");return}if(!confirm("导入将清空当前画布,是否继续?"))return;if(a){if(a.clearCells(),a.fromJSON({cells:U.cells}),a.getEdges().forEach(Q=>{var j;const M=Q.getData();(j=M==null?void 0:M.animation)!=null&&j.enabled&&V(Q,M.animation)}),U.config&&J.updateConfig(U.config),U.workflows&&Array.isArray(U.workflows)&&U.workflows.length>0)try{const Q=localStorage.getItem("saved-workflows"),M=Q?JSON.parse(Q):[];let j=0,ne=0;U.workflows.forEach(pe=>{const ae=M.findIndex(se=>se.id===pe.id);ae>=0?(M[ae]={...pe,updatedAt:Date.now()},ne++):(M.push(pe),j++)}),localStorage.setItem("saved-workflows",JSON.stringify(M)),re(`导入成功 画布已加载,流程: 新增${j}个,更新${ne}个`,"success")}catch(Q){console.error("导入流程数据失败:",Q),re("画布导入成功, 但流程数据导入失败","warning")}else re("导入成功","success");m.value&&(m.value.value="")}}catch(U){console.error("导入失败",U),re("导入失败,JSON格式错误","error"),m.value&&(m.value.value="")}},_.readAsText(D)},X=()=>{if(!a)return;const N={cells:a.toJSON().cells,config:{width:J.getConfig().size.width,height:J.getConfig().size.height,background:J.getConfig().background,grid:J.getConfig().grid}};ot(Ie.SCADA_PREVIEW_DATA,N)},Z=()=>{d.value=!0},te=()=>{if(!a){re("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:at(rt()),config:{size:J.getConfig().size,background:J.getConfig().background,grid:J.getConfig().grid,guides:J.getConfig().guides,magnetism:J.getConfig().magnetism,zoom:J.getConfig().zoom},cells:a.toJSON().cells,nodes:a.getNodes().map(_=>({id:_.id,type:_.shape,position:_.getPosition(),size:_.getSize(),label:_.attr("label/text"),data:_.getData()})),edges:a.getEdges().map(_=>({id:_.id,source:_.getSourceCellId(),target:_.getTargetCellId()})),workflows:[]},I=new Set;if(a.getNodes().forEach(_=>{const w=_.getData();w!=null&&w.events&&Array.isArray(w.events)&&w.events.forEach(z=>{var W;z.action==="callProcess"&&((W=z.params)!=null&&W.processId)&&I.add(z.params.processId)})}),I.size>0)try{const _=localStorage.getItem("saved-workflows");if(_){const w=JSON.parse(_);N.workflows=w.filter(z=>I.has(z.id))}}catch(_){console.error("加载流程数据失败:",_)}const D=oo(N,"scada-export");re(`已导出为 ${D}`,"success")}catch(N){console.error("导出失败",N),re("导出失败,请查看控制台","error")}};return E({save:T,import:H,export:te,preview:X,workflow:Z,zoomIn:p,zoomOut:x,clearAll:c,alignLeft:y,alignCenter:v,alignRight:A,alignTop:F,alignMiddle:S,alignBottom:C,distributeHorizontal:k,distributeVertical:$,addNode:i,updateNode:f,deleteNode:u,getSelectedNode:()=>t.value,selectNode:N=>{if(!a)return!1;const I=a.getCellById(N);return I?(a.select(I),!0):!1},clearSelection:()=>{a&&(a.unselect(a.getSelectedCells()),t.value=null)},getGraph:()=>a,getCanvasData:()=>a?{version:"1.0.0",timestamp:at(rt()),config:J.getConfig(),cells:a.toJSON().cells,nodes:a.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})),edges:a.getEdges().map(N=>({id:N.id,source:N.getSourceCellId(),target:N.getTargetCellId()}))}:null,loadCanvasData:N=>{if(!a)return!1;try{return a.clearCells(),a.fromJSON({cells:N.cells}),N.config&&J.updateConfig(N.config),!0}catch(I){return console.error("加载画布数据失败:",I),!1}},getAllNodes:()=>a?a.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})):[],getNodeById:N=>{if(!a)return null;const I=a.getCellById(N);if(!I||!I.isNode())return null;const D=I;return{id:D.id,type:D.shape,position:D.getPosition(),size:D.getSize(),label:D.attr("label/text"),data:D.getData()}},getConfigManager:()=>J,updateCanvasConfig:N=>{J.updateConfig(N)},setZoom:N=>{J.setZoom(N)},setCanvasSize:(N,I)=>{J.updateSize({width:N,height:I})},setBackgroundColor:N=>{J.updateBackground({color:N})},getAnimationEngine:()=>Be}),(N,I)=>(e.openBlock(),e.createElementBlock("div",ap,[e.createVNode(Ge,{"selected-nodes-count":h.value,onSave:T,onImport:H,onWorkflow:Z,onPreview:X,onExport:te,onZoomIn:p,onZoomOut:x,onClearAll:c,onAlignLeft:y,onAlignCenter:v,onAlignRight:A,onAlignTop:F,onAlignMiddle:S,onAlignBottom:C,onDistributeHorizontal:k,onDistributeVertical:$},null,8,["selected-nodes-count"]),e.createElementVNode("input",{ref_key:"fileInputRef",ref:m,type:"file",accept:".json",style:{display:"none"},onChange:L},null,544),e.createElementVNode("div",rp,[e.createVNode(Xe,{onAddComponent:i}),e.createVNode(Kn,{ref_key:"canvasAreaRef",ref:l},null,512),e.createVNode(lt,{ref:"propertyPanelRef","selected-node":t.value,"selected-edge":s.value,onUpdateNode:f,onDeleteNode:u,onUpdateEdge:b,onDeleteEdge:B},null,8,["selected-node","selected-edge"])]),e.createVNode(Ed,{"auth-code":g.authCode,"custom-footer":g.customFooter},null,8,["auth-code","custom-footer"]),e.createVNode(op,{visible:d.value,"onUpdate:visible":I[0]||(I[0]=D=>d.value=D),"scada-graph":e.unref(a),onClose:I[1]||(I[1]=D=>d.value=!1)},null,8,["visible","scada-graph"])]))}}),[["__scopeId","data-v-b0fa22a3"]]),lp={ScadaCanvas:Xo,PropertyPanel:lt,Header:Ge,ComponentLibrary:Xe,CanvasConfigPanel:Ye,BindingCard:Qe,EventCard:Je,BasicPropertiesTab:Ke,AttributeConfigDialog:et,CustomCodeDialog:tt},Yo=g=>{Object.entries(lp).forEach(([E,o])=>{g.component(E,o)})},sp={install:Yo,version:"1.0.0"};q.AttributeConfigDialog=et,q.BasicComponents=wn,q.BasicPropertiesTab=Ke,q.BindingCard=Qe,q.CanvasConfigPanel=Ye,q.ComponentLibrary=Xe,q.CustomCodeDialog=tt,q.EventCard=Je,q.Header=Ge,q.IoTComponents=Sn,q.PropertyPanel=lt,q.STORAGE_KEYS=Ie,q.ScadaCanvas=Xo,q.animationEngine=Be,q.canvasConfigItems=zn,q.canvasConfigManager=J,q.componentRegistry=Pe,q.default=sp,q.defaultCanvasConfig=je,q.exportToJSON=oo,q.formatTimestamp=at,q.generateEventId=no,q.generateNodeId=dc,q.generateUniqueId=nt,q.getCurrentTimestamp=rt,q.install=Yo,q.loadFromLocal=ic,q.loadFromSession=eo,q.randomPosition=ao,q.removeFromLocal=cc,q.removeFromSession=to,q.saveToLocal=sc,q.saveToSession=ot,q.showMessage=re,q.sizePresetMap=Re,Object.defineProperties(q,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|