823 lines
48 KiB
JSON
823 lines
48 KiB
JSON
{
|
||
"file": "components/canvas/LiblibVideoCanvasReplica.tsx",
|
||
"root": "LiblibVideoCanvasReplica",
|
||
"method": "Conservative identifier reachability; candidates need manual review, not runtime coverage.",
|
||
"reachableDeclarations": [
|
||
"LiblibVideoCanvasReplica",
|
||
"createConfiguredToolCatalog",
|
||
"functionRequiresMedia",
|
||
"getConfiguredToolType",
|
||
"getCanvasModelRef",
|
||
"resolveSiteName",
|
||
"DEFAULT_SITE_NAME",
|
||
"DEFAULT_VIEWPORT",
|
||
"ASSET_MANAGER_DEFAULT_WIDTH",
|
||
"VIDEO_ROLE_AGREEMENT_STORAGE_KEY",
|
||
"isVideoMediaNode",
|
||
"getDraftString",
|
||
"getNodeMediaUrl",
|
||
"normalizeCanvasTitle",
|
||
"restoreNodes",
|
||
"normalizeRestoredNode",
|
||
"isCharacterThreeViewNode",
|
||
"getNodeFunctionKey",
|
||
"getNodeParams",
|
||
"CHARACTER_THREE_VIEW_FUNCTION_KEY",
|
||
"isCharacterThreeViewOption",
|
||
"getOfficialImagePresetFunctionKey",
|
||
"STORY_BEAT_GRID_FUNCTION_KEY",
|
||
"CONTINUOUS_STORYBOARD_GRID_FUNCTION_KEY",
|
||
"CINEMATIC_LIGHTING_CORRECTION_FUNCTION_KEY",
|
||
"FRAME_PREDICTION_PLUS_3S_FUNCTION_KEY",
|
||
"FRAME_PREDICTION_MINUS_5S_FUNCTION_KEY",
|
||
"MULTI_VIEW_NINE_GRID_FUNCTION_KEY",
|
||
"getPresetMode",
|
||
"normalizeTextResourceNode",
|
||
"extractTrailingNumber",
|
||
"OFFICIAL_TEXT_RESOURCE_WIDTH",
|
||
"OFFICIAL_TEXT_RESOURCE_HEIGHT",
|
||
"OFFICIAL_NINE_GRID_WIDTH",
|
||
"OFFICIAL_NINE_GRID_HEIGHT",
|
||
"getDefaultFunctionPrompt",
|
||
"resolveOfficialImagePresetFunctionKey",
|
||
"getPresetGridLayout",
|
||
"getDraftNumber",
|
||
"getTargetModuleKind",
|
||
"inferLegacyTargetModuleKind",
|
||
"normalizeTargetModuleNode",
|
||
"createTargetModuleNode",
|
||
"makeId",
|
||
"shouldResetTargetModuleTitle",
|
||
"restoreEdges",
|
||
"clampCanvasZoom",
|
||
"CANVAS_MAX_ZOOM",
|
||
"CANVAS_MIN_ZOOM",
|
||
"serializeNodes",
|
||
"serializeEdges",
|
||
"createMediaResourceNode",
|
||
"DIRECTOR_CAMERA_SNAPSHOT_NODE_OFFSET_X",
|
||
"createToolboxTemplateGroupNode",
|
||
"TOOLBOX_TEMPLATE_GROUP_FRAME",
|
||
"FIRST_FRAME_IMAGE_URL",
|
||
"createTextResourceNode",
|
||
"SCRIPT_VIDEO_REFERENCE_URL",
|
||
"TOOLBOX_TEMPLATE_VIEWPORT",
|
||
"createToolNode",
|
||
"getToolType",
|
||
"TOOL_TYPE_META",
|
||
"getToolLabel",
|
||
"getToolFunctionKey",
|
||
"getConfiguredFunction",
|
||
"getToolRoute",
|
||
"resolveNodeReferenceImages",
|
||
"getNodeReferenceMediaUrl",
|
||
"getNodeGridSplitState",
|
||
"normalizeGridSplitState",
|
||
"createEqualGridRects",
|
||
"normalizeGridRect",
|
||
"getNodeGridSplitSourceUrl",
|
||
"getNodeSourceMediaUrl",
|
||
"createGridSplitReferenceAsset",
|
||
"cropRectToBlobUrlSource",
|
||
"loadCanvasImage",
|
||
"requiresMedia",
|
||
"getToolRules",
|
||
"composeFunctionPrompt",
|
||
"getFunctionModel",
|
||
"normalizeModelRef",
|
||
"normalizeVideoGenerationMode",
|
||
"selectVideoReferenceImages",
|
||
"isWideImageGenerationFunction",
|
||
"composeMultiViewNineGridPrompt",
|
||
"composeConfiguredImagePresetPrompt",
|
||
"isOfficialImagePresetFunctionKey",
|
||
"isPresetGridFunction",
|
||
"getImageGenerationBillingFeature",
|
||
"getFirstGeneratedImageUrl",
|
||
"getGridCellVisual",
|
||
"NINE_GRID_CELL_VISUALS",
|
||
"getToolReferenceModuleTemplates",
|
||
"getToolReferenceMediaSpec",
|
||
"AUDIO_SOURCE_URL",
|
||
"CHARACTER_IMAGE_URL",
|
||
"VIDEO_FIRST_FRAME_SOURCE_URL",
|
||
"VIDEO_FIRST_LAST_FIRST_URL",
|
||
"VIDEO_FIRST_LAST_LAST_URL",
|
||
"AUDIO_REFERENCE_IMAGE_URL",
|
||
"HD_IMAGE_SOURCE_URL",
|
||
"OFFICIAL_NODE_GAP",
|
||
"createUploadedMediaNode",
|
||
"MATERIAL_STYLE_SCREEN_ANCHOR",
|
||
"createMaterialStyleNode",
|
||
"MATERIAL_STYLE_NODE_SIZE",
|
||
"STYLE_MARKET_THUMBNAIL_URL",
|
||
"isVideoEffectMaterialNode",
|
||
"createMaterialEffectNode",
|
||
"isVideoRoleMaterialNode",
|
||
"createMaterialRoleNode",
|
||
"ROLE_LIBRARY_NODE_LAYOUT",
|
||
"ROLE_LIBRARY_APPLY_VIEWPORT",
|
||
"TEXT_TO_VIDEO_PROMPT",
|
||
"TEXT_TO_VIDEO_GENERATE_PROMPT",
|
||
"IMAGE_TO_PROMPT_PROMPT",
|
||
"TEXT_TO_MUSIC_PROMPT",
|
||
"AUDIO_TO_VIDEO_PROMPT",
|
||
"VIDEO_FIRST_FRAME_PROMPT",
|
||
"VIDEO_FIRST_LAST_PROMPT",
|
||
"STORY_SCRIPT_TEXT",
|
||
"SCRIPT_CHARACTER_PROMPT",
|
||
"SCRIPT_CHARACTER_ONE_URL",
|
||
"SCRIPT_CHARACTER_TWO_URL",
|
||
"getNodeLocalEditRegions",
|
||
"LOCAL_EDIT_MAX_REGIONS",
|
||
"normalizeLocalEditRegion",
|
||
"LOCAL_EDIT_COLORS",
|
||
"normalizeGridOption",
|
||
"clearGridSplitDraftValues",
|
||
"createNineGridCompositeNode",
|
||
"withReindexedLocalEditRegions",
|
||
"LOCAL_EDIT_MAX_POLL_ATTEMPTS",
|
||
"wait",
|
||
"ensureRemoteCanvasImageUrl",
|
||
"getGridSplitCellLabel",
|
||
"normalizeVideoDurationValue",
|
||
"getVideoCanvasMagicMarks",
|
||
"normalizeVideoCanvasMagicMarks",
|
||
"getVideoFunctionKeyForMode",
|
||
"normalizeVideoRatioValue",
|
||
"normalizeVideoResolutionValue",
|
||
"formatVideoRatioLabel",
|
||
"formatVideoResolutionLabel",
|
||
"formatVideoDurationLabel",
|
||
"STORY_SCRIPT_PROMPT",
|
||
"getStoryScriptRows",
|
||
"normalizeStoryScriptRow",
|
||
"formatStoryShot",
|
||
"buildStoryVideoPrompt",
|
||
"normalizeVideoClipRange",
|
||
"normalizeVideoHdResolutionOption",
|
||
"createVideoHdUpscaleNode",
|
||
"VIDEO_CROP_RECT",
|
||
"createVideoCropResultNode",
|
||
"getVideoNodePreviewUrl",
|
||
"getVideoNodeDurationSeconds",
|
||
"VIDEO_CROP_OUTPUT_LABEL",
|
||
"createVideoStoryAnalysisNode",
|
||
"buildVideoAnalysisRows",
|
||
"formatVideoStoryNumber",
|
||
"cleanVideoStoryText",
|
||
"formatVideoStoryShot",
|
||
"STARTER_CARDS",
|
||
"createStarterWorkflow",
|
||
"createPresetScriptNode",
|
||
"makePresetEdges",
|
||
"createPresetMediaNode",
|
||
"CHARACTER_THREE_VIEW_URL",
|
||
"PRESET_WORKFLOW_CENTER",
|
||
"createInputNode",
|
||
"createSimpleNode",
|
||
"capturedTools",
|
||
"arrangeNodesForPreview",
|
||
"clampAssetManagerWidth",
|
||
"ASSET_MANAGER_MAX_WIDTH",
|
||
"ASSET_MANAGER_MIN_WIDTH",
|
||
"isOfficialImageControlNode",
|
||
"getPresetControlMode",
|
||
"ReferenceSelectionToolbar",
|
||
"VideoCanvasMarkSelectionToolbar",
|
||
"CancelGenerationConfirmDialog",
|
||
"CANVAS_EXTENT",
|
||
"CloneEdges",
|
||
"getCanvasEdgePath",
|
||
"getCanvasEdgeMidpoint",
|
||
"EdgeFlowSegments",
|
||
"sampleEdgePath",
|
||
"parseSimpleEdgePath",
|
||
"getPointAtSampledLength",
|
||
"CloneCanvasNode",
|
||
"ToolboxTemplateGroupCanvasNode",
|
||
"MaterialStyleCanvasNode",
|
||
"preventNativeImageDrag",
|
||
"CanvasNodeShell",
|
||
"TargetModuleCanvasNode",
|
||
"TargetModuleHeroGraphic",
|
||
"ModuleActionIcon",
|
||
"PureTextResourceCanvasNode",
|
||
"VideoStoryCanvasNode",
|
||
"getVideoStoryRows",
|
||
"normalizeVideoStoryRow",
|
||
"VideoAnalysisGlyph",
|
||
"VideoSubtitleErasePendingCanvasNode",
|
||
"VideoHdUpscaleCanvasNode",
|
||
"PresetMediaCanvasNode",
|
||
"normalizeGridCropTile",
|
||
"normalizeGridCellVisual",
|
||
"OfficialAudioCard",
|
||
"formatAudioTimestamp",
|
||
"GenerationPendingPreview",
|
||
"OfficialVideoResultCard",
|
||
"formatVideoTimestamp",
|
||
"NineGridCompositePreview",
|
||
"GridCellImage",
|
||
"CroppedGridTileImage",
|
||
"LocalEditOverlay",
|
||
"getContainedImageRect",
|
||
"GridSplitSelectionOverlay",
|
||
"PresetScriptCanvasNode",
|
||
"GridTilesGlyph",
|
||
"VideoCanvasMarkSourceOverlay",
|
||
"PointerBadge",
|
||
"CanvasCommandPalette",
|
||
"ADD_NODE_PRIMARY_MODULES",
|
||
"ADD_NODE_MODULES",
|
||
"CanvasAddMenuButton",
|
||
"CanvasAddBadge",
|
||
"CanvasAddSubmenu",
|
||
"SCRIPT_SUBMENU_OPTIONS",
|
||
"ASSET_LIBRARY_SUBMENU_OPTIONS",
|
||
"NodeContextMenu",
|
||
"ConnectionAddMenu",
|
||
"CONNECTION_ADD_MODULES",
|
||
"PresetWorkflowControls",
|
||
"GridSplitActionToolbar",
|
||
"OFFICIAL_IMAGE_TOOLBAR_SCALE",
|
||
"WorkflowGlyph",
|
||
"SceneToolIcon",
|
||
"CharacterPresetToolbar",
|
||
"SceneTool",
|
||
"ImageToolbarActionGlyph",
|
||
"SceneToolbarPopover",
|
||
"OFFICIAL_DROPDOWN_SCALE",
|
||
"NineGridPresetGlyph",
|
||
"ImageToolMenuGlyph",
|
||
"CustomGridPicker",
|
||
"PromptComposer",
|
||
"resolveVideoCanvasBillingDisplay",
|
||
"getVideoCanvasFallbackBillingDisplay",
|
||
"getCanvasModelOptionByRef",
|
||
"PROMPT_COMPOSER_BASE_HEIGHT",
|
||
"OFFICIAL_COMPOSER_SCALE",
|
||
"PROMPT_COMPOSER_BASE_WIDTH",
|
||
"PromptActionButton",
|
||
"ComposerReferencePopover",
|
||
"ComposerSlashPopover",
|
||
"SLASH_IMAGE_ITEMS",
|
||
"ComposerFocusPopover",
|
||
"ComposerPopover",
|
||
"filterCanvasModelsByKind",
|
||
"ComposerControl",
|
||
"getCanvasModelDisplayName",
|
||
"getFunctionModelValue",
|
||
"PresetFloatingToolbar",
|
||
"PresetComposerPanel",
|
||
"PRESET_COMPOSER_BASE_HEIGHT",
|
||
"PRESET_MEDIA_TOOLBAR_ITEMS",
|
||
"AudioToVideoComposerPanel",
|
||
"VideoModelPopover",
|
||
"getVideoComposerModelLabel",
|
||
"VideoParameterEditor",
|
||
"VideoParameterRow",
|
||
"VideoRatioOptions",
|
||
"VideoSegmentedOptions",
|
||
"VIDEO_AUDIO_OPTIONS",
|
||
"VIDEO_COUNT_OPTIONS",
|
||
"VideoMotionPresetPopover",
|
||
"VideoEffectPresetPopover",
|
||
"VIDEO_EFFECT_PRESETS",
|
||
"VideoRoleConsentPopover",
|
||
"formatVideoParameterSummary",
|
||
"OfficialVideoMediaToolbar",
|
||
"OfficialVideoToolbarButton",
|
||
"VideoHdSettingsPopover",
|
||
"VideoToolbarMenuPopover",
|
||
"VideoToolbarMenuItem",
|
||
"VideoCropSelectionOverlay",
|
||
"getVideoCardOverlayRect",
|
||
"clampUnit",
|
||
"VideoInlineActionBar",
|
||
"LightningGlyph",
|
||
"getVideoCropSelectionLabel",
|
||
"VideoSubtitleEraseRegionOverlay",
|
||
"normalizeSubtitleEraseRegion",
|
||
"VideoSubtitleEraseRegionActionBar",
|
||
"VideoRegionBarIconButton",
|
||
"VideoClipEditorBar",
|
||
"VIDEO_CLIP_FRAME_COUNT",
|
||
"formatClipDurationLabel",
|
||
"TextTargetModuleComposer",
|
||
"VideoTargetModuleComposer",
|
||
"inferVideoComposerDefaultTab",
|
||
"normalizeComposerBoolean",
|
||
"resolveVideoComposerMode",
|
||
"getVideoModeIcon",
|
||
"getVideoComposerModelShortLabel",
|
||
"VideoModePopover",
|
||
"VideoMotionLibraryPanel",
|
||
"VIDEO_MOTION_FAVORITES_STORAGE_KEY",
|
||
"VIDEO_MOTION_CUSTOM_STORAGE_KEY",
|
||
"AudioTargetModuleComposer",
|
||
"StoryScriptWorkflowDialog",
|
||
"getStoryWorkflowAssetGroups",
|
||
"downloadStoryScriptRows",
|
||
"sanitizeDownloadFilename",
|
||
"TopBar",
|
||
"StylizedBrandLogo",
|
||
"formatCreditValue",
|
||
"LeftToolbar",
|
||
"TOOLBAR_ITEMS",
|
||
"getToolbarButtonLabel",
|
||
"AssetGlyph",
|
||
"ZoomDock",
|
||
"MagnetGlyph",
|
||
"ZoomDockButton",
|
||
"ArrangeCanvasGlyph",
|
||
"CanvasOverviewPopover",
|
||
"EdgeVisibilityGlyph",
|
||
"CANVAS_ZOOM_STEP",
|
||
"ArrangeCanvasConfirm",
|
||
"AddModulePanel",
|
||
"WorkflowPanel",
|
||
"TOOLBOX_TEMPLATE_PRESETS",
|
||
"capturedWorkflows",
|
||
"InspectorPanel",
|
||
"getToolProperties",
|
||
"getInspectorTitle",
|
||
"getToolModes",
|
||
"PropertyField",
|
||
"getPropertyLabel",
|
||
"getOptions",
|
||
"getDefaultValue",
|
||
"getOptionValue",
|
||
"ToggleRow",
|
||
"getOptionLabel",
|
||
"AssetLibraryLauncherPanel",
|
||
"AssetLibraryLauncherRow",
|
||
"AssetMarketPanel",
|
||
"EFFECT_MARKET_CARDS",
|
||
"STYLE_MARKET_CARDS",
|
||
"EFFECT_MARKET_SEARCH_CARDS",
|
||
"STYLE_MARKET_SEARCH_CARDS",
|
||
"STYLE_MARKET_CATEGORIES",
|
||
"EFFECT_MARKET_THUMBNAIL_URL",
|
||
"HistoryAssetsPanel",
|
||
"HISTORY_ASSET_ZOOM_LEVELS",
|
||
"HistoryBatchActionButton",
|
||
"HistorySelectionCheckbox",
|
||
"HistoryAssetPickerModal",
|
||
"WatermarkRulesModal",
|
||
"CanvasAssetManagerPanel",
|
||
"ASSET_MANAGER_FILTERS",
|
||
"ShortcutPanel",
|
||
"TutorialHelpPanel",
|
||
"VIDEO_CANVAS_TUTORIAL_URL",
|
||
"RoleLibraryPanel",
|
||
"ROLE_LIBRARY_FILTER_GROUPS",
|
||
"VideoRoleLibraryPanel",
|
||
"VideoRoleAgreementModal",
|
||
"LibModal",
|
||
"SupportPanel",
|
||
"SkillsAccessModal",
|
||
"SharePopover",
|
||
"getSiteShowcaseName",
|
||
"StoreGlyph",
|
||
"PublishModal",
|
||
"PUBLISH_MODAL_BG_URL",
|
||
"UploadBox",
|
||
"MemberStoreModal",
|
||
"CreditPackGrid",
|
||
"EmptyState",
|
||
"formatCurrencyAmount",
|
||
"VipPlanGrid",
|
||
"BillingHistoryGrid",
|
||
"formatBillingDate",
|
||
"getBillingStatusClass",
|
||
"getBillingStatusLabel",
|
||
"NotificationsPopover",
|
||
"AccountPopover",
|
||
"TARGET_AVATAR",
|
||
"AccountMetricCard",
|
||
"AccountMenuButton",
|
||
"LogoutGlyph",
|
||
"ImageNodePreview",
|
||
"DirectorStudioDialog",
|
||
"DirectorTutorialFollowBar",
|
||
"MultiAngleEditorDialog",
|
||
"AngleSlider"
|
||
],
|
||
"unreachableFunctions": [
|
||
"createWorkflowNode",
|
||
"createHistoryDemoAssetNode",
|
||
"createVideoSubtitleEraseNode",
|
||
"buildStorySceneText",
|
||
"getPersistedVideoAnalysisState",
|
||
"isCanvasImageModel",
|
||
"isCanvasVideoModel",
|
||
"buildGridRectsFromLines",
|
||
"getLineScore",
|
||
"findGridDividerLines",
|
||
"detectGridSplitFromImage",
|
||
"ArrowGlyph",
|
||
"MusicStarterIcon",
|
||
"DiamondGlyph",
|
||
"VideoMediaToolbar",
|
||
"VideoToolbarActionButton",
|
||
"VideoToolbarSubmenu",
|
||
"VideoAnalysisFloatingPanel",
|
||
"StoryScriptScene",
|
||
"FirstFrameVideoScene",
|
||
"AudioToVideoScene",
|
||
"SceneConnector",
|
||
"StoryTextPanel",
|
||
"ScriptGeneratorPanel",
|
||
"PresetMediaPanel",
|
||
"VideoResultPanel",
|
||
"AudioResourcePanel",
|
||
"CharacterThreeViewScene",
|
||
"CharacterImagePanel",
|
||
"VideoAdvancedSwitchRow",
|
||
"DirectorRatioPreview",
|
||
"getNextDirectorCameraName",
|
||
"formatDirectorCameraShotTitle",
|
||
"getNextDirectorRoleName",
|
||
"DirectorConsole3DDialog",
|
||
"DirectorPanoramaHistoryDialog",
|
||
"DirectorPanoramaAiDialog",
|
||
"DirectorRoleInspectorPanel",
|
||
"DirectorAiImportDialog",
|
||
"DirectorAxisInputs",
|
||
"AssetLibraryPanel"
|
||
],
|
||
"candidates": [
|
||
{
|
||
"owner": "LiblibVideoCanvasReplica",
|
||
"line": 10996,
|
||
"tag": "PresetWorkflowControls",
|
||
"handler": "",
|
||
"snippet": "(\n <PresetWorkflowControls\n anchor={selectedPresetAnchor}\n membershipSummary={membershipSummary}\n mode={selectedPresetMode ?? \"character-three-view\"}\n functionConfig={videoCanvasFunctionConfig}\n modelOptions={canvasModelOptions}\n nodes={nodes}\n onClearGridSplitSelection={() => clearNodeGridSplitSelection(selectedPresetControlNode.id)}\n onGridSplitCreateNodes={() => createGridSplitImageNodes(selectedPresetControlNode.id)}\n onGridSplitUpscale={(scaleFactor) => upscaleSelectedGridSplit(selectedPresetControlNode.id, scaleFactor)}\n onComposerSubmit={(p"
|
||
},
|
||
{
|
||
"owner": "LiblibVideoCanvasReplica",
|
||
"line": 11038,
|
||
"tag": "VideoArchiveButton",
|
||
"handler": "",
|
||
"snippet": "return <VideoArchiveButton key={nodeId} automaticBusy={meta.storageStatus === \"archiving\"} url={sourceUrl} onSaved={url => setNodes(current => current.map(node =>\n node.id === nodeId && getNodeMediaUrl(node) === sourceUrl ? { ...node, draftValues: {\n ...node.draftValues, mediaUrl: url, url: [url], videoMeta: { ...meta, storageStatus: \"archived\", permanentVideoUrl: url },\n } } : node))} />;"
|
||
},
|
||
{
|
||
"owner": "ZoomDock",
|
||
"line": 12045,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button className=\"flex h-7 w-10 items-center justify-center rounded-lg bg-white/10 transition-colors hover:bg-white/14\" type=\"button\">\n <MagnetGlyph />\n </button>"
|
||
},
|
||
{
|
||
"owner": "VideoSubtitleEraseRegionActionBar",
|
||
"line": 13371,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button\n aria-label=\"框选区域\"\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-[8px] bg-white/10 text-white transition\"\n type=\"button\"\n >\n <BoxSelect className=\"h-4 w-4\" />\n </button>"
|
||
},
|
||
{
|
||
"owner": "VideoClipEditorBar",
|
||
"line": 13808,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"视频音轨编辑后端待接入。\")}",
|
||
"snippet": "<button\n className=\"flex h-10 w-10 items-center justify-center rounded-[10px] text-white/44 transition hover:bg-white/8 hover:text-white/76\"\n onClick={() => toast.info(\"视频音轨编辑后端待接入。\")}\n type=\"button\"\n >\n <Music2 className=\"h-[18px] w-[18px]\" strokeWidth={2} />\n </button>"
|
||
},
|
||
{
|
||
"owner": "TextTargetModuleComposer",
|
||
"line": 14184,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(\"翻译接口待接入。\")}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[84px] flex items-center gap-6 overflow-hidden text-[17px] text-white/78\">\n <ComposerControl\n active={menu === \"model\"}\n label={getCanvasModelDisplayName(selectedModel, modelOptions)}\n icon=\"⌘\"\n dropdown\n onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")}\n />\n <div className=\"min-w-0 flex-1\" />\n <ComposerControl label=\"文\" onClick={() => toast.info(\"翻译接口待接入。\")} />\n <ComposerControl\n label={billingDisplay.label}\n icon=\"⚡\"\n muted\n onC"
|
||
},
|
||
{
|
||
"owner": "TextTargetModuleComposer",
|
||
"line": 14185,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(billingDisplay.message)}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[84px] flex items-center gap-6 overflow-hidden text-[17px] text-white/78\">\n <ComposerControl\n active={menu === \"model\"}\n label={getCanvasModelDisplayName(selectedModel, modelOptions)}\n icon=\"⌘\"\n dropdown\n onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")}\n />\n <div className=\"min-w-0 flex-1\" />\n <ComposerControl label=\"文\" onClick={() => toast.info(\"翻译接口待接入。\")} />\n <ComposerControl\n label={billingDisplay.label}\n icon=\"⚡\"\n muted\n onC"
|
||
},
|
||
{
|
||
"owner": "AudioToVideoComposerPanel",
|
||
"line": 15442,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"展开音频生视频编辑器待接入。\")}",
|
||
"snippet": "<button className=\"absolute right-6 top-5 text-[32px] text-white/38 hover:text-white/70\" onClick={() => toast.info(\"展开音频生视频编辑器待接入。\")} type=\"button\">↗</button>"
|
||
},
|
||
{
|
||
"owner": "AudioToVideoComposerPanel",
|
||
"line": 15445,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(`${tab}模式后端待接入。`)}",
|
||
"snippet": "<button\n className={cn(\n \"h-[38px] rounded-[8px] border border-white/10 px-4 text-[18px] text-white/48\",\n index === 1 && \"bg-white/8 text-white\"\n )}\n key={tab}\n onClick={() => toast.info(`${tab}模式后端待接入。`)}\n type=\"button\"\n >\n {tab}\n </button>"
|
||
},
|
||
{
|
||
"owner": "AudioToVideoComposerPanel",
|
||
"line": 15466,
|
||
"tag": "button",
|
||
"handler": "onClick={() => {\n if (key === \"reference\") {\n toast.info(\"音频和图片参考已连接,可继续补充更多素材。\");\n return;\n }\n if (key === \"mark\") {\n appendPromptSnippet(\"添加人物与构图标记\");\n return;\n }\n setAssistMenu((current) => current === key ? null : (key as typeof assistMenu));\n setMenu(null);\n }}",
|
||
"snippet": "<button\n className={cn(\n \"flex h-[72px] w-[92px] flex-col items-center justify-center gap-1 rounded-[8px] border border-white/10 text-[16px] text-white/50 transition hover:bg-white/[0.07] hover:text-white/80\",\n assistMenu === key && \"border-white/22 bg-white/10 text-white\"\n )}\n key={label}\n onClick={() => {\n if (key === \"reference\") {\n toast.info(\"音频和图片参考已连接,可继续补充更多素材。\");\n return;\n }\n if (key === \"mark\") {\n appendPromptSnippet(\"添加人物与构图标记\");\n return;\n "
|
||
},
|
||
{
|
||
"owner": "AudioToVideoComposerPanel",
|
||
"line": 15510,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(\"翻译接口待接入。\")}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[86px] flex items-center gap-7 overflow-hidden text-[22px] text-white/82\">\n <ComposerControl active={menu === \"model\"} label={getVideoComposerModelLabel(settings, modelOptions)} icon=\"▥\" dropdown onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")} />\n <span className=\"rounded-[5px] bg-[#f6c85f] px-1.5 py-0.5 text-[13px] font-bold text-[#2b2314]\">VIP</span>\n <ComposerControl active={menu === \"settings\"} label={formatVideoParameterSummary(settings)} icon=\"▭\" dropdown onClick={() => setMenu((current) => current === \"settings\" ? null : \"settings\")} />"
|
||
},
|
||
{
|
||
"owner": "AudioToVideoComposerPanel",
|
||
"line": 15511,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(\"高级设置后端待接入。\")}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[86px] flex items-center gap-7 overflow-hidden text-[22px] text-white/82\">\n <ComposerControl active={menu === \"model\"} label={getVideoComposerModelLabel(settings, modelOptions)} icon=\"▥\" dropdown onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")} />\n <span className=\"rounded-[5px] bg-[#f6c85f] px-1.5 py-0.5 text-[13px] font-bold text-[#2b2314]\">VIP</span>\n <ComposerControl active={menu === \"settings\"} label={formatVideoParameterSummary(settings)} icon=\"▭\" dropdown onClick={() => setMenu((current) => current === \"settings\" ? null : \"settings\")} />"
|
||
},
|
||
{
|
||
"owner": "AudioToVideoComposerPanel",
|
||
"line": 15512,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(billingDisplay.message)}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[86px] flex items-center gap-7 overflow-hidden text-[22px] text-white/82\">\n <ComposerControl active={menu === \"model\"} label={getVideoComposerModelLabel(settings, modelOptions)} icon=\"▥\" dropdown onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")} />\n <span className=\"rounded-[5px] bg-[#f6c85f] px-1.5 py-0.5 text-[13px] font-bold text-[#2b2314]\">VIP</span>\n <ComposerControl active={menu === \"settings\"} label={formatVideoParameterSummary(settings)} icon=\"▭\" dropdown onClick={() => setMenu((current) => current === \"settings\" ? null : \"settings\")} />"
|
||
},
|
||
{
|
||
"owner": "AudioToVideoComposerPanel",
|
||
"line": 15519,
|
||
"tag": "button",
|
||
"handler": "onClick={() => {\n if (onSubmit) {\n onSubmit(prompt, settings);\n return;\n }\n toast.info(\"音频生视频生成接口待接入。\");\n }}",
|
||
"snippet": "<button\n className=\"absolute bottom-5 right-5 flex h-14 w-14 items-center justify-center rounded-[14px] bg-white text-[34px] leading-none text-black hover:bg-white/90\"\n onClick={() => {\n if (onSubmit) {\n onSubmit(prompt, settings);\n return;\n }\n toast.info(\"音频生视频生成接口待接入。\");\n }}\n type=\"button\"\n >\n ↑\n </button>"
|
||
},
|
||
{
|
||
"owner": "PresetFloatingToolbar",
|
||
"line": 15941,
|
||
"tag": "button",
|
||
"handler": "onClick={() => {\n if (onClick) {\n onClick();\n return;\n }\n if (message) toast.info(message);\n }}",
|
||
"snippet": "<button\n className={cn(\n \"flex items-center justify-center rounded-[8px] hover:bg-white/8 hover:text-white\",\n compact ? \"h-8 text-[14px] font-medium\" : \"h-10 gap-2 rounded-[10px] px-3 text-[15px]\"\n )}\n key={label}\n onClick={() => {\n if (onClick) {\n onClick();\n return;\n }\n if (message) toast.info(message);\n }}\n style={compact ? { width: compactWidth } : undefined}\n type=\"button\"\n >\n {!compact ? (\n <span className=\"flex h-5 w-5 items-center ju"
|
||
},
|
||
{
|
||
"owner": "PresetComposerPanel",
|
||
"line": 16227,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"展开提示词编辑器待接入。\")}",
|
||
"snippet": "<button className=\"absolute right-5 top-5 text-[26px] text-white/45\" onClick={() => toast.info(\"展开提示词编辑器待接入。\")} type=\"button\">↗</button>"
|
||
},
|
||
{
|
||
"owner": "PresetComposerPanel",
|
||
"line": 16246,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(\"镜头配置接口待接入。\")}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[84px] flex items-center gap-6 overflow-hidden text-[17px] text-white/78\">\n\t <ComposerControl active={menu === \"model\"} label={getCanvasModelDisplayName(settings.model, modelOptions)} icon=\"◉\" dropdown onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")} />\n\t <ComposerControl active={menu === \"ratio\"} label={settings.ratio} icon=\"▭\" dropdown onClick={() => setMenu((current) => current === \"ratio\" ? null : \"ratio\")} />\n\t <ComposerControl active={menu === \"resolution\"} label={settings.resolution} dropdown onClick={() => setMenu((current) => current === \"re"
|
||
},
|
||
{
|
||
"owner": "PresetComposerPanel",
|
||
"line": 16247,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(\"当前仅支持单次生成 1 个结果。\")}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[84px] flex items-center gap-6 overflow-hidden text-[17px] text-white/78\">\n\t <ComposerControl active={menu === \"model\"} label={getCanvasModelDisplayName(settings.model, modelOptions)} icon=\"◉\" dropdown onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")} />\n\t <ComposerControl active={menu === \"ratio\"} label={settings.ratio} icon=\"▭\" dropdown onClick={() => setMenu((current) => current === \"ratio\" ? null : \"ratio\")} />\n\t <ComposerControl active={menu === \"resolution\"} label={settings.resolution} dropdown onClick={() => setMenu((current) => current === \"re"
|
||
},
|
||
{
|
||
"owner": "PresetComposerPanel",
|
||
"line": 16248,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(billingDisplay.message)}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[84px] flex items-center gap-6 overflow-hidden text-[17px] text-white/78\">\n\t <ComposerControl active={menu === \"model\"} label={getCanvasModelDisplayName(settings.model, modelOptions)} icon=\"◉\" dropdown onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")} />\n\t <ComposerControl active={menu === \"ratio\"} label={settings.ratio} icon=\"▭\" dropdown onClick={() => setMenu((current) => current === \"ratio\" ? null : \"ratio\")} />\n\t <ComposerControl active={menu === \"resolution\"} label={settings.resolution} dropdown onClick={() => setMenu((current) => current === \"re"
|
||
},
|
||
{
|
||
"owner": "PresetComposerPanel",
|
||
"line": 16255,
|
||
"tag": "button",
|
||
"handler": "onClick={() => {\n if (onSubmit) {\n onSubmit(draftPrompt, settings);\n return;\n }\n toast.info(submitMessage);\n }}",
|
||
"snippet": "<button\n\t className=\"absolute bottom-5 right-5 flex h-11 w-11 items-center justify-center rounded-[12px] bg-white/76 text-[24px] text-black hover:bg-white\"\n\t onClick={() => {\n if (onSubmit) {\n onSubmit(draftPrompt, settings);\n return;\n }\n toast.info(submitMessage);\n }}\n\t type=\"button\"\n\t >\n\t ↑\n\t </button>"
|
||
},
|
||
{
|
||
"owner": "PromptComposer",
|
||
"line": 16874,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"展开提示词编辑器待接入。\")}",
|
||
"snippet": "<button className=\"absolute right-5 top-5 text-[26px] text-white/45\" onClick={() => toast.info(\"展开提示词编辑器待接入。\")} type=\"button\">↗</button>"
|
||
},
|
||
{
|
||
"owner": "PromptComposer",
|
||
"line": 16958,
|
||
"tag": "ComposerControl",
|
||
"handler": "onClick={() => toast.info(billingDisplay.message)}",
|
||
"snippet": "<div className=\"absolute bottom-5 left-5 right-[84px] flex items-center gap-6 overflow-hidden text-[18px] text-white/78\">\n <ComposerControl active={menu === \"model\"} label={getCanvasModelDisplayName(settings.model, modelOptions)} icon=\"◉\" dropdown onClick={() => setMenu((current) => current === \"model\" ? null : \"model\")} />\n <ComposerControl active={menu === \"ratio\"} label={settings.ratio} icon=\"▭\" dropdown onClick={() => setMenu((current) => current === \"ratio\" ? null : \"ratio\")} />\n <ComposerControl active={menu === \"resolution\"} label={settings.resolution} dropdown onClick={() => setMenu((current) => current === "
|
||
},
|
||
{
|
||
"owner": "PromptComposer",
|
||
"line": 16965,
|
||
"tag": "button",
|
||
"handler": "onClick={() =>\n onSubmit\n ? onSubmit({\n prompt,\n references,\n settings,\n slashScene,\n })\n : toast.info(\"角色三视图生成接口待接入。\")\n }",
|
||
"snippet": "<button\n className=\"absolute bottom-5 right-5 flex h-11 w-11 items-center justify-center rounded-[12px] bg-white/76 text-[24px] text-black hover:bg-white\"\n onClick={() =>\n onSubmit\n ? onSubmit({\n prompt,\n references,\n settings,\n slashScene,\n })\n : toast.info(\"角色三视图生成接口待接入。\")\n }\n type=\"button\"\n >\n ↑\n </button>"
|
||
},
|
||
{
|
||
"owner": "VideoMotionLibraryPanel",
|
||
"line": 17618,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button\n aria-label=\"搜索\"\n className=\"flex size-6 shrink-0 items-center justify-center text-white/42 hover:text-white/75\"\n type=\"submit\"\n >\n <Search className=\"size-4\" />\n </button>"
|
||
},
|
||
{
|
||
"owner": "CloneCanvasNode",
|
||
"line": 19132,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button className=\"relative mt-3 h-8 rounded-[8px] border border-[#dfe3ff] bg-white px-4 text-[11px] text-[#5161ff]\" type=\"button\">\n 选择文件\n </button>"
|
||
},
|
||
{
|
||
"owner": "PresetMediaCanvasNode",
|
||
"line": 21735,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"视频全屏预览待接入。\")}",
|
||
"snippet": "<button\n className=\"absolute right-3 top-3 rounded-[8px] bg-white/8 px-3 py-2 text-[12px] text-white/72 hover:bg-white/12\"\n onClick={() => toast.info(\"视频全屏预览待接入。\")}\n type=\"button\"\n >\n ↗\n </button>"
|
||
},
|
||
{
|
||
"owner": "PresetMediaCanvasNode",
|
||
"line": 21810,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(`${node.title}素材替换接口待接入。`)}",
|
||
"snippet": "<button\n className=\"absolute right-3 top-3 flex h-10 w-10 items-center justify-center rounded-[8px] bg-black/56 text-white/90\"\n onClick={() => toast.info(`${node.title}素材替换接口待接入。`)}\n type=\"button\"\n >\n ↥\n </button>"
|
||
},
|
||
{
|
||
"owner": "PresetScriptCanvasNode",
|
||
"line": 22476,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"编辑剧本接口待接入。\")}",
|
||
"snippet": "<button className=\"rounded-[8px] px-2 py-1 text-[#4f5cff] hover:bg-black/5\" onClick={() => toast.info(\"编辑剧本接口待接入。\")} type=\"button\">\n 编辑\n </button>"
|
||
},
|
||
{
|
||
"owner": "AssetMarketPanel",
|
||
"line": 22917,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button className=\"flex h-7 w-[54px] items-center justify-center rounded-[8px] bg-white/10 text-[13px] text-white\" type=\"button\">\n 全部\n </button>"
|
||
},
|
||
{
|
||
"owner": "HistoryAssetPickerModal",
|
||
"line": 23177,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button className=\"flex h-8 w-8 items-center justify-center rounded-lg text-white/36 transition hover:bg-white/8 hover:text-white\" type=\"button\">\n <ChevronRight className=\"h-4 w-4 rotate-180\" />\n </button>"
|
||
},
|
||
{
|
||
"owner": "HistoryAssetPickerModal",
|
||
"line": 23181,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button className=\"flex h-8 w-8 items-center justify-center rounded-lg text-white/36 transition hover:bg-white/8 hover:text-white\" type=\"button\">\n <ChevronRight className=\"h-4 w-4\" />\n </button>"
|
||
},
|
||
{
|
||
"owner": "WorkflowPanel",
|
||
"line": 24486,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button\n className=\"cursor-pointer rounded-md border-none bg-transparent py-1 pr-2 pl-0 text-sm font-medium text-white transition-colors\"\n type=\"button\"\n >\n 我的工具箱\n </button>"
|
||
},
|
||
{
|
||
"owner": "WorkflowPanel",
|
||
"line": 24492,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"工具箱模板会将参考图、提示词和成品节点应用到画布。\")}",
|
||
"snippet": "<button\n aria-label=\"工具箱模板说明\"\n className=\"-ml-1.5 flex size-4 cursor-help items-center justify-center rounded-full border-none bg-transparent p-0 text-white/70 opacity-50 transition-opacity hover:opacity-80\"\n onClick={() => toast.info(\"工具箱模板会将参考图、提示词和成品节点应用到画布。\")}\n type=\"button\"\n >\n <HelpCircle className=\"h-3.5 w-3.5\" />\n </button>"
|
||
},
|
||
{
|
||
"owner": "WorkflowPanel",
|
||
"line": 24501,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button\n className=\"cursor-pointer rounded-md border-none bg-transparent px-2 py-1 text-sm font-medium text-white/55 transition-colors hover:text-white/80\"\n type=\"button\"\n >\n 周星驰经典名场面\n </button>"
|
||
},
|
||
{
|
||
"owner": "InspectorPanel",
|
||
"line": 24620,
|
||
"tag": "button",
|
||
"handler": "onClick={() => (onAddReference ? onAddReference(node) : toast.info(\"上传/素材选择接口待接入。\"))}",
|
||
"snippet": "<button\n className=\"flex h-[74px] w-full items-center justify-center rounded-[8px] border border-white/10 bg-white/5 text-[14px] text-white/52 hover:bg-white/8 hover:text-white\"\n onClick={() => (onAddReference ? onAddReference(node) : toast.info(\"上传/素材选择接口待接入。\"))}\n type=\"button\"\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n {referenceCount > 0 ? `继续添加素材 · 已连入 ${referenceCount}` : \"添加素材\"}\n </button>"
|
||
},
|
||
{
|
||
"owner": "InspectorPanel",
|
||
"line": 24655,
|
||
"tag": "button",
|
||
"handler": "onClick={() => (onGenerate ? onGenerate(node) : toast.info(\"生成接口待接入。\"))}",
|
||
"snippet": "<button\n className=\"h-[64px] w-full rounded-[8px] bg-white font-bold text-[16px] text-black hover:bg-white/90 disabled:cursor-not-allowed disabled:bg-white/35\"\n disabled={isGenerating || (selectableRoute && (!compatibleModels.length || unavailableSelection))}\n onClick={() => (onGenerate ? onGenerate(node) : toast.info(\"生成接口待接入。\"))}\n type=\"button\"\n >\n {isGenerating ? \"生成中...\" : \"生成\"}\n </button>"
|
||
},
|
||
{
|
||
"owner": "PropertyField",
|
||
"line": 24751,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(`${label}选择器待接入。`)}",
|
||
"snippet": "<button\n className=\"h-10 w-full rounded-[8px] border border-white/10 bg-black/18 px-3 text-left text-[13px] text-white/46 hover:border-white/20 hover:text-white\"\n onClick={() => toast.info(`${label}选择器待接入。`)}\n type=\"button\"\n >\n 选择{label}\n </button>"
|
||
},
|
||
{
|
||
"owner": "SkillsAccessModal",
|
||
"line": 24963,
|
||
"tag": "button",
|
||
"handler": "onClick={() =>\n toast.info(\"安装包位于 integrations/openclaw,可通过 STDIO MCP 接入。\")\n }",
|
||
"snippet": "<button\n className=\"ml-1 text-[#2f8bff] underline-offset-2 hover:underline\"\n onClick={() =>\n toast.info(\"安装包位于 integrations/openclaw,可通过 STDIO MCP 接入。\")\n }\n type=\"button\"\n >\n 接口文档\n </button>"
|
||
},
|
||
{
|
||
"owner": "SkillsAccessModal",
|
||
"line": 24998,
|
||
"tag": "button",
|
||
"handler": "onClick={() => {\n void navigator.clipboard?.writeText(createdToken);\n toast.success(\"Access Key 已复制\");\n }}",
|
||
"snippet": "<button\n className=\"flex h-8 shrink-0 items-center gap-1 rounded-[6px] bg-white px-2 text-[11px] font-medium text-black\"\n onClick={() => {\n void navigator.clipboard?.writeText(createdToken);\n toast.success(\"Access Key 已复制\");\n }}\n type=\"button\"\n >\n <Copy className=\"h-3.5 w-3.5\" />\n 复制\n </button>"
|
||
},
|
||
{
|
||
"owner": "VipPlanGrid",
|
||
"line": 25468,
|
||
"tag": "button",
|
||
"handler": "onClick={() => {\n if (isCurrent) return;\n toast.info(\"会员订阅支付尚未接入,当前请优先使用积分充值。\");\n }}",
|
||
"snippet": "<button\n className={cn(\n \"mt-4 h-9 w-full rounded-[8px] text-[13px] font-semibold transition-colors\",\n isCurrent\n ? \"cursor-default bg-white/12 text-white/38\"\n : \"bg-white text-black hover:bg-white/90\"\n )}\n disabled={isCurrent}\n onClick={() => {\n if (isCurrent) return;\n toast.info(\"会员订阅支付尚未接入,当前请优先使用积分充值。\");\n }}\n type=\"button\"\n >\n {isCurrent ? \"当前套餐\" : isFree ? \"默认套餐\" : \"即将接入\"}\n </button>"
|
||
},
|
||
{
|
||
"owner": "NotificationsPopover",
|
||
"line": 25654,
|
||
"tag": "button",
|
||
"handler": "",
|
||
"snippet": "<button\n className={cn(\n \"h-7 rounded-[8px] px-3 text-[12px] transition-colors\",\n index === 0 ? \"bg-white text-black\" : \"bg-white/6 text-white/56 hover:bg-white/10 hover:text-white\"\n )}\n key={item}\n type=\"button\"\n >\n {item}\n </button>"
|
||
},
|
||
{
|
||
"owner": "NotificationsPopover",
|
||
"line": 25671,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(`${title}接口待接入。`)}",
|
||
"snippet": "<button\n className=\"mb-2 w-full rounded-[10px] border border-white/8 bg-white/5 p-3 text-left hover:bg-white/8\"\n key={title}\n onClick={() => toast.info(`${title}接口待接入。`)}\n type=\"button\"\n >\n <span className=\"block text-[13px] font-semibold text-white/82\">{title}</span>\n <span className=\"mt-1 block text-[12px] leading-5 text-white/42\">{description}</span>\n </button>"
|
||
},
|
||
{
|
||
"owner": "AccountPopover",
|
||
"line": 25727,
|
||
"tag": "button",
|
||
"handler": "onClick={() => {\n void navigator.clipboard?.writeText(displayEmail);\n toast.success(\"邮箱复制成功\");\n }}",
|
||
"snippet": "<button\n className=\"rounded-[6px] px-1 text-white/42 hover:bg-white/8 hover:text-white\"\n onClick={() => {\n void navigator.clipboard?.writeText(displayEmail);\n toast.success(\"邮箱复制成功\");\n }}\n type=\"button\"\n >\n <Copy className=\"h-3 w-3\" />\n </button>"
|
||
},
|
||
{
|
||
"owner": "AccountPopover",
|
||
"line": 25779,
|
||
"tag": "AccountMenuButton",
|
||
"handler": "onClick={() => toast.info(\"个人中心入口待接入。\")}",
|
||
"snippet": "<div className=\"mt-4 space-y-1\">\n <AccountMenuButton\n icon={<StoreGlyph />}\n label=\"积分与会员中心\"\n onClick={() => {\n onClose();\n onOpenMember();\n }}\n />\n <AccountMenuButton icon={<UserRound className=\"h-[18px] w-[18px]\" />} label=\"个人中心\" onClick={() => toast.info(\"个人中心入口待接入。\")} />\n <AccountMenuButton icon={<Plus className=\"h-[18px] w-[18px]\" />} label=\"创建团队\" onClick={() => toast.info(\"创建团队接口待接入。\")} />\n <AccountMenuButton icon={<FileText className=\"h-[18px] w-[18px]\" />} label=\"订阅与开发票\" onClick={() => toast.info(\"订阅"
|
||
},
|
||
{
|
||
"owner": "AccountPopover",
|
||
"line": 25780,
|
||
"tag": "AccountMenuButton",
|
||
"handler": "onClick={() => toast.info(\"创建团队接口待接入。\")}",
|
||
"snippet": "<div className=\"mt-4 space-y-1\">\n <AccountMenuButton\n icon={<StoreGlyph />}\n label=\"积分与会员中心\"\n onClick={() => {\n onClose();\n onOpenMember();\n }}\n />\n <AccountMenuButton icon={<UserRound className=\"h-[18px] w-[18px]\" />} label=\"个人中心\" onClick={() => toast.info(\"个人中心入口待接入。\")} />\n <AccountMenuButton icon={<Plus className=\"h-[18px] w-[18px]\" />} label=\"创建团队\" onClick={() => toast.info(\"创建团队接口待接入。\")} />\n <AccountMenuButton icon={<FileText className=\"h-[18px] w-[18px]\" />} label=\"订阅与开发票\" onClick={() => toast.info(\"订阅"
|
||
},
|
||
{
|
||
"owner": "AccountPopover",
|
||
"line": 25781,
|
||
"tag": "AccountMenuButton",
|
||
"handler": "onClick={() => toast.info(\"订阅与开发票入口待接入。\")}",
|
||
"snippet": "<div className=\"mt-4 space-y-1\">\n <AccountMenuButton\n icon={<StoreGlyph />}\n label=\"积分与会员中心\"\n onClick={() => {\n onClose();\n onOpenMember();\n }}\n />\n <AccountMenuButton icon={<UserRound className=\"h-[18px] w-[18px]\" />} label=\"个人中心\" onClick={() => toast.info(\"个人中心入口待接入。\")} />\n <AccountMenuButton icon={<Plus className=\"h-[18px] w-[18px]\" />} label=\"创建团队\" onClick={() => toast.info(\"创建团队接口待接入。\")} />\n <AccountMenuButton icon={<FileText className=\"h-[18px] w-[18px]\" />} label=\"订阅与开发票\" onClick={() => toast.info(\"订阅"
|
||
},
|
||
{
|
||
"owner": "AccountPopover",
|
||
"line": 25782,
|
||
"tag": "AccountMenuButton",
|
||
"handler": "onClick={() => toast.info(\"账号设置入口待接入。\")}",
|
||
"snippet": "<div className=\"mt-4 space-y-1\">\n <AccountMenuButton\n icon={<StoreGlyph />}\n label=\"积分与会员中心\"\n onClick={() => {\n onClose();\n onOpenMember();\n }}\n />\n <AccountMenuButton icon={<UserRound className=\"h-[18px] w-[18px]\" />} label=\"个人中心\" onClick={() => toast.info(\"个人中心入口待接入。\")} />\n <AccountMenuButton icon={<Plus className=\"h-[18px] w-[18px]\" />} label=\"创建团队\" onClick={() => toast.info(\"创建团队接口待接入。\")} />\n <AccountMenuButton icon={<FileText className=\"h-[18px] w-[18px]\" />} label=\"订阅与开发票\" onClick={() => toast.info(\"订阅"
|
||
},
|
||
{
|
||
"owner": "AccountPopover",
|
||
"line": 25783,
|
||
"tag": "AccountMenuButton",
|
||
"handler": "onClick={() => toast.info(\"退出登录接口待接入。\")}",
|
||
"snippet": "<div className=\"mt-4 space-y-1\">\n <AccountMenuButton\n icon={<StoreGlyph />}\n label=\"积分与会员中心\"\n onClick={() => {\n onClose();\n onOpenMember();\n }}\n />\n <AccountMenuButton icon={<UserRound className=\"h-[18px] w-[18px]\" />} label=\"个人中心\" onClick={() => toast.info(\"个人中心入口待接入。\")} />\n <AccountMenuButton icon={<Plus className=\"h-[18px] w-[18px]\" />} label=\"创建团队\" onClick={() => toast.info(\"创建团队接口待接入。\")} />\n <AccountMenuButton icon={<FileText className=\"h-[18px] w-[18px]\" />} label=\"订阅与开发票\" onClick={() => toast.info(\"订阅"
|
||
},
|
||
{
|
||
"owner": "AccountMetricCard",
|
||
"line": 25805,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(`${label}接口待接入。`)}",
|
||
"snippet": "<button\n className={cn(\n \"rounded-[12px] border border-white/8 bg-white/[0.04] px-4 py-3 text-left hover:bg-white/[0.07]\",\n className\n )}\n onClick={() => toast.info(`${label}接口待接入。`)}\n type=\"button\"\n >\n <span className={cn(\"block text-[12px]\", accent ? \"text-[#09caf5]\" : \"text-white/45\")}>{label}</span>\n <span className=\"mt-1 flex items-baseline gap-1\">\n <span className={cn(\"font-['PlusJakartaSans'] text-[18px] font-bold\", accent ? \"text-[#09caf5]\" : \"text-white/88\")}>{value}</span>\n <span className=\"text-[12px] text-white/44\">{suffix}</span>\n </span>\n </button>"
|
||
},
|
||
{
|
||
"owner": "SupportPanel",
|
||
"line": 25859,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(`${title}入口待接入。`)}",
|
||
"snippet": "<button\n className=\"w-full rounded-[8px] border border-white/8 bg-white/5 p-3 text-left hover:bg-white/8\"\n key={title}\n onClick={() => toast.info(`${title}入口待接入。`)}\n type=\"button\"\n >\n <div className=\"text-[13px] font-semibold text-white/82\">{title}</div>\n <div className=\"mt-1 text-[12px] text-white/42\">{description}</div>\n </button>"
|
||
},
|
||
{
|
||
"owner": "PublishModal",
|
||
"line": 26112,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"发布接口待接入。\")}",
|
||
"snippet": "<button\n className=\"cursor-pointer rounded-lg bg-[#478EFF] px-3 py-2 text-[13px] text-white transition-colors hover:bg-[#2563EB]\"\n onClick={() => toast.info(\"发布接口待接入。\")}\n type=\"button\"\n >\n 发布并投稿\n </button>"
|
||
},
|
||
{
|
||
"owner": "PublishModal",
|
||
"line": 26125,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(\"服务协议入口待接入。\")}",
|
||
"snippet": "<button\n className=\"text-[#478EFF] hover:underline\"\n onClick={() => toast.info(\"服务协议入口待接入。\")}\n type=\"button\"\n >\n 《{siteName}创作许可服务协议》\n </button>"
|
||
},
|
||
{
|
||
"owner": "UploadBox",
|
||
"line": 26142,
|
||
"tag": "button",
|
||
"handler": "onClick={() => toast.info(`${label}接口待接入。`)}",
|
||
"snippet": "<button\n className=\"flex h-[120px] flex-1 flex-col items-center justify-center rounded-[8px] border border-white/8 bg-white/12 text-white/72 transition-colors hover:bg-white/16 hover:text-white\"\n onClick={() => toast.info(`${label}接口待接入。`)}\n type=\"button\"\n >\n <Plus className=\"h-5 w-5\" />\n <span className=\"mt-2 text-[13px]\">{label}</span>\n {hint ? <span className=\"mt-2 text-[12px] text-white/42\">{hint}</span> : null}\n </button>"
|
||
}
|
||
]
|
||
} |