@xterm/addon-clipboard 0.3.0-beta.278 → 0.3.0-beta.279
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/lib/addon-clipboard.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ClipboardAddon=t():e.ClipboardAddon=t()}(self,()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.Base64=t.BrowserClipboardProvider=t.ClipboardAddon=void 0,t.ClipboardAddon=class{constructor(e=new o,t=new r){this._base64=e,this._provider=t}activate(e){this._terminal=e,this._disposable=e.parser.registerOscHandler(52,e=>this._setOrReportClipboard(e))}dispose(){return this._disposable?.dispose()}_readText(e,t){const r=this._base64.encodeText(t);this._terminal?.input(`]52;${e};${r}`,!1)}_setOrReportClipboard(e){const t=e.split(";");if(t.length<2)return!0;const r=t[0],o=t[1];if("?"===o){const e=this._provider.readText(r);return e instanceof Promise?e.then(e=>(this._readText(r,e),!0)):(this._readText(r,e),!0)}let
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ClipboardAddon=t():e.ClipboardAddon=t()}(self,()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.Base64=t.BrowserClipboardProvider=t.ClipboardAddon=void 0,t.ClipboardAddon=class{constructor(e=new o,t=new r){this._base64=e,this._provider=t}activate(e){this._terminal=e,this._disposable=e.parser.registerOscHandler(52,e=>this._setOrReportClipboard(e))}dispose(){return this._disposable?.dispose()}_readText(e,t){const r=this._base64.encodeText(t);this._terminal?.input(`]52;${e};${r}`,!1)}_setOrReportClipboard(e){const t=e.split(";");if(t.length<2)return!0;const r=t[0],o=t[1];if("?"===o){const e=this._provider.readText(r);return e instanceof Promise?e.then(e=>(this._readText(r,e),!0)):(this._readText(r,e),!0)}let i="";try{i=this._base64.decodeText(o)}catch{}const s=this._provider.writeText(r,i);return!(s instanceof Promise)||s.then(()=>!0)}};class r{readText(e){return navigator.clipboard.readText()}writeText(e,t){return navigator.clipboard.writeText(t)}}t.BrowserClipboardProvider=r;class o{encodeText(e){const t=(new TextEncoder).encode(e);if(void 0!==t.toBase64)return t.toBase64();let r="";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return btoa(r)}decodeText(e){if(void 0!==Uint8Array.fromBase64){try{return(new TextDecoder).decode(Uint8Array.fromBase64(e))}catch{}return""}try{const t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;++e)r[e]=t.charCodeAt(e);return(new TextDecoder).decode(r)}catch{}return""}}t.Base64=o})(),e})());
|
|
2
2
|
//# sourceMappingURL=addon-clipboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addon-clipboard.js","mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,IACA,mBAAAG,QAAAA,OAAAC,IACAD,OAAA,GAAAH,GACA,iBAAAC,QACAA,QAAA,eAAAD,IAEAD,EAAA,eAAAC,GACC,CATD,CASCK,KAAA,kLCDD,MAIE,WAAAC,CACUC,EAAmB,IAAIC,EACvBC,EAAgC,IAAIC,gBADpCH,iBACAE,CACP,CAEI,QAAAE,CAASC,GACdC,KAAKC,UAAYF,EACjBC,KAAKE,YAAcH,EAASI,OAAOC,mBAAmB,GAAIC,GAAQL,KAAKM,sBAAsBD,GAC/F,CAEO,OAAAE,GACL,OAAOP,KAAKE,aAAaK,SAC3B,CAEQ,SAAAC,CAAUC,EAAaJ,GAC7B,MAAMK,EAAMV,KAAKN,QAAQiB,WAAWN,GACpCL,KAAKC,WAAWW,MAAM,QAAWH,KAAOC,MAAW,EACrD,CAEQ,qBAAAJ,CAAsBD,GAC5B,MAAMQ,EAAOR,EAAKS,MAAM,KACxB,GAAID,EAAKE,OAAS,EAChB,OAAO,EAGT,MAAMC,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GAChB,GAAW,MAAPI,EAAY,CACd,MAAMC,EAAOlB,KAAKJ,UAAUuB,SAASH,GAGrC,OAAIE,aAAgBE,QACXF,EAAKG,KAAMhB,IAChBL,KAAKQ,UAAUQ,EAAIX,IACZ,KAIXL,KAAKQ,UAAUQ,EAAIE,IACZ,EACT,CAGA,IAAIA,EAAO,GACX,IACEA,EAAOlB,KAAKN,QAAQ4B,WAAWL,EACjC,CAAE,MAAO,CAGT,MAAMM,EAASvB,KAAKJ,UAAU4B,UAAUR,EAAIE,GAC5C,QAAIK,aAAkBH,UACbG,EAAOF,KAAK,KAAM,EAI7B,GAGF,MAAAxB,EACS,QAAAsB,CAASM,GACd,OAAOC,UAAUC,UAAUR,UAC7B,CAEO,SAAAK,CAAUC,EAAmBP,GAClC,OAAOQ,UAAUC,UAAUH,UAAUN,EACvC,+
|
|
1
|
+
{"version":3,"file":"addon-clipboard.js","mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,IACA,mBAAAG,QAAAA,OAAAC,IACAD,OAAA,GAAAH,GACA,iBAAAC,QACAA,QAAA,eAAAD,IAEAD,EAAA,eAAAC,GACC,CATD,CASCK,KAAA,kLCDD,MAIE,WAAAC,CACUC,EAAmB,IAAIC,EACvBC,EAAgC,IAAIC,gBADpCH,iBACAE,CACP,CAEI,QAAAE,CAASC,GACdC,KAAKC,UAAYF,EACjBC,KAAKE,YAAcH,EAASI,OAAOC,mBAAmB,GAAIC,GAAQL,KAAKM,sBAAsBD,GAC/F,CAEO,OAAAE,GACL,OAAOP,KAAKE,aAAaK,SAC3B,CAEQ,SAAAC,CAAUC,EAAaJ,GAC7B,MAAMK,EAAMV,KAAKN,QAAQiB,WAAWN,GACpCL,KAAKC,WAAWW,MAAM,QAAWH,KAAOC,MAAW,EACrD,CAEQ,qBAAAJ,CAAsBD,GAC5B,MAAMQ,EAAOR,EAAKS,MAAM,KACxB,GAAID,EAAKE,OAAS,EAChB,OAAO,EAGT,MAAMC,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GAChB,GAAW,MAAPI,EAAY,CACd,MAAMC,EAAOlB,KAAKJ,UAAUuB,SAASH,GAGrC,OAAIE,aAAgBE,QACXF,EAAKG,KAAMhB,IAChBL,KAAKQ,UAAUQ,EAAIX,IACZ,KAIXL,KAAKQ,UAAUQ,EAAIE,IACZ,EACT,CAGA,IAAIA,EAAO,GACX,IACEA,EAAOlB,KAAKN,QAAQ4B,WAAWL,EACjC,CAAE,MAAO,CAGT,MAAMM,EAASvB,KAAKJ,UAAU4B,UAAUR,EAAIE,GAC5C,QAAIK,aAAkBH,UACbG,EAAOF,KAAK,KAAM,EAI7B,GAGF,MAAAxB,EACS,QAAAsB,CAASM,GACd,OAAOC,UAAUC,UAAUR,UAC7B,CAEO,SAAAK,CAAUC,EAAmBP,GAClC,OAAOQ,UAAUC,UAAUH,UAAUN,EACvC,+BAcF,MAAAvB,EACS,UAAAgB,CAAWN,GAChB,MAAMuB,GAAQ,IAAIC,aAAcC,OAAOzB,GACvC,QAAuB0B,IAAnBH,EAAMI,SACR,OAAOJ,EAAMI,WAEf,IAAIC,EAAM,GACV,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAMb,OAAQmB,IAChCD,GAAOE,OAAOC,aAAaR,EAAMM,IAEnC,OAAOG,KAAKJ,EACd,CACO,UAAAX,CAAWjB,GAChB,QAAsD0B,IAAjDO,WAAkCC,WAA0B,CAC/D,IACE,OAAO,IAAIC,aAAcC,OAAQH,WAAkCC,WAAWlC,GAChF,CAAE,MAAO,CACT,MAAO,EACT,CACA,IACE,MAAM4B,EAAMS,KAAKrC,GACXuB,EAAQ,IAAIU,WAAWL,EAAIlB,QACjC,IAAK,IAAImB,EAAI,EAAGA,EAAID,EAAIlB,SAAUmB,EAChCN,EAAMM,GAAKD,EAAIU,WAAWT,GAE5B,OAAO,IAAIM,aAAcC,OAAOb,EAClC,CAAE,MAAO,CACT,MAAO,EACT","sources":["webpack://ClipboardAddon/webpack/universalModuleDefinition","webpack://ClipboardAddon/./src/ClipboardAddon.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardAddon\"] = factory();\n\telse\n\t\troot[\"ClipboardAddon\"] = factory();\n})(self, () => {\nreturn ","/**\n * Copyright (c) 2023 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport type { IDisposable, ITerminalAddon, Terminal } from '@xterm/xterm';\nimport { type IClipboardProvider, type IBase64 } from '@xterm/addon-clipboard';\n\nexport class ClipboardAddon implements ITerminalAddon {\n private _terminal?: Terminal;\n private _disposable?: IDisposable;\n\n constructor(\n private _base64: IBase64 = new Base64(),\n private _provider: IClipboardProvider = new BrowserClipboardProvider()\n ) {}\n\n public activate(terminal: Terminal): void {\n this._terminal = terminal;\n this._disposable = terminal.parser.registerOscHandler(52, data => this._setOrReportClipboard(data));\n }\n\n public dispose(): void {\n return this._disposable?.dispose();\n }\n\n private _readText(sel: string, data: string): void {\n const b64 = this._base64.encodeText(data);\n this._terminal?.input(`\\x1b]52;${sel};${b64}\\x07`, false);\n }\n\n private _setOrReportClipboard(data: string): boolean | Promise<boolean> {\n const args = data.split(';');\n if (args.length < 2) {\n return true;\n }\n\n const pc = args[0];\n const pd = args[1];\n if (pd === '?') {\n const text = this._provider.readText(pc);\n\n // Report clipboard\n if (text instanceof Promise) {\n return text.then((data) => {\n this._readText(pc, data);\n return true;\n });\n }\n\n this._readText(pc, text);\n return true;\n }\n\n // Clear clipboard if text is not a base64 encoded string.\n let text = '';\n try {\n text = this._base64.decodeText(pd);\n } catch {}\n\n\n const result = this._provider.writeText(pc, text);\n if (result instanceof Promise) {\n return result.then(() => true);\n }\n\n return true;\n }\n}\n\nexport class BrowserClipboardProvider implements IClipboardProvider {\n public readText(selection: string): Promise<string> {\n return navigator.clipboard.readText();\n }\n\n public writeText(selection: string, text: string): Promise<void> {\n return navigator.clipboard.writeText(text);\n }\n}\n\n/**\n * TODO: Once the base64 handling on Uint8Arrays is more common,\n * remove the btoa/atob fallbacks below.\n */\ninterface IUint8ArrayB64 extends Uint8Array {\n toBase64(): string;\n}\ninterface IUint8ArrayB64Ctor extends Uint8ArrayConstructor {\n fromBase64(s: string): IUint8ArrayB64;\n}\n\nexport class Base64 implements IBase64 {\n public encodeText(data: string): string {\n const bytes = new TextEncoder().encode(data) as IUint8ArrayB64;\n if (bytes.toBase64 !== undefined) {\n return bytes.toBase64();\n }\n let bin = '';\n for (let i = 0; i < bytes.length; i++) {\n bin += String.fromCharCode(bytes[i]);\n }\n return btoa(bin);\n }\n public decodeText(data: string): string {\n if ((Uint8Array as IUint8ArrayB64Ctor).fromBase64 !== undefined) {\n try {\n return new TextDecoder().decode((Uint8Array as IUint8ArrayB64Ctor).fromBase64(data));\n } catch {}\n return '';\n }\n try {\n const bin = atob(data);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; ++i) {\n bytes[i] = bin.charCodeAt(i);\n }\n return new TextDecoder().decode(bytes);\n } catch {}\n return '';\n }\n}\n"],"names":["root","factory","exports","module","define","amd","self","constructor","_base64","Base64","_provider","BrowserClipboardProvider","activate","terminal","this","_terminal","_disposable","parser","registerOscHandler","data","_setOrReportClipboard","dispose","_readText","sel","b64","encodeText","input","args","split","length","pc","pd","text","readText","Promise","then","decodeText","result","writeText","selection","navigator","clipboard","bytes","TextEncoder","encode","undefined","toBase64","bin","i","String","fromCharCode","btoa","Uint8Array","fromBase64","TextDecoder","decode","atob","charCodeAt"],"sourceRoot":""}
|
package/lib/addon-clipboard.mjs
CHANGED
|
@@ -14,5 +14,5 @@
|
|
|
14
14
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
15
15
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
16
16
|
*--------------------------------------------------------------------------------------------*/
|
|
17
|
-
var
|
|
17
|
+
var l=class{constructor(t=new o,e=new s){this._base64=t;this._provider=e}activate(t){this._terminal=t,this._disposable=t.parser.registerOscHandler(52,e=>this._setOrReportClipboard(e))}dispose(){return this._disposable?.dispose()}_readText(t,e){let r=this._base64.encodeText(e);this._terminal?.input(`\x1B]52;${t};${r}\x07`,!1)}_setOrReportClipboard(t){let e=t.split(";");if(e.length<2)return!0;let r=e[0],i=e[1];if(i==="?"){let n=this._provider.readText(r);return n instanceof Promise?n.then(p=>(this._readText(r,p),!0)):(this._readText(r,n),!0)}let d="";try{d=this._base64.decodeText(i)}catch{}let c=this._provider.writeText(r,d);return c instanceof Promise?c.then(()=>!0):!0}},s=class{readText(t){return navigator.clipboard.readText()}writeText(t,e){return navigator.clipboard.writeText(e)}},o=class{encodeText(t){let e=new TextEncoder().encode(t);if(e.toBase64!==void 0)return e.toBase64();let r="";for(let i=0;i<e.length;i++)r+=String.fromCharCode(e[i]);return btoa(r)}decodeText(t){if(Uint8Array.fromBase64!==void 0){try{return new TextDecoder().decode(Uint8Array.fromBase64(t))}catch{}return""}try{let e=atob(t),r=new Uint8Array(e.length);for(let i=0;i<e.length;++i)r[i]=e.charCodeAt(i);return new TextDecoder().decode(r)}catch{}return""}};export{o as Base64,s as BrowserClipboardProvider,l as ClipboardAddon};
|
|
18
18
|
//# sourceMappingURL=addon-clipboard.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/ClipboardAddon.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright (c) 2023 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport type { IDisposable, ITerminalAddon, Terminal } from '@xterm/xterm';\nimport { type IClipboardProvider, type IBase64 } from '@xterm/addon-clipboard';\n\nexport class ClipboardAddon implements ITerminalAddon {\n private _terminal?: Terminal;\n private _disposable?: IDisposable;\n\n constructor(\n private _base64: IBase64 = new Base64(),\n private _provider: IClipboardProvider = new BrowserClipboardProvider()\n ) {}\n\n public activate(terminal: Terminal): void {\n this._terminal = terminal;\n this._disposable = terminal.parser.registerOscHandler(52, data => this._setOrReportClipboard(data));\n }\n\n public dispose(): void {\n return this._disposable?.dispose();\n }\n\n private _readText(sel: string, data: string): void {\n const b64 = this._base64.encodeText(data);\n this._terminal?.input(`\\x1b]52;${sel};${b64}\\x07`, false);\n }\n\n private _setOrReportClipboard(data: string): boolean | Promise<boolean> {\n const args = data.split(';');\n if (args.length < 2) {\n return true;\n }\n\n const pc = args[0];\n const pd = args[1];\n if (pd === '?') {\n const text = this._provider.readText(pc);\n\n // Report clipboard\n if (text instanceof Promise) {\n return text.then((data) => {\n this._readText(pc, data);\n return true;\n });\n }\n\n this._readText(pc, text);\n return true;\n }\n\n // Clear clipboard if text is not a base64 encoded string.\n let text = '';\n try {\n text = this._base64.decodeText(pd);\n } catch {}\n\n\n const result = this._provider.writeText(pc, text);\n if (result instanceof Promise) {\n return result.then(() => true);\n }\n\n return true;\n }\n}\n\nexport class BrowserClipboardProvider implements IClipboardProvider {\n public readText(selection: string): Promise<string> {\n return navigator.clipboard.readText();\n }\n\n public writeText(selection: string, text: string): Promise<void> {\n return navigator.clipboard.writeText(text);\n }\n}\n\nexport class Base64 implements IBase64 {\n public encodeText(data: string): string {\n return btoa(
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;AAQO,IAAMA,EAAN,KAA+C,CAIpD,YACUC,EAAmB,IAAIC,EACvBC,EAAgC,IAAIC,EAC5C,CAFQ,aAAAH,EACA,eAAAE,CACP,CAEI,SAASE,EAA0B,CACxC,KAAK,UAAYA,EACjB,KAAK,YAAcA,EAAS,OAAO,mBAAmB,GAAIC,GAAQ,KAAK,sBAAsBA,CAAI,CAAC,CACpG,CAEO,SAAgB,CACrB,OAAO,KAAK,aAAa,QAAQ,CACnC,CAEQ,UAAUC,EAAaD,EAAoB,CACjD,IAAME,EAAM,KAAK,QAAQ,WAAWF,CAAI,EACxC,KAAK,WAAW,MAAM,WAAWC,CAAG,IAAIC,CAAG,OAAQ,EAAK,CAC1D,CAEQ,sBAAsBF,EAA0C,CACtE,IAAMG,EAAOH,EAAK,MAAM,GAAG,EAC3B,GAAIG,EAAK,OAAS,EAChB,MAAO,GAGT,IAAMC,EAAKD,EAAK,CAAC,EACXE,EAAKF,EAAK,CAAC,EACjB,GAAIE,IAAO,IAAK,CACd,IAAMC,EAAO,KAAK,UAAU,SAASF,CAAE,EAGvC,OAAIE,aAAgB,QACXA,EAAK,KAAMN,IAChB,KAAK,UAAUI,EAAIJ,CAAI,EAChB,GACR,GAGH,KAAK,UAAUI,EAAIE,CAAI,EAChB,GACT,CAGA,IAAIA,EAAO,GACX,GAAI,CACFA,EAAO,KAAK,QAAQ,WAAWD,CAAE,CACnC,MAAQ,CAAC,CAGT,IAAME,EAAS,KAAK,UAAU,UAAUH,EAAIE,CAAI,EAChD,OAAIC,aAAkB,QACbA,EAAO,KAAK,IAAM,EAAI,EAGxB,EACT,CACF,EAEaT,EAAN,KAA6D,CAC3D,SAASU,EAAoC,CAClD,OAAO,UAAU,UAAU,SAAS,CACtC,CAEO,UAAUA,EAAmBF,EAA6B,CAC/D,OAAO,UAAU,UAAU,UAAUA,CAAI,CAC3C,CACF,
|
|
6
|
-
"names": ["ClipboardAddon", "_base64", "Base64", "_provider", "BrowserClipboardProvider", "terminal", "data", "sel", "b64", "args", "pc", "pd", "text", "result", "selection"]
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) 2023 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport type { IDisposable, ITerminalAddon, Terminal } from '@xterm/xterm';\nimport { type IClipboardProvider, type IBase64 } from '@xterm/addon-clipboard';\n\nexport class ClipboardAddon implements ITerminalAddon {\n private _terminal?: Terminal;\n private _disposable?: IDisposable;\n\n constructor(\n private _base64: IBase64 = new Base64(),\n private _provider: IClipboardProvider = new BrowserClipboardProvider()\n ) {}\n\n public activate(terminal: Terminal): void {\n this._terminal = terminal;\n this._disposable = terminal.parser.registerOscHandler(52, data => this._setOrReportClipboard(data));\n }\n\n public dispose(): void {\n return this._disposable?.dispose();\n }\n\n private _readText(sel: string, data: string): void {\n const b64 = this._base64.encodeText(data);\n this._terminal?.input(`\\x1b]52;${sel};${b64}\\x07`, false);\n }\n\n private _setOrReportClipboard(data: string): boolean | Promise<boolean> {\n const args = data.split(';');\n if (args.length < 2) {\n return true;\n }\n\n const pc = args[0];\n const pd = args[1];\n if (pd === '?') {\n const text = this._provider.readText(pc);\n\n // Report clipboard\n if (text instanceof Promise) {\n return text.then((data) => {\n this._readText(pc, data);\n return true;\n });\n }\n\n this._readText(pc, text);\n return true;\n }\n\n // Clear clipboard if text is not a base64 encoded string.\n let text = '';\n try {\n text = this._base64.decodeText(pd);\n } catch {}\n\n\n const result = this._provider.writeText(pc, text);\n if (result instanceof Promise) {\n return result.then(() => true);\n }\n\n return true;\n }\n}\n\nexport class BrowserClipboardProvider implements IClipboardProvider {\n public readText(selection: string): Promise<string> {\n return navigator.clipboard.readText();\n }\n\n public writeText(selection: string, text: string): Promise<void> {\n return navigator.clipboard.writeText(text);\n }\n}\n\n/**\n * TODO: Once the base64 handling on Uint8Arrays is more common,\n * remove the btoa/atob fallbacks below.\n */\ninterface IUint8ArrayB64 extends Uint8Array {\n toBase64(): string;\n}\ninterface IUint8ArrayB64Ctor extends Uint8ArrayConstructor {\n fromBase64(s: string): IUint8ArrayB64;\n}\n\nexport class Base64 implements IBase64 {\n public encodeText(data: string): string {\n const bytes = new TextEncoder().encode(data) as IUint8ArrayB64;\n if (bytes.toBase64 !== undefined) {\n return bytes.toBase64();\n }\n let bin = '';\n for (let i = 0; i < bytes.length; i++) {\n bin += String.fromCharCode(bytes[i]);\n }\n return btoa(bin);\n }\n public decodeText(data: string): string {\n if ((Uint8Array as IUint8ArrayB64Ctor).fromBase64 !== undefined) {\n try {\n return new TextDecoder().decode((Uint8Array as IUint8ArrayB64Ctor).fromBase64(data));\n } catch {}\n return '';\n }\n try {\n const bin = atob(data);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; ++i) {\n bytes[i] = bin.charCodeAt(i);\n }\n return new TextDecoder().decode(bytes);\n } catch {}\n return '';\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;AAQO,IAAMA,EAAN,KAA+C,CAIpD,YACUC,EAAmB,IAAIC,EACvBC,EAAgC,IAAIC,EAC5C,CAFQ,aAAAH,EACA,eAAAE,CACP,CAEI,SAASE,EAA0B,CACxC,KAAK,UAAYA,EACjB,KAAK,YAAcA,EAAS,OAAO,mBAAmB,GAAIC,GAAQ,KAAK,sBAAsBA,CAAI,CAAC,CACpG,CAEO,SAAgB,CACrB,OAAO,KAAK,aAAa,QAAQ,CACnC,CAEQ,UAAUC,EAAaD,EAAoB,CACjD,IAAME,EAAM,KAAK,QAAQ,WAAWF,CAAI,EACxC,KAAK,WAAW,MAAM,WAAWC,CAAG,IAAIC,CAAG,OAAQ,EAAK,CAC1D,CAEQ,sBAAsBF,EAA0C,CACtE,IAAMG,EAAOH,EAAK,MAAM,GAAG,EAC3B,GAAIG,EAAK,OAAS,EAChB,MAAO,GAGT,IAAMC,EAAKD,EAAK,CAAC,EACXE,EAAKF,EAAK,CAAC,EACjB,GAAIE,IAAO,IAAK,CACd,IAAMC,EAAO,KAAK,UAAU,SAASF,CAAE,EAGvC,OAAIE,aAAgB,QACXA,EAAK,KAAMN,IAChB,KAAK,UAAUI,EAAIJ,CAAI,EAChB,GACR,GAGH,KAAK,UAAUI,EAAIE,CAAI,EAChB,GACT,CAGA,IAAIA,EAAO,GACX,GAAI,CACFA,EAAO,KAAK,QAAQ,WAAWD,CAAE,CACnC,MAAQ,CAAC,CAGT,IAAME,EAAS,KAAK,UAAU,UAAUH,EAAIE,CAAI,EAChD,OAAIC,aAAkB,QACbA,EAAO,KAAK,IAAM,EAAI,EAGxB,EACT,CACF,EAEaT,EAAN,KAA6D,CAC3D,SAASU,EAAoC,CAClD,OAAO,UAAU,UAAU,SAAS,CACtC,CAEO,UAAUA,EAAmBF,EAA6B,CAC/D,OAAO,UAAU,UAAU,UAAUA,CAAI,CAC3C,CACF,EAaaV,EAAN,KAAgC,CAC9B,WAAWI,EAAsB,CACtC,IAAMS,EAAQ,IAAI,YAAY,EAAE,OAAOT,CAAI,EAC3C,GAAIS,EAAM,WAAa,OACrB,OAAOA,EAAM,SAAS,EAExB,IAAIC,EAAM,GACV,QAAS,EAAI,EAAG,EAAID,EAAM,OAAQ,IAChCC,GAAO,OAAO,aAAaD,EAAM,CAAC,CAAC,EAErC,OAAO,KAAKC,CAAG,CACjB,CACO,WAAWV,EAAsB,CACtC,GAAK,WAAkC,aAAe,OAAW,CAC/D,GAAI,CACF,OAAO,IAAI,YAAY,EAAE,OAAQ,WAAkC,WAAWA,CAAI,CAAC,CACrF,MAAQ,CAAC,CACT,MAAO,EACT,CACA,GAAI,CACF,IAAMU,EAAM,KAAKV,CAAI,EACfS,EAAQ,IAAI,WAAWC,EAAI,MAAM,EACvC,QAAS,EAAI,EAAG,EAAIA,EAAI,OAAQ,EAAE,EAChCD,EAAM,CAAC,EAAIC,EAAI,WAAW,CAAC,EAE7B,OAAO,IAAI,YAAY,EAAE,OAAOD,CAAK,CACvC,MAAQ,CAAC,CACT,MAAO,EACT,CACF",
|
|
6
|
+
"names": ["ClipboardAddon", "_base64", "Base64", "_provider", "BrowserClipboardProvider", "terminal", "data", "sel", "b64", "args", "pc", "pd", "text", "result", "selection", "bytes", "bin"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xterm/addon-clipboard",
|
|
3
|
-
"version": "0.3.0-beta.
|
|
3
|
+
"version": "0.3.0-beta.279",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "The xterm.js authors",
|
|
6
6
|
"url": "https://xtermjs.org/"
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"prepublishOnly": "npm run package",
|
|
23
23
|
"start": "node ../../demo/start"
|
|
24
24
|
},
|
|
25
|
-
"commit": "
|
|
25
|
+
"commit": "7c24c580072daea61f607c102d515f37cf2dbb17",
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@xterm/xterm": "^6.1.0-beta.
|
|
27
|
+
"@xterm/xterm": "^6.1.0-beta.279"
|
|
28
28
|
}
|
|
29
29
|
}
|
package/src/ClipboardAddon.ts
CHANGED
|
@@ -78,13 +78,43 @@ export class BrowserClipboardProvider implements IClipboardProvider {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
/**
|
|
82
|
+
* TODO: Once the base64 handling on Uint8Arrays is more common,
|
|
83
|
+
* remove the btoa/atob fallbacks below.
|
|
84
|
+
*/
|
|
85
|
+
interface IUint8ArrayB64 extends Uint8Array {
|
|
86
|
+
toBase64(): string;
|
|
87
|
+
}
|
|
88
|
+
interface IUint8ArrayB64Ctor extends Uint8ArrayConstructor {
|
|
89
|
+
fromBase64(s: string): IUint8ArrayB64;
|
|
90
|
+
}
|
|
91
|
+
|
|
81
92
|
export class Base64 implements IBase64 {
|
|
82
93
|
public encodeText(data: string): string {
|
|
83
|
-
|
|
94
|
+
const bytes = new TextEncoder().encode(data) as IUint8ArrayB64;
|
|
95
|
+
if (bytes.toBase64 !== undefined) {
|
|
96
|
+
return bytes.toBase64();
|
|
97
|
+
}
|
|
98
|
+
let bin = '';
|
|
99
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
100
|
+
bin += String.fromCharCode(bytes[i]);
|
|
101
|
+
}
|
|
102
|
+
return btoa(bin);
|
|
84
103
|
}
|
|
85
104
|
public decodeText(data: string): string {
|
|
105
|
+
if ((Uint8Array as IUint8ArrayB64Ctor).fromBase64 !== undefined) {
|
|
106
|
+
try {
|
|
107
|
+
return new TextDecoder().decode((Uint8Array as IUint8ArrayB64Ctor).fromBase64(data));
|
|
108
|
+
} catch {}
|
|
109
|
+
return '';
|
|
110
|
+
}
|
|
86
111
|
try {
|
|
87
|
-
|
|
112
|
+
const bin = atob(data);
|
|
113
|
+
const bytes = new Uint8Array(bin.length);
|
|
114
|
+
for (let i = 0; i < bin.length; ++i) {
|
|
115
|
+
bytes[i] = bin.charCodeAt(i);
|
|
116
|
+
}
|
|
117
|
+
return new TextDecoder().decode(bytes);
|
|
88
118
|
} catch {}
|
|
89
119
|
return '';
|
|
90
120
|
}
|