You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vscode-api-cn.js/interfaces/WebviewPanelSerializer.html

233 lines
11 KiB

<!doctype html>
<html class="default no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>WebviewPanelSerializer | VS Code API</title>
<meta name="description" content="Documentation for VS Code API">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../assets/css/main.css">
<script async src="../assets/js/search.js" id="search-script"></script>
</head>
<body>
<header>
<div class="tsd-page-toolbar">
<div class="container">
<div class="table-wrap">
<div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
<div class="field">
<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
<input id="tsd-search-field" type="text" />
</div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li>
</ul>
<a href="../index.html" class="title">VS Code API</a>
</div>
<div class="table-cell" id="tsd-widgets">
<div id="tsd-filter">
<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
<div class="tsd-filter-group">
<div class="tsd-select" id="tsd-filter-visibility">
<span class="tsd-select-label">All</span>
<ul class="tsd-select-list">
<li data-value="public">Public</li>
<li data-value="protected">Public/Protected</li>
<li data-value="private" class="selected">All</li>
</ul>
</div>
<input type="checkbox" id="tsd-filter-inherited" checked />
<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
<input type="checkbox" id="tsd-filter-externals" checked />
<label class="tsd-widget" for="tsd-filter-externals">Externals</label>
</div>
</div>
<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
</div>
</div>
</div>
</div>
<div class="tsd-page-title">
<div class="container">
<ul class="tsd-breadcrumb">
<li>
<a href="../modules.html">VS Code API</a>
</li>
<li>
<a href="WebviewPanelSerializer.html">WebviewPanelSerializer</a>
</li>
</ul>
<h1>Interface WebviewPanelSerializer&lt;T&gt;</h1>
</div>
</div>
</header>
<div class="container container-main">
<div class="row">
<div class="col-8 col-content">
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Restore webview panels that have been persisted when vscode shuts down.</p>
</div>
<p>There are two types of webview persistence:</p>
<ul>
<li>Persistence within a session.</li>
<li>Persistence across sessions (across restarts of the editor).</li>
</ul>
<p>A <code>WebviewPanelSerializer</code> is only required for the second case: persisting a webview across sessions.</p>
<p>Persistence within a session allows a webview to save its state when it becomes hidden
and restore its content from this state when it becomes visible again. It is powered entirely
by the webview content itself. To save off a persisted state, call <code>acquireVsCodeApi().setState()</code> with
any json serializable object. To restore the state again, call <code>getState()</code></p>
<pre><code class="language-js"><span style="color: #008000">// Within the webview</span>
<span style="color: #0000FF">const</span><span style="color: #000000"> </span><span style="color: #0070C1">vscode</span><span style="color: #000000"> = </span><span style="color: #795E26">acquireVsCodeApi</span><span style="color: #000000">();</span>
<span style="color: #008000">// Get existing state</span>
<span style="color: #0000FF">const</span><span style="color: #000000"> </span><span style="color: #0070C1">oldState</span><span style="color: #000000"> = </span><span style="color: #001080">vscode</span><span style="color: #000000">.</span><span style="color: #795E26">getState</span><span style="color: #000000">() || { </span><span style="color: #001080">value:</span><span style="color: #000000"> </span><span style="color: #098658">0</span><span style="color: #000000"> };</span>
<span style="color: #008000">// Update state</span>
<span style="color: #795E26">setState</span><span style="color: #000000">({ </span><span style="color: #001080">value:</span><span style="color: #000000"> </span><span style="color: #001080">oldState</span><span style="color: #000000">.</span><span style="color: #001080">value</span><span style="color: #000000"> + </span><span style="color: #098658">1</span><span style="color: #000000"> })</span>
</code></pre>
<p>A <code>WebviewPanelSerializer</code> extends this persistence across restarts of the editor. When the editor is shutdown,
it will save off the state from <code>setState</code> of all webviews that have a serializer. When the
webview first becomes visible after the restart, this state is passed to <code>deserializeWebviewPanel</code>.
The extension can then restore the old <code>WebviewPanel</code> from this state.</p>
</div>
</section>
<section class="tsd-panel tsd-type-parameters">
<h3>Type parameters</h3>
<ul class="tsd-type-parameters">
<li>
<h4>T = <span class="tsd-signature-type">unknown</span></h4>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Type of the webview&#39;s state.</p>
</div>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-hierarchy">
<h3>Hierarchy</h3>
<ul class="tsd-hierarchy">
<li>
<span class="target">WebviewPanelSerializer</span>
</li>
</ul>
</section>
<section class="tsd-panel-group tsd-index-group">
<h2>Index</h2>
<section class="tsd-panel tsd-index-panel">
<div class="tsd-index-content">
<section class="tsd-index-section ">
<h3>Methods</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-interface"><a href="WebviewPanelSerializer.html#deserializeWebviewPanel" class="tsd-kind-icon">deserialize<wbr>Webview<wbr>Panel</a></li>
</ul>
</section>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Methods</h2>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface">
<a name="deserializeWebviewPanel" class="tsd-anchor"></a>
<h3>deserialize<wbr>Webview<wbr>Panel</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface">
<li class="tsd-signature tsd-kind-icon">deserialize<wbr>Webview<wbr>Panel<span class="tsd-signature-symbol">(</span>webviewPanel<span class="tsd-signature-symbol">: </span><a href="WebviewPanel.html" class="tsd-signature-type" data-tsd-kind="Interface">WebviewPanel</a>, state<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">T</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/youngjuning/vscode-api/blob/98bc825/vscode.d.ts#L7686">vscode.d.ts:7686</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Restore a webview panel from its serialized <code>state</code>.</p>
</div>
<p>Called when a serialized webview first becomes visible.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>webviewPanel: <a href="WebviewPanel.html" class="tsd-signature-type" data-tsd-kind="Interface">WebviewPanel</a></h5>
<div class="tsd-comment tsd-typography">
<p>Webview panel to restore. The serializer should take ownership of this panel. The
serializer must restore the webview&#39;s <code>.html</code> and hook up all webview events.</p>
</div>
</li>
<li>
<h5>state: <span class="tsd-signature-type">T</span></h5>
<div class="tsd-comment tsd-typography">
<p>Persisted state from the webview content.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
<p>Thenable indicating that the webview has been fully restored.</p>
</li>
</ul>
</section>
</section>
</div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<nav class="tsd-navigation primary">
<ul>
<li class=" ">
<a href="../modules.html">Exports</a>
</li>
</ul>
</nav>
<nav class="tsd-navigation secondary menu-sticky">
<ul class="before-current">
</ul>
<ul class="current">
<li class="current tsd-kind-interface tsd-has-type-parameter">
<a href="WebviewPanelSerializer.html" class="tsd-kind-icon">Webview<wbr>Panel<wbr>Serializer</a>
<ul>
<li class=" tsd-kind-method tsd-parent-kind-interface">
<a href="WebviewPanelSerializer.html#deserializeWebviewPanel" class="tsd-kind-icon">deserialize<wbr>Webview<wbr>Panel</a>
</li>
</ul>
</li>
</ul>
<ul class="after-current">
</ul>
</nav>
</div>
</div>
</div>
<footer class="with-border-bottom">
<div class="container">
<h2>Legend</h2>
<div class="tsd-legend-group">
<ul class="tsd-legend">
<li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
<li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li>
</ul>
</div>
</div>
</footer>
<div class="container tsd-generator">
<p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
</div>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
</body>
</html>