@yancyyu/openhermit 1.6.42 → 1.6.43
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/README.md +98 -89
- package/bin/hermit.mjs +96 -0
- package/dist-renderer/assets/{ProjectEditorOverlay-DlFQ6mai.js → ProjectEditorOverlay-C98qSs7-.js} +1 -1
- package/dist-renderer/assets/{TeamGraphOverlay-D2TPMPGR.js → TeamGraphOverlay-CsBbZwcL.js} +1 -1
- package/dist-renderer/assets/{_basePickBy-Cmd0RHLQ.js → _basePickBy-ZOyLWjMK.js} +1 -1
- package/dist-renderer/assets/{_baseUniq-BI_iy8ea.js → _baseUniq-DBb726rt.js} +1 -1
- package/dist-renderer/assets/{arc-NzW2mjTP.js → arc-CdiTaR_R.js} +1 -1
- package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-Bzq85AYv.js → architectureDiagram-VXUJARFQ-Cz3sc5TH.js} +1 -1
- package/dist-renderer/assets/{blockDiagram-VD42YOAC-D1PvYS-b.js → blockDiagram-VD42YOAC-DE4c-KJ3.js} +1 -1
- package/dist-renderer/assets/{c4Diagram-YG6GDRKO-D49RKzPC.js → c4Diagram-YG6GDRKO-CmTMDTrV.js} +1 -1
- package/dist-renderer/assets/channel-KTpqi9eT.js +1 -0
- package/dist-renderer/assets/{chunk-4BX2VUAB-fmI_MQmQ.js → chunk-4BX2VUAB-rhHy3tFl.js} +1 -1
- package/dist-renderer/assets/{chunk-55IACEB6-Xsv9RCXZ.js → chunk-55IACEB6-fLZBzuo_.js} +1 -1
- package/dist-renderer/assets/{chunk-B4BG7PRW-BE1KO8Um.js → chunk-B4BG7PRW-DOzxQhim.js} +1 -1
- package/dist-renderer/assets/{chunk-DI55MBZ5-tqJ7Mv7f.js → chunk-DI55MBZ5-COQCcXC5.js} +1 -1
- package/dist-renderer/assets/{chunk-FMBD7UC4-DMD45MVJ.js → chunk-FMBD7UC4-IKU9U_Y4.js} +1 -1
- package/dist-renderer/assets/{chunk-QN33PNHL-DOhGrz-q.js → chunk-QN33PNHL-D6WV154X.js} +1 -1
- package/dist-renderer/assets/{chunk-QZHKN3VN-D8yDgJdD.js → chunk-QZHKN3VN-D90_2DQp.js} +1 -1
- package/dist-renderer/assets/{chunk-TZMSLE5B-BcsEDu7A.js → chunk-TZMSLE5B-BQEil57G.js} +1 -1
- package/dist-renderer/assets/classDiagram-2ON5EDUG-lpzulY5X.js +1 -0
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-lpzulY5X.js +1 -0
- package/dist-renderer/assets/clone-CriGymY9.js +1 -0
- package/dist-renderer/assets/{cose-bilkent-S5V4N54A-DlSqGHMX.js → cose-bilkent-S5V4N54A-6WiK6U2P.js} +1 -1
- package/dist-renderer/assets/{dagre-6UL2VRFP-BTT9tSAx.js → dagre-6UL2VRFP-DF4MMuTn.js} +1 -1
- package/dist-renderer/assets/{diagram-PSM6KHXK-Du-U-mK2.js → diagram-PSM6KHXK-CcF1eZ7E.js} +1 -1
- package/dist-renderer/assets/{diagram-QEK2KX5R-jFdHeKas.js → diagram-QEK2KX5R-DYlOVPQB.js} +1 -1
- package/dist-renderer/assets/{diagram-S2PKOQOG-DKLNK2bu.js → diagram-S2PKOQOG-BHXWsZOP.js} +1 -1
- package/dist-renderer/assets/{erDiagram-Q2GNP2WA-CZxHgIIo.js → erDiagram-Q2GNP2WA-GjmuBx8d.js} +1 -1
- package/dist-renderer/assets/{flowDiagram-NV44I4VS-v4XStCD0.js → flowDiagram-NV44I4VS-BuS7YVHk.js} +1 -1
- package/dist-renderer/assets/{ganttDiagram-JELNMOA3-DJjD_BEL.js → ganttDiagram-JELNMOA3-3Teu5tAa.js} +1 -1
- package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-BNy-jr03.js → gitGraphDiagram-V2S2FVAM-BiLdCYu5.js} +1 -1
- package/dist-renderer/assets/{graph-DDTrn6je.js → graph-CDP_R8ct.js} +1 -1
- package/dist-renderer/assets/{index-BBp78BAu.js → index-BSZdT-g-.js} +1 -1
- package/dist-renderer/assets/{index-eotrJaYy.js → index-BhWvMqsz.js} +1 -1
- package/dist-renderer/assets/{index-D8_B-cfs.js → index-C2_AupSj.js} +1 -1
- package/dist-renderer/assets/{index-BQrwHZ-k.js → index-C5ujiwAR.js} +580 -588
- package/dist-renderer/assets/index-CIS2CTK9.css +1 -0
- package/dist-renderer/assets/{index-CRKQSG9S.js → index-CVNjLwkq.js} +1 -1
- package/dist-renderer/assets/{index-DR6Wz52b.js → index-CwG3se0q.js} +1 -1
- package/dist-renderer/assets/{infoDiagram-HS3SLOUP-DqnOsuza.js → infoDiagram-HS3SLOUP-DLHUFo72.js} +1 -1
- package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-DTobaO1d.js → journeyDiagram-XKPGCS4Q-BE07RpJD.js} +1 -1
- package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-HbwVOvWc.js → kanban-definition-3W4ZIXB7-DDHZy4NB.js} +1 -1
- package/dist-renderer/assets/{layout--VYmTcw2.js → layout-5nA5wUxO.js} +1 -1
- package/dist-renderer/assets/{linear-BsJh89Mr.js → linear-BtF1i2qN.js} +1 -1
- package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-BZqUZePd.js → mindmap-definition-VGOIOE7T-Z1Ui9Sqy.js} +1 -1
- package/dist-renderer/assets/{pieDiagram-ADFJNKIX-B1q_nH6P.js → pieDiagram-ADFJNKIX-LCjxckWv.js} +1 -1
- package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-UD8QhSEu.js → quadrantDiagram-AYHSOK5B-BOwKjSco.js} +1 -1
- package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-BA_i7Nw8.js → requirementDiagram-UZGBJVZJ-pChP8Znd.js} +1 -1
- package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-CMTnX-2d.js → sankeyDiagram-TZEHDZUN-DifZ2qpo.js} +1 -1
- package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-BQXDB615.js → sequenceDiagram-WL72ISMW-CJg-WYyY.js} +1 -1
- package/dist-renderer/assets/{splashScene-D0YB9uxm.js → splashScene-94xWCzLA.js} +1 -1
- package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-BAsPXy6X.js → stateDiagram-FKZM4ZOC-DWHOoFdv.js} +1 -1
- package/dist-renderer/assets/stateDiagram-v2-4FDKWEC3-CGYZOoMb.js +1 -0
- package/dist-renderer/assets/{timeline-definition-IT6M3QCI-BdasmVkC.js → timeline-definition-IT6M3QCI-CPgokIo8.js} +1 -1
- package/dist-renderer/assets/{treemap-GDKQZRPO-BkKQqIui.js → treemap-GDKQZRPO-DAVqSR9L.js} +1 -1
- package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-EAlPHOdx.js → xychartDiagram-PRI3JC2R-CCOcGbrD.js} +1 -1
- package/dist-renderer/chat-community-qr.jpg +0 -0
- package/dist-renderer/fonts/Agave-Bold.ttf +0 -0
- package/dist-renderer/fonts/Agave-Regular.ttf +0 -0
- package/dist-renderer/icon.png +0 -0
- package/dist-renderer/icon.rar +0 -0
- package/dist-renderer/index.html +3 -3
- package/package.json +21 -26
- package/src/features/worker-society/core/application/WorkerSocietyService.test.ts +802 -0
- package/src/features/worker-society/core/application/WorkerSocietyService.ts +428 -0
- package/src/features/worker-society/core/application/fakes.ts +101 -0
- package/src/features/worker-society/core/application/ports.ts +70 -0
- package/src/features/worker-society/core/domain/models/society.ts +141 -0
- package/src/features/worker-society/core/domain/policies/societyPolicies.test.ts +739 -0
- package/src/features/worker-society/core/domain/policies/societyPolicies.ts +496 -0
- package/src/features/worker-society/main/adapters/input/societyMcp.test.ts +317 -0
- package/src/features/worker-society/main/adapters/input/societyMcp.ts +257 -0
- package/src/features/worker-society/main/adapters/input/societyRoutes.test.ts +695 -0
- package/src/features/worker-society/main/adapters/input/societyRoutes.ts +194 -0
- package/src/features/worker-society/main/composition/societyComposition.test.ts +74 -0
- package/src/features/worker-society/main/composition/societyComposition.ts +70 -0
- package/src/features/worker-society/main/composition/workerSocietyPlugin.test.ts +69 -0
- package/src/features/worker-society/main/composition/workerSocietyPlugin.ts +67 -0
- package/src/features/worker-society/main/infrastructure/crossTeamMessageGateway.test.ts +132 -0
- package/src/features/worker-society/main/infrastructure/crossTeamMessageGateway.ts +84 -0
- package/src/features/worker-society/main/infrastructure/fsStores.test.ts +216 -0
- package/src/features/worker-society/main/infrastructure/fsStores.ts +113 -0
- package/src/features/worker-society/main/infrastructure/mergingProfileStore.test.ts +195 -0
- package/src/features/worker-society/main/infrastructure/mergingProfileStore.ts +96 -0
- package/src/features/worker-society/renderer/SocietyGraph.tsx +166 -0
- package/src/features/worker-society/renderer/SocietyNodeLabels.tsx +139 -0
- package/src/features/worker-society/renderer/SocietyNodeOverlay.tsx +339 -0
- package/src/features/worker-society/renderer/SocietyView.tsx +437 -0
- package/src/features/worker-society/renderer/index.ts +11 -0
- package/src/features/worker-society/renderer/societyApi.test.ts +259 -0
- package/src/features/worker-society/renderer/societyApi.ts +144 -0
- package/src/features/worker-society/renderer/societyGraphAdapter.test.ts +321 -0
- package/src/features/worker-society/renderer/societyGraphAdapter.ts +240 -0
- package/src/features/worker-society/renderer/societyOverlayActions.test.ts +57 -0
- package/src/features/worker-society/renderer/societyOverlayActions.ts +49 -0
- package/src/features/worker-society/renderer/societyStore.test.ts +218 -0
- package/src/features/worker-society/renderer/societyStore.ts +146 -0
- package/src/features/worker-society/renderer/societyViewUtils.test.ts +81 -0
- package/src/features/worker-society/renderer/societyViewUtils.ts +68 -0
- package/src/main/ipc/extensions.ts +27 -0
- package/src/main/server.ts +1709 -534
- package/src/main/services/ccConnect/CcConnectBridge.ts +26 -11
- package/src/main/services/ccConnect/CcConnectClient.ts +9 -2
- package/src/main/services/ccConnect/workDirReconcile.test.ts +57 -0
- package/src/main/services/ccConnect/workDirReconcile.ts +36 -0
- package/src/main/services/direct-cli/DirectCliSessionManager.test.ts +397 -0
- package/src/main/services/direct-cli/DirectCliSessionManager.ts +508 -0
- package/src/main/services/direct-cli/DirectCliSessionStore.test.ts +79 -0
- package/src/main/services/direct-cli/DirectCliSessionStore.ts +97 -0
- package/src/main/services/direct-cli/__tests__/directCliMessageId.test.ts +40 -0
- package/src/main/services/direct-cli/directCliMessageId.ts +21 -0
- package/src/main/services/direct-cli/index.ts +17 -0
- package/src/main/services/extensions/capability-packs/CapabilityPackLoaderService.ts +637 -0
- package/src/main/services/extensions/catalog/PluginCatalogService.ts +2 -2
- package/src/main/services/loop-assets/LoopAssetsScannerService.ts +657 -0
- package/src/main/services/runtime/providerAwareCliEnv.ts +33 -5
- package/src/main/services/session-intelligence/LocalSessionScanner.ts +156 -71
- package/src/main/services/session-intelligence/SessionUsageParser.ts +103 -8
- package/src/main/services/session-intelligence/UsageTelemetryService.ts +11 -0
- package/src/main/services/session-intelligence/__tests__/teamSessionListMapper.test.ts +104 -0
- package/src/main/services/session-intelligence/teamSessionListMapper.ts +78 -0
- package/src/main/services/system-manager/AdminLoopInitializer.ts +95 -0
- package/src/main/services/system-manager/BuiltinWorkflowSeeder.ts +679 -74
- package/src/main/services/system-manager/SystemManagerConfigService.ts +19 -1
- package/src/main/services/system-manager/WorkflowPromptService.ts +58 -5
- package/src/main/services/system-manager/__tests__/AdminLoopInitializer.test.ts +129 -0
- package/src/main/services/system-manager/__tests__/SystemManagerConfigService.test.ts +60 -0
- package/src/main/services/teams-mvp/CollaborationBoardService.ts +2 -0
- package/src/main/services/teams-mvp/OpsRunbookContext.ts +60 -0
- package/src/main/services/teams-mvp/TaskDispatchService.test.ts +305 -0
- package/src/main/services/teams-mvp/TaskDispatchService.ts +250 -131
- package/src/main/services/teams-mvp/TeamProvisioningService.ts +12 -2
- package/src/main/services/teams-mvp/TeamWorkspaceService.test.ts +207 -0
- package/src/main/services/teams-mvp/TeamWorkspaceService.ts +104 -51
- package/src/main/services/teams-mvp/index.ts +6 -0
- package/src/main/utils/externalPlatformSessionRouting.ts +92 -0
- package/src/main/utils/toolApprovalRules.ts +151 -0
- package/src/renderer/App.tsx +24 -89
- package/src/renderer/api/httpClient.ts +115 -37
- package/src/renderer/api/providers.ts +5 -16
- package/src/renderer/components/chat/CommunityChatView.tsx +81 -0
- package/src/renderer/components/dashboard/DashboardView.tsx +130 -84
- package/src/renderer/components/extensions/ExtensionStoreView.tsx +39 -5
- package/src/renderer/components/extensions/ExtensionsSubTabTrigger.tsx +2 -1
- package/src/renderer/components/extensions/capability-packs/CapabilityPacksPanel.tsx +170 -0
- package/src/renderer/components/layout/PaneContent.tsx +10 -2
- package/src/renderer/components/layout/SortableTab.tsx +4 -0
- package/src/renderer/components/layout/TabBarActions.tsx +13 -16
- package/src/renderer/components/runtime/ProviderRuntimeSettingsDialog.tsx +4 -135
- package/src/renderer/components/schedules/SchedulesView.tsx +22 -14
- package/src/renderer/components/schedules/calendar/CalendarEventBlock.tsx +7 -6
- package/src/renderer/components/settings/SettingsTabs.tsx +24 -21
- package/src/renderer/components/settings/SettingsView.tsx +22 -13
- package/src/renderer/components/settings/components/SettingRow.tsx +13 -5
- package/src/renderer/components/settings/components/SettingsSectionCard.tsx +53 -0
- package/src/renderer/components/settings/components/SettingsSectionHeader.tsx +10 -6
- package/src/renderer/components/settings/components/SettingsSelect.tsx +12 -9
- package/src/renderer/components/settings/components/SettingsToggle.tsx +6 -5
- package/src/renderer/components/settings/components/index.ts +1 -0
- package/src/renderer/components/settings/sections/AdvancedSection.tsx +78 -59
- package/src/renderer/components/settings/sections/CliStatusSection.tsx +32 -44
- package/src/renderer/components/settings/sections/ConfigEditorDialog.tsx +1 -1
- package/src/renderer/components/settings/sections/GeneralSection.tsx +216 -186
- package/src/renderer/components/settings/sections/PlatformsSection.tsx +25 -17
- package/src/renderer/components/settings/sections/TaskBusSection.tsx +63 -22
- package/src/renderer/components/sidebar/SidebarSessions.tsx +120 -80
- package/src/renderer/components/sidebar/SidebarTaskItem.tsx +1 -1
- package/src/renderer/components/splash/splashScene.ts +6 -2
- package/src/renderer/components/system-manager/SystemManagerView.tsx +169 -255
- package/src/renderer/components/tasks/TasksView.tsx +63 -37
- package/src/renderer/components/team/CcSessionsSection.tsx +124 -89
- package/src/renderer/components/team/HarnessBrandLogos.tsx +318 -0
- package/src/renderer/components/team/HarnessSelect.tsx +25 -26
- package/src/renderer/components/team/TeamDetailView.tsx +137 -153
- package/src/renderer/components/team/TeamEmptyState.tsx +9 -37
- package/src/renderer/components/team/TeamListView.tsx +143 -30
- package/src/renderer/components/team/__tests__/CcSessionsSection.hasLocalFile.test.tsx +128 -0
- package/src/renderer/components/team/activity/ActivityItem.tsx +21 -9
- package/src/renderer/components/team/activity/ActivityTimeline.tsx +2 -2
- package/src/renderer/components/team/dialogs/AdvancedCliSection.tsx +1 -1
- package/src/renderer/components/team/dialogs/CreateTaskDialog.tsx +13 -10
- package/src/renderer/components/team/dialogs/CreateTeamDialog.tsx +156 -83
- package/src/renderer/components/team/dialogs/EditTeamDialog.tsx +9 -157
- package/src/renderer/components/team/dialogs/LaunchTeamDialog.tsx +19 -15
- package/src/renderer/components/team/dialogs/PlatformBindingDialog.tsx +48 -10
- package/src/renderer/components/team/dialogs/PlatformManualForm.tsx +11 -12
- package/src/renderer/components/team/dialogs/PlatformSetupQR.tsx +39 -37
- package/src/renderer/components/team/dialogs/RuntimeConfigDialog.tsx +434 -64
- package/src/renderer/components/team/dialogs/SendMessageDialog.tsx +12 -10
- package/src/renderer/components/team/dialogs/TaskDetailDialog.tsx +2 -2
- package/src/renderer/components/team/dialogs/__tests__/CreateTeamDialog.bindProject.test.tsx +399 -0
- package/src/renderer/components/team/dialogs/__tests__/CreateTeamDialog.chineseRepro.test.tsx +253 -0
- package/src/renderer/components/team/dialogs/platformAllowUtils.ts +91 -0
- package/src/renderer/components/team/dialogs/teammateRuntimeCompatibility.tsx +1 -1
- package/src/renderer/components/team/kanban/KanbanTaskCard.test.tsx +41 -0
- package/src/renderer/components/team/kanban/KanbanTaskCard.tsx +41 -86
- package/src/renderer/components/team/loop-console/LoopCommandComposer.tsx +310 -0
- package/src/renderer/components/team/loop-console/LoopConsolePanel.tsx +372 -0
- package/src/renderer/components/team/loop-console/loopSendIntent.test.ts +85 -0
- package/src/renderer/components/team/loop-console/loopSendIntent.ts +221 -0
- package/src/renderer/components/team/loop-console/useLeadSessionToolActivity.ts +74 -0
- package/src/renderer/components/team/loop-console/useLoopCommandSuggestions.ts +165 -0
- package/src/renderer/components/team/loop-console/useLoopConsoleController.ts +266 -0
- package/src/renderer/components/team/members/LeadModelRow.test.tsx +1 -1
- package/src/renderer/components/team/members/LeadModelRow.tsx +5 -3
- package/src/renderer/components/team/members/MemberDetailDialog.tsx +11 -0
- package/src/renderer/components/team/members/MemberDetailStats.tsx +13 -3
- package/src/renderer/components/team/members/MemberDraftRow.test.tsx +1 -1
- package/src/renderer/components/team/members/MemberDraftRow.tsx +1 -1
- package/src/renderer/components/team/members/MemberMessagesTab.tsx +2 -2
- package/src/renderer/components/team/members/MemberStatsTab.tsx +1 -1
- package/src/renderer/components/team/messages/MessageComposer.tsx +150 -44
- package/src/renderer/components/team/messages/MessagesFilterPopover.tsx +2 -2
- package/src/renderer/components/team/messages/MessagesPanel.tsx +34 -28
- package/src/renderer/components/team/schedule/CcCronScheduleDialog.tsx +6 -6
- package/src/renderer/components/team/taskLogs/ExactTaskLogCard.tsx +2 -2
- package/src/renderer/components/team/taskLogs/TaskLogStreamSection.tsx +1 -1
- package/src/renderer/components/terminal/TerminalPanel.tsx +2 -3
- package/src/renderer/components/ui/MentionableTextarea.tsx +5 -1
- package/src/renderer/constants/teamColors.ts +5 -5
- package/src/renderer/hooks/useExtensionsTabState.ts +1 -1
- package/src/renderer/hooks/useMentionDetection.ts +5 -1
- package/src/renderer/hooks/useProjectWorkflowCommands.ts +57 -0
- package/src/renderer/hooks/useTeamSuggestions.ts +2 -0
- package/src/renderer/index.css +19 -2
- package/src/renderer/main.tsx +7 -1
- package/src/renderer/store/index.ts +18 -1
- package/src/renderer/store/slices/extensionsSlice.ts +83 -0
- package/src/renderer/store/slices/tabSlice.ts +61 -0
- package/src/renderer/store/slices/teamSlice.ts +138 -9
- package/src/renderer/types/mention.ts +8 -0
- package/src/renderer/types/tabs.ts +3 -1
- package/src/renderer/utils/__tests__/bindProjectSlug.test.ts +69 -0
- package/src/renderer/utils/__tests__/groupTransformer.test.ts +148 -0
- package/src/renderer/utils/__tests__/initialRoute.test.ts +101 -0
- package/src/renderer/utils/__tests__/leadToolActivity.test.ts +124 -0
- package/src/renderer/utils/__tests__/mergeTeamMessages.test.ts +81 -0
- package/src/renderer/utils/__tests__/teamMessageFiltering.test.ts +213 -0
- package/src/renderer/utils/__tests__/teamMessageKey.test.ts +75 -0
- package/src/renderer/utils/__tests__/workflowCommandExecution.test.ts +173 -0
- package/src/renderer/utils/__tests__/workflowCommandSuggestions.test.ts +59 -0
- package/src/renderer/utils/bindProjectSlug.ts +57 -0
- package/src/renderer/utils/capabilityCommandExecution.ts +113 -0
- package/src/renderer/utils/initialRoute.ts +89 -0
- package/src/renderer/utils/leadToolActivity.ts +117 -0
- package/src/renderer/utils/loopShortcutSuggestions.ts +106 -0
- package/src/renderer/utils/mentionSuggestions.ts +1 -1
- package/src/renderer/utils/slashCommandRegistry.ts +231 -0
- package/src/renderer/utils/teamMentionDirective.ts +31 -0
- package/src/renderer/utils/workflowCommandExecution.ts +96 -0
- package/src/renderer/utils/workflowCommandSuggestions.ts +49 -0
- package/src/shared/types/api.ts +79 -4
- package/src/shared/types/ccConnect.ts +1 -0
- package/src/shared/types/extensions/api.ts +19 -0
- package/src/shared/types/extensions/capabilityPack.ts +118 -0
- package/src/shared/types/extensions/index.ts +29 -1
- package/src/shared/types/index.ts +6 -0
- package/src/shared/types/loopAssets.ts +54 -0
- package/src/shared/types/providers.ts +0 -16
- package/src/shared/types/systemManager.ts +26 -1
- package/src/shared/types/team.ts +41 -5
- package/src/shared/types/terminal.ts +2 -36
- package/src/shared/types/worker.test.ts +28 -0
- package/src/shared/types/worker.ts +3 -0
- package/src/shared/utils/__tests__/effortLevels.test.ts +88 -0
- package/src/shared/utils/__tests__/providerBackend.test.ts +88 -0
- package/src/shared/utils/__tests__/providerLaunchArgs.test.ts +220 -0
- package/src/shared/utils/claudeStreamJson.test.ts +187 -0
- package/src/shared/utils/claudeStreamJson.ts +153 -0
- package/src/shared/utils/providerLaunchArgs.ts +217 -0
- package/src/shared/utils/slashCommands.ts +10 -0
- package/src/types/node-pty.d.ts +8 -0
- package/dist-renderer/assets/channel-Ch7JrfUu.js +0 -1
- package/dist-renderer/assets/classDiagram-2ON5EDUG-z9I4AnFy.js +0 -1
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-z9I4AnFy.js +0 -1
- package/dist-renderer/assets/clone-Dfi1Jx6l.js +0 -1
- package/dist-renderer/assets/index-iyjkpSus.css +0 -32
- package/dist-renderer/assets/stateDiagram-v2-4FDKWEC3-DTUIBfce.js +0 -1
- package/src/main/services/system-manager/SystemManagerPtyService.ts +0 -233
- package/src/renderer/components/common/TerminalPane.tsx +0 -213
- package/src/renderer/components/team/dialogs/useTeamEditForm.ts +0 -292
package/README.md
CHANGED
|
@@ -5,30 +5,35 @@
|
|
|
5
5
|
<h1 align="center">openHermit</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<strong
|
|
9
|
-
|
|
8
|
+
<strong>Loop Engineering 工作台</strong><br/>
|
|
9
|
+
用 Fastify + Vite 把 Claude Code、Codex、Gemini、Cursor、OpenCode 等本机 Agent 运行时组织成可观察、可派工、可验证的本地循环系统。
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
13
13
|
<a href="https://github.com/yancyuu/Hermit/releases/latest"><img src="https://img.shields.io/github/v/release/yancyuu/Hermit?style=flat-square&label=version&color=black" alt="最新版本" /></a>
|
|
14
14
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-black?style=flat-square" alt="许可证" /></a>
|
|
15
|
-
<img src="https://img.shields.io/badge/
|
|
15
|
+
<img src="https://img.shields.io/badge/package-@yancyyu/openhermit@1.6.42-black?style=flat-square" alt="npm package" />
|
|
16
|
+
<img src="https://img.shields.io/badge/local--first-~/.hermit-black?style=flat-square" alt="Local first" />
|
|
16
17
|
</p>
|
|
17
18
|
|
|
18
19
|
<p align="center">
|
|
19
|
-
<img src="docs/screenshots/openhermit/team-
|
|
20
|
+
<img src="docs/screenshots/openhermit/team-list.png" alt="openHermit 团队工作台" width="100%" />
|
|
20
21
|
</p>
|
|
21
22
|
|
|
22
23
|
---
|
|
23
24
|
|
|
24
|
-
##
|
|
25
|
+
## openHermit 是什么?
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
让大模型扮演"资深前端"或"产品经理",本质上是在模仿人类的**职责驱动**(因岗设人)。这注定会走向死锁——因为人类有精力上限和认知边界,才需要划分部门和扯皮;而 AI 没有。
|
|
27
|
+
openHermit 是本地优先的 Loop Engineering 控制台。它不提供模型、不托管你的仓库,也不把 Agent 固定成聊天窗口。你在 Web 工作台里创建团队、拆任务、派工、观察消息与事件、审查交付;实际执行由本机或基础设施中的 Agent CLI / cc-connect runtime 完成。
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
当前产品形态:
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
- **后端**:Fastify 5 + Node.js
|
|
32
|
+
- **前端**:Vite + React 19 + TypeScript
|
|
33
|
+
- **默认入口**:`/teams`
|
|
34
|
+
- **默认存储**:`~/.hermit/`
|
|
35
|
+
- **分发方式**:npm CLI 包 `@yancyyu/openhermit` v1.6.42
|
|
36
|
+
- **当前不包含**:Electron 桌面打包、内嵌 PTY 终端
|
|
32
37
|
|
|
33
38
|
---
|
|
34
39
|
|
|
@@ -44,12 +49,12 @@
|
|
|
44
49
|
<td><img src="docs/screenshots/openhermit/team-detail.png" alt="团队详情" width="480" /></td>
|
|
45
50
|
</tr>
|
|
46
51
|
<tr>
|
|
47
|
-
<td align="center"><b
|
|
48
|
-
<td align="center"><b
|
|
52
|
+
<td align="center"><b>全局任务</b></td>
|
|
53
|
+
<td align="center"><b>设置与运行时</b></td>
|
|
49
54
|
</tr>
|
|
50
55
|
<tr>
|
|
51
|
-
<td><img src="docs/screenshots/openhermit/
|
|
52
|
-
<td><img src="docs/screenshots/openhermit/
|
|
56
|
+
<td><img src="docs/screenshots/openhermit/tasks.png" alt="全局任务" width="480" /></td>
|
|
57
|
+
<td><img src="docs/screenshots/openhermit/settings.png" alt="设置与运行时" width="480" /></td>
|
|
53
58
|
</tr>
|
|
54
59
|
</table>
|
|
55
60
|
|
|
@@ -57,39 +62,46 @@
|
|
|
57
62
|
|
|
58
63
|
## 核心能力
|
|
59
64
|
|
|
60
|
-
| 能力 |
|
|
65
|
+
| 能力 | 当前说明 |
|
|
61
66
|
|:---|:---|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
| **
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
| **零配置上手** | 内置 Claude Code CLI 安装和认证 |
|
|
67
|
+
| **团队工作台** | 默认进入 `/teams`,按团队管理成员、任务、消息、运行时配置和项目工作区 |
|
|
68
|
+
| **任务看板** | 维护团队内任务、评论、外部派单投影和执行状态 |
|
|
69
|
+
| **消息工作区** | 保存团队消息、跨团队消息和 cc-connect Bridge 事件 |
|
|
70
|
+
| **Loop Engineering** | 把扫描、派工、执行、验证、报告组织成可重复的工程循环 |
|
|
71
|
+
| **cc-connect Bridge** | 连接本机 Agent runtime、Management API、WebSocket Bridge 和外部渠道 |
|
|
72
|
+
| **渠道绑定** | 在团队级别配置 Feishu/Lark、微信、Telegram、Discord、Slack 等平台凭据与白名单;实际 Bot 适配由 cc-connect 承载 |
|
|
73
|
+
| **渠道边界** | Hermit 当前负责已支持 session key 的团队路由、权限白名单和审计;平台能力取决于 cc-connect 版本和本机配置 |
|
|
74
|
+
| **Worktree 隔离** | 创建或启动团队时可让成员使用独立 worktree,降低并行修改冲突 |
|
|
75
|
+
| **跨团队协作** | 当前通过 Redis-backed dispatch 派单实现接受、拒绝、交付、审批、修订;完整 Task Bus 是后续目标模型 |
|
|
76
|
+
| **本地优先** | 配置、团队、任务、消息和审计数据默认落在 `~/.hermit/` |
|
|
73
77
|
|
|
74
78
|
---
|
|
75
79
|
|
|
76
|
-
##
|
|
80
|
+
## 快速开始
|
|
77
81
|
|
|
78
|
-
###
|
|
82
|
+
### npx 直接运行
|
|
79
83
|
|
|
80
84
|
```bash
|
|
81
85
|
npx @yancyyu/openhermit@latest
|
|
82
86
|
```
|
|
83
87
|
|
|
84
|
-
启动后打开 [http://127.0.0.1:5680](http://127.0.0.1:5680)
|
|
88
|
+
启动后打开 [http://127.0.0.1:5680/teams](http://127.0.0.1:5680/teams)。
|
|
85
89
|
|
|
86
|
-
###
|
|
90
|
+
### 全局安装
|
|
87
91
|
|
|
88
92
|
```bash
|
|
89
93
|
npm install -g @yancyyu/openhermit@latest --prefer-online
|
|
90
94
|
openhermit
|
|
91
95
|
```
|
|
92
96
|
|
|
97
|
+
### Agent 自主安装
|
|
98
|
+
|
|
99
|
+
让 AI Agent 读取线上 Runbook 后按步骤执行:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
读取 https://yancyuu.github.io/Hermit/agent-manual.md,按照其中的安装和运维指南在本机完成 openHermit 部署。
|
|
103
|
+
```
|
|
104
|
+
|
|
93
105
|
### 常用命令
|
|
94
106
|
|
|
95
107
|
```bash
|
|
@@ -102,70 +114,52 @@ openhermit --version # 查看版本
|
|
|
102
114
|
openhermit update # 自更新
|
|
103
115
|
```
|
|
104
116
|
|
|
105
|
-
|
|
117
|
+
openHermit 会尝试准备本机运行时配置。真实使用 Claude Code、Codex、Gemini、Cursor、OpenCode 或外部协作渠道时,仍需在本机完成对应 CLI、账号、API key 或平台凭据配置。
|
|
106
118
|
|
|
107
|
-
|
|
108
|
-
git clone https://github.com/yancyuu/hermit.git
|
|
109
|
-
cd hermit
|
|
110
|
-
pnpm install
|
|
111
|
-
pnpm dev
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
在另一个终端启动运行时服务:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
npx cc-connect -config ~/.hermit/cc-connect/config.toml
|
|
118
|
-
```
|
|
119
|
+
## 创建第一个团队
|
|
119
120
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
4. 保存 → 看板就绪,任务等你分配
|
|
121
|
+
1. 进入 `/teams`
|
|
122
|
+
2. 点击 **「创建数字员工」**
|
|
123
|
+
3. 填写团队名和 slug
|
|
124
|
+
4. 选择 harness / runtime(如 `claudecode`)
|
|
125
|
+
5. 选择项目目录;需要隔离时启用 worktree
|
|
126
|
+
6. 如需外部平台访问,配置渠道绑定与访问白名单
|
|
127
|
+
7. 保存后进入团队详情,在看板或消息区创建任务并启动 Agent
|
|
128
128
|
|
|
129
129
|
---
|
|
130
130
|
|
|
131
131
|
## 支持的 Agent 运行时
|
|
132
132
|
|
|
133
|
-
openHermit
|
|
133
|
+
openHermit 的运行时能力取决于你安装和授权的本机 CLI、cc-connect 配置和当前适配器。
|
|
134
|
+
|
|
135
|
+
| 支持层级 | 运行时 |
|
|
136
|
+
|:---|:---|
|
|
137
|
+
| **一等适配器** | `claudecode`、`codex`、`gemini`、`opencode`、`cursor` |
|
|
138
|
+
| **已注册/兼容标识** | `devin`、`qoder`、`pi`、`iflow`、`acp`、`kimi`、`tmux` |
|
|
134
139
|
|
|
135
|
-
|
|
136
|
-
|:---|:---|:---|:---|
|
|
137
|
-
| `claudecode` | Anthropic Claude Code CLI | `devin` | Cognition Devin |
|
|
138
|
-
| `codex` | OpenAI Codex CLI | `opencode` | OpenCode CLI |
|
|
139
|
-
| `cursor` | Cursor IDE Agent | `qoder` | Qoder CLI |
|
|
140
|
-
| `gemini` | Google Gemini CLI | `pi` | Inflection Pi |
|
|
141
|
-
| `iflow` | iFlow CLI | `acp` | Agent Communication Protocol |
|
|
142
|
-
| `kimi` | Moonshot Kimi | `tmux` | 经典 Tmux Session |
|
|
140
|
+
一等适配器通常提供更完整的安装状态、凭据、MCP、Skills 或环境变量管理。兼容标识用于团队配置、桥接或实验性接入,具体能力以本机环境为准。
|
|
143
141
|
|
|
144
142
|
---
|
|
145
143
|
|
|
146
|
-
##
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
│ 看板 · 消息总线 │
|
|
159
|
-
│ ─────────────────────────────────────────── │
|
|
160
|
-
│ MCP Server · Bridge 协议 │
|
|
161
|
-
│ ─────────────────────────────────────────── │
|
|
162
|
-
│ 渠道(飞书 · Slack · Telegram · ...) │
|
|
163
|
-
└─────────────────────────────────────────────┘
|
|
144
|
+
## 架构边界
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
Browser / Vite UI
|
|
148
|
+
↓ HTTP / WebSocket
|
|
149
|
+
Fastify API
|
|
150
|
+
↓
|
|
151
|
+
~/.hermit team · task · message workspace
|
|
152
|
+
↓
|
|
153
|
+
cc-connect Bridge / Management API
|
|
154
|
+
↓
|
|
155
|
+
Local agent runtimes and external channels
|
|
164
156
|
```
|
|
165
157
|
|
|
166
|
-
- **
|
|
167
|
-
- **
|
|
168
|
-
- **
|
|
158
|
+
- **Team**:团队、成员、项目目录、worktree 隔离和 runtime 配置
|
|
159
|
+
- **Task**:团队看板、外部派单投影、交付和审核状态
|
|
160
|
+
- **Message**:团队消息、跨团队消息、渠道消息和 Bridge 事件
|
|
161
|
+
- **Channel**:cc-connect 承载平台适配;Hermit 做团队路由、白名单和审计
|
|
162
|
+
- **Task Bus**:当前是 Redis-backed dispatch;目标是 offer / bid / lease / event 的完整跨团队协议
|
|
169
163
|
|
|
170
164
|
---
|
|
171
165
|
|
|
@@ -173,25 +167,40 @@ openHermit 不提供闭源模型,也不劫持你的代码。它是一个高度
|
|
|
173
167
|
|
|
174
168
|
| 层级 | 技术 |
|
|
175
169
|
|:---|:---|
|
|
176
|
-
| 前端 | React 19 · TypeScript 5 · Tailwind CSS 3 · Zustand 4 |
|
|
177
|
-
| 后端 | Fastify
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
170
|
+
| 前端 | React 19 · TypeScript 5 · Tailwind CSS 3 · Zustand 4 · Vite |
|
|
171
|
+
| 后端 | Fastify 5 · Node.js |
|
|
172
|
+
| 运行时桥接 | cc-connect · WebSocket Bridge · HTTP Management API |
|
|
173
|
+
| 扩展 | MCP · Plugins · Skills · Credentials |
|
|
174
|
+
| 存储 | 本地文件,默认 `~/.hermit/` |
|
|
175
|
+
| 发布 | npm CLI package · GitHub Release;`.github/workflows/release.yml` 的 Docker job 引用 `docker/Dockerfile`,发布前需要补齐或禁用 |
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 文档
|
|
180
|
+
|
|
181
|
+
- [文档索引](docs/README.md)
|
|
182
|
+
- [Feature Architecture Standard](docs/FEATURE_ARCHITECTURE_STANDARD.md)
|
|
183
|
+
- [Team Management Architecture](docs/team-management/README.md)
|
|
184
|
+
- [Cross-Team Collaboration Workflow](docs/team-management/cross-team-collaboration.md)
|
|
185
|
+
- [Release Guide](docs/RELEASE.md)
|
|
186
|
+
- [Changelog](docs/CHANGELOG.md)
|
|
182
187
|
|
|
183
188
|
---
|
|
184
189
|
|
|
185
190
|
## 贡献
|
|
186
191
|
|
|
187
|
-
欢迎 PR。Fork → Branch → Push → PR
|
|
192
|
+
欢迎 PR。Fork → Branch → Push → PR。
|
|
188
193
|
|
|
189
194
|
```bash
|
|
190
195
|
pnpm install
|
|
191
|
-
pnpm dev
|
|
192
|
-
pnpm
|
|
196
|
+
pnpm dev
|
|
197
|
+
pnpm typecheck
|
|
198
|
+
pnpm test
|
|
199
|
+
pnpm build:web
|
|
193
200
|
```
|
|
194
201
|
|
|
202
|
+
请使用 pnpm。不要把 Electron 打包、内嵌 PTY 或未落地的完整 Task Bus 写成当前能力。
|
|
203
|
+
|
|
195
204
|
---
|
|
196
205
|
|
|
197
206
|
## 许可证
|
package/bin/hermit.mjs
CHANGED
|
@@ -63,6 +63,8 @@ Options:
|
|
|
63
63
|
status Show background service status
|
|
64
64
|
stop Stop background service
|
|
65
65
|
update Check and install updates
|
|
66
|
+
add <plugin> Install a feature plugin into the MCP library
|
|
67
|
+
(e.g. openhermit add worker-society)
|
|
66
68
|
|
|
67
69
|
Examples:
|
|
68
70
|
npx @yancyyu/openhermit # Run without installing
|
|
@@ -154,6 +156,100 @@ async function runUpdate() {
|
|
|
154
156
|
}
|
|
155
157
|
}
|
|
156
158
|
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
// add <plugin> — install a feature plugin into the MCP library
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Known installable feature plugins. Each maps a `openhermit add <name>` key to
|
|
165
|
+
* the MCP library entry it registers (pointing at a hermit-served MCP endpoint).
|
|
166
|
+
* Mirrors src/features/worker-society/main/composition/workerSocietyPlugin.ts.
|
|
167
|
+
*/
|
|
168
|
+
const KNOWN_PLUGINS = {
|
|
169
|
+
'worker-society': {
|
|
170
|
+
name: 'worker-society',
|
|
171
|
+
description:
|
|
172
|
+
'去中心化 worker 自治社会:agent 通过 society_* 工具发布需求、自荐、择优选派、积累声誉与关系,替代中心化派单。',
|
|
173
|
+
endpoint: '/mcp',
|
|
174
|
+
transport: 'sse',
|
|
175
|
+
hint: 'society_* tools (publish need / volunteer / auto-select …)',
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
async function runAddPlugin(pluginName, port) {
|
|
180
|
+
if (!pluginName) {
|
|
181
|
+
console.error('[openHermit] Usage: openhermit add <plugin-name>');
|
|
182
|
+
console.error('[openHermit] Known plugins: ' + Object.keys(KNOWN_PLUGINS).join(', '));
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const spec = KNOWN_PLUGINS[pluginName];
|
|
187
|
+
if (!spec) {
|
|
188
|
+
console.error(`[openHermit] Unknown plugin: ${pluginName}`);
|
|
189
|
+
console.error('[openHermit] Known plugins: ' + Object.keys(KNOWN_PLUGINS).join(', '));
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const base = `http://127.0.0.1:${port}`;
|
|
194
|
+
const body = {
|
|
195
|
+
name: spec.name,
|
|
196
|
+
description: spec.description,
|
|
197
|
+
installSpec: {
|
|
198
|
+
type: 'http',
|
|
199
|
+
url: `${base}${spec.endpoint}`,
|
|
200
|
+
transportType: spec.transport,
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
console.log(`[openHermit] Installing plugin "${pluginName}" → registering MCP server ${body.installSpec.url}`);
|
|
205
|
+
|
|
206
|
+
try {
|
|
207
|
+
const res = await fetch(`${base}/api/extensions/mcp/library`, {
|
|
208
|
+
method: 'POST',
|
|
209
|
+
headers: { 'Content-Type': 'application/json' },
|
|
210
|
+
body: JSON.stringify(body),
|
|
211
|
+
signal: AbortSignal.timeout(8000),
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
// 服务端统一包成 { success, data | error }:HTTP 200 但 success:false 也算失败。
|
|
215
|
+
const text = await res.text().catch(() => '');
|
|
216
|
+
let parsed = null;
|
|
217
|
+
try {
|
|
218
|
+
parsed = JSON.parse(text);
|
|
219
|
+
} catch {
|
|
220
|
+
/* 非 JSON 响应,按 HTTP 状态兜底 */
|
|
221
|
+
}
|
|
222
|
+
const ok = res.ok && parsed && parsed.success !== false;
|
|
223
|
+
const errMsg = parsed && typeof parsed.error === 'string' ? parsed.error : '';
|
|
224
|
+
|
|
225
|
+
if (ok) {
|
|
226
|
+
console.log(`[openHermit] ✓ "${pluginName}" installed into the MCP library.`);
|
|
227
|
+
console.log(`[openHermit] Agents can now use: ${spec.hint}`);
|
|
228
|
+
console.log('[openHermit] Enable it for a worker in the Extensions panel, or via the MCP library.');
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// 同名已存在 → 幂等视为已安装。
|
|
233
|
+
if (res.status === 409 || /already exist|已存在|exists/i.test(errMsg)) {
|
|
234
|
+
console.log(`[openHermit] ✓ "${pluginName}" already in the MCP library (idempotent).`);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
console.error(`[openHermit] Install failed (HTTP ${res.status}): ${(errMsg || text).slice(0, 200)}`);
|
|
238
|
+
process.exit(1);
|
|
239
|
+
} catch (err) {
|
|
240
|
+
console.error(`[openHermit] Could not reach openHermit at ${base}.`);
|
|
241
|
+
console.error(`[openHermit] ${err instanceof Error ? err.message : String(err)}`);
|
|
242
|
+
console.error('[openHermit] Start it first with: openhermit');
|
|
243
|
+
process.exit(1);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const addIndex = args.indexOf('add');
|
|
248
|
+
if (addIndex !== -1) {
|
|
249
|
+
await runAddPlugin(args[addIndex + 1], port);
|
|
250
|
+
process.exit(0);
|
|
251
|
+
}
|
|
252
|
+
|
|
157
253
|
function readDaemonPid() {
|
|
158
254
|
try {
|
|
159
255
|
const raw = readFileSync(daemonPidPath, 'utf-8').trim();
|
package/dist-renderer/assets/{ProjectEditorOverlay-DlFQ6mai.js → ProjectEditorOverlay-C98qSs7-.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{bD as fe,bE as yr,bF as $t,bG as jr,E as Y,bH as Sr,a as he,bI as Pn,bJ as wr,bK as Mr,bL as Nr,bM as kr,bN as Tr,bO as Er,bP as Rr,bQ as _n,bR as Kt,bS as Ir,bT as ie,bU as Dr,bV as je,bW as Fn,bX as w,bY as Ge,r as a,bZ as Se,b_ as Pr,b$ as _r,q as n,c0 as Fr,c1 as q,c2 as X,c3 as An,c4 as Ln,c5 as Q,c6 as At,c7 as ce,c8 as On,c9 as I,ca as Ar,cb as yt,cc as Lr,cd as Or,ce as zr,cf as $r,cg as Kr,ch as Gr,ci as Wr,cj as Br,ck as Vr,cl as Ur,cm as Hr,cn as qr,co as yn,cp as Xr,cq as zn,cr as $n,cs as Qr,ct as Yr,cu as Zr,cv as Te,cw as jt,cx as Jr,cy as Le,cz as eo,cA as Gt,cB as Kn,cC as to,cD as Gn,cE as Wn,cF as Wt,cG as no,cH as so,cI as ro,cJ as St,cK as oo,cL as tt,cM as $,cN as We,cO as ao,cP as io,cQ as co,cR as lo,cS as uo,cT as ho,cU as fo,cV as xo,cW as mo,cX as po,cY as go,cZ as vo,c_ as xt,c$ as bo,d0 as Co,d1 as Bt,d2 as Bn,d3 as Vn,d4 as Un,d5 as yo,d6 as jo,d7 as So,d8 as Hn,d9 as qn,da as Xn,db as qe,dc as Xe,dd as Qe,de as Ye,df as ht,dg as ft,dh as Qn,di as Yn,dj as wo,dk as nt,dl as Mo,dm as No,dn as ko,dp as To,dq as Eo,dr as Ro,ds as Io,dt as Do,du as Po,dv as _o,dw as Fo,dx as Ao,dy as Lo,dz as Ue,dA as Oo,dB as jn,dC as zo,dD as $o,dE as Ko,dF as Go,dG as Wo,dH as Bo,dI as Vo}from"./index-
|
|
1
|
+
import{bD as fe,bE as yr,bF as $t,bG as jr,E as Y,bH as Sr,a as he,bI as Pn,bJ as wr,bK as Mr,bL as Nr,bM as kr,bN as Tr,bO as Er,bP as Rr,bQ as _n,bR as Kt,bS as Ir,bT as ie,bU as Dr,bV as je,bW as Fn,bX as w,bY as Ge,r as a,bZ as Se,b_ as Pr,b$ as _r,q as n,c0 as Fr,c1 as q,c2 as X,c3 as An,c4 as Ln,c5 as Q,c6 as At,c7 as ce,c8 as On,c9 as I,ca as Ar,cb as yt,cc as Lr,cd as Or,ce as zr,cf as $r,cg as Kr,ch as Gr,ci as Wr,cj as Br,ck as Vr,cl as Ur,cm as Hr,cn as qr,co as yn,cp as Xr,cq as zn,cr as $n,cs as Qr,ct as Yr,cu as Zr,cv as Te,cw as jt,cx as Jr,cy as Le,cz as eo,cA as Gt,cB as Kn,cC as to,cD as Gn,cE as Wn,cF as Wt,cG as no,cH as so,cI as ro,cJ as St,cK as oo,cL as tt,cM as $,cN as We,cO as ao,cP as io,cQ as co,cR as lo,cS as uo,cT as ho,cU as fo,cV as xo,cW as mo,cX as po,cY as go,cZ as vo,c_ as xt,c$ as bo,d0 as Co,d1 as Bt,d2 as Bn,d3 as Vn,d4 as Un,d5 as yo,d6 as jo,d7 as So,d8 as Hn,d9 as qn,da as Xn,db as qe,dc as Xe,dd as Qe,de as Ye,df as ht,dg as ft,dh as Qn,di as Yn,dj as wo,dk as nt,dl as Mo,dm as No,dn as ko,dp as To,dq as Eo,dr as Ro,ds as Io,dt as Do,du as Po,dv as _o,dw as Fo,dx as Ao,dy as Lo,dz as Ue,dA as Oo,dB as jn,dC as zo,dD as $o,dE as Ko,dF as Go,dG as Wo,dH as Bo,dI as Vo}from"./index-C5ujiwAR.js";import"./splashScene-94xWCzLA.js";/**
|
|
2
2
|
* @license lucide-react v0.577.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as R,m as V,n as q,o as D,r as n,q as a,T as P,G as W,v as I,w as Z,x as z,y as O,z as B}from"./index-
|
|
1
|
+
import{u as R,m as V,n as q,o as D,r as n,q as a,T as P,G as W,v as I,w as Z,x as z,y as O,z as B}from"./index-C5ujiwAR.js";import"./splashScene-94xWCzLA.js";const M=({teamName:s,onClose:c,onPinAsTab:h,sidebarVisible:C,onToggleSidebar:v,onSendMessage:u,onOpenTaskDetail:i,onOpenMemberProfile:d})=>{const T=R(s),{openTeamPage:k,commitOwnerSlotDrop:w,commitOwnerGridOrderDrop:S,setLayoutMode:x}=V(s),{sidebarVisible:m,toggleSidebarVisible:f}=q(),{dialog:G,openCreateTaskDialog:g}=D(s),b=C??m,y=v??f,t=n.useCallback(o=>e=>window.dispatchEvent(new CustomEvent(`graph:${o}`,{detail:{teamName:s,taskId:e}})),[s]),A=n.useMemo(()=>({onStartTask:t("start-task"),onCompleteTask:t("complete-task"),onApproveTask:t("approve-task"),onRequestReview:t("request-review"),onRequestChanges:t("request-changes"),onCancelTask:t("cancel-task"),onMoveBackToDone:t("move-back-to-done"),onDeleteTask:t("delete-task")}),[t]),j=n.useCallback(()=>{k(),c()},[c,k]),H=n.useCallback(()=>{g("")},[g]),E={onNodeDoubleClick:n.useCallback(o=>{o.kind==="task"?i?.(o.taskId):o.kind==="member"&&d?.(o.memberName)},[i,d]),onSendMessage:n.useCallback(o=>u?.(o),[u]),onOpenTaskDetail:n.useCallback(o=>i?.(o),[i]),onOpenMemberProfile:n.useCallback(o=>d?.(o),[d])};return a.jsxs("div",{className:"fixed inset-0 z-50 flex overflow-hidden",style:{background:"#050510"},children:[b?a.jsx(P,{teamName:s,surface:"graph-overlay",isActive:!0,isFocused:!0}):null,a.jsx(W,{data:T,events:E,isSurfaceActive:!0,onRequestClose:c,onRequestPinAsTab:h,onOpenTeamPage:j,onCreateTask:H,onToggleSidebar:y,isSidebarVisible:b,renderTopToolbarContent:()=>a.jsx(B,{teamName:s}),onLayoutModeChange:x,onOwnerSlotDrop:w,onOwnerGridOrderDrop:S,className:"team-graph-view min-w-0 flex-1",renderHud:o=>{const e=o,{getViewportSize:r,focusNodeIds:l,filters:p}=e;return a.jsxs(a.Fragment,{children:[a.jsx(z,{teamName:s,getTransientHandoffSnapshot:e.getTransientHandoffSnapshot,getCameraZoom:e.getCameraZoom,worldToScreen:e.worldToScreen,getNodeWorldPosition:e.getNodeWorldPosition,focusNodeIds:l,focusEdgeIds:e.focusEdgeIds??null}),a.jsx(O,{teamName:s,nodes:T.nodes,getActivityWorldRect:e.getActivityWorldRect,getCameraZoom:e.getCameraZoom,worldToScreen:e.worldToScreen,getNodeWorldPosition:e.getNodeWorldPosition,getViewportSize:r,focusNodeIds:l,enabled:p?.showActivity??!0,onOpenTaskDetail:i,onOpenMemberProfile:d})]})},renderEdgeOverlay:({edge:o,sourceNode:e,targetNode:r,onClose:l,onSelectNode:p})=>a.jsx(Z,{teamName:s,edge:o,sourceNode:e,targetNode:r,onClose:l,onSelectNode:p,onOpenTaskDetail:i}),renderOverlay:({node:o,onClose:e})=>a.jsx(I,{node:o,teamName:s,onClose:e,onSendMessage:r=>{u?.(r),e()},onCreateTask:g,onOpenTaskDetail:r=>{i?.(r),e()},onOpenMemberProfile:r=>{d?.(r),e()},...A})}),G]})};export{M as TeamGraphOverlay};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as v,c as O,g,k as P,h as p,j as w,l as c,m as A,n as x,t as N,o as E}from"./_baseUniq-
|
|
1
|
+
import{e as v,c as O,g,k as P,h as p,j as w,l as c,m as A,n as x,t as N,o as E}from"./_baseUniq-DBb726rt.js";import{bf as b,aV as F,bg as M,bh as _,bi as $,bj as I,bk as B,bl as T,bm as y,bn as S}from"./index-C5ujiwAR.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var m=NaN,q=/^[-+]0x[0-9a-f]+$/i,z=/^0b[01]+$/i,C=/^0o[0-7]+$/i,K=parseInt;function W(n){if(typeof n=="number")return n;if(v(n))return m;if(b(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=b(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=z.test(n);return t||C.test(n)?K(n.slice(2),t?2:8):q.test(n)?m:+n}var o=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=W(n),n===o||n===-o){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=F(function(n,r){n=Object(n);var t=-1,a=r.length,e=a>2?r[2]:void 0;for(e&&M(r[0],r[1],e)&&(a=1);++t<a;)for(var f=r[t],i=_(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||$(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,a){var e=Object(r);if(!I(r)){var f=g(t);r=P(r),t=function(s){return f(e[s],s,e)}}var i=n(r,t,a);return i>-1?e[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var a=n==null?0:n.length;if(!a)return-1;var e=t==null?0:D(t);return e<0&&(e=U(a+e,0)),p(n,g(r),e)}var hn=Q(Z);function V(n,r){var t=-1,a=I(n)?Array(n.length):[];return w(n,function(e,f,i){a[++t]=r(e,f,i)}),a}function bn(n,r){var t=B(n)?c:V;return t(n,g(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function gn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var a=-1,e=n.length;++a<e;){var f=n[a],i=r(f);if(i!=null&&(s===void 0?i===i&&!v(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,T,rn):void 0}function en(n,r,t,a){if(!b(n))return n;r=x(r,n);for(var e=-1,f=r.length,i=f-1,s=n;s!=null&&++e<f;){var d=N(r[e]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(e!=i){var h=s[d];u=void 0,u===void 0&&(u=b(h)?h:y(r[e+1])?[]:{})}S(s,d,u),s=s[d]}return n}function on(n,r,t){for(var a=-1,e=r.length,f={};++a<e;){var i=r[a],s=E(n,i);t(s,i)&&en(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,gn as h,dn as i,D as j,un as l,bn as m,Y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dP as S,dQ as Rn,bk as T,dR as w,dS as xn,dT as mn,bj as sn,dU as Mn,dV as un,dW as x,bh as U,dX as Cn,dY as on,dZ as Fn,d_ as E,dN as gn,d$ as R,bf as ln,e0 as Dn,e1 as D,e2 as Gn,e3 as Un,e4 as _,bn as Nn,e5 as Bn,bi as Kn,e6 as X,e7 as jn,e8 as Hn,bm as Yn,bl as cn,dL as Zn,e9 as M}from"./index-BQrwHZ-k.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var Q=w?w.prototype:void 0,J=Q?Q.toString:void 0;function bn(n){if(typeof n=="string")return n;if(T(n))return dn(n,bn)+"";if(N(n))return J?J.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Qn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Jn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Qn(n,Jn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":bn(n)}function An(n,r){return T(n)?n:B(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function br(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Cn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Pr="[object Date]",Ir="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case Mr:return on(n);case Er:case Pr:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case jr:case Hr:return Fn(n,e);case Ir:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Qr="[object Set]";function Jr(n){return S(n)&&E(n)==Qr}var rn=R&&R.isSet,Wr=rn?gn(rn):Jr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",be="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[be]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,d=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Un(n),!s)return u?Ar(n,lr(a,n)):br(n,gr(a,n))}else{if(!g[o])return f?n:{};a=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(b){a.add(C(b,r,e,b,n,i))}):Xr(n)&&n.forEach(function(b,p){a.set(p,C(b,r,e,p,n,i))});var A=d?u?yr:G:u?U:$,y=l?void 0:A(n);return pn(y||n,function(b,p){y&&(p=b,b=n[p]),Nn(a,p,C(b,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function P(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}P.prototype.add=P.prototype.push=Se;P.prototype.has=Ee;function Pe(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Ie=1,ve=2;function Pn(n,r,e,t,f,i){var a=e&Ie,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new P:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var b=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(b!==void 0){if(b)continue;c=!1;break}if(h){if(!Pe(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var d=a.get(n);if(d)return d==r;t|=xe,a.set(n,r);var l=Pn(s(n),s(r),t,f,i,a);return a.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:qe.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var b=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var q=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(q===void 0?p===O||f(p,O,e,t,i):q)){y=!1;break}b||(b=c=="constructor")}if(y&&!b){var I=n.constructor,v=r.constructor;I!=v&&"constructor"in n&&"constructor"in r&&!(typeof I=="function"&&I instanceof I&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Qe=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Je=Object.prototype,an=Je.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),d=s?fn:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?Pn(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Qe)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,b=A?r.value():r;return i||(i=new _),f(y,b,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function Y(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],d=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function In(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,In(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&Yn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return B(n)&&In(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return B(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Z;return e(n,dt(r))}function bt(n,r){var e=[];return Z(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:bt;return e(n,Ln(r))}function pt(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function Pt(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Z)}var yt=1/0,Tt=M&&1/H(new M([,-0]))[1]==yt?function(n){return new M(n)}:Xn,ht=200;function It(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return H(d);a=!1,f=En,u=new P}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,bt as B,Pe as C,Xn as D,P as S,It as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Qn as h,Et as i,Z as j,$ as k,dn as l,tt as m,An as n,yn as o,dt as p,lt as q,Pt as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
|
|
1
|
+
import{dP as S,dQ as Rn,bk as T,dR as w,dS as xn,dT as mn,bj as sn,dU as Mn,dV as un,dW as x,bh as U,dX as Cn,dY as on,dZ as Fn,d_ as E,dN as gn,d$ as R,bf as ln,e0 as Dn,e1 as D,e2 as Gn,e3 as Un,e4 as _,bn as Nn,e5 as Bn,bi as Kn,e6 as X,e7 as jn,e8 as Hn,bm as Yn,bl as cn,dL as Zn,e9 as M}from"./index-C5ujiwAR.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var Q=w?w.prototype:void 0,J=Q?Q.toString:void 0;function bn(n){if(typeof n=="string")return n;if(T(n))return dn(n,bn)+"";if(N(n))return J?J.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Qn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Jn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Qn(n,Jn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":bn(n)}function An(n,r){return T(n)?n:B(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function br(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Cn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Pr="[object Date]",Ir="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case Mr:return on(n);case Er:case Pr:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case jr:case Hr:return Fn(n,e);case Ir:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Qr="[object Set]";function Jr(n){return S(n)&&E(n)==Qr}var rn=R&&R.isSet,Wr=rn?gn(rn):Jr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",be="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[be]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,d=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Un(n),!s)return u?Ar(n,lr(a,n)):br(n,gr(a,n))}else{if(!g[o])return f?n:{};a=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(b){a.add(C(b,r,e,b,n,i))}):Xr(n)&&n.forEach(function(b,p){a.set(p,C(b,r,e,p,n,i))});var A=d?u?yr:G:u?U:$,y=l?void 0:A(n);return pn(y||n,function(b,p){y&&(p=b,b=n[p]),Nn(a,p,C(b,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function P(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}P.prototype.add=P.prototype.push=Se;P.prototype.has=Ee;function Pe(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Ie=1,ve=2;function Pn(n,r,e,t,f,i){var a=e&Ie,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new P:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var b=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(b!==void 0){if(b)continue;c=!1;break}if(h){if(!Pe(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var d=a.get(n);if(d)return d==r;t|=xe,a.set(n,r);var l=Pn(s(n),s(r),t,f,i,a);return a.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:qe.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var b=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var q=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(q===void 0?p===O||f(p,O,e,t,i):q)){y=!1;break}b||(b=c=="constructor")}if(y&&!b){var I=n.constructor,v=r.constructor;I!=v&&"constructor"in n&&"constructor"in r&&!(typeof I=="function"&&I instanceof I&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Qe=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Je=Object.prototype,an=Je.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),d=s?fn:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?Pn(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Qe)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,b=A?r.value():r;return i||(i=new _),f(y,b,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function Y(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],d=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function In(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,In(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&Yn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return B(n)&&In(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return B(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Z;return e(n,dt(r))}function bt(n,r){var e=[];return Z(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:bt;return e(n,Ln(r))}function pt(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function Pt(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Z)}var yt=1/0,Tt=M&&1/H(new M([,-0]))[1]==yt?function(n){return new M(n)}:Xn,ht=200;function It(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return H(d);a=!1,f=En,u=new P}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,bt as B,Pe as C,Xn as D,P as S,It as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Qn as h,Et as i,Z as j,$ as k,dn as l,tt as m,An as n,yn as o,dt as p,lt as q,Pt as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ag as ln,ah as an,ai as g,aj as tn,ak as G,al as w,am as _,an as un,ao as z,ap as rn,aq as K,ar as o,as as sn,at as on,au as fn}from"./index-
|
|
1
|
+
import{ag as ln,ah as an,ai as g,aj as tn,ak as G,al as w,am as _,an as un,ao as z,ap as rn,aq as K,ar as o,as as sn,at as on,au as fn}from"./index-C5ujiwAR.js";function cn(l){return l.innerRadius}function gn(l){return l.outerRadius}function yn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,E,j,v,A,B,a){var I=E-l,i=j-h,n=B-v,m=a-A,u=m*I-n*i;if(!(u*u<g))return u=(n*(h-A)-m*(l-v))/u,[l+u*I,h+u*i]}function V(l,h,E,j,v,A,B){var a=l-E,I=h-j,i=(B?A:-A)/K(a*a+I*I),n=i*I,m=-i*a,u=l+n,s=h+m,f=E+n,c=j+m,C=(u+f)/2,t=(s+c)/2,p=f-u,y=c-s,R=p*p+y*y,T=v-A,P=u*c-f*s,O=(y<0?-1:1)*K(fn(0,T*T*R-P*P)),S=(P*y-p*O)/R,k=(-P*p-y*O)/R,q=(P*y+p*O)/R,d=(-P*p+y*O)/R,x=S-C,e=k-t,r=q-C,F=d-t;return x*x+e*e>r*r+F*F&&(S=q,k=d),{cx:S,cy:k,x01:-n,y01:-m,x11:S*(v/T-1),y11:k*(v/T-1)}}function hn(){var l=cn,h=gn,E=z(0),j=null,v=yn,A=mn,B=pn,a=null,I=ln(i);function i(){var n,m,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,C=un(c-f),t=c>f;if(a||(a=n=I()),s<u&&(m=s,s=u,u=m),!(s>g))a.moveTo(0,0);else if(C>tn-g)a.moveTo(s*G(f),s*w(f)),a.arc(0,0,s,f,c,!t),u>g&&(a.moveTo(u*G(c),u*w(c)),a.arc(0,0,u,c,f,t));else{var p=f,y=c,R=f,T=c,P=C,O=C,S=B.apply(this,arguments)/2,k=S>g&&(j?+j.apply(this,arguments):K(u*u+s*s)),q=_(un(s-u)/2,+E.apply(this,arguments)),d=q,x=q,e,r;if(k>g){var F=sn(k/u*w(S)),L=sn(k/s*w(S));(P-=F*2)>g?(F*=t?1:-1,R+=F,T-=F):(P=0,R=T=(f+c)/2),(O-=L*2)>g?(L*=t?1:-1,p+=L,y-=L):(O=0,p=y=(f+c)/2)}var H=s*G(p),J=s*w(p),M=u*G(T),N=u*w(T);if(q>g){var Q=s*G(y),U=s*w(y),W=u*G(R),X=u*w(R),D;if(C<rn)if(D=dn(H,J,W,X,Q,U,M,N)){var Y=H-D[0],Z=J-D[1],$=Q-D[0],b=U-D[1],nn=1/w(on((Y*$+Z*b)/(K(Y*Y+Z*Z)*K($*$+b*b)))/2),en=K(D[0]*D[0]+D[1]*D[1]);d=_(q,(u-en)/(nn-1)),x=_(q,(s-en)/(nn+1))}else d=x=0}O>g?x>g?(e=V(W,X,H,J,s,x,t),r=V(Q,U,M,N,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<q?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(H,J),a.arc(0,0,s,p,y,!t)):a.moveTo(H,J),!(u>g)||!(P>g)?a.lineTo(M,N):d>g?(e=V(M,N,Q,U,u,-d,t),r=V(H,J,W,X,u,-d,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),d<q?a.arc(e.cx,e.cy,d,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,d,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,d,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,m=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[G(m)*n,w(m)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:z(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:z(+n),i):h},i.cornerRadius=function(n){return arguments.length?(E=typeof n=="function"?n:z(+n),i):E},i.padRadius=function(n){return arguments.length?(j=n==null?null:typeof n=="function"?n:z(+n),i):j},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:z(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:z(+n),i):A},i.padAngle=function(n){return arguments.length?(B=typeof n=="function"?n:z(+n),i):B},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|