agkan 2.11.0 → 2.12.0

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.
Files changed (39) hide show
  1. package/README.ja.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/board/boardRenderer.d.ts +18 -0
  4. package/dist/board/boardRenderer.d.ts.map +1 -0
  5. package/dist/board/boardRenderer.js +273 -0
  6. package/dist/board/boardRenderer.js.map +1 -0
  7. package/dist/board/boardRoutes.d.ts +23 -0
  8. package/dist/board/boardRoutes.d.ts.map +1 -0
  9. package/dist/board/boardRoutes.js +273 -0
  10. package/dist/board/boardRoutes.js.map +1 -0
  11. package/dist/board/boardScript.d.ts +2 -0
  12. package/dist/board/boardScript.d.ts.map +1 -0
  13. package/dist/board/boardScript.js +1202 -0
  14. package/dist/board/boardScript.js.map +1 -0
  15. package/dist/board/boardStyles.d.ts +2 -0
  16. package/dist/board/boardStyles.d.ts.map +1 -0
  17. package/dist/board/boardStyles.js +171 -0
  18. package/dist/board/boardStyles.js.map +1 -0
  19. package/dist/board/client/board.js +1160 -0
  20. package/dist/board/server.d.ts.map +1 -1
  21. package/dist/board/server.js +7 -1712
  22. package/dist/board/server.js.map +1 -1
  23. package/dist/db/adapters/sqlite-adapter.js +2 -0
  24. package/dist/db/adapters/sqlite-adapter.js.map +1 -1
  25. package/dist/db/connection.js +2 -2
  26. package/dist/db/connection.js.map +1 -1
  27. package/dist/services/CommentService.js +1 -0
  28. package/dist/services/CommentService.js.map +1 -1
  29. package/dist/services/MetadataService.js +1 -0
  30. package/dist/services/MetadataService.js.map +1 -1
  31. package/dist/services/TagService.js +1 -0
  32. package/dist/services/TagService.js.map +1 -1
  33. package/dist/services/TaskBlockService.js +2 -0
  34. package/dist/services/TaskBlockService.js.map +1 -1
  35. package/dist/services/TaskService.js +1 -0
  36. package/dist/services/TaskService.js.map +1 -1
  37. package/dist/services/TaskTagService.js +3 -0
  38. package/dist/services/TaskTagService.js.map +1 -1
  39. package/package.json +8 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boardScript.js","sourceRoot":"","sources":["../../src/board/boardScript.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6qCpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const BOARD_STYLES = "\n * { box-sizing: border-box; margin: 0; padding: 0; }\n body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f1f5f9; color: #1e293b; }\n header { background: #1e293b; color: white; padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; }\n header h1 { font-size: 18px; font-weight: 700; }\n .board-title { font-size: 14px; font-weight: 400; opacity: 0.75; }\n .board-container { display: flex; width: 100%; height: calc(100vh - 92px); gap: 0; }\n .board { display: flex; gap: 12px; padding: 16px; overflow-x: auto; flex: 1; align-items: stretch; min-width: 0; }\n .board.with-panel { padding-right: 0; }\n .column { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; width: 240px; flex-shrink: 0; display: flex; flex-direction: column; border-top: 3px solid transparent; }\n .column-header { padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e2e8f0; flex-shrink: 0; }\n .column-title { font-size: 13px; font-weight: 700; }\n .column-header-right { display: flex; align-items: center; gap: 6px; }\n .column-count { background: #e2e8f0; color: #64748b; border-radius: 10px; font-size: 11px; font-weight: 600; padding: 2px 7px; }\n .add-btn { background: none; border: 1px solid #cbd5e1; color: #64748b; border-radius: 4px; width: 22px; height: 22px; font-size: 14px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }\n .add-btn:hover { background: #e2e8f0; color: #1e293b; }\n .column-body { padding: 8px; min-height: 60px; flex: 1; overflow-y: auto; min-height: 0; }\n .column.drag-over .column-body { background: #eff6ff; border-radius: 6px; }\n .card { background: white; border: 1px solid #e2e8f0; border-radius: 6px; padding: 10px; margin-bottom: 6px; cursor: grab; transition: box-shadow 0.15s; }\n .card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }\n .card.dragging { opacity: 0.5; }\n .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 5px; }\n .card-id { font-size: 11px; color: #94a3b8; font-weight: 600; }\n .card-title { font-size: 13px; font-weight: 500; line-height: 1.4; }\n .card-tags { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }\n .tag { background: #e0f2fe; color: #0369a1; font-size: 10px; font-weight: 600; padding: 2px 6px; border-radius: 10px; }\n .priority { font-size: 10px; font-weight: 700; padding: 2px 6px; border-radius: 10px; text-transform: uppercase; }\n .priority-critical { background: #fee2e2; color: #dc2626; }\n .priority-high { background: #fee2e2; color: #dc2626; }\n .priority-medium { background: #fef9c3; color: #ca8a04; }\n .priority-low { background: #dcfce7; color: #16a34a; }\n .context-menu { position: fixed; background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 140px; }\n .context-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; }\n .context-menu-item:hover { background: #f1f5f9; }\n .context-menu-item.danger { color: #dc2626; }\n .context-menu-item.danger:hover { background: #fef2f2; }\n .modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 2000; display: none; align-items: center; justify-content: center; }\n .modal-overlay.show { display: flex; }\n .modal { background: white; border-radius: 8px; padding: 24px; width: 520px; box-shadow: 0 8px 24px rgba(0,0,0,0.2); }\n .modal h2 { font-size: 16px; margin-bottom: 14px; }\n .modal label { display: block; font-size: 12px; font-weight: 600; color: #64748b; margin-bottom: 4px; }\n .modal input, .modal textarea, .modal select { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 8px 10px; font-size: 13px; font-family: inherit; margin-bottom: 12px; background: white; }\n .modal textarea { resize: vertical; min-height: 60px; }\n .modal input:focus, .modal textarea:focus, .modal select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .modal-actions { display: flex; justify-content: flex-end; gap: 8px; }\n .modal-actions button { padding: 6px 14px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid #e2e8f0; background: white; color: #64748b; }\n .modal-actions button:hover { background: #f1f5f9; }\n .modal-actions button.primary { background: #3b82f6; color: white; border-color: #3b82f6; }\n .modal-actions button.primary:hover { background: #2563eb; }\n .toast { position: fixed; bottom: 20px; right: 20px; background: #ef4444; color: white; padding: 10px 16px; border-radius: 6px; font-size: 13px; opacity: 0; transition: opacity 0.3s; pointer-events: none; }\n .toast.show { opacity: 1; }\n .detail-panel { position: relative; width: 0; height: calc(100vh - 92px); background: white; box-shadow: none; border-left: 0 solid #e2e8f0; display: flex; flex-direction: column; max-width: 800px; overflow: hidden; transition: width 0.25s ease; }\n .detail-panel-resize-handle { position: absolute; top: 0; left: 0; width: 6px; height: 100%; cursor: col-resize; z-index: 10; background: transparent; }\n .detail-panel-resize-handle:hover, .detail-panel-resize-handle.dragging { background: rgba(59,130,246,0.3); }\n .detail-panel.open { width: 400px; min-width: 280px; border-left-width: 1px; }\n .detail-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid #e2e8f0; flex-shrink: 0; }\n .detail-panel-header h2 { font-size: 16px; font-weight: 700; color: #1e293b; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .detail-panel-close { background: none; border: none; font-size: 20px; color: #64748b; cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; }\n .detail-panel-close:hover { background: #f1f5f9; color: #1e293b; }\n .detail-panel-body { flex: 1; overflow: hidden; min-width: 0; display: flex; flex-direction: column; }\n .detail-field { margin-bottom: 16px; word-wrap: break-word; }\n .description-field-wrapper { flex: 1; display: flex; flex-direction: column; min-height: 0; margin-bottom: 0; }\n .detail-field-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: #94a3b8; margin-bottom: 4px; letter-spacing: 0.05em; }\n .detail-field-value { font-size: 13px; color: #1e293b; line-height: 1.5; }\n .detail-field-value.empty { color: #94a3b8; font-style: italic; }\n .detail-status-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 600; color: white; }\n .detail-tags { display: flex; flex-wrap: wrap; gap: 4px; }\n .detail-meta-table { width: 100%; border-collapse: collapse; }\n .detail-meta-table td { padding: 4px 0; font-size: 12px; }\n .detail-meta-table td:first-child { color: #64748b; width: 100px; }\n .detail-meta-table td:last-child { color: #1e293b; }\n .detail-panel-footer { padding: 12px 20px; border-top: 1px solid #e2e8f0; display: flex; justify-content: flex-end; flex-shrink: 0; }\n .detail-panel-footer button { padding: 7px 18px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }\n .detail-panel-footer button:hover { background: #2563eb; border-color: #2563eb; }\n .detail-edit-input { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }\n .detail-edit-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .detail-edit-textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 240px; background: white; color: #1e293b; }\n .detail-edit-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .description-field-wrapper .detail-edit-textarea { flex: 1; resize: none; min-height: 0; }\n .detail-edit-select { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }\n .detail-edit-select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .tag-select-wrapper { position: relative; }\n .tag-select-control { border: 1px solid #e2e8f0; border-radius: 6px; padding: 4px 8px; min-height: 36px; cursor: text; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; background: white; }\n .tag-select-control:focus-within { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .tag-pill { background: #e0f2fe; color: #0369a1; font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; }\n .tag-pill-remove { background: none; border: none; color: #0369a1; cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }\n .tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }\n .tag-select-input { border: none; outline: none; font-size: 12px; font-family: inherit; min-width: 80px; flex: 1; background: transparent; padding: 2px 0; color: #1e293b; }\n .tag-select-input::placeholder { color: #94a3b8; }\n .tag-select-dropdown { position: absolute; top: calc(100% + 2px); left: 0; right: 0; background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 100; max-height: 180px; overflow-y: auto; display: none; }\n .tag-select-dropdown.open { display: block; }\n .tag-select-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: #1e293b; }\n .tag-select-option:hover, .tag-select-option.focused { background: #eff6ff; color: #0369a1; }\n .tag-select-no-options { padding: 6px 10px; font-size: 12px; color: #94a3b8; font-style: italic; }\n .filter-bar { display: flex; align-items: center; gap: 16px; height: 44px; background: #f8fafc; border-bottom: 1px solid #e2e8f0; padding: 0 16px; flex-shrink: 0; overflow-x: auto; }\n .filter-group { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }\n .filter-label { font-size: 10px; font-weight: 700; text-transform: uppercase; color: #94a3b8; letter-spacing: 0.05em; white-space: nowrap; }\n .filter-priority-btn { border: 1px solid #e2e8f0; background: white; border-radius: 4px; padding: 2px 8px; font-size: 11px; font-weight: 600; cursor: pointer; text-transform: uppercase; color: #64748b; }\n .filter-priority-btn:hover { background: #f1f5f9; }\n .filter-priority-btn.active[data-priority=\"critical\"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }\n .filter-priority-btn.active[data-priority=\"high\"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }\n .filter-priority-btn.active[data-priority=\"medium\"] { background: #fef9c3; color: #ca8a04; border-color: #fde047; }\n .filter-priority-btn.active[data-priority=\"low\"] { background: #dcfce7; color: #16a34a; border-color: #86efac; }\n .filter-assignee-input { border: 1px solid #e2e8f0; border-radius: 4px; padding: 3px 8px; font-size: 12px; font-family: inherit; background: white; color: #1e293b; width: 120px; }\n .filter-assignee-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .filter-tag-pill { background: #e0f2fe; color: #0369a1; font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; flex-shrink: 0; }\n .filter-tag-pill-remove { background: none; border: none; color: #0369a1; cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }\n .filter-tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }\n .filter-tag-dropdown-wrapper { flex-shrink: 0; }\n .filter-tag-add-btn { border: 1px dashed #cbd5e1; background: white; border-radius: 4px; padding: 2px 8px; font-size: 11px; color: #64748b; cursor: pointer; white-space: nowrap; }\n .filter-tag-add-btn:hover { background: #f1f5f9; border-color: #94a3b8; }\n .filter-tag-dropdown { position: fixed; background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 200; max-height: 180px; overflow-y: auto; display: none; min-width: 140px; }\n .filter-tag-dropdown.open { display: block; }\n .filter-tag-dropdown-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: #1e293b; white-space: nowrap; }\n .filter-tag-dropdown-option:hover { background: #eff6ff; color: #0369a1; }\n .filter-tag-dropdown-empty { padding: 6px 10px; font-size: 12px; color: #94a3b8; font-style: italic; }\n .filter-clear-btn { border: 1px solid #e2e8f0; background: white; border-radius: 4px; padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; color: #64748b; display: none; flex-shrink: 0; margin-left: auto; }\n .filter-clear-btn:hover { background: #fee2e2; border-color: #fca5a5; color: #dc2626; }\n .filter-clear-btn.visible { display: block; }\n .detail-tabs { display: flex; gap: 0; border-bottom: 1px solid #e2e8f0; flex-shrink: 0; padding: 0 20px; background: white; }\n .detail-tab { padding: 8px 14px; font-size: 12px; font-weight: 600; color: #94a3b8; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; background: none; border-top: none; border-left: none; border-right: none; }\n .detail-tab:hover { color: #64748b; }\n .detail-tab.active { color: #3b82f6; border-bottom-color: #3b82f6; }\n .detail-tab-content { display: none; flex: 1; overflow-y: auto; min-height: 0; }\n .detail-tab-content.active { display: flex; flex-direction: column; }\n .detail-relations { font-size: 12px; color: #64748b; padding: 6px 0; border-bottom: 1px solid #f1f5f9; margin-bottom: 12px; }\n .detail-relation-row { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }\n .detail-relation-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: #94a3b8; width: 80px; flex-shrink: 0; letter-spacing: 0.05em; }\n .detail-relation-ids { display: flex; flex-wrap: wrap; gap: 4px; }\n .detail-relation-id { font-size: 11px; color: #3b82f6; background: #eff6ff; border-radius: 10px; padding: 1px 7px; font-weight: 600; }\n .detail-timestamp { font-size: 11px; color: #94a3b8; margin-top: 8px; padding-top: 8px; border-top: 1px solid #f1f5f9; }\n .comment-item { position: relative; padding: 6px 0 6px 10px; border-left: 2px solid #e2e8f0; margin-bottom: 10px; }\n .comment-item:hover { border-left-color: #3b82f6; }\n .comment-meta { display: flex; align-items: center; gap: 6px; margin-bottom: 3px; }\n .comment-author { font-size: 11px; font-weight: 600; color: #64748b; }\n .comment-date { font-size: 11px; color: #94a3b8; }\n .comment-actions { display: none; margin-left: auto; gap: 4px; }\n .comment-item:hover .comment-actions { display: flex; }\n .comment-action-btn { background: none; border: none; padding: 1px 4px; cursor: pointer; color: #94a3b8; font-size: 12px; border-radius: 3px; }\n .comment-action-btn:hover { color: #1e293b; background: #f1f5f9; }\n .comment-action-btn.danger:hover { color: #dc2626; background: #fef2f2; }\n .comment-content { font-size: 13px; color: #1e293b; line-height: 1.5; white-space: pre-wrap; }\n .comment-edit-area { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 60px; background: white; color: #1e293b; margin-top: 4px; }\n .comment-edit-area:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .comment-edit-actions { display: flex; gap: 6px; margin-top: 4px; }\n .comment-btn { background: none; border: 1px solid #e2e8f0; border-radius: 4px; font-size: 11px; font-weight: 600; padding: 2px 8px; cursor: pointer; color: #64748b; }\n .comment-btn:hover { background: #f1f5f9; }\n .add-comment-trigger { background: none; border: 1px dashed #cbd5e1; border-radius: 6px; padding: 8px 12px; font-size: 12px; color: #94a3b8; cursor: pointer; width: 100%; text-align: left; margin-top: 4px; }\n .add-comment-trigger:hover { border-color: #94a3b8; color: #64748b; background: #f8fafc; }\n .add-comment-form { margin-top: 4px; display: none; }\n .add-comment-form.open { display: block; }\n .add-comment-textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 72px; background: white; color: #1e293b; }\n .add-comment-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }\n .add-comment-submit { margin-top: 6px; padding: 5px 14px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }\n .add-comment-submit:hover { background: #2563eb; border-color: #2563eb; }\n .add-comment-cancel { margin-top: 6px; margin-left: 6px; padding: 5px 10px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid #e2e8f0; background: white; color: #64748b; }\n .add-comment-cancel:hover { background: #f1f5f9; }\n .burger-menu-wrapper { position: relative; }\n .burger-menu-btn { background: none; border: none; color: white; cursor: pointer; padding: 4px 6px; border-radius: 4px; display: flex; flex-direction: column; gap: 4px; align-items: center; justify-content: center; opacity: 0.8; }\n .burger-menu-btn:hover { opacity: 1; background: rgba(255,255,255,0.1); }\n .burger-menu-btn span { display: block; width: 18px; height: 2px; background: white; border-radius: 1px; }\n .burger-menu-dropdown { position: absolute; right: 0; top: calc(100% + 6px); background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 180px; }\n .burger-menu-dropdown.open { display: block; }\n .burger-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; color: #1e293b; white-space: nowrap; }\n .burger-menu-item:hover { background: #f1f5f9; }\n .burger-menu-item.danger { color: #dc2626; }\n .burger-menu-item.danger:hover { background: #fef2f2; }";
2
+ //# sourceMappingURL=boardStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boardStyles.d.ts","sourceRoot":"","sources":["../../src/board/boardStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,gslBAsKmC,CAAC"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BOARD_STYLES = void 0;
4
+ exports.BOARD_STYLES = `
5
+ * { box-sizing: border-box; margin: 0; padding: 0; }
6
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f1f5f9; color: #1e293b; }
7
+ header { background: #1e293b; color: white; padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; }
8
+ header h1 { font-size: 18px; font-weight: 700; }
9
+ .board-title { font-size: 14px; font-weight: 400; opacity: 0.75; }
10
+ .board-container { display: flex; width: 100%; height: calc(100vh - 92px); gap: 0; }
11
+ .board { display: flex; gap: 12px; padding: 16px; overflow-x: auto; flex: 1; align-items: stretch; min-width: 0; }
12
+ .board.with-panel { padding-right: 0; }
13
+ .column { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; width: 240px; flex-shrink: 0; display: flex; flex-direction: column; border-top: 3px solid transparent; }
14
+ .column-header { padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e2e8f0; flex-shrink: 0; }
15
+ .column-title { font-size: 13px; font-weight: 700; }
16
+ .column-header-right { display: flex; align-items: center; gap: 6px; }
17
+ .column-count { background: #e2e8f0; color: #64748b; border-radius: 10px; font-size: 11px; font-weight: 600; padding: 2px 7px; }
18
+ .add-btn { background: none; border: 1px solid #cbd5e1; color: #64748b; border-radius: 4px; width: 22px; height: 22px; font-size: 14px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }
19
+ .add-btn:hover { background: #e2e8f0; color: #1e293b; }
20
+ .column-body { padding: 8px; min-height: 60px; flex: 1; overflow-y: auto; min-height: 0; }
21
+ .column.drag-over .column-body { background: #eff6ff; border-radius: 6px; }
22
+ .card { background: white; border: 1px solid #e2e8f0; border-radius: 6px; padding: 10px; margin-bottom: 6px; cursor: grab; transition: box-shadow 0.15s; }
23
+ .card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
24
+ .card.dragging { opacity: 0.5; }
25
+ .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 5px; }
26
+ .card-id { font-size: 11px; color: #94a3b8; font-weight: 600; }
27
+ .card-title { font-size: 13px; font-weight: 500; line-height: 1.4; }
28
+ .card-tags { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }
29
+ .tag { background: #e0f2fe; color: #0369a1; font-size: 10px; font-weight: 600; padding: 2px 6px; border-radius: 10px; }
30
+ .priority { font-size: 10px; font-weight: 700; padding: 2px 6px; border-radius: 10px; text-transform: uppercase; }
31
+ .priority-critical { background: #fee2e2; color: #dc2626; }
32
+ .priority-high { background: #fee2e2; color: #dc2626; }
33
+ .priority-medium { background: #fef9c3; color: #ca8a04; }
34
+ .priority-low { background: #dcfce7; color: #16a34a; }
35
+ .context-menu { position: fixed; background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 140px; }
36
+ .context-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; }
37
+ .context-menu-item:hover { background: #f1f5f9; }
38
+ .context-menu-item.danger { color: #dc2626; }
39
+ .context-menu-item.danger:hover { background: #fef2f2; }
40
+ .modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 2000; display: none; align-items: center; justify-content: center; }
41
+ .modal-overlay.show { display: flex; }
42
+ .modal { background: white; border-radius: 8px; padding: 24px; width: 520px; box-shadow: 0 8px 24px rgba(0,0,0,0.2); }
43
+ .modal h2 { font-size: 16px; margin-bottom: 14px; }
44
+ .modal label { display: block; font-size: 12px; font-weight: 600; color: #64748b; margin-bottom: 4px; }
45
+ .modal input, .modal textarea, .modal select { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 8px 10px; font-size: 13px; font-family: inherit; margin-bottom: 12px; background: white; }
46
+ .modal textarea { resize: vertical; min-height: 60px; }
47
+ .modal input:focus, .modal textarea:focus, .modal select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
48
+ .modal-actions { display: flex; justify-content: flex-end; gap: 8px; }
49
+ .modal-actions button { padding: 6px 14px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid #e2e8f0; background: white; color: #64748b; }
50
+ .modal-actions button:hover { background: #f1f5f9; }
51
+ .modal-actions button.primary { background: #3b82f6; color: white; border-color: #3b82f6; }
52
+ .modal-actions button.primary:hover { background: #2563eb; }
53
+ .toast { position: fixed; bottom: 20px; right: 20px; background: #ef4444; color: white; padding: 10px 16px; border-radius: 6px; font-size: 13px; opacity: 0; transition: opacity 0.3s; pointer-events: none; }
54
+ .toast.show { opacity: 1; }
55
+ .detail-panel { position: relative; width: 0; height: calc(100vh - 92px); background: white; box-shadow: none; border-left: 0 solid #e2e8f0; display: flex; flex-direction: column; max-width: 800px; overflow: hidden; transition: width 0.25s ease; }
56
+ .detail-panel-resize-handle { position: absolute; top: 0; left: 0; width: 6px; height: 100%; cursor: col-resize; z-index: 10; background: transparent; }
57
+ .detail-panel-resize-handle:hover, .detail-panel-resize-handle.dragging { background: rgba(59,130,246,0.3); }
58
+ .detail-panel.open { width: 400px; min-width: 280px; border-left-width: 1px; }
59
+ .detail-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid #e2e8f0; flex-shrink: 0; }
60
+ .detail-panel-header h2 { font-size: 16px; font-weight: 700; color: #1e293b; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
61
+ .detail-panel-close { background: none; border: none; font-size: 20px; color: #64748b; cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; }
62
+ .detail-panel-close:hover { background: #f1f5f9; color: #1e293b; }
63
+ .detail-panel-body { flex: 1; overflow: hidden; min-width: 0; display: flex; flex-direction: column; }
64
+ .detail-field { margin-bottom: 16px; word-wrap: break-word; }
65
+ .description-field-wrapper { flex: 1; display: flex; flex-direction: column; min-height: 0; margin-bottom: 0; }
66
+ .detail-field-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: #94a3b8; margin-bottom: 4px; letter-spacing: 0.05em; }
67
+ .detail-field-value { font-size: 13px; color: #1e293b; line-height: 1.5; }
68
+ .detail-field-value.empty { color: #94a3b8; font-style: italic; }
69
+ .detail-status-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 600; color: white; }
70
+ .detail-tags { display: flex; flex-wrap: wrap; gap: 4px; }
71
+ .detail-meta-table { width: 100%; border-collapse: collapse; }
72
+ .detail-meta-table td { padding: 4px 0; font-size: 12px; }
73
+ .detail-meta-table td:first-child { color: #64748b; width: 100px; }
74
+ .detail-meta-table td:last-child { color: #1e293b; }
75
+ .detail-panel-footer { padding: 12px 20px; border-top: 1px solid #e2e8f0; display: flex; justify-content: flex-end; flex-shrink: 0; }
76
+ .detail-panel-footer button { padding: 7px 18px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }
77
+ .detail-panel-footer button:hover { background: #2563eb; border-color: #2563eb; }
78
+ .detail-edit-input { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }
79
+ .detail-edit-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
80
+ .detail-edit-textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 240px; background: white; color: #1e293b; }
81
+ .detail-edit-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
82
+ .description-field-wrapper .detail-edit-textarea { flex: 1; resize: none; min-height: 0; }
83
+ .detail-edit-select { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }
84
+ .detail-edit-select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
85
+ .tag-select-wrapper { position: relative; }
86
+ .tag-select-control { border: 1px solid #e2e8f0; border-radius: 6px; padding: 4px 8px; min-height: 36px; cursor: text; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; background: white; }
87
+ .tag-select-control:focus-within { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
88
+ .tag-pill { background: #e0f2fe; color: #0369a1; font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; }
89
+ .tag-pill-remove { background: none; border: none; color: #0369a1; cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }
90
+ .tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }
91
+ .tag-select-input { border: none; outline: none; font-size: 12px; font-family: inherit; min-width: 80px; flex: 1; background: transparent; padding: 2px 0; color: #1e293b; }
92
+ .tag-select-input::placeholder { color: #94a3b8; }
93
+ .tag-select-dropdown { position: absolute; top: calc(100% + 2px); left: 0; right: 0; background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 100; max-height: 180px; overflow-y: auto; display: none; }
94
+ .tag-select-dropdown.open { display: block; }
95
+ .tag-select-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: #1e293b; }
96
+ .tag-select-option:hover, .tag-select-option.focused { background: #eff6ff; color: #0369a1; }
97
+ .tag-select-no-options { padding: 6px 10px; font-size: 12px; color: #94a3b8; font-style: italic; }
98
+ .filter-bar { display: flex; align-items: center; gap: 16px; height: 44px; background: #f8fafc; border-bottom: 1px solid #e2e8f0; padding: 0 16px; flex-shrink: 0; overflow-x: auto; }
99
+ .filter-group { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
100
+ .filter-label { font-size: 10px; font-weight: 700; text-transform: uppercase; color: #94a3b8; letter-spacing: 0.05em; white-space: nowrap; }
101
+ .filter-priority-btn { border: 1px solid #e2e8f0; background: white; border-radius: 4px; padding: 2px 8px; font-size: 11px; font-weight: 600; cursor: pointer; text-transform: uppercase; color: #64748b; }
102
+ .filter-priority-btn:hover { background: #f1f5f9; }
103
+ .filter-priority-btn.active[data-priority="critical"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }
104
+ .filter-priority-btn.active[data-priority="high"] { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }
105
+ .filter-priority-btn.active[data-priority="medium"] { background: #fef9c3; color: #ca8a04; border-color: #fde047; }
106
+ .filter-priority-btn.active[data-priority="low"] { background: #dcfce7; color: #16a34a; border-color: #86efac; }
107
+ .filter-assignee-input { border: 1px solid #e2e8f0; border-radius: 4px; padding: 3px 8px; font-size: 12px; font-family: inherit; background: white; color: #1e293b; width: 120px; }
108
+ .filter-assignee-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
109
+ .filter-tag-pill { background: #e0f2fe; color: #0369a1; font-size: 11px; font-weight: 600; padding: 2px 4px 2px 8px; border-radius: 10px; display: inline-flex; align-items: center; gap: 3px; flex-shrink: 0; }
110
+ .filter-tag-pill-remove { background: none; border: none; color: #0369a1; cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px; display: inline-flex; align-items: center; border-radius: 50%; }
111
+ .filter-tag-pill-remove:hover { color: #dc2626; background: rgba(220,38,38,0.1); }
112
+ .filter-tag-dropdown-wrapper { flex-shrink: 0; }
113
+ .filter-tag-add-btn { border: 1px dashed #cbd5e1; background: white; border-radius: 4px; padding: 2px 8px; font-size: 11px; color: #64748b; cursor: pointer; white-space: nowrap; }
114
+ .filter-tag-add-btn:hover { background: #f1f5f9; border-color: #94a3b8; }
115
+ .filter-tag-dropdown { position: fixed; background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 200; max-height: 180px; overflow-y: auto; display: none; min-width: 140px; }
116
+ .filter-tag-dropdown.open { display: block; }
117
+ .filter-tag-dropdown-option { padding: 6px 10px; font-size: 12px; cursor: pointer; color: #1e293b; white-space: nowrap; }
118
+ .filter-tag-dropdown-option:hover { background: #eff6ff; color: #0369a1; }
119
+ .filter-tag-dropdown-empty { padding: 6px 10px; font-size: 12px; color: #94a3b8; font-style: italic; }
120
+ .filter-clear-btn { border: 1px solid #e2e8f0; background: white; border-radius: 4px; padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; color: #64748b; display: none; flex-shrink: 0; margin-left: auto; }
121
+ .filter-clear-btn:hover { background: #fee2e2; border-color: #fca5a5; color: #dc2626; }
122
+ .filter-clear-btn.visible { display: block; }
123
+ .detail-tabs { display: flex; gap: 0; border-bottom: 1px solid #e2e8f0; flex-shrink: 0; padding: 0 20px; background: white; }
124
+ .detail-tab { padding: 8px 14px; font-size: 12px; font-weight: 600; color: #94a3b8; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; background: none; border-top: none; border-left: none; border-right: none; }
125
+ .detail-tab:hover { color: #64748b; }
126
+ .detail-tab.active { color: #3b82f6; border-bottom-color: #3b82f6; }
127
+ .detail-tab-content { display: none; flex: 1; overflow-y: auto; min-height: 0; }
128
+ .detail-tab-content.active { display: flex; flex-direction: column; }
129
+ .detail-relations { font-size: 12px; color: #64748b; padding: 6px 0; border-bottom: 1px solid #f1f5f9; margin-bottom: 12px; }
130
+ .detail-relation-row { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
131
+ .detail-relation-label { font-size: 11px; font-weight: 700; text-transform: uppercase; color: #94a3b8; width: 80px; flex-shrink: 0; letter-spacing: 0.05em; }
132
+ .detail-relation-ids { display: flex; flex-wrap: wrap; gap: 4px; }
133
+ .detail-relation-id { font-size: 11px; color: #3b82f6; background: #eff6ff; border-radius: 10px; padding: 1px 7px; font-weight: 600; }
134
+ .detail-timestamp { font-size: 11px; color: #94a3b8; margin-top: 8px; padding-top: 8px; border-top: 1px solid #f1f5f9; }
135
+ .comment-item { position: relative; padding: 6px 0 6px 10px; border-left: 2px solid #e2e8f0; margin-bottom: 10px; }
136
+ .comment-item:hover { border-left-color: #3b82f6; }
137
+ .comment-meta { display: flex; align-items: center; gap: 6px; margin-bottom: 3px; }
138
+ .comment-author { font-size: 11px; font-weight: 600; color: #64748b; }
139
+ .comment-date { font-size: 11px; color: #94a3b8; }
140
+ .comment-actions { display: none; margin-left: auto; gap: 4px; }
141
+ .comment-item:hover .comment-actions { display: flex; }
142
+ .comment-action-btn { background: none; border: none; padding: 1px 4px; cursor: pointer; color: #94a3b8; font-size: 12px; border-radius: 3px; }
143
+ .comment-action-btn:hover { color: #1e293b; background: #f1f5f9; }
144
+ .comment-action-btn.danger:hover { color: #dc2626; background: #fef2f2; }
145
+ .comment-content { font-size: 13px; color: #1e293b; line-height: 1.5; white-space: pre-wrap; }
146
+ .comment-edit-area { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 60px; background: white; color: #1e293b; margin-top: 4px; }
147
+ .comment-edit-area:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
148
+ .comment-edit-actions { display: flex; gap: 6px; margin-top: 4px; }
149
+ .comment-btn { background: none; border: 1px solid #e2e8f0; border-radius: 4px; font-size: 11px; font-weight: 600; padding: 2px 8px; cursor: pointer; color: #64748b; }
150
+ .comment-btn:hover { background: #f1f5f9; }
151
+ .add-comment-trigger { background: none; border: 1px dashed #cbd5e1; border-radius: 6px; padding: 8px 12px; font-size: 12px; color: #94a3b8; cursor: pointer; width: 100%; text-align: left; margin-top: 4px; }
152
+ .add-comment-trigger:hover { border-color: #94a3b8; color: #64748b; background: #f8fafc; }
153
+ .add-comment-form { margin-top: 4px; display: none; }
154
+ .add-comment-form.open { display: block; }
155
+ .add-comment-textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 72px; background: white; color: #1e293b; }
156
+ .add-comment-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
157
+ .add-comment-submit { margin-top: 6px; padding: 5px 14px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid #3b82f6; background: #3b82f6; color: white; }
158
+ .add-comment-submit:hover { background: #2563eb; border-color: #2563eb; }
159
+ .add-comment-cancel { margin-top: 6px; margin-left: 6px; padding: 5px 10px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid #e2e8f0; background: white; color: #64748b; }
160
+ .add-comment-cancel:hover { background: #f1f5f9; }
161
+ .burger-menu-wrapper { position: relative; }
162
+ .burger-menu-btn { background: none; border: none; color: white; cursor: pointer; padding: 4px 6px; border-radius: 4px; display: flex; flex-direction: column; gap: 4px; align-items: center; justify-content: center; opacity: 0.8; }
163
+ .burger-menu-btn:hover { opacity: 1; background: rgba(255,255,255,0.1); }
164
+ .burger-menu-btn span { display: block; width: 18px; height: 2px; background: white; border-radius: 1px; }
165
+ .burger-menu-dropdown { position: absolute; right: 0; top: calc(100% + 6px); background: white; border: 1px solid #e2e8f0; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 4px 0; z-index: 1000; display: none; min-width: 180px; }
166
+ .burger-menu-dropdown.open { display: block; }
167
+ .burger-menu-item { padding: 8px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 8px; color: #1e293b; white-space: nowrap; }
168
+ .burger-menu-item:hover { background: #f1f5f9; }
169
+ .burger-menu-item.danger { color: #dc2626; }
170
+ .burger-menu-item.danger:hover { background: #fef2f2; }`;
171
+ //# sourceMappingURL=boardStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boardStyles.js","sourceRoot":"","sources":["../../src/board/boardStyles.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DAsKgC,CAAC"}