UNPKG

@blockly/plugin-cross-tab-copy-paste

Version:
109 lines 4.24 kB
/** * @license * Copyright 2022 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import * as Blockly from 'blockly/core'; type TypeErrorCallback = () => void; /** * Return value for a context menu item's precondition. */ declare enum ContextMenuState { ENABLED = "enabled", DISABLED = "disabled", HIDDEN = "hidden" } /** * A Blockly plugin that adds context menu items and keyboard shortcuts * to allow users to copy and paste copyable objects between tabs. */ export declare class CrossTabCopyPaste { /** Key in which store copy data in the browser's local storage. */ localStorageKey: string; /** * Initializes the cross tab copy paste plugin. If no options are selected * then both context menu items and keyboard shortcuts are added. * * @param options * @param options.shortcut Register cut (ctr + x), copy (ctr + c) and paste (ctr + v) * in the shortcut. * @param options.contextMenu Register copy and paste in the context menu. * @param typeErrorCallback callback function to handle type errors * @param localStorageKey custom key for local storage */ init({ contextMenu, shortcut }?: { contextMenu?: true; shortcut?: true; }, typeErrorCallback?: TypeErrorCallback, localStorageKey?: string): void; /** * Parses copy data from JSON in local storage, if it exists. * * @returns copy data parsed from local storage, or undefined */ getCopyData(): Blockly.ICopyData | undefined; /** * Copy precondition called by both keyboard shortcut and context menu item. * Allows copying out of the flyout, as long as they could be pasted * into the main workspace. * * @param scope scope for copy action. * @param workspace explicit workspace for keyboard shortcuts, * undefined to get the workspace from the focused node. * @returns whether the option should be shown/hidden/disabled. */ copyPrecondition(scope: Blockly.ContextMenuRegistry.Scope, workspace?: Blockly.Workspace): ContextMenuState; /** * Copy callback called by both keyboard shortcut and context menu item. * Copies the copy data to local storage. * * @param scope scope for copy action. * @param workspace workspace where shortcut or context menu was activated. * @returns true if copy happened, false otherwise. */ copyCallback(scope: Blockly.ContextMenuRegistry.Scope, workspace: Blockly.Workspace): boolean; /** * Paste precondition called by both keyboard shortcut and context menu item. * * @param workspace workspace to paste in. should not be a flyout workspace. * @returns true if paste happened, false otherwise. */ pastePrecondition(workspace: Blockly.WorkspaceSvg): ContextMenuState; /** * v12.0.0 of Blockly included the keyboard shortcut in Msg string, but * it was removed in v12.2.0. This function can be removed when this plugin's * minimum version of Blockly is >=12.2.0. * * @param labelText Blockly.Msg for the shortcut * @returns trimmed label for the context menu item. */ getContextMenuText(labelText: string): string; /** * Adds a copy command to the context menu for copyable items. */ blockCopyToStorageContextMenu(): void; /** * Adds a paste command to the context menu for copyable items. * * @param typeErrorCallback callback function to handle type errors */ blockPasteFromStorageContextMenu(typeErrorCallback?: TypeErrorCallback): void; /** * Adds a keyboard shortcut that will store copy information for a copyable * in localStorage. */ blockCopyToStorageShortcut(): void; /** * Adds a keyboard shortcut that will store copy information for copyable * items in local storage and delete the item. */ blockCutToStorageShortcut(): void; /** * Adds a keyboard shortcut that will paste the copyable stored in localStorage. * * @param typeErrorCallback * callback function to handle type errors */ blockPasteFromStorageShortcut(typeErrorCallback?: TypeErrorCallback): void; } export {}; //# sourceMappingURL=index.d.ts.map