UNPKG

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

Version:
3 lines 5.4 kB
/*! For license information please see index.js.LICENSE.txt */ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("blockly/core"));else if("function"==typeof define&&define.amd)define(["blockly/core"],t);else{var r="object"==typeof exports?t(require("blockly/core")):t(e.Blockly);for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(this,(e=>(()=>{"use strict";var t={370:t=>{t.exports=e}},r={};function o(e){var s=r[e];if(void 0!==s)return s.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};o.r(s),o.d(s,{CrossTabCopyPaste:()=>a});var i=o(370);class a{init({contextMenu:e=!0,shortcut:t=!0}={contextMenu:!0,shortcut:!0},r){e&&(this.blockCopyToStorageContextMenu(),this.blockPasteFromStorageContextMenu(r)),t&&(i.ShortcutRegistry.registry.unregister(i.ShortcutItems.names.COPY),i.ShortcutRegistry.registry.unregister(i.ShortcutItems.names.CUT),i.ShortcutRegistry.registry.unregister(i.ShortcutItems.names.PASTE),this.blockCopyToStorageShortcut(),this.blockCutToStorageShortcut(),this.blockPasteFromStorageShortcut(r))}blockCopyToStorageContextMenu(){const e={displayText:function(){return i.Msg.CROSS_TAB_COPY?i.Msg.CROSS_TAB_COPY:"Copy"},preconditionFn:function(e){return i.getSelected().isDeletable()&&i.getSelected().isMovable()?"enabled":"disabled"},callback:function(e){localStorage.setItem("blocklyStash",JSON.stringify(e.block.toCopyData()))},scopeType:i.ContextMenuRegistry.ScopeType.BLOCK,id:"blockCopyToStorage",weight:0};i.ContextMenuRegistry.registry.register(e)}blockPasteFromStorageContextMenu(e){const t={displayText:function(){return i.Msg.CROSS_TAB_PASTE?i.Msg.CROSS_TAB_PASTE:"Paste"},preconditionFn:function(e){const t=JSON.parse(localStorage.getItem("blocklyStash"));return t&&e.workspace.isCapacityAvailable(t.typeCounts)?"enabled":"disabled"},callback:function(t){const r=JSON.parse(localStorage.getItem("blocklyStash"));try{i.clipboard.paste(r,t.workspace)}catch(t){if(!(t instanceof TypeError&&e))throw t;e()}},scopeType:i.ContextMenuRegistry.ScopeType.WORKSPACE,id:"blockPasteFromStorage",weight:0};i.ContextMenuRegistry.registry.register(t)}blockCopyToStorageShortcut(){const e={name:"copy",preconditionFn:function(e){return!e.options.readOnly&&!i.Gesture.inProgress()&&i.getSelected()&&i.getSelected().isDeletable()&&i.getSelected().isMovable()&&!i.getSelected().isInMutator},callback:function(e,t){t.preventDefault();const r=i.getSelected();return!(!r||!i.isCopyable(r)||(e.hideChaff(),localStorage.setItem("blocklyStash",JSON.stringify(r.toCopyData())),0))}};i.ShortcutRegistry.registry.register(e);const t=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.C,[i.utils.KeyCodes.CTRL]);i.ShortcutRegistry.registry.addKeyMapping(t,e.name);const r=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.C,[i.utils.KeyCodes.ALT]);i.ShortcutRegistry.registry.addKeyMapping(r,e.name);const o=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.C,[i.utils.KeyCodes.META]);i.ShortcutRegistry.registry.addKeyMapping(o,e.name)}blockCutToStorageShortcut(){const e={name:"cut",preconditionFn:function(e){return!e.options.readOnly&&!i.Gesture.inProgress()&&i.getSelected()&&i.getSelected().isDeletable()&&i.getSelected().isMovable()&&!i.getSelected().workspace.isFlyout},callback:function(e,t){t.preventDefault();const r=i.getSelected();return!(!r||!i.isCopyable(r)||(localStorage.setItem("blocklyStash",JSON.stringify(r.toCopyData())),i.Events.setGroup(!0),r.dispose(!0),i.Events.setGroup(!1),0))}};i.ShortcutRegistry.registry.register(e);const t=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.X,[i.utils.KeyCodes.CTRL]);i.ShortcutRegistry.registry.addKeyMapping(t,e.name);const r=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.X,[i.utils.KeyCodes.ALT]);i.ShortcutRegistry.registry.addKeyMapping(r,e.name);const o=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.X,[i.utils.KeyCodes.META]);i.ShortcutRegistry.registry.addKeyMapping(o,e.name)}blockPasteFromStorageShortcut(e){const t={name:"paste",preconditionFn:function(e){if(e.options.readOnly||i.Gesture.inProgress())return!1;const t=JSON.parse(localStorage.getItem("blocklyStash"));return!(!t||!e.isCapacityAvailable(t.typeCounts))},callback:function(t,r){r.preventDefault();const o=JSON.parse(localStorage.getItem("blocklyStash"));try{i.clipboard.paste(o,t)}catch(r){if(!(r instanceof TypeError&&e))throw r;e()}return!0}};i.ShortcutRegistry.registry.register(t);const r=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.V,[i.utils.KeyCodes.CTRL]);i.ShortcutRegistry.registry.addKeyMapping(r,t.name);const o=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.V,[i.utils.KeyCodes.ALT]);i.ShortcutRegistry.registry.addKeyMapping(o,t.name);const s=i.ShortcutRegistry.registry.createSerializedKey(i.utils.KeyCodes.V,[i.utils.KeyCodes.META]);i.ShortcutRegistry.registry.addKeyMapping(s,t.name)}}return s})())); //# sourceMappingURL=index.js.map