- From: mbrodesser <notifications@github.com>
- Date: Thu, 07 Oct 2021 05:36:17 -0700
- To: w3c/clipboard-apis <clipboard-apis@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/clipboard-apis/pull/158/review/773711332@github.com>
@mbrodesser requested changes on this pull request. Thanks for working on this. > @@ -621,8 +622,84 @@ urlPrefix: https://w3c.github.io/FileAPI/#dfn-; type: dfn; }; </pre> - <div id="clipboard-idl" dfn-for="Clipboard"> + <div class="algorithm" data-algorithm="clipboard-item"> + <h4 id="h-clipboard-item"><dfn>ClipboardItem</dfn></h4> + The [=ClipboardItem=] object represents the content of the MIME types that are in the [=mandatory data types=] list, and are currently on the [=system clipboard=]. This suggests one `ClipboardItem` would suffice to include all data from the system clipboard. For some OSs, that's not true. E.g., macOS may include multiple items where each has multiple representations. See https://github.com/w3c/clipboard-apis/issues/93#issuecomment-853727779. > @@ -621,8 +622,84 @@ urlPrefix: https://w3c.github.io/FileAPI/#dfn-; type: dfn; }; </pre> - <div id="clipboard-idl" dfn-for="Clipboard"> + <div class="algorithm" data-algorithm="clipboard-item"> + <h4 id="h-clipboard-item"><dfn>ClipboardItem</dfn></h4> + The [=ClipboardItem=] object represents the content of the MIME types that are in the [=mandatory data types=] list, and are currently on the [=system clipboard=]. + It has a mapping of the MIME types in {{DOMString}} format and a [=Blob=] corresponding to the MIME types that contains the actual payload. A web author needs to + create a [=ClipboardItem=] object in order to write content to the clipboard using the {{Clipboard/write()}} method. {{Clipboard/read()}} returns a [=ClipboardItem=] object No, `read()` returns a promise to multiple `ClipboardItem`s. > @@ -621,8 +622,84 @@ urlPrefix: https://w3c.github.io/FileAPI/#dfn-; type: dfn; }; </pre> - <div id="clipboard-idl" dfn-for="Clipboard"> + <div class="algorithm" data-algorithm="clipboard-item"> + <h4 id="h-clipboard-item"><dfn>ClipboardItem</dfn></h4> + The [=ClipboardItem=] object represents the content of the MIME types that are in the [=mandatory data types=] list, and are currently on the [=system clipboard=]. + It has a mapping of the MIME types in {{DOMString}} format and a [=Blob=] corresponding to the MIME types that contains the actual payload. A web author needs to + create a [=ClipboardItem=] object in order to write content to the clipboard using the {{Clipboard/write()}} method. {{Clipboard/read()}} returns a [=ClipboardItem=] object + that can be used to read a specific |type| using {{ClipboardItem/getType()}}. + </div> + <dl class=note> + <dt><code><var>clipboardItem</var> = new <a constructor lt="ClipboardItem()">ClipboardItem</a>([<var>items</var>, <var>options</var>])</code> It would be really nice to incorporate the changes proposed in https://github.com/w3c/clipboard-apis/pull/127 too. Here, `items` would be renamed to `entries`. Can be done in a separate PR, though. > - <div id="clipboard-idl" dfn-for="Clipboard"> + <div class="algorithm" data-algorithm="clipboard-item"> + <h4 id="h-clipboard-item"><dfn>ClipboardItem</dfn></h4> + The [=ClipboardItem=] object represents the content of the MIME types that are in the [=mandatory data types=] list, and are currently on the [=system clipboard=]. + It has a mapping of the MIME types in {{DOMString}} format and a [=Blob=] corresponding to the MIME types that contains the actual payload. A web author needs to + create a [=ClipboardItem=] object in order to write content to the clipboard using the {{Clipboard/write()}} method. {{Clipboard/read()}} returns a [=ClipboardItem=] object + that can be used to read a specific |type| using {{ClipboardItem/getType()}}. + </div> + <dl class=note> + <dt><code><var>clipboardItem</var> = new <a constructor lt="ClipboardItem()">ClipboardItem</a>([<var>items</var>, <var>options</var>])</code> + <dd> + Creates a new {{ClipboardItem}} object. <var>items</var> are used to fill its MIME types and [=Promise=]s to [=Blob=]s corresponding to the MIME types, <var>options</var> can be used to fill its {{ClipboardItemOptions}}, + as per the example below. + + <div class=example id=example-clipboard-item-class> + <pre><code class=lang-javascript> The line breaks are not respected, making the example harder to read. `<pre class="example javascript">` could work. > + {options: "unspecified"}); + </code></pre> + </div> + + <dt><code><var>clipboardItem</var> . <a method for=ClipboardItem lt=getType()>getType</a>(<var>type</var>)</code> + <dd><p>Returns a [=Promise=] to the [=Blob=] corresponding to the <var>type</var>.</p> + + <dt><code><var>types</var> of <var>clipboardItem</var></code> + <dd><p>Returns the list of <var>types</var> contained in the <var>clipboardItem</var> object. + + </dl> + <p> + The {{ClipboardItem/constructor()}} step for <code>new ClipboardItem(<var>items</var>, <var>options</var>)</code> is to set [=this=]'s items to <var>items</var> and options to <var>options</var> + </p> + + <dfn>ClipboardItemDataType</dfn> The change proposed in https://github.com/w3c/clipboard-apis/pull/127 would add clarity. Can be done in a separate PR. > + <dd><p>Returns a [=Promise=] to the [=Blob=] corresponding to the <var>type</var>.</p> + + <dt><code><var>types</var> of <var>clipboardItem</var></code> + <dd><p>Returns the list of <var>types</var> contained in the <var>clipboardItem</var> object. + + </dl> + <p> + The {{ClipboardItem/constructor()}} step for <code>new ClipboardItem(<var>items</var>, <var>options</var>)</code> is to set [=this=]'s items to <var>items</var> and options to <var>options</var> + </p> + + <dfn>ClipboardItemDataType</dfn> + <p> + A {{DOMString}} or [=Blob=] type. This contains the payload corresponding to the MIME type while creating a {{ClipboardItem}} object. + </p> + + <dfn>ClipboardItemData</dfn> Same here. The change proposed in https://github.com/w3c/clipboard-apis/pull/127 would add clarity. > + <p> + A [=Promise=] to the [=ClipboardItemDataType=]. + </p> + + {{ClipboardItem}} + <p> A {{ClipboardItem}} object contains the {{ClipboardItem/types}} listed in the [=mandatory data types=] list that are present on the [=system clipboard=]. + <p> The {{ClipboardItem/constructor()}} step for <code>new ClipboardItem(<var>items</var>, <var>options</var>)</code> + is to set [=this=]'s items to <var>items</var> and options to <var>options</var> + </p> + + Issue: Add definition to clarify what {{ClipboardItem/createDelayed()}} method does. From the discussions it looks like a Windows/Mac only feature where the + platform supports writing of the data to the system clipboard in a delayed fashion so the system clipboard can request data on-demand. + See https://docs.microsoft.com/en-us/windows/win32/dataxchg/clipboard-operations#delayed-rendering + + <dfn>presentationStyle</dfn> + <p>It is an <a href=https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#enumerated-attribute>enumerated attribute</a> whose keywords are the <code>string</code>, <code>unspecified</code>, <code>inline</code> and <code>attachment</code>.</p> I don't understand the purpose of `presentationStyle`. Perhaps it's just me, or an example could help. > @@ -701,11 +784,20 @@ urlPrefix: https://w3c.github.io/FileAPI/#dfn-; type: dfn; 1. If |r| is not "granted", then reject |p| with a "NotAllowedError" DOMException - 1. Let |cleanItemList| be an empty sequence<{{Blob}}>. + 1. Let |itemList| and |cleanItemList| be an empty sequence<{{Blob}}>. + + 1. For each |item| in |data|: `data` is of type `ClipboardItems` (plural). So `item` is of type `ClipboardItem`. It seems the data-algorithm defined here would need to iterate over the types. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/w3c/clipboard-apis/pull/158#pullrequestreview-773711332
Received on Thursday, 7 October 2021 12:36:31 UTC