@profoundlogic/coderflow-server 0.9.1 → 0.9.3
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/coder-server.js +1 -1
- package/dist/config/skill-catalog.json +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/session-file-store.js +1 -0
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/slack-service.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-container-init.js +1 -1
- package/dist/lib/task-context-usage.js +1 -1
- package/dist/lib/task-git-auth-errors.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/logs.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/slack.js +1 -1
- package/dist/routes/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.html +6 -6
- package/dist/web-ui/public/admin.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/docs/admin/automations.md +2 -1
- package/dist/web-ui/public/docs/admin/environments.md +2 -0
- package/dist/web-ui/public/docs/code/files-and-editing.md +1 -4
- package/dist/web-ui/public/docs/docsify-proxy-helper.js +1 -1
- package/dist/web-ui/public/environments.css +28 -0
- package/dist/web-ui/public/environments.html +33 -7
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.html +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.html +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.html +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.html +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.html +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-client.transport-warning.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.html +2 -2
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.html +2 -2
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{API,Utils}from'./app.js';const dragState={'draggedTaskId':null,'draggedElement':null,'sourceGroupId':null,'isDragging':![]},AGENT_ICONS={'claude':'<svg\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><path\x20d=\x22m3.127\x2010.604\x203.135-1.76.053-.153-.053-.085H6.11l-.525-.032-1.791-.048-1.554-.065-1.505-.08-.38-.081L0\x207.832l.036-.234.32-.214.455.04\x201.009.069\x201.513.105\x201.097.064\x201.626.17h.259l.036-.105-.089-.065-.068-.064-1.566-1.062-1.695-1.121-.887-.646-.48-.327-.243-.306-.104-.67.435-.48.585.04.15.04.593.456\x201.267.981\x201.654\x201.218.242.202.097-.068.012-.049-.109-.181-.9-1.626-.96-1.655-.428-.686-.113-.411a2\x202\x200\x200\x201-.068-.484l.496-.674L4.446\x200l.662.089.279.242.411.94.666\x201.48\x201.033\x202.014.302.597.162.553.06.17h.105v-.097l.085-1.134.157-1.392.154-1.792.052-.504.25-.605.497-.327.387.186.319.456-.045.294-.19\x201.23-.37\x201.93-.243\x201.29h.142l.161-.16.654-.868\x201.097-1.372.484-.545.565-.601.363-.287h.686l.505.751-.226.775-.707.895-.585.759-.839\x201.13-.524.904.048.072.125-.012\x201.897-.403\x201.024-.186\x201.223-.21.553.258.06.263-.218.536-1.307.323-1.533.307-2.284.54-.028.02.032.04\x201.029.098.44.024h1.077l2.005.15.525.346.315.424-.053.323-.807.411-3.631-.863-.872-.218h-.12v.073l.726.71\x201.331\x201.202\x201.667\x201.55.084.383-.214.302-.226-.032-1.464-1.101-.565-.497-1.28-1.077h-.084v.113l.295.432\x201.557\x202.34.08.718-.112.234-.404.141-.444-.08-.911-1.28-.94-1.44-.759-1.291-.093.053-.448\x204.821-.21.246-.484.186-.403-.307-.214-.496.214-.98.258-1.28.21-1.016.19-1.263.112-.42-.008-.028-.092.012-.953\x201.307-1.448\x201.957-1.146\x201.227-.274.109-.477-.247.045-.44.266-.39\x201.586-2.018.956-1.25.617-.723-.004-.105h-.036l-4.212\x204.212z\x22/></svg>','codex':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22currentColor\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><path\x20d=\x22M22.2819\x209.8211a5.9847\x205.9847\x200\x200\x200-.5157-4.9108\x206.0462\x206.0462\x200\x200\x200-6.5098-2.9A6.0651\x206.0651\x200\x200\x200\x204.9807\x204.1818a5.9847\x205.9847\x200\x200\x200-3.9977\x202.9\x206.0462\x206.0462\x200\x200\x200\x20.7427\x207.0966\x205.98\x205.98\x200\x200\x200\x20.511\x204.9107\x206.051\x206.051\x200\x200\x200\x206.5146\x202.9001A5.9847\x205.9847\x200\x200\x200\x2013.2599\x2024a6.0557\x206.0557\x200\x200\x200\x205.7718-4.2058\x205.9894\x205.9894\x200\x200\x200\x203.9977-2.9001\x206.0557\x206.0557\x200\x200\x200-.7475-7.0729zm-9.022\x2012.6081a4.4755\x204.4755\x200\x200\x201-2.8764-1.0408l.1419-.0804\x204.7783-2.7582a.7948.7948\x200\x200\x200\x20.3927-.6813v-6.7369l2.02\x201.1686a.071.071\x200\x200\x201\x20.038.052v5.5826a4.504\x204.504\x200\x200\x201-4.4945\x204.4944zm-9.6607-4.1254a4.4708\x204.4708\x200\x200\x201-.5346-3.0137l.142.0852\x204.783\x202.7582a.7712.7712\x200\x200\x200\x20.7806\x200l5.8428-3.3685v2.3324a.0804.0804\x200\x200\x201-.0332.0615L9.74\x2019.9502a4.4992\x204.4992\x200\x200\x201-6.1408-1.6464zM2.3408\x207.8956a4.485\x204.485\x200\x200\x201\x202.3655-1.9728V11.6a.7664.7664\x200\x200\x200\x20.3879.6765l5.8144\x203.3543-2.0201\x201.1685a.0757.0757\x200\x200\x201-.071\x200l-4.8303-2.7865A4.504\x204.504\x200\x200\x201\x202.3408\x207.872zm16.5963\x203.8558L13.1038\x208.364\x2015.1192\x207.2a.0757.0757\x200\x200\x201\x20.071\x200l4.8303\x202.7913a4.4944\x204.4944\x200\x200\x201-.6765\x208.1042v-5.6772a.79.79\x200\x200\x200-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759\x200\x200\x200-.7854\x200L9.409\x209.2297V6.8974a.0662.0662\x200\x200\x201\x20.0284-.0615l4.8303-2.7866a4.4992\x204.4992\x200\x200\x201\x206.6802\x204.66zM8.3065\x2012.863l-2.02-1.1638a.0804.0804\x200\x200\x201-.038-.0567V6.0742a4.4992\x204.4992\x200\x200\x201\x207.3757-3.4537l-.142.0805L8.704\x205.459a.7948.7948\x200\x200\x200-.3927.6813zm1.0976-2.3654l2.602-1.4998\x202.6069\x201.4998v2.9994l-2.5974\x201.4997-2.6067-1.4997Z\x22/></svg>','gemini':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><path\x20d=\x22M12\x202L9.09\x209.09\x202\x2012l7.09\x202.91L12\x2022l2.91-7.09L22\x2012l-7.09-2.91z\x22></path></svg>','unknown':'<svg\x20viewBox=\x220\x200\x2020\x2020\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x221.6\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><circle\x20cx=\x2210\x22\x20cy=\x2210\x22\x20r=\x228\x22\x20/><path\x20d=\x22M10\x206.5c-1.1\x200-2\x20.7-2\x201.6\x200\x20.9\x201\x201.3\x201.6\x201.7.7.4\x201\x20.8\x201\x201.5V12\x22\x20/><circle\x20cx=\x2210\x22\x20cy=\x2214\x22\x20r=\x220.8\x22\x20fill=\x22currentColor\x22\x20stroke=\x22none\x22\x20/></svg>'},STATUS_ICONS={'running':'<svg\x20class=\x22status-icon\x20spinning\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222.5\x22\x20stroke-linecap=\x22round\x22><path\x20d=\x22M8\x202\x20A6\x206\x200\x200\x201\x2014\x208\x22/></svg>','completed':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm3.78\x206.28-4.5\x204.5a.75.75\x200\x200\x201-1.06\x200l-2-2a.75.75\x200\x201\x201\x201.06-1.06L6.75\x209.19l3.97-3.97a.75.75\x200\x201\x201\x201.06\x201.06z\x22/></svg>','failed':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm3.53\x2010.47a.75.75\x200\x201\x201-1.06\x201.06L8\x209.06l-2.47\x202.47a.75.75\x200\x200\x201-1.06-1.06L6.94\x208\x204.47\x205.53a.75.75\x200\x200\x201\x201.06-1.06L8\x206.94l2.47-2.47a.75.75\x200\x200\x201\x201.06\x201.06L9.06\x208l2.47\x202.47z\x22/></svg>','staged':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm0\x2012a.75.75\x200\x201\x201\x200-1.5.75.75\x200\x200\x201\x200\x201.5zm1-3.5a1\x201\x200\x200\x201-2\x200V5a1\x201\x200\x201\x201\x202\x200v3.5z\x22/></svg>','queued':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm0\x2014A6\x206\x200\x201\x201\x208\x202a6\x206\x200\x200\x201\x200\x2012zm1-6.5V4H7v4.5l3\x203\x201.5-1.5-2.5-2.5z\x22/></svg>'};export class VariantGroupingManager{constructor(_0x18ca8d={}){this['container']=null,this['onGroupChange']=_0x18ca8d['onGroupChange']||(()=>{}),this['onAddExistingTask']=_0x18ca8d['onAddExistingTask']||(()=>{}),this['tasks']=[],this['groupId']=_0x18ca8d['groupId']||null,this['isOpen']=![];}['init'](_0x517a0b,_0x329378,_0x4b2303){this['container']=_0x517a0b,this['tasks']=_0x329378,this['groupId']=_0x4b2303,this['render'](),this['attachEventListeners']();}['updateTasks'](_0x17de08){const _0x2b54e5=new Map(_0x17de08['map'](_0x28435e=>[_0x28435e['taskId'],_0x28435e]));this['tasks']=this['tasks']['map'](_0x497263=>{const _0x2278e4=_0x2b54e5['get'](_0x497263['taskId']);return _0x2278e4?_0x2278e4:_0x497263;});for(const _0x3608d2 of _0x17de08){!this['tasks']['some'](_0x432da9=>_0x432da9['taskId']===_0x3608d2['taskId'])&&this['tasks']['push'](_0x3608d2);}this['isOpen']&&this['render']();}['open'](){this['isOpen']=!![],this['render'](),this['container']?.['classList']['add']('open');}['close'](){this['isOpen']=![],this['container']?.['classList']['remove']('open');}['render'](){if(!this['container'])return;const _0x20418f=this['tasks']['filter'](_0x340428=>_0x340428['groupId']===this['groupId'])['sort']((_0x47684c,_0x12fb2e)=>(_0x47684c['groupIndex']??0x0)-(_0x12fb2e['groupIndex']??0x0)),_0x17b0ca=this['tasks']['filter'](_0x242a92=>!_0x242a92['groupId']||_0x242a92['groupId']!==this['groupId']);this['container']['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22variant-grouping-manager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h3>Manage\x20Task\x20Group</h3>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22vgm-close-btn\x22\x20title=\x22Close\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2220\x22\x20height=\x2220\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M18\x206L6\x2018M6\x206l12\x2012\x22/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section\x20vgm-grouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-title\x22>Grouped\x20Variants</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-count\x22>'+_0x20418f['length']+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-drop-zone\x20vgm-grouped-zone\x22\x20data-zone=\x22grouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x20418f['length']===0x0?'<div\x20class=\x22vgm-empty-hint\x22>Drag\x20variants\x20here\x20to\x20add\x20to\x20group</div>':_0x20418f['map']((_0x4081d5,_0x25266a)=>this['renderVariantCard'](_0x4081d5,_0x25266a,!![]))['join'](''))+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-divider\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-divider-line\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-divider-text\x22>Drag\x20to\x20move</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-divider-line\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section\x20vgm-ungrouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-title\x22>Ungrouped\x20Tasks</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-count\x22>'+_0x17b0ca['length']+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-drop-zone\x20vgm-ungrouped-zone\x22\x20data-zone=\x22ungrouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x17b0ca['length']===0x0?'<div\x20class=\x22vgm-empty-hint\x22>Drag\x20variants\x20here\x20to\x20remove\x20from\x20group</div>':_0x17b0ca['map']((_0x12accc,_0x2809e5)=>this['renderVariantCard'](_0x12accc,_0x2809e5,![]))['join'](''))+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22vgm-btn\x20vgm-btn-secondary\x20vgm-add-existing-btn\x22\x20title=\x22Add\x20an\x20existing\x20task\x20to\x20this\x20group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M12\x205v14M5\x2012h14\x22/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Add\x20Existing\x20Task\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}['renderVariantCard'](_0xd80d36,_0x1e0f43,_0x3630aa){const _0x40a0be=_0xd80d36['envVars']?.['CODER_AGENT']||_0xd80d36['envVars']?.['default_agent']||'claude',_0xb339e=AGENT_ICONS[_0x40a0be['toLowerCase']()]||AGENT_ICONS['claude'],_0x389c31=STATUS_ICONS[_0xd80d36['status']]||'',_0x7d92e5='status-'+(_0xd80d36['status']||'unknown'),_0x597a77=_0xd80d36['isWinner']?'<span\x20class=\x22vgm-badge\x20vgm-badge-winner\x22\x20title=\x22Winner\x22>★</span>':'',_0x9a2fc=_0xd80d36['approvedBy']?'<span\x20class=\x22vgm-badge\x20vgm-badge-approved\x22\x20title=\x22Approved\x22><svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22\x20width=\x2212\x22\x20height=\x2212\x22><path\x20d=\x22M14\x209V5a3\x203\x200\x200\x200-3-3l-4\x209v11h11.28a2\x202\x200\x200\x200\x202-1.7l1.38-9a2\x202\x200\x200\x200-2-2.3zM7\x2022H4a2\x202\x200\x200\x201-2-2v-7a2\x202\x200\x200\x201\x202-2h3\x22></path></svg></span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-card\x20'+_0x7d92e5+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draggable=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-task-id=\x22'+_0xd80d36['taskId']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-is-grouped=\x22'+_0x3630aa+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-index=\x22'+_0x1e0f43+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-drag-handle\x22\x20title=\x22Drag\x20to\x20reorder\x20or\x20move\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22currentColor\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M8\x206h2v2H8V6zm6\x200h2v2h-2V6zM8\x2011h2v2H8v-2zm6\x200h2v2h-2v-2zm-6\x205h2v2H8v-2zm6\x200h2v2h-2v-2z\x22/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-icon\x22\x20data-agent=\x22'+_0x40a0be['toLowerCase']()+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0xb339e+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-variant-name\x22>'+Utils['escapeHtml'](_0xd80d36['name']||'Task\x20'+_0xd80d36['taskId']['slice'](-0x6))+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-variant-meta\x22>'+Utils['escapeHtml'](_0x40a0be)+'\x20·\x20'+(_0xd80d36['status']||'unknown')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x597a77+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x9a2fc+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-status\x20'+_0x7d92e5+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x389c31+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22vgm-variant-remove-btn\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22'+(_0x3630aa?'Remove\x20from\x20group':'Add\x20to\x20group')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-task-id=\x22'+_0xd80d36['taskId']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-action=\x22'+(_0x3630aa?'remove':'add')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3630aa?'<path\x20d=\x22M18\x206L6\x2018M6\x206l12\x2012\x22/>':'<path\x20d=\x22M12\x205v14M5\x2012h14\x22/>')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}['attachEventListeners'](){if(!this['container'])return;this['container']['addEventListener']('click',_0x202c00=>{_0x202c00['target']['closest']('.vgm-close-btn')&&(this['close'](),this['onGroupChange'](this['tasks'])),_0x202c00['target']['closest']('.vgm-add-existing-btn')&&(this['close'](),this['onAddExistingTask'](this['groupId']));}),this['container']['addEventListener']('click',async _0x45af7b=>{const _0x38c262=_0x45af7b['target']['closest']('.vgm-variant-remove-btn');if(!_0x38c262)return;const _0x25d081=_0x38c262['dataset']['taskId'],_0x5752ee=_0x38c262['dataset']['action'];try{_0x5752ee==='remove'?await this['removeFromGroup'](_0x25d081):await this['addToGroup'](_0x25d081);}catch(_0x200907){console['error']('Failed\x20to\x20update\x20group:',_0x200907),Utils['showToast'](_0x200907['message']||'Failed\x20to\x20update\x20group','error');}}),this['container']['addEventListener']('dragstart',_0xf35242=>this['handleDragStart'](_0xf35242)),this['container']['addEventListener']('dragend',_0x472266=>this['handleDragEnd'](_0x472266)),this['container']['addEventListener']('dragover',_0x1cf6ab=>this['handleDragOver'](_0x1cf6ab)),this['container']['addEventListener']('dragleave',_0x20ea1c=>this['handleDragLeave'](_0x20ea1c)),this['container']['addEventListener']('drop',_0x101232=>this['handleDrop'](_0x101232));}['handleDragStart'](_0x328cbc){const _0x4715ff=_0x328cbc['target']['closest']('.vgm-variant-card');if(!_0x4715ff)return;dragState['draggedTaskId']=_0x4715ff['dataset']['taskId'],dragState['draggedElement']=_0x4715ff,dragState['sourceGroupId']=_0x4715ff['dataset']['isGrouped']==='true'?this['groupId']:null,dragState['isDragging']=!![],_0x4715ff['classList']['add']('dragging'),_0x328cbc['dataTransfer']['effectAllowed']='move',_0x328cbc['dataTransfer']['setData']('text/plain',_0x4715ff['dataset']['taskId']),this['container']['classList']['add']('is-dragging');}['handleDragEnd'](_0xb42461){const _0x1a6533=_0xb42461['target']['closest']('.vgm-variant-card');_0x1a6533&&_0x1a6533['classList']['remove']('dragging'),this['container']['querySelectorAll']('.drag-over,\x20.drop-indicator')['forEach'](_0x273883=>{_0x273883['classList']['remove']('drag-over','drop-indicator','drop-before','drop-after');}),this['container']['classList']['remove']('is-dragging'),dragState['isDragging']=![],dragState['draggedTaskId']=null,dragState['draggedElement']=null,dragState['sourceGroupId']=null;}['handleDragOver'](_0x104ffa){_0x104ffa['preventDefault'](),_0x104ffa['dataTransfer']['dropEffect']='move';const _0x134095=_0x104ffa['target']['closest']('.vgm-drop-zone'),_0x114816=_0x104ffa['target']['closest']('.vgm-variant-card');this['container']['querySelectorAll']('.vgm-drop-zone')['forEach'](_0x536919=>{_0x536919['classList']['toggle']('drag-over',_0x536919===_0x134095);});if(_0x114816&&_0x114816!==dragState['draggedElement']){const _0x2aafe2=_0x114816['getBoundingClientRect'](),_0x4abbb5=_0x2aafe2['top']+_0x2aafe2['height']/0x2,_0x31185e=_0x104ffa['clientY']<_0x4abbb5;this['container']['querySelectorAll']('.vgm-variant-card')['forEach'](_0x35e275=>{_0x35e275!==_0x114816&&_0x35e275['classList']['remove']('drop-before','drop-after');}),_0x114816['classList']['toggle']('drop-before',_0x31185e),_0x114816['classList']['toggle']('drop-after',!_0x31185e);}}['handleDragLeave'](_0x4b25ae){const _0x6b0162=_0x4b25ae['target']['closest']('.vgm-drop-zone');_0x6b0162&&!_0x6b0162['contains'](_0x4b25ae['relatedTarget'])&&_0x6b0162['classList']['remove']('drag-over');}async['handleDrop'](_0x103d6b){_0x103d6b['preventDefault']();const _0x3324dd=_0x103d6b['target']['closest']('.vgm-drop-zone'),_0x3ee0cd=_0x103d6b['target']['closest']('.vgm-variant-card'),_0x5c3b42=_0x103d6b['dataTransfer']['getData']('text/plain');if(!_0x3324dd||!_0x5c3b42)return;this['container']['querySelectorAll']('.drag-over,\x20.drop-before,\x20.drop-after')['forEach'](_0x570540=>{_0x570540['classList']['remove']('drag-over','drop-before','drop-after');});const _0x3a1178=_0x3324dd['dataset']['zone'],_0x4083a5=_0x3a1178==='grouped',_0x40e543=dragState['sourceGroupId']===this['groupId'];try{if(_0x4083a5&&!_0x40e543){let _0x110e2e=this['tasks']['filter'](_0x27e51a=>_0x27e51a['groupId']===this['groupId'])['length'];if(_0x3ee0cd){const _0x52c85b=_0x3ee0cd['dataset']['taskId'],_0x132237=this['tasks']['find'](_0x31beeb=>_0x31beeb['taskId']===_0x52c85b);if(_0x132237?.['groupIndex']!==undefined){const _0x5a58c6=_0x3ee0cd['getBoundingClientRect'](),_0x6b590f=_0x103d6b['clientY']<_0x5a58c6['top']+_0x5a58c6['height']/0x2;_0x110e2e=_0x132237['groupIndex']+(_0x6b590f?0x0:0x1);}}await this['addToGroup'](_0x5c3b42,_0x110e2e);}else{if(!_0x4083a5&&_0x40e543)await this['removeFromGroup'](_0x5c3b42);else _0x4083a5&&_0x40e543&&_0x3ee0cd&&await this['reorderInGroup'](_0x5c3b42,_0x3ee0cd,_0x103d6b['clientY']);}}catch(_0x2754b7){console['error']('Drop\x20operation\x20failed:',_0x2754b7),Utils['showToast'](_0x2754b7['message']||'Failed\x20to\x20move\x20variant','error');}}async['addToGroup'](_0x1d6163,_0x176b1a){const _0x1f0e9c=this['tasks']['find'](_0x599ef3=>_0x599ef3['taskId']===_0x1d6163);if(!_0x1f0e9c)return;_0x176b1a===undefined&&(_0x176b1a=this['tasks']['filter'](_0x3dd15a=>_0x3dd15a['groupId']===this['groupId'])['length']),!this['groupId']&&(this['groupId']=API['generateGroupId'](),await API['createTaskGroup']({'groupId':this['groupId']})),await API['updateTaskGroup'](_0x1d6163,this['groupId'],_0x176b1a),_0x1f0e9c['groupId']=this['groupId'],_0x1f0e9c['groupIndex']=_0x176b1a,this['render'](),this['onGroupChange'](this['tasks']);}async['removeFromGroup'](_0x5e9639){const _0x1f956e=this['tasks']['find'](_0x33dda2=>_0x33dda2['taskId']===_0x5e9639);if(!_0x1f956e)return;await API['removeTaskFromGroup'](_0x5e9639),_0x1f956e['groupId']=null,_0x1f956e['groupIndex']=null,this['render'](),this['onGroupChange'](this['tasks']);}async['reorderInGroup'](_0x399b2e,_0x664025,_0x31f314){const _0x2b1ed1=this['tasks']['find'](_0x1ff16d=>_0x1ff16d['taskId']===_0x399b2e),_0x3ec000=_0x664025['dataset']['taskId'],_0xca884c=this['tasks']['find'](_0x5c2483=>_0x5c2483['taskId']===_0x3ec000);if(!_0x2b1ed1||!_0xca884c||_0x2b1ed1['taskId']===_0xca884c['taskId'])return;const _0xae5539=_0x664025['getBoundingClientRect'](),_0xdba679=_0x31f314<_0xae5539['top']+_0xae5539['height']/0x2;let _0x526fcd=_0xca884c['groupIndex']??0x0;if(!_0xdba679)_0x526fcd++;if((_0x2b1ed1['groupIndex']??0x0)<(_0xca884c['groupIndex']??0x0))_0x526fcd--;if(_0x526fcd===_0x2b1ed1['groupIndex'])return;await API['updateTaskGroup'](_0x399b2e,this['groupId'],_0x526fcd);const _0x45c7a9=this['tasks']['filter'](_0x16b374=>_0x16b374['groupId']===this['groupId'])['sort']((_0xdb3405,_0x2a9ccf)=>(_0xdb3405['groupIndex']??0x0)-(_0x2a9ccf['groupIndex']??0x0)),_0x84377=_0x45c7a9['findIndex'](_0x301b79=>_0x301b79['taskId']===_0x399b2e);_0x84377!==-0x1&&_0x45c7a9['splice'](_0x84377,0x1),_0x45c7a9['splice'](_0x526fcd,0x0,_0x2b1ed1),_0x45c7a9['forEach']((_0x5345ab,_0x2a539d)=>{_0x5345ab['groupIndex']=_0x2a539d;}),this['render'](),this['onGroupChange'](this['tasks']);}}export function initializeTabDragDrop(_0x45382b,_0x4f815e,_0x23cb53,_0x2af259={}){if(!_0x45382b)return;const {onReorder:_0x1db26c,onRemove:_0x19fd63}=_0x2af259,_0x175861=_0x45382b['querySelectorAll']('.task-tab');_0x175861['forEach']((_0x55fdf9,_0x5eedca)=>{_0x55fdf9['setAttribute']('draggable','true'),_0x55fdf9['dataset']['index']=_0x5eedca,_0x55fdf9['addEventListener']('dragstart',_0x2bf722=>{_0x2bf722['dataTransfer']['effectAllowed']='move',_0x2bf722['dataTransfer']['setData']('text/plain',_0x55fdf9['dataset']['taskId']),_0x55fdf9['classList']['add']('dragging'),_0x45382b['classList']['add']('is-dragging');}),_0x55fdf9['addEventListener']('dragend',()=>{_0x55fdf9['classList']['remove']('dragging'),_0x45382b['classList']['remove']('is-dragging'),_0x45382b['querySelectorAll']('.drop-indicator')['forEach'](_0x2fb2f8=>{_0x2fb2f8['classList']['remove']('drop-indicator','drop-before','drop-after');});}),_0x55fdf9['addEventListener']('dragover',_0x399464=>{_0x399464['preventDefault'](),_0x399464['dataTransfer']['dropEffect']='move';if(_0x55fdf9['classList']['contains']('dragging'))return;const _0x17dd68=_0x55fdf9['getBoundingClientRect'](),_0x4610c2=_0x17dd68['left']+_0x17dd68['width']/0x2,_0x5db6f3=_0x399464['clientX']<_0x4610c2;_0x175861['forEach'](_0x3a6cac=>_0x3a6cac['classList']['remove']('drop-before','drop-after')),_0x55fdf9['classList']['add'](_0x5db6f3?'drop-before':'drop-after');}),_0x55fdf9['addEventListener']('dragleave',()=>{_0x55fdf9['classList']['remove']('drop-before','drop-after');}),_0x55fdf9['addEventListener']('drop',async _0x25331a=>{_0x25331a['preventDefault']();const _0x45d4ef=_0x25331a['dataTransfer']['getData']('text/plain'),_0x105359=_0x55fdf9['dataset']['taskId'];if(_0x45d4ef===_0x105359)return;const _0x34c147=_0x55fdf9['getBoundingClientRect'](),_0x39f3d4=_0x25331a['clientX']<_0x34c147['left']+_0x34c147['width']/0x2;_0x55fdf9['classList']['remove']('drop-before','drop-after'),_0x1db26c&&await _0x1db26c(_0x45d4ef,_0x105359,_0x39f3d4);});});const _0x30cf30=document['createElement']('div');return _0x30cf30['className']='task-tab-remove-zone',_0x30cf30['innerHTML']='\x0a\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20<path\x20d=\x22M18\x206L6\x2018M6\x206l12\x2012\x22/>\x0a\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20<span>Remove\x20from\x20group</span>\x0a\x20\x20',_0x30cf30['style']['display']='none',_0x30cf30['addEventListener']('dragover',_0x4e926e=>{_0x4e926e['preventDefault'](),_0x30cf30['classList']['add']('drag-over');}),_0x30cf30['addEventListener']('dragleave',()=>{_0x30cf30['classList']['remove']('drag-over');}),_0x30cf30['addEventListener']('drop',async _0x1e6445=>{_0x1e6445['preventDefault'](),_0x30cf30['classList']['remove']('drag-over');const _0x4a067d=_0x1e6445['dataTransfer']['getData']('text/plain');_0x19fd63&&await _0x19fd63(_0x4a067d);}),_0x45382b['addEventListener']('dragstart',()=>{_0x4f815e['length']>0x1&&(_0x30cf30['style']['display']='flex');}),_0x45382b['addEventListener']('dragend',()=>{_0x30cf30['style']['display']='none';}),_0x45382b['appendChild'](_0x30cf30),{'destroy':()=>{_0x30cf30['remove']();}};}export default VariantGroupingManager;
|
|
1
|
+
import{API,Utils}from'./app.js';const dragState={'draggedTaskId':null,'draggedElement':null,'sourceGroupId':null,'isDragging':![]},AGENT_ICONS={'claude':'<svg\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><path\x20d=\x22m3.127\x2010.604\x203.135-1.76.053-.153-.053-.085H6.11l-.525-.032-1.791-.048-1.554-.065-1.505-.08-.38-.081L0\x207.832l.036-.234.32-.214.455.04\x201.009.069\x201.513.105\x201.097.064\x201.626.17h.259l.036-.105-.089-.065-.068-.064-1.566-1.062-1.695-1.121-.887-.646-.48-.327-.243-.306-.104-.67.435-.48.585.04.15.04.593.456\x201.267.981\x201.654\x201.218.242.202.097-.068.012-.049-.109-.181-.9-1.626-.96-1.655-.428-.686-.113-.411a2\x202\x200\x200\x201-.068-.484l.496-.674L4.446\x200l.662.089.279.242.411.94.666\x201.48\x201.033\x202.014.302.597.162.553.06.17h.105v-.097l.085-1.134.157-1.392.154-1.792.052-.504.25-.605.497-.327.387.186.319.456-.045.294-.19\x201.23-.37\x201.93-.243\x201.29h.142l.161-.16.654-.868\x201.097-1.372.484-.545.565-.601.363-.287h.686l.505.751-.226.775-.707.895-.585.759-.839\x201.13-.524.904.048.072.125-.012\x201.897-.403\x201.024-.186\x201.223-.21.553.258.06.263-.218.536-1.307.323-1.533.307-2.284.54-.028.02.032.04\x201.029.098.44.024h1.077l2.005.15.525.346.315.424-.053.323-.807.411-3.631-.863-.872-.218h-.12v.073l.726.71\x201.331\x201.202\x201.667\x201.55.084.383-.214.302-.226-.032-1.464-1.101-.565-.497-1.28-1.077h-.084v.113l.295.432\x201.557\x202.34.08.718-.112.234-.404.141-.444-.08-.911-1.28-.94-1.44-.759-1.291-.093.053-.448\x204.821-.21.246-.484.186-.403-.307-.214-.496.214-.98.258-1.28.21-1.016.19-1.263.112-.42-.008-.028-.092.012-.953\x201.307-1.448\x201.957-1.146\x201.227-.274.109-.477-.247.045-.44.266-.39\x201.586-2.018.956-1.25.617-.723-.004-.105h-.036l-4.212\x204.212z\x22/></svg>','codex':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22currentColor\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><path\x20d=\x22M22.2819\x209.8211a5.9847\x205.9847\x200\x200\x200-.5157-4.9108\x206.0462\x206.0462\x200\x200\x200-6.5098-2.9A6.0651\x206.0651\x200\x200\x200\x204.9807\x204.1818a5.9847\x205.9847\x200\x200\x200-3.9977\x202.9\x206.0462\x206.0462\x200\x200\x200\x20.7427\x207.0966\x205.98\x205.98\x200\x200\x200\x20.511\x204.9107\x206.051\x206.051\x200\x200\x200\x206.5146\x202.9001A5.9847\x205.9847\x200\x200\x200\x2013.2599\x2024a6.0557\x206.0557\x200\x200\x200\x205.7718-4.2058\x205.9894\x205.9894\x200\x200\x200\x203.9977-2.9001\x206.0557\x206.0557\x200\x200\x200-.7475-7.0729zm-9.022\x2012.6081a4.4755\x204.4755\x200\x200\x201-2.8764-1.0408l.1419-.0804\x204.7783-2.7582a.7948.7948\x200\x200\x200\x20.3927-.6813v-6.7369l2.02\x201.1686a.071.071\x200\x200\x201\x20.038.052v5.5826a4.504\x204.504\x200\x200\x201-4.4945\x204.4944zm-9.6607-4.1254a4.4708\x204.4708\x200\x200\x201-.5346-3.0137l.142.0852\x204.783\x202.7582a.7712.7712\x200\x200\x200\x20.7806\x200l5.8428-3.3685v2.3324a.0804.0804\x200\x200\x201-.0332.0615L9.74\x2019.9502a4.4992\x204.4992\x200\x200\x201-6.1408-1.6464zM2.3408\x207.8956a4.485\x204.485\x200\x200\x201\x202.3655-1.9728V11.6a.7664.7664\x200\x200\x200\x20.3879.6765l5.8144\x203.3543-2.0201\x201.1685a.0757.0757\x200\x200\x201-.071\x200l-4.8303-2.7865A4.504\x204.504\x200\x200\x201\x202.3408\x207.872zm16.5963\x203.8558L13.1038\x208.364\x2015.1192\x207.2a.0757.0757\x200\x200\x201\x20.071\x200l4.8303\x202.7913a4.4944\x204.4944\x200\x200\x201-.6765\x208.1042v-5.6772a.79.79\x200\x200\x200-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759\x200\x200\x200-.7854\x200L9.409\x209.2297V6.8974a.0662.0662\x200\x200\x201\x20.0284-.0615l4.8303-2.7866a4.4992\x204.4992\x200\x200\x201\x206.6802\x204.66zM8.3065\x2012.863l-2.02-1.1638a.0804.0804\x200\x200\x201-.038-.0567V6.0742a4.4992\x204.4992\x200\x200\x201\x207.3757-3.4537l-.142.0805L8.704\x205.459a.7948.7948\x200\x200\x200-.3927.6813zm1.0976-2.3654l2.602-1.4998\x202.6069\x201.4998v2.9994l-2.5974\x201.4997-2.6067-1.4997Z\x22/></svg>','gemini':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><path\x20d=\x22M12\x202L9.09\x209.09\x202\x2012l7.09\x202.91L12\x2022l2.91-7.09L22\x2012l-7.09-2.91z\x22></path></svg>','unknown':'<svg\x20viewBox=\x220\x200\x2020\x2020\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x221.6\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20aria-hidden=\x22true\x22><circle\x20cx=\x2210\x22\x20cy=\x2210\x22\x20r=\x228\x22\x20/><path\x20d=\x22M10\x206.5c-1.1\x200-2\x20.7-2\x201.6\x200\x20.9\x201\x201.3\x201.6\x201.7.7.4\x201\x20.8\x201\x201.5V12\x22\x20/><circle\x20cx=\x2210\x22\x20cy=\x2214\x22\x20r=\x220.8\x22\x20fill=\x22currentColor\x22\x20stroke=\x22none\x22\x20/></svg>'},STATUS_ICONS={'running':'<svg\x20class=\x22status-icon\x20spinning\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222.5\x22\x20stroke-linecap=\x22round\x22><path\x20d=\x22M8\x202\x20A6\x206\x200\x200\x201\x2014\x208\x22/></svg>','completed':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm3.78\x206.28-4.5\x204.5a.75.75\x200\x200\x201-1.06\x200l-2-2a.75.75\x200\x201\x201\x201.06-1.06L6.75\x209.19l3.97-3.97a.75.75\x200\x201\x201\x201.06\x201.06z\x22/></svg>','failed':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm3.53\x2010.47a.75.75\x200\x201\x201-1.06\x201.06L8\x209.06l-2.47\x202.47a.75.75\x200\x200\x201-1.06-1.06L6.94\x208\x204.47\x205.53a.75.75\x200\x200\x201\x201.06-1.06L8\x206.94l2.47-2.47a.75.75\x200\x200\x201\x201.06\x201.06L9.06\x208l2.47\x202.47z\x22/></svg>','staged':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm0\x2012a.75.75\x200\x201\x201\x200-1.5.75.75\x200\x200\x201\x200\x201.5zm1-3.5a1\x201\x200\x200\x201-2\x200V5a1\x201\x200\x201\x201\x202\x200v3.5z\x22/></svg>','queued':'<svg\x20class=\x22status-icon\x22\x20viewBox=\x220\x200\x2016\x2016\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M8\x200a8\x208\x200\x201\x200\x200\x2016A8\x208\x200\x200\x200\x208\x200zm0\x2014A6\x206\x200\x201\x201\x208\x202a6\x206\x200\x200\x201\x200\x2012zm1-6.5V4H7v4.5l3\x203\x201.5-1.5-2.5-2.5z\x22/></svg>'};export class VariantGroupingManager{constructor(_0x3ddc30={}){this['container']=null,this['onGroupChange']=_0x3ddc30['onGroupChange']||(()=>{}),this['onAddExistingTask']=_0x3ddc30['onAddExistingTask']||(()=>{}),this['tasks']=[],this['groupId']=_0x3ddc30['groupId']||null,this['isOpen']=![];}['init'](_0x3911f4,_0x168547,_0x849830){this['container']=_0x3911f4,this['tasks']=_0x168547,this['groupId']=_0x849830,this['render'](),this['attachEventListeners']();}['updateTasks'](_0x48b780){const _0x241efb=new Map(_0x48b780['map'](_0x29e0e9=>[_0x29e0e9['taskId'],_0x29e0e9]));this['tasks']=this['tasks']['map'](_0xabcd3c=>{const _0x29e790=_0x241efb['get'](_0xabcd3c['taskId']);return _0x29e790?_0x29e790:_0xabcd3c;});for(const _0x23196e of _0x48b780){!this['tasks']['some'](_0xb8f513=>_0xb8f513['taskId']===_0x23196e['taskId'])&&this['tasks']['push'](_0x23196e);}this['isOpen']&&this['render']();}['open'](){this['isOpen']=!![],this['render'](),this['container']?.['classList']['add']('open');}['close'](){this['isOpen']=![],this['container']?.['classList']['remove']('open');}['render'](){if(!this['container'])return;const _0x3a46a1=this['tasks']['filter'](_0x5de600=>_0x5de600['groupId']===this['groupId'])['sort']((_0x4e39bd,_0x1fbb5e)=>(_0x4e39bd['groupIndex']??0x0)-(_0x1fbb5e['groupIndex']??0x0)),_0x4c60be=this['tasks']['filter'](_0xc967a4=>!_0xc967a4['groupId']||_0xc967a4['groupId']!==this['groupId']);this['container']['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22variant-grouping-manager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h3>Manage\x20Task\x20Group</h3>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22vgm-close-btn\x22\x20title=\x22Close\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2220\x22\x20height=\x2220\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M18\x206L6\x2018M6\x206l12\x2012\x22/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section\x20vgm-grouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-title\x22>Grouped\x20Variants</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-count\x22>'+_0x3a46a1['length']+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-drop-zone\x20vgm-grouped-zone\x22\x20data-zone=\x22grouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3a46a1['length']===0x0?'<div\x20class=\x22vgm-empty-hint\x22>Drag\x20variants\x20here\x20to\x20add\x20to\x20group</div>':_0x3a46a1['map']((_0x3ba701,_0x4467ed)=>this['renderVariantCard'](_0x3ba701,_0x4467ed,!![]))['join'](''))+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-divider\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-divider-line\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-divider-text\x22>Drag\x20to\x20move</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-divider-line\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section\x20vgm-ungrouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-title\x22>Ungrouped\x20Tasks</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-section-count\x22>'+_0x4c60be['length']+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-drop-zone\x20vgm-ungrouped-zone\x22\x20data-zone=\x22ungrouped\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4c60be['length']===0x0?'<div\x20class=\x22vgm-empty-hint\x22>Drag\x20variants\x20here\x20to\x20remove\x20from\x20group</div>':_0x4c60be['map']((_0x2fb1a1,_0x289b99)=>this['renderVariantCard'](_0x2fb1a1,_0x289b99,![]))['join'](''))+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22vgm-btn\x20vgm-btn-secondary\x20vgm-add-existing-btn\x22\x20title=\x22Add\x20an\x20existing\x20task\x20to\x20this\x20group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M12\x205v14M5\x2012h14\x22/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Add\x20Existing\x20Task\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}['renderVariantCard'](_0x1809ad,_0x4f2594,_0xe02027){const _0x2ab141=_0x1809ad['envVars']?.['CODER_AGENT']||_0x1809ad['envVars']?.['default_agent']||'claude',_0x1a28bb=AGENT_ICONS[_0x2ab141['toLowerCase']()]||AGENT_ICONS['claude'],_0x40c96b=STATUS_ICONS[_0x1809ad['status']]||'',_0x6dd4c7='status-'+(_0x1809ad['status']||'unknown'),_0xd70a23=_0x1809ad['isWinner']?'<span\x20class=\x22vgm-badge\x20vgm-badge-winner\x22\x20title=\x22Winner\x22>★</span>':'',_0x27fa49=_0x1809ad['approvedBy']?'<span\x20class=\x22vgm-badge\x20vgm-badge-approved\x22\x20title=\x22Approved\x22><svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22\x20width=\x2212\x22\x20height=\x2212\x22><path\x20d=\x22M14\x209V5a3\x203\x200\x200\x200-3-3l-4\x209v11h11.28a2\x202\x200\x200\x200\x202-1.7l1.38-9a2\x202\x200\x200\x200-2-2.3zM7\x2022H4a2\x202\x200\x200\x201-2-2v-7a2\x202\x200\x200\x201\x202-2h3\x22></path></svg></span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-card\x20'+_0x6dd4c7+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20draggable=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-task-id=\x22'+_0x1809ad['taskId']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-is-grouped=\x22'+_0xe02027+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-index=\x22'+_0x4f2594+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-drag-handle\x22\x20title=\x22Drag\x20to\x20reorder\x20or\x20move\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22currentColor\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M8\x206h2v2H8V6zm6\x200h2v2h-2V6zM8\x2011h2v2H8v-2zm6\x200h2v2h-2v-2zm-6\x205h2v2H8v-2zm6\x200h2v2h-2v-2z\x22/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-icon\x22\x20data-agent=\x22'+_0x2ab141['toLowerCase']()+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1a28bb+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-variant-name\x22>'+Utils['escapeHtml'](_0x1809ad['name']||'Task\x20'+_0x1809ad['taskId']['slice'](-0x6))+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vgm-variant-meta\x22>'+Utils['escapeHtml'](_0x2ab141)+'\x20·\x20'+(_0x1809ad['status']||'unknown')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0xd70a23+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x27fa49+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22vgm-variant-status\x20'+_0x6dd4c7+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x40c96b+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22vgm-variant-remove-btn\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22'+(_0xe02027?'Remove\x20from\x20group':'Add\x20to\x20group')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-task-id=\x22'+_0x1809ad['taskId']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-action=\x22'+(_0xe02027?'remove':'add')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xe02027?'<path\x20d=\x22M18\x206L6\x2018M6\x206l12\x2012\x22/>':'<path\x20d=\x22M12\x205v14M5\x2012h14\x22/>')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}['attachEventListeners'](){if(!this['container'])return;this['container']['addEventListener']('click',_0x473e13=>{_0x473e13['target']['closest']('.vgm-close-btn')&&(this['close'](),this['onGroupChange'](this['tasks'])),_0x473e13['target']['closest']('.vgm-add-existing-btn')&&(this['close'](),this['onAddExistingTask'](this['groupId']));}),this['container']['addEventListener']('click',async _0x1620a4=>{const _0x4d1983=_0x1620a4['target']['closest']('.vgm-variant-remove-btn');if(!_0x4d1983)return;const _0x4141f4=_0x4d1983['dataset']['taskId'],_0xef44a9=_0x4d1983['dataset']['action'];try{_0xef44a9==='remove'?await this['removeFromGroup'](_0x4141f4):await this['addToGroup'](_0x4141f4);}catch(_0xb191ba){console['error']('Failed\x20to\x20update\x20group:',_0xb191ba),Utils['showToast'](_0xb191ba['message']||'Failed\x20to\x20update\x20group','error');}}),this['container']['addEventListener']('dragstart',_0x208852=>this['handleDragStart'](_0x208852)),this['container']['addEventListener']('dragend',_0x59368b=>this['handleDragEnd'](_0x59368b)),this['container']['addEventListener']('dragover',_0x8c01f=>this['handleDragOver'](_0x8c01f)),this['container']['addEventListener']('dragleave',_0x13e4ad=>this['handleDragLeave'](_0x13e4ad)),this['container']['addEventListener']('drop',_0x1315ee=>this['handleDrop'](_0x1315ee));}['handleDragStart'](_0x38d747){const _0x4c8b89=_0x38d747['target']['closest']('.vgm-variant-card');if(!_0x4c8b89)return;dragState['draggedTaskId']=_0x4c8b89['dataset']['taskId'],dragState['draggedElement']=_0x4c8b89,dragState['sourceGroupId']=_0x4c8b89['dataset']['isGrouped']==='true'?this['groupId']:null,dragState['isDragging']=!![],_0x4c8b89['classList']['add']('dragging'),_0x38d747['dataTransfer']['effectAllowed']='move',_0x38d747['dataTransfer']['setData']('text/plain',_0x4c8b89['dataset']['taskId']),this['container']['classList']['add']('is-dragging');}['handleDragEnd'](_0x484a0f){const _0x5ee5f8=_0x484a0f['target']['closest']('.vgm-variant-card');_0x5ee5f8&&_0x5ee5f8['classList']['remove']('dragging'),this['container']['querySelectorAll']('.drag-over,\x20.drop-indicator')['forEach'](_0x37af7b=>{_0x37af7b['classList']['remove']('drag-over','drop-indicator','drop-before','drop-after');}),this['container']['classList']['remove']('is-dragging'),dragState['isDragging']=![],dragState['draggedTaskId']=null,dragState['draggedElement']=null,dragState['sourceGroupId']=null;}['handleDragOver'](_0x55aacb){_0x55aacb['preventDefault'](),_0x55aacb['dataTransfer']['dropEffect']='move';const _0x5b73e0=_0x55aacb['target']['closest']('.vgm-drop-zone'),_0x1acd8e=_0x55aacb['target']['closest']('.vgm-variant-card');this['container']['querySelectorAll']('.vgm-drop-zone')['forEach'](_0x566717=>{_0x566717['classList']['toggle']('drag-over',_0x566717===_0x5b73e0);});if(_0x1acd8e&&_0x1acd8e!==dragState['draggedElement']){const _0x12c429=_0x1acd8e['getBoundingClientRect'](),_0x5f22e1=_0x12c429['top']+_0x12c429['height']/0x2,_0x13783c=_0x55aacb['clientY']<_0x5f22e1;this['container']['querySelectorAll']('.vgm-variant-card')['forEach'](_0x24aea9=>{_0x24aea9!==_0x1acd8e&&_0x24aea9['classList']['remove']('drop-before','drop-after');}),_0x1acd8e['classList']['toggle']('drop-before',_0x13783c),_0x1acd8e['classList']['toggle']('drop-after',!_0x13783c);}}['handleDragLeave'](_0xf5d78c){const _0x256aaa=_0xf5d78c['target']['closest']('.vgm-drop-zone');_0x256aaa&&!_0x256aaa['contains'](_0xf5d78c['relatedTarget'])&&_0x256aaa['classList']['remove']('drag-over');}async['handleDrop'](_0x4ce006){_0x4ce006['preventDefault']();const _0x2ebc85=_0x4ce006['target']['closest']('.vgm-drop-zone'),_0x4ccf9f=_0x4ce006['target']['closest']('.vgm-variant-card'),_0x14b79d=_0x4ce006['dataTransfer']['getData']('text/plain');if(!_0x2ebc85||!_0x14b79d)return;this['container']['querySelectorAll']('.drag-over,\x20.drop-before,\x20.drop-after')['forEach'](_0x340036=>{_0x340036['classList']['remove']('drag-over','drop-before','drop-after');});const _0x5caed9=_0x2ebc85['dataset']['zone'],_0xd41007=_0x5caed9==='grouped',_0x3222e0=dragState['sourceGroupId']===this['groupId'];try{if(_0xd41007&&!_0x3222e0){let _0x19abc0=this['tasks']['filter'](_0x4946c=>_0x4946c['groupId']===this['groupId'])['length'];if(_0x4ccf9f){const _0xc98d60=_0x4ccf9f['dataset']['taskId'],_0x5597f1=this['tasks']['find'](_0x17bd3a=>_0x17bd3a['taskId']===_0xc98d60);if(_0x5597f1?.['groupIndex']!==undefined){const _0x1bb9f4=_0x4ccf9f['getBoundingClientRect'](),_0x3cd60a=_0x4ce006['clientY']<_0x1bb9f4['top']+_0x1bb9f4['height']/0x2;_0x19abc0=_0x5597f1['groupIndex']+(_0x3cd60a?0x0:0x1);}}await this['addToGroup'](_0x14b79d,_0x19abc0);}else{if(!_0xd41007&&_0x3222e0)await this['removeFromGroup'](_0x14b79d);else _0xd41007&&_0x3222e0&&_0x4ccf9f&&await this['reorderInGroup'](_0x14b79d,_0x4ccf9f,_0x4ce006['clientY']);}}catch(_0x482d66){console['error']('Drop\x20operation\x20failed:',_0x482d66),Utils['showToast'](_0x482d66['message']||'Failed\x20to\x20move\x20variant','error');}}async['addToGroup'](_0x8d723d,_0x59fe5d){const _0x434d3c=this['tasks']['find'](_0x40b5d0=>_0x40b5d0['taskId']===_0x8d723d);if(!_0x434d3c)return;_0x59fe5d===undefined&&(_0x59fe5d=this['tasks']['filter'](_0x4d4b68=>_0x4d4b68['groupId']===this['groupId'])['length']),!this['groupId']&&(this['groupId']=API['generateGroupId'](),await API['createTaskGroup']({'groupId':this['groupId']})),await API['updateTaskGroup'](_0x8d723d,this['groupId'],_0x59fe5d),_0x434d3c['groupId']=this['groupId'],_0x434d3c['groupIndex']=_0x59fe5d,this['render'](),this['onGroupChange'](this['tasks']);}async['removeFromGroup'](_0x2aa68a){const _0xa9a051=this['tasks']['find'](_0xafc645=>_0xafc645['taskId']===_0x2aa68a);if(!_0xa9a051)return;await API['removeTaskFromGroup'](_0x2aa68a),_0xa9a051['groupId']=null,_0xa9a051['groupIndex']=null,this['render'](),this['onGroupChange'](this['tasks']);}async['reorderInGroup'](_0x13219f,_0x237b74,_0x4e84d2){const _0x2f970=this['tasks']['find'](_0x385bbd=>_0x385bbd['taskId']===_0x13219f),_0x2724ec=_0x237b74['dataset']['taskId'],_0x2dde45=this['tasks']['find'](_0x32aa3c=>_0x32aa3c['taskId']===_0x2724ec);if(!_0x2f970||!_0x2dde45||_0x2f970['taskId']===_0x2dde45['taskId'])return;const _0xa2c7ca=_0x237b74['getBoundingClientRect'](),_0x3d378f=_0x4e84d2<_0xa2c7ca['top']+_0xa2c7ca['height']/0x2;let _0xc31331=_0x2dde45['groupIndex']??0x0;if(!_0x3d378f)_0xc31331++;if((_0x2f970['groupIndex']??0x0)<(_0x2dde45['groupIndex']??0x0))_0xc31331--;if(_0xc31331===_0x2f970['groupIndex'])return;await API['updateTaskGroup'](_0x13219f,this['groupId'],_0xc31331);const _0x46686a=this['tasks']['filter'](_0x26e23e=>_0x26e23e['groupId']===this['groupId'])['sort']((_0x3bb86a,_0x294947)=>(_0x3bb86a['groupIndex']??0x0)-(_0x294947['groupIndex']??0x0)),_0x42ea86=_0x46686a['findIndex'](_0x5f2a01=>_0x5f2a01['taskId']===_0x13219f);_0x42ea86!==-0x1&&_0x46686a['splice'](_0x42ea86,0x1),_0x46686a['splice'](_0xc31331,0x0,_0x2f970),_0x46686a['forEach']((_0x3da15f,_0x2ce13d)=>{_0x3da15f['groupIndex']=_0x2ce13d;}),this['render'](),this['onGroupChange'](this['tasks']);}}export function initializeTabDragDrop(_0x127458,_0x242be8,_0x44fa98,_0x22ca6b={}){if(!_0x127458)return;const {onReorder:_0x2e9457,onRemove:_0x5409a8}=_0x22ca6b,_0x49fdb5=_0x127458['querySelectorAll']('.task-tab');_0x49fdb5['forEach']((_0x548241,_0x405b53)=>{_0x548241['setAttribute']('draggable','true'),_0x548241['dataset']['index']=_0x405b53,_0x548241['addEventListener']('dragstart',_0x2f1531=>{_0x2f1531['dataTransfer']['effectAllowed']='move',_0x2f1531['dataTransfer']['setData']('text/plain',_0x548241['dataset']['taskId']),_0x548241['classList']['add']('dragging'),_0x127458['classList']['add']('is-dragging');}),_0x548241['addEventListener']('dragend',()=>{_0x548241['classList']['remove']('dragging'),_0x127458['classList']['remove']('is-dragging'),_0x127458['querySelectorAll']('.drop-indicator')['forEach'](_0x5f3b43=>{_0x5f3b43['classList']['remove']('drop-indicator','drop-before','drop-after');});}),_0x548241['addEventListener']('dragover',_0x19460a=>{_0x19460a['preventDefault'](),_0x19460a['dataTransfer']['dropEffect']='move';if(_0x548241['classList']['contains']('dragging'))return;const _0x374f97=_0x548241['getBoundingClientRect'](),_0x38e518=_0x374f97['left']+_0x374f97['width']/0x2,_0x76bc4c=_0x19460a['clientX']<_0x38e518;_0x49fdb5['forEach'](_0x28ed43=>_0x28ed43['classList']['remove']('drop-before','drop-after')),_0x548241['classList']['add'](_0x76bc4c?'drop-before':'drop-after');}),_0x548241['addEventListener']('dragleave',()=>{_0x548241['classList']['remove']('drop-before','drop-after');}),_0x548241['addEventListener']('drop',async _0x3f9da1=>{_0x3f9da1['preventDefault']();const _0x358f34=_0x3f9da1['dataTransfer']['getData']('text/plain'),_0x2bbccf=_0x548241['dataset']['taskId'];if(_0x358f34===_0x2bbccf)return;const _0x3c6fdd=_0x548241['getBoundingClientRect'](),_0x25ae16=_0x3f9da1['clientX']<_0x3c6fdd['left']+_0x3c6fdd['width']/0x2;_0x548241['classList']['remove']('drop-before','drop-after'),_0x2e9457&&await _0x2e9457(_0x358f34,_0x2bbccf,_0x25ae16);});});const _0x322d28=document['createElement']('div');return _0x322d28['className']='task-tab-remove-zone',_0x322d28['innerHTML']='\x0a\x20\x20\x20\x20<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20<path\x20d=\x22M18\x206L6\x2018M6\x206l12\x2012\x22/>\x0a\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20<span>Remove\x20from\x20group</span>\x0a\x20\x20',_0x322d28['style']['display']='none',_0x322d28['addEventListener']('dragover',_0xb16d45=>{_0xb16d45['preventDefault'](),_0x322d28['classList']['add']('drag-over');}),_0x322d28['addEventListener']('dragleave',()=>{_0x322d28['classList']['remove']('drag-over');}),_0x322d28['addEventListener']('drop',async _0x409d5c=>{_0x409d5c['preventDefault'](),_0x322d28['classList']['remove']('drag-over');const _0x5beef8=_0x409d5c['dataTransfer']['getData']('text/plain');_0x5409a8&&await _0x5409a8(_0x5beef8);}),_0x127458['addEventListener']('dragstart',()=>{_0x242be8['length']>0x1&&(_0x322d28['style']['display']='flex');}),_0x127458['addEventListener']('dragend',()=>{_0x322d28['style']['display']='none';}),_0x127458['appendChild'](_0x322d28),{'destroy':()=>{_0x322d28['remove']();}};}export default VariantGroupingManager;
|