From 150cc9c5b8b96aefb40618f6934faf0445b1cbbd Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Mon, 18 Nov 2024 08:08:26 -0800 Subject: [PATCH 01/71] [Word] (1.9) Release (#949) --- playlists-prod/word.yaml | 36 +++++++++--------- playlists/word.yaml | 36 +++++++++--------- .../get-change-tracking-states.yaml | 2 +- ...-and-change-combo-box-content-control.yaml | 7 ++-- ...-change-dropdown-list-content-control.yaml | 7 ++-- snippet-extractor-metadata/word.xlsx | Bin 27520 -> 27526 bytes snippet-extractor-output/snippets.yaml | 30 +++++++-------- view-prod/word.json | 4 +- view/word.json | 4 +- 9 files changed, 64 insertions(+), 62 deletions(-) rename samples/word/{99-preview-apis => 10-content-controls}/insert-and-change-combo-box-content-control.yaml (98%) rename samples/word/{99-preview-apis => 10-content-controls}/insert-and-change-dropdown-list-content-control.yaml (98%) diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index d5164def8..2a5ca8870 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -111,6 +111,24 @@ group: Content Controls api_set: WordApi: '1.7' +- id: word-content-controls-insert-and-change-combo-box-content-control + name: Manage combo box content controls + fileName: insert-and-change-combo-box-content-control.yaml + description: 'Inserts, updates, and deletes combo box content controls.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml + group: Content Controls + api_set: + WordApi: '1.9' +- id: word-content-controls-insert-and-change-dropdown-list-content-control + name: Manage dropdown list content controls + fileName: insert-and-change-dropdown-list-content-control.yaml + description: 'Inserts, updates, and deletes dropdown list content controls.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml + group: Content Controls + api_set: + WordApi: '1.9' - id: word-content-controls-get-change-tracking-states name: Get change tracking states of content controls fileName: get-change-tracking-states.yaml @@ -535,15 +553,6 @@ group: Scenarios api_set: WordApi: '1.3' -- id: word-insert-and-change-combo-box-content-control - name: Manage combo box content controls - fileName: insert-and-change-combo-box-content-control.yaml - description: 'Inserts, updates, and deletes combo box content controls.' - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml - group: Preview APIs - api_set: - WordApi: '1.9' - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml @@ -553,15 +562,6 @@ group: Preview APIs api_set: WordApi: '1.9' -- id: word-insert-and-change-dropdown-list-content-control - name: Manage dropdown list content controls - fileName: insert-and-change-dropdown-list-content-control.yaml - description: 'Inserts, updates, and deletes dropdown list content controls.' - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml - group: Preview APIs - api_set: - WordApi: '1.9' - id: word-manage-comments name: Manage comments fileName: manage-comments.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index b5bcbf36e..77f149b77 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -111,6 +111,24 @@ group: Content Controls api_set: WordApi: '1.7' +- id: word-content-controls-insert-and-change-combo-box-content-control + name: Manage combo box content controls + fileName: insert-and-change-combo-box-content-control.yaml + description: 'Inserts, updates, and deletes combo box content controls.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml + group: Content Controls + api_set: + WordApi: '1.9' +- id: word-content-controls-insert-and-change-dropdown-list-content-control + name: Manage dropdown list content controls + fileName: insert-and-change-dropdown-list-content-control.yaml + description: 'Inserts, updates, and deletes dropdown list content controls.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml + group: Content Controls + api_set: + WordApi: '1.9' - id: word-content-controls-get-change-tracking-states name: Get change tracking states of content controls fileName: get-change-tracking-states.yaml @@ -535,15 +553,6 @@ group: Scenarios api_set: WordApi: '1.3' -- id: word-insert-and-change-combo-box-content-control - name: Manage combo box content controls - fileName: insert-and-change-combo-box-content-control.yaml - description: 'Inserts, updates, and deletes combo box content controls.' - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml - group: Preview APIs - api_set: - WordApi: '1.9' - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml @@ -553,15 +562,6 @@ group: Preview APIs api_set: WordApi: '1.9' -- id: word-insert-and-change-dropdown-list-content-control - name: Manage dropdown list content controls - fileName: insert-and-change-dropdown-list-content-control.yaml - description: 'Inserts, updates, and deletes dropdown list content controls.' - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml - group: Preview APIs - api_set: - WordApi: '1.9' - id: word-manage-comments name: Manage comments fileName: manage-comments.yaml diff --git a/samples/word/10-content-controls/get-change-tracking-states.yaml b/samples/word/10-content-controls/get-change-tracking-states.yaml index 9bfca816d..928ae2f78 100644 --- a/samples/word/10-content-controls/get-change-tracking-states.yaml +++ b/samples/word/10-content-controls/get-change-tracking-states.yaml @@ -1,4 +1,4 @@ -order: 9 +order: 11 id: word-content-controls-get-change-tracking-states name: Get change tracking states of content controls description: Gets change tracking states of content controls. diff --git a/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml similarity index 98% rename from samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml rename to samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml index 47d422f0b..91c6cb700 100644 --- a/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -1,4 +1,5 @@ -id: word-insert-and-change-combo-box-content-control +order: 9 +id: word-content-controls-insert-and-change-combo-box-content-control name: Manage combo box content controls description: 'Inserts, updates, and deletes combo box content controls.' host: WORD @@ -316,8 +317,8 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - @types/office-js-preview + https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml similarity index 98% rename from samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml rename to samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml index 9c4a76147..d4d9282d6 100644 --- a/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -1,4 +1,5 @@ -id: word-insert-and-change-dropdown-list-content-control +order: 10 +id: word-content-controls-insert-and-change-dropdown-list-content-control name: Manage dropdown list content controls description: 'Inserts, updates, and deletes dropdown list content controls.' host: WORD @@ -318,8 +319,8 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - @types/office-js-preview + https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index f90deca3f99556a171c72f0f0370ddf80c5195ac..0867a4eb57643bd032635be3c3b3e2a946e57466 100644 GIT binary patch delta 17315 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 delta 17333 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

P<*2D-2h4#h*+B%-m3d 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 35fa286ca..cb46ec1d9 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -17204,7 +17204,7 @@ 'Word.ComboBoxContentControl:class': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml // Places a combo box content control at the end of the selection. @@ -17219,7 +17219,7 @@ 'Word.ComboBoxContentControl#addListItem:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml // Adds the provided list item to the first combo box content control in the @@ -17260,7 +17260,7 @@ 'Word.ComboBoxContentControl#deleteAllListItems:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml // Deletes the list items from first combo box content control found in the @@ -17298,7 +17298,7 @@ 'Word.ComboBoxContentControl#listItems:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml // Deletes the provided list item from the first combo box content control @@ -17962,7 +17962,7 @@ 'Word.ContentControl#comboBoxContentControl:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml // Adds the provided list item to the first combo box content control in the @@ -18003,7 +18003,7 @@ 'Word.ContentControl#dropDownListContentControl:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Adds the provided list item to the first dropdown list content control in @@ -18540,7 +18540,7 @@ 'Word.ContentControlListItem:class': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Deletes the provided list item from the first dropdown list content @@ -18592,7 +18592,7 @@ 'Word.ContentControlListItem#delete:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml // Deletes the provided list item from the first combo box content control @@ -18644,7 +18644,7 @@ 'Word.ContentControlListItem#displayText:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Deletes the provided list item from the first dropdown list content @@ -18696,7 +18696,7 @@ 'Word.ContentControlListItemCollection:class': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml // Gets the list items from the first combo box content control found in the @@ -20470,7 +20470,7 @@ 'Word.DropDownListContentControl:class': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Places a dropdown list content control at the end of the selection. @@ -20485,7 +20485,7 @@ 'Word.DropDownListContentControl#addListItem:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Adds the provided list item to the first dropdown list content control in @@ -20526,7 +20526,7 @@ 'Word.DropDownListContentControl#deleteAllListItems:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Deletes the list items from first dropdown list content control found in @@ -20566,7 +20566,7 @@ 'Word.DropDownListContentControl#listItems:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Deletes the provided list item from the first dropdown list content @@ -22817,7 +22817,7 @@ 'Word.Range#getRange:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml // Places a dropdown list content control at the end of the selection. diff --git a/view-prod/word.json b/view-prod/word.json index c3af24568..7fb26adf6 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -10,6 +10,8 @@ "word-content-controls-content-control-onexited-event": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onexited-event.yaml", "word-content-controls-content-control-ondeleted-event": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-ondeleted-event.yaml", "word-content-controls-insert-and-change-checkbox-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml", + "word-content-controls-insert-and-change-combo-box-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml", + "word-content-controls-insert-and-change-dropdown-list-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml", "word-content-controls-get-change-tracking-states": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/get-change-tracking-states.yaml", "word-images-insert-and-get-pictures": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml", "word-lists-insert-list": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/insert-list.yaml", @@ -53,8 +55,6 @@ "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/compare-documents.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/multiple-property-set.yaml", - "word-insert-and-change-combo-box-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml", "word-insert-and-change-content-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml", - "word-insert-and-change-dropdown-list-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml", "word-manage-comments": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml" } \ No newline at end of file diff --git a/view/word.json b/view/word.json index fc36e63cc..e31edb7b7 100644 --- a/view/word.json +++ b/view/word.json @@ -10,6 +10,8 @@ "word-content-controls-content-control-onexited-event": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/content-control-onexited-event.yaml", "word-content-controls-content-control-ondeleted-event": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/content-control-ondeleted-event.yaml", "word-content-controls-insert-and-change-checkbox-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml", + "word-content-controls-insert-and-change-combo-box-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml", + "word-content-controls-insert-and-change-dropdown-list-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml", "word-content-controls-get-change-tracking-states": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/get-change-tracking-states.yaml", "word-images-insert-and-get-pictures": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/15-images/insert-and-get-pictures.yaml", "word-lists-insert-list": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/20-lists/insert-list.yaml", @@ -53,8 +55,6 @@ "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/compare-documents.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/multiple-property-set.yaml", - "word-insert-and-change-combo-box-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-combo-box-content-control.yaml", "word-insert-and-change-content-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-content-controls.yaml", - "word-insert-and-change-dropdown-list-content-control": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-dropdown-list-content-control.yaml", "word-manage-comments": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/manage-comments.yaml" } \ No newline at end of file From 466a1f98a7c1331168926d7184d33f3fd802c9a5 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Thu, 21 Nov 2024 08:57:09 -0800 Subject: [PATCH 02/71] [Outlook] Update minimum supported requirement sets (#952) --- playlists-prod/outlook.yaml | 4 ++-- playlists/outlook.yaml | 4 ++-- samples/outlook/40-attachments/attachments-compose.yaml | 2 +- .../get-shared-properties.yaml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index 3831993f0..06645f7c6 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -273,7 +273,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml group: Attachments api_set: - Mailbox: '1.1' + Mailbox: '1.8' - id: outlook-attachments-get-attachment-content name: Get attachment content fileName: get-attachment-content.yaml @@ -425,7 +425,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml group: Delegates And Shared Folders api_set: - Mailbox: '1.8' + Mailbox: '1.13' - id: outlook-mime-headers-get-internet-headers-message-read name: Get internet headers fileName: get-internet-headers-message-read.yaml diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index b40c8f50c..b344b28bb 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -273,7 +273,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/40-attachments/attachments-compose.yaml group: Attachments api_set: - Mailbox: '1.1' + Mailbox: '1.8' - id: outlook-attachments-get-attachment-content name: Get attachment content fileName: get-attachment-content.yaml @@ -425,7 +425,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml group: Delegates And Shared Folders api_set: - Mailbox: '1.8' + Mailbox: '1.13' - id: outlook-mime-headers-get-internet-headers-message-read name: Get internet headers fileName: get-internet-headers-message-read.yaml diff --git a/samples/outlook/40-attachments/attachments-compose.yaml b/samples/outlook/40-attachments/attachments-compose.yaml index bd327161d..b09a9bcb3 100644 --- a/samples/outlook/40-attachments/attachments-compose.yaml +++ b/samples/outlook/40-attachments/attachments-compose.yaml @@ -3,7 +3,7 @@ name: Manipulate attachments (Item Compose) description: 'Adds, gets, and removes attachments from a message or an appointment in Compose mode.' host: OUTLOOK api_set: - Mailbox: '1.1' + Mailbox: '1.8' script: content: | $("#add").on("click", add); diff --git a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml index af2859ac3..40b854420 100644 --- a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml +++ b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -3,7 +3,7 @@ name: Identify a shared folder or shared mailbox context description: Identifies whether the current mail item is in a shared folder or shared mailbox by getting its properties. host: OUTLOOK api_set: - Mailbox: '1.8' + Mailbox: '1.13' script: content: | $("#get").on("click", get); From fb7577e22975b5b02a4fd1097b0454ac33f559a8 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 13 Dec 2024 14:54:03 -0800 Subject: [PATCH 03/71] [Admin] Add auto-publish workflow (#954) --- .github/workflows/auto-publish.yml | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/auto-publish.yml diff --git a/.github/workflows/auto-publish.yml b/.github/workflows/auto-publish.yml new file mode 100644 index 000000000..875e0ad82 --- /dev/null +++ b/.github/workflows/auto-publish.yml @@ -0,0 +1,40 @@ +name: auto-publish +run-name: Automatically publish snippets +on: + schedule: + - cron: '00 23 * * FRI' + - cron: '15 10 * * TUE' + - cron: '15 10 * * THU' +jobs: + auto-publish: + runs-on: ubuntu-latest + permissions: + contents: write + defaults: + run: + shell: bash + working-directory: ./ + steps: + - name: Check out repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Check out main + run: | + echo "Checking out main branch" + git config user.name github-actions + git config user.email github-actions@github.com + git checkout main + - name: Check out prod + run: | + echo "Checking out prod branch" + git checkout prod + - name: Merge from main into prod + run: | + echo "Merging from main to prod" + git merge main + - name: Push changes + run: | + echo "Pushing changes to prod branch" + git push origin prod + From 98d8213c30107153406d72c5f70cbc19a9e5a881 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 13 Dec 2024 15:08:54 -0800 Subject: [PATCH 04/71] workflow - tweak schedule for test --- .github/workflows/auto-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-publish.yml b/.github/workflows/auto-publish.yml index 875e0ad82..e21d50411 100644 --- a/.github/workflows/auto-publish.yml +++ b/.github/workflows/auto-publish.yml @@ -2,7 +2,7 @@ name: auto-publish run-name: Automatically publish snippets on: schedule: - - cron: '00 23 * * FRI' + - cron: '15 23 * * FRI' - cron: '15 10 * * TUE' - cron: '15 10 * * THU' jobs: From 9fb7fb0317e64e78cdedb7e15ec387533f4dc005 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 13 Dec 2024 15:23:07 -0800 Subject: [PATCH 05/71] workflow - tweak schedule for test --- .github/workflows/auto-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-publish.yml b/.github/workflows/auto-publish.yml index e21d50411..a3fb3473c 100644 --- a/.github/workflows/auto-publish.yml +++ b/.github/workflows/auto-publish.yml @@ -2,7 +2,7 @@ name: auto-publish run-name: Automatically publish snippets on: schedule: - - cron: '15 23 * * FRI' + - cron: '25 23 * * FRI' - cron: '15 10 * * TUE' - cron: '15 10 * * THU' jobs: From 9d8af38f806a2820b3a48d253c9ad61c20c67619 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 13 Dec 2024 15:25:59 -0800 Subject: [PATCH 06/71] workflow - tweak schedule for test --- .github/workflows/auto-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-publish.yml b/.github/workflows/auto-publish.yml index a3fb3473c..ad55f913b 100644 --- a/.github/workflows/auto-publish.yml +++ b/.github/workflows/auto-publish.yml @@ -2,7 +2,7 @@ name: auto-publish run-name: Automatically publish snippets on: schedule: - - cron: '25 23 * * FRI' + - cron: '30 23 * * FRI' - cron: '15 10 * * TUE' - cron: '15 10 * * THU' jobs: From 06b9191a82dbd59c06ce3820f1f04906738eb75d Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 13 Dec 2024 15:37:05 -0800 Subject: [PATCH 07/71] workflow - tweak schedule for test --- .github/workflows/auto-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-publish.yml b/.github/workflows/auto-publish.yml index ad55f913b..596cfe3aa 100644 --- a/.github/workflows/auto-publish.yml +++ b/.github/workflows/auto-publish.yml @@ -2,7 +2,7 @@ name: auto-publish run-name: Automatically publish snippets on: schedule: - - cron: '30 23 * * FRI' + - cron: '40 23 * * FRI' - cron: '15 10 * * TUE' - cron: '15 10 * * THU' jobs: From b685b04f0de5ad13c7c2beff9f0e0715753b37c0 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 13 Dec 2024 15:47:43 -0800 Subject: [PATCH 08/71] workflow - update schedule --- .github/workflows/auto-publish.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/auto-publish.yml b/.github/workflows/auto-publish.yml index 596cfe3aa..72a284cc6 100644 --- a/.github/workflows/auto-publish.yml +++ b/.github/workflows/auto-publish.yml @@ -2,7 +2,6 @@ name: auto-publish run-name: Automatically publish snippets on: schedule: - - cron: '40 23 * * FRI' - cron: '15 10 * * TUE' - cron: '15 10 * * THU' jobs: From 49f4ca02656467ebc02de969dc3a00af86ba243f Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Mon, 16 Dec 2024 14:09:52 -0800 Subject: [PATCH 09/71] [Word] (insert external doc) Check for platform-specific reqt. set (#955) --- .../50-document/insert-external-document.yaml | 5 +++++ snippet-extractor-output/snippets.yaml | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/samples/word/50-document/insert-external-document.yaml b/samples/word/50-document/insert-external-document.yaml index e3dda0385..b90258712 100644 --- a/samples/word/50-document/insert-external-document.yaml +++ b/samples/word/50-document/insert-external-document.yaml @@ -20,6 +20,11 @@ script: const externalDoc: Word.DocumentCreated = context.application.createDocument(externalDocument); await context.sync(); + if (!Office.context.requirements.isSetSupported("WordApiHiddenDocument", "1.3")) { + console.warn("The WordApiHiddenDocument 1.3 requirement set isn't supported on this client so can't proceed. Try this action on a platform that supports this requirement set."); + return; + } + const externalDocBody: Word.Body = externalDoc.body; externalDocBody.load("text"); await context.sync(); diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index cb46ec1d9..7a0f38531 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -15926,6 +15926,11 @@ const externalDoc: Word.DocumentCreated = context.application.createDocument(externalDocument); await context.sync(); + if (!Office.context.requirements.isSetSupported("WordApiHiddenDocument", "1.3")) { + console.warn("The WordApiHiddenDocument 1.3 requirement set isn't supported on this client so can't proceed. Try this action on a platform that supports this requirement set."); + return; + } + const externalDocBody: Word.Body = externalDoc.body; externalDocBody.load("text"); await context.sync(); @@ -15950,6 +15955,11 @@ const externalDoc: Word.DocumentCreated = context.application.createDocument(externalDocument); await context.sync(); + if (!Office.context.requirements.isSetSupported("WordApiHiddenDocument", "1.3")) { + console.warn("The WordApiHiddenDocument 1.3 requirement set isn't supported on this client so can't proceed. Try this action on a platform that supports this requirement set."); + return; + } + const externalDocBody: Word.Body = externalDoc.body; externalDocBody.load("text"); await context.sync(); @@ -20430,6 +20440,11 @@ const externalDoc: Word.DocumentCreated = context.application.createDocument(externalDocument); await context.sync(); + if (!Office.context.requirements.isSetSupported("WordApiHiddenDocument", "1.3")) { + console.warn("The WordApiHiddenDocument 1.3 requirement set isn't supported on this client so can't proceed. Try this action on a platform that supports this requirement set."); + return; + } + const externalDocBody: Word.Body = externalDoc.body; externalDocBody.load("text"); await context.sync(); From 0dcc3d3d96ae1a3b335d5f1891fbfc9283550475 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Fri, 27 Dec 2024 08:50:41 -0800 Subject: [PATCH 10/71] Revert change to Office JS URL (#956) --- config/build.ts | 2 +- private-samples/excel/20-chart/chart-title-ts.yaml | 2 +- samples/excel/01-basics/basic-api-call-es5.yaml | 2 +- samples/excel/01-basics/basic-api-call.yaml | 2 +- samples/excel/01-basics/basic-common-api-call.yaml | 2 +- samples/excel/10-chart/chart-axis-formatting.yaml | 2 +- samples/excel/10-chart/chart-axis.yaml | 2 +- samples/excel/10-chart/chart-bubble-chart.yaml | 2 +- samples/excel/10-chart/chart-create-several-charts.yaml | 2 +- samples/excel/10-chart/chart-data-source.yaml | 2 +- samples/excel/10-chart/chart-data-table.yaml | 2 +- samples/excel/10-chart/chart-formatting.yaml | 2 +- samples/excel/10-chart/chart-legend.yaml | 2 +- samples/excel/10-chart/chart-point.yaml | 2 +- samples/excel/10-chart/chart-series-markers.yaml | 2 +- samples/excel/10-chart/chart-series-plotorder.yaml | 2 +- samples/excel/10-chart/chart-series.yaml | 2 +- samples/excel/10-chart/chart-title-format.yaml | 2 +- samples/excel/10-chart/chart-trendlines.yaml | 2 +- samples/excel/10-chart/create-doughnut-chart.yaml | 2 +- samples/excel/12-comment/comment-basics.yaml | 2 +- samples/excel/12-comment/comment-mentions.yaml | 2 +- samples/excel/12-comment/comment-replies.yaml | 2 +- samples/excel/12-comment/comment-resolution.yaml | 2 +- .../conditional-formatting-advanced.yaml | 2 +- .../14-conditional-formatting/conditional-formatting-basic.yaml | 2 +- samples/excel/16-custom-functions/basic-function.yaml | 2 +- samples/excel/16-custom-functions/custom-functions-errors.yaml | 2 +- .../excel/16-custom-functions/data-types-custom-functions.yaml | 2 +- samples/excel/16-custom-functions/streaming-function.yaml | 2 +- samples/excel/16-custom-functions/volatile-function.yaml | 2 +- samples/excel/16-custom-functions/web-call-function.yaml | 2 +- .../create-set-get-and-delete-custom-xml-parts.yaml | 2 +- .../18-custom-xml-parts/test-xml-for-unique-namespace.yaml | 2 +- samples/excel/20-data-types/data-types-entity-attribution.yaml | 2 +- samples/excel/20-data-types/data-types-entity-icons.yaml | 2 +- samples/excel/20-data-types/data-types-entity-values.yaml | 2 +- samples/excel/20-data-types/data-types-error-values.yaml | 2 +- samples/excel/20-data-types/data-types-formatted-number.yaml | 2 +- samples/excel/20-data-types/data-types-references.yaml | 2 +- samples/excel/20-data-types/data-types-web-image.yaml | 2 +- samples/excel/22-data-validation/data-validation.yaml | 2 +- samples/excel/26-document/custom-properties.yaml | 2 +- samples/excel/26-document/get-file-in-slices-async.yaml | 2 +- samples/excel/26-document/properties.yaml | 2 +- samples/excel/30-events/data-change-event-details.yaml | 2 +- samples/excel/30-events/data-changed.yaml | 2 +- samples/excel/30-events/event-column-and-row-sort.yaml | 2 +- samples/excel/30-events/event-worksheet-single-click.yaml | 2 +- samples/excel/30-events/events-chart-activated.yaml | 2 +- .../excel/30-events/events-chartcollection-added-activated.yaml | 2 +- samples/excel/30-events/events-comment-event-handler.yaml | 2 +- samples/excel/30-events/events-disable-events.yaml | 2 +- samples/excel/30-events/events-formula-changed.yaml | 2 +- samples/excel/30-events/events-table-changed.yaml | 2 +- samples/excel/30-events/events-tablecollection-changed.yaml | 2 +- samples/excel/30-events/events-workbook-activated.yaml | 2 +- .../30-events/events-workbook-and-worksheet-collection.yaml | 2 +- samples/excel/30-events/events-worksheet-protection.yaml | 2 +- samples/excel/30-events/events-worksheet.yaml | 2 +- samples/excel/30-events/selection-changed-events.yaml | 2 +- samples/excel/34-named-item/create-and-remove-named-item.yaml | 2 +- samples/excel/34-named-item/update-named-item.yaml | 2 +- samples/excel/38-pivottable/pivottable-calculations.yaml | 2 +- samples/excel/38-pivottable/pivottable-create-and-modify.yaml | 2 +- .../excel/38-pivottable/pivottable-filters-and-summaries.yaml | 2 +- samples/excel/38-pivottable/pivottable-get-pivottables.yaml | 2 +- samples/excel/38-pivottable/pivottable-pivotfilters.yaml | 2 +- samples/excel/38-pivottable/pivottable-pivotlayout.yaml | 2 +- samples/excel/38-pivottable/pivottable-refresh.yaml | 2 +- samples/excel/38-pivottable/pivottable-slicer.yaml | 2 +- samples/excel/38-pivottable/pivottable-source-data.yaml | 2 +- samples/excel/42-range/cell-properties.yaml | 2 +- samples/excel/42-range/dynamic-arrays.yaml | 2 +- samples/excel/42-range/formatting.yaml | 2 +- samples/excel/42-range/insert-delete-clear-range.yaml | 2 +- samples/excel/42-range/outline.yaml | 2 +- samples/excel/42-range/precedents.yaml | 2 +- samples/excel/42-range/range-areas.yaml | 2 +- samples/excel/42-range/range-auto-fill.yaml | 2 +- samples/excel/42-range/range-copyfrom.yaml | 2 +- samples/excel/42-range/range-dependents.yaml | 2 +- samples/excel/42-range/range-direct-dependents.yaml | 2 +- samples/excel/42-range/range-find.yaml | 2 +- samples/excel/42-range/range-get-range-edge.yaml | 2 +- samples/excel/42-range/range-hyperlink.yaml | 2 +- samples/excel/42-range/range-merged-ranges.yaml | 2 +- samples/excel/42-range/range-relationships.yaml | 2 +- samples/excel/42-range/range-remove-duplicates.yaml | 2 +- samples/excel/42-range/range-text-orientation.yaml | 2 +- samples/excel/42-range/selected-range.yaml | 2 +- samples/excel/42-range/set-get-values.yaml | 2 +- samples/excel/42-range/style.yaml | 2 +- samples/excel/42-range/used-range.yaml | 2 +- samples/excel/44-shape/shape-create-and-delete.yaml | 2 +- samples/excel/44-shape/shape-groups.yaml | 2 +- samples/excel/44-shape/shape-images.yaml | 2 +- samples/excel/44-shape/shape-lines.yaml | 2 +- samples/excel/44-shape/shape-move-and-order.yaml | 2 +- samples/excel/44-shape/shape-textboxes.yaml | 2 +- samples/excel/46-table/add-rows-and-columns-to-a-table.yaml | 2 +- samples/excel/46-table/convert-range-to-table.yaml | 2 +- samples/excel/46-table/create-table.yaml | 2 +- samples/excel/46-table/filter-data.yaml | 2 +- samples/excel/46-table/formatting.yaml | 2 +- samples/excel/46-table/get-data-from-table.yaml | 2 +- .../excel/46-table/get-visible-range-of-a-filtered-table.yaml | 2 +- samples/excel/46-table/import-json-data.yaml | 2 +- samples/excel/46-table/resize-table.yaml | 2 +- samples/excel/46-table/sort-data.yaml | 2 +- .../excel/50-workbook/create-get-change-delete-settings.yaml | 2 +- samples/excel/50-workbook/create-workbook.yaml | 2 +- samples/excel/50-workbook/culture-info-date-time.yaml | 2 +- samples/excel/50-workbook/culture-info.yaml | 2 +- samples/excel/50-workbook/data-protection.yaml | 2 +- samples/excel/50-workbook/workbook-built-in-functions.yaml | 2 +- samples/excel/50-workbook/workbook-calculation.yaml | 2 +- samples/excel/50-workbook/workbook-get-active-cell.yaml | 2 +- .../excel/50-workbook/workbook-insert-external-worksheets.yaml | 2 +- samples/excel/50-workbook/workbook-save-and-close.yaml | 2 +- samples/excel/54-worksheet/active-worksheet.yaml | 2 +- .../excel/54-worksheet/add-delete-rename-move-worksheet.yaml | 2 +- samples/excel/54-worksheet/gridlines.yaml | 2 +- samples/excel/54-worksheet/list-worksheets.yaml | 2 +- .../54-worksheet/reference-worksheets-by-relative-position.yaml | 2 +- samples/excel/54-worksheet/tab-color.yaml | 2 +- samples/excel/54-worksheet/worksheet-auto-filter.yaml | 2 +- samples/excel/54-worksheet/worksheet-copy.yaml | 2 +- samples/excel/54-worksheet/worksheet-find-all.yaml | 2 +- samples/excel/54-worksheet/worksheet-freeze-panes.yaml | 2 +- samples/excel/54-worksheet/worksheet-page-layout.yaml | 2 +- samples/excel/54-worksheet/worksheet-range-cell.yaml | 2 +- samples/excel/54-worksheet/worksheet-visibility.yaml | 2 +- samples/excel/90-scenarios/currency-converter.yaml | 2 +- samples/excel/90-scenarios/multiple-property-set.yaml | 2 +- samples/excel/90-scenarios/performance-optimization.yaml | 2 +- samples/excel/90-scenarios/report-generation.yaml | 2 +- samples/excel/90-scenarios/working-with-dates.yaml | 2 +- samples/excel/99-just-for-fun/color-wheel.yaml | 2 +- samples/excel/99-just-for-fun/gradient.yaml | 2 +- samples/excel/99-just-for-fun/path-finder-game.yaml | 2 +- samples/excel/99-just-for-fun/patterns.yaml | 2 +- samples/excel/99-just-for-fun/tetrominos.yaml | 2 +- samples/excel/default.yaml | 2 +- samples/onenote/default.yaml | 2 +- samples/outlook/10-roaming-settings/roaming-settings.yaml | 2 +- .../outlook/15-item-custom-properties/load-set-get-save.yaml | 2 +- samples/outlook/20-item-body/add-inline-base64-image.yaml | 2 +- samples/outlook/20-item-body/append-text-on-send.yaml | 2 +- samples/outlook/20-item-body/get-body-format.yaml | 2 +- samples/outlook/20-item-body/get-selected-data.yaml | 2 +- samples/outlook/20-item-body/prepend-text-on-send.yaml | 2 +- samples/outlook/20-item-body/prepend-text-to-item-body.yaml | 2 +- samples/outlook/20-item-body/replace-selected-text.yaml | 2 +- samples/outlook/25-item-save-and-close/close-async.yaml | 2 +- samples/outlook/25-item-save-and-close/close.yaml | 2 +- samples/outlook/25-item-save-and-close/save.yaml | 2 +- .../outlook/30-recipients-and-attendees/get-all-attendees.yaml | 2 +- .../30-recipients-and-attendees/get-cc-message-read.yaml | 2 +- .../30-recipients-and-attendees/get-from-message-compose.yaml | 2 +- .../30-recipients-and-attendees/get-from-message-read.yaml | 2 +- .../get-optional-attendees-appointment-attendee.yaml | 2 +- .../get-organizer-appointment-attendee.yaml | 2 +- .../get-organizer-appointment-organizer.yaml | 2 +- .../get-required-attendees-appointment-attendee.yaml | 2 +- .../30-recipients-and-attendees/get-sender-message-read.yaml | 2 +- .../get-set-bcc-message-compose.yaml | 2 +- .../30-recipients-and-attendees/get-set-cc-message-compose.yaml | 2 +- .../get-set-optional-attendees-appointment-organizer.yaml | 2 +- .../get-set-required-attendees-appointment-organizer.yaml | 2 +- .../30-recipients-and-attendees/get-set-to-message-compose.yaml | 2 +- .../30-recipients-and-attendees/get-to-message-read.yaml | 2 +- samples/outlook/35-notifications/add-getall-remove.yaml | 2 +- samples/outlook/40-attachments/attachments-compose.yaml | 2 +- samples/outlook/40-attachments/get-attachment-content.yaml | 2 +- samples/outlook/40-attachments/get-attachments-read.yaml | 2 +- samples/outlook/45-categories/work-with-categories.yaml | 2 +- samples/outlook/45-categories/work-with-master-categories.yaml | 2 +- samples/outlook/50-recurrence/get-recurrence-read.yaml | 2 +- samples/outlook/50-recurrence/get-series-id.yaml | 2 +- .../50-recurrence/get-set-recurrence-appointment-organizer.yaml | 2 +- .../outlook/55-display-items/display-existing-appointment.yaml | 2 +- samples/outlook/55-display-items/display-existing-message.yaml | 2 +- samples/outlook/55-display-items/display-new-appointment.yaml | 2 +- samples/outlook/55-display-items/display-new-message.yaml | 2 +- samples/outlook/55-display-items/display-reply-forms.yaml | 2 +- .../55-display-items/display-reply-with-attachments.yaml | 2 +- samples/outlook/60-sensitivity-label/sensitivity-label.yaml | 2 +- .../60-sensitivity-label/sensitivity-labels-catalog.yaml | 2 +- .../65-delegates-and-shared-folders/get-shared-properties.yaml | 2 +- .../70-mime-headers/get-internet-headers-message-read.yaml | 2 +- .../manage-custom-internet-headers-message-compose.yaml | 2 +- samples/outlook/75-regex-matches/contextual.yaml | 2 +- .../85-tokens-and-service-calls/get-icaluid-as-attendee.yaml | 2 +- .../85-tokens-and-service-calls/get-icaluid-as-organizer.yaml | 2 +- samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml | 2 +- .../85-tokens-and-service-calls/make-ews-request-async.yaml | 2 +- .../send-message-using-make-ews-request-async.yaml | 2 +- .../85-tokens-and-service-calls/user-callback-token.yaml | 2 +- .../85-tokens-and-service-calls/user-identity-token.yaml | 2 +- samples/outlook/90-other-item-apis/delay-message-delivery.yaml | 2 +- .../get-add-remove-enhancedlocation-appointment.yaml | 2 +- .../outlook/90-other-item-apis/get-conversation-id-message.yaml | 2 +- samples/outlook/90-other-item-apis/get-conversation-index.yaml | 2 +- .../outlook/90-other-item-apis/get-date-time-created-read.yaml | 2 +- .../outlook/90-other-item-apis/get-date-time-modified-read.yaml | 2 +- .../outlook/90-other-item-apis/get-diagnostic-information.yaml | 2 +- samples/outlook/90-other-item-apis/get-eml-format.yaml | 2 +- samples/outlook/90-other-item-apis/get-end-read.yaml | 2 +- samples/outlook/90-other-item-apis/get-in-reply-to.yaml | 2 +- .../90-other-item-apis/get-internet-message-id-read.yaml | 2 +- samples/outlook/90-other-item-apis/get-item-class-async.yaml | 2 +- samples/outlook/90-other-item-apis/get-item-class-read.yaml | 2 +- samples/outlook/90-other-item-apis/get-item-type.yaml | 2 +- samples/outlook/90-other-item-apis/get-location-read.yaml | 2 +- samples/outlook/90-other-item-apis/get-message-properties.yaml | 2 +- .../outlook/90-other-item-apis/get-normalized-subject-read.yaml | 2 +- .../90-other-item-apis/get-set-end-appointment-organizer.yaml | 2 +- .../get-set-location-appointment-organizer.yaml | 2 +- .../outlook/90-other-item-apis/get-set-sensitivity-level.yaml | 2 +- .../90-other-item-apis/get-set-start-appointment-organizer.yaml | 2 +- samples/outlook/90-other-item-apis/get-set-subject-compose.yaml | 2 +- samples/outlook/90-other-item-apis/get-start-read.yaml | 2 +- samples/outlook/90-other-item-apis/get-subject-read.yaml | 2 +- samples/outlook/90-other-item-apis/item-id-compose.yaml | 2 +- samples/outlook/90-other-item-apis/session-data-apis.yaml | 2 +- samples/outlook/90-other-item-apis/set-selected-data.yaml | 2 +- .../outlook/90-other-item-apis/work-with-client-signatures.yaml | 2 +- samples/outlook/default.yaml | 2 +- samples/powerpoint/basics/basic-api-call-js.yaml | 2 +- samples/powerpoint/basics/basic-api-call-ts.yaml | 2 +- samples/powerpoint/basics/basic-common-api-call.yaml | 2 +- samples/powerpoint/default.yaml | 2 +- samples/powerpoint/document/create-presentation.yaml | 2 +- samples/powerpoint/hyperlinks/manage-hyperlinks.yaml | 2 +- samples/powerpoint/images/insert-image.yaml | 2 +- samples/powerpoint/images/insert-svg.yaml | 2 +- samples/powerpoint/scenarios/searches-wikipedia-api.yaml | 2 +- samples/powerpoint/shapes/get-set-shapes.yaml | 2 +- samples/powerpoint/shapes/get-shapes-by-type.yaml | 2 +- samples/powerpoint/shapes/shapes.yaml | 2 +- samples/powerpoint/slide-management/add-slides.yaml | 2 +- samples/powerpoint/slide-management/get-set-slides.yaml | 2 +- samples/powerpoint/slide-management/get-slide-metadata.yaml | 2 +- samples/powerpoint/slide-management/insert-slides.yaml | 2 +- samples/powerpoint/tags/tags.yaml | 2 +- samples/powerpoint/text/get-set-textrange.yaml | 2 +- samples/project/basics/basic-common-api-call.yaml | 2 +- samples/project/default.yaml | 2 +- samples/word/01-basics/basic-api-call-es5.yaml | 2 +- samples/word/01-basics/basic-api-call.yaml | 2 +- samples/word/01-basics/basic-common-api-call.yaml | 2 +- .../word/10-content-controls/content-control-onadded-event.yaml | 2 +- .../content-control-ondatachanged-event.yaml | 2 +- .../10-content-controls/content-control-ondeleted-event.yaml | 2 +- .../10-content-controls/content-control-onentered-event.yaml | 2 +- .../10-content-controls/content-control-onexited-event.yaml | 2 +- .../content-control-onselectionchanged-event.yaml | 2 +- .../word/10-content-controls/get-change-tracking-states.yaml | 2 +- .../insert-and-change-checkbox-content-control.yaml | 2 +- .../insert-and-change-combo-box-content-control.yaml | 2 +- .../10-content-controls/insert-and-change-content-controls.yaml | 2 +- .../insert-and-change-dropdown-list-content-control.yaml | 2 +- samples/word/15-images/insert-and-get-pictures.yaml | 2 +- samples/word/20-lists/insert-list.yaml | 2 +- samples/word/20-lists/manage-list-styles.yaml | 2 +- samples/word/20-lists/organize-list.yaml | 2 +- samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml | 2 +- samples/word/25-paragraph/get-text.yaml | 2 +- samples/word/25-paragraph/get-word-count.yaml | 2 +- samples/word/25-paragraph/insert-formatted-text.yaml | 2 +- samples/word/25-paragraph/insert-header-and-footer.yaml | 2 +- samples/word/25-paragraph/insert-in-different-locations.yaml | 2 +- samples/word/25-paragraph/insert-line-and-page-breaks.yaml | 2 +- samples/word/25-paragraph/onadded-event.yaml | 2 +- samples/word/25-paragraph/onchanged-event.yaml | 2 +- samples/word/25-paragraph/ondeleted-event.yaml | 2 +- samples/word/25-paragraph/paragraph-properties.yaml | 2 +- samples/word/25-paragraph/search.yaml | 2 +- samples/word/30-properties/get-built-in-properties.yaml | 2 +- .../30-properties/read-write-custom-document-properties.yaml | 2 +- samples/word/35-ranges/compare-location.yaml | 2 +- samples/word/35-ranges/scroll-to-range.yaml | 2 +- samples/word/35-ranges/split-words-of-first-paragraph.yaml | 2 +- samples/word/40-tables/manage-custom-style.yaml | 2 +- samples/word/40-tables/manage-formatting.yaml | 2 +- samples/word/40-tables/table-cell-access.yaml | 2 +- samples/word/50-document/compare-documents.yaml | 2 +- samples/word/50-document/get-external-styles.yaml | 2 +- samples/word/50-document/insert-external-document.yaml | 2 +- samples/word/50-document/insert-section-breaks.yaml | 2 +- samples/word/50-document/manage-annotations.yaml | 2 +- samples/word/50-document/manage-body.yaml | 2 +- samples/word/50-document/manage-change-tracking.yaml | 2 +- samples/word/50-document/manage-comments.yaml | 2 +- samples/word/50-document/manage-custom-xml-part-ns.yaml | 2 +- samples/word/50-document/manage-custom-xml-part.yaml | 2 +- samples/word/50-document/manage-fields.yaml | 2 +- samples/word/50-document/manage-footnotes.yaml | 2 +- samples/word/50-document/manage-settings.yaml | 2 +- samples/word/50-document/manage-styles.yaml | 2 +- samples/word/50-document/manage-tracked-changes.yaml | 2 +- samples/word/50-document/save-close.yaml | 2 +- samples/word/90-scenarios/doc-assembly.yaml | 2 +- samples/word/90-scenarios/multiple-property-set.yaml | 2 +- samples/word/default.yaml | 2 +- 306 files changed, 306 insertions(+), 306 deletions(-) diff --git a/config/build.ts b/config/build.ts index 059400106..678cbe254 100644 --- a/config/build.ts +++ b/config/build.ts @@ -220,7 +220,7 @@ async function processSnippets(processedSnippets: Dictionary= 0; - const canonicalOfficeJsReference = 'https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js'; + const canonicalOfficeJsReference = 'https://appsforoffice.microsoft.com/lib/1/hosted/office.js'; const betaOfficeJsReference = 'https://appsforoffice.microsoft.com/lib/beta/hosted/office.js'; const officeDTS = '@types/office-js'; const betaOfficeDTS = '@types/office-js-preview'; diff --git a/private-samples/excel/20-chart/chart-title-ts.yaml b/private-samples/excel/20-chart/chart-title-ts.yaml index 8c1033dae..25e06c787 100644 --- a/private-samples/excel/20-chart/chart-title-ts.yaml +++ b/private-samples/excel/20-chart/chart-title-ts.yaml @@ -130,7 +130,7 @@ style: language: css libraries: | // Office.js - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js // CSS Libraries office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/01-basics/basic-api-call-es5.yaml b/samples/excel/01-basics/basic-api-call-es5.yaml index c0a56afb4..d5c3fc8e0 100644 --- a/samples/excel/01-basics/basic-api-call-es5.yaml +++ b/samples/excel/01-basics/basic-api-call-es5.yaml @@ -60,7 +60,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/01-basics/basic-api-call.yaml b/samples/excel/01-basics/basic-api-call.yaml index 09fb99340..48c4cd645 100644 --- a/samples/excel/01-basics/basic-api-call.yaml +++ b/samples/excel/01-basics/basic-api-call.yaml @@ -61,7 +61,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/01-basics/basic-common-api-call.yaml b/samples/excel/01-basics/basic-common-api-call.yaml index 796f8147c..fee0cc213 100644 --- a/samples/excel/01-basics/basic-common-api-call.yaml +++ b/samples/excel/01-basics/basic-common-api-call.yaml @@ -52,7 +52,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-axis-formatting.yaml b/samples/excel/10-chart/chart-axis-formatting.yaml index 5b0abb97c..e2df678f1 100644 --- a/samples/excel/10-chart/chart-axis-formatting.yaml +++ b/samples/excel/10-chart/chart-axis-formatting.yaml @@ -157,7 +157,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-axis.yaml b/samples/excel/10-chart/chart-axis.yaml index de744e337..2dbd1eadf 100644 --- a/samples/excel/10-chart/chart-axis.yaml +++ b/samples/excel/10-chart/chart-axis.yaml @@ -226,7 +226,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-bubble-chart.yaml b/samples/excel/10-chart/chart-bubble-chart.yaml index 4ac73275c..26267ebf9 100644 --- a/samples/excel/10-chart/chart-bubble-chart.yaml +++ b/samples/excel/10-chart/chart-bubble-chart.yaml @@ -153,7 +153,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-create-several-charts.yaml b/samples/excel/10-chart/chart-create-several-charts.yaml index 4640f5dd2..a9c77544c 100644 --- a/samples/excel/10-chart/chart-create-several-charts.yaml +++ b/samples/excel/10-chart/chart-create-several-charts.yaml @@ -322,7 +322,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-data-source.yaml b/samples/excel/10-chart/chart-data-source.yaml index a0718392b..c89e78930 100644 --- a/samples/excel/10-chart/chart-data-source.yaml +++ b/samples/excel/10-chart/chart-data-source.yaml @@ -114,7 +114,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-data-table.yaml b/samples/excel/10-chart/chart-data-table.yaml index cd4e84386..527ff2b00 100644 --- a/samples/excel/10-chart/chart-data-table.yaml +++ b/samples/excel/10-chart/chart-data-table.yaml @@ -153,7 +153,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-formatting.yaml b/samples/excel/10-chart/chart-formatting.yaml index e4fb2448b..a26e6d685 100644 --- a/samples/excel/10-chart/chart-formatting.yaml +++ b/samples/excel/10-chart/chart-formatting.yaml @@ -212,7 +212,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-legend.yaml b/samples/excel/10-chart/chart-legend.yaml index 9673970eb..f96b6ec81 100644 --- a/samples/excel/10-chart/chart-legend.yaml +++ b/samples/excel/10-chart/chart-legend.yaml @@ -132,7 +132,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-point.yaml b/samples/excel/10-chart/chart-point.yaml index ca708f5b8..f79c6ae8c 100644 --- a/samples/excel/10-chart/chart-point.yaml +++ b/samples/excel/10-chart/chart-point.yaml @@ -118,7 +118,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-series-markers.yaml b/samples/excel/10-chart/chart-series-markers.yaml index 61100ffe7..34e1c652f 100644 --- a/samples/excel/10-chart/chart-series-markers.yaml +++ b/samples/excel/10-chart/chart-series-markers.yaml @@ -113,7 +113,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-series-plotorder.yaml b/samples/excel/10-chart/chart-series-plotorder.yaml index 6e522b338..8340b85e7 100644 --- a/samples/excel/10-chart/chart-series-plotorder.yaml +++ b/samples/excel/10-chart/chart-series-plotorder.yaml @@ -124,7 +124,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-series.yaml b/samples/excel/10-chart/chart-series.yaml index 3b95c2cff..7fc17349f 100644 --- a/samples/excel/10-chart/chart-series.yaml +++ b/samples/excel/10-chart/chart-series.yaml @@ -141,7 +141,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-title-format.yaml b/samples/excel/10-chart/chart-title-format.yaml index 0100df1c0..dce065858 100644 --- a/samples/excel/10-chart/chart-title-format.yaml +++ b/samples/excel/10-chart/chart-title-format.yaml @@ -149,7 +149,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/chart-trendlines.yaml b/samples/excel/10-chart/chart-trendlines.yaml index 02e173627..9fe36a845 100644 --- a/samples/excel/10-chart/chart-trendlines.yaml +++ b/samples/excel/10-chart/chart-trendlines.yaml @@ -189,7 +189,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/10-chart/create-doughnut-chart.yaml b/samples/excel/10-chart/create-doughnut-chart.yaml index e1e0ac6eb..1589de91c 100644 --- a/samples/excel/10-chart/create-doughnut-chart.yaml +++ b/samples/excel/10-chart/create-doughnut-chart.yaml @@ -139,7 +139,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/12-comment/comment-basics.yaml b/samples/excel/12-comment/comment-basics.yaml index 420412bbf..c71d69548 100644 --- a/samples/excel/12-comment/comment-basics.yaml +++ b/samples/excel/12-comment/comment-basics.yaml @@ -130,7 +130,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/12-comment/comment-mentions.yaml b/samples/excel/12-comment/comment-mentions.yaml index fba455834..875d8c4a7 100644 --- a/samples/excel/12-comment/comment-mentions.yaml +++ b/samples/excel/12-comment/comment-mentions.yaml @@ -89,7 +89,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/12-comment/comment-replies.yaml b/samples/excel/12-comment/comment-replies.yaml index 2b6bbe10f..e207fe89d 100644 --- a/samples/excel/12-comment/comment-replies.yaml +++ b/samples/excel/12-comment/comment-replies.yaml @@ -151,7 +151,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/12-comment/comment-resolution.yaml b/samples/excel/12-comment/comment-resolution.yaml index 6b5bcaa14..295b7385a 100644 --- a/samples/excel/12-comment/comment-resolution.yaml +++ b/samples/excel/12-comment/comment-resolution.yaml @@ -100,7 +100,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml index 750e5cbac..012ef4e80 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml @@ -225,7 +225,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml index c69152ed1..0fbb291df 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -342,7 +342,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/16-custom-functions/basic-function.yaml b/samples/excel/16-custom-functions/basic-function.yaml index 3194e8ce9..c085f87e1 100644 --- a/samples/excel/16-custom-functions/basic-function.yaml +++ b/samples/excel/16-custom-functions/basic-function.yaml @@ -18,6 +18,6 @@ script: } language: typescript libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js core-js@2.4.1/client/core.min.js \ No newline at end of file diff --git a/samples/excel/16-custom-functions/custom-functions-errors.yaml b/samples/excel/16-custom-functions/custom-functions-errors.yaml index 127176c1a..e1f5582b1 100644 --- a/samples/excel/16-custom-functions/custom-functions-errors.yaml +++ b/samples/excel/16-custom-functions/custom-functions-errors.yaml @@ -33,6 +33,6 @@ script: } language: typescript libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js core-js@2.4.1/client/core.min.js \ No newline at end of file diff --git a/samples/excel/16-custom-functions/data-types-custom-functions.yaml b/samples/excel/16-custom-functions/data-types-custom-functions.yaml index 459a04b0d..a5ebdbab6 100644 --- a/samples/excel/16-custom-functions/data-types-custom-functions.yaml +++ b/samples/excel/16-custom-functions/data-types-custom-functions.yaml @@ -327,7 +327,7 @@ script: ]; language: typescript libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/streaming-function.yaml b/samples/excel/16-custom-functions/streaming-function.yaml index 2a0914847..1e9740051 100644 --- a/samples/excel/16-custom-functions/streaming-function.yaml +++ b/samples/excel/16-custom-functions/streaming-function.yaml @@ -28,6 +28,6 @@ script: } language: typescript libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/volatile-function.yaml b/samples/excel/16-custom-functions/volatile-function.yaml index 2858f4ed2..68438aefc 100644 --- a/samples/excel/16-custom-functions/volatile-function.yaml +++ b/samples/excel/16-custom-functions/volatile-function.yaml @@ -17,6 +17,6 @@ script: } language: typescript libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/web-call-function.yaml b/samples/excel/16-custom-functions/web-call-function.yaml index cd2d2da2f..faf57fbdb 100644 --- a/samples/excel/16-custom-functions/web-call-function.yaml +++ b/samples/excel/16-custom-functions/web-call-function.yaml @@ -28,6 +28,6 @@ script: } language: typescript libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js core-js@2.4.1/client/core.min.js \ No newline at end of file diff --git a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml index 1317b247f..dcaf6a955 100644 --- a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml +++ b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -146,7 +146,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml index 0279a0ff5..60a15efe9 100644 --- a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml +++ b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -132,7 +132,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/20-data-types/data-types-entity-attribution.yaml b/samples/excel/20-data-types/data-types-entity-attribution.yaml index d7a9efe17..ded226769 100644 --- a/samples/excel/20-data-types/data-types-entity-attribution.yaml +++ b/samples/excel/20-data-types/data-types-entity-attribution.yaml @@ -221,7 +221,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/20-data-types/data-types-entity-icons.yaml b/samples/excel/20-data-types/data-types-entity-icons.yaml index 46f6ec979..89a06fafc 100644 --- a/samples/excel/20-data-types/data-types-entity-icons.yaml +++ b/samples/excel/20-data-types/data-types-entity-icons.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/20-data-types/data-types-entity-values.yaml b/samples/excel/20-data-types/data-types-entity-values.yaml index d4792406c..f41cfe5d3 100644 --- a/samples/excel/20-data-types/data-types-entity-values.yaml +++ b/samples/excel/20-data-types/data-types-entity-values.yaml @@ -601,7 +601,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/20-data-types/data-types-error-values.yaml b/samples/excel/20-data-types/data-types-error-values.yaml index b728fe804..ec1c9eeb6 100644 --- a/samples/excel/20-data-types/data-types-error-values.yaml +++ b/samples/excel/20-data-types/data-types-error-values.yaml @@ -106,7 +106,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/20-data-types/data-types-formatted-number.yaml b/samples/excel/20-data-types/data-types-formatted-number.yaml index 35bbc5b13..a8ca4bc9c 100644 --- a/samples/excel/20-data-types/data-types-formatted-number.yaml +++ b/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -144,7 +144,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/20-data-types/data-types-references.yaml b/samples/excel/20-data-types/data-types-references.yaml index 12324bab8..37f5673fd 100644 --- a/samples/excel/20-data-types/data-types-references.yaml +++ b/samples/excel/20-data-types/data-types-references.yaml @@ -332,7 +332,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/20-data-types/data-types-web-image.yaml b/samples/excel/20-data-types/data-types-web-image.yaml index 64cf933a0..3a6d8134d 100644 --- a/samples/excel/20-data-types/data-types-web-image.yaml +++ b/samples/excel/20-data-types/data-types-web-image.yaml @@ -187,7 +187,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/22-data-validation/data-validation.yaml b/samples/excel/22-data-validation/data-validation.yaml index d6eeef522..f1b981609 100644 --- a/samples/excel/22-data-validation/data-validation.yaml +++ b/samples/excel/22-data-validation/data-validation.yaml @@ -179,7 +179,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/26-document/custom-properties.yaml b/samples/excel/26-document/custom-properties.yaml index 79f40918b..332f28ad1 100644 --- a/samples/excel/26-document/custom-properties.yaml +++ b/samples/excel/26-document/custom-properties.yaml @@ -131,7 +131,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/26-document/get-file-in-slices-async.yaml b/samples/excel/26-document/get-file-in-slices-async.yaml index 635269759..f5288dfbe 100644 --- a/samples/excel/26-document/get-file-in-slices-async.yaml +++ b/samples/excel/26-document/get-file-in-slices-async.yaml @@ -203,7 +203,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/26-document/properties.yaml b/samples/excel/26-document/properties.yaml index 33d1c55a0..210f2208f 100644 --- a/samples/excel/26-document/properties.yaml +++ b/samples/excel/26-document/properties.yaml @@ -174,7 +174,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/data-change-event-details.yaml b/samples/excel/30-events/data-change-event-details.yaml index 98aada662..3a9724380 100644 --- a/samples/excel/30-events/data-change-event-details.yaml +++ b/samples/excel/30-events/data-change-event-details.yaml @@ -103,7 +103,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/data-changed.yaml b/samples/excel/30-events/data-changed.yaml index c06ca44b8..4671c08a4 100644 --- a/samples/excel/30-events/data-changed.yaml +++ b/samples/excel/30-events/data-changed.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/event-column-and-row-sort.yaml b/samples/excel/30-events/event-column-and-row-sort.yaml index cfbe9d923..cf7cbf654 100644 --- a/samples/excel/30-events/event-column-and-row-sort.yaml +++ b/samples/excel/30-events/event-column-and-row-sort.yaml @@ -195,7 +195,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/event-worksheet-single-click.yaml b/samples/excel/30-events/event-worksheet-single-click.yaml index 040716c50..dda6ab02e 100644 --- a/samples/excel/30-events/event-worksheet-single-click.yaml +++ b/samples/excel/30-events/event-worksheet-single-click.yaml @@ -64,7 +64,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-chart-activated.yaml b/samples/excel/30-events/events-chart-activated.yaml index e52230fc1..26e0b06c4 100644 --- a/samples/excel/30-events/events-chart-activated.yaml +++ b/samples/excel/30-events/events-chart-activated.yaml @@ -169,7 +169,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-chartcollection-added-activated.yaml b/samples/excel/30-events/events-chartcollection-added-activated.yaml index 52f69d3ce..8e62d8909 100644 --- a/samples/excel/30-events/events-chartcollection-added-activated.yaml +++ b/samples/excel/30-events/events-chartcollection-added-activated.yaml @@ -150,7 +150,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-comment-event-handler.yaml b/samples/excel/30-events/events-comment-event-handler.yaml index 7c93c9d66..19daffab1 100644 --- a/samples/excel/30-events/events-comment-event-handler.yaml +++ b/samples/excel/30-events/events-comment-event-handler.yaml @@ -168,7 +168,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-disable-events.yaml b/samples/excel/30-events/events-disable-events.yaml index 8f108feb9..9dfb2dfca 100644 --- a/samples/excel/30-events/events-disable-events.yaml +++ b/samples/excel/30-events/events-disable-events.yaml @@ -174,7 +174,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-formula-changed.yaml b/samples/excel/30-events/events-formula-changed.yaml index ab63491cd..6c10c734b 100644 --- a/samples/excel/30-events/events-formula-changed.yaml +++ b/samples/excel/30-events/events-formula-changed.yaml @@ -118,7 +118,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-table-changed.yaml b/samples/excel/30-events/events-table-changed.yaml index 5f492e97b..10dbe4a25 100644 --- a/samples/excel/30-events/events-table-changed.yaml +++ b/samples/excel/30-events/events-table-changed.yaml @@ -164,7 +164,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-tablecollection-changed.yaml b/samples/excel/30-events/events-tablecollection-changed.yaml index a89249d7f..eaf9a1362 100644 --- a/samples/excel/30-events/events-tablecollection-changed.yaml +++ b/samples/excel/30-events/events-tablecollection-changed.yaml @@ -157,7 +157,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-workbook-activated.yaml b/samples/excel/30-events/events-workbook-activated.yaml index 0cc221ea1..63fc16bf2 100644 --- a/samples/excel/30-events/events-workbook-activated.yaml +++ b/samples/excel/30-events/events-workbook-activated.yaml @@ -67,7 +67,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml b/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml index a16ecb91d..19b0ec0f8 100644 --- a/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml +++ b/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -225,7 +225,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-worksheet-protection.yaml b/samples/excel/30-events/events-worksheet-protection.yaml index 03db0d53a..a05efca9d 100644 --- a/samples/excel/30-events/events-worksheet-protection.yaml +++ b/samples/excel/30-events/events-worksheet-protection.yaml @@ -98,7 +98,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/events-worksheet.yaml b/samples/excel/30-events/events-worksheet.yaml index 9ef3fe796..63ab3d364 100644 --- a/samples/excel/30-events/events-worksheet.yaml +++ b/samples/excel/30-events/events-worksheet.yaml @@ -221,7 +221,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/30-events/selection-changed-events.yaml b/samples/excel/30-events/selection-changed-events.yaml index eb8611711..8950cfb0b 100644 --- a/samples/excel/30-events/selection-changed-events.yaml +++ b/samples/excel/30-events/selection-changed-events.yaml @@ -147,7 +147,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/34-named-item/create-and-remove-named-item.yaml b/samples/excel/34-named-item/create-and-remove-named-item.yaml index f7576b8cb..d4c24ffbd 100644 --- a/samples/excel/34-named-item/create-and-remove-named-item.yaml +++ b/samples/excel/34-named-item/create-and-remove-named-item.yaml @@ -225,7 +225,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/34-named-item/update-named-item.yaml b/samples/excel/34-named-item/update-named-item.yaml index ee9c7d502..d70a75135 100644 --- a/samples/excel/34-named-item/update-named-item.yaml +++ b/samples/excel/34-named-item/update-named-item.yaml @@ -123,7 +123,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-calculations.yaml b/samples/excel/38-pivottable/pivottable-calculations.yaml index 83f508cfe..a105bd44d 100644 --- a/samples/excel/38-pivottable/pivottable-calculations.yaml +++ b/samples/excel/38-pivottable/pivottable-calculations.yaml @@ -200,7 +200,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-create-and-modify.yaml b/samples/excel/38-pivottable/pivottable-create-and-modify.yaml index c74946a22..384a24b55 100644 --- a/samples/excel/38-pivottable/pivottable-create-and-modify.yaml +++ b/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -265,7 +265,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml b/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml index 34316aa2a..ff5a613ee 100644 --- a/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml +++ b/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml @@ -222,7 +222,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-get-pivottables.yaml b/samples/excel/38-pivottable/pivottable-get-pivottables.yaml index 1c8206321..5b210d91b 100644 --- a/samples/excel/38-pivottable/pivottable-get-pivottables.yaml +++ b/samples/excel/38-pivottable/pivottable-get-pivottables.yaml @@ -186,7 +186,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-pivotfilters.yaml b/samples/excel/38-pivottable/pivottable-pivotfilters.yaml index b4530456f..b11672afe 100644 --- a/samples/excel/38-pivottable/pivottable-pivotfilters.yaml +++ b/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -315,7 +315,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-pivotlayout.yaml b/samples/excel/38-pivottable/pivottable-pivotlayout.yaml index 67dd27b52..e691f2ccb 100644 --- a/samples/excel/38-pivottable/pivottable-pivotlayout.yaml +++ b/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -310,7 +310,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-refresh.yaml b/samples/excel/38-pivottable/pivottable-refresh.yaml index 39326ca78..18990777d 100644 --- a/samples/excel/38-pivottable/pivottable-refresh.yaml +++ b/samples/excel/38-pivottable/pivottable-refresh.yaml @@ -127,7 +127,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-slicer.yaml b/samples/excel/38-pivottable/pivottable-slicer.yaml index 05b64743f..05f37c4b8 100644 --- a/samples/excel/38-pivottable/pivottable-slicer.yaml +++ b/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -201,7 +201,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/38-pivottable/pivottable-source-data.yaml b/samples/excel/38-pivottable/pivottable-source-data.yaml index fdcf8b201..f477ead82 100644 --- a/samples/excel/38-pivottable/pivottable-source-data.yaml +++ b/samples/excel/38-pivottable/pivottable-source-data.yaml @@ -122,7 +122,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/cell-properties.yaml b/samples/excel/42-range/cell-properties.yaml index 9356ff2df..373060786 100644 --- a/samples/excel/42-range/cell-properties.yaml +++ b/samples/excel/42-range/cell-properties.yaml @@ -181,7 +181,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/dynamic-arrays.yaml b/samples/excel/42-range/dynamic-arrays.yaml index 467ab9d97..89ecaaa0a 100644 --- a/samples/excel/42-range/dynamic-arrays.yaml +++ b/samples/excel/42-range/dynamic-arrays.yaml @@ -172,7 +172,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/formatting.yaml b/samples/excel/42-range/formatting.yaml index 05549e179..859c9621e 100644 --- a/samples/excel/42-range/formatting.yaml +++ b/samples/excel/42-range/formatting.yaml @@ -111,7 +111,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/insert-delete-clear-range.yaml b/samples/excel/42-range/insert-delete-clear-range.yaml index c1e11736d..4bda94935 100644 --- a/samples/excel/42-range/insert-delete-clear-range.yaml +++ b/samples/excel/42-range/insert-delete-clear-range.yaml @@ -124,7 +124,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/outline.yaml b/samples/excel/42-range/outline.yaml index 998aeaa1f..25b6bb2af 100644 --- a/samples/excel/42-range/outline.yaml +++ b/samples/excel/42-range/outline.yaml @@ -227,7 +227,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/precedents.yaml b/samples/excel/42-range/precedents.yaml index 3a47fc243..81a41ae32 100644 --- a/samples/excel/42-range/precedents.yaml +++ b/samples/excel/42-range/precedents.yaml @@ -202,7 +202,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-areas.yaml b/samples/excel/42-range/range-areas.yaml index 155ef03f4..91f2cce7f 100644 --- a/samples/excel/42-range/range-areas.yaml +++ b/samples/excel/42-range/range-areas.yaml @@ -171,7 +171,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-auto-fill.yaml b/samples/excel/42-range/range-auto-fill.yaml index 577adb579..4d9918c69 100644 --- a/samples/excel/42-range/range-auto-fill.yaml +++ b/samples/excel/42-range/range-auto-fill.yaml @@ -143,7 +143,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-copyfrom.yaml b/samples/excel/42-range/range-copyfrom.yaml index 45e31c10c..f196ba4ce 100644 --- a/samples/excel/42-range/range-copyfrom.yaml +++ b/samples/excel/42-range/range-copyfrom.yaml @@ -212,7 +212,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-dependents.yaml b/samples/excel/42-range/range-dependents.yaml index 757014d57..56dad1fd7 100644 --- a/samples/excel/42-range/range-dependents.yaml +++ b/samples/excel/42-range/range-dependents.yaml @@ -161,7 +161,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-direct-dependents.yaml b/samples/excel/42-range/range-direct-dependents.yaml index 09c8469e2..b929a80b2 100644 --- a/samples/excel/42-range/range-direct-dependents.yaml +++ b/samples/excel/42-range/range-direct-dependents.yaml @@ -156,7 +156,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-find.yaml b/samples/excel/42-range/range-find.yaml index 09f6fc1a8..e447eceb7 100644 --- a/samples/excel/42-range/range-find.yaml +++ b/samples/excel/42-range/range-find.yaml @@ -158,7 +158,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-get-range-edge.yaml b/samples/excel/42-range/range-get-range-edge.yaml index f569750e6..89154fa83 100644 --- a/samples/excel/42-range/range-get-range-edge.yaml +++ b/samples/excel/42-range/range-get-range-edge.yaml @@ -219,7 +219,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-hyperlink.yaml b/samples/excel/42-range/range-hyperlink.yaml index fec482f26..74d0b975d 100644 --- a/samples/excel/42-range/range-hyperlink.yaml +++ b/samples/excel/42-range/range-hyperlink.yaml @@ -314,7 +314,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-merged-ranges.yaml b/samples/excel/42-range/range-merged-ranges.yaml index a9b0e4cfa..9f38bbbb6 100644 --- a/samples/excel/42-range/range-merged-ranges.yaml +++ b/samples/excel/42-range/range-merged-ranges.yaml @@ -126,7 +126,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-relationships.yaml b/samples/excel/42-range/range-relationships.yaml index 443b66d5d..3c02d9d80 100644 --- a/samples/excel/42-range/range-relationships.yaml +++ b/samples/excel/42-range/range-relationships.yaml @@ -249,7 +249,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-remove-duplicates.yaml b/samples/excel/42-range/range-remove-duplicates.yaml index fb5a10d5c..e2a182d4a 100644 --- a/samples/excel/42-range/range-remove-duplicates.yaml +++ b/samples/excel/42-range/range-remove-duplicates.yaml @@ -120,7 +120,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/range-text-orientation.yaml b/samples/excel/42-range/range-text-orientation.yaml index b11747de3..9c6cc34ae 100644 --- a/samples/excel/42-range/range-text-orientation.yaml +++ b/samples/excel/42-range/range-text-orientation.yaml @@ -114,7 +114,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/selected-range.yaml b/samples/excel/42-range/selected-range.yaml index 3c1bb8016..de07de00d 100644 --- a/samples/excel/42-range/selected-range.yaml +++ b/samples/excel/42-range/selected-range.yaml @@ -74,7 +74,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/set-get-values.yaml b/samples/excel/42-range/set-get-values.yaml index b4534894e..c6647d0ca 100644 --- a/samples/excel/42-range/set-get-values.yaml +++ b/samples/excel/42-range/set-get-values.yaml @@ -231,7 +231,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/style.yaml b/samples/excel/42-range/style.yaml index 48378cd3d..f322a2d58 100644 --- a/samples/excel/42-range/style.yaml +++ b/samples/excel/42-range/style.yaml @@ -222,7 +222,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/42-range/used-range.yaml b/samples/excel/42-range/used-range.yaml index 670065580..542ddab5b 100644 --- a/samples/excel/42-range/used-range.yaml +++ b/samples/excel/42-range/used-range.yaml @@ -136,7 +136,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/44-shape/shape-create-and-delete.yaml b/samples/excel/44-shape/shape-create-and-delete.yaml index f5c3114e9..524efc7d6 100644 --- a/samples/excel/44-shape/shape-create-and-delete.yaml +++ b/samples/excel/44-shape/shape-create-and-delete.yaml @@ -129,7 +129,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/44-shape/shape-groups.yaml b/samples/excel/44-shape/shape-groups.yaml index 6d8c12dac..743bac069 100644 --- a/samples/excel/44-shape/shape-groups.yaml +++ b/samples/excel/44-shape/shape-groups.yaml @@ -144,7 +144,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/44-shape/shape-images.yaml b/samples/excel/44-shape/shape-images.yaml index 3deaa5f4a..e02210f49 100644 --- a/samples/excel/44-shape/shape-images.yaml +++ b/samples/excel/44-shape/shape-images.yaml @@ -128,7 +128,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/44-shape/shape-lines.yaml b/samples/excel/44-shape/shape-lines.yaml index f5010b2db..396bdf0b5 100644 --- a/samples/excel/44-shape/shape-lines.yaml +++ b/samples/excel/44-shape/shape-lines.yaml @@ -218,7 +218,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/44-shape/shape-move-and-order.yaml b/samples/excel/44-shape/shape-move-and-order.yaml index e904b5b21..a5e6c3d1b 100644 --- a/samples/excel/44-shape/shape-move-and-order.yaml +++ b/samples/excel/44-shape/shape-move-and-order.yaml @@ -159,7 +159,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/44-shape/shape-textboxes.yaml b/samples/excel/44-shape/shape-textboxes.yaml index 81dedd58f..12e7bcdee 100644 --- a/samples/excel/44-shape/shape-textboxes.yaml +++ b/samples/excel/44-shape/shape-textboxes.yaml @@ -134,7 +134,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml index 1488d6253..14d38ec3d 100644 --- a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml +++ b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml @@ -166,7 +166,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/convert-range-to-table.yaml b/samples/excel/46-table/convert-range-to-table.yaml index 73a077454..c0e31603c 100644 --- a/samples/excel/46-table/convert-range-to-table.yaml +++ b/samples/excel/46-table/convert-range-to-table.yaml @@ -92,7 +92,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/create-table.yaml b/samples/excel/46-table/create-table.yaml index 72f212113..2b4f00bc9 100644 --- a/samples/excel/46-table/create-table.yaml +++ b/samples/excel/46-table/create-table.yaml @@ -77,7 +77,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/filter-data.yaml b/samples/excel/46-table/filter-data.yaml index 6cf709b48..e55d41ca1 100644 --- a/samples/excel/46-table/filter-data.yaml +++ b/samples/excel/46-table/filter-data.yaml @@ -123,7 +123,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/formatting.yaml b/samples/excel/46-table/formatting.yaml index 88b9e10d7..87e629d4f 100644 --- a/samples/excel/46-table/formatting.yaml +++ b/samples/excel/46-table/formatting.yaml @@ -99,7 +99,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/get-data-from-table.yaml b/samples/excel/46-table/get-data-from-table.yaml index 40fac42d1..7620680aa 100644 --- a/samples/excel/46-table/get-data-from-table.yaml +++ b/samples/excel/46-table/get-data-from-table.yaml @@ -114,7 +114,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml index b3458cfe4..33af4d50e 100644 --- a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml +++ b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml @@ -137,7 +137,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/import-json-data.yaml b/samples/excel/46-table/import-json-data.yaml index 8e2a842f9..35786a451 100644 --- a/samples/excel/46-table/import-json-data.yaml +++ b/samples/excel/46-table/import-json-data.yaml @@ -140,7 +140,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/resize-table.yaml b/samples/excel/46-table/resize-table.yaml index 162c4d06f..dd3dbec90 100644 --- a/samples/excel/46-table/resize-table.yaml +++ b/samples/excel/46-table/resize-table.yaml @@ -95,7 +95,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/46-table/sort-data.yaml b/samples/excel/46-table/sort-data.yaml index dc15959d7..59213a2c2 100644 --- a/samples/excel/46-table/sort-data.yaml +++ b/samples/excel/46-table/sort-data.yaml @@ -106,7 +106,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/create-get-change-delete-settings.yaml b/samples/excel/50-workbook/create-get-change-delete-settings.yaml index 043315cea..51f102ebf 100644 --- a/samples/excel/50-workbook/create-get-change-delete-settings.yaml +++ b/samples/excel/50-workbook/create-get-change-delete-settings.yaml @@ -108,7 +108,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/create-workbook.yaml b/samples/excel/50-workbook/create-workbook.yaml index c9d152dbf..e3df092fb 100644 --- a/samples/excel/50-workbook/create-workbook.yaml +++ b/samples/excel/50-workbook/create-workbook.yaml @@ -79,7 +79,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/culture-info-date-time.yaml b/samples/excel/50-workbook/culture-info-date-time.yaml index 9ba369860..d460268f5 100644 --- a/samples/excel/50-workbook/culture-info-date-time.yaml +++ b/samples/excel/50-workbook/culture-info-date-time.yaml @@ -132,7 +132,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/culture-info.yaml b/samples/excel/50-workbook/culture-info.yaml index f7526946b..92c0950c2 100644 --- a/samples/excel/50-workbook/culture-info.yaml +++ b/samples/excel/50-workbook/culture-info.yaml @@ -146,7 +146,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/data-protection.yaml b/samples/excel/50-workbook/data-protection.yaml index 4ddaf5ab5..a1156ca55 100644 --- a/samples/excel/50-workbook/data-protection.yaml +++ b/samples/excel/50-workbook/data-protection.yaml @@ -252,7 +252,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/workbook-built-in-functions.yaml b/samples/excel/50-workbook/workbook-built-in-functions.yaml index 8a33f3e3f..e3a260e1c 100644 --- a/samples/excel/50-workbook/workbook-built-in-functions.yaml +++ b/samples/excel/50-workbook/workbook-built-in-functions.yaml @@ -114,7 +114,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/workbook-calculation.yaml b/samples/excel/50-workbook/workbook-calculation.yaml index fb4967455..5c19fab32 100644 --- a/samples/excel/50-workbook/workbook-calculation.yaml +++ b/samples/excel/50-workbook/workbook-calculation.yaml @@ -187,7 +187,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/workbook-get-active-cell.yaml b/samples/excel/50-workbook/workbook-get-active-cell.yaml index ab987ccbd..3d452bd3c 100644 --- a/samples/excel/50-workbook/workbook-get-active-cell.yaml +++ b/samples/excel/50-workbook/workbook-get-active-cell.yaml @@ -60,7 +60,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml index f6cbe45f0..04b0599b4 100644 --- a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml +++ b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml @@ -88,7 +88,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/50-workbook/workbook-save-and-close.yaml b/samples/excel/50-workbook/workbook-save-and-close.yaml index c4ff5885f..c2bf8e546 100644 --- a/samples/excel/50-workbook/workbook-save-and-close.yaml +++ b/samples/excel/50-workbook/workbook-save-and-close.yaml @@ -82,7 +82,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/active-worksheet.yaml b/samples/excel/54-worksheet/active-worksheet.yaml index ca4ddcf49..7cf4c4c3b 100644 --- a/samples/excel/54-worksheet/active-worksheet.yaml +++ b/samples/excel/54-worksheet/active-worksheet.yaml @@ -119,7 +119,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml index 14f48f6f8..2bc16606d 100644 --- a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml +++ b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml @@ -138,7 +138,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/gridlines.yaml b/samples/excel/54-worksheet/gridlines.yaml index 167fca8ec..a33001240 100644 --- a/samples/excel/54-worksheet/gridlines.yaml +++ b/samples/excel/54-worksheet/gridlines.yaml @@ -73,7 +73,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/list-worksheets.yaml b/samples/excel/54-worksheet/list-worksheets.yaml index 9f41e12f4..82cf87258 100644 --- a/samples/excel/54-worksheet/list-worksheets.yaml +++ b/samples/excel/54-worksheet/list-worksheets.yaml @@ -66,7 +66,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml index 87a38faa2..686ff762f 100644 --- a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml +++ b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -157,7 +157,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/tab-color.yaml b/samples/excel/54-worksheet/tab-color.yaml index e4ebf005a..8c0b98681 100644 --- a/samples/excel/54-worksheet/tab-color.yaml +++ b/samples/excel/54-worksheet/tab-color.yaml @@ -102,7 +102,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/worksheet-auto-filter.yaml b/samples/excel/54-worksheet/worksheet-auto-filter.yaml index bc98cb85e..c3659372e 100644 --- a/samples/excel/54-worksheet/worksheet-auto-filter.yaml +++ b/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -207,7 +207,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/worksheet-copy.yaml b/samples/excel/54-worksheet/worksheet-copy.yaml index 5a699a751..3e69dfe43 100644 --- a/samples/excel/54-worksheet/worksheet-copy.yaml +++ b/samples/excel/54-worksheet/worksheet-copy.yaml @@ -98,7 +98,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/worksheet-find-all.yaml b/samples/excel/54-worksheet/worksheet-find-all.yaml index 053bad9b0..f41caa788 100644 --- a/samples/excel/54-worksheet/worksheet-find-all.yaml +++ b/samples/excel/54-worksheet/worksheet-find-all.yaml @@ -140,7 +140,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/worksheet-freeze-panes.yaml b/samples/excel/54-worksheet/worksheet-freeze-panes.yaml index 18cfb5237..94395c76e 100644 --- a/samples/excel/54-worksheet/worksheet-freeze-panes.yaml +++ b/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -172,7 +172,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/worksheet-page-layout.yaml b/samples/excel/54-worksheet/worksheet-page-layout.yaml index 8f14bcb14..597ad0518 100644 --- a/samples/excel/54-worksheet/worksheet-page-layout.yaml +++ b/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -203,7 +203,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/worksheet-range-cell.yaml b/samples/excel/54-worksheet/worksheet-range-cell.yaml index 96c0319e2..b9a2c8040 100644 --- a/samples/excel/54-worksheet/worksheet-range-cell.yaml +++ b/samples/excel/54-worksheet/worksheet-range-cell.yaml @@ -143,7 +143,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/54-worksheet/worksheet-visibility.yaml b/samples/excel/54-worksheet/worksheet-visibility.yaml index f1c6845c4..821aa6009 100644 --- a/samples/excel/54-worksheet/worksheet-visibility.yaml +++ b/samples/excel/54-worksheet/worksheet-visibility.yaml @@ -118,7 +118,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/90-scenarios/currency-converter.yaml b/samples/excel/90-scenarios/currency-converter.yaml index 59daa071b..f5cf82a87 100644 --- a/samples/excel/90-scenarios/currency-converter.yaml +++ b/samples/excel/90-scenarios/currency-converter.yaml @@ -182,7 +182,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/90-scenarios/multiple-property-set.yaml b/samples/excel/90-scenarios/multiple-property-set.yaml index 9d005cbe6..7efba6254 100644 --- a/samples/excel/90-scenarios/multiple-property-set.yaml +++ b/samples/excel/90-scenarios/multiple-property-set.yaml @@ -130,7 +130,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/90-scenarios/performance-optimization.yaml b/samples/excel/90-scenarios/performance-optimization.yaml index bfbc05da3..e18915c09 100644 --- a/samples/excel/90-scenarios/performance-optimization.yaml +++ b/samples/excel/90-scenarios/performance-optimization.yaml @@ -185,7 +185,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/90-scenarios/report-generation.yaml b/samples/excel/90-scenarios/report-generation.yaml index 20b150b8e..5a5da5e99 100644 --- a/samples/excel/90-scenarios/report-generation.yaml +++ b/samples/excel/90-scenarios/report-generation.yaml @@ -145,7 +145,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/90-scenarios/working-with-dates.yaml b/samples/excel/90-scenarios/working-with-dates.yaml index 9878a372d..cf7563e58 100644 --- a/samples/excel/90-scenarios/working-with-dates.yaml +++ b/samples/excel/90-scenarios/working-with-dates.yaml @@ -130,7 +130,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/99-just-for-fun/color-wheel.yaml b/samples/excel/99-just-for-fun/color-wheel.yaml index 4b4f52b0e..6417065de 100644 --- a/samples/excel/99-just-for-fun/color-wheel.yaml +++ b/samples/excel/99-just-for-fun/color-wheel.yaml @@ -145,7 +145,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/99-just-for-fun/gradient.yaml b/samples/excel/99-just-for-fun/gradient.yaml index a82bbd62b..11a3b84fa 100644 --- a/samples/excel/99-just-for-fun/gradient.yaml +++ b/samples/excel/99-just-for-fun/gradient.yaml @@ -211,7 +211,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/99-just-for-fun/path-finder-game.yaml b/samples/excel/99-just-for-fun/path-finder-game.yaml index d0ed350b2..0602b549d 100644 --- a/samples/excel/99-just-for-fun/path-finder-game.yaml +++ b/samples/excel/99-just-for-fun/path-finder-game.yaml @@ -222,7 +222,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/99-just-for-fun/patterns.yaml b/samples/excel/99-just-for-fun/patterns.yaml index 37266ccc2..e29e1f0a0 100644 --- a/samples/excel/99-just-for-fun/patterns.yaml +++ b/samples/excel/99-just-for-fun/patterns.yaml @@ -189,7 +189,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/99-just-for-fun/tetrominos.yaml b/samples/excel/99-just-for-fun/tetrominos.yaml index f8c88d412..7f025bfd2 100644 --- a/samples/excel/99-just-for-fun/tetrominos.yaml +++ b/samples/excel/99-just-for-fun/tetrominos.yaml @@ -785,7 +785,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/excel/default.yaml b/samples/excel/default.yaml index e8a58676c..27bfc38f6 100644 --- a/samples/excel/default.yaml +++ b/samples/excel/default.yaml @@ -50,7 +50,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/onenote/default.yaml b/samples/onenote/default.yaml index 0382801b7..6c419de50 100644 --- a/samples/onenote/default.yaml +++ b/samples/onenote/default.yaml @@ -48,7 +48,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/10-roaming-settings/roaming-settings.yaml b/samples/outlook/10-roaming-settings/roaming-settings.yaml index 9eb635514..30d3b22fa 100644 --- a/samples/outlook/10-roaming-settings/roaming-settings.yaml +++ b/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -76,7 +76,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml index 1c8c4e79c..c772c4025 100644 --- a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml +++ b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -128,7 +128,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/20-item-body/add-inline-base64-image.yaml b/samples/outlook/20-item-body/add-inline-base64-image.yaml index b86169eed..11074d407 100644 --- a/samples/outlook/20-item-body/add-inline-base64-image.yaml +++ b/samples/outlook/20-item-body/add-inline-base64-image.yaml @@ -69,7 +69,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/20-item-body/append-text-on-send.yaml b/samples/outlook/20-item-body/append-text-on-send.yaml index 7cdda638f..e768d32a4 100644 --- a/samples/outlook/20-item-body/append-text-on-send.yaml +++ b/samples/outlook/20-item-body/append-text-on-send.yaml @@ -66,7 +66,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/20-item-body/get-body-format.yaml b/samples/outlook/20-item-body/get-body-format.yaml index ef8e58cd1..af52a05ae 100644 --- a/samples/outlook/20-item-body/get-body-format.yaml +++ b/samples/outlook/20-item-body/get-body-format.yaml @@ -49,7 +49,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/20-item-body/get-selected-data.yaml b/samples/outlook/20-item-body/get-selected-data.yaml index dc6ea3ce2..0aee0b8f7 100644 --- a/samples/outlook/20-item-body/get-selected-data.yaml +++ b/samples/outlook/20-item-body/get-selected-data.yaml @@ -50,7 +50,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/20-item-body/prepend-text-on-send.yaml b/samples/outlook/20-item-body/prepend-text-on-send.yaml index 9e7fa7f1b..f20f8639d 100644 --- a/samples/outlook/20-item-body/prepend-text-on-send.yaml +++ b/samples/outlook/20-item-body/prepend-text-on-send.yaml @@ -66,7 +66,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml index 0875e7129..ab8438edf 100644 --- a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml +++ b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml @@ -68,7 +68,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/20-item-body/replace-selected-text.yaml b/samples/outlook/20-item-body/replace-selected-text.yaml index 568298014..06ea6cb38 100644 --- a/samples/outlook/20-item-body/replace-selected-text.yaml +++ b/samples/outlook/20-item-body/replace-selected-text.yaml @@ -72,7 +72,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/25-item-save-and-close/close-async.yaml b/samples/outlook/25-item-save-and-close/close-async.yaml index f308763c8..674ab7b12 100644 --- a/samples/outlook/25-item-save-and-close/close-async.yaml +++ b/samples/outlook/25-item-save-and-close/close-async.yaml @@ -51,7 +51,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/25-item-save-and-close/close.yaml b/samples/outlook/25-item-save-and-close/close.yaml index f0b8c091c..daec136ae 100644 --- a/samples/outlook/25-item-save-and-close/close.yaml +++ b/samples/outlook/25-item-save-and-close/close.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/25-item-save-and-close/save.yaml b/samples/outlook/25-item-save-and-close/save.yaml index 5493cfdf4..cc5e032c8 100644 --- a/samples/outlook/25-item-save-and-close/save.yaml +++ b/samples/outlook/25-item-save-and-close/save.yaml @@ -47,7 +47,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml index 98823ed82..a586403fb 100644 --- a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml @@ -118,7 +118,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml index 9a4ea06dd..c09157c3a 100644 --- a/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml @@ -45,7 +45,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml index accfe94c9..f36fb67a2 100644 --- a/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml @@ -48,7 +48,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml index b65ad8dda..3cf67cb86 100644 --- a/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml @@ -43,7 +43,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml index 0e969a6e9..fed07d770 100644 --- a/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml @@ -51,7 +51,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml index 079248e48..3bedc8929 100644 --- a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml @@ -42,7 +42,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml index 647c5e16a..155db1b15 100644 --- a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml @@ -48,7 +48,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml index aa144d4cd..74b2f4227 100644 --- a/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml @@ -51,7 +51,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml index 699e365f4..4d92516ef 100644 --- a/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml @@ -42,7 +42,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml index 6e12ea844..7f945e4ab 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml @@ -73,7 +73,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml index 6bd62eed1..5d183929f 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml @@ -73,7 +73,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml index ff8c64b47..6b487a1d6 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml @@ -79,7 +79,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml index bfc67f95f..c6d80e8e3 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml @@ -79,7 +79,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml index 5155be62d..beba09e5e 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml @@ -73,7 +73,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml index 3713a6a14..67512875c 100644 --- a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml @@ -80,7 +80,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/35-notifications/add-getall-remove.yaml b/samples/outlook/35-notifications/add-getall-remove.yaml index c76c00564..2bbec1504 100644 --- a/samples/outlook/35-notifications/add-getall-remove.yaml +++ b/samples/outlook/35-notifications/add-getall-remove.yaml @@ -192,7 +192,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/40-attachments/attachments-compose.yaml b/samples/outlook/40-attachments/attachments-compose.yaml index b09a9bcb3..c557d2757 100644 --- a/samples/outlook/40-attachments/attachments-compose.yaml +++ b/samples/outlook/40-attachments/attachments-compose.yaml @@ -158,7 +158,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/40-attachments/get-attachment-content.yaml b/samples/outlook/40-attachments/get-attachment-content.yaml index fa30b735c..5cd62d50f 100644 --- a/samples/outlook/40-attachments/get-attachment-content.yaml +++ b/samples/outlook/40-attachments/get-attachment-content.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/40-attachments/get-attachments-read.yaml b/samples/outlook/40-attachments/get-attachments-read.yaml index ce46b045d..b2a2f60ff 100644 --- a/samples/outlook/40-attachments/get-attachments-read.yaml +++ b/samples/outlook/40-attachments/get-attachments-read.yaml @@ -41,7 +41,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/45-categories/work-with-categories.yaml b/samples/outlook/45-categories/work-with-categories.yaml index 1627d760b..1a27e0edc 100644 --- a/samples/outlook/45-categories/work-with-categories.yaml +++ b/samples/outlook/45-categories/work-with-categories.yaml @@ -109,7 +109,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/45-categories/work-with-master-categories.yaml b/samples/outlook/45-categories/work-with-master-categories.yaml index 7cc730cfe..affc0154f 100644 --- a/samples/outlook/45-categories/work-with-master-categories.yaml +++ b/samples/outlook/45-categories/work-with-master-categories.yaml @@ -89,7 +89,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/50-recurrence/get-recurrence-read.yaml b/samples/outlook/50-recurrence/get-recurrence-read.yaml index 592a0e7e4..d2565b90f 100644 --- a/samples/outlook/50-recurrence/get-recurrence-read.yaml +++ b/samples/outlook/50-recurrence/get-recurrence-read.yaml @@ -49,7 +49,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/50-recurrence/get-series-id.yaml b/samples/outlook/50-recurrence/get-series-id.yaml index de482c80a..cf975f140 100644 --- a/samples/outlook/50-recurrence/get-series-id.yaml +++ b/samples/outlook/50-recurrence/get-series-id.yaml @@ -48,7 +48,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml b/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml index c710d26bd..3a6061e37 100644 --- a/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml +++ b/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -93,7 +93,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/55-display-items/display-existing-appointment.yaml b/samples/outlook/55-display-items/display-existing-appointment.yaml index 676d08577..570791575 100644 --- a/samples/outlook/55-display-items/display-existing-appointment.yaml +++ b/samples/outlook/55-display-items/display-existing-appointment.yaml @@ -62,7 +62,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/55-display-items/display-existing-message.yaml b/samples/outlook/55-display-items/display-existing-message.yaml index 78837a042..afebe6f63 100644 --- a/samples/outlook/55-display-items/display-existing-message.yaml +++ b/samples/outlook/55-display-items/display-existing-message.yaml @@ -62,7 +62,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/55-display-items/display-new-appointment.yaml b/samples/outlook/55-display-items/display-new-appointment.yaml index 122a64606..60c7f18ef 100644 --- a/samples/outlook/55-display-items/display-new-appointment.yaml +++ b/samples/outlook/55-display-items/display-new-appointment.yaml @@ -82,7 +82,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/55-display-items/display-new-message.yaml b/samples/outlook/55-display-items/display-new-message.yaml index 3cc7c4a23..2cb258e7c 100644 --- a/samples/outlook/55-display-items/display-new-message.yaml +++ b/samples/outlook/55-display-items/display-new-message.yaml @@ -81,7 +81,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/55-display-items/display-reply-forms.yaml b/samples/outlook/55-display-items/display-reply-forms.yaml index e3ab6a78a..ace941dc9 100644 --- a/samples/outlook/55-display-items/display-reply-forms.yaml +++ b/samples/outlook/55-display-items/display-reply-forms.yaml @@ -74,7 +74,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/55-display-items/display-reply-with-attachments.yaml b/samples/outlook/55-display-items/display-reply-with-attachments.yaml index c0e1636b1..1163b5954 100644 --- a/samples/outlook/55-display-items/display-reply-with-attachments.yaml +++ b/samples/outlook/55-display-items/display-reply-with-attachments.yaml @@ -75,7 +75,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/60-sensitivity-label/sensitivity-label.yaml b/samples/outlook/60-sensitivity-label/sensitivity-label.yaml index 93d0c8d6e..6d2b1206c 100644 --- a/samples/outlook/60-sensitivity-label/sensitivity-label.yaml +++ b/samples/outlook/60-sensitivity-label/sensitivity-label.yaml @@ -88,7 +88,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml b/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml index 6784a4f01..8dee81ff0 100644 --- a/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml +++ b/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml @@ -71,7 +71,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml index 40b854420..dccbb1d83 100644 --- a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml +++ b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -54,7 +54,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml index d68f00e9b..af91e6505 100644 --- a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml +++ b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml @@ -62,7 +62,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml index 03acb511b..9b93155a8 100644 --- a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml +++ b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -93,7 +93,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/75-regex-matches/contextual.yaml b/samples/outlook/75-regex-matches/contextual.yaml index 468f2361c..40918affc 100644 --- a/samples/outlook/75-regex-matches/contextual.yaml +++ b/samples/outlook/75-regex-matches/contextual.yaml @@ -79,7 +79,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml index 29844b3c0..8b2cf4938 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml +++ b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml @@ -72,7 +72,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml index fa894d07a..8ac65f4b0 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml +++ b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml @@ -76,7 +76,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml b/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml index 3554d5389..d7b4df2ac 100644 --- a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml +++ b/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml @@ -55,7 +55,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml index c884b2be9..df2c26980 100644 --- a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml @@ -61,7 +61,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml index 7c8d56692..227e2cd0b 100644 --- a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml @@ -64,7 +64,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml b/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml index c629df0d8..9e342b5f6 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml @@ -52,7 +52,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml b/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml index 5ee1cc96d..169118cd9 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml @@ -51,7 +51,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml index fb2d9add5..b58289c80 100644 --- a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml +++ b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml @@ -109,7 +109,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml index 224dde397..b18fd4901 100644 --- a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml +++ b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml index fe09e4a7e..520c48474 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-conversation-index.yaml b/samples/outlook/90-other-item-apis/get-conversation-index.yaml index dfde09e69..e7f797ce5 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-index.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-index.yaml @@ -55,7 +55,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml b/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml index f9737ec77..f3df0a996 100644 --- a/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml +++ b/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml b/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml index 8f57ec3d9..aa4d4ff5a 100644 --- a/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml +++ b/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml b/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml index df218e563..f38085cd7 100644 --- a/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml +++ b/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml @@ -62,7 +62,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-eml-format.yaml b/samples/outlook/90-other-item-apis/get-eml-format.yaml index bbc644545..befaf386c 100644 --- a/samples/outlook/90-other-item-apis/get-eml-format.yaml +++ b/samples/outlook/90-other-item-apis/get-eml-format.yaml @@ -48,7 +48,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-end-read.yaml b/samples/outlook/90-other-item-apis/get-end-read.yaml index 5ecf03fad..baae2d29a 100644 --- a/samples/outlook/90-other-item-apis/get-end-read.yaml +++ b/samples/outlook/90-other-item-apis/get-end-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-in-reply-to.yaml b/samples/outlook/90-other-item-apis/get-in-reply-to.yaml index 0aa9c286f..305ceb6c0 100644 --- a/samples/outlook/90-other-item-apis/get-in-reply-to.yaml +++ b/samples/outlook/90-other-item-apis/get-in-reply-to.yaml @@ -48,7 +48,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml b/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml index 9ac5c60c4..00cc493ae 100644 --- a/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml +++ b/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-class-async.yaml b/samples/outlook/90-other-item-apis/get-item-class-async.yaml index 6eaa618e9..7f6c6e57c 100644 --- a/samples/outlook/90-other-item-apis/get-item-class-async.yaml +++ b/samples/outlook/90-other-item-apis/get-item-class-async.yaml @@ -50,7 +50,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-class-read.yaml b/samples/outlook/90-other-item-apis/get-item-class-read.yaml index 3ffb5f9d2..dbcf7045c 100644 --- a/samples/outlook/90-other-item-apis/get-item-class-read.yaml +++ b/samples/outlook/90-other-item-apis/get-item-class-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-type.yaml b/samples/outlook/90-other-item-apis/get-item-type.yaml index 2908d7964..1f1395635 100644 --- a/samples/outlook/90-other-item-apis/get-item-type.yaml +++ b/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -47,7 +47,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-location-read.yaml b/samples/outlook/90-other-item-apis/get-location-read.yaml index 527a6c6a1..cc8bb5694 100644 --- a/samples/outlook/90-other-item-apis/get-location-read.yaml +++ b/samples/outlook/90-other-item-apis/get-location-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-message-properties.yaml b/samples/outlook/90-other-item-apis/get-message-properties.yaml index 823aef4f9..3e97154ed 100644 --- a/samples/outlook/90-other-item-apis/get-message-properties.yaml +++ b/samples/outlook/90-other-item-apis/get-message-properties.yaml @@ -69,7 +69,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml b/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml index ae9463b04..19e517b81 100644 --- a/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml +++ b/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml index 7f6406320..1c926f13f 100644 --- a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml @@ -69,7 +69,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml index a1bb80b59..1f787673e 100644 --- a/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml @@ -61,7 +61,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml b/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml index 5599e3f12..cc9182936 100644 --- a/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml +++ b/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml @@ -66,7 +66,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml index 67c349a94..83eb6cadb 100644 --- a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml @@ -62,7 +62,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml b/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml index 7d9a57941..8a3b2ed7b 100644 --- a/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml +++ b/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml @@ -61,7 +61,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-start-read.yaml b/samples/outlook/90-other-item-apis/get-start-read.yaml index c6c9a3e46..8e4aef094 100644 --- a/samples/outlook/90-other-item-apis/get-start-read.yaml +++ b/samples/outlook/90-other-item-apis/get-start-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/get-subject-read.yaml b/samples/outlook/90-other-item-apis/get-subject-read.yaml index 117129950..ad8357475 100644 --- a/samples/outlook/90-other-item-apis/get-subject-read.yaml +++ b/samples/outlook/90-other-item-apis/get-subject-read.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/item-id-compose.yaml b/samples/outlook/90-other-item-apis/item-id-compose.yaml index 0b01c082b..93cea2473 100644 --- a/samples/outlook/90-other-item-apis/item-id-compose.yaml +++ b/samples/outlook/90-other-item-apis/item-id-compose.yaml @@ -49,7 +49,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/session-data-apis.yaml b/samples/outlook/90-other-item-apis/session-data-apis.yaml index d59ddb9fd..25a93185a 100644 --- a/samples/outlook/90-other-item-apis/session-data-apis.yaml +++ b/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/set-selected-data.yaml b/samples/outlook/90-other-item-apis/set-selected-data.yaml index baa5c050f..196522028 100644 --- a/samples/outlook/90-other-item-apis/set-selected-data.yaml +++ b/samples/outlook/90-other-item-apis/set-selected-data.yaml @@ -48,7 +48,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml index 210aa7e81..7cbaccb5a 100644 --- a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml +++ b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -137,7 +137,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/outlook/default.yaml b/samples/outlook/default.yaml index f338af07c..215d8fa86 100644 --- a/samples/outlook/default.yaml +++ b/samples/outlook/default.yaml @@ -33,7 +33,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/basics/basic-api-call-js.yaml b/samples/powerpoint/basics/basic-api-call-js.yaml index 2a14f6c5d..440196ff2 100644 --- a/samples/powerpoint/basics/basic-api-call-js.yaml +++ b/samples/powerpoint/basics/basic-api-call-js.yaml @@ -60,7 +60,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/basics/basic-api-call-ts.yaml b/samples/powerpoint/basics/basic-api-call-ts.yaml index c63c13f6e..0b3db65ff 100644 --- a/samples/powerpoint/basics/basic-api-call-ts.yaml +++ b/samples/powerpoint/basics/basic-api-call-ts.yaml @@ -60,7 +60,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/basics/basic-common-api-call.yaml b/samples/powerpoint/basics/basic-common-api-call.yaml index 46d295927..869630269 100644 --- a/samples/powerpoint/basics/basic-common-api-call.yaml +++ b/samples/powerpoint/basics/basic-common-api-call.yaml @@ -40,7 +40,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/default.yaml b/samples/powerpoint/default.yaml index e86a53323..7b3f697fc 100644 --- a/samples/powerpoint/default.yaml +++ b/samples/powerpoint/default.yaml @@ -38,7 +38,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/document/create-presentation.yaml b/samples/powerpoint/document/create-presentation.yaml index 481c61256..d2aba3d06 100644 --- a/samples/powerpoint/document/create-presentation.yaml +++ b/samples/powerpoint/document/create-presentation.yaml @@ -73,7 +73,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml index eff37c9dc..37790cb38 100644 --- a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml +++ b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml @@ -61,7 +61,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/images/insert-image.yaml b/samples/powerpoint/images/insert-image.yaml index f0d1912fd..9c4a0af2e 100644 --- a/samples/powerpoint/images/insert-image.yaml +++ b/samples/powerpoint/images/insert-image.yaml @@ -54,7 +54,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/images/insert-svg.yaml b/samples/powerpoint/images/insert-svg.yaml index beb7aa18a..fb17d3eb0 100644 --- a/samples/powerpoint/images/insert-svg.yaml +++ b/samples/powerpoint/images/insert-svg.yaml @@ -58,7 +58,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml index b3b3cc0d3..01b78f9df 100644 --- a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml +++ b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml @@ -222,7 +222,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/shapes/get-set-shapes.yaml b/samples/powerpoint/shapes/get-set-shapes.yaml index 903a7cb70..c7c18a673 100644 --- a/samples/powerpoint/shapes/get-set-shapes.yaml +++ b/samples/powerpoint/shapes/get-set-shapes.yaml @@ -214,7 +214,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/shapes/get-shapes-by-type.yaml b/samples/powerpoint/shapes/get-shapes-by-type.yaml index 593f80644..112edce73 100644 --- a/samples/powerpoint/shapes/get-shapes-by-type.yaml +++ b/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -135,7 +135,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/shapes/shapes.yaml b/samples/powerpoint/shapes/shapes.yaml index e9d57a18a..7310e0336 100644 --- a/samples/powerpoint/shapes/shapes.yaml +++ b/samples/powerpoint/shapes/shapes.yaml @@ -217,7 +217,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/slide-management/add-slides.yaml b/samples/powerpoint/slide-management/add-slides.yaml index e1772d8df..e69f9354f 100644 --- a/samples/powerpoint/slide-management/add-slides.yaml +++ b/samples/powerpoint/slide-management/add-slides.yaml @@ -102,7 +102,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/slide-management/get-set-slides.yaml b/samples/powerpoint/slide-management/get-set-slides.yaml index 208197486..4d359b9d8 100644 --- a/samples/powerpoint/slide-management/get-set-slides.yaml +++ b/samples/powerpoint/slide-management/get-set-slides.yaml @@ -165,7 +165,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/slide-management/get-slide-metadata.yaml b/samples/powerpoint/slide-management/get-slide-metadata.yaml index 446fd639e..f84c6043b 100644 --- a/samples/powerpoint/slide-management/get-slide-metadata.yaml +++ b/samples/powerpoint/slide-management/get-slide-metadata.yaml @@ -46,7 +46,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/slide-management/insert-slides.yaml b/samples/powerpoint/slide-management/insert-slides.yaml index 7816f9633..a8b8d30d0 100644 --- a/samples/powerpoint/slide-management/insert-slides.yaml +++ b/samples/powerpoint/slide-management/insert-slides.yaml @@ -110,7 +110,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/tags/tags.yaml b/samples/powerpoint/tags/tags.yaml index c7ff37dd9..4153e3973 100644 --- a/samples/powerpoint/tags/tags.yaml +++ b/samples/powerpoint/tags/tags.yaml @@ -206,7 +206,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/powerpoint/text/get-set-textrange.yaml b/samples/powerpoint/text/get-set-textrange.yaml index 6a3075502..74659b759 100644 --- a/samples/powerpoint/text/get-set-textrange.yaml +++ b/samples/powerpoint/text/get-set-textrange.yaml @@ -183,7 +183,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/project/basics/basic-common-api-call.yaml b/samples/project/basics/basic-common-api-call.yaml index f41fdb59c..e069060b8 100644 --- a/samples/project/basics/basic-common-api-call.yaml +++ b/samples/project/basics/basic-common-api-call.yaml @@ -31,7 +31,7 @@ style: /* Your style goes here */ language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/project/default.yaml b/samples/project/default.yaml index 6b1016a30..7f5b087a5 100644 --- a/samples/project/default.yaml +++ b/samples/project/default.yaml @@ -38,7 +38,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/01-basics/basic-api-call-es5.yaml b/samples/word/01-basics/basic-api-call-es5.yaml index d903c38f9..0886ad057 100644 --- a/samples/word/01-basics/basic-api-call-es5.yaml +++ b/samples/word/01-basics/basic-api-call-es5.yaml @@ -56,7 +56,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/01-basics/basic-api-call.yaml b/samples/word/01-basics/basic-api-call.yaml index 0fe8313f5..4128b7967 100644 --- a/samples/word/01-basics/basic-api-call.yaml +++ b/samples/word/01-basics/basic-api-call.yaml @@ -57,7 +57,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/01-basics/basic-common-api-call.yaml b/samples/word/01-basics/basic-common-api-call.yaml index f5d73d949..c71ebb2e5 100644 --- a/samples/word/01-basics/basic-common-api-call.yaml +++ b/samples/word/01-basics/basic-common-api-call.yaml @@ -43,7 +43,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/content-control-onadded-event.yaml b/samples/word/10-content-controls/content-control-onadded-event.yaml index 6e700143a..47fd52025 100644 --- a/samples/word/10-content-controls/content-control-onadded-event.yaml +++ b/samples/word/10-content-controls/content-control-onadded-event.yaml @@ -131,7 +131,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml index 727773776..8e7df83e6 100644 --- a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml +++ b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml @@ -149,7 +149,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/content-control-ondeleted-event.yaml b/samples/word/10-content-controls/content-control-ondeleted-event.yaml index 767d4f7aa..535ecd315 100644 --- a/samples/word/10-content-controls/content-control-ondeleted-event.yaml +++ b/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -169,7 +169,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/content-control-onentered-event.yaml b/samples/word/10-content-controls/content-control-onentered-event.yaml index d306cbbed..a1e2e93cb 100644 --- a/samples/word/10-content-controls/content-control-onentered-event.yaml +++ b/samples/word/10-content-controls/content-control-onentered-event.yaml @@ -149,7 +149,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/content-control-onexited-event.yaml b/samples/word/10-content-controls/content-control-onexited-event.yaml index 34bfbba89..242550f03 100644 --- a/samples/word/10-content-controls/content-control-onexited-event.yaml +++ b/samples/word/10-content-controls/content-control-onexited-event.yaml @@ -150,7 +150,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml index 9b628a304..7f04b743d 100644 --- a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml +++ b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml @@ -148,7 +148,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/get-change-tracking-states.yaml b/samples/word/10-content-controls/get-change-tracking-states.yaml index 928ae2f78..59c3e7901 100644 --- a/samples/word/10-content-controls/get-change-tracking-states.yaml +++ b/samples/word/10-content-controls/get-change-tracking-states.yaml @@ -162,7 +162,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml b/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml index 5c0d11a97..b0c0589e3 100644 --- a/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -235,7 +235,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml index 91c6cb700..a0660bfaf 100644 --- a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -317,7 +317,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/insert-and-change-content-controls.yaml b/samples/word/10-content-controls/insert-and-change-content-controls.yaml index 28d1abfee..ae89ef06a 100644 --- a/samples/word/10-content-controls/insert-and-change-content-controls.yaml +++ b/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -138,7 +138,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml index d4d9282d6..cb99d13e3 100644 --- a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -319,7 +319,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/15-images/insert-and-get-pictures.yaml b/samples/word/15-images/insert-and-get-pictures.yaml index 5cf88581c..1c3c3e08a 100644 --- a/samples/word/15-images/insert-and-get-pictures.yaml +++ b/samples/word/15-images/insert-and-get-pictures.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/20-lists/insert-list.yaml b/samples/word/20-lists/insert-list.yaml index 362f4c5bd..22237ea74 100644 --- a/samples/word/20-lists/insert-list.yaml +++ b/samples/word/20-lists/insert-list.yaml @@ -108,7 +108,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/20-lists/manage-list-styles.yaml b/samples/word/20-lists/manage-list-styles.yaml index b6ec1e90b..7816bab24 100644 --- a/samples/word/20-lists/manage-list-styles.yaml +++ b/samples/word/20-lists/manage-list-styles.yaml @@ -106,7 +106,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/20-lists/organize-list.yaml b/samples/word/20-lists/organize-list.yaml index bdae4ea6f..28eaa77ab 100644 --- a/samples/word/20-lists/organize-list.yaml +++ b/samples/word/20-lists/organize-list.yaml @@ -136,7 +136,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml b/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml index 69032b5d5..19cc3ced4 100644 --- a/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml +++ b/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -116,7 +116,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/get-text.yaml b/samples/word/25-paragraph/get-text.yaml index 93914ea3b..ebd2d19e3 100644 --- a/samples/word/25-paragraph/get-text.yaml +++ b/samples/word/25-paragraph/get-text.yaml @@ -96,7 +96,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/get-word-count.yaml b/samples/word/25-paragraph/get-word-count.yaml index 2ff326007..91478aa3f 100644 --- a/samples/word/25-paragraph/get-word-count.yaml +++ b/samples/word/25-paragraph/get-word-count.yaml @@ -123,7 +123,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/insert-formatted-text.yaml b/samples/word/25-paragraph/insert-formatted-text.yaml index a3be43cd4..fc7c89344 100644 --- a/samples/word/25-paragraph/insert-formatted-text.yaml +++ b/samples/word/25-paragraph/insert-formatted-text.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/insert-header-and-footer.yaml b/samples/word/25-paragraph/insert-header-and-footer.yaml index 79af32d30..320453f83 100644 --- a/samples/word/25-paragraph/insert-header-and-footer.yaml +++ b/samples/word/25-paragraph/insert-header-and-footer.yaml @@ -185,7 +185,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/insert-in-different-locations.yaml b/samples/word/25-paragraph/insert-in-different-locations.yaml index 43728f436..8fb6815ce 100644 --- a/samples/word/25-paragraph/insert-in-different-locations.yaml +++ b/samples/word/25-paragraph/insert-in-different-locations.yaml @@ -151,7 +151,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/insert-line-and-page-breaks.yaml b/samples/word/25-paragraph/insert-line-and-page-breaks.yaml index bccf781f3..526be67a2 100644 --- a/samples/word/25-paragraph/insert-line-and-page-breaks.yaml +++ b/samples/word/25-paragraph/insert-line-and-page-breaks.yaml @@ -95,7 +95,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/onadded-event.yaml b/samples/word/25-paragraph/onadded-event.yaml index b1ec4aa9b..40005f4e1 100644 --- a/samples/word/25-paragraph/onadded-event.yaml +++ b/samples/word/25-paragraph/onadded-event.yaml @@ -114,7 +114,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/onchanged-event.yaml b/samples/word/25-paragraph/onchanged-event.yaml index 99eb9b070..e092435e3 100644 --- a/samples/word/25-paragraph/onchanged-event.yaml +++ b/samples/word/25-paragraph/onchanged-event.yaml @@ -116,7 +116,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/ondeleted-event.yaml b/samples/word/25-paragraph/ondeleted-event.yaml index f3f17c979..671d4375d 100644 --- a/samples/word/25-paragraph/ondeleted-event.yaml +++ b/samples/word/25-paragraph/ondeleted-event.yaml @@ -116,7 +116,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/paragraph-properties.yaml b/samples/word/25-paragraph/paragraph-properties.yaml index 3ff8798e3..bdb6cb63b 100644 --- a/samples/word/25-paragraph/paragraph-properties.yaml +++ b/samples/word/25-paragraph/paragraph-properties.yaml @@ -150,7 +150,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/25-paragraph/search.yaml b/samples/word/25-paragraph/search.yaml index 6eb205b34..05a6f12aa 100644 --- a/samples/word/25-paragraph/search.yaml +++ b/samples/word/25-paragraph/search.yaml @@ -113,7 +113,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/30-properties/get-built-in-properties.yaml b/samples/word/30-properties/get-built-in-properties.yaml index 0e9c99c9e..2c2623d67 100644 --- a/samples/word/30-properties/get-built-in-properties.yaml +++ b/samples/word/30-properties/get-built-in-properties.yaml @@ -58,7 +58,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/30-properties/read-write-custom-document-properties.yaml b/samples/word/30-properties/read-write-custom-document-properties.yaml index eac42034c..83b263137 100644 --- a/samples/word/30-properties/read-write-custom-document-properties.yaml +++ b/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -85,7 +85,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/35-ranges/compare-location.yaml b/samples/word/35-ranges/compare-location.yaml index e34701b22..d639dc4df 100644 --- a/samples/word/35-ranges/compare-location.yaml +++ b/samples/word/35-ranges/compare-location.yaml @@ -120,7 +120,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/35-ranges/scroll-to-range.yaml b/samples/word/35-ranges/scroll-to-range.yaml index e7a3c759c..a113fde70 100644 --- a/samples/word/35-ranges/scroll-to-range.yaml +++ b/samples/word/35-ranges/scroll-to-range.yaml @@ -95,7 +95,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/35-ranges/split-words-of-first-paragraph.yaml b/samples/word/35-ranges/split-words-of-first-paragraph.yaml index b01ffe2a0..430b3e437 100644 --- a/samples/word/35-ranges/split-words-of-first-paragraph.yaml +++ b/samples/word/35-ranges/split-words-of-first-paragraph.yaml @@ -95,7 +95,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/40-tables/manage-custom-style.yaml b/samples/word/40-tables/manage-custom-style.yaml index 27508035a..04c59688f 100644 --- a/samples/word/40-tables/manage-custom-style.yaml +++ b/samples/word/40-tables/manage-custom-style.yaml @@ -472,7 +472,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/40-tables/manage-formatting.yaml b/samples/word/40-tables/manage-formatting.yaml index b00988d0e..23b2855b5 100644 --- a/samples/word/40-tables/manage-formatting.yaml +++ b/samples/word/40-tables/manage-formatting.yaml @@ -232,7 +232,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/40-tables/table-cell-access.yaml b/samples/word/40-tables/table-cell-access.yaml index 122a4f1b5..2651321bc 100644 --- a/samples/word/40-tables/table-cell-access.yaml +++ b/samples/word/40-tables/table-cell-access.yaml @@ -81,7 +81,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/compare-documents.yaml b/samples/word/50-document/compare-documents.yaml index 0d77309a9..3293fe2d7 100644 --- a/samples/word/50-document/compare-documents.yaml +++ b/samples/word/50-document/compare-documents.yaml @@ -70,7 +70,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/get-external-styles.yaml b/samples/word/50-document/get-external-styles.yaml index b7bc8fd07..58ca438e6 100644 --- a/samples/word/50-document/get-external-styles.yaml +++ b/samples/word/50-document/get-external-styles.yaml @@ -80,7 +80,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/insert-external-document.yaml b/samples/word/50-document/insert-external-document.yaml index b90258712..88ff98280 100644 --- a/samples/word/50-document/insert-external-document.yaml +++ b/samples/word/50-document/insert-external-document.yaml @@ -118,7 +118,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/insert-section-breaks.yaml b/samples/word/50-document/insert-section-breaks.yaml index 802d400af..17cfcb8e6 100644 --- a/samples/word/50-document/insert-section-breaks.yaml +++ b/samples/word/50-document/insert-section-breaks.yaml @@ -132,7 +132,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-annotations.yaml b/samples/word/50-document/manage-annotations.yaml index 7feb2f49f..608efce9d 100644 --- a/samples/word/50-document/manage-annotations.yaml +++ b/samples/word/50-document/manage-annotations.yaml @@ -355,7 +355,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-body.yaml b/samples/word/50-document/manage-body.yaml index fb22b206b..959431138 100644 --- a/samples/word/50-document/manage-body.yaml +++ b/samples/word/50-document/manage-body.yaml @@ -410,7 +410,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-change-tracking.yaml b/samples/word/50-document/manage-change-tracking.yaml index 58496cd80..c3699f641 100644 --- a/samples/word/50-document/manage-change-tracking.yaml +++ b/samples/word/50-document/manage-change-tracking.yaml @@ -141,7 +141,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-comments.yaml b/samples/word/50-document/manage-comments.yaml index de1e5eeba..b630ddcfd 100644 --- a/samples/word/50-document/manage-comments.yaml +++ b/samples/word/50-document/manage-comments.yaml @@ -298,7 +298,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-custom-xml-part-ns.yaml b/samples/word/50-document/manage-custom-xml-part-ns.yaml index 0ee6ebbae..ba6380115 100644 --- a/samples/word/50-document/manage-custom-xml-part-ns.yaml +++ b/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -300,7 +300,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-custom-xml-part.yaml b/samples/word/50-document/manage-custom-xml-part.yaml index f13e4e813..cfa578145 100644 --- a/samples/word/50-document/manage-custom-xml-part.yaml +++ b/samples/word/50-document/manage-custom-xml-part.yaml @@ -208,7 +208,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-fields.yaml b/samples/word/50-document/manage-fields.yaml index c663ffc3d..b900205d9 100644 --- a/samples/word/50-document/manage-fields.yaml +++ b/samples/word/50-document/manage-fields.yaml @@ -239,7 +239,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-footnotes.yaml b/samples/word/50-document/manage-footnotes.yaml index 85eaa494d..6d714c2ac 100644 --- a/samples/word/50-document/manage-footnotes.yaml +++ b/samples/word/50-document/manage-footnotes.yaml @@ -239,7 +239,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-settings.yaml b/samples/word/50-document/manage-settings.yaml index 1264bfdea..2dc50e3f5 100644 --- a/samples/word/50-document/manage-settings.yaml +++ b/samples/word/50-document/manage-settings.yaml @@ -121,7 +121,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/manage-styles.yaml b/samples/word/50-document/manage-styles.yaml index 95a1ba8d8..daf6afd8c 100644 --- a/samples/word/50-document/manage-styles.yaml +++ b/samples/word/50-document/manage-styles.yaml @@ -341,7 +341,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-tracked-changes.yaml b/samples/word/50-document/manage-tracked-changes.yaml index 908027c8a..31796b541 100644 --- a/samples/word/50-document/manage-tracked-changes.yaml +++ b/samples/word/50-document/manage-tracked-changes.yaml @@ -205,7 +205,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/50-document/save-close.yaml b/samples/word/50-document/save-close.yaml index 2af9a390d..c32ee5cbe 100644 --- a/samples/word/50-document/save-close.yaml +++ b/samples/word/50-document/save-close.yaml @@ -133,7 +133,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/90-scenarios/doc-assembly.yaml b/samples/word/90-scenarios/doc-assembly.yaml index 86d7b6556..1aeeaaf67 100644 --- a/samples/word/90-scenarios/doc-assembly.yaml +++ b/samples/word/90-scenarios/doc-assembly.yaml @@ -165,7 +165,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/90-scenarios/multiple-property-set.yaml b/samples/word/90-scenarios/multiple-property-set.yaml index 41c1674c6..dd87b0b93 100644 --- a/samples/word/90-scenarios/multiple-property-set.yaml +++ b/samples/word/90-scenarios/multiple-property-set.yaml @@ -107,7 +107,7 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css diff --git a/samples/word/default.yaml b/samples/word/default.yaml index cf3c1fbfb..afde4ef92 100644 --- a/samples/word/default.yaml +++ b/samples/word/default.yaml @@ -50,7 +50,7 @@ style: } language: css libraries: | - https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css From 03094039f245d0808f653c2ce42bcf9aa3290ff9 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Thu, 16 Jan 2025 08:37:46 -0800 Subject: [PATCH 11/71] [Word] (Annotations) Need M365 subscription (#958) --- samples/word/50-document/manage-annotations.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/word/50-document/manage-annotations.yaml b/samples/word/50-document/manage-annotations.yaml index 608efce9d..53abf9e82 100644 --- a/samples/word/50-document/manage-annotations.yaml +++ b/samples/word/50-document/manage-annotations.yaml @@ -301,6 +301,7 @@ template: content: |-

This sample demonstrates how to manage annotations and use annotation events.

+

Important: You need a Microsoft 365 subscription in order to use Annotation APIs. See GitHub issue 4953 for more information.

From bd237bfaeccdd37b832ac4e2516e1275e5328063 Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Wed, 22 Jan 2025 15:41:56 -0800 Subject: [PATCH 12/71] [Excel] (Data types) Switch to licensed images (#957) --- .github/images/chili-peppers.jpg | Bin 0 -> 163107 bytes .github/images/crustacean.jpg | Bin 0 -> 240043 bytes .github/images/dried-legume.jpg | Bin 0 -> 276074 bytes .github/images/fruit.jpg | Bin 0 -> 187147 bytes .github/images/green-leaf.jpg | Bin 0 -> 245023 bytes .../data-types-entity-values.yaml | 37 +++++++----------- 6 files changed, 15 insertions(+), 22 deletions(-) create mode 100644 .github/images/chili-peppers.jpg create mode 100644 .github/images/crustacean.jpg create mode 100644 .github/images/dried-legume.jpg create mode 100644 .github/images/fruit.jpg create mode 100644 .github/images/green-leaf.jpg diff --git a/.github/images/chili-peppers.jpg b/.github/images/chili-peppers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4645d4e040c803f237c93fce2a02cb32a4f20882 GIT binary patch literal 163107 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

*x(#R1T5via+$e%v_ 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≦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

vL#>$jZTk$QkdpN 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%0DyTgMNJ4lDYsNIc09a_h5SPNbe3tsAsU7@xkZWbL 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�PR4yF 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

n8K z;ynH51hTME_rC5utL?2PO}f1Cb)SfJdnl}~Y_3WfBp)ome2UJei~-iXOie#wU)}hX z-=*|lm&qSNPY|(@Zm+`9UbbJB$Ijk2x$yr0!;gg;FNB4o$*seGHN>|Bk1iBu%Av<{ zy}DPe_#?);cZoD>J14tFVIYk8V4;Z+^~Z2WL)xMJsqF78?EJ{B?R7YA8R3-MM}|xd z;nkxU*tqUE^{pIAnCApLP=720Y{NY8&RX> zPoTy!EAs=vUlJcxKiih>(?!S)GVC}5k+k!VO8YOt7v3DR@XoE`6LPlKcUI(E?O+he zw;v`tn(*n;3>Zcv+ znD|qwUtG^~;>|%LYgr}xB1JI_#lYH52c=Z_@9@vW{yVh)0EL66#`jk?TOhk_#ia6w z3-b5d?b^IU;l`)p4JP79T_I?!?iN-J_k&}u2T*I%qZrk~-Om32q4RQ-=wkGz%D+87 z1ND2vcADpbyfvii9u-TJ-2rwTNR0K!{_T9v@ef{$R`^BYFAvG4!+$-*etc3&K6qU@ zB}W|hUwZU^hn_I;zln4^YmH}71|2~j2qM7S6d>d4U1qzgd@a!YC41qY7+E|Tlc|Q< zUL%rl=VFu%jmyt&mBUU-GK`l`>c^ppqU)(&sreD&E1wVPnkAow?WBtCSigNO-M=Ud zyzCykdK&dVhrbc7^nD)x07BGRw#{si$3E}*=5nLyiuJ#SU$IWV<4d`&^$U>(og1=3 z$~Ux(zruSA4yL5|q5CRoUkmlU3&ZQG!E*+-lSv?zN-eyQjlwYFsVmdzUh=PpsUK#Y z`u_l5LUH$AA7z}wQ*iEx?d4$_tyx# zODlY=I)*(Bc&3A?>OL30NOikkkt8A*ok-uafK|JS`m6h9#?L}adEiTJM)b1za|Kiz zhsYGy&ef#hSC%OH*vb`XDNlWmn{|JJJ}K}#E8<--U^;!;85-TDRWY6q$)3ON*LC3^ z5^A0io;YKm7tlgo^dfxb<|bRxetzB+g}UHF6XTKHPZwliBxATJ*BjETtH z2ORb_?tT%t)_f1BX8J&Fu0BPTG8Aq7E84s*;2k@}(Ola`%@kUKt4}5}?lbqjNcvZe zgQqMuCy^~rcQI7)7-w2ekCV} zeh^8g=%z`9)P76J67SfqF}v`uj=n7XD%7+;4Au1b1(&TmJy3M$c)0H;tnoI`rq(y8i%%nvaaUFY&wn5$lOkJNwAiGa$iVm~eRd zR(FW(HS3*PJ#y+Y03AW%zPfDDui1>KMi>ruNH{<4@zT8N`b|ei*DU;5p{xDA36#vk zbCyH$jC01!=hGF^r8bv8VLEiRQ0b-okE=c>Uw^VWB>3h`i70*)%0r%4;96yeVPbJ7gngnE)p}ha8d#K z=Dv#X#J&>NwD|4x=^{5)%mfnKHZeM7_-n!kdfj>_Xoo#dJ;c(EUr$M=3<`>Lv;RC{tOm9;0# zzpV{b;U8x;r}bmJ@lK(2;aKN~TU&s!Z~J(OV|gZpvPr{@ymbT&t~jrkJPYGZPgwE1 zQ&`RR8#~Zm*6R2^&m{pOKuA)PC#a z@@iD}cd1G`+go%#k)QU0)^)2WG`(8oETz-Wn+B;AMZDO$0=#^?hvGj9;{0Obc;<+QV0Ni-7A&Sd~sl!jD953^qoH5(c+RD z+dDfLZR3i6Nnr!3w?-f~KJE=()NeFRK0mU3x=TqTG2A3Z9jkF~&T`B?ReT;7k&KQ- za~j^apz5q|^ovN%%a&-K*htOuSpk|$-96q4R4cJ2p*%N`H7=DoFk5BxLIY^^*WWuV@~sN&|_-rSqGQH~2VC<(yN zL7op<<9r>ZNj21(y~{^)Ir`=Ha+RD8#^{gD~B-1?zP{YbmYAa8`xBmbNQ^Wd>uD&JEq_;BtkXuV*dHc0l zL1E`9^<``x;{ybD^S_M$0JFxIG~sx0+cZW>=0GcaBC^Ays;f+zxE`%5@Jq+= z&3kKi4wZK_W)+24#4#YoQZ^d_+rec3;Nvy%e~W$s_}k$JiXhi)+S2mH=9BEwB&u?l zAckIg4m~)o)msZ$JNvBiC4$T_jVLa3eI4Ns5bJ&))onHVO-2|*@+!?NZa;Kf0zB1U z;lT%ij^5Si7hVm!_?11^iFCWuCC#xC7;RWamssSDpbl}*Pny3sd81OwpyRk;Mn*GVMrgkjHU9vHJ|l-$@jaBf6!1-jwz`ef&YMPG%XQAv zp5Juw+OVyGlx(A_?f(D(@4@FZ>P4!{mfBw0dR+D&7vGxJ;4d5@J99O^|JO2QMdwCet{36m@PV#>C&7);i1aq|G0|&SGSJT?R$NMjc z-ZXm)dq1;V>#??(bgd~!*UxV$WKZs)1T?$?KJfdz@VZazo8v8ONAoQ%ty@!-ooy`3 z1WS)DMogscLSjV$<17Fm^Nypd2&0F$w|4F4^71@v&kXUET<~j~zm>as^gMgO-Z=P+ z;oV-}#2y`*d#18=#4nqO$O=Zsi03ht$UF`@5O7Cjru<2=u<=RKHLDGp4A<>@ai`rE z-H9SA<+Qt6O{xeB#~=bmNovjTji#;eqvALAUy4>6S)g+T%v;iSQ;cjLNpKrI1v}!G z+x&Io`-^Q4OH`i9-^!QlYE^AzYi@YaQiU~V?_Xoq z{4Mb3;h%|oDKy#?I+4|doL5r8BagAjo_G(qB9=(mGO(~YRvg!Pr2f-?WzaQmhF&2$ zwwS(hi%E3p+7k(jFe$3F8Xxdmw z1)=D08)@SlAEkW_@w>rI;|~E3iM}7x+9>QUVTSf;SS;~FayGywQP*qXcXs?vIc4tF zRO&mYw~^?m^Wpuy6=t+*-Mb$7@PA*?Wz#Mp(yb)Cn%_*4-(89%N$qYRx#2EUxf>CN zLm(MP0QBqZ+E>E=014Rm63fN*W=m+J-yfL8z$?5Xi5Pi+6OqB;jw``F5_~9wz#0_V zo~3ngx{je^C)o|eE?VB$uIT*OV{WpMl^F#Z_5Q*DY7g1?%$sj*KlnNjEE6-L*cB z_+f9Qcq3f9@cp*0aclj&i8Y0$tsFOY@!b^i;|Q{AkZx0@{1tsGb|#vkUAMSt}mZ~^sRd~(}f(|j1oy4Gtr z^(a4mVn^@wLbUT=;`OJ6jW+3yB4j5O~nx?g)d@|75?&DmJ(_7Uo&Y!yGKeT<3 zCr)OJ>>?%4%30S6eQ{r&{wdcl^?QNf`-@hC?6)k}4DuV9zD_n7Pu^7|?d)V5G;f2n9Y-@|=N+=(Ilv4-J(5U=;1# zq~&p*2sPIaX1&<-M-<^z`_lVN`ZxA!_+g-YKxEVPn~RGmwB179{{ZdwaYV%wP_IPa>5z(UxW0e)Y=IoUmbDR^APNGqQ4c?8aHlqs8R`ks_=XKG#k?h|TfmU(g)Z)AGVBA)g`!yHUzmXd{7>+qHE!Ul)93Hi4#Sb^v|49eUnbUK?W1s@mJW<%9QN>~|R66>vvP4x8G~ z#Qy+_J}uR}OX3|~&feDBNC{zW;ppvz*Do#Xh$grJK7HvLPW!#&MWitz#7e#f#W?VSC-@K-c{21lPfX^)&5U2Df11073Nx2EQ2D@8*joEDUGW+5-N*JP zhOXw;tqiGef2fSW*DlCJcIxL7OAjIB3@~s9OxF?ncxcvM57N97;9IGS+}UY27h*I4 ze4}$LK&yk-cFc@p81G(o9?-=qD{tz@ub6xI2VPsHZ(YAlKc#QZi)S#t@H-KXoklxX zr~EhY$B8wc6WLx_tcxN|4Dq|GW=0MQggj^N_0BQgxsMF^TKiemEp6U6Xr(-exszx+ zTM9ZA>(3oC#eTN_&%XyPR>k#OJ7tE_+EQZFH3>I;j@sRD>AQqDAiIz-56U4;_ z@Do_^cZCvr3vD_pn@wU-ZErY2Wi!X}vfD`?EJ!~zcp%^&F<(x6U-*;o-{Looy79xl`Dygs`ow%a|F(m=vE z=5g~jIQf-M3vti2d1|ET;pIxVQ`z=(>f>RE!@F5@@-sYR;aL6<{?7g&@sGqkE-gai z#sRcFGTQ1--r8J^@*AQywpkQzBw*zNf&t_6YrxkUHNT83<=4u`VAHSKcQGHj9Iz!Y zMsbcY&r1EO{ki@aPvUEa&~ z_=zq2Ss9MzE2vUCW_I(R4H=d;01%mtvN|4l#}(FiAK)&#;qL;&sp}TjsG6}^jKFWZ zjwKjH$l?G`IL_nOj)U}r!pow38u%M|@oDa&x&F+zlkCeYgo!R^`t7n zQoLfF8VjYbOCuL{IKbt}Jv-o6)E^H10Bc8C(`?>53#~%t=gojL$I4W< z8=0jfDtUW{QJj&trFT-pQNiA&^=F@36<;w?r5L26)PurzUm1Qh_kw}o!J6Yx7g(R5pcv(m-T zd)Q)%V%PVnX>LRY@0#D)#fKL^}e{DWkt4GN8+*S&YJl*GQKdy-UY`(R;(siXW z6<5m4tQayJ{J^UMa;LYqTJ@LJz9V19XW*??X{{oP;yb9LR?KT5nIqU{{ za-I?RZ{klEThFR#R?|=AN{A99B<4;*$6x^T=D$!r0Q@}odE);756`F1q(}X=Wv6*C zODh&tRN!okWR}i&;12caVroJ*PR*m{@R(Umx$2|(9KV6S9nW#%v*RBNti~mgB3t=X zrXOwz+`wS<+B*(7uU`G5zi4j-d=b#J?}x*~*1GlO#BOh4y~(mw<0|X}nOvM@6ab^C z>06)hmFZs%eiz*8elygXJtstw9cC2c>+Y@oLM#KOKBrBk;U> zjCU4u@1DZqBuEqOE+a`yzcCy0yJqYt8%`JzUUepuRVKaP>uke zo*j3tr^Xvt;kMJ$OR`kCo@*U4(WkeDP2x<$ztgaeFwkLKr8K+^AOl$q)!lzofwfs2fiJ=z%0DC=j z-_!0qxAw5m?fe_zb@(~p?+a?$qJ4|)O{>{o8wf1r$qe^1DDvNFBN0jR@t&h2@wVef zxQk4@)9$uPZRGoGR}lty<&TJ`*)9NZK1RsTPWAfB@k{oY_|xJ)3V5Nk`%MSJ8a9(0 zFetpU^Yt$><$wXUyF`z-=Ts`~g1)$~%FRPtlTp_!Jk@#Pg$=dM!=pzeqJA7WB#)I& zQ~)qLS6wM<%TCt(j~5y5`_sMu07Hb(EdKzt_3Ldv%4uRUuIQ5iiYd#1p8G+s(2oP? z8c)Li00--qz9-Rgd{t{4T5{Zi%?-S}wmN_h-p?oc3i4lu-vIT=FI!NvytK475r%t< zlw$JC+-$W>bxeP(ZZde{zRizJ(!LycW>1KJ6mD*BFJXxzvU{Jnii2u^nED9OSCVTi zO#Q6lp!7!A3?!*3RjU*K(aiBKpYW#qS=;z`al5;^QM6~}i#+6Z;!AIDk#5a`x^8qzd- zc$P(BBqaG#vX$Y>rcMFv-o2g;drQ$ZZ8B{dbo+IINX!hMAdGNZ)9YWGU$u{d{9oa} ziO5`gby9 zxxzmenMu&)yrR70i6t9h+Hz9NSV!opNoqikWUk5FHikF08C(Y0)-?WqGb%SVk{xY#taPwq`MznC(fV1PlX=W1rH#sQ4v$ z;k|Cjw5@ScPqEsYv|R30X8WU#;=EE@IXqC-I=!mO@#?nGμu7_%uQHVorye+lR- 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

_milGtE8Iwe?RP@IL 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

language: html style: From a034dfc07b4f34366a416a405e04fdf7d06d147d Mon Sep 17 00:00:00 2001 From: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:27:21 -0800 Subject: [PATCH 14/71] Add a sample highlighting the perf benefits of the correlated objects pattern (#959) --- playlists-prod/word.yaml | 9 + playlists/word.yaml | 9 + .../correlated-objects-pattern.yaml | 171 ++++++++++++++++++ view-prod/word.json | 1 + view/word.json | 1 + 5 files changed, 191 insertions(+) create mode 100644 samples/word/90-scenarios/correlated-objects-pattern.yaml diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index 2a5ca8870..0a4b1d017 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -553,6 +553,15 @@ group: Scenarios api_set: WordApi: '1.3' +- id: word-scenarios-correlated-objects-pattern + name: Correlated objects pattern + fileName: correlated-objects-pattern.yaml + description: Shows the performance benefits of avoiding `context.sync` calls in a loop. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/correlated-objects-pattern.yaml + group: Scenarios + api_set: + WordApi: '1.4' - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index 77f149b77..a934f0e69 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -553,6 +553,15 @@ group: Scenarios api_set: WordApi: '1.3' +- id: word-scenarios-correlated-objects-pattern + name: Correlated objects pattern + fileName: correlated-objects-pattern.yaml + description: Shows the performance benefits of avoiding `context.sync` calls in a loop. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/correlated-objects-pattern.yaml + group: Scenarios + api_set: + WordApi: '1.4' - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml diff --git a/samples/word/90-scenarios/correlated-objects-pattern.yaml b/samples/word/90-scenarios/correlated-objects-pattern.yaml new file mode 100644 index 000000000..fa175aa6f --- /dev/null +++ b/samples/word/90-scenarios/correlated-objects-pattern.yaml @@ -0,0 +1,171 @@ +order: 3 +id: word-scenarios-correlated-objects-pattern +name: Correlated objects pattern +description: Shows the performance benefits of avoiding `context.sync` calls in a loop. +author: OfficeDev +host: WORD +api_set: + WordApi: '1.4' +script: + content: | + $("#replace-placeholders").on("click", () => tryCatch(replacePlaceholders)); $("#replace-placeholders-slow").on("click", () => tryCatch(replacePlaceholdersSlow)); $("#setup").on("click", () => tryCatch(setup)); $("#add-lots-of-text").on("click", () => tryCatch(addLotsOfText)); + const jobMapping = [ + { job: "{Coordinator}", person: "Sally" }, + { job: "{Deputy}", person: "Bob" }, + { job: "{Manager}", person: "Kim" } + ]; + async function replacePlaceholders() { + Word.run(async (context) => { + const startTime = Date.now(); + let count = 0; + + // Find the locations of all the placeholder strings. + const allSearchResults = []; + for (let i = 0; i < jobMapping.length; i++) { + let options = Word.SearchOptions.newObject(context); + options.matchWildcards = false; + let searchResults = context.document.body.search(jobMapping[i].job, options); + searchResults.load('items'); + let correlatedSearchResult = { + rangesMatchingJob: searchResults, + personAssignedToJob: jobMapping[i].person + } + allSearchResults.push(correlatedSearchResult); + } + + // Sync to load those locations in the add-in. + await context.sync() + + // Replace the placeholder text at the known locations. + for (let i = 0; i < allSearchResults.length; i++) { + let correlatedObject = allSearchResults[i]; + + for (let j = 0; j < correlatedObject.rangesMatchingJob.items.length; j++) { + let targetRange = correlatedObject.rangesMatchingJob.items[j]; + let name = correlatedObject.personAssignedToJob; + targetRange.insertText(name, Word.InsertLocation.replace); + count++; + } + } + + await context.sync(); + console.log(`Replacing ${count} placeholders with the correlated objects pattern took ${Date.now() - startTime} milliseconds.`); + console.log() + }); + } + async function replacePlaceholdersSlow() { + Word.run(async (context) => { + const startTime = Date.now(); + let count = 0; + + // The context.sync calls in the loops will degrade performance. + for (let i = 0; i < jobMapping.length; i++) { + let options = Word.SearchOptions.newObject(context); + options.matchWildcards = false; + let searchResults = context.document.body.search(jobMapping[i].job, options); + searchResults.load('items'); + + await context.sync(); + + for (let j = 0; j < searchResults.items.length; j++) { + searchResults.items[j].insertText(jobMapping[i].person, Word.InsertLocation.replace); + count++; + await context.sync(); + } + } + console.log(`Replacing ${count} placeholders with in-loop sync statements took ${Date.now() - startTime} milliseconds.`); + }); + } + async function setup(timesToAddText: number = 1) { + await Word.run(async (context) => { + console.log("Setup beginning..."); + const body: Word.Body = context.document.body; + body.clear(); + while (timesToAddText > 0) { + body.insertParagraph( + "This defines the roles of {Coordinator}, {Deputy}, {Manager}.", + Word.InsertLocation.end + ); + body.insertParagraph( + "{Coordinator}: Oversees daily operations and ensures projects run smoothly by coordinating between different teams and resources.", + Word.InsertLocation.end + ); + body.insertParagraph( + "{Deputy}: Assists and supports senior management, often stepping in to make decisions or manage tasks in {Manager}'s absence.", + Word.InsertLocation.end + ); + body.insertParagraph( + "{Manager}: Leads the team, setting goals, planning strategies, and making decisions to achieve organizational objectives.", + Word.InsertLocation.end + ); + timesToAddText--; + } + await context.sync(); + console.log("Setup complete."); + }); + } + async function addLotsOfText() { + // Add the setup text 100 times. + setup(100); + } + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
+

This sample demonstrates the performance optimization gained from the correlated objects pattern. For more information, see Avoid using the context.sync method in loops.

+
+ +
+

Setup

+

Use Setup to create a basic text block with some placeholders. Use More text to create a longer text block to better see performance distinctions.

+ +
+ +
+

Replace placeholder text

+ + +
+ language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: | + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js + + office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + + core-js@2.4.1/client/core.min.js + @types/core-js + + jquery@3.1.1 + @types/jquery@3.3.1 \ No newline at end of file diff --git a/view-prod/word.json b/view-prod/word.json index 7fb26adf6..91af0634e 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -55,6 +55,7 @@ "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/compare-documents.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/multiple-property-set.yaml", + "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/correlated-objects-pattern.yaml", "word-insert-and-change-content-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml", "word-manage-comments": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml" } \ No newline at end of file diff --git a/view/word.json b/view/word.json index e31edb7b7..3d5b2bafa 100644 --- a/view/word.json +++ b/view/word.json @@ -55,6 +55,7 @@ "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/compare-documents.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/multiple-property-set.yaml", + "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/correlated-objects-pattern.yaml", "word-insert-and-change-content-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-content-controls.yaml", "word-manage-comments": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/manage-comments.yaml" } \ No newline at end of file From e9cade9764369bfdc0d4f45d6a5891351ada22ba Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Thu, 20 Feb 2025 10:14:44 -0800 Subject: [PATCH 15/71] [Outlook] (attachment) Update snippet (#962) --- .../20-item-body/add-inline-base64-image.yaml | 81 ++++++---- snippet-extractor-metadata/outlook.xlsx | Bin 24119 -> 24042 bytes snippet-extractor-output/snippets.yaml | 147 +++++++++--------- 3 files changed, 125 insertions(+), 103 deletions(-) diff --git a/samples/outlook/20-item-body/add-inline-base64-image.yaml b/samples/outlook/20-item-body/add-inline-base64-image.yaml index 11074d407..d21f32e66 100644 --- a/samples/outlook/20-item-body/add-inline-base64-image.yaml +++ b/samples/outlook/20-item-body/add-inline-base64-image.yaml @@ -6,38 +6,60 @@ host: OUTLOOK api_set: Mailbox: '1.8' script: - content: | - $("#add-image").on("click", addImage); + content: |- + $("#prepend-image").on("click", prependImage); + $("#append-image").on("click", appendImage); + + const base64String = + "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0S+bUAAAAMdFJOUwAQIDBAUI+fr7/P7yEupu8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVGhD7dfLdoMwDEVR6Cspzf9/b20QYOthS5Zn0Z2kVdY6O2WULrFYLBaLxd5ur4mDZD14b8ogWS/dtxV+dmx9ysA2QUj9TQRWv5D7HyKwuIW9n0vc8tkpHP0W4BOg3wQ8wtlvA+PC1e8Ao8Ld7wFjQtHvAiNC2e8DdqHqKwCrUPc1gE1AfRVgEXBfB+gF0lcCWoH2tYBOYPpqQCNwfT3QF9i+AegJfN8CtAWhbwJagtS3AbIg9o2AJMh9M5C+SVGBvx6zAfmT0r+Bv8JMwP4kyFPir+cswF5KL3WLv14zAFBCLf56Tw9cparFX4upgaJUtPhrOS1QlY5W+vWTXrGgBFB/b72ev3/0igUdQPppP/nfowfKUUEFcP207y/yxKmgAYQ+PywoAFOfCH3A2MdCFzD3kdADBvq10AGG+pXQBgb7pdAEhvuF0AIc/VtoAK7+JciAs38KIuDugyAC/v4hiMCE/i7IwLRBsh68N2WQjMVisVgs9i5bln8LGScNcCrONQAAAABJRU5ErkJggg=="; + + function prependImage() { + // Insert the Base64-encoded image to the beginning of the body. + Office.context.mailbox.item.addFileAttachmentFromBase64Async(base64String, "sample.png", { isInline: true }, (attachmentResult) => { + if (attachmentResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to attach file: ${attachmentResult.error.message}`); + return; + } + + Office.context.mailbox.item.body.prependAsync('', { coercionType: Office.CoercionType.Html }, (prependResult) => { + if (prependResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to prepend image to body: ${attachmentResult.error.message}`); + return; + } - function addImage() { - const mailItem = Office.context.mailbox.item; - const base64String = - "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0S+bUAAAAMdFJOUwAQIDBAUI+fr7/P7yEupu8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVGhD7dfLdoMwDEVR6Cspzf9/b20QYOthS5Zn0Z2kVdY6O2WULrFYLBaLxd5ur4mDZD14b8ogWS/dtxV+dmx9ysA2QUj9TQRWv5D7HyKwuIW9n0vc8tkpHP0W4BOg3wQ8wtlvA+PC1e8Ao8Ld7wFjQtHvAiNC2e8DdqHqKwCrUPc1gE1AfRVgEXBfB+gF0lcCWoH2tYBOYPpqQCNwfT3QF9i+AegJfN8CtAWhbwJagtS3AbIg9o2AJMh9M5C+SVGBvx6zAfmT0r+Bv8JMwP4kyFPir+cswF5KL3WLv14zAFBCLf56Tw9cparFX4upgaJUtPhrOS1QlY5W+vWTXrGgBFB/b72ev3/0igUdQPppP/nfowfKUUEFcP207y/yxKmgAYQ+PywoAFOfCH3A2MdCFzD3kdADBvq10AGG+pXQBgb7pdAEhvuF0AIc/VtoAK7+JciAs38KIuDugyAC/v4hiMCE/i7IwLRBsh68N2WQjMVisVgs9i5bln8LGScNcCrONQAAAABJRU5ErkJggg=="; + console.log("Inline Base64-encoded image added to the beginning of the body."); + }) + }); + } + function appendImage() { // Get the current body of the message or appointment. - mailItem.body.getAsync(Office.CoercionType.Html, (bodyResult) => { - if (bodyResult.status === Office.AsyncResultStatus.Succeeded) { - // Insert the Base64-encoded image to the beginning of the body. - const options = { isInline: true, asyncContext: bodyResult.value }; - mailItem.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { - if (attachResult.status === Office.AsyncResultStatus.Succeeded) { - let body = attachResult.asyncContext; - body = body.replace("

", `

`); + Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html, (bodyResult) => { + if (bodyResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to get body: ${bodyResult.error.message}`); + return; + } + + // Add the Base64-encoded image to the end of the body. + const options = { isInline: true, asyncContext: bodyResult.value }; + Office.context.mailbox.item.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { + if (attachResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to attach file: ${attachResult.error.message}`); + return; + } - mailItem.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { - if (setResult.status === Office.AsyncResultStatus.Succeeded) { - console.log("Inline Base64-encoded image added to the body."); - } else { - console.log(setResult.error.message); - } - }); - } else { - console.log(attachResult.error.message); + let body = attachResult.asyncContext; + body += ''; + + Office.context.mailbox.item.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { + if (setResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to set body: ${setResult.error.message}`); + return; } + + console.log("Inline Base64-encoded image added to the end of the body."); }); - } else { - console.log(bodyResult.error.message); - } + }); }); } language: typescript @@ -50,8 +72,11 @@ template:

Try it out

- +
language: html diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index 837a9fdf5fc4179d358f5a7f1e9361610269070f..f03e7f59d9abc4664be058475d80eedbd9089931 100644 GIT binary patch delta 12005 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 OjBY@U1kw7>i2n~4(zqJ{ delta 12159 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 Qt`*m1K#L@*`=1&AAKpRj1^@s6 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 7a0f38531..e4ad134d2 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -9588,36 +9588,35 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/add-inline-base64-image.yaml - const mailItem = Office.context.mailbox.item; + // Get the current body of the message or appointment. - const base64String = - "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0S+bUAAAAMdFJOUwAQIDBAUI+fr7/P7yEupu8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVGhD7dfLdoMwDEVR6Cspzf9/b20QYOthS5Zn0Z2kVdY6O2WULrFYLBaLxd5ur4mDZD14b8ogWS/dtxV+dmx9ysA2QUj9TQRWv5D7HyKwuIW9n0vc8tkpHP0W4BOg3wQ8wtlvA+PC1e8Ao8Ld7wFjQtHvAiNC2e8DdqHqKwCrUPc1gE1AfRVgEXBfB+gF0lcCWoH2tYBOYPpqQCNwfT3QF9i+AegJfN8CtAWhbwJagtS3AbIg9o2AJMh9M5C+SVGBvx6zAfmT0r+Bv8JMwP4kyFPir+cswF5KL3WLv14zAFBCLf56Tw9cparFX4upgaJUtPhrOS1QlY5W+vWTXrGgBFB/b72ev3/0igUdQPppP/nfowfKUUEFcP207y/yxKmgAYQ+PywoAFOfCH3A2MdCFzD3kdADBvq10AGG+pXQBgb7pdAEhvuF0AIc/VtoAK7+JciAs38KIuDugyAC/v4hiMCE/i7IwLRBsh68N2WQjMVisVgs9i5bln8LGScNcCrONQAAAABJRU5ErkJggg=="; + Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html, + (bodyResult) => { + if (bodyResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to get body: ${bodyResult.error.message}`); + return; + } - // Get the current body of the message or appointment. + // Add the Base64-encoded image to the end of the body. + const options = { isInline: true, asyncContext: bodyResult.value }; + Office.context.mailbox.item.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { + if (attachResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to attach file: ${attachResult.error.message}`); + return; + } - mailItem.body.getAsync(Office.CoercionType.Html, (bodyResult) => { - if (bodyResult.status === Office.AsyncResultStatus.Succeeded) { - // Insert the Base64-encoded image to the beginning of the body. - const options = { isInline: true, asyncContext: bodyResult.value }; - mailItem.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { - if (attachResult.status === Office.AsyncResultStatus.Succeeded) { - let body = attachResult.asyncContext; - body = body.replace("

", `

`); - - mailItem.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { - if (setResult.status === Office.AsyncResultStatus.Succeeded) { - console.log("Inline Base64-encoded image added to the body."); - } else { - console.log(setResult.error.message); - } - }); - } else { - console.log(attachResult.error.message); + let body = attachResult.asyncContext; + body += ''; + + Office.context.mailbox.item.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { + if (setResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to set body: ${setResult.error.message}`); + return; } + + console.log("Inline Base64-encoded image added to the end of the body."); }); - } else { - console.log(bodyResult.error.message); - } + }); }); 'Office.Body#appendOnSendAsync:member(1)': - >- @@ -9656,36 +9655,35 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/add-inline-base64-image.yaml - const mailItem = Office.context.mailbox.item; + // Get the current body of the message or appointment. - const base64String = - "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0S+bUAAAAMdFJOUwAQIDBAUI+fr7/P7yEupu8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVGhD7dfLdoMwDEVR6Cspzf9/b20QYOthS5Zn0Z2kVdY6O2WULrFYLBaLxd5ur4mDZD14b8ogWS/dtxV+dmx9ysA2QUj9TQRWv5D7HyKwuIW9n0vc8tkpHP0W4BOg3wQ8wtlvA+PC1e8Ao8Ld7wFjQtHvAiNC2e8DdqHqKwCrUPc1gE1AfRVgEXBfB+gF0lcCWoH2tYBOYPpqQCNwfT3QF9i+AegJfN8CtAWhbwJagtS3AbIg9o2AJMh9M5C+SVGBvx6zAfmT0r+Bv8JMwP4kyFPir+cswF5KL3WLv14zAFBCLf56Tw9cparFX4upgaJUtPhrOS1QlY5W+vWTXrGgBFB/b72ev3/0igUdQPppP/nfowfKUUEFcP207y/yxKmgAYQ+PywoAFOfCH3A2MdCFzD3kdADBvq10AGG+pXQBgb7pdAEhvuF0AIc/VtoAK7+JciAs38KIuDugyAC/v4hiMCE/i7IwLRBsh68N2WQjMVisVgs9i5bln8LGScNcCrONQAAAABJRU5ErkJggg=="; + Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html, + (bodyResult) => { + if (bodyResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to get body: ${bodyResult.error.message}`); + return; + } - // Get the current body of the message or appointment. + // Add the Base64-encoded image to the end of the body. + const options = { isInline: true, asyncContext: bodyResult.value }; + Office.context.mailbox.item.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { + if (attachResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to attach file: ${attachResult.error.message}`); + return; + } - mailItem.body.getAsync(Office.CoercionType.Html, (bodyResult) => { - if (bodyResult.status === Office.AsyncResultStatus.Succeeded) { - // Insert the Base64-encoded image to the beginning of the body. - const options = { isInline: true, asyncContext: bodyResult.value }; - mailItem.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { - if (attachResult.status === Office.AsyncResultStatus.Succeeded) { - let body = attachResult.asyncContext; - body = body.replace("

", `

`); - - mailItem.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { - if (setResult.status === Office.AsyncResultStatus.Succeeded) { - console.log("Inline Base64-encoded image added to the body."); - } else { - console.log(setResult.error.message); - } - }); - } else { - console.log(attachResult.error.message); + let body = attachResult.asyncContext; + body += ''; + + Office.context.mailbox.item.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { + if (setResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to set body: ${setResult.error.message}`); + return; } + + console.log("Inline Base64-encoded image added to the end of the body."); }); - } else { - console.log(bodyResult.error.message); - } + }); }); 'Office.Body#getTypeAsync:member(1)': - >- @@ -9775,36 +9773,35 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/add-inline-base64-image.yaml - const mailItem = Office.context.mailbox.item; + // Get the current body of the message or appointment. - const base64String = - "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0S+bUAAAAMdFJOUwAQIDBAUI+fr7/P7yEupu8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVGhD7dfLdoMwDEVR6Cspzf9/b20QYOthS5Zn0Z2kVdY6O2WULrFYLBaLxd5ur4mDZD14b8ogWS/dtxV+dmx9ysA2QUj9TQRWv5D7HyKwuIW9n0vc8tkpHP0W4BOg3wQ8wtlvA+PC1e8Ao8Ld7wFjQtHvAiNC2e8DdqHqKwCrUPc1gE1AfRVgEXBfB+gF0lcCWoH2tYBOYPpqQCNwfT3QF9i+AegJfN8CtAWhbwJagtS3AbIg9o2AJMh9M5C+SVGBvx6zAfmT0r+Bv8JMwP4kyFPir+cswF5KL3WLv14zAFBCLf56Tw9cparFX4upgaJUtPhrOS1QlY5W+vWTXrGgBFB/b72ev3/0igUdQPppP/nfowfKUUEFcP207y/yxKmgAYQ+PywoAFOfCH3A2MdCFzD3kdADBvq10AGG+pXQBgb7pdAEhvuF0AIc/VtoAK7+JciAs38KIuDugyAC/v4hiMCE/i7IwLRBsh68N2WQjMVisVgs9i5bln8LGScNcCrONQAAAABJRU5ErkJggg=="; + Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html, + (bodyResult) => { + if (bodyResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to get body: ${bodyResult.error.message}`); + return; + } - // Get the current body of the message or appointment. + // Add the Base64-encoded image to the end of the body. + const options = { isInline: true, asyncContext: bodyResult.value }; + Office.context.mailbox.item.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { + if (attachResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to attach file: ${attachResult.error.message}`); + return; + } - mailItem.body.getAsync(Office.CoercionType.Html, (bodyResult) => { - if (bodyResult.status === Office.AsyncResultStatus.Succeeded) { - // Insert the Base64-encoded image to the beginning of the body. - const options = { isInline: true, asyncContext: bodyResult.value }; - mailItem.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { - if (attachResult.status === Office.AsyncResultStatus.Succeeded) { - let body = attachResult.asyncContext; - body = body.replace("

", `

`); - - mailItem.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { - if (setResult.status === Office.AsyncResultStatus.Succeeded) { - console.log("Inline Base64-encoded image added to the body."); - } else { - console.log(setResult.error.message); - } - }); - } else { - console.log(attachResult.error.message); + let body = attachResult.asyncContext; + body += ''; + + Office.context.mailbox.item.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { + if (setResult.status === Office.AsyncResultStatus.Failed) { + console.log(`Failed to set body: ${setResult.error.message}`); + return; } + + console.log("Inline Base64-encoded image added to the end of the body."); }); - } else { - console.log(bodyResult.error.message); - } + }); }); 'Office.Body#setSelectedDataAsync:member(1)': - >- From e4afc31483f16d478367c088bb8b2ebfbfad038b Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:02:26 -0800 Subject: [PATCH 16/71] [Outlook] (Message Compose) Map code sample (#963) --- snippet-extractor-metadata/outlook.xlsx | Bin 24042 -> 24127 bytes snippet-extractor-output/snippets.yaml | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index f03e7f59d9abc4664be058475d80eedbd9089931..65cbe59013c294ec43d9d6ce5d81063213fe39b0 100644 GIT binary patch delta 15075 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index e4ad134d2..fb8dd6767 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -11582,6 +11582,23 @@ console.log("masterCategories.removeAsync call failed with error: " + asyncResult.error.message); } }); +'Office.MessageCompose:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml + + + const attachmentUrl = $("#attachmentUrl") + .val() + .toString(); + Office.context.mailbox.item.addFileAttachmentAsync( + attachmentUrl, + getFileName(attachmentUrl), + { isInline: false }, + (result) => { + console.log(result); + } + ); 'Office.MessageCompose#addFileAttachmentAsync:member(1)': - >- // Link to full sample: From 864521f9fb6955e24556f574e3dd628ce6b2eb90 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 26 Feb 2025 07:14:56 -0800 Subject: [PATCH 17/71] Note Script Lab size restrictions in readme (#964) --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 07ac86706..a0e9602b7 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ A collection of code snippets built with [Script Lab](//github.com/OfficeDev/scr 1. Clone your fork to your development computer. 1. Ensure that you have Node, version 6.10+, installed. (To check the version run the command `node -v`.) 1. Install `yarn` as a global package `npm install yarn --global`. -1. Be sure your CLI is in the root of the office-js-snippets repo and run `yarn install`. (It is similar to `npm install`.) +1. Be sure your CLI is in the root of the office-js-snippets repo and run `yarn install`. (It's similar to `npm install`.) 1. Set up the original \OfficeDev\office-js-snippets as the upstream repo for your local repo by following the steps in [Configuring a remote for a fork](https://help.github.com/articles/configuring-a-remote-for-a-fork/). 1. If you'll be using Visual Studio Code as your editor, install the [TSLint](https://marketplace.visualstudio.com/items?itemName=eg2.tslint) extension for Visual Studio Code. @@ -22,7 +22,7 @@ A collection of code snippets built with [Script Lab](//github.com/OfficeDev/scr > For the git tasks in this procedure, the instructions assume that you're using a CLI. You are welcome to use a GUI git client. Consult the client's help to learn how to carry out the same tasks. -1. Create a snippet using [Script Lab](https://github.com/OfficeDev/script-lab/blob/master/README.md#what-is). Ensure that the name and description are what you want to be shown publicly. Use standard TypeScript indentation. Improper indentation can cause a failure of the build that you run in a later step. See also the [**Style guidelines**](#style-guidelines) section below. +1. Create a snippet using [Script Lab](https://github.com/OfficeDev/script-lab/blob/master/README.md#what-is). Ensure that the name and description are what you want to be shown publicly. Make sure to keep your snippet small. Use standard TypeScript indentation. Improper indentation can cause a failure of the build that you run in a later step. See also the [**Style guidelines**](#style-guidelines) and [**Size restrictions**](#size-restrictions) sections below. 1. Choose the Share icon, and then choose **Copy to Clipboard**. 1. Paste the contents into a text editor. 1. Near the top of the file, you will see the line `api_set: {}`. This needs to be changed to specify the host API version of the most recently added API that is used in your snippet. For example, if the snippet is for Excel and it uses some APIs that were introduced in Excel API 1.3, some in 1.4, and some in 1.5, then you need to specify `ExcelApi 1.5` as the value of the `api_set` property. Put a line break and four spaces before the value and no {} characters. To continue the example, when you're done the property would look like this: @@ -130,6 +130,14 @@ A few style rules to observe: - Don't forget the semicolons. - `Libraries` in snippets must have a specific version. Eg. `jquery@3.1.1`. +## Size restrictions + +Script Lab is designed for you to play with small code samples. Generally, a snippet should be at most a few hundred lines and a few thousand characters. + +Your snippet can use hard-coded data. A small amount of data (say, a few hundred characters) is OK to hard code in Script Lab. However, for larger pieces of data, we recommend that you store those externally then load them at runtime with a command like `fetch`. + +Keep your snippets and hard-coded data small since storing several large snippets could exceed Script Lab's storage and cause issues when loading Script Lab. + ## Debugging the build script - The scripts for building/validating the snippets are under the `config` folder -- in particular, under `build.ts`. From f8c6cc93f0cf63c6d451779c0cc2f077a4502ea4 Mon Sep 17 00:00:00 2001 From: ndeleuze <107273303+ndeleuze@users.noreply.github.com> Date: Tue, 11 Mar 2025 15:15:03 -0500 Subject: [PATCH 18/71] [Outlook] Adding code snippet example of the new sendAsync API (#950) * Adding code snippet example of the new sendAsync API to send message and appointments * Adding yaml file * Update samples/outlook/99-preview-apis/send-async.yaml Co-authored-by: Sam Ramon <15154970+samantharamon@users.noreply.github.com> * Update samples/outlook/99-preview-apis/send-async.yaml Co-authored-by: Sam Ramon <15154970+samantharamon@users.noreply.github.com> --------- Co-authored-by: Sam Ramon <15154970+samantharamon@users.noreply.github.com> --- playlists-prod/outlook.yaml | 9 +++ playlists/outlook.yaml | 9 +++ .../outlook/99-preview-apis/send-async.yaml | 60 +++++++++++++++++++ view-prod/outlook.json | 1 + view/outlook.json | 1 + 5 files changed, 80 insertions(+) create mode 100644 samples/outlook/99-preview-apis/send-async.yaml diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index 06645f7c6..b42d82df3 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -793,6 +793,15 @@ group: Preview APIs api_set: Mailbox: preview +- id: outlook-send-async + name: Send the current message or appointment (Compose) + fileName: send-async.yaml + description: Send the current message or appointment. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/send-async.yaml + group: Preview APIs + api_set: + Mailbox: preview - id: outlook-set-displayed-body-subject name: Temporarily set the body or subject displayed in a message (Message Read) fileName: set-displayed-body-subject.yaml diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index b344b28bb..4a898620c 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -793,6 +793,15 @@ group: Preview APIs api_set: Mailbox: preview +- id: outlook-send-async + name: Send the current message or appointment (Compose) + fileName: send-async.yaml + description: Send the current message or appointment. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/send-async.yaml + group: Preview APIs + api_set: + Mailbox: preview - id: outlook-set-displayed-body-subject name: Temporarily set the body or subject displayed in a message (Message Read) fileName: set-displayed-body-subject.yaml diff --git a/samples/outlook/99-preview-apis/send-async.yaml b/samples/outlook/99-preview-apis/send-async.yaml new file mode 100644 index 000000000..c0e784ce3 --- /dev/null +++ b/samples/outlook/99-preview-apis/send-async.yaml @@ -0,0 +1,60 @@ +order: 2 +id: outlook-send-async +name: Send the current message or appointment (Compose) +description: Sends the current message or appointment. +host: OUTLOOK +api_set: + Mailbox: preview +script: + content: | + $("#send-async").on("click", sendAsync); + + function sendAsync() { + // This snippet sends the current message or appointment being composed. + Office.context.mailbox.item.sendAsync((asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log("Action failed with error: " + asyncResult.error.message); + return; + } + }); + } + language: typescript +template: + content: |- +

+

This sample shows how to programmatically send the current message or appointment being composed.

+

Required mode: Compose

+
+ +
+

Try it out

+ +
+ language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/beta/hosted/office.js + @types/office-js-preview + + office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + + core-js@2.4.1/client/core.min.js + @types/core-js + + jquery@3.1.1 + @types/jquery@3.3.1 \ No newline at end of file diff --git a/view-prod/outlook.json b/view-prod/outlook.json index 21332af7f..0a37b9b00 100644 --- a/view-prod/outlook.json +++ b/view-prod/outlook.json @@ -83,5 +83,6 @@ "outlook-get-item-class-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-class-async.yaml", "outlook-other-item-apis-item-id-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/item-id-compose.yaml", "outlook-get-set-isalldayevent": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml", + "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/send-async.yaml", "outlook-set-displayed-body-subject": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml" } \ No newline at end of file diff --git a/view/outlook.json b/view/outlook.json index fa6113898..b8933c5dc 100644 --- a/view/outlook.json +++ b/view/outlook.json @@ -83,5 +83,6 @@ "outlook-get-item-class-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-item-class-async.yaml", "outlook-other-item-apis-item-id-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/item-id-compose.yaml", "outlook-get-set-isalldayevent": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml", + "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/send-async.yaml", "outlook-set-displayed-body-subject": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml" } \ No newline at end of file From 237d11e4d10062399962c674184f232090fb78b9 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Mon, 17 Mar 2025 14:33:08 -0700 Subject: [PATCH 19/71] [Outlook] Code snippet updates (#966) * Remove sendAsync snippet from preview * Update reply form snippet * Update attachments snippet --- playlists-prod/outlook.yaml | 20 +- playlists/outlook.yaml | 20 +- .../40-attachments/get-attachments-read.yaml | 16 +- .../display-reply-with-attachments.yaml | 174 +++++- .../send-async.yaml | 8 +- snippet-extractor-metadata/outlook.xlsx | Bin 24127 -> 24428 bytes snippet-extractor-output/snippets.yaml | 522 ++++++++++++++++-- view-prod/outlook.json | 2 +- view/outlook.json | 2 +- 9 files changed, 669 insertions(+), 95 deletions(-) rename samples/outlook/{99-preview-apis => 90-other-item-apis}/send-async.yaml (93%) diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index b42d82df3..0b4c9e5b8 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -387,7 +387,7 @@ - id: outlook-display-items-display-reply-with-attachments name: Create a reply with attachments fileName: display-reply-with-attachments.yaml - description: Opens a reply message forms and adds sample attachments. + description: Opens a reply or reply-all message form and adds sample attachments. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml group: Display Items @@ -784,6 +784,15 @@ group: Other Item APIs api_set: Mailbox: '1.8' +- id: outlook-send-async + name: Send the current message or appointment (Compose) + fileName: send-async.yaml + description: Sends the current message or appointment. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/send-async.yaml + group: Other Item APIs + api_set: + Mailbox: '1.15' - id: outlook-get-set-isalldayevent name: Get and set the isAllDayEvent property (Appointment Organizer) fileName: get-set-isalldayevent.yaml @@ -793,15 +802,6 @@ group: Preview APIs api_set: Mailbox: preview -- id: outlook-send-async - name: Send the current message or appointment (Compose) - fileName: send-async.yaml - description: Send the current message or appointment. - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/send-async.yaml - group: Preview APIs - api_set: - Mailbox: preview - id: outlook-set-displayed-body-subject name: Temporarily set the body or subject displayed in a message (Message Read) fileName: set-displayed-body-subject.yaml diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index 4a898620c..63c47e294 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -387,7 +387,7 @@ - id: outlook-display-items-display-reply-with-attachments name: Create a reply with attachments fileName: display-reply-with-attachments.yaml - description: Opens a reply message forms and adds sample attachments. + description: Opens a reply or reply-all message form and adds sample attachments. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/55-display-items/display-reply-with-attachments.yaml group: Display Items @@ -784,6 +784,15 @@ group: Other Item APIs api_set: Mailbox: '1.8' +- id: outlook-send-async + name: Send the current message or appointment (Compose) + fileName: send-async.yaml + description: Sends the current message or appointment. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/send-async.yaml + group: Other Item APIs + api_set: + Mailbox: '1.15' - id: outlook-get-set-isalldayevent name: Get and set the isAllDayEvent property (Appointment Organizer) fileName: get-set-isalldayevent.yaml @@ -793,15 +802,6 @@ group: Preview APIs api_set: Mailbox: preview -- id: outlook-send-async - name: Send the current message or appointment (Compose) - fileName: send-async.yaml - description: Send the current message or appointment. - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/send-async.yaml - group: Preview APIs - api_set: - Mailbox: preview - id: outlook-set-displayed-body-subject name: Temporarily set the body or subject displayed in a message (Message Read) fileName: set-displayed-body-subject.yaml diff --git a/samples/outlook/40-attachments/get-attachments-read.yaml b/samples/outlook/40-attachments/get-attachments-read.yaml index b2a2f60ff..5c158a457 100644 --- a/samples/outlook/40-attachments/get-attachments-read.yaml +++ b/samples/outlook/40-attachments/get-attachments-read.yaml @@ -9,8 +9,20 @@ script: $("#run").on("click", run); function run() { - const attachments = Office.context.mailbox.item.attachments; - console.log(attachments); + const item = Office.context.mailbox.item; + + if (item.attachments.length > 0) { + for (let i = 0; i < item.attachments.length; i++) { + const attachment = item.attachments[i]; + console.log(`${i+1}. Name: ${attachment.name}`); + console.log(`ID: ${attachment.id}`); + console.log(`Type: ${attachment.attachmentType}`); + console.log(`Inline content: ${attachment.isInline}`); + console.log(`Size: ${attachment.size}`); + } + } else { + console.log("This mail item doesn't contain any attachments."); + } } language: typescript template: diff --git a/samples/outlook/55-display-items/display-reply-with-attachments.yaml b/samples/outlook/55-display-items/display-reply-with-attachments.yaml index 1163b5954..91b1ae33b 100644 --- a/samples/outlook/55-display-items/display-reply-with-attachments.yaml +++ b/samples/outlook/55-display-items/display-reply-with-attachments.yaml @@ -1,46 +1,167 @@ order: 6 id: outlook-display-items-display-reply-with-attachments name: Create a reply with attachments -description: Opens a reply message forms and adds sample attachments. +description: Opens a reply or reply-all message form and adds sample attachments. host: OUTLOOK api_set: Mailbox: '1.9' script: content: | - $("#run").on("click", run); - $("#run-async").on("click", runAsync); + $("#reply").on("click", reply); + $("#reply-async").on("click", replyAsync); + $("#reply-all").on("click", replyAll); + $("#reply-all-async").on("click", replyAllAsync); - function run() { + function reply() { + // Define attachments. + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + // Create the reply with attachments. Office.context.mailbox.item.displayReplyForm({ - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "https://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ], + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment], callback: (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.error(`Action failed with message ${result.error.message}`); return; } - console.log("Created reply with attachments."); + console.log("Created a reply with attachments."); } }); } - function runAsync() { - // The async version is only available starting with requirement set 1.9. + function replyAll() { + // Define attachments. + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + // Create the reply with attachments. + Office.context.mailbox.item.displayReplyAllForm({ + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment], + callback: (result) => { + if (result.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${result.error.message}`); + return; + } + + console.log("Created a reply-all form with attachments."); + } + }); + } + + function replyAsync() { + // Define attachments. + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + // The async version was introduced in requirement set 1.9. // It provides a callback when the new appointment form has been created. Office.context.mailbox.item.displayReplyFormAsync( { - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "http://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ] + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] }, (asyncResult) => { - console.log(JSON.stringify(asyncResult)); + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created reply with attachments."); + } + ); + } + + function replyAllAsync() { + // Define attachments. + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + // The async version was introduced in requirement set 1.9. + // It provides a callback when the new appointment form has been created. + Office.context.mailbox.item.displayReplyAllFormAsync( + { + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] + }, + (asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created a reply-all form with attachments."); } ); } @@ -49,16 +170,23 @@ template: content: |-

This sample shows how to create a reply message and add an inline image attachment and an item attachment.

+

Required mode: Compose

Try it out

- + + + -
language: html style: diff --git a/samples/outlook/99-preview-apis/send-async.yaml b/samples/outlook/90-other-item-apis/send-async.yaml similarity index 93% rename from samples/outlook/99-preview-apis/send-async.yaml rename to samples/outlook/90-other-item-apis/send-async.yaml index c0e784ce3..b17568ace 100644 --- a/samples/outlook/99-preview-apis/send-async.yaml +++ b/samples/outlook/90-other-item-apis/send-async.yaml @@ -1,10 +1,10 @@ -order: 2 +order: 30 id: outlook-send-async name: Send the current message or appointment (Compose) description: Sends the current message or appointment. host: OUTLOOK api_set: - Mailbox: preview + Mailbox: '1.15' script: content: | $("#send-async").on("click", sendAsync); @@ -47,8 +47,8 @@ style: } language: css libraries: |- - https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - @types/office-js-preview + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index 65cbe59013c294ec43d9d6ce5d81063213fe39b0..3f36c4a53710ec22de921837b7e58fdcababd6ac 100644 GIT binary patch delta 14477 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 CQH=or delta 14223 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index fb8dd6767..149d6a577 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -8908,6 +8908,20 @@ console.error(`saveAsync failed with message ${result.error.message}`); } }); +'Office.AppointmentCompose#sendAsync:member(2)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/send-async.yaml + + + // This snippet sends the current message or appointment being composed. + + Office.context.mailbox.item.sendAsync((asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log("Action failed with error: " + asyncResult.error.message); + return; + } + }); 'Office.AppointmentCompose#sensitivity:member': - >- // Link to full sample: @@ -9062,9 +9076,21 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml - const attachments = Office.context.mailbox.item.attachments; + const item = Office.context.mailbox.item; - console.log(attachments); + + if (item.attachments.length > 0) { + for (let i = 0; i < item.attachments.length; i++) { + const attachment = item.attachments[i]; + console.log(`${i+1}. Name: ${attachment.name}`); + console.log(`ID: ${attachment.id}`); + console.log(`Type: ${attachment.attachmentType}`); + console.log(`Inline content: ${attachment.isInline}`); + console.log(`Size: ${attachment.size}`); + } + } else { + console.log("This mail item doesn't contain any attachments."); + } 'Office.AppointmentRead#categories:member': - >- // Link to full sample: @@ -9163,6 +9189,50 @@ Office.context.mailbox.item.displayReplyAllForm("This is a reply ALL with some bold text."); + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml + + + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // Create the reply with attachments. + + Office.context.mailbox.item.displayReplyAllForm({ + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment], + callback: (result) => { + if (result.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${result.error.message}`); + return; + } + + console.log("Created a reply-all form with attachments."); + } + }); 'Office.AppointmentRead#displayReplyAllFormAsync:member(1)': - >- // Link to full sample: @@ -9175,6 +9245,54 @@ ) { console.log(JSON.stringify(asyncResult)); }); + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml + + + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // The async version was introduced in requirement set 1.9. + + // It provides a callback when the new appointment form has been created. + + Office.context.mailbox.item.displayReplyAllFormAsync( + { + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] + }, + (asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created a reply-all form with attachments."); + } + ); 'Office.AppointmentRead#displayReplyForm:member(1)': - >- // Link to full sample: @@ -9188,19 +9306,43 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // Create the reply with attachments. + Office.context.mailbox.item.displayReplyForm({ - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "https://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ], + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment], callback: (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.error(`Action failed with message ${result.error.message}`); return; } - console.log("Created reply with attachments."); + console.log("Created a reply with attachments."); } }); 'Office.AppointmentRead#displayReplyFormAsync:member(1)': @@ -9220,20 +9362,47 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml - // The async version is only available starting with requirement set 1.9. + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // The async version was introduced in requirement set 1.9. // It provides a callback when the new appointment form has been created. Office.context.mailbox.item.displayReplyFormAsync( { - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "http://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ] + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] }, (asyncResult) => { - console.log(JSON.stringify(asyncResult)); + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created reply with attachments."); } ); 'Office.AppointmentRead#end:member': @@ -9582,6 +9751,27 @@ console.log(`Subject: ${Office.context.mailbox.item.subject}`); +'Office.AttachmentDetails:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml + + + const item = Office.context.mailbox.item; + + + if (item.attachments.length > 0) { + for (let i = 0; i < item.attachments.length; i++) { + const attachment = item.attachments[i]; + console.log(`${i+1}. Name: ${attachment.name}`); + console.log(`ID: ${attachment.id}`); + console.log(`Type: ${attachment.attachmentType}`); + console.log(`Inline content: ${attachment.isInline}`); + console.log(`Size: ${attachment.size}`); + } + } else { + console.log("This mail item doesn't contain any attachments."); + } 'Office.Body:interface': - >- // Link to full sample: @@ -12287,6 +12477,20 @@ console.log(`Attachment removed successfully.`); } ); +'Office.MessageCompose#sendAsync:member(2)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/send-async.yaml + + + // This snippet sends the current message or appointment being composed. + + Office.context.mailbox.item.sendAsync((asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log("Action failed with error: " + asyncResult.error.message); + return; + } + }); 'Office.MessageCompose#sensitivityLabel:member': - >- // Link to full sample: @@ -12412,15 +12616,48 @@ console.error(asyncResult.error); } }); +'Office.MessageRead:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml + + + const item = Office.context.mailbox.item; + + + if (item.attachments.length > 0) { + for (let i = 0; i < item.attachments.length; i++) { + const attachment = item.attachments[i]; + console.log(`${i+1}. Name: ${attachment.name}`); + console.log(`ID: ${attachment.id}`); + console.log(`Type: ${attachment.attachmentType}`); + console.log(`Inline content: ${attachment.isInline}`); + console.log(`Size: ${attachment.size}`); + } + } else { + console.log("This mail item doesn't contain any attachments."); + } 'Office.MessageRead#attachments:member': - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml - const attachments = Office.context.mailbox.item.attachments; + const item = Office.context.mailbox.item; + - console.log(attachments); + if (item.attachments.length > 0) { + for (let i = 0; i < item.attachments.length; i++) { + const attachment = item.attachments[i]; + console.log(`${i+1}. Name: ${attachment.name}`); + console.log(`ID: ${attachment.id}`); + console.log(`Type: ${attachment.attachmentType}`); + console.log(`Inline content: ${attachment.isInline}`); + console.log(`Size: ${attachment.size}`); + } + } else { + console.log("This mail item doesn't contain any attachments."); + } 'Office.MessageRead#categories:member': - >- // Link to full sample: @@ -12565,6 +12802,50 @@ Office.context.mailbox.item.displayReplyAllForm("This is a reply ALL with some bold text."); + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml + + + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // Create the reply with attachments. + + Office.context.mailbox.item.displayReplyAllForm({ + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment], + callback: (result) => { + if (result.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${result.error.message}`); + return; + } + + console.log("Created a reply-all form with attachments."); + } + }); 'Office.MessageRead#displayReplyAllFormAsync:member(1)': - >- // Link to full sample: @@ -12577,6 +12858,54 @@ ) { console.log(JSON.stringify(asyncResult)); }); + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml + + + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // The async version was introduced in requirement set 1.9. + + // It provides a callback when the new appointment form has been created. + + Office.context.mailbox.item.displayReplyAllFormAsync( + { + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] + }, + (asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created a reply-all form with attachments."); + } + ); 'Office.MessageRead#displayReplyForm:member(1)': - >- // Link to full sample: @@ -12590,19 +12919,43 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // Create the reply with attachments. + Office.context.mailbox.item.displayReplyForm({ - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "https://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ], + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment], callback: (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.error(`Action failed with message ${result.error.message}`); return; } - console.log("Created reply with attachments."); + console.log("Created a reply with attachments."); } }); 'Office.MessageRead#displayReplyFormAsync:member(1)': @@ -12622,20 +12975,47 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml - // The async version is only available starting with requirement set 1.9. + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // The async version was introduced in requirement set 1.9. // It provides a callback when the new appointment form has been created. Office.context.mailbox.item.displayReplyFormAsync( { - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "http://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ] + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] }, (asyncResult) => { - console.log(JSON.stringify(asyncResult)); + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created reply with attachments."); } ); 'Office.MessageRead#end:member': @@ -13476,20 +13856,47 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml - // The async version is only available starting with requirement set 1.9. + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // The async version was introduced in requirement set 1.9. // It provides a callback when the new appointment form has been created. Office.context.mailbox.item.displayReplyFormAsync( { - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "http://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ] + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] }, (asyncResult) => { - console.log(JSON.stringify(asyncResult)); + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created reply with attachments."); } ); 'Office.ReplyFormData:interface': @@ -13498,20 +13905,47 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml - // The async version is only available starting with requirement set 1.9. + // Define attachments. + + const base64Attachment = { + base64file: + "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", + inLine: true, + name: "script_lab.png", + type: Office.MailboxEnums.AttachmentType.Base64 + }; + + const fileAttachment = { + inLine: true, + name: "dog.jpg", + type: Office.MailboxEnums.AttachmentType.File, + url: "https://i.imgur.com/9S36xvA.jpg" + }; + + const itemAttachment = { + itemId: Office.context.mailbox.item.itemId, + name: "test_email.msg", + type: Office.MailboxEnums.AttachmentType.Item + }; + + + // The async version was introduced in requirement set 1.9. // It provides a callback when the new appointment form has been created. Office.context.mailbox.item.displayReplyFormAsync( { - htmlBody: "This is a reply with an inline image and an item attachment.
", - attachments: [ - { type: "file", url: "http://i.imgur.com/9S36xvA.jpg", name: "dog.jpg", inLine: true }, - { type: "item", itemId: Office.context.mailbox.item.itemId, name: "test_email.msg" } - ] + htmlBody: + "This is a reply with an inline Base64-encoded attachment, an inline image, and an item attachment.

", + attachments: [base64Attachment, fileAttachment, itemAttachment] }, (asyncResult) => { - console.log(JSON.stringify(asyncResult)); + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.error(`Action failed with message ${asyncResult.error.message}`); + return; + } + + console.log("Created reply with attachments."); } ); 'Office.RoamingSettings#get:member(1)': diff --git a/view-prod/outlook.json b/view-prod/outlook.json index 0a37b9b00..0319b1591 100644 --- a/view-prod/outlook.json +++ b/view-prod/outlook.json @@ -82,7 +82,7 @@ "outlook-get-conversation-index": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-conversation-index.yaml", "outlook-get-item-class-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-class-async.yaml", "outlook-other-item-apis-item-id-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/item-id-compose.yaml", + "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/send-async.yaml", "outlook-get-set-isalldayevent": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml", - "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/send-async.yaml", "outlook-set-displayed-body-subject": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml" } \ No newline at end of file diff --git a/view/outlook.json b/view/outlook.json index b8933c5dc..42644a3a8 100644 --- a/view/outlook.json +++ b/view/outlook.json @@ -82,7 +82,7 @@ "outlook-get-conversation-index": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-conversation-index.yaml", "outlook-get-item-class-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-item-class-async.yaml", "outlook-other-item-apis-item-id-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/item-id-compose.yaml", + "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/send-async.yaml", "outlook-get-set-isalldayevent": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml", - "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/send-async.yaml", "outlook-set-displayed-body-subject": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml" } \ No newline at end of file From bd1e7c3b6949f1c02282f3b4e5700af032970f74 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Wed, 19 Mar 2025 11:16:57 -0700 Subject: [PATCH 20/71] [Outlook] (notifications) Fix referenced icon in sample (#967) --- .../35-notifications/add-getall-remove.yaml | 6 ++--- snippet-extractor-output/snippets.yaml | 24 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/samples/outlook/35-notifications/add-getall-remove.yaml b/samples/outlook/35-notifications/add-getall-remove.yaml index 2bbec1504..edb03421c 100644 --- a/samples/outlook/35-notifications/add-getall-remove.yaml +++ b/samples/outlook/35-notifications/add-getall-remove.yaml @@ -33,7 +33,7 @@ script: { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Non-persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: false }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, handleResult); @@ -46,7 +46,7 @@ script: { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: true }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, handleResult); @@ -60,7 +60,7 @@ script: const details = { type: Office.MailboxEnums.ItemNotificationMessageType.InsightMessage, message: "This is an insight notification with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", actions: [ { actionText: "Open insight", diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 149d6a577..c6068d527 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -8639,7 +8639,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Non-persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: false }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -8657,7 +8657,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: true }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -9588,7 +9588,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Non-persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: false }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -9606,7 +9606,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: true }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -11070,7 +11070,7 @@ const details = { type: Office.MailboxEnums.ItemNotificationMessageType.InsightMessage, message: "This is an insight notification with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", actions: [ { actionText: "Open insight", @@ -12389,7 +12389,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Non-persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: false }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -12407,7 +12407,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: true }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -13236,7 +13236,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Non-persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: false }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -13254,7 +13254,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: true }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -13432,7 +13432,7 @@ const details = { type: Office.MailboxEnums.ItemNotificationMessageType.InsightMessage, message: "This is an insight notification with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", actions: [ { actionText: "Open insight", @@ -13495,7 +13495,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Non-persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: false }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, @@ -13513,7 +13513,7 @@ { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, message: "Persistent informational notification message with id = " + id, - icon: "icon1", + icon: "PG.Icon.16", persistent: true }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, From 9e1d205b2e122fa0ba7d739f7e1358cefc534ae8 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Wed, 19 Mar 2025 11:36:23 -0700 Subject: [PATCH 21/71] [Outlook] (item multi-select) Create code snippet for loadItemByIdAsync method (#968) * Add loadItemByIdAsync snippet * Apply suggestion from review Co-authored-by: Elizabeth Samuel --------- Co-authored-by: Elizabeth Samuel --- playlists-prod/outlook.yaml | 9 + playlists/outlook.yaml | 9 + .../get-loaded-message-properties.yaml | 154 ++++++++++++++++++ snippet-extractor-metadata/outlook.xlsx | Bin 24428 -> 24519 bytes snippet-extractor-output/snippets.yaml | 31 ++++ view-prod/outlook.json | 1 + view/outlook.json | 1 + 7 files changed, 205 insertions(+) create mode 100644 samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index 0b4c9e5b8..5a6387387 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -793,6 +793,15 @@ group: Other Item APIs api_set: Mailbox: '1.15' +- id: outlook-other-item-apis-get-loaded-message-properties + name: 'Get properties of a loaded message (Message Compose, Message Read)' + fileName: get-loaded-message-properties.yaml + description: Gets the properties of the currently loaded message. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml + group: Other Item APIs + api_set: + Mailbox: '1.15' - id: outlook-get-set-isalldayevent name: Get and set the isAllDayEvent property (Appointment Organizer) fileName: get-set-isalldayevent.yaml diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index 63c47e294..264640e55 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -793,6 +793,15 @@ group: Other Item APIs api_set: Mailbox: '1.15' +- id: outlook-other-item-apis-get-loaded-message-properties + name: 'Get properties of a loaded message (Message Compose, Message Read)' + fileName: get-loaded-message-properties.yaml + description: Gets the properties of the currently loaded message. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml + group: Other Item APIs + api_set: + Mailbox: '1.15' - id: outlook-get-set-isalldayevent name: Get and set the isAllDayEvent property (Appointment Organizer) fileName: get-set-isalldayevent.yaml diff --git a/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml b/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml new file mode 100644 index 000000000..0415aabc9 --- /dev/null +++ b/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml @@ -0,0 +1,154 @@ +order: 31 +id: outlook-other-item-apis-get-loaded-message-properties +name: 'Get properties of a loaded message (Message Compose, Message Read)' +description: Gets the properties of the currently loaded message. +host: OUTLOOK +api_set: + Mailbox: '1.15' +script: + content: | + let list; + + Office.onReady((info) => { + if (info.host === Office.HostType.Outlook) { + list = document.getElementById("selected-items"); + + // Register an event handler to identify when messages are selected. + Office.context.mailbox.addHandlerAsync(Office.EventType.SelectedItemsChanged, run, (asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log(asyncResult.error.message); + return; + } + + console.log("Event handler added."); + }); + + run(); + } + }); + + function run() { + // Clear the list of previously selected messages, if any. + clearList(list); + + // Get the subject line and sender's email address of each selected message and log them to a list in the task pane. + Office.context.mailbox.getSelectedItemsAsync((asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log(asyncResult.error.message); + return; + } + + const selectedItems = asyncResult.value; + + getItemInfo(selectedItems); + }); + } + + // Gets the subject line and sender's email address of each selected message. + async function getItemInfo(selectedItems) { + for (const item of selectedItems) { + addToList(item.subject); + await getSenderEmailAddress(item); + } + } + + // Gets the sender's email address of each selected message. + async function getSenderEmailAddress(item) { + const itemId = item.itemId; + await new Promise((resolve) => { + Office.context.mailbox.loadItemByIdAsync(itemId, (result) => { + if (result.status === Office.AsyncResultStatus.Failed) { + console.log(result.error.message); + return; + } + + const loadedItem = result.value; + const sender = loadedItem.from.emailAddress; + appendToListItem(sender); + + // Unload the current message before processing another selected message. + loadedItem.unloadAsync((asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log(asyncResult.error.message); + return; + } + + resolve(); + }); + }); + }); + } + + // Clears the list in the task pane. + function clearList(list) { + while (list.firstChild) { + list.removeChild(list.firstChild); + } + } + + // Adds an item to a list in the task pane. + function addToList(item) { + const listItem = document.createElement("li"); + listItem.textContent = item; + list.appendChild(listItem); + } + + // Appends data to the last item of the list in the task pane. + function appendToListItem(data) { + const listItem = list.lastChild; + listItem.textContent += ` (${data})`; + } + language: typescript +template: + content: |- +
+

This sample shows how to get the properties of the currently loaded message.

+

Required mode: Message Compose, Message Read

+
+
+

Try it out

+
    +
  1. +

    Turn on the Reading Pane in Outlook. For guidance, see Use + and configure the Reading Pane to preview messages.

    +
  2. +
  3. +

    Select a message from your mailbox. To select multiple messages, hold Ctrl (Windows) while + selecting each message. You can select a maximum of 100 messages at a time.

    +
  4. +
+

The subject and email address of the sender are automatically logged to the "Selected messages" section of the + task pane.

+

To learn more about the item multi-select feature, see Activate + your Outlook add-in on multiple messages.

+

Selected messages

+
    +
    + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: | + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js + + office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + + core-js@2.4.1/client/core.min.js + @types/core-js + + jquery@3.1.1 + @types/jquery@3.3.1 \ No newline at end of file diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index 3f36c4a53710ec22de921837b7e58fdcababd6ac..82e39008fa08ab7a41be90ee12292607226ba1d8 100644 GIT binary patch delta 15310 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index c6068d527..07dbe8d11 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -10934,6 +10934,37 @@ console.log(result.value); }); +'Office.Mailbox#loadItemByIdAsync:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml + + + async function getSenderEmailAddress(item) { + const itemId = item.itemId; + await new Promise((resolve) => { + Office.context.mailbox.loadItemByIdAsync(itemId, (result) => { + if (result.status === Office.AsyncResultStatus.Failed) { + console.log(result.error.message); + return; + } + + const loadedItem = result.value; + const sender = loadedItem.from.emailAddress; + appendToListItem(sender); + + // Unload the current message before processing another selected message. + loadedItem.unloadAsync((asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log(asyncResult.error.message); + return; + } + + resolve(); + }); + }); + }); + } 'Office.Mailbox#makeEwsRequestAsync:member(1)': - >- // Link to full sample: diff --git a/view-prod/outlook.json b/view-prod/outlook.json index 0319b1591..d9564fc71 100644 --- a/view-prod/outlook.json +++ b/view-prod/outlook.json @@ -83,6 +83,7 @@ "outlook-get-item-class-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-class-async.yaml", "outlook-other-item-apis-item-id-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/item-id-compose.yaml", "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/send-async.yaml", + "outlook-other-item-apis-get-loaded-message-properties": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml", "outlook-get-set-isalldayevent": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml", "outlook-set-displayed-body-subject": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml" } \ No newline at end of file diff --git a/view/outlook.json b/view/outlook.json index 42644a3a8..bdd41f2b7 100644 --- a/view/outlook.json +++ b/view/outlook.json @@ -83,6 +83,7 @@ "outlook-get-item-class-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-item-class-async.yaml", "outlook-other-item-apis-item-id-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/item-id-compose.yaml", "outlook-send-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/send-async.yaml", + "outlook-other-item-apis-get-loaded-message-properties": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml", "outlook-get-set-isalldayevent": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml", "outlook-set-displayed-body-subject": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml" } \ No newline at end of file From 7cdbf47ed955bb7cea2f066753612df620b69b5d Mon Sep 17 00:00:00 2001 From: wandyezj Date: Fri, 21 Mar 2025 16:01:58 -0700 Subject: [PATCH 22/71] Add script to bulk edit samples (#969) --- scripts/.gitattributes | 24 ++ scripts/.gitignore | 1 + scripts/README.md | 27 ++ scripts/config/prettier.json | 8 + scripts/package-lock.json | 249 ++++++++++++++++++ scripts/package.json | 23 ++ scripts/src/RawPlaylist.ts | 3 + scripts/src/RawPlaylistItem.ts | 8 + scripts/src/RawSample.ts | 20 ++ scripts/src/SampleTypes.ts | 0 scripts/src/main.ts | 118 +++++++++ scripts/src/parseRawPlaylist.ts | 7 + scripts/src/parseRawSample.ts | 7 + scripts/src/transformCss.ts | 3 + scripts/src/transformHtml.ts | 3 + scripts/src/transformLibraries.ts | 63 +++++ scripts/src/transformSample.ts | 31 +++ scripts/src/transformTypeScript.ts | 50 ++++ scripts/src/utils/capitalize.ts | 18 ++ scripts/src/utils/decapitalize.ts | 10 + scripts/src/utils/directoryFileNames.ts | 15 ++ scripts/src/utils/equivalentLists.ts | 20 ++ scripts/src/utils/indent.ts | 46 ++++ scripts/src/utils/isFile.ts | 11 + scripts/src/utils/joinWords.ts | 12 + scripts/src/utils/lineSplit.ts | 10 + .../src/utils/listWithoutDuplicateElements.ts | 11 + scripts/src/utils/mergeWithDefaults.ts | 18 ++ scripts/src/utils/pascalCase.ts | 12 + scripts/src/utils/readFileJson.ts | 14 + scripts/src/utils/readFileList.ts | 12 + scripts/src/utils/readFileText.ts | 19 ++ scripts/src/utils/standardizeNewlines.ts | 7 + scripts/src/utils/writeFileJson.ts | 19 ++ scripts/src/utils/writeFileList.ts | 11 + scripts/src/utils/writeFileText.ts | 12 + scripts/tsconfig.json | 71 +++++ 37 files changed, 993 insertions(+) create mode 100644 scripts/.gitattributes create mode 100644 scripts/.gitignore create mode 100644 scripts/README.md create mode 100644 scripts/config/prettier.json create mode 100644 scripts/package-lock.json create mode 100644 scripts/package.json create mode 100644 scripts/src/RawPlaylist.ts create mode 100644 scripts/src/RawPlaylistItem.ts create mode 100644 scripts/src/RawSample.ts create mode 100644 scripts/src/SampleTypes.ts create mode 100644 scripts/src/main.ts create mode 100644 scripts/src/parseRawPlaylist.ts create mode 100644 scripts/src/parseRawSample.ts create mode 100644 scripts/src/transformCss.ts create mode 100644 scripts/src/transformHtml.ts create mode 100644 scripts/src/transformLibraries.ts create mode 100644 scripts/src/transformSample.ts create mode 100644 scripts/src/transformTypeScript.ts create mode 100644 scripts/src/utils/capitalize.ts create mode 100644 scripts/src/utils/decapitalize.ts create mode 100644 scripts/src/utils/directoryFileNames.ts create mode 100644 scripts/src/utils/equivalentLists.ts create mode 100644 scripts/src/utils/indent.ts create mode 100644 scripts/src/utils/isFile.ts create mode 100644 scripts/src/utils/joinWords.ts create mode 100644 scripts/src/utils/lineSplit.ts create mode 100644 scripts/src/utils/listWithoutDuplicateElements.ts create mode 100644 scripts/src/utils/mergeWithDefaults.ts create mode 100644 scripts/src/utils/pascalCase.ts create mode 100644 scripts/src/utils/readFileJson.ts create mode 100644 scripts/src/utils/readFileList.ts create mode 100644 scripts/src/utils/readFileText.ts create mode 100644 scripts/src/utils/standardizeNewlines.ts create mode 100644 scripts/src/utils/writeFileJson.ts create mode 100644 scripts/src/utils/writeFileList.ts create mode 100644 scripts/src/utils/writeFileText.ts create mode 100644 scripts/tsconfig.json diff --git a/scripts/.gitattributes b/scripts/.gitattributes new file mode 100644 index 000000000..638b85721 --- /dev/null +++ b/scripts/.gitattributes @@ -0,0 +1,24 @@ +* text=auto +.gitattributes text +*.css text eol=lf +*.html text eol=lf +*.js text eol=lf +*.json text eol=lf +*.xml text eol=lf +*.kql text eol=lf +*.lock text eol=lf +*.md text eol=lf +*.ts text eol=lf +*.tsx text eol=lf +*.txt text eol=lf +*.yaml text eol=lf +*.yml text eol=lf +.npmrc text eol=lf + +*.cs text eol=crlf +*.sln text eol=crlf +*.csproj text eol=crlf + + +*.png binary +*.jpg binary \ No newline at end of file diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 000000000..dbf082131 --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1 @@ +node_modules/* \ No newline at end of file diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 000000000..be81caa85 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,27 @@ +# Scripts + +These scripts used to help maintain this repository. + +## Setup + +> npm install + +## Edit Script + +This script is used to bulk edit samples. + +To run this script: + +> npm run edit + +The edit targets all prod samples listed in `playlists-prod` and all default samples. + +Under the src folder the transform* files contain the specific JavaScript transforms that will run. + +To develop new transforms: + +1. Make changes the transform* functions +2. Run the transforms (npm run edit) +3. Check using the git diff to make sure the changes are what you expect +4. If you don't like the changes run the following in the **samples** folder: + > git checkout -- * diff --git a/scripts/config/prettier.json b/scripts/config/prettier.json new file mode 100644 index 000000000..f485b3e4c --- /dev/null +++ b/scripts/config/prettier.json @@ -0,0 +1,8 @@ +{ + "trailingComma": "all", + "arrowParens": "always", + "endOfLine": "lf", + "proseWrap": "preserve", + "printWidth": 100, + "tabWidth": 4 +} \ No newline at end of file diff --git a/scripts/package-lock.json b/scripts/package-lock.json new file mode 100644 index 000000000..25f3bb4a1 --- /dev/null +++ b/scripts/package-lock.json @@ -0,0 +1,249 @@ +{ + "name": "scripts", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "scripts", + "version": "0.0.0", + "license": "Unlicense", + "devDependencies": { + "@types/node": "^18.19.80", + "prettier": "^3.5.3", + "ts-node": "^10.9.2", + "typescript": "^5.8.2", + "yaml": "^2.7.0" + }, + "engines": { + "node": ">=18.0", + "npm": ">=10.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.80.tgz", + "integrity": "sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/scripts/package.json b/scripts/package.json new file mode 100644 index 000000000..455d76af6 --- /dev/null +++ b/scripts/package.json @@ -0,0 +1,23 @@ +{ + "name": "scripts", + "version": "0.0.0", + "description": "Scripts to transform samples", + "private": true, + "engines": { + "node": ">=18.0", + "npm": ">=10.0" + }, + "scripts": { + "edit": "ts-node src/main.ts", + "style": "prettier --config ./config/prettier.json --write \"@(src|test|scripts)/**/*.@(ts|tsx|js|md|html|css|json)\"" + }, + "author": "wandyezj", + "license": "Unlicense", + "devDependencies": { + "@types/node": "^18.19.80", + "prettier": "^3.5.3", + "ts-node": "^10.9.2", + "typescript": "^5.8.2", + "yaml": "^2.7.0" + } +} diff --git a/scripts/src/RawPlaylist.ts b/scripts/src/RawPlaylist.ts new file mode 100644 index 000000000..0f3f4495c --- /dev/null +++ b/scripts/src/RawPlaylist.ts @@ -0,0 +1,3 @@ +import type { RawPlaylistItem } from "./RawPlaylistItem"; + +export type RawPlaylist = RawPlaylistItem[]; diff --git a/scripts/src/RawPlaylistItem.ts b/scripts/src/RawPlaylistItem.ts new file mode 100644 index 000000000..0e9cc280f --- /dev/null +++ b/scripts/src/RawPlaylistItem.ts @@ -0,0 +1,8 @@ +/** + * YAML + */ +export interface RawPlaylistItem { + name: string; + description: string; + rawUrl: string; +} diff --git a/scripts/src/RawSample.ts b/scripts/src/RawSample.ts new file mode 100644 index 000000000..147d8d4c4 --- /dev/null +++ b/scripts/src/RawSample.ts @@ -0,0 +1,20 @@ +/** + * YAML + */ +export interface RawSample { + name: string; + description: string; + script: { + content: string; + language: string; + }; + template: { + content: string; + language: string; + }; + style: { + content: string; + language: string; + }; + libraries: string; +} diff --git a/scripts/src/SampleTypes.ts b/scripts/src/SampleTypes.ts new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/src/main.ts b/scripts/src/main.ts new file mode 100644 index 000000000..d03c0eb22 --- /dev/null +++ b/scripts/src/main.ts @@ -0,0 +1,118 @@ +// +// main entry point for the application +// + +import * as fs from "fs"; +import { readFileText } from "./utils/readFileText"; +import { parseRawPlaylist } from "./parseRawPlaylist"; +import { parseRawSample } from "./parseRawSample"; +import { transformRawSample } from "./transformSample"; +import yaml from "yaml"; + +console.log("Start edit sample yaml"); + +// (1) Read the playlist YAML file from sample +// (2) Read each sample YAML file +// (3) Pase the YAML file +// (4) Transform the YAML file +// (5) Write the YAML file over the original file + +const sampleDirectory = "../samples"; +const playlistDirectory = "../playlists-prod"; + +// +// Get sample files +// + +const playlistFiles = fs.readdirSync(playlistDirectory); +console.log(`Playlist files: + ${playlistFiles.join("\n ")}`); + +const playlists = playlistFiles.map((file) => { + const filePath = `${playlistDirectory}/${file}`; + const fileText = readFileText(filePath); + const playlist = parseRawPlaylist(fileText); + return playlist; +}); + +const playlistSamplePaths = playlists + .map((playlist) => { + const sampleFilePaths = playlist.map((item) => { + const { rawUrl } = item; + + // flip raw url to the file path + // https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/project/basics/basic-common-api-call.yaml + const filePath = rawUrl.replace( + "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/", + "../", + ); + return filePath; + }); + + return sampleFilePaths; + }) + .flat(); + +const defaultSamplePaths = fs.readdirSync(sampleDirectory).map((file) => { + const filePath = `${sampleDirectory}/${file}/default.yaml`; + return filePath; +}); + +const samplePaths = [...defaultSamplePaths, ...playlistSamplePaths]; + +console.log(`Sample files: + ${samplePaths.join("\n ")}`); + +// Check that all of the sample files exist +const checkSampleFiles = samplePaths.map((path) => { + const present = fs.existsSync(path); + return { present, path }; +}); + +const missingSampleFiles = checkSampleFiles + .filter(({ present }) => !present) + .map(({ path }) => path); + +if (missingSampleFiles.length > 0) { + console.log("=".repeat(80)); + console.error(`Missing sample files: + ${missingSampleFiles.join("\n")}`); +} + +// +// Transform each sample file +// +console.log("=".repeat(80)); +console.log("Transforming sample files..."); +const transformSampleSuccess = samplePaths.map((path) => { + console.log(`${path}`); + let success = true; + try { + const fileText = readFileText(path); + const sample = parseRawSample(fileText); + const transformedSample = transformRawSample(path, sample); + + const transformedSampleYaml = yaml.stringify(transformedSample, { + indent: 4, + singleQuote: true, + }); + + fs.writeFileSync(path, transformedSampleYaml); + console.log(`success`); + } catch (error) { + console.error(`ERROR\n${error}`); + success = false; + } + + return { + path, + success, + }; +}); + +const transformSampleErrors = transformSampleSuccess.filter(({ success }) => !success); +if (transformSampleErrors.length > 0) { + console.log("=".repeat(80)); + console.log(`Error: Transforming sample files: + ${transformSampleErrors.map((x) => x.path).join("\n ")}`); +} diff --git a/scripts/src/parseRawPlaylist.ts b/scripts/src/parseRawPlaylist.ts new file mode 100644 index 000000000..da3fd72a1 --- /dev/null +++ b/scripts/src/parseRawPlaylist.ts @@ -0,0 +1,7 @@ +import yaml from "yaml"; +import type { RawPlaylist } from "./RawPlaylist"; + +export function parseRawPlaylist(data: string): RawPlaylist { + const items = yaml.parse(data) as RawPlaylist; + return items; +} diff --git a/scripts/src/parseRawSample.ts b/scripts/src/parseRawSample.ts new file mode 100644 index 000000000..d8765c7c6 --- /dev/null +++ b/scripts/src/parseRawSample.ts @@ -0,0 +1,7 @@ +import yaml from "yaml"; +import type { RawSample } from "./RawSample"; + +export function parseRawSample(data: string): RawSample { + const rawSample = yaml.parse(data) as RawSample; + return rawSample; +} diff --git a/scripts/src/transformCss.ts b/scripts/src/transformCss.ts new file mode 100644 index 000000000..c52849def --- /dev/null +++ b/scripts/src/transformCss.ts @@ -0,0 +1,3 @@ +export function transformCss(data: string): string { + return data; +} diff --git a/scripts/src/transformHtml.ts b/scripts/src/transformHtml.ts new file mode 100644 index 000000000..4b0449df7 --- /dev/null +++ b/scripts/src/transformHtml.ts @@ -0,0 +1,3 @@ +export function transformHtml(data: string): string { + return data.replace(/\n\n/g, "\n").trim(); +} diff --git a/scripts/src/transformLibraries.ts b/scripts/src/transformLibraries.ts new file mode 100644 index 000000000..1b6c34511 --- /dev/null +++ b/scripts/src/transformLibraries.ts @@ -0,0 +1,63 @@ +/** + * Transform library references. + * - Remove jquery & core-js + * - Reference CDN for office.js types + * - Directly reference unpkg for npm packages + * @returns transformed libraries + */ +export function transformLibraries(data: string): string { + function getLinkFromPackageReference(packageReference: string): string | undefined { + const reg = /^(?.*)@(?\d+\.\d+\.\d+)\/(?.*)$/; + const groups = reg.exec(packageReference)?.groups; + if (groups === undefined) { + return packageReference; + } + + const { packageName, packageVersion, packageFile } = groups; + + return `https://unpkg.com/${packageName}@${packageVersion}/${packageFile}`; + } + + const cleanLibraries = data + .split("\n") + .map((line) => { + line = line.trim(); + + // Empty line + if (line === "") { + return ""; + } + + // Comment + if (line.startsWith("//") || line.startsWith("#")) { + return line; + } + + // direct reference + if (line.startsWith("https://") || line.startsWith("http://")) { + return line; + } + + // office.js + if (line === "@types/office-js") { + return `https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts`; + } + + // Remove packages + const packageNamesIgnore = ["jquery", "@types/jquery", "core-js", "@types/core-js"]; + const isExcluded = packageNamesIgnore.some((packageName) => + line.startsWith(packageName), + ); + if (isExcluded) { + return undefined; + } + + // npm reference + const link = getLinkFromPackageReference(line); + return link; + }) + .filter((line) => line !== undefined) as string[]; + + const cleanData = cleanLibraries.join("\n").replace(/\n\n\n/, "\n\n"); + return cleanData; +} diff --git a/scripts/src/transformSample.ts b/scripts/src/transformSample.ts new file mode 100644 index 000000000..643b9fe22 --- /dev/null +++ b/scripts/src/transformSample.ts @@ -0,0 +1,31 @@ +import { RawSample } from "./RawSample"; +import { transformCss } from "./transformCss"; +import { transformHtml } from "./transformHtml"; +import { transformLibraries } from "./transformLibraries"; +import { transformTypeScript } from "./transformTypeScript"; + +export function transformRawSample(id: string, rawSample: RawSample): RawSample { + const typescriptRaw = rawSample?.script?.content; + const htmlRaw = rawSample?.template?.content; + const cssRaw = rawSample?.style?.content; + const librariesRaw = rawSample?.libraries; + + if ([typescriptRaw, htmlRaw, cssRaw, librariesRaw].some((content) => content === undefined)) { + console.log(`ERROR: Empty content [${rawSample.name}] ${id}`); + // happens for custom functions + return rawSample; + } + + const typescriptContent = transformTypeScript(typescriptRaw).trim(); + const htmlContent = transformHtml(htmlRaw).trim(); + const cssContent = transformCss(cssRaw).trim(); + const librariesContent = transformLibraries(librariesRaw).trim(); + + // Update the raw sample with the transformed content + rawSample.script.content = typescriptContent; + rawSample.template.content = htmlContent; + rawSample.style.content = cssContent; + rawSample.libraries = librariesContent; + + return rawSample; +} diff --git a/scripts/src/transformTypeScript.ts b/scripts/src/transformTypeScript.ts new file mode 100644 index 000000000..1a8e025b2 --- /dev/null +++ b/scripts/src/transformTypeScript.ts @@ -0,0 +1,50 @@ +/** + * Transform TypeScript code. + * - remove JQuery handlers + * - Add Office on ready. + */ +export function transformTypeScript(data: string): string { + // remove jquery + // $("#id").on("click", () => tryCatch(handler));`; + const jqueryReg = /^\$\("#(?.*)"\)\.on\("click", \(\) => tryCatch\((?.*)\)\);$/; + + // Outlook specific + // $("#id").on("click", handler); + const jqueryAlt = /^\$\("#(?.*)"\)\.on\("click", (?.*)\);$/; + // $("#id").click(handler); + const jqueryAlt2 = /^\$\("#(?.*)"\)\.click\((?.*)\);$/; + + const cleanData = data + .split("\n") + .map((line) => { + const trimLine = line.trim(); + + if (trimLine.startsWith("$")) { + // JQuery + const match = jqueryReg.exec(trimLine); + if (match !== null) { + const groups = match?.groups; + if (groups) { + const { id, handler } = groups; + return `document.getElementById("${id}").addEventListener("click", () => tryCatch(${handler}));`; + } + } + + const matchAlt = jqueryAlt.exec(trimLine) || jqueryAlt2.exec(trimLine); + if (matchAlt !== null) { + const groups = matchAlt?.groups; + if (groups) { + const { id, handler } = groups; + return `document.getElementById("${id}").addEventListener("click", ${handler});`; + } + } + } + + return line; + }) + .join("\n"); + + const code = cleanData; + + return code; +} diff --git a/scripts/src/utils/capitalize.ts b/scripts/src/utils/capitalize.ts new file mode 100644 index 000000000..30198b274 --- /dev/null +++ b/scripts/src/utils/capitalize.ts @@ -0,0 +1,18 @@ +/** + * uppercases the first character in a string. + * in the case that the first character in the string can not be upper cased (for example a white space character or an empty string) the string is unmodified. + * @param word - string to capitalize + * @returns the string with it's first character upper cased. + * + */ +export function capitalize(word: string): string { + if (!word || word.length === 0) { + return word; + } + + if (word.length === 1) { + return word.toUpperCase(); + } + + return word.substring(0, 1).toUpperCase() + word.substring(1); +} diff --git a/scripts/src/utils/decapitalize.ts b/scripts/src/utils/decapitalize.ts new file mode 100644 index 000000000..35c7ed38c --- /dev/null +++ b/scripts/src/utils/decapitalize.ts @@ -0,0 +1,10 @@ +/** + * decapitalize a string + * @param string - string to decapitalize + */ +export function decapitalize(string: string): string { + if (string.length === 0) { + return string; + } + return string.charAt(0).toLowerCase() + string.slice(1); +} diff --git a/scripts/src/utils/directoryFileNames.ts b/scripts/src/utils/directoryFileNames.ts new file mode 100644 index 000000000..f05b3e725 --- /dev/null +++ b/scripts/src/utils/directoryFileNames.ts @@ -0,0 +1,15 @@ +import { readdirSync } from "fs"; +import { isFile } from "./isFile"; +import { join } from "path"; + +/** + * retrieves the file names present in the directory + * @param path - path of the directory to get the files in + * @returns list of file names in the directory + */ +export function directoryFileNames(path: string): string[] { + const all = readdirSync(path); + const files = all.filter((file: string) => isFile(join(path, file))); + // paths are sorted because determinism is convenient for testing and reproduction of issues. + return files.sort(); +} diff --git a/scripts/src/utils/equivalentLists.ts b/scripts/src/utils/equivalentLists.ts new file mode 100644 index 000000000..8cce71c17 --- /dev/null +++ b/scripts/src/utils/equivalentLists.ts @@ -0,0 +1,20 @@ +/** + * checks if two lists have the same values in the same order using the default comparison operator. + * + * @param a - a list + * @param b - a list + * @returns true if both lists have the same values in the same order. + */ +export function equivalentLists(a: string[], b: string[]): boolean { + if (a.length !== b.length) { + return false; + } + + for (let i = 0; i < a.length; i++) { + if (a[i] !== b[i]) { + return false; + } + } + + return true; +} diff --git a/scripts/src/utils/indent.ts b/scripts/src/utils/indent.ts new file mode 100644 index 000000000..abbb1f32a --- /dev/null +++ b/scripts/src/utils/indent.ts @@ -0,0 +1,46 @@ +import { lineSplit } from "./lineSplit"; +import { mergeWithDefaults } from "./mergeWithDefaults"; + +/** + * describe a single level of indent + */ +export interface IndentOptions { + /** + * the value to use for the indent + * default of four spaces + */ + value: string; + + /** + * the number of the value to use for a single level of indent + * default of 1 + */ + count: number; + + /** + * the number of times to indent + * default of 1 + */ + level: number; +} + +const defaultIndent: IndentOptions = { + value: " ", + count: 4, + level: 1, +}; + +/** + * indent all lines with the specified level of indent. + * @param string - string to indent + * @param indent - indent options + * @returns a version of the string indented according to the indent options + */ +export function indent(string: string, indent: Partial = defaultIndent): string { + const settings: IndentOptions = mergeWithDefaults(indent, defaultIndent); + + const indentString = settings.value.repeat(settings.count).repeat(settings.level); + + // this also indents any empty lines + return indentString + lineSplit(string).join(`\n${indentString}`); +} diff --git a/scripts/src/utils/isFile.ts b/scripts/src/utils/isFile.ts new file mode 100644 index 000000000..d38c56869 --- /dev/null +++ b/scripts/src/utils/isFile.ts @@ -0,0 +1,11 @@ +import { lstatSync } from "fs"; + +/** + * is the path a file? + * + * @param path - path to test + * @returns true when the path is a file + */ +export function isFile(path: string): boolean { + return lstatSync(path).isFile(); +} diff --git a/scripts/src/utils/joinWords.ts b/scripts/src/utils/joinWords.ts new file mode 100644 index 000000000..be3b3b81d --- /dev/null +++ b/scripts/src/utils/joinWords.ts @@ -0,0 +1,12 @@ +import { capitalize } from "./capitalize"; + +/** + * splits on whitespaces and -, capitalizes words, and joins them + * @param words + */ +export function joinWords(words: string): string { + return words + .split(/(\s|-)/) + .map((word) => capitalize(word)) + .join(""); +} diff --git a/scripts/src/utils/lineSplit.ts b/scripts/src/utils/lineSplit.ts new file mode 100644 index 000000000..0332f14d9 --- /dev/null +++ b/scripts/src/utils/lineSplit.ts @@ -0,0 +1,10 @@ +import { standardizeNewlines } from "./standardizeNewlines"; + +/** + * split a string into a list of lines + * @param string - string to split + * @returns list of the individual lines in the string + */ +export function lineSplit(string: string): string[] { + return standardizeNewlines(string).split("\n"); +} diff --git a/scripts/src/utils/listWithoutDuplicateElements.ts b/scripts/src/utils/listWithoutDuplicateElements.ts new file mode 100644 index 000000000..da57f3363 --- /dev/null +++ b/scripts/src/utils/listWithoutDuplicateElements.ts @@ -0,0 +1,11 @@ +/** + * creates list without duplicates from an original list, comparing using the default comparison operator, keeping only the first occurrence. + * @param original - list to + * @returns new list without the duplicates present in the original + */ +export function listWithoutDuplicateElements(original: readonly T[]): T[] { + // only take the first item + return original.filter( + (value: T, index: number, array: readonly T[]) => array.indexOf(value) === index, + ); +} diff --git a/scripts/src/utils/mergeWithDefaults.ts b/scripts/src/utils/mergeWithDefaults.ts new file mode 100644 index 000000000..859a83758 --- /dev/null +++ b/scripts/src/utils/mergeWithDefaults.ts @@ -0,0 +1,18 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** + * create a new object that ensure all default properties are present + * @param original - original object + * @param defaults - default object + */ +export function mergeWithDefaults(original: Partial, defaults: T): T { + const o: any = original; + const d: any = defaults; + const merge: any = {}; //shallowCopyOwnProperties(original); + + Object.getOwnPropertyNames(defaults).forEach((name) => { + merge[name] = Object.getOwnPropertyDescriptor(o, name) ? o[name] : d[name]; + }); + + return merge; +} diff --git a/scripts/src/utils/pascalCase.ts b/scripts/src/utils/pascalCase.ts new file mode 100644 index 000000000..715c1bcb2 --- /dev/null +++ b/scripts/src/utils/pascalCase.ts @@ -0,0 +1,12 @@ +import { joinWords } from "./joinWords"; +import { capitalize } from "./capitalize"; + +/** + * PascalCase + * splits on spaces and capitalizes words in between + * @param string - string to pascalCase + */ +export function pascalCase(string: string): string { + string = joinWords(string); + return capitalize(string); +} diff --git a/scripts/src/utils/readFileJson.ts b/scripts/src/utils/readFileJson.ts new file mode 100644 index 000000000..39f722bc7 --- /dev/null +++ b/scripts/src/utils/readFileJson.ts @@ -0,0 +1,14 @@ +import { readFileText } from "./readFileText"; + +/** + * Read a file that contains JSON and turn it into an object + * + * Note: no validation is done on the data. + * + * @param path - path to the JSON file + */ +export function readFileJson(path: string): T { + const data: string = readFileText(path); + const object: T = JSON.parse(data); + return object; +} diff --git a/scripts/src/utils/readFileList.ts b/scripts/src/utils/readFileList.ts new file mode 100644 index 000000000..05e5ce413 --- /dev/null +++ b/scripts/src/utils/readFileList.ts @@ -0,0 +1,12 @@ +import { lineSplit } from "./lineSplit"; +import { listWithoutDuplicateElements } from "./listWithoutDuplicateElements"; +import { readFileText } from "./readFileText"; + +/** + * reads lines from a file and removes the ones that are whitespace. + * @param path - path to read the file from + */ +export function readFileList(path: string): string[] { + const data: string = readFileText(path); + return listWithoutDuplicateElements(lineSplit(data)); +} diff --git a/scripts/src/utils/readFileText.ts b/scripts/src/utils/readFileText.ts new file mode 100644 index 000000000..a9060c643 --- /dev/null +++ b/scripts/src/utils/readFileText.ts @@ -0,0 +1,19 @@ +import { standardizeNewlines } from "./standardizeNewlines"; +import { readFileSync } from "fs"; + +/** + * Read utf-8 file and transform to standard new lines. + * @param path - path of the file to read + */ +export function readFileText(path: string): string { + let string: string = readFileSync(path, "utf-8"); + + // remove the BOM + // https://en.wikipedia.org/wiki/Byte_order_mark + // The BOM is generally unexpected in text files and causes JSON.parse to fail. + // U+FEFF is the Byte Order Mark for UTF-8 + string = string.replace(/^\uFEFF/, ""); + + const clean = standardizeNewlines(string); + return clean; +} diff --git a/scripts/src/utils/standardizeNewlines.ts b/scripts/src/utils/standardizeNewlines.ts new file mode 100644 index 000000000..6bc516e82 --- /dev/null +++ b/scripts/src/utils/standardizeNewlines.ts @@ -0,0 +1,7 @@ +/** + * standardize newlines to proper unix line endings + * @param string - string to standardize + */ +export function standardizeNewlines(string: string): string { + return string.replace(/\r/gm, ""); +} diff --git a/scripts/src/utils/writeFileJson.ts b/scripts/src/utils/writeFileJson.ts new file mode 100644 index 000000000..1b35c6cb4 --- /dev/null +++ b/scripts/src/utils/writeFileJson.ts @@ -0,0 +1,19 @@ +import { writeFileText } from "./writeFileText"; + +/** + * Transform a data object to a string and write it to the specified path. + * @param path - path to write the file to + * @param object - object to transform to JSON and write + */ +export function writeFileJson(path: string, object: object): void { + const json: string = JSON.stringify(object, undefined, 4); + + // add new line at end of file if it doesn't exist + let data = json; + if (!data.endsWith("\n")) { + data += "\n"; + } + + // write file + writeFileText(path, data); +} diff --git a/scripts/src/utils/writeFileList.ts b/scripts/src/utils/writeFileList.ts new file mode 100644 index 000000000..317655174 --- /dev/null +++ b/scripts/src/utils/writeFileList.ts @@ -0,0 +1,11 @@ +import { writeFileText } from "./writeFileText"; + +/** + * write a list to a file + * @param path - path to write the file to + * @param list - string list to write to the file + */ +export function writeFileList(path: string, list: readonly string[]): void { + const joined: string = list.join("\n"); + writeFileText(path, joined); +} diff --git a/scripts/src/utils/writeFileText.ts b/scripts/src/utils/writeFileText.ts new file mode 100644 index 000000000..7ca1fb6eb --- /dev/null +++ b/scripts/src/utils/writeFileText.ts @@ -0,0 +1,12 @@ +import { writeFileSync } from "fs"; +import { standardizeNewlines } from "./standardizeNewlines"; + +/** + * write data to path with standard newlines. + * @param path - file path + * @param data - string data to write + */ +export function writeFileText(path: string, string: string): void { + const clean = standardizeNewlines(string); + writeFileSync(path, clean); +} diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 000000000..937ffabe1 --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,71 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "moduleResolution": "node", + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + //"jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +} \ No newline at end of file From c9ed7652d09491b40bc32c2f2601a92576aadaed Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Mon, 24 Mar 2025 10:38:42 -0700 Subject: [PATCH 23/71] [All hosts] Remove library dependencies from snippets (#970) * Run script to remove library dependencies * Run yarn script --- .../excel/01-basics/basic-api-call-es5.yaml | 21 +- samples/excel/01-basics/basic-api-call.yaml | 19 +- .../01-basics/basic-common-api-call.yaml | 23 +- .../excel/10-chart/chart-axis-formatting.yaml | 26 +- samples/excel/10-chart/chart-axis.yaml | 34 +-- .../excel/10-chart/chart-bubble-chart.yaml | 28 +- .../10-chart/chart-create-several-charts.yaml | 48 ++-- samples/excel/10-chart/chart-data-source.yaml | 24 +- samples/excel/10-chart/chart-data-table.yaml | 26 +- samples/excel/10-chart/chart-formatting.yaml | 26 +- samples/excel/10-chart/chart-legend.yaml | 24 +- samples/excel/10-chart/chart-point.yaml | 30 +-- .../excel/10-chart/chart-series-markers.yaml | 22 +- .../10-chart/chart-series-plotorder.yaml | 24 +- samples/excel/10-chart/chart-series.yaml | 25 +- .../excel/10-chart/chart-title-format.yaml | 31 +-- samples/excel/10-chart/chart-trendlines.yaml | 33 +-- .../excel/10-chart/create-doughnut-chart.yaml | 24 +- samples/excel/12-comment/comment-basics.yaml | 28 +- .../excel/12-comment/comment-mentions.yaml | 20 +- samples/excel/12-comment/comment-replies.yaml | 28 +- .../excel/12-comment/comment-resolution.yaml | 24 +- .../conditional-formatting-advanced.yaml | 30 +-- .../conditional-formatting-basic.yaml | 38 ++- .../16-custom-functions/basic-function.yaml | 2 +- .../streaming-function.yaml | 2 +- ...e-set-get-and-delete-custom-xml-parts.yaml | 29 +- .../test-xml-for-unique-namespace.yaml | 27 +- .../data-types-entity-attribution.yaml | 24 +- .../data-types-entity-icons.yaml | 18 +- .../data-types-entity-values.yaml | 20 +- .../data-types-error-values.yaml | 22 +- .../data-types-formatted-number.yaml | 24 +- .../20-data-types/data-types-references.yaml | 26 +- .../20-data-types/data-types-web-image.yaml | 31 +-- .../22-data-validation/data-validation.yaml | 28 +- .../excel/26-document/custom-properties.yaml | 28 +- .../26-document/get-file-in-slices-async.yaml | 26 +- samples/excel/26-document/properties.yaml | 36 +-- .../30-events/data-change-event-details.yaml | 23 +- samples/excel/30-events/data-changed.yaml | 22 +- .../30-events/event-column-and-row-sort.yaml | 34 +-- .../event-worksheet-single-click.yaml | 17 +- .../30-events/events-chart-activated.yaml | 24 +- ...vents-chartcollection-added-activated.yaml | 22 +- .../events-comment-event-handler.yaml | 28 +- .../30-events/events-disable-events.yaml | 22 +- .../30-events/events-formula-changed.yaml | 22 +- .../excel/30-events/events-table-changed.yaml | 40 +-- .../events-tablecollection-changed.yaml | 33 +-- .../30-events/events-workbook-activated.yaml | 19 +- ...nts-workbook-and-worksheet-collection.yaml | 36 +-- .../events-worksheet-protection.yaml | 22 +- samples/excel/30-events/events-worksheet.yaml | 33 +-- .../30-events/selection-changed-events.yaml | 29 +- .../create-and-remove-named-item.yaml | 29 +- .../34-named-item/update-named-item.yaml | 21 +- .../pivottable-calculations.yaml | 29 +- .../pivottable-create-and-modify.yaml | 36 +-- .../pivottable-filters-and-summaries.yaml | 40 +-- .../pivottable-get-pivottables.yaml | 27 +- .../pivottable-pivotfilters.yaml | 36 +-- .../38-pivottable/pivottable-pivotlayout.yaml | 39 ++- .../38-pivottable/pivottable-refresh.yaml | 25 +- .../38-pivottable/pivottable-slicer.yaml | 35 +-- .../38-pivottable/pivottable-source-data.yaml | 24 +- samples/excel/42-range/cell-properties.yaml | 24 +- samples/excel/42-range/dynamic-arrays.yaml | 28 +- samples/excel/42-range/formatting.yaml | 28 +- .../42-range/insert-delete-clear-range.yaml | 30 +-- samples/excel/42-range/outline.yaml | 32 +-- samples/excel/42-range/precedents.yaml | 32 +-- samples/excel/42-range/range-areas.yaml | 31 +-- samples/excel/42-range/range-auto-fill.yaml | 28 +- samples/excel/42-range/range-copyfrom.yaml | 32 +-- samples/excel/42-range/range-dependents.yaml | 28 +- .../42-range/range-direct-dependents.yaml | 26 +- samples/excel/42-range/range-find.yaml | 24 +- .../excel/42-range/range-get-range-edge.yaml | 31 +-- samples/excel/42-range/range-hyperlink.yaml | 30 +-- .../excel/42-range/range-merged-ranges.yaml | 24 +- .../excel/42-range/range-relationships.yaml | 32 +-- .../42-range/range-remove-duplicates.yaml | 28 +- .../42-range/range-text-orientation.yaml | 28 +- samples/excel/42-range/selected-range.yaml | 25 +- samples/excel/42-range/set-get-values.yaml | 45 ++-- samples/excel/42-range/style.yaml | 42 +-- samples/excel/42-range/used-range.yaml | 28 +- .../44-shape/shape-create-and-delete.yaml | 26 +- samples/excel/44-shape/shape-groups.yaml | 26 +- samples/excel/44-shape/shape-images.yaml | 24 +- samples/excel/44-shape/shape-lines.yaml | 34 +-- .../excel/44-shape/shape-move-and-order.yaml | 30 +-- samples/excel/44-shape/shape-textboxes.yaml | 28 +- .../add-rows-and-columns-to-a-table.yaml | 30 +-- .../46-table/convert-range-to-table.yaml | 26 +- samples/excel/46-table/create-table.yaml | 23 +- samples/excel/46-table/filter-data.yaml | 28 +- samples/excel/46-table/formatting.yaml | 26 +- .../excel/46-table/get-data-from-table.yaml | 28 +- ...get-visible-range-of-a-filtered-table.yaml | 32 +-- samples/excel/46-table/import-json-data.yaml | 24 +- samples/excel/46-table/resize-table.yaml | 22 +- samples/excel/46-table/sort-data.yaml | 26 +- .../create-get-change-delete-settings.yaml | 25 +- .../excel/50-workbook/create-workbook.yaml | 19 +- .../50-workbook/culture-info-date-time.yaml | 26 +- samples/excel/50-workbook/culture-info.yaml | 28 +- .../excel/50-workbook/data-protection.yaml | 36 +-- .../workbook-built-in-functions.yaml | 25 +- .../50-workbook/workbook-calculation.yaml | 35 +-- .../50-workbook/workbook-get-active-cell.yaml | 21 +- .../workbook-insert-external-worksheets.yaml | 19 +- .../50-workbook/workbook-save-and-close.yaml | 25 +- .../excel/54-worksheet/active-worksheet.yaml | 26 +- .../add-delete-rename-move-worksheet.yaml | 29 +- samples/excel/54-worksheet/gridlines.yaml | 26 +- .../excel/54-worksheet/list-worksheets.yaml | 23 +- ...rence-worksheets-by-relative-position.yaml | 28 +- samples/excel/54-worksheet/tab-color.yaml | 27 +- .../54-worksheet/worksheet-auto-filter.yaml | 34 +-- .../excel/54-worksheet/worksheet-copy.yaml | 22 +- .../54-worksheet/worksheet-find-all.yaml | 22 +- .../54-worksheet/worksheet-freeze-panes.yaml | 32 +-- .../54-worksheet/worksheet-page-layout.yaml | 32 +-- .../54-worksheet/worksheet-range-cell.yaml | 32 +-- .../54-worksheet/worksheet-visibility.yaml | 26 +- .../90-scenarios/currency-converter.yaml | 23 +- .../90-scenarios/multiple-property-set.yaml | 26 +- .../performance-optimization.yaml | 34 +-- .../excel/90-scenarios/report-generation.yaml | 19 +- .../90-scenarios/working-with-dates.yaml | 29 +- .../excel/99-just-for-fun/color-wheel.yaml | 25 +- samples/excel/99-just-for-fun/gradient.yaml | 26 +- .../99-just-for-fun/path-finder-game.yaml | 25 +- samples/excel/99-just-for-fun/patterns.yaml | 26 +- samples/excel/99-just-for-fun/tetrominos.yaml | 18 +- samples/excel/default.yaml | 20 +- samples/onenote/default.yaml | 20 +- .../10-roaming-settings/roaming-settings.yaml | 25 +- .../load-set-get-save.yaml | 29 +- .../20-item-body/add-inline-base64-image.yaml | 19 +- .../20-item-body/append-text-on-send.yaml | 19 +- .../outlook/20-item-body/get-body-format.yaml | 19 +- .../20-item-body/get-selected-data.yaml | 19 +- .../20-item-body/prepend-text-on-send.yaml | 19 +- .../prepend-text-to-item-body.yaml | 19 +- .../20-item-body/replace-selected-text.yaml | 19 +- .../25-item-save-and-close/close-async.yaml | 21 +- .../outlook/25-item-save-and-close/close.yaml | 23 +- .../outlook/25-item-save-and-close/save.yaml | 23 +- .../get-all-attendees.yaml | 17 +- .../get-cc-message-read.yaml | 19 +- .../get-from-message-compose.yaml | 21 +- .../get-from-message-read.yaml | 19 +- ...tional-attendees-appointment-attendee.yaml | 19 +- .../get-organizer-appointment-attendee.yaml | 19 +- .../get-organizer-appointment-organizer.yaml | 19 +- ...quired-attendees-appointment-attendee.yaml | 19 +- .../get-sender-message-read.yaml | 19 +- .../get-set-bcc-message-compose.yaml | 21 +- .../get-set-cc-message-compose.yaml | 21 +- ...ional-attendees-appointment-organizer.yaml | 21 +- ...uired-attendees-appointment-organizer.yaml | 21 +- .../get-set-to-message-compose.yaml | 21 +- .../get-to-message-read.yaml | 19 +- .../35-notifications/add-getall-remove.yaml | 35 +-- .../40-attachments/attachments-compose.yaml | 27 +- .../get-attachment-content.yaml | 21 +- .../40-attachments/get-attachments-read.yaml | 23 +- .../45-categories/work-with-categories.yaml | 23 +- .../work-with-master-categories.yaml | 23 +- .../50-recurrence/get-recurrence-read.yaml | 19 +- .../outlook/50-recurrence/get-series-id.yaml | 19 +- ...-set-recurrence-appointment-organizer.yaml | 21 +- .../display-existing-appointment.yaml | 25 +- .../display-existing-message.yaml | 27 +- .../display-new-appointment.yaml | 23 +- .../55-display-items/display-new-message.yaml | 25 +- .../55-display-items/display-reply-forms.yaml | 27 +- .../display-reply-with-attachments.yaml | 25 +- .../sensitivity-label.yaml | 21 +- .../sensitivity-labels-catalog.yaml | 21 +- .../get-shared-properties.yaml | 21 +- .../get-internet-headers-message-read.yaml | 18 +- ...stom-internet-headers-message-compose.yaml | 22 +- .../outlook/75-regex-matches/contextual.yaml | 25 +- .../get-icaluid-as-attendee.yaml | 23 +- .../get-icaluid-as-organizer.yaml | 21 +- .../ids-and-urls.yaml | 23 +- .../make-ews-request-async.yaml | 23 +- ...-message-using-make-ews-request-async.yaml | 23 +- .../user-callback-token.yaml | 23 +- .../user-identity-token.yaml | 23 +- .../delay-message-delivery.yaml | 29 +- ...d-remove-enhancedlocation-appointment.yaml | 22 +- .../get-conversation-id-message.yaml | 18 +- .../get-conversation-index.yaml | 19 +- .../get-date-time-created-read.yaml | 18 +- .../get-date-time-modified-read.yaml | 18 +- .../get-diagnostic-information.yaml | 17 +- .../90-other-item-apis/get-eml-format.yaml | 19 +- .../90-other-item-apis/get-end-read.yaml | 18 +- .../90-other-item-apis/get-in-reply-to.yaml | 19 +- .../get-internet-message-id-read.yaml | 18 +- .../get-item-class-async.yaml | 19 +- .../get-item-class-read.yaml | 18 +- .../90-other-item-apis/get-item-type.yaml | 18 +- .../get-loaded-message-properties.yaml | 16 +- .../90-other-item-apis/get-location-read.yaml | 18 +- .../get-message-properties.yaml | 16 +- .../get-normalized-subject-read.yaml | 18 +- .../get-set-end-appointment-organizer.yaml | 20 +- ...et-set-location-appointment-organizer.yaml | 20 +- .../get-set-sensitivity-level.yaml | 21 +- .../get-set-start-appointment-organizer.yaml | 20 +- .../get-set-subject-compose.yaml | 20 +- .../90-other-item-apis/get-start-read.yaml | 18 +- .../90-other-item-apis/get-subject-read.yaml | 18 +- .../90-other-item-apis/item-id-compose.yaml | 23 +- .../90-other-item-apis/send-async.yaml | 17 +- .../90-other-item-apis/session-data-apis.yaml | 24 +- .../90-other-item-apis/set-selected-data.yaml | 19 +- .../work-with-client-signatures.yaml | 27 +- .../get-set-isalldayevent.yaml | 19 +- .../set-displayed-body-subject.yaml | 19 +- samples/outlook/default.yaml | 20 +- .../powerpoint/basics/basic-api-call-js.yaml | 18 +- .../powerpoint/basics/basic-api-call-ts.yaml | 18 +- .../basics/basic-common-api-call.yaml | 20 +- samples/powerpoint/default.yaml | 20 +- .../document/create-presentation.yaml | 19 +- .../hyperlinks/manage-hyperlinks.yaml | 21 +- samples/powerpoint/images/insert-image.yaml | 17 +- samples/powerpoint/images/insert-svg.yaml | 17 +- .../scenarios/searches-wikipedia-api.yaml | 22 +- samples/powerpoint/shapes/get-set-shapes.yaml | 35 +-- .../powerpoint/shapes/get-shapes-by-type.yaml | 24 +- samples/powerpoint/shapes/shapes.yaml | 39 +-- .../slide-management/add-slides.yaml | 27 +- .../slide-management/get-set-slides.yaml | 29 +- .../slide-management/get-slide-metadata.yaml | 19 +- .../slide-management/insert-slides.yaml | 21 +- samples/powerpoint/tags/tags.yaml | 37 +-- .../powerpoint/text/get-set-textrange.yaml | 30 +-- .../project/basics/basic-common-api-call.yaml | 23 +- samples/project/default.yaml | 20 +- samples/web/default.yaml | 18 +- .../word/01-basics/basic-api-call-es5.yaml | 16 +- samples/word/01-basics/basic-api-call.yaml | 16 +- .../word/01-basics/basic-common-api-call.yaml | 20 +- .../content-control-onadded-event.yaml | 24 +- .../content-control-ondatachanged-event.yaml | 24 +- .../content-control-ondeleted-event.yaml | 26 +- .../content-control-onentered-event.yaml | 24 +- .../content-control-onexited-event.yaml | 24 +- ...tent-control-onselectionchanged-event.yaml | 24 +- .../get-change-tracking-states.yaml | 28 +- ...t-and-change-checkbox-content-control.yaml | 26 +- ...-and-change-combo-box-content-control.yaml | 30 +-- .../insert-and-change-content-controls.yaml | 22 +- ...-change-dropdown-list-content-control.yaml | 30 +-- .../15-images/insert-and-get-pictures.yaml | 24 +- samples/word/20-lists/insert-list.yaml | 20 +- samples/word/20-lists/manage-list-styles.yaml | 18 +- samples/word/20-lists/organize-list.yaml | 22 +- .../get-paragraph-on-insertion-point.yaml | 22 +- samples/word/25-paragraph/get-text.yaml | 22 +- samples/word/25-paragraph/get-word-count.yaml | 22 +- .../25-paragraph/insert-formatted-text.yaml | 19 +- .../insert-header-and-footer.yaml | 30 +-- .../insert-in-different-locations.yaml | 28 +- .../insert-line-and-page-breaks.yaml | 22 +- samples/word/25-paragraph/onadded-event.yaml | 25 +- .../word/25-paragraph/onchanged-event.yaml | 26 +- .../word/25-paragraph/ondeleted-event.yaml | 24 +- .../25-paragraph/paragraph-properties.yaml | 30 +-- samples/word/25-paragraph/search.yaml | 22 +- .../get-built-in-properties.yaml | 15 +- ...read-write-custom-document-properties.yaml | 19 +- samples/word/35-ranges/compare-location.yaml | 24 +- samples/word/35-ranges/scroll-to-range.yaml | 22 +- .../split-words-of-first-paragraph.yaml | 24 +- .../word/40-tables/manage-custom-style.yaml | 52 ++-- samples/word/40-tables/manage-formatting.yaml | 35 +-- samples/word/40-tables/table-cell-access.yaml | 20 +- .../word/50-document/compare-documents.yaml | 19 +- .../word/50-document/get-external-styles.yaml | 15 +- .../50-document/insert-external-document.yaml | 21 +- .../50-document/insert-section-breaks.yaml | 26 +- .../word/50-document/manage-annotations.yaml | 34 +-- samples/word/50-document/manage-body.yaml | 46 ++-- .../50-document/manage-change-tracking.yaml | 26 +- samples/word/50-document/manage-comments.yaml | 38 ++- .../manage-custom-xml-part-ns.yaml | 33 +-- .../50-document/manage-custom-xml-part.yaml | 27 +- samples/word/50-document/manage-fields.yaml | 36 +-- .../word/50-document/manage-footnotes.yaml | 38 ++- samples/word/50-document/manage-settings.yaml | 23 +- samples/word/50-document/manage-styles.yaml | 35 +-- .../50-document/manage-tracked-changes.yaml | 34 +-- samples/word/50-document/save-close.yaml | 29 +- .../correlated-objects-pattern.yaml | 20 +- samples/word/90-scenarios/doc-assembly.yaml | 25 +- .../90-scenarios/multiple-property-set.yaml | 22 +- .../insert-and-change-content-controls.yaml | 24 +- .../word/99-preview-apis/manage-comments.yaml | 40 ++- samples/word/default.yaml | 20 +- scripts/.gitattributes | 24 -- scripts/.gitignore | 1 - scripts/README.md | 27 -- scripts/config/prettier.json | 8 - scripts/package-lock.json | 249 ------------------ scripts/package.json | 23 -- scripts/src/RawPlaylist.ts | 3 - scripts/src/RawPlaylistItem.ts | 8 - scripts/src/RawSample.ts | 20 -- scripts/src/SampleTypes.ts | 0 scripts/src/main.ts | 118 --------- scripts/src/parseRawPlaylist.ts | 7 - scripts/src/parseRawSample.ts | 7 - scripts/src/transformCss.ts | 3 - scripts/src/transformHtml.ts | 3 - scripts/src/transformLibraries.ts | 63 ----- scripts/src/transformSample.ts | 31 --- scripts/src/transformTypeScript.ts | 50 ---- scripts/src/utils/capitalize.ts | 18 -- scripts/src/utils/decapitalize.ts | 10 - scripts/src/utils/directoryFileNames.ts | 15 -- scripts/src/utils/equivalentLists.ts | 20 -- scripts/src/utils/indent.ts | 46 ---- scripts/src/utils/isFile.ts | 11 - scripts/src/utils/joinWords.ts | 12 - scripts/src/utils/lineSplit.ts | 10 - .../src/utils/listWithoutDuplicateElements.ts | 11 - scripts/src/utils/mergeWithDefaults.ts | 18 -- scripts/src/utils/pascalCase.ts | 12 - scripts/src/utils/readFileJson.ts | 14 - scripts/src/utils/readFileList.ts | 12 - scripts/src/utils/readFileText.ts | 19 -- scripts/src/utils/standardizeNewlines.ts | 7 - scripts/src/utils/writeFileJson.ts | 19 -- scripts/src/utils/writeFileList.ts | 11 - scripts/src/utils/writeFileText.ts | 12 - scripts/tsconfig.json | 71 ----- 345 files changed, 2672 insertions(+), 5973 deletions(-) delete mode 100644 scripts/.gitattributes delete mode 100644 scripts/.gitignore delete mode 100644 scripts/README.md delete mode 100644 scripts/config/prettier.json delete mode 100644 scripts/package-lock.json delete mode 100644 scripts/package.json delete mode 100644 scripts/src/RawPlaylist.ts delete mode 100644 scripts/src/RawPlaylistItem.ts delete mode 100644 scripts/src/RawSample.ts delete mode 100644 scripts/src/SampleTypes.ts delete mode 100644 scripts/src/main.ts delete mode 100644 scripts/src/parseRawPlaylist.ts delete mode 100644 scripts/src/parseRawSample.ts delete mode 100644 scripts/src/transformCss.ts delete mode 100644 scripts/src/transformHtml.ts delete mode 100644 scripts/src/transformLibraries.ts delete mode 100644 scripts/src/transformSample.ts delete mode 100644 scripts/src/transformTypeScript.ts delete mode 100644 scripts/src/utils/capitalize.ts delete mode 100644 scripts/src/utils/decapitalize.ts delete mode 100644 scripts/src/utils/directoryFileNames.ts delete mode 100644 scripts/src/utils/equivalentLists.ts delete mode 100644 scripts/src/utils/indent.ts delete mode 100644 scripts/src/utils/isFile.ts delete mode 100644 scripts/src/utils/joinWords.ts delete mode 100644 scripts/src/utils/lineSplit.ts delete mode 100644 scripts/src/utils/listWithoutDuplicateElements.ts delete mode 100644 scripts/src/utils/mergeWithDefaults.ts delete mode 100644 scripts/src/utils/pascalCase.ts delete mode 100644 scripts/src/utils/readFileJson.ts delete mode 100644 scripts/src/utils/readFileList.ts delete mode 100644 scripts/src/utils/readFileText.ts delete mode 100644 scripts/src/utils/standardizeNewlines.ts delete mode 100644 scripts/src/utils/writeFileJson.ts delete mode 100644 scripts/src/utils/writeFileList.ts delete mode 100644 scripts/src/utils/writeFileText.ts delete mode 100644 scripts/tsconfig.json diff --git a/samples/excel/01-basics/basic-api-call-es5.yaml b/samples/excel/01-basics/basic-api-call-es5.yaml index d5c3fc8e0..e2baf785a 100644 --- a/samples/excel/01-basics/basic-api-call-es5.yaml +++ b/samples/excel/01-basics/basic-api-call-es5.yaml @@ -7,8 +7,8 @@ host: EXCEL api_set: ExcelApi: '1.1' script: - content: | - $("#run").on("click", () => tryCatch(run)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); function run() { return Excel.run(function (context) { @@ -33,11 +33,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample demonstrates basic Excel API calls.

    -

    Try it out

    Select some cells in the worksheet, then press Highlight selected range.

    @@ -59,15 +58,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/01-basics/basic-api-call.yaml b/samples/excel/01-basics/basic-api-call.yaml index 48c4cd645..86ddf8c87 100644 --- a/samples/excel/01-basics/basic-api-call.yaml +++ b/samples/excel/01-basics/basic-api-call.yaml @@ -7,8 +7,8 @@ host: EXCEL api_set: ExcelApi: '1.1' script: - content: | - $("#run").on("click", () => tryCatch(run)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); async function run() { await Excel.run(async (context) => { @@ -38,7 +38,6 @@ template:

    This sample demonstrates basic Excel API calls.

    -

    Try it out

    Select some cells in the worksheet, then press Highlight selected range.

    @@ -60,15 +59,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/01-basics/basic-common-api-call.yaml b/samples/excel/01-basics/basic-common-api-call.yaml index fee0cc213..539bee657 100644 --- a/samples/excel/01-basics/basic-common-api-call.yaml +++ b/samples/excel/01-basics/basic-common-api-call.yaml @@ -7,8 +7,8 @@ host: EXCEL api_set: Selection: 1.1 script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.document.getSelectedDataAsync( @@ -24,11 +24,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample uses the Common APIs compatible with Office 2013.

    -

    Try it out

    Select a cell in the worksheet and press Write to console to see the contents of that cell in the console.

    @@ -39,7 +38,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -51,15 +50,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-axis-formatting.yaml b/samples/excel/10-chart/chart-axis-formatting.yaml index e2df678f1..d82d312b1 100644 --- a/samples/excel/10-chart/chart-axis-formatting.yaml +++ b/samples/excel/10-chart/chart-axis-formatting.yaml @@ -6,10 +6,10 @@ host: EXCEL api_set: ExcelApi: '1.8' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#format-horizontal-axis").on("click", () => tryCatch(formatHorizontalAxis)); - $("#format-vertical-axis").on("click", () => tryCatch(formatVerticalAxis)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("format-horizontal-axis").addEventListener("click", () => tryCatch(formatHorizontalAxis)); + document.getElementById("format-vertical-axis").addEventListener("click", () => tryCatch(formatVerticalAxis)); async function formatHorizontalAxis() { await Excel.run(async (context) => { @@ -118,25 +118,21 @@ script: language: typescript template: content: |- -

    This sample shows how to format the vertical and horizontal axis in a chart.

    -

    Set up

    -

    Try it out

    -
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -158,13 +154,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-axis.yaml b/samples/excel/10-chart/chart-axis.yaml index 2dbd1eadf..a9c093176 100644 --- a/samples/excel/10-chart/chart-axis.yaml +++ b/samples/excel/10-chart/chart-axis.yaml @@ -7,12 +7,12 @@ api_set: ExcelApi: '1.7' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#get-axis-unit").on("click", () => tryCatch(getAxisUnit)); - $("#change-axis-unit").on("click", () => tryCatch(changeAxisUnit)); - $("#remove-axis-label").on("click", () => tryCatch(removeAxisLabel)); - $("#show-axis-label").on("click", () => tryCatch(showAxisLabel)); - $("#set-axis-title").on("click", () => tryCatch(setAxisTitle)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("get-axis-unit").addEventListener("click", () => tryCatch(getAxisUnit)); + document.getElementById("change-axis-unit").addEventListener("click", () => tryCatch(changeAxisUnit)); + document.getElementById("remove-axis-label").addEventListener("click", () => tryCatch(removeAxisLabel)); + document.getElementById("show-axis-label").addEventListener("click", () => tryCatch(showAxisLabel)); + document.getElementById("set-axis-title").addEventListener("click", () => tryCatch(setAxisTitle)); async function getAxisUnit() { await Excel.run(async (context) => { @@ -173,39 +173,33 @@ template:

    This sample shows how to get, set, and remove axis unit, label and title in a chart.

    -

    Set up

    -

    Try it out

    -
    -
    -
    -
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -225,15 +219,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-bubble-chart.yaml b/samples/excel/10-chart/chart-bubble-chart.yaml index 26267ebf9..a9aa558ab 100644 --- a/samples/excel/10-chart/chart-bubble-chart.yaml +++ b/samples/excel/10-chart/chart-bubble-chart.yaml @@ -7,10 +7,11 @@ host: EXCEL api_set: ExcelApi: '1.12' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#create-bubble-chart").on("click", () => tryCatch(createBubbleChart)); - $("#get-chart-series-dimension-values").on("click", () => tryCatch(getChartSeriesDimensionValues)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("create-bubble-chart").addEventListener("click", () => tryCatch(createBubbleChart)); + document.getElementById("get-chart-series-dimension-values").addEventListener("click", () => tryCatch(getChartSeriesDimensionValues)); + async function createBubbleChart() { await Excel.run(async (context) => { /* @@ -57,6 +58,7 @@ script: await context.sync(); }); } + async function getChartSeriesDimensionValues() { await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getItem("Sample"); @@ -120,14 +122,12 @@ template:

    This sample shows how to create a bubble chart, with each chart series (or bubble) representing a single table row.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -152,15 +152,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-create-several-charts.yaml b/samples/excel/10-chart/chart-create-several-charts.yaml index a9c77544c..a8113bff5 100644 --- a/samples/excel/10-chart/chart-create-several-charts.yaml +++ b/samples/excel/10-chart/chart-create-several-charts.yaml @@ -7,17 +7,17 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#create-column-clustered-chart").on("click", () => tryCatch(createColumnClusteredChart)); - $("#create-line-chart").on("click", () => tryCatch(createLineChart)); - $("#create-xy-scatter-chart").on("click", () => tryCatch(createXYScatterChart)); - $("#create-area-chart").on("click", () => tryCatch(createAreaStackedChart)); - $("#create-radar-chart").on("click", () => tryCatch(createRadarFilledChart)); - $("#create-pie-chart").on("click", () => tryCatch(createPieChart)); - $("#create-3d-chart").on("click", () => tryCatch(create3DChart)); - $("#create-cylinder-chart").on("click", () => tryCatch(createCylinderChart)); - $("#create-bar-100-chart").on("click", () => tryCatch(createBar100Chart)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("create-column-clustered-chart").addEventListener("click", () => tryCatch(createColumnClusteredChart)); + document.getElementById("create-line-chart").addEventListener("click", () => tryCatch(createLineChart)); + document.getElementById("create-xy-scatter-chart").addEventListener("click", () => tryCatch(createXYScatterChart)); + document.getElementById("create-area-chart").addEventListener("click", () => tryCatch(createAreaStackedChart)); + document.getElementById("create-radar-chart").addEventListener("click", () => tryCatch(createRadarFilledChart)); + document.getElementById("create-pie-chart").addEventListener("click", () => tryCatch(createPieChart)); + document.getElementById("create-3d-chart").addEventListener("click", () => tryCatch(create3DChart)); + document.getElementById("create-cylinder-chart").addEventListener("click", () => tryCatch(createCylinderChart)); + document.getElementById("create-bar-100-chart").addEventListener("click", () => tryCatch(createBar100Chart)); async function createColumnClusteredChart() { await Excel.run(async (context) => { @@ -253,63 +253,53 @@ template:

    This sample shows how to create column-clustered, line, XY-scatter, area, radar, pie, 3D, cylinder, and 100% charts.

    -

    Set up

    -

    Try it out

    -

    -

    -

    -

    -

    -

    -

    -

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -321,15 +311,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-data-source.yaml b/samples/excel/10-chart/chart-data-source.yaml index c89e78930..d4bb53742 100644 --- a/samples/excel/10-chart/chart-data-source.yaml +++ b/samples/excel/10-chart/chart-data-source.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.15' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#log-chart-series-source").on("click", () => tryCatch(logChartSeriesSource)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("log-chart-series-source").addEventListener("click", () => tryCatch(logChartSeriesSource)); async function logChartSeriesSource() { // This function retrieves the data source information of a chart series in the Sample worksheet. @@ -84,7 +84,6 @@ template:

    This sample shows how to get information about the data source of a chart series.

    -

    Set up

    Add a product table and line chart to a sample worksheet.

    @@ -92,14 +91,13 @@ template: Add sample data
    -

    Try it out

    Log information to the console about the data source of the chart series Frames.

    -
    +
    language: html style: content: |- @@ -113,15 +111,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-data-table.yaml b/samples/excel/10-chart/chart-data-table.yaml index 527ff2b00..a48cae0f3 100644 --- a/samples/excel/10-chart/chart-data-table.yaml +++ b/samples/excel/10-chart/chart-data-table.yaml @@ -6,11 +6,11 @@ host: EXCEL api_set: ExcelApi: '1.14' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#create-column-clustered-chart").on("click", () => tryCatch(createColumnClusteredChart)); - $("#add-chart-data-table").on("click", () => tryCatch(addChartDataTable)); - $("#format-chart-data-table").on("click", () => tryCatch(formatChartDataTable)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("create-column-clustered-chart").addEventListener("click", () => tryCatch(createColumnClusteredChart)); + document.getElementById("add-chart-data-table").addEventListener("click", () => tryCatch(addChartDataTable)); + document.getElementById("format-chart-data-table").addEventListener("click", () => tryCatch(formatChartDataTable)); async function createColumnClusteredChart() { // This function creates a clustered column chart based on data from a table on @@ -117,7 +117,6 @@ template:

    This sample shows how to add a data table to a chart and then format that data table.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -152,12 +150,8 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - core-js@2.4.1/client/core.min.js - @types/core-js - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-formatting.yaml b/samples/excel/10-chart/chart-formatting.yaml index a26e6d685..5027e5948 100644 --- a/samples/excel/10-chart/chart-formatting.yaml +++ b/samples/excel/10-chart/chart-formatting.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.8' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#format-chart").on("click", () => tryCatch(formatChart)); - $("#show-datalabels").on("click", () => tryCatch(dataLabels)); - $("#change-color").on("click", () => tryCatch(changeColor)); - $("#clear").on("click", () => tryCatch(clearChart)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("format-chart").addEventListener("click", () => tryCatch(formatChart)); + document.getElementById("show-datalabels").addEventListener("click", () => tryCatch(dataLabels)); + document.getElementById("change-color").addEventListener("click", () => tryCatch(changeColor)); + document.getElementById("clear").addEventListener("click", () => tryCatch(clearChart)); async function formatChart() { await Excel.run(async (context) => { @@ -174,14 +174,12 @@ template:

    This sample shows how to format different aspects of a chart.

    -

    Set up

    -

    Try it out

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -131,15 +129,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-point.yaml b/samples/excel/10-chart/chart-point.yaml index f79c6ae8c..5eaef4fd7 100644 --- a/samples/excel/10-chart/chart-point.yaml +++ b/samples/excel/10-chart/chart-point.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: |+ - $("#setup").on("click", () => tryCatch(setup)); - $("#set-chart-point-color").on("click", () => tryCatch(setChartPointColor)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("set-chart-point-color").addEventListener("click", () => tryCatch(setChartPointColor)); async function setChartPointColor() { await Excel.run(async (context) => { @@ -79,33 +79,27 @@ script: console.error(error); } } - - - language: typescript template: - content: |+ + content: |-

    This sample shows how to set chart point color.

    -

    Set up

    -

    Try it out

    - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -117,15 +111,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-series-markers.yaml b/samples/excel/10-chart/chart-series-markers.yaml index 34e1c652f..8405b89cd 100644 --- a/samples/excel/10-chart/chart-series-markers.yaml +++ b/samples/excel/10-chart/chart-series-markers.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#set-markers").on("click", () => tryCatch(setMarkers)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("set-markers").addEventListener("click", () => tryCatch(setMarkers)); async function setMarkers() { await Excel.run(async (context) => { @@ -84,14 +84,12 @@ template:

    This sample shows how to set chart series marker properties.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -114,13 +112,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-series-plotorder.yaml b/samples/excel/10-chart/chart-series-plotorder.yaml index 8340b85e7..40ff375f7 100644 --- a/samples/excel/10-chart/chart-series-plotorder.yaml +++ b/samples/excel/10-chart/chart-series-plotorder.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#order-series-plot").on("click", () => tryCatch(addSeries)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("order-series-plot").addEventListener("click", () => tryCatch(addSeries)); async function addSeries() { await Excel.run(async (context) => { @@ -91,18 +91,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to change the plot order of series in a chart.

    -

    Set up

    -

    Try it out

    -

    Try it out

    -
    -

    Try it out

    - language: html style: content: |- @@ -148,15 +145,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-trendlines.yaml b/samples/excel/10-chart/chart-trendlines.yaml index 9fe36a845..5edbd97b9 100644 --- a/samples/excel/10-chart/chart-trendlines.yaml +++ b/samples/excel/10-chart/chart-trendlines.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: |+ - $("#setup").on("click", () => tryCatch(setup)); - $("#add-trendline").on("click", () => tryCatch(addTrendline)); - $("#get-trendline").on("click", () => tryCatch(getTrendline)); - $("#get-trendline-color").on("click", () => tryCatch(getTrendlineColor)); - $("#set-trendline-color").on("click", () => tryCatch(setTrendlineColor)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-trendline").addEventListener("click", () => tryCatch(addTrendline)); + document.getElementById("get-trendline").addEventListener("click", () => tryCatch(getTrendline)); + document.getElementById("get-trendline-color").addEventListener("click", () => tryCatch(getTrendlineColor)); + document.getElementById("set-trendline-color").addEventListener("click", () => tryCatch(setTrendlineColor)); async function addTrendline() { await Excel.run(async (context) => { @@ -134,36 +134,29 @@ script: console.error(error); } } - - - language: typescript template: content: |-

    This sample shows how to add, get, and format trendlines in a chart.

    -

    Set up

    -

    Try it out

    -
    -
    -

    Try it out

    -

    Try it out

    @@ -224,15 +222,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml index 0fbb291df..23f0d65e7 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -7,17 +7,17 @@ api_set: ExcelApi: '1.6' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#apply-color-scale-format").on("click", () => tryCatch(applyColorScaleFormat)); - $("#apply-preset-format").on("click", () => tryCatch(applyPresetFormat)); - $("#apply-databar-format").on("click", () => tryCatch(applyDataBarFormat)); - $("#apply-icon-set-format").on("click", () => tryCatch(applyIconSetFormat)); - $("#apply-text-format").on("click", () => tryCatch(applyTextFormat)); - $("#apply-cell-value-format").on("click", () => tryCatch(applyCellValueFormat)); - $("#apply-top-bottom-format").on("click", () => tryCatch(applyTopBottomFormat)); - $("#apply-custom-format").on("click", () => tryCatch(applyCustomFormat)); - $("#list-conditional-formats").on("click", () => tryCatch(listConditionalFormats)); - $("#clear-all-conditional-formats").on("click", () => tryCatch(clearAllConditionalFormats)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("apply-color-scale-format").addEventListener("click", () => tryCatch(applyColorScaleFormat)); + document.getElementById("apply-preset-format").addEventListener("click", () => tryCatch(applyPresetFormat)); + document.getElementById("apply-databar-format").addEventListener("click", () => tryCatch(applyDataBarFormat)); + document.getElementById("apply-icon-set-format").addEventListener("click", () => tryCatch(applyIconSetFormat)); + document.getElementById("apply-text-format").addEventListener("click", () => tryCatch(applyTextFormat)); + document.getElementById("apply-cell-value-format").addEventListener("click", () => tryCatch(applyCellValueFormat)); + document.getElementById("apply-top-bottom-format").addEventListener("click", () => tryCatch(applyTopBottomFormat)); + document.getElementById("apply-custom-format").addEventListener("click", () => tryCatch(applyCustomFormat)); + document.getElementById("list-conditional-formats").addEventListener("click", () => tryCatch(listConditionalFormats)); + document.getElementById("clear-all-conditional-formats").addEventListener("click", () => tryCatch(clearAllConditionalFormats)); async function applyColorScaleFormat() { await Excel.run(async (context) => { @@ -277,14 +277,12 @@ template:

    This sample shows how to apply conditional formatting to ranges.

    -

    Set up

    -

    Try it out

    @@ -341,15 +339,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/16-custom-functions/basic-function.yaml b/samples/excel/16-custom-functions/basic-function.yaml index c085f87e1..377ee85cb 100644 --- a/samples/excel/16-custom-functions/basic-function.yaml +++ b/samples/excel/16-custom-functions/basic-function.yaml @@ -20,4 +20,4 @@ script: libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js - core-js@2.4.1/client/core.min.js \ No newline at end of file + core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/streaming-function.yaml b/samples/excel/16-custom-functions/streaming-function.yaml index 1e9740051..cdaf1ccb0 100644 --- a/samples/excel/16-custom-functions/streaming-function.yaml +++ b/samples/excel/16-custom-functions/streaming-function.yaml @@ -30,4 +30,4 @@ script: libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js - core-js@2.4.1/client/core.min.js + core-js@2.4.1/client/core.min.js \ No newline at end of file diff --git a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml index dcaf6a955..09f9e3bed 100644 --- a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml +++ b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.5' script: - content: | - $("#create-custom-xml-part").on("click", () => tryCatch(createCustomXmlPart)); - $("#change-custom-xml-part").on("click", () => tryCatch(changeCustomXmlPart)); - $("#delete-custom-xml-part").on("click", () => tryCatch(deleteCustomXmlPart)); + content: |- + document.getElementById("create-custom-xml-part").addEventListener("click", () => tryCatch(createCustomXmlPart)); + document.getElementById("change-custom-xml-part").addEventListener("click", () => tryCatch(changeCustomXmlPart)); + document.getElementById("delete-custom-xml-part").addEventListener("click", () => tryCatch(deleteCustomXmlPart)); async function createCustomXmlPart() { await Excel.run(async (context) => { @@ -103,11 +103,10 @@ script: } language: typescript template: - content: |+ + content: |-

    This sample shows how to create, set, get, and delete custom XML parts in the file.

    -

    Try it out

    Press the button to create and display Contoso's Reviewer metadata.

    @@ -124,16 +123,14 @@ template:
    -

    XML part display

    - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -145,15 +142,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml index 60a15efe9..b1ca11906 100644 --- a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml +++ b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.5' script: - content: | - $("#create-custom-xml-part").on("click", () => tryCatch(createCustomXmlPart)); - $("#test-for-unique-namespace").on("click", () => tryCatch(testForUniqueNamespace)); - $("#delete-all-custom-xml-parts").on("click", () => tryCatch(deleteAllCustomXmlParts)); + content: |- + document.getElementById("create-custom-xml-part").addEventListener("click", () => tryCatch(createCustomXmlPart)); + document.getElementById("test-for-unique-namespace").addEventListener("click", () => tryCatch(testForUniqueNamespace)); + document.getElementById("delete-all-custom-xml-parts").addEventListener("click", () => tryCatch(deleteAllCustomXmlParts)); async function createCustomXmlPart() { await Excel.run(async (context) => { @@ -90,11 +90,10 @@ script: } language: typescript template: - content: |+ + content: |-

    This sample shows how to determine if there is just one XML part for a specified namespace.

    -

    Try it out

    Press the "Create XML part" button to create and display Contoso's Reviewer metadata. Press it more than once if you want to set up an error situation.

    @@ -110,13 +109,11 @@ template: Delete all XML parts
    -

    XML part display

    - language: html style: content: |- @@ -131,15 +128,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-entity-attribution.yaml b/samples/excel/20-data-types/data-types-entity-attribution.yaml index ded226769..46adc2e94 100644 --- a/samples/excel/20-data-types/data-types-entity-attribution.yaml +++ b/samples/excel/20-data-types/data-types-entity-attribution.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.16' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#add-entities-to-table").on("click", () => tryCatch(addEntitiesToTable)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-entities-to-table").addEventListener("click", () => tryCatch(addEntitiesToTable)); async function addEntitiesToTable() { // This function retrieves data for each of the existing products in the table, @@ -205,10 +205,10 @@ template:

    To see the entity value's data attribution, click the icon to the left of the title in the Product column after selecting Add entity values.

    The data attribution appears as a logo in the bottom left corner of the entity card. Hover over the logo to see the name of the data provider. Click on the logo to visit the data provider's URL.

    -
    +
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -220,15 +220,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-entity-icons.yaml b/samples/excel/20-data-types/data-types-entity-icons.yaml index 89a06fafc..53cecd46b 100644 --- a/samples/excel/20-data-types/data-types-entity-icons.yaml +++ b/samples/excel/20-data-types/data-types-entity-icons.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.16' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#create-icons").on("click", () => tryCatch(createIcons)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("create-icons").addEventListener("click", () => tryCatch(createIcons)); // Retrieve the entity card icons enum. const iconNames = Excel.EntityCompactLayoutIcons; @@ -108,13 +108,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-entity-values.yaml b/samples/excel/20-data-types/data-types-entity-values.yaml index 2585f039d..9383863f7 100644 --- a/samples/excel/20-data-types/data-types-entity-values.yaml +++ b/samples/excel/20-data-types/data-types-entity-values.yaml @@ -7,8 +7,8 @@ api_set: ExcelApi: '1.16' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#addEntitiesToTable").on("click", () => tryCatch(addEntitiesToTable)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("addEntitiesToTable").addEventListener("click", () => tryCatch(addEntitiesToTable)); async function addEntitiesToTable() { // This function retrieves data for each of the existing products in the table, @@ -581,7 +581,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -593,15 +593,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-error-values.yaml b/samples/excel/20-data-types/data-types-error-values.yaml index ec1c9eeb6..bcf1d28f6 100644 --- a/samples/excel/20-data-types/data-types-error-values.yaml +++ b/samples/excel/20-data-types/data-types-error-values.yaml @@ -6,10 +6,10 @@ host: EXCEL api_set: ExcelApi: '1.16' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#set-busy-error").on("click", () => tryCatch(setBusyError)); - $("#change-busy-error").on("click", () => tryCatch(changeBusyError)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("set-busy-error").addEventListener("click", () => tryCatch(setBusyError)); + document.getElementById("change-busy-error").addEventListener("click", () => tryCatch(changeBusyError)); async function setBusyError() { // This function sets the value of cell A1 to a #BUSY! error using data types. @@ -105,15 +105,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-formatted-number.yaml b/samples/excel/20-data-types/data-types-formatted-number.yaml index a8ca4bc9c..dd362a38a 100644 --- a/samples/excel/20-data-types/data-types-formatted-number.yaml +++ b/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -6,11 +6,11 @@ host: EXCEL api_set: ExcelApi: '1.16' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#set-formatted-number-date").on("click", () => tryCatch(setFormattedNumberDate)); - $("#set-formatted-number-currency").on("click", () => tryCatch(setFormattedNumberCurrency)); - $("#get-formatted-number").on("click", () => tryCatch(getFormattedNumber)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("set-formatted-number-date").addEventListener("click", () => tryCatch(setFormattedNumberDate)); + document.getElementById("set-formatted-number-currency").addEventListener("click", () => tryCatch(setFormattedNumberCurrency)); + document.getElementById("get-formatted-number").addEventListener("click", () => tryCatch(getFormattedNumber)); async function setFormattedNumberDate() { // This function creates a formatted number data type, @@ -143,15 +143,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-references.yaml b/samples/excel/20-data-types/data-types-references.yaml index 37f5673fd..89a45c742 100644 --- a/samples/excel/20-data-types/data-types-references.yaml +++ b/samples/excel/20-data-types/data-types-references.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.16' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#add-entities-to-table").on("click", () => tryCatch(addEntitiesToTable)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-entities-to-table").addEventListener("click", () => tryCatch(addEntitiesToTable)); async function addEntitiesToTable() { // This function creates entity values with references to other entity values. @@ -292,7 +292,7 @@ script: ]; language: typescript template: - content: | + content: |-

    This sample shows how to create entity values with references to other entity values. An entity value is a container for data, and this container can reference (or contain) other entities within the original entity. One entity can contain multiple additional entities.

    @@ -316,10 +316,10 @@ template:
  • To navigate back to the original Andrew Fuller entity, select the Back arrow in the top left corner of the entity card.
  • You can also use the Extract to grid button in the card modal window, to the right of the Manager or Direct Reports fields, to add the referenced entities to the table in new columns.

    - + language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -331,15 +331,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-web-image.yaml b/samples/excel/20-data-types/data-types-web-image.yaml index 3a6d8134d..9beed0017 100644 --- a/samples/excel/20-data-types/data-types-web-image.yaml +++ b/samples/excel/20-data-types/data-types-web-image.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.16' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#insert-image").on("click", () => tryCatch(insertImage)); - $("#retrieve-image-info").on("click", () => tryCatch(retrieveImageInfo)); - $("#open-image").on("click", () => tryCatch(openImage)); - $("#clear-form").on("click", () => tryCatch(clearForm)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("insert-image").addEventListener("click", () => tryCatch(insertImage)); + document.getElementById("retrieve-image-info").addEventListener("click", () => tryCatch(retrieveImageInfo)); + document.getElementById("open-image").addEventListener("click", () => tryCatch(openImage)); + document.getElementById("clear-form").addEventListener("click", () => tryCatch(clearForm)); async function insertImage() { // This function inserts a web image into the currently selected cell. @@ -125,7 +125,6 @@ template:

    This sample shows how to work with the web image data type. Insert an image into the selected cell and then retrieve information about that image.

    -

    Set up

    Add a new worksheet and then enter the URL and alt text for an image of your choice.

    @@ -137,24 +136,20 @@ template:
    -

    Try it out

    Select the cell you want to insert the web image into, and then select the Insert image button.

    -

    Select the cell containing the web image that you want to view the details of, and then select the Retrieve image details button. The image details will display here in the task pane, in the preceding Image URL and Alt text fields.

    -

    Select the cell with the image you want to view and then select the Open image in browser button. The image will open in a new web browser tab.

    -

    Clear the Image URL and Alt text fields in the task pane.

    -

    Try it out

    Press Require approved name and then click on a cell in the Baby Name column and use the drop down to enter an approved value.

    @@ -178,15 +176,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/26-document/custom-properties.yaml b/samples/excel/26-document/custom-properties.yaml index 332f28ad1..90c3ab73d 100644 --- a/samples/excel/26-document/custom-properties.yaml +++ b/samples/excel/26-document/custom-properties.yaml @@ -6,11 +6,11 @@ host: EXCEL api_set: ExcelAPI: '1.12' script: - content: | - $("#set-custom-doc-property").on("click", () => tryCatch(setCustomDocProperty)); - $("#get-custom-doc-properties").on("click", () => tryCatch(getCustomDocProperties)); - $("#set-custom-worksheet-property").on("click", () => tryCatch(setCustomWorksheetProperty)); - $("#get-custom-worksheet-properties").on("click", () => tryCatch(getCustomWorksheetProperties)); + content: |- + document.getElementById("set-custom-doc-property").addEventListener("click", () => tryCatch(setCustomDocProperty)); + document.getElementById("get-custom-doc-properties").addEventListener("click", () => tryCatch(getCustomDocProperties)); + document.getElementById("set-custom-worksheet-property").addEventListener("click", () => tryCatch(setCustomWorksheetProperty)); + document.getElementById("get-custom-worksheet-properties").addEventListener("click", () => tryCatch(getCustomWorksheetProperties)); /* To learn how to view document properties in the UI, * see https://support.microsoft.com/office/21D604C2-481E-4379-8E54-1DD4622C6B75 @@ -93,12 +93,10 @@ template:

    This sample shows how to set and get custom properties at both the document level and the worksheet level.

    -

    Enter the key/value pairs for your custom properties.

    Key:

    Value:

    -

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -130,15 +128,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/26-document/get-file-in-slices-async.yaml b/samples/excel/26-document/get-file-in-slices-async.yaml index f5288dfbe..3371746d2 100644 --- a/samples/excel/26-document/get-file-in-slices-async.yaml +++ b/samples/excel/26-document/get-file-in-slices-async.yaml @@ -7,9 +7,9 @@ api_set: ExcelApi: '1.4' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#get-file").on("click", () => tryCatch(getCurrentFile)); - $("#new-workbook-from-file").on("click", () => tryCatch(newWorkbookFromFile)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("get-file").addEventListener("click", () => tryCatch(getCurrentFile)); + document.getElementById("new-workbook-from-file").addEventListener("click", () => tryCatch(newWorkbookFromFile)); function getCurrentFile() { const sliceSize = 4096; /*Bytes*/ @@ -153,18 +153,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get the Base64-encoded string that represents the current document. It uses the getFileAsync() method to read the file in slices and then joins all slices back together to form the complete file.

    -

    Set up

    -

    Try it out

    -

    Create a new workbook

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -204,15 +201,10 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - core-js@2.4.1/client/core.min.js - @types/core-js + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - jquery@3.1.1 - @types/jquery@3.3.1 - https://unpkg.com/base64-js@1.2.1/base64js.min.js + https://unpkg.com/base64-js@1.2.1/base64js.min.js \ No newline at end of file diff --git a/samples/excel/26-document/properties.yaml b/samples/excel/26-document/properties.yaml index 210f2208f..41deb4f44 100644 --- a/samples/excel/26-document/properties.yaml +++ b/samples/excel/26-document/properties.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#set-doc-properties").on("click", () => tryCatch(setDocProperties)); - $("#get-doc-properties").on("click", () => tryCatch(getDocProperties)); - $("#set-custom-doc-properties").on("click", () => tryCatch(setCustomDocProperties)); - $("#get-custom-doc-properties").on("click", () => tryCatch(getCustomDocProperties)); - $("#get-count-custom-doc-properties").on("click", () => tryCatch(getCountCustomDocProperties)); + content: |- + document.getElementById("set-doc-properties").addEventListener("click", () => tryCatch(setDocProperties)); + document.getElementById("get-doc-properties").addEventListener("click", () => tryCatch(getDocProperties)); + document.getElementById("set-custom-doc-properties").addEventListener("click", () => tryCatch(setCustomDocProperties)); + document.getElementById("get-custom-doc-properties").addEventListener("click", () => tryCatch(getCustomDocProperties)); + document.getElementById("get-count-custom-doc-properties").addEventListener("click", () => tryCatch(getCountCustomDocProperties)); async function setDocProperties() { await Excel.run(async (context) => { @@ -123,45 +123,39 @@ script: } language: typescript template: - content: |+ + content: |-

    This sample shows how to set and get document properties.

    -

    Try it out

    -
    -
    -
    -
    - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -173,15 +167,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/data-change-event-details.yaml b/samples/excel/30-events/data-change-event-details.yaml index 3a9724380..d395f6c0c 100644 --- a/samples/excel/30-events/data-change-event-details.yaml +++ b/samples/excel/30-events/data-change-event-details.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#register-handler").on("click", () => tryCatch(registerChangeEventHandler)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-handler").addEventListener("click", () => tryCatch(registerChangeEventHandler)); async function registerChangeEventHandler() { await Excel.run(async (context) => { @@ -73,7 +73,6 @@ template:

    This sample shows how to use table changed events.

    -

    Setup

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -102,15 +101,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/data-changed.yaml b/samples/excel/30-events/data-changed.yaml index 4671c08a4..6bf0e7f7b 100644 --- a/samples/excel/30-events/data-changed.yaml +++ b/samples/excel/30-events/data-changed.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#register-data-changed-handler").on("click", () => tryCatch(registerDataChangedHandler)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-data-changed-handler").addEventListener("click", () => tryCatch(registerDataChangedHandler)); async function registerDataChangedHandler() { await Excel.run(async (context) => { @@ -78,14 +78,12 @@ template:

    This sample shows how to register and use a handler for the data-changed event.

    -

    Set up

    -

    Try it out

    -

    Try it out

    -

    Try it out

    Click the button to register handlers for the pie chart's activated and deactivated events. Then click the chart to activate it. Watch the console. Finally, click the cylinder chart to deactivate the pie chart.

    @@ -168,15 +166,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-chartcollection-added-activated.yaml b/samples/excel/30-events/events-chartcollection-added-activated.yaml index 8e62d8909..49c754f27 100644 --- a/samples/excel/30-events/events-chartcollection-added-activated.yaml +++ b/samples/excel/30-events/events-chartcollection-added-activated.yaml @@ -7,9 +7,9 @@ api_set: ExcelApi: '1.8' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#register-chartcollection-handlers").on("click", () => tryCatch(registerChartCollectionHandlers)); - $("#add-chart").on("click", () => tryCatch(createPieChart)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-chartcollection-handlers").addEventListener("click", () => tryCatch(registerChartCollectionHandlers)); + document.getElementById("add-chart").addEventListener("click", () => tryCatch(createPieChart)); async function registerChartCollectionHandlers() { await Excel.run(async (context) => { @@ -113,14 +113,12 @@ template:

    This sample shows how to register and use handlers for the ChartCollection onAdded, onDeleted, onActivated, and onDeactivated events.

    -

    Set up

    -

    Try it out

    Click the button to register and use handlers for the worksheet's ChartCollection events.

    @@ -149,15 +147,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-comment-event-handler.yaml b/samples/excel/30-events/events-comment-event-handler.yaml index 19daffab1..fbf4d77d1 100644 --- a/samples/excel/30-events/events-comment-event-handler.yaml +++ b/samples/excel/30-events/events-comment-event-handler.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelAPI: '1.12' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); - $("#add-comment").on("click", () => tryCatch(addComment)); - $("#edit-comment").on("click", () => tryCatch(editComment)); - $("#delete-comment").on("click", () => tryCatch(deleteComment)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); + document.getElementById("add-comment").addEventListener("click", () => tryCatch(addComment)); + document.getElementById("edit-comment").addEventListener("click", () => tryCatch(editComment)); + document.getElementById("delete-comment").addEventListener("click", () => tryCatch(deleteComment)); async function registerEventHandlers() { await Excel.run(async (context) => { @@ -152,7 +152,7 @@ template: -
    +
    language: html style: content: |- @@ -167,15 +167,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-disable-events.yaml b/samples/excel/30-events/events-disable-events.yaml index 9dfb2dfca..d7711daf1 100644 --- a/samples/excel/30-events/events-disable-events.yaml +++ b/samples/excel/30-events/events-disable-events.yaml @@ -6,11 +6,11 @@ host: EXCEL api_set: ExcelApi: '1.8' script: - content: | - $("#toggleEvents").on("click", () => tryCatch(toggleEvents)); - $("#setup").on("click", () => tryCatch(setup)); - $("#refreshData").on("click", () => tryCatch(addOrRefreshData)); - $("#registerSumChangedHandlers").on("click", () => tryCatch(registerSumChangedHandlers)); + content: |- + document.getElementById("toggleEvents").addEventListener("click", () => tryCatch(toggleEvents)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("refreshData").addEventListener("click", () => tryCatch(addOrRefreshData)); + document.getElementById("registerSumChangedHandlers").addEventListener("click", () => tryCatch(registerSumChangedHandlers)); async function toggleEvents() { await Excel.run(async (context) => { @@ -175,13 +175,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-formula-changed.yaml b/samples/excel/30-events/events-formula-changed.yaml index 6c10c734b..89e3f9d1f 100644 --- a/samples/excel/30-events/events-formula-changed.yaml +++ b/samples/excel/30-events/events-formula-changed.yaml @@ -6,10 +6,10 @@ host: EXCEL api_set: ExcelAPI: '1.13' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#register-formula-change-handler").on("click", () => tryCatch(registerFormulaChangeHandler)); - $("#trigger-formula-change").on("click", () => tryCatch(triggerFormulaChange)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-formula-change-handler").addEventListener("click", () => tryCatch(registerFormulaChangeHandler)); + document.getElementById("trigger-formula-change").addEventListener("click", () => tryCatch(triggerFormulaChange)); async function registerFormulaChangeHandler() { await Excel.run(async (context) => { @@ -117,15 +117,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-table-changed.yaml b/samples/excel/30-events/events-table-changed.yaml index 10dbe4a25..4f686e1ce 100644 --- a/samples/excel/30-events/events-table-changed.yaml +++ b/samples/excel/30-events/events-table-changed.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: |+ - $("#setup").on("click", () => tryCatch(setup)); - $("#register-on-changed-handler").on("click", () => tryCatch(registerOnChangedHandler)); - $("#change-data").on("click", () => tryCatch(changeData)); - $("#register-on-selection-changed-handler").on("click", () => tryCatch(registerOnSelectionChangedHandler)); - $("#change-selection").on("click", () => tryCatch(changeSelection)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-on-changed-handler").addEventListener("click", () => tryCatch(registerOnChangedHandler)); + document.getElementById("change-data").addEventListener("click", () => tryCatch(changeData)); + document.getElementById("register-on-selection-changed-handler").addEventListener("click", () => tryCatch(registerOnSelectionChangedHandler)); + document.getElementById("change-selection").addEventListener("click", () => tryCatch(changeSelection)); async function registerOnChangedHandler() { await Excel.run(async (context) => { @@ -104,54 +104,44 @@ script: console.error(error); } } - - - language: typescript template: - content: |+ + content: |-

    This sample shows how to register and use event handlers for table onChanged and onSelectionChanged events.

    -

    Set up

    -

    Try it out

    -

    Changing data in a table triggers the data changed event. You can change the data manually or programmatically.

    -
    -

    Changing a range selection in a table triggers the table onSelectionChanged event. You can change selection manually or programmatically.

    - - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -163,15 +153,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-tablecollection-changed.yaml b/samples/excel/30-events/events-tablecollection-changed.yaml index eaf9a1362..a382bcdf7 100644 --- a/samples/excel/30-events/events-tablecollection-changed.yaml +++ b/samples/excel/30-events/events-tablecollection-changed.yaml @@ -6,10 +6,10 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: |+ - $("#setup").on("click", () => tryCatch(setup)); - $("#register-on-changed-handler").on("click", () => tryCatch(registerOnChangedHandler)); - $("#change-data").on("click", () => tryCatch(changeData)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-on-changed-handler").addEventListener("click", () => tryCatch(registerOnChangedHandler)); + document.getElementById("change-data").addEventListener("click", () => tryCatch(changeData)); async function registerOnChangedHandler() { await Excel.run(async (context) => { @@ -111,40 +111,33 @@ script: console.error(error); } } - - - language: typescript template: - content: |+ + content: |-

    This sample shows how to register and use an event handler for table collection onChanged event.

    -

    Set up

    -

    Try it out

    -

    Changing data in tables triggers the data changed event. You can change the data manually or programmatically.

    - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -156,15 +149,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-workbook-activated.yaml b/samples/excel/30-events/events-workbook-activated.yaml index 63fc16bf2..72c944193 100644 --- a/samples/excel/30-events/events-workbook-activated.yaml +++ b/samples/excel/30-events/events-workbook-activated.yaml @@ -6,8 +6,8 @@ host: EXCEL api_set: ExcelAPI: '1.13' script: - content: | - $("#register-event-handler").on("click", () => tryCatch(registerEventHandler)); + content: |- + document.getElementById("register-event-handler").addEventListener("click", () => tryCatch(registerEventHandler)); async function workbookActivated(event: Excel.WorkbookActivatedEventArgs) { await Excel.run(async (context) => { @@ -45,7 +45,6 @@ template:

    Once the event handler is registered, a notification prints to the console when the workbook is activated. Try switching to another application and then switching back to Excel to see the console notification.

    -

    Try it out

    -

    Activated/Deactivated

    -

    Settings

    - + language: html style: content: |- @@ -97,15 +97,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-worksheet.yaml b/samples/excel/30-events/events-worksheet.yaml index 63ab3d364..cbba6505e 100644 --- a/samples/excel/30-events/events-worksheet.yaml +++ b/samples/excel/30-events/events-worksheet.yaml @@ -8,16 +8,16 @@ api_set: ExcelApi: '1.7' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#register-on-selection-changed-handler").on("click", () => tryCatch(registerSelectionChangedHandler)); - $("#select-range").on("click", () => tryCatch(selectRange)); + document.getElementById("register-on-selection-changed-handler").addEventListener("click", () => tryCatch(registerSelectionChangedHandler)); + document.getElementById("select-range").addEventListener("click", () => tryCatch(selectRange)); - $("#register-on-changed-handler").on("click", () => tryCatch(registerOnChangedHandler)); - $("#register-onCalculated-handler").on("click", () => tryCatch(registerOnCalculatedHandler)); - $("#recalculate").on("click", () => tryCatch(recalculate)); + document.getElementById("register-on-changed-handler").addEventListener("click", () => tryCatch(registerOnChangedHandler)); + document.getElementById("register-onCalculated-handler").addEventListener("click", () => tryCatch(registerOnCalculatedHandler)); + document.getElementById("recalculate").addEventListener("click", () => tryCatch(recalculate)); - $("#delete-data").on("click", () => tryCatch(deleteData)); + document.getElementById("delete-data").addEventListener("click", () => tryCatch(deleteData)); async function registerSelectionChangedHandler() { await Excel.run(async (context) => { @@ -172,17 +172,14 @@ template:

    This sample shows how to register and use an event handler for the worksheet onSelectionChanged event.

    -

    Set up

    -

    Try it out

    -

    Selection Changed

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -220,15 +217,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/selection-changed-events.yaml b/samples/excel/30-events/selection-changed-events.yaml index 8950cfb0b..7e8108677 100644 --- a/samples/excel/30-events/selection-changed-events.yaml +++ b/samples/excel/30-events/selection-changed-events.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); async function registerEventHandlers() { await Excel.run(async (context) => { @@ -101,11 +101,10 @@ script: } language: typescript template: - content: |+ + content: |-

    This sample shows how to register and use event handlers for table onChanged and onSelectionChanged events.

    -

    Set up

    -

    Try it out

    -

    The console will log the addresses reported by the different onSelectionChanged events. Change the cell or cells selected in the worksheet to see the results. Try selecting single cells, multiple cells, and multiple discontiguous cells.

    - - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -146,15 +141,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/34-named-item/create-and-remove-named-item.yaml b/samples/excel/34-named-item/create-and-remove-named-item.yaml index d4c24ffbd..5cf8f5325 100644 --- a/samples/excel/34-named-item/create-and-remove-named-item.yaml +++ b/samples/excel/34-named-item/create-and-remove-named-item.yaml @@ -7,13 +7,13 @@ api_set: ExcelApi: '1.4' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#add-name-to-total").on("click", () => tryCatch(addNameToTotal)); - $("#add-name-to-header").on("click", () => tryCatch(addNameToHeader)); - $("#format-named-range").on("click", () => tryCatch(formatRangeByName)); - $("#remove-name").on("click", () => tryCatch(removeName)); - $("#list-named-items").on("click", () => tryCatch(listNamedItems)); + document.getElementById("add-name-to-total").addEventListener("click", () => tryCatch(addNameToTotal)); + document.getElementById("add-name-to-header").addEventListener("click", () => tryCatch(addNameToHeader)); + document.getElementById("format-named-range").addEventListener("click", () => tryCatch(formatRangeByName)); + document.getElementById("remove-name").addEventListener("click", () => tryCatch(removeName)); + document.getElementById("list-named-items").addEventListener("click", () => tryCatch(listNamedItems)); async function addNameToTotal() { await Excel.run(async (context) => { @@ -182,11 +182,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to create, access, and delete named items.

    -

    Setup

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -124,13 +123,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/38-pivottable/pivottable-calculations.yaml b/samples/excel/38-pivottable/pivottable-calculations.yaml index a105bd44d..8fb52a748 100644 --- a/samples/excel/38-pivottable/pivottable-calculations.yaml +++ b/samples/excel/38-pivottable/pivottable-calculations.yaml @@ -8,11 +8,11 @@ api_set: ExcelApi: '1.8' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#deletePivot").on("click", () => tryCatch(deletePivot)); - $("#showPercentages").on("click", () => tryCatch(showPercentages)); - $("#showDifferenceFrom").on("click", () => tryCatch(showDifferenceFrom)); - $("#showSums").on("click", () => tryCatch(showSums)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("deletePivot").addEventListener("click", () => tryCatch(deletePivot)); + document.getElementById("showPercentages").addEventListener("click", () => tryCatch(showPercentages)); + document.getElementById("showDifferenceFrom").addEventListener("click", () => tryCatch(showDifferenceFrom)); + document.getElementById("showSums").addEventListener("click", () => tryCatch(showSums)); async function showPercentages() { await Excel.run(async (context) => { @@ -152,21 +152,19 @@ script: // Note: In a production add-in, you'd want to notify the user through your add-in's UI. console.error(error); } - } + } language: typescript template: content: |-

    This sample shows how to change the calculations of PivotTable data hierarchies.

    -

    Set up

    -

    Try it out

    -

    Clean up

    -

    Adjust the PivotTable

    -

    Adjust formatting

    -

    Delete the PivotTable

    -

    Try it out

    -

    Change functions

    -

    Filtering

    After pressing the "Enable filter" button, manually select the classification filter for the PivotTable -

    Data Manipulation

    -

    Clean up

    -

    Set up

    This creates a data sheet and two PivotTables in two different worksheets. @@ -151,11 +150,9 @@ template: Set up sample

    -

    Try it out

    -
    -

    Try it out

    -

    Filters

    Manual filter

    @@ -289,7 +286,6 @@ template: -

    PivotTable Status

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -126,15 +125,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/38-pivottable/pivottable-slicer.yaml b/samples/excel/38-pivottable/pivottable-slicer.yaml index 05f37c4b8..587b6562b 100644 --- a/samples/excel/38-pivottable/pivottable-slicer.yaml +++ b/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -6,15 +6,15 @@ host: EXCEL api_set: ExcelApi: '1.10' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#add-pivot-table").on("click", () => tryCatch(addPivotTable)); - $("#add-slicer").on("click", () => tryCatch(addSlicer)); - $("#format-slicer").on("click", () => tryCatch(formatSlicer)); - $("#apply-style").on("click", () => tryCatch(applyStyle)); - $("#add-filters").on("click", () => tryCatch(addFilters)); - $("#remove-filters").on("click", () => tryCatch(removeFilters)); - $("#remove-slicer").on("click", () => tryCatch(removeSlicer)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-pivot-table").addEventListener("click", () => tryCatch(addPivotTable)); + document.getElementById("add-slicer").addEventListener("click", () => tryCatch(addSlicer)); + document.getElementById("format-slicer").addEventListener("click", () => tryCatch(formatSlicer)); + document.getElementById("apply-style").addEventListener("click", () => tryCatch(applyStyle)); + document.getElementById("add-filters").addEventListener("click", () => tryCatch(addFilters)); + document.getElementById("remove-filters").addEventListener("click", () => tryCatch(removeFilters)); + document.getElementById("remove-slicer").addEventListener("click", () => tryCatch(removeSlicer)); async function addSlicer() { await Excel.run(async (context) => { @@ -145,7 +145,6 @@ template:

    This sample shows how to work with a slicer on a PivotTable.

    -

    Setup

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -200,15 +199,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/38-pivottable/pivottable-source-data.yaml b/samples/excel/38-pivottable/pivottable-source-data.yaml index f477ead82..2da0cde5e 100644 --- a/samples/excel/38-pivottable/pivottable-source-data.yaml +++ b/samples/excel/38-pivottable/pivottable-source-data.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.15' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#get-pivottable-data-source").on("click", () => tryCatch(getPivotTableDataSource)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("get-pivottable-data-source").addEventListener("click", () => tryCatch(getPivotTableDataSource)); async function getPivotTableDataSource() { // This function logs information about the data source of a PivotTable. @@ -93,20 +93,18 @@ template:

    This sample shows how to get information about the data source of a PivotTable. It returns the type and string representation of the data source.

    Note: This sample works in Excel on Windows and Excel on the web. It doesn't work in Excel on Mac; this is a known issue.

    -

    Set up

    -

    Try it out

    -
    +
    language: html style: content: |- @@ -121,15 +119,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/cell-properties.yaml b/samples/excel/42-range/cell-properties.yaml index 373060786..700c067bf 100644 --- a/samples/excel/42-range/cell-properties.yaml +++ b/samples/excel/42-range/cell-properties.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#set-cell-properties").on("click", () => tryCatch(setCellProperties)); - $("#get-cell-properties").on("click", () => tryCatch(getCellProperties)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("set-cell-properties").addEventListener("click", () => tryCatch(setCellProperties)); + document.getElementById("get-cell-properties").addEventListener("click", () => tryCatch(getCellProperties)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function setCellProperties() { await Excel.run(async (context) => { @@ -148,14 +148,12 @@ template:

    This sample shows how to format a range.

    -

    Set up

    -

    Try it out

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -171,15 +169,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/formatting.yaml b/samples/excel/42-range/formatting.yaml index 859c9621e..f4f5a4a91 100644 --- a/samples/excel/42-range/formatting.yaml +++ b/samples/excel/42-range/formatting.yaml @@ -7,11 +7,11 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#set-font-and-fill-color").on("click", () => tryCatch(setFontAndFillColor)); - $("#set-number-format").on("click", () => tryCatch(setNumberFormat)); + document.getElementById("set-font-and-fill-color").addEventListener("click", () => tryCatch(setFontAndFillColor)); + document.getElementById("set-number-format").addEventListener("click", () => tryCatch(setNumberFormat)); async function setFontAndFillColor() { await Excel.run(async (context) => { @@ -75,18 +75,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to format a range.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -110,15 +108,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/insert-delete-clear-range.yaml b/samples/excel/42-range/insert-delete-clear-range.yaml index 4bda94935..7256c9820 100644 --- a/samples/excel/42-range/insert-delete-clear-range.yaml +++ b/samples/excel/42-range/insert-delete-clear-range.yaml @@ -7,12 +7,12 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#insert-range").on("click", () => tryCatch(insertRange)); - $("#delete-range").on("click", () => tryCatch(deleteRange)); - $("#clear-range").on("click", () => tryCatch(clearRange)); + document.getElementById("insert-range").addEventListener("click", () => tryCatch(insertRange)); + document.getElementById("delete-range").addEventListener("click", () => tryCatch(deleteRange)); + document.getElementById("clear-range").addEventListener("click", () => tryCatch(clearRange)); async function insertRange() { await Excel.run(async (context) => { @@ -85,18 +85,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to insert, delete and clear the contents of a range.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -123,15 +121,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/outline.yaml b/samples/excel/42-range/outline.yaml index 25b6bb2af..206088be3 100644 --- a/samples/excel/42-range/outline.yaml +++ b/samples/excel/42-range/outline.yaml @@ -6,14 +6,14 @@ host: EXCEL api_set: ExcelApi: '1.10' script: - content: | - $("#setup-data").on("click", () => tryCatch(setupData)); - $("#setup-totals").on("click", () => tryCatch(setupTotals)); - $("#group-rows").on("click", () => tryCatch(groupRows)); - $("#group-columns").on("click", () => tryCatch(groupColumns)); - $("#collapse-outline").on("click", () => tryCatch(collapseOutline)); - $("#expand-outline").on("click", () => tryCatch(expandOutline)); - $("#ungroup").on("click", () => tryCatch(ungroup)); + content: |- + document.getElementById("setup-data").addEventListener("click", () => tryCatch(setupData)); + document.getElementById("setup-totals").addEventListener("click", () => tryCatch(setupTotals)); + document.getElementById("group-rows").addEventListener("click", () => tryCatch(groupRows)); + document.getElementById("group-columns").addEventListener("click", () => tryCatch(groupColumns)); + document.getElementById("collapse-outline").addEventListener("click", () => tryCatch(collapseOutline)); + document.getElementById("expand-outline").addEventListener("click", () => tryCatch(expandOutline)); + document.getElementById("ungroup").addEventListener("click", () => tryCatch(ungroup)); async function groupRows() { Excel.run(async (context) => { @@ -174,7 +174,6 @@ template:

    This sample shows how to group and ungroup rows and columns for an outline.

    -

    Set up

    -

    Try it out

    -
    + language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -201,15 +201,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-areas.yaml b/samples/excel/42-range/range-areas.yaml index 91f2cce7f..4b08ddc0a 100644 --- a/samples/excel/42-range/range-areas.yaml +++ b/samples/excel/42-range/range-areas.yaml @@ -6,13 +6,13 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#reset").on("click", () => tryCatch(reset)); - $("#color-selected-ranges").on("click", () => tryCatch(colorSelectedRanges)); - $("#color-specified-ranges").on("click", () => tryCatch(colorSpecifiedRanges)); - $("#color-all-formula-ranges").on("click", () => tryCatch(colorAllFormulaRanges)); - $("#color-all-logical-text-ranges").on("click", () => tryCatch(colorAllLogicalAndTextRanges)); - $("#read-properties-specified-ranges").on("click", () => tryCatch(readPropertiesOfSpecifiedRanges)); + content: |- + document.getElementById("reset").addEventListener("click", () => tryCatch(reset)); + document.getElementById("color-selected-ranges").addEventListener("click", () => tryCatch(colorSelectedRanges)); + document.getElementById("color-specified-ranges").addEventListener("click", () => tryCatch(colorSpecifiedRanges)); + document.getElementById("color-all-formula-ranges").addEventListener("click", () => tryCatch(colorAllFormulaRanges)); + document.getElementById("color-all-logical-text-ranges").addEventListener("click", () => tryCatch(colorAllLogicalAndTextRanges)); + document.getElementById("read-properties-specified-ranges").addEventListener("click", () => tryCatch(readPropertiesOfSpecifiedRanges)); async function colorSelectedRanges() { await Excel.run(async (context) => { @@ -123,11 +123,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to apply actions simultaneously to multiple, discontiguous ranges. Some of these ranges are found using the Range object's getSpecialCells method.

    -

    Set up

    -

    Try it out

    -
    + language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -160,15 +160,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-direct-dependents.yaml b/samples/excel/42-range/range-direct-dependents.yaml index b929a80b2..339653430 100644 --- a/samples/excel/42-range/range-direct-dependents.yaml +++ b/samples/excel/42-range/range-direct-dependents.yaml @@ -6,11 +6,11 @@ host: EXCEL api_set: ExcelAPI: '1.13' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#select-D3").on("click", () => tryCatch(selectD3)); - $("#select-E4").on("click", () => tryCatch(selectE4)); - $("#get-direct-dependents").on("click", () => tryCatch(getDirectDependents)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("select-D3").addEventListener("click", () => tryCatch(selectD3)); + document.getElementById("select-E4").addEventListener("click", () => tryCatch(selectE4)); + document.getElementById("get-direct-dependents").addEventListener("click", () => tryCatch(getDirectDependents)); /** Select a cell with direct dependents on the same worksheet. */ async function selectD3() { @@ -119,14 +119,12 @@ template:

    This sample shows how to find and highlight the dependents of the currently selected cell. Dependent cells contain formulas that refer to other cells.

    -

    Set up

    -

    Try it out

    Cells in the 'E' column have direct dependents on the same worksheet. Cells in the 'F' column have direct dependents on another worksheet.

    @@ -155,15 +153,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-find.yaml b/samples/excel/42-range/range-find.yaml index e447eceb7..4b0c31b63 100644 --- a/samples/excel/42-range/range-find.yaml +++ b/samples/excel/42-range/range-find.yaml @@ -7,12 +7,12 @@ api_set: ExcelApi: '1.9' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#findText").on("click", () => tryCatch(findText)); - $("#findTextWithNullCheck").on("click", () => tryCatch(findTextWithNullCheck)); - $("#toggleComplete").on("click", () => tryCatch(toggleComplete)); - $("#toggleCase").on("click", () => tryCatch(toggleCase)); - $("#toggleDirection").on("click", () => tryCatch(toggleDirection)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("findText").addEventListener("click", () => tryCatch(findText)); + document.getElementById("findTextWithNullCheck").addEventListener("click", () => tryCatch(findTextWithNullCheck)); + document.getElementById("toggleComplete").addEventListener("click", () => tryCatch(toggleComplete)); + document.getElementById("toggleCase").addEventListener("click", () => tryCatch(toggleCase)); + document.getElementById("toggleDirection").addEventListener("click", () => tryCatch(toggleDirection)); let isCompleteMatchToggle = false; let isMatchCaseToggle = false; @@ -159,13 +159,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-get-range-edge.yaml b/samples/excel/42-range/range-get-range-edge.yaml index e279163c5..1f28f89a2 100644 --- a/samples/excel/42-range/range-get-range-edge.yaml +++ b/samples/excel/42-range/range-get-range-edge.yaml @@ -6,14 +6,14 @@ host: EXCEL api_set: ExcelAPI: '1.13' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#select-E9").on("click", () => tryCatch(selectE9)); - $("#select-D8-E9").on("click", () => tryCatch(selectD8E9)); - $("#get-range-edge-left").on("click", () => tryCatch(getRangeEdgeLeft)); - $("#get-range-edge-up").on("click", () => tryCatch(getRangeEdgeUp)); - $("#get-extended-range-right").on("click", () => tryCatch(getExtendedRangeRight)); - $("#get-extended-range-down").on("click", () => tryCatch(getExtendedRangeDown)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("select-E9").addEventListener("click", () => tryCatch(selectE9)); + document.getElementById("select-D8-E9").addEventListener("click", () => tryCatch(selectD8E9)); + document.getElementById("get-range-edge-left").addEventListener("click", () => tryCatch(getRangeEdgeLeft)); + document.getElementById("get-range-edge-up").addEventListener("click", () => tryCatch(getRangeEdgeUp)); + document.getElementById("get-extended-range-right").addEventListener("click", () => tryCatch(getExtendedRangeRight)); + document.getElementById("get-extended-range-down").addEventListener("click", () => tryCatch(getExtendedRangeDown)); async function getRangeEdgeLeft() { await Excel.run(async (context) => { @@ -179,7 +179,6 @@ template: Add sample data
    -

    Try it out

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -313,15 +311,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-merged-ranges.yaml b/samples/excel/42-range/range-merged-ranges.yaml index 9f38bbbb6..c43bd925a 100644 --- a/samples/excel/42-range/range-merged-ranges.yaml +++ b/samples/excel/42-range/range-merged-ranges.yaml @@ -6,10 +6,10 @@ host: EXCEL api_set: ExcelAPI: '1.13' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#create-merged-range").on("click", () => tryCatch(createMergedRange)); - $("#get-merged-range").on("click", () => tryCatch(getMergedRange)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("create-merged-range").addEventListener("click", () => tryCatch(createMergedRange)); + document.getElementById("get-merged-range").addEventListener("click", () => tryCatch(getMergedRange)); async function createMergedRange() { await Excel.run(async (context) => { @@ -95,14 +95,12 @@ template:

    This sample shows how to create and find merged ranges in a worksheet.

    -

    Set up

    -

    Try it out

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -248,15 +246,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-remove-duplicates.yaml b/samples/excel/42-range/range-remove-duplicates.yaml index e2a182d4a..f89dbda7c 100644 --- a/samples/excel/42-range/range-remove-duplicates.yaml +++ b/samples/excel/42-range/range-remove-duplicates.yaml @@ -6,11 +6,11 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#delete-name").on("click", () => tryCatch(deleteName)); - $("#delete-distributor").on("click", () => tryCatch(deleteDistributor)); + document.getElementById("delete-name").addEventListener("click", () => tryCatch(deleteName)); + document.getElementById("delete-distributor").addEventListener("click", () => tryCatch(deleteDistributor)); async function deleteName() { await Excel.run(async (context) => { @@ -83,18 +83,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to remove rows with duplicate column values from a range.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -119,15 +117,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-text-orientation.yaml b/samples/excel/42-range/range-text-orientation.yaml index 9c6cc34ae..d10058503 100644 --- a/samples/excel/42-range/range-text-orientation.yaml +++ b/samples/excel/42-range/range-text-orientation.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#set-text-orientation").on("click", () => tryCatch(setTextOrientation)); - $("#get-text-orientation").on("click", () => tryCatch(getTextOrientation)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("set-text-orientation").addEventListener("click", () => tryCatch(setTextOrientation)); + document.getElementById("get-text-orientation").addEventListener("click", () => tryCatch(getTextOrientation)); async function setTextOrientation() { await Excel.run(async (context) => { @@ -75,18 +75,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to set and get the text orientation within a range.

    -

    Set up

    -

    Try it out

    @@ -101,7 +99,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -113,15 +111,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/selected-range.yaml b/samples/excel/42-range/selected-range.yaml index de07de00d..6ae16734d 100644 --- a/samples/excel/42-range/selected-range.yaml +++ b/samples/excel/42-range/selected-range.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.1' script: - content: | - $("#get-selection").on("click", () => tryCatch(getSelection)); - $("#set-selection").on("click", () => tryCatch(setSelection)); + content: |- + document.getElementById("get-selection").addEventListener("click", () => tryCatch(getSelection)); + document.getElementById("set-selection").addEventListener("click", () => tryCatch(setSelection)); async function getSelection() { await Excel.run(async (context) => { @@ -45,11 +45,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get and set the currently selected range.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -73,15 +72,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/set-get-values.yaml b/samples/excel/42-range/set-get-values.yaml index c6647d0ca..5e44ab46d 100644 --- a/samples/excel/42-range/set-get-values.yaml +++ b/samples/excel/42-range/set-get-values.yaml @@ -7,17 +7,17 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - - $("#set-value").on("click", () => tryCatch(setValue)); - $("#set-values").on("click", () => tryCatch(setValues)); - $("#set-formula").on("click", () => tryCatch(setFormula)); - $("#set-formulas").on("click", () => tryCatch(setFormulas)); - $("#set-formulas-r1c1").on("click", () => tryCatch(setFormulasR1C1)); - $("#get-values").on("click", () => tryCatch(getValues)); - $("#get-texts").on("click", () => tryCatch(getTexts)); - $("#get-formulas").on("click", () => tryCatch(getFormulas)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + document.getElementById("set-value").addEventListener("click", () => tryCatch(setValue)); + document.getElementById("set-values").addEventListener("click", () => tryCatch(setValues)); + document.getElementById("set-formula").addEventListener("click", () => tryCatch(setFormula)); + document.getElementById("set-formulas").addEventListener("click", () => tryCatch(setFormulas)); + document.getElementById("set-formulas-r1c1").addEventListener("click", () => tryCatch(setFormulasR1C1)); + document.getElementById("get-values").addEventListener("click", () => tryCatch(getValues)); + document.getElementById("get-texts").addEventListener("click", () => tryCatch(getTexts)); + document.getElementById("get-formulas").addEventListener("click", () => tryCatch(getFormulas)); async function setValue() { await Excel.run(async (context) => { @@ -173,21 +173,18 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to set and get values and formulas for a range.

    -

    Set up

    -

    Try it out

    - @@ -203,9 +200,7 @@ template: -
    - @@ -218,7 +213,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -230,15 +225,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/style.yaml b/samples/excel/42-range/style.yaml index f322a2d58..67e2fdaaa 100644 --- a/samples/excel/42-range/style.yaml +++ b/samples/excel/42-range/style.yaml @@ -7,14 +7,14 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: |+ - $("#setup").on("click", () => tryCatch(setup)); - $("#add-new-style").on("click", () => tryCatch(addNewStyle)); - $("#apply-new-style").on("click", () => tryCatch(applyNewStyle)); - $("#apply-built-in-style").on("click", () => tryCatch(applyBuiltInStyle)); - $("#get-style-font").on("click", () => tryCatch(getStyleFontProperties)); - $("#get-style-alignment").on("click", () => tryCatch(getStyleAlignmentProperties)); - $("#delete-new-style").on("click", () => tryCatch(deleteNewStyle)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-new-style").addEventListener("click", () => tryCatch(addNewStyle)); + document.getElementById("apply-new-style").addEventListener("click", () => tryCatch(applyNewStyle)); + document.getElementById("apply-built-in-style").addEventListener("click", () => tryCatch(applyBuiltInStyle)); + document.getElementById("get-style-font").addEventListener("click", () => tryCatch(getStyleFontProperties)); + document.getElementById("get-style-alignment").addEventListener("click", () => tryCatch(getStyleAlignmentProperties)); + document.getElementById("delete-new-style").addEventListener("click", () => tryCatch(deleteNewStyle)); async function addNewStyle() { await Excel.run(async (context) => { @@ -151,23 +151,18 @@ script: console.error(error); } } - - - language: typescript template: - content: | + content: |-

    This sample shows how to add, apply, get and delete styles.

    -

    Set up

    -

    Try it out

    Add new style will throw an error if the style has already been added.

    @@ -175,31 +170,26 @@ template: Add new style
    -
    -
    -
    -
    -

    Clean up

    Delete new style throws an error if the style doesn't exist (that is, hasn't been added). Deleting the style also causes the other buttons using the style to fail.

    @@ -221,15 +211,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/used-range.yaml b/samples/excel/42-range/used-range.yaml index 542ddab5b..d1761bbfe 100644 --- a/samples/excel/42-range/used-range.yaml +++ b/samples/excel/42-range/used-range.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#try-create-chart-from-table").on("click", () => tryCatch(tryCreateChartFromEmptyTable)); - $("#fill-table").on("click", () => tryCatch(fillTable)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("try-create-chart-from-table").addEventListener("click", () => tryCatch(tryCreateChartFromEmptyTable)); + document.getElementById("fill-table").addEventListener("click", () => tryCatch(fillTable)); async function tryCreateChartFromEmptyTable() { await Excel.run(async (context) => { @@ -100,18 +100,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample creates a chart from a table, but only if there's data in the table.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -135,15 +133,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/44-shape/shape-create-and-delete.yaml b/samples/excel/44-shape/shape-create-and-delete.yaml index 524efc7d6..2c07a8a7f 100644 --- a/samples/excel/44-shape/shape-create-and-delete.yaml +++ b/samples/excel/44-shape/shape-create-and-delete.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#createHexagon").on("click", () => tryCatch(createHexagon)); - $("#createTriangle").on("click", () => tryCatch(createTriangle)); - $("#createSmileyFace").on("click", () => tryCatch(createSmileyFace)); - $("#removeAll").on("click", () => tryCatch(removeAll)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("createHexagon").addEventListener("click", () => tryCatch(createHexagon)); + document.getElementById("createTriangle").addEventListener("click", () => tryCatch(createTriangle)); + document.getElementById("createSmileyFace").addEventListener("click", () => tryCatch(createSmileyFace)); + document.getElementById("removeAll").addEventListener("click", () => tryCatch(removeAll)); async function createHexagon() { await Excel.run(async (context) => { @@ -128,15 +128,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/44-shape/shape-groups.yaml b/samples/excel/44-shape/shape-groups.yaml index 743bac069..aa3b2d605 100644 --- a/samples/excel/44-shape/shape-groups.yaml +++ b/samples/excel/44-shape/shape-groups.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#createShapes").on("click", () => tryCatch(createShapes)); - $("#groupShapes").on("click", () => tryCatch(groupShapes)); - $("#moveGroup").on("click", () => tryCatch(moveGroup)); - $("#ungroupShapes").on("click", () => tryCatch(ungroupShapes)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("createShapes").addEventListener("click", () => tryCatch(createShapes)); + document.getElementById("groupShapes").addEventListener("click", () => tryCatch(groupShapes)); + document.getElementById("moveGroup").addEventListener("click", () => tryCatch(moveGroup)); + document.getElementById("ungroupShapes").addEventListener("click", () => tryCatch(ungroupShapes)); async function groupShapes() { await Excel.run(async (context) => { @@ -143,15 +143,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/44-shape/shape-images.yaml b/samples/excel/44-shape/shape-images.yaml index e02210f49..e931e3fd3 100644 --- a/samples/excel/44-shape/shape-images.yaml +++ b/samples/excel/44-shape/shape-images.yaml @@ -6,12 +6,12 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); $("#selectedFile").on("change", () => tryCatch(readImageFromFile)); - $("#flipImage").on("click", () => tryCatch(flipImage)); - $("#getImageFormat").on("click", () => tryCatch(getImageFormat)); - $("#writeOutImageString").on("click", () => tryCatch(writeOutImageString)); + document.getElementById("flipImage").addEventListener("click", () => tryCatch(flipImage)); + document.getElementById("getImageFormat").addEventListener("click", () => tryCatch(getImageFormat)); + document.getElementById("writeOutImageString").addEventListener("click", () => tryCatch(writeOutImageString)); async function readImageFromFile() { const myFile = document.getElementById("selectedFile"); @@ -127,15 +127,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/44-shape/shape-lines.yaml b/samples/excel/44-shape/shape-lines.yaml index 396bdf0b5..58577bab0 100644 --- a/samples/excel/44-shape/shape-lines.yaml +++ b/samples/excel/44-shape/shape-lines.yaml @@ -7,17 +7,17 @@ api_set: ExcelApi: '1.9' script: content: |- - $("#setup").on("click", () => tryCatch(setup)); - $("#createShapes").on("click", () => tryCatch(createShapes)); - $("#addStraightLine").on("click", () => tryCatch(addStraightLine)); - $("#addCurvedLine").on("click", () => tryCatch(addCurvedLine)); - $("#arrowLine").on("click", () => tryCatch(arrowLine)); - $("#diamondLine").on("click", () => tryCatch(diamondLine)); - $("#connectStraightLine").on("click", () => tryCatch(connectStraightLine)); - $("#disconnectStraightLine").on("click", () => tryCatch(disconnectStraightLine)); - $("#connectCurvedLine").on("click", () => tryCatch(connectCurvedLine)); - $("#disconnectCurvedLine").on("click", () => tryCatch(disconnectCurvedLine)); - $("#deleteLines").on("click", () => tryCatch(deleteLines)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("createShapes").addEventListener("click", () => tryCatch(createShapes)); + document.getElementById("addStraightLine").addEventListener("click", () => tryCatch(addStraightLine)); + document.getElementById("addCurvedLine").addEventListener("click", () => tryCatch(addCurvedLine)); + document.getElementById("arrowLine").addEventListener("click", () => tryCatch(arrowLine)); + document.getElementById("diamondLine").addEventListener("click", () => tryCatch(diamondLine)); + document.getElementById("connectStraightLine").addEventListener("click", () => tryCatch(connectStraightLine)); + document.getElementById("disconnectStraightLine").addEventListener("click", () => tryCatch(disconnectStraightLine)); + document.getElementById("connectCurvedLine").addEventListener("click", () => tryCatch(connectCurvedLine)); + document.getElementById("disconnectCurvedLine").addEventListener("click", () => tryCatch(disconnectCurvedLine)); + document.getElementById("deleteLines").addEventListener("click", () => tryCatch(deleteLines)); async function addStraightLine() { await Excel.run(async (context) => { @@ -219,13 +219,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-move-and-order.yaml b/samples/excel/44-shape/shape-move-and-order.yaml index a5e6c3d1b..b674aded7 100644 --- a/samples/excel/44-shape/shape-move-and-order.yaml +++ b/samples/excel/44-shape/shape-move-and-order.yaml @@ -6,14 +6,14 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#moveLeft").on("click", () => tryCatch(moveLeft)); - $("#moveDown").on("click", () => tryCatch(moveDown)); - $("#rotate").on("click", () => tryCatch(rotate)); - $("#scaleUp").on("click", () => tryCatch(scaleUp)); - $("#moveZOrderDown").on("click", () => tryCatch(moveZOrderDown)); - $("#createShapes").on("click", () => tryCatch(createShapes)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("moveLeft").addEventListener("click", () => tryCatch(moveLeft)); + document.getElementById("moveDown").addEventListener("click", () => tryCatch(moveDown)); + document.getElementById("rotate").addEventListener("click", () => tryCatch(rotate)); + document.getElementById("scaleUp").addEventListener("click", () => tryCatch(scaleUp)); + document.getElementById("moveZOrderDown").addEventListener("click", () => tryCatch(moveZOrderDown)); + document.getElementById("createShapes").addEventListener("click", () => tryCatch(createShapes)); async function moveLeft() { await Excel.run(async (context) => { @@ -158,15 +158,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/44-shape/shape-textboxes.yaml b/samples/excel/44-shape/shape-textboxes.yaml index 12e7bcdee..412051e0e 100644 --- a/samples/excel/44-shape/shape-textboxes.yaml +++ b/samples/excel/44-shape/shape-textboxes.yaml @@ -6,13 +6,13 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#createGeometricShape").on("click", () => tryCatch(createGeometricShape)); - $("#createTextbox").on("click", () => tryCatch(createTextbox)); - $("#centerTextbox").on("click", () => tryCatch(centerTextbox)); - $("#autoSizeText").on("click", () => tryCatch(autoSizeText)); - $("#deleteText").on("click", () => tryCatch(deleteText)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("createGeometricShape").addEventListener("click", () => tryCatch(createGeometricShape)); + document.getElementById("createTextbox").addEventListener("click", () => tryCatch(createTextbox)); + document.getElementById("centerTextbox").addEventListener("click", () => tryCatch(centerTextbox)); + document.getElementById("autoSizeText").addEventListener("click", () => tryCatch(autoSizeText)); + document.getElementById("deleteText").addEventListener("click", () => tryCatch(deleteText)); async function createTextbox() { @@ -133,15 +133,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml index 14d38ec3d..4b5cf701f 100644 --- a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml +++ b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml @@ -7,12 +7,12 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#add-row").on("click", () => tryCatch(addRow)); - $("#add-column").on("click", () => tryCatch(addColumn)); - $("#add-calculated-column").on("click", () => tryCatch(addCalculatedColumn)); + document.getElementById("add-row").addEventListener("click", () => tryCatch(addRow)); + document.getElementById("add-column").addEventListener("click", () => tryCatch(addColumn)); + document.getElementById("add-calculated-column").addEventListener("click", () => tryCatch(addCalculatedColumn)); async function addRow() { await Excel.run(async (context) => { @@ -126,18 +126,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to add columns and rows to a table.

    -

    Set up

    -

    Try it out

    Press the following buttons in order, so rows and columns of appropriate sizes are added.

    @@ -153,7 +151,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -165,15 +163,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/convert-range-to-table.yaml b/samples/excel/46-table/convert-range-to-table.yaml index c0e31603c..2476e7886 100644 --- a/samples/excel/46-table/convert-range-to-table.yaml +++ b/samples/excel/46-table/convert-range-to-table.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#convert-range-to-table").on("click", () => tryCatch(convertRangeToTable)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("convert-range-to-table").addEventListener("click", () => tryCatch(convertRangeToTable)); async function convertRangeToTable() { await Excel.run(async (context) => { @@ -59,18 +59,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to convert a range to a table.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -91,15 +89,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/create-table.yaml b/samples/excel/46-table/create-table.yaml index 2b4f00bc9..7c458bb57 100644 --- a/samples/excel/46-table/create-table.yaml +++ b/samples/excel/46-table/create-table.yaml @@ -7,8 +7,8 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#create-table").on("click", () => tryCatch(createTable)); + content: |- + document.getElementById("create-table").addEventListener("click", () => tryCatch(createTable)); async function createTable() { await Excel.run(async (context) => { @@ -51,11 +51,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to create a table.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -76,15 +75,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/filter-data.yaml b/samples/excel/46-table/filter-data.yaml index e55d41ca1..781dc4ac6 100644 --- a/samples/excel/46-table/filter-data.yaml +++ b/samples/excel/46-table/filter-data.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#filter-table").on("click", () => tryCatch(filterTable)); - $("#clear-filters").on("click", () => tryCatch(clearFilters)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("filter-table").addEventListener("click", () => tryCatch(filterTable)); + document.getElementById("clear-filters").addEventListener("click", () => tryCatch(clearFilters)); async function filterTable() { await Excel.run(async (context) => { @@ -87,18 +87,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to filter the data in a table using different filter types.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -122,15 +120,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/formatting.yaml b/samples/excel/46-table/formatting.yaml index 87e629d4f..521c164d6 100644 --- a/samples/excel/46-table/formatting.yaml +++ b/samples/excel/46-table/formatting.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#format-table").on("click", () => tryCatch(formatTable)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("format-table").addEventListener("click", () => tryCatch(formatTable)); async function formatTable() { await Excel.run(async (context) => { @@ -66,18 +66,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to format the different components of a table.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -98,15 +96,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/get-data-from-table.yaml b/samples/excel/46-table/get-data-from-table.yaml index 7620680aa..118e50b13 100644 --- a/samples/excel/46-table/get-data-from-table.yaml +++ b/samples/excel/46-table/get-data-from-table.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#get-data-from-table").on("click", () => tryCatch(getData)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("get-data-from-table").addEventListener("click", () => tryCatch(getData)); async function getData() { await Excel.run(async (context) => { @@ -79,29 +79,25 @@ script: } language: typescript template: - content: |+ + content: |-

    This sample shows how to get data from a table and write it to the sheet.

    -

    Set up

    -

    Try it out

    - - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -113,15 +109,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml index 33af4d50e..027847e85 100644 --- a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml +++ b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml @@ -7,11 +7,11 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: |+ - $("#create-table").on("click", () => tryCatch(createTable)); - $("#filter-table").on("click", () => tryCatch(filterTable)); - $("#get-range").on("click", () => tryCatch(getRange)); - $("#get-visible-range").on("click", () => tryCatch(getVisibleRange)); + content: |- + document.getElementById("create-table").addEventListener("click", () => tryCatch(createTable)); + document.getElementById("filter-table").addEventListener("click", () => tryCatch(filterTable)); + document.getElementById("get-range").addEventListener("click", () => tryCatch(getRange)); + document.getElementById("get-visible-range").addEventListener("click", () => tryCatch(getVisibleRange)); async function getVisibleRange() { await Excel.run(async (context) => { @@ -94,14 +94,12 @@ script: console.error(error); } } - language: typescript template: - content: |+ + content: |-

    This sample shows how to filter the data in a table using different filter types.

    -

    Set up

    -

    Try it out

    - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -136,15 +132,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/import-json-data.yaml b/samples/excel/46-table/import-json-data.yaml index 35786a451..30e9bb971 100644 --- a/samples/excel/46-table/import-json-data.yaml +++ b/samples/excel/46-table/import-json-data.yaml @@ -7,8 +7,8 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#import-json-data").on("click", () => tryCatch(importJsonData)); + content: |- + document.getElementById("import-json-data").addEventListener("click", () => tryCatch(importJsonData)); async function importJsonData() { await Excel.run(async (context) => { @@ -113,21 +113,19 @@ script: } language: typescript template: - content: |+ + content: |-

    This sample shows how to import json data into a new table.

    -

    Try it out

    - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -139,15 +137,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/46-table/resize-table.yaml b/samples/excel/46-table/resize-table.yaml index dd3dbec90..1001e0bf0 100644 --- a/samples/excel/46-table/resize-table.yaml +++ b/samples/excel/46-table/resize-table.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelAPI: '1.13' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#resize-table").on("click", () => tryCatch(resizeTable)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("resize-table").addEventListener("click", () => tryCatch(resizeTable)); async function resizeTable() { await Excel.run(async (context) => { @@ -67,14 +67,12 @@ template:

    This sample shows how to resize a table.

    -

    Set up

    -

    Try it out

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -105,15 +103,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/create-get-change-delete-settings.yaml b/samples/excel/50-workbook/create-get-change-delete-settings.yaml index 51f102ebf..6c5dcc12d 100644 --- a/samples/excel/50-workbook/create-get-change-delete-settings.yaml +++ b/samples/excel/50-workbook/create-get-change-delete-settings.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#create-setting").on("click", () => tryCatch(createSetting)); - $("#change-setting").on("click", () => tryCatch(changeSetting)); - $("#delete-setting").on("click", () => tryCatch(deleteSetting)); + content: |- + document.getElementById("create-setting").addEventListener("click", () => tryCatch(createSetting)); + document.getElementById("change-setting").addEventListener("click", () => tryCatch(changeSetting)); + document.getElementById("delete-setting").addEventListener("click", () => tryCatch(deleteSetting)); async function createSetting() { await Excel.run(async (context) => { @@ -77,7 +77,6 @@ template:

    This sample shows how to create, get, change, and delete settings in the workbook.

    -

    Try it out

    Press the button to create and display a setting.

    @@ -95,7 +94,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -107,15 +106,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/create-workbook.yaml b/samples/excel/50-workbook/create-workbook.yaml index e3df092fb..5bb4f7f73 100644 --- a/samples/excel/50-workbook/create-workbook.yaml +++ b/samples/excel/50-workbook/create-workbook.yaml @@ -7,8 +7,8 @@ host: EXCEL api_set: ExcelApi: '1.8' script: - content: | - $("#create-new-blank-workbook").on("click", () => tryCatch(createBlankWorkbook)); + content: |- + document.getElementById("create-new-blank-workbook").addEventListener("click", () => tryCatch(createBlankWorkbook)); $("#file").on("change", () => tryCatch(createWorkbookFromExisting)); async function createBlankWorkbook() { @@ -51,7 +51,6 @@ template:

    This sample shows how to create a new, empty workbook and how to create a new workbook by copying an existing one.

    -

    Try it out

    Create empty workbook

    @@ -78,15 +77,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/culture-info-date-time.yaml b/samples/excel/50-workbook/culture-info-date-time.yaml index d460268f5..cde8c9289 100644 --- a/samples/excel/50-workbook/culture-info-date-time.yaml +++ b/samples/excel/50-workbook/culture-info-date-time.yaml @@ -6,10 +6,10 @@ host: EXCEL api_set: ExcelAPI: '1.12' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#display-date-time-setting").on("click", () => tryCatch(displayDateTimeSetting)); - $("#write-date-time-setting").on("click", () => tryCatch(writeDateTimeSetting)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("display-date-time-setting").addEventListener("click", () => tryCatch(displayDateTimeSetting)); + document.getElementById("write-date-time-setting").addEventListener("click", () => tryCatch(writeDateTimeSetting)); async function displayDateTimeSetting() { await Excel.run(async (context) => { @@ -116,10 +116,10 @@ template:

    -
    +
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -131,15 +131,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/culture-info.yaml b/samples/excel/50-workbook/culture-info.yaml index 92c0950c2..8de992922 100644 --- a/samples/excel/50-workbook/culture-info.yaml +++ b/samples/excel/50-workbook/culture-info.yaml @@ -6,11 +6,11 @@ host: EXCEL api_set: ExcelApi: '1.11' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#display-culture-info").on("click", () => tryCatch(displayCultureInfo)); - $("#write-decimal").on("click", () => tryCatch(writeDecimal)); - $("#write-big-number").on("click", () => tryCatch(writeBigNumber)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("display-culture-info").addEventListener("click", () => tryCatch(displayCultureInfo)); + document.getElementById("write-decimal").addEventListener("click", () => tryCatch(writeDecimal)); + document.getElementById("write-big-number").addEventListener("click", () => tryCatch(writeBigNumber)); async function displayCultureInfo() { await Excel.run(async (context) => { @@ -111,14 +111,12 @@ template:

    This sample shows how to apply the cultural settings APIs to help normalize data.

    -

    Setup

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -145,15 +143,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/data-protection.yaml b/samples/excel/50-workbook/data-protection.yaml index a1156ca55..e22d27213 100644 --- a/samples/excel/50-workbook/data-protection.yaml +++ b/samples/excel/50-workbook/data-protection.yaml @@ -6,16 +6,16 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#protect-data-in-worksheet").on("click", () => tryCatch(protectDataInWorksheet)); - $("#unprotect-data-in-worksheet").on("click", () => tryCatch(unprotectDataInWorksheet)); - $("#protect-workbook-structure").on("click", () => tryCatch(protectWorkbookStructure)); - $("#unprotect-workbook-structure").on("click", () => tryCatch(unprotectWorkbookStructure)); - $("#password-protect-data-in-worksheet").on("click", () => tryCatch(passwordProtectDataInWorksheet)); - $("#password-unprotect-data-in-worksheet").on("click", () => tryCatch(passwordUnprotectDataInWorksheet)); - $("#password-protect-workbook-structure").on("click", () => tryCatch(passwordProtectWorkbookStructure)); - $("#password-unprotect-workbook-structure").on("click", () => tryCatch(passwordUnprotectWorkbookStructure)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("protect-data-in-worksheet").addEventListener("click", () => tryCatch(protectDataInWorksheet)); + document.getElementById("unprotect-data-in-worksheet").addEventListener("click", () => tryCatch(unprotectDataInWorksheet)); + document.getElementById("protect-workbook-structure").addEventListener("click", () => tryCatch(protectWorkbookStructure)); + document.getElementById("unprotect-workbook-structure").addEventListener("click", () => tryCatch(unprotectWorkbookStructure)); + document.getElementById("password-protect-data-in-worksheet").addEventListener("click", () => tryCatch(passwordProtectDataInWorksheet)); + document.getElementById("password-unprotect-data-in-worksheet").addEventListener("click", () => tryCatch(passwordUnprotectDataInWorksheet)); + document.getElementById("password-protect-workbook-structure").addEventListener("click", () => tryCatch(passwordProtectWorkbookStructure)); + document.getElementById("password-unprotect-workbook-structure").addEventListener("click", () => tryCatch(passwordUnprotectWorkbookStructure)); async function protectDataInWorksheet() { await Excel.run(async (context) => { @@ -178,14 +178,12 @@ template:

    This sample shows how to protect a worksheet's data and the workbook's structure.

    -

    Set up

    -

    Try it out

    Protect without password

    @@ -251,15 +249,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/workbook-built-in-functions.yaml b/samples/excel/50-workbook/workbook-built-in-functions.yaml index e3a260e1c..3490d043b 100644 --- a/samples/excel/50-workbook/workbook-built-in-functions.yaml +++ b/samples/excel/50-workbook/workbook-built-in-functions.yaml @@ -6,10 +6,10 @@ host: EXCEL api_set: ExcelAPI: '1.2' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#call-vlookup").on("click", () => tryCatch(callVlookup)); - $("#nest-functions").on("click", () => tryCatch(nestFunctions)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("call-vlookup").addEventListener("click", () => tryCatch(callVlookup)); + document.getElementById("nest-functions").addEventListener("click", () => tryCatch(nestFunctions)); async function callVlookup() { await Excel.run(async (context) => { @@ -83,7 +83,6 @@ template:

    This sample shows how to use and nest the built-in Excel functions VLOOKUP and SUM. The sample uses VLOOKUP to return data, and then it uses SUM to combine data returned by VLOOKUP.

    -

    Setup

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -113,15 +112,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/workbook-calculation.yaml b/samples/excel/50-workbook/workbook-calculation.yaml index 5c19fab32..2d3b8aaea 100644 --- a/samples/excel/50-workbook/workbook-calculation.yaml +++ b/samples/excel/50-workbook/workbook-calculation.yaml @@ -6,14 +6,14 @@ host: EXCEL api_set: ExcelApi: '1.11' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#register-onCalculated-handler").on("click", () => tryCatch(registerOnCalculatedHandler)); - $("#recalculate-single").on("click", () => tryCatch(recalculateSingle)); - $("#recalculate-column").on("click", () => tryCatch(recalculateColumn)); - $("#manual-calculations").on("click", () => tryCatch(switchToManualCalculations)); - $("#automatic-calculations").on("click", () => tryCatch(switchToAutomaticCalculations)); - $("#force-calculation").on("click", () => tryCatch(forceCalculation)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("register-onCalculated-handler").addEventListener("click", () => tryCatch(registerOnCalculatedHandler)); + document.getElementById("recalculate-single").addEventListener("click", () => tryCatch(recalculateSingle)); + document.getElementById("recalculate-column").addEventListener("click", () => tryCatch(recalculateColumn)); + document.getElementById("manual-calculations").addEventListener("click", () => tryCatch(switchToManualCalculations)); + document.getElementById("automatic-calculations").addEventListener("click", () => tryCatch(switchToAutomaticCalculations)); + document.getElementById("force-calculation").addEventListener("click", () => tryCatch(forceCalculation)); async function registerOnCalculatedHandler() { await Excel.run(async (context) => { let sheet = context.workbook.worksheets.getItem("Sample"); @@ -137,7 +137,6 @@ template:

    This sample shows how to use the calculation APIs.

    -

    Set up

    -

    Manual calculations

    Try switching to manual calculation, then editing the workbook.

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -186,15 +183,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/workbook-get-active-cell.yaml b/samples/excel/50-workbook/workbook-get-active-cell.yaml index 3d452bd3c..66b67a49c 100644 --- a/samples/excel/50-workbook/workbook-get-active-cell.yaml +++ b/samples/excel/50-workbook/workbook-get-active-cell.yaml @@ -6,8 +6,8 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#get-active-cell").on("click", () => tryCatch(run)); + content: |- + document.getElementById("get-active-cell").addEventListener("click", () => tryCatch(run)); async function run() { await Excel.run(async (context) => { @@ -34,11 +34,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get the active cell of the entire workbook.

    -

    Try it out

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -118,15 +116,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml index 2bc16606d..1c09d834a 100644 --- a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml +++ b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml @@ -7,11 +7,11 @@ host: EXCEL api_set: ExcelApi: '1.1' script: - content: | - $("#add-worksheet").on("click", () => tryCatch(addWorksheet)); - $("#delete-worksheet").on("click", () => tryCatch(deleteWorksheet)); - $("#rename-worksheet").on("click", () => tryCatch(renameWorksheet)); - $("#move-worksheet").on("click", () => tryCatch(moveWorksheet)); + content: |- + document.getElementById("add-worksheet").addEventListener("click", () => tryCatch(addWorksheet)); + document.getElementById("delete-worksheet").addEventListener("click", () => tryCatch(deleteWorksheet)); + document.getElementById("rename-worksheet").addEventListener("click", () => tryCatch(renameWorksheet)); + document.getElementById("move-worksheet").addEventListener("click", () => tryCatch(moveWorksheet)); async function addWorksheet() { await Excel.run(async (context) => { @@ -103,11 +103,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to add, delete, rename and change the position of a worksheet.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -137,15 +136,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/gridlines.yaml b/samples/excel/54-worksheet/gridlines.yaml index a33001240..bc359b69d 100644 --- a/samples/excel/54-worksheet/gridlines.yaml +++ b/samples/excel/54-worksheet/gridlines.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.8' script: - content: | - $("#hide-gridlines").on("click", () => tryCatch(hideGridlines)); - $("#show-gridlines").on("click", () => tryCatch(showGridlines)); + content: |- + document.getElementById("hide-gridlines").addEventListener("click", () => tryCatch(hideGridlines)); + document.getElementById("show-gridlines").addEventListener("click", () => tryCatch(showGridlines)); async function hideGridlines() { await Excel.run(async (context) => { @@ -41,11 +41,10 @@ script: } language: typescript template: - content: |+ + content: |-

    This sample shows how to hide and show gridlines within a worksheet.

    -

    Try it out

    @@ -57,10 +56,9 @@ template: Show gridlines
    - language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -72,15 +70,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/list-worksheets.yaml b/samples/excel/54-worksheet/list-worksheets.yaml index 82cf87258..d179c4d50 100644 --- a/samples/excel/54-worksheet/list-worksheets.yaml +++ b/samples/excel/54-worksheet/list-worksheets.yaml @@ -7,8 +7,8 @@ host: EXCEL api_set: ExcelApi: '1.1' script: - content: | - $("#list-worksheets").on("click", () => tryCatch(listWorksheets)); + content: |- + document.getElementById("list-worksheets").addEventListener("click", () => tryCatch(listWorksheets)); async function listWorksheets() { await Excel.run(async (context) => { @@ -40,11 +40,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to list the names of the worksheets in the workbook.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -65,15 +64,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml index 686ff762f..3bf6f0473 100644 --- a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml +++ b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.5' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#compare-current-and-previous-year").on("click", () => tryCatch(compareCurrentWithPreviousTax)); - $("#compare-first-and-last-year").on("click", () => tryCatch(compareFirstWithMostRecentTaxRate)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("compare-current-and-previous-year").addEventListener("click", () => tryCatch(compareCurrentWithPreviousTax)); + document.getElementById("compare-first-and-last-year").addEventListener("click", () => tryCatch(compareFirstWithMostRecentTaxRate)); async function setup() { await Excel.run(async (context) => { @@ -119,18 +119,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get a reference to a sheet using its relative worksheet position.

    -

    Set up

    -

    Try it out

    Select any of the three worksheets for 2015, 1016, or 2017 and press the button to compare the tax due on the current sheet with the previous sheet.

    @@ -144,7 +142,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -156,15 +154,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/tab-color.yaml b/samples/excel/54-worksheet/tab-color.yaml index 8c0b98681..11f1917e8 100644 --- a/samples/excel/54-worksheet/tab-color.yaml +++ b/samples/excel/54-worksheet/tab-color.yaml @@ -7,11 +7,11 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#set-tab-color-to-hex-color").on("click", () => tryCatch(setTabColorToHexColor)); - $("#set-tab-color-to-named-color").on("click", () => tryCatch(setTabColorToNamedColor)); - $("#set-tab-color-to-default-color").on("click", () => tryCatch(setTabColorToDefaultColor)); - $("#get-tab-color").on("click", () => tryCatch(getTabColor)); + content: |- + document.getElementById("set-tab-color-to-hex-color").addEventListener("click", () => tryCatch(setTabColorToHexColor)); + document.getElementById("set-tab-color-to-named-color").addEventListener("click", () => tryCatch(setTabColorToNamedColor)); + document.getElementById("set-tab-color-to-default-color").addEventListener("click", () => tryCatch(setTabColorToDefaultColor)); + document.getElementById("get-tab-color").addEventListener("click", () => tryCatch(getTabColor)); async function setTabColorToHexColor() { await Excel.run(async (context) => { @@ -68,7 +68,6 @@ template:

    This sample shows how to set and get the tab color of a worksheet.

    -

    Try it out

    @@ -89,7 +88,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -101,15 +100,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/worksheet-auto-filter.yaml b/samples/excel/54-worksheet/worksheet-auto-filter.yaml index c3659372e..a4e887a21 100644 --- a/samples/excel/54-worksheet/worksheet-auto-filter.yaml +++ b/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -6,14 +6,14 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#add-percent-auto-filter").on("click", () => tryCatch(addPercentAutoFilter)); - $("#add-custom-auto-filter").on("click", () => tryCatch(addCustomAutoFilter)); - $("#randomize-data").on("click", () => tryCatch(randomizeData)); - $("#refresh-auto-filter").on("click", () => tryCatch(refreshAutoFilter)); - $("#clear-single-auto-filter").on("click", () => tryCatch(clearSingleAutoFilter)); - $("#remove-all-auto-filters").on("click", () => tryCatch(removeAllAutoFilters)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-percent-auto-filter").addEventListener("click", () => tryCatch(addPercentAutoFilter)); + document.getElementById("add-custom-auto-filter").addEventListener("click", () => tryCatch(addCustomAutoFilter)); + document.getElementById("randomize-data").addEventListener("click", () => tryCatch(randomizeData)); + document.getElementById("refresh-auto-filter").addEventListener("click", () => tryCatch(refreshAutoFilter)); + document.getElementById("clear-single-auto-filter").addEventListener("click", () => tryCatch(clearSingleAutoFilter)); + document.getElementById("remove-all-auto-filters").addEventListener("click", () => tryCatch(removeAllAutoFilters)); async function addPercentAutoFilter() { // This function adds a percentage AutoFilter to the active worksheet @@ -156,14 +156,12 @@ template:

    This sample shows how to work with an AutoFilter on a worksheet.

    -

    Setup

    -

    Try it out

    Add two filters. One shows only the top half of sales and the other shows only fruits that end with the letter 'e'.

    @@ -194,7 +192,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -206,15 +204,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/worksheet-copy.yaml b/samples/excel/54-worksheet/worksheet-copy.yaml index 3e69dfe43..1fe3d9318 100644 --- a/samples/excel/54-worksheet/worksheet-copy.yaml +++ b/samples/excel/54-worksheet/worksheet-copy.yaml @@ -6,9 +6,9 @@ host: EXCEL api_set: ExcelApi: '1.7' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#copy-worksheet").on("click", () => tryCatch(run)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("copy-worksheet").addEventListener("click", () => tryCatch(run)); async function run() { await Excel.run(async (context) => { @@ -69,14 +69,12 @@ template:

    This sample shows how to copy a worksheet.

    -

    Set up

    -

    Try it out

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -171,15 +169,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/worksheet-page-layout.yaml b/samples/excel/54-worksheet/worksheet-page-layout.yaml index 597ad0518..3d4a283ae 100644 --- a/samples/excel/54-worksheet/worksheet-page-layout.yaml +++ b/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -6,15 +6,15 @@ host: EXCEL api_set: ExcelApi: '1.9' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#setPageBreaks").on("click", () => tryCatch(setPageBreaks)); - $("#center").on("click", () => tryCatch(center)); - $("#setBlackAndWhite").on("click", () => tryCatch(setBlackAndWhite)); - $("#setPrintTitleRow").on("click", () => tryCatch(setPrintTitleRow)); - $("#setPrintArea").on("click", () => tryCatch(setPrintArea)); - $("#changeOrientation").on("click", () => tryCatch(changeOrientation)); - $("#setZoom").on("click", () => tryCatch(setZoom)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("setPageBreaks").addEventListener("click", () => tryCatch(setPageBreaks)); + document.getElementById("center").addEventListener("click", () => tryCatch(center)); + document.getElementById("setBlackAndWhite").addEventListener("click", () => tryCatch(setBlackAndWhite)); + document.getElementById("setPrintTitleRow").addEventListener("click", () => tryCatch(setPrintTitleRow)); + document.getElementById("setPrintArea").addEventListener("click", () => tryCatch(setPrintArea)); + document.getElementById("changeOrientation").addEventListener("click", () => tryCatch(changeOrientation)); + document.getElementById("setZoom").addEventListener("click", () => tryCatch(setZoom)); async function setPageBreaks() { await Excel.run(async (context) => { @@ -202,15 +202,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/worksheet-range-cell.yaml b/samples/excel/54-worksheet/worksheet-range-cell.yaml index b9a2c8040..a26ccb9e3 100644 --- a/samples/excel/54-worksheet/worksheet-range-cell.yaml +++ b/samples/excel/54-worksheet/worksheet-range-cell.yaml @@ -7,13 +7,13 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#get-used-range").on("click", () => tryCatch(getUsedRange)); - $("#get-entire-range").on("click", () => tryCatch(getEntireRange)); - $("#get-range").on("click", () => tryCatch(getRange)); - $("#get-cell").on("click", () => tryCatch(getCell)); + document.getElementById("get-used-range").addEventListener("click", () => tryCatch(getUsedRange)); + document.getElementById("get-entire-range").addEventListener("click", () => tryCatch(getEntireRange)); + document.getElementById("get-range").addEventListener("click", () => tryCatch(getRange)); + document.getElementById("get-cell").addEventListener("click", () => tryCatch(getCell)); async function getUsedRange() { await Excel.run(async (context) => { @@ -101,18 +101,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get a range or a cell in a worksheet.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -142,15 +140,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/worksheet-visibility.yaml b/samples/excel/54-worksheet/worksheet-visibility.yaml index 821aa6009..928d8a2fe 100644 --- a/samples/excel/54-worksheet/worksheet-visibility.yaml +++ b/samples/excel/54-worksheet/worksheet-visibility.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.1' script: - content: | - $("#hide-worksheet").on("click", () => tryCatch(hideWorksheet)); - $("#unhide-worksheet").on("click", () => tryCatch(unhideWorksheet)); + content: |- + document.getElementById("hide-worksheet").addEventListener("click", () => tryCatch(hideWorksheet)); + document.getElementById("unhide-worksheet").addEventListener("click", () => tryCatch(unhideWorksheet)); async function hideWorksheet() { await Excel.run(async (context) => { @@ -82,18 +82,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to change the visbility of a worksheet.

    -

    Set up

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -117,15 +115,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/90-scenarios/currency-converter.yaml b/samples/excel/90-scenarios/currency-converter.yaml index f5cf82a87..a8ba2aa1b 100644 --- a/samples/excel/90-scenarios/currency-converter.yaml +++ b/samples/excel/90-scenarios/currency-converter.yaml @@ -7,7 +7,7 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | + content: |- /* * Copyright (c) Riwut Libinuko. All rights reserved. Licensed under the MIT license. */ @@ -17,8 +17,8 @@ script: let tableSetup: Record = {}; - $("#convert").on("click", () => tryCatch(convert)); - $("#setup").on("click", () => tryCatch(setupSample)); + document.getElementById("convert").addEventListener("click", () => tryCatch(convert)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setupSample)); /** Main converting function **/ async function convert() { @@ -141,25 +141,22 @@ script: } language: typescript template: - content: | + content: |-

    Simple Currency Converter

    -

    Simple currency converter shows how to read data from a transaction table, and uses currency converter API to calculate the amount in base currency.

    The code also performs table validation and identify if the table has predefined headers. You can try to to rearrange the the column, and see by yourself!

    -

    Set up

    -

    Try it out

    The currency conversion is provided by exchangeratesapi.io which uses @@ -183,12 +180,8 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - core-js@2.4.1/client/core.min.js - @types/core-js - jquery@3.1.1 - @types/jquery@3.3.1 - moment@2.18.1 + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + moment@2.18.1 moment-msdate@0.2.2 \ No newline at end of file diff --git a/samples/excel/90-scenarios/multiple-property-set.yaml b/samples/excel/90-scenarios/multiple-property-set.yaml index 7efba6254..e74a52b5c 100644 --- a/samples/excel/90-scenarios/multiple-property-set.yaml +++ b/samples/excel/90-scenarios/multiple-property-set.yaml @@ -7,10 +7,10 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#set-multiple-properties-with-object").on("click", () => tryCatch(setMultiplePropertiesWithObject)); - $("#copy-properties-from-range").on("click", () => tryCatch(copyPropertiesFromRange)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("set-multiple-properties-with-object").addEventListener("click", () => tryCatch(setMultiplePropertiesWithObject)); + document.getElementById("copy-properties-from-range").addEventListener("click", () => tryCatch(copyPropertiesFromRange)); async function setMultiplePropertiesWithObject() { await Excel.run(async (context) => { @@ -94,18 +94,16 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to format a range.

    -

    Set up

    -

    Try it out

    -

    Setup

    -

    Performance settings

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -129,18 +127,13 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - core-js@2.4.1/client/core.min.js - @types/core-js + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - jquery@3.1.1 - @types/jquery@3.3.1 - moment@2.18.1 + moment@2.18.1 moment-msdate@0.2.2 \ No newline at end of file diff --git a/samples/excel/99-just-for-fun/color-wheel.yaml b/samples/excel/99-just-for-fun/color-wheel.yaml index 6417065de..456c044bc 100644 --- a/samples/excel/99-just-for-fun/color-wheel.yaml +++ b/samples/excel/99-just-for-fun/color-wheel.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#wheel").on("click", wheelGo); - $("#stop").on("click", wheelStop); + content: |- + document.getElementById("wheel").addEventListener("click", wheelGo); + document.getElementById("stop").addEventListener("click", wheelStop); let isStopped: boolean @@ -111,7 +111,7 @@ script: } language: typescript template: - content: |+ + content: |-

    Spin the rainbow wheel

    @@ -124,10 +124,9 @@ template: - language: html style: - content: | + content: |- h2:not(:first-child) { margin-top: 35px; } @@ -144,15 +143,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/99-just-for-fun/gradient.yaml b/samples/excel/99-just-for-fun/gradient.yaml index 11a3b84fa..09b075b38 100644 --- a/samples/excel/99-just-for-fun/gradient.yaml +++ b/samples/excel/99-just-for-fun/gradient.yaml @@ -12,7 +12,7 @@ script: // Set up the click handler: const $drawButton = $("#draw-gradient").on("click", drawGradient); - $("#random").on("click", randomizeColors); + document.getElementById("random").addEventListener("click", randomizeColors); /** Click-handler for drawing the gradient */ async function drawGradient() { @@ -133,7 +133,6 @@ template:

    Color configuration

    -
    Top left
    @@ -151,20 +150,16 @@ template: Bottom right
    - -

    Size (width x height)

    - -
    Uses the Spectrum color picker, and the TinyColor libraries. @@ -212,19 +207,14 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - core-js@2.4.1/client/core.min.js - @types/core-js + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - jquery@3.1.1 - @types/jquery@3.3.1 - tinycolor2@1.4.1/tinycolor.js + https://unpkg.com/tinycolor2@1.4.1/tinycolor.js @types/tinycolor2 - spectrum-colorpicker@1.8.0/spectrum.js - spectrum-colorpicker@1.8.0/spectrum.css - @types/spectrum + https://unpkg.com/spectrum-colorpicker@1.8.0/spectrum.js + https://unpkg.com/spectrum-colorpicker@1.8.0/spectrum.css + @types/spectrum \ No newline at end of file diff --git a/samples/excel/99-just-for-fun/path-finder-game.yaml b/samples/excel/99-just-for-fun/path-finder-game.yaml index 0602b549d..6dd28e9a0 100644 --- a/samples/excel/99-just-for-fun/path-finder-game.yaml +++ b/samples/excel/99-just-for-fun/path-finder-game.yaml @@ -7,9 +7,9 @@ host: EXCEL api_set: ExcelApi: '1.4' script: - content: | - $("#setup").on("click", setup); - $("#repeat").on("click", repeat); + content: |- + document.getElementById("setup").addEventListener("click", setup); + document.getElementById("repeat").addEventListener("click", repeat); const $pruneTheGrid = $("#step-by-step").on("click", pruneTheGrid); const $allAtOnce = $("#all-at-once").on("click", allAtOnce); @@ -174,11 +174,10 @@ script: } language: typescript template: - content: | + content: |-

    Check whether there is a path from left to right, moving forward one cell at a time (and only straight or diagonally).

    -

    Set up

    Circle density (%)
    @@ -191,14 +190,12 @@ template:

    -

    Find the path:


    - @@ -221,15 +218,9 @@ style: margin-bottom: 0; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/99-just-for-fun/patterns.yaml b/samples/excel/99-just-for-fun/patterns.yaml index e29e1f0a0..8e0f74ec5 100644 --- a/samples/excel/99-just-for-fun/patterns.yaml +++ b/samples/excel/99-just-for-fun/patterns.yaml @@ -8,9 +8,9 @@ api_set: ExcelApi: '1.4' script: content: |- - $("#squares").on("click", () => tryCatch(drawSquares)); - $("#spiral").on("click", () => tryCatch(drawSpiral)); - $("#decoration").on("click", () => tryCatch(drawDecoration)); + document.getElementById("squares").addEventListener("click", () => tryCatch(drawSquares)); + document.getElementById("spiral").addEventListener("click", () => tryCatch(drawSpiral)); + document.getElementById("decoration").addEventListener("click", () => tryCatch(drawDecoration)); async function drawSquares() { await Excel.run(async (context) => { @@ -156,30 +156,26 @@ script: template: content: |-

    Draw colorful patterns

    -
    Choose size:
    -


    -

    -
    language: html style: - content: | + content: |- h2:not(:first-child) { margin-top: 35px; } @@ -188,15 +184,9 @@ style: width: 100%; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/99-just-for-fun/tetrominos.yaml b/samples/excel/99-just-for-fun/tetrominos.yaml index 7f025bfd2..20b36299b 100644 --- a/samples/excel/99-just-for-fun/tetrominos.yaml +++ b/samples/excel/99-just-for-fun/tetrominos.yaml @@ -14,7 +14,7 @@ script: }); $("#selectedFile").on("change", () => tryCatch(readImageFromFile)); - $("#focusButton").on("click", () => tryCatch(focus)); + document.getElementById("focusButton").addEventListener("click", () => tryCatch(focus)); let backgroundPicture = getDefaultBackgroundPicture(); @@ -649,7 +649,6 @@ template:

    This sample lets you repeatedly stack tetrominos, which are represented by Shapes. Select a background image (or leave blank for the default) and Start!. The controls will then be displayed.

    -

    Select Background Image

    @@ -784,17 +783,12 @@ style: border: 1px solid black; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - core-js@2.4.1/client/core.min.js - @types/core-js + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - jquery@3.1.1 - @types/jquery@3.3.1 - https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js + https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js \ No newline at end of file diff --git a/samples/excel/default.yaml b/samples/excel/default.yaml index 27bfc38f6..c68f87b37 100644 --- a/samples/excel/default.yaml +++ b/samples/excel/default.yaml @@ -6,8 +6,8 @@ host: EXCEL api_set: ExcelApi: '1.1' script: - content: | - $("#run").on("click", () => tryCatch(run)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); async function run() { await Excel.run(async (context) => { @@ -31,7 +31,7 @@ script: } language: typescript template: - content: | + content: |- @@ -49,15 +49,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/onenote/default.yaml b/samples/onenote/default.yaml index 6c419de50..603dd6062 100644 --- a/samples/onenote/default.yaml +++ b/samples/onenote/default.yaml @@ -6,8 +6,8 @@ host: ONENOTE api_set: OneNoteApi: '1.1' script: - content: | - $("#run").on("click", () => tryCatch(run)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); async function run() { await OneNote.run(async (context) => { @@ -29,7 +29,7 @@ script: } language: typescript template: - content: | + content: |- @@ -47,15 +47,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/10-roaming-settings/roaming-settings.yaml b/samples/outlook/10-roaming-settings/roaming-settings.yaml index 30d3b22fa..0e1bc28f1 100644 --- a/samples/outlook/10-roaming-settings/roaming-settings.yaml +++ b/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -5,10 +5,10 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get").on("click", get); - $("#set").on("click", set); - $("#save").on("click", save); + content: |- + document.getElementById("get").addEventListener("click", get); + document.getElementById("set").addEventListener("click", set); + document.getElementById("save").addEventListener("click", save); function get() { const settingName = $("#settingName").val(); @@ -36,11 +36,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to set, save, and get add-in properties that can be accessed the next time the add-in is opened.

    -

    Try it out

    @@ -75,15 +74,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml index c772c4025..8cd1a84f4 100644 --- a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml +++ b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -5,15 +5,15 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | + content: |- let customProps; - $("#load").on("click", load); - $("#get").on("click", get); - $("#get-all").on("click", getAll); - $("#set").on("click", set); - $("#remove").on("click", remove); - $("#save").on("click", save); + document.getElementById("load").addEventListener("click", load); + document.getElementById("get").addEventListener("click", get); + document.getElementById("get-all").addEventListener("click", getAll); + document.getElementById("set").addEventListener("click", set); + document.getElementById("remove").addEventListener("click", remove); + document.getElementById("save").addEventListener("click", save); function load() { Office.context.mailbox.item.loadCustomPropertiesAsync((result) => { @@ -73,7 +73,6 @@ template:

    This sample shows how to set, save, and get the custom per-item properties of an add-in.

    -

    Try it out

    First load the This sample adds an inline Base64-encoded image to the body of the message or appointment being composed.

    Required mode: Compose

    -

    Try it out

    -

    Try it out

    Important: To use appendOnSendAsync, you must set AppendOnSend as an extended permission in the ExtendedPermissions manifest element. To learn more about append-on-send and its configuration, see Implement append-on-send in your Outlook add-in.

    @@ -65,15 +64,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/20-item-body/get-body-format.yaml b/samples/outlook/20-item-body/get-body-format.yaml index af52a05ae..b1cbc7506 100644 --- a/samples/outlook/20-item-body/get-body-format.yaml +++ b/samples/outlook/20-item-body/get-body-format.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get-body-format").on("click", getBodyFormat); + content: |- + document.getElementById("get-body-format").addEventListener("click", getBodyFormat); function getBodyFormat() { // Get the mail item's body format (plain text or HTML) and log it to the console. @@ -27,7 +27,6 @@ template:

    This sample gets the message or appointment's body format (plain text or HTML).

    Required mode: Compose

    -

    Try it out

    -

    Try it out

    Select text in the item body or subject then push the Get selected text button.

    @@ -49,15 +48,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/20-item-body/prepend-text-on-send.yaml b/samples/outlook/20-item-body/prepend-text-on-send.yaml index f20f8639d..32cb1a236 100644 --- a/samples/outlook/20-item-body/prepend-text-on-send.yaml +++ b/samples/outlook/20-item-body/prepend-text-on-send.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.13' script: - content: | - $("#prepend-on-send").on("click", prependOnSend); + content: |- + document.getElementById("prepend-on-send").addEventListener("click", prependOnSend); function prependOnSend() { // This snippet prepends text to the beginning of the message or appointment's body once it's sent. @@ -38,7 +38,6 @@ template:

    This sample prepends text to the beginning of the message or appointment's body once it's sent.

    Required mode: Compose

    -

    Try it out

    Important: To use prependOnSendAsync, you must set AppendOnSend as an extended permission in the ExtendedPermissions manifest element. appendOnSendAsync and prependOnSendAsync both use the AppendOnSend extended permission. To learn more about prepend-on-send, see Prepend or append content to a message or appointment body on send.

    @@ -65,15 +64,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml index ab8438edf..eae94ef5a 100644 --- a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml +++ b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#prepend").on("click", prependText); + content: |- + document.getElementById("prepend").addEventListener("click", prependText); function prependText() { /* This snippet adds text to the beginning of the message or appointment's body. @@ -41,7 +41,6 @@ template:

    This sample adds text to the beginning of the message or appointment's body.

    Required mode: Compose

    -

    Try it out

    @@ -67,15 +66,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/20-item-body/replace-selected-text.yaml b/samples/outlook/20-item-body/replace-selected-text.yaml index 06ea6cb38..cdd8b6b04 100644 --- a/samples/outlook/20-item-body/replace-selected-text.yaml +++ b/samples/outlook/20-item-body/replace-selected-text.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#replace-selection").on("click", replaceSelection); + content: |- + document.getElementById("replace-selection").addEventListener("click", replaceSelection); function replaceSelection() { /* This snippet replaces selected text in a message or appointment's body with specified text. @@ -41,7 +41,6 @@ template:

    This sample replaces selected text in a message or appointment's body with specified text.

    Required mode: Compose

    -

    Try it out

      @@ -71,15 +70,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/25-item-save-and-close/close-async.yaml b/samples/outlook/25-item-save-and-close/close-async.yaml index 674ab7b12..109be2bbd 100644 --- a/samples/outlook/25-item-save-and-close/close-async.yaml +++ b/samples/outlook/25-item-save-and-close/close-async.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.14' script: - content: | - $("#close-async").on("click", closeAsync); + content: |- + document.getElementById("close-async").addEventListener("click", closeAsync); function closeAsync() { // This snippet closes the current message being composed and discards any unsaved changes when the optional property, discardItem, is set to true. @@ -24,12 +24,11 @@ script: } language: typescript template: - content: | + content: |-

      This sample shows how to close the current message being composed and discard any unsaved changes.

      Required mode: Message Compose

      -

      Try it out

      language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -39,15 +38,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/25-item-save-and-close/save.yaml b/samples/outlook/25-item-save-and-close/save.yaml index cc5e032c8..0acf244d8 100644 --- a/samples/outlook/25-item-save-and-close/save.yaml +++ b/samples/outlook/25-item-save-and-close/save.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.3' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.mailbox.item.saveAsync(function (result) { @@ -21,11 +21,10 @@ script: } language: typescript template: - content: | + content: |-

      This sample shows how to save the item in compose mode.

      -

      Try it out

      language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -46,15 +45,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml index a586403fb..0854d08d0 100644 --- a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml @@ -7,7 +7,7 @@ api_set: Mailbox: '1.7' script: content: |- - $("#get-attendees").on("click", getAttendees); + document.getElementById("get-attendees").addEventListener("click", getAttendees); function getAttendees() { // This snippet gets an appointment's required and optional attendees and groups them by their response. @@ -96,7 +96,6 @@ template:

      This sample shows how to get all appointment attendees and organize them by their response.

      Required mode: Appointment Organizer, Appointment Read

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    @@ -72,15 +71,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml index 5d183929f..a550e0b14 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml @@ -6,9 +6,9 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get-cc").on("click", getCc); - $("#set-cc").on("click", setCc); + content: |- + document.getElementById("get-cc").addEventListener("click", getCc); + document.getElementById("set-cc").addEventListener("click", setCc); function getCc() { Office.context.mailbox.item.cc.getAsync(function(asyncResult) { @@ -44,7 +44,6 @@ template:

    This sample shows how to get and set the Cc line recipients of the email.

    Required mode: Message Compose

    -

    Try it out

    @@ -72,15 +71,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml index 6b487a1d6..e8f961373 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml @@ -6,9 +6,9 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get-optional-attendees").on("click", getOptionalAttendees); - $("#set-optional-attendees").on("click", setOptionalAttendees); + content: |- + document.getElementById("get-optional-attendees").addEventListener("click", getOptionalAttendees); + document.getElementById("set-optional-attendees").addEventListener("click", setOptionalAttendees); function getOptionalAttendees() { Office.context.mailbox.item.optionalAttendees.getAsync(function(asyncResult) { @@ -50,7 +50,6 @@ template:

    This sample shows how to get and set the optional attendees.

    Required mode: Appointment Organizer

    -

    Try it out

    @@ -78,15 +77,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml index c6d80e8e3..c7deebc20 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml @@ -6,9 +6,9 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get-required-attendees").on("click", getRequiredAttendees); - $("#set-required-attendees").on("click", setRequiredAttendees); + content: |- + document.getElementById("get-required-attendees").addEventListener("click", getRequiredAttendees); + document.getElementById("set-required-attendees").addEventListener("click", setRequiredAttendees); function getRequiredAttendees() { Office.context.mailbox.item.requiredAttendees.getAsync(function(asyncResult) { @@ -50,7 +50,6 @@ template:

    This sample shows how to get and set the required attendees.

    Required mode: Appointment Organizer

    -

    Try it out

    @@ -78,15 +77,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml index beba09e5e..3164d9d20 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml @@ -6,9 +6,9 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get-to").on("click", getTo); - $("#set-to").on("click", setTo); + content: |- + document.getElementById("get-to").addEventListener("click", getTo); + document.getElementById("set-to").addEventListener("click", setTo); function getTo() { Office.context.mailbox.item.to.getAsync(function(asyncResult) { @@ -44,7 +44,6 @@ template:

    This sample shows how to get and set the To line recipients of the email.

    Required mode: Message Compose

    -

    Try it out

    @@ -72,15 +71,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml index 67512875c..37807769a 100644 --- a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get-to").on("click", getTo); + content: |- + document.getElementById("get-to").addEventListener("click", getTo); function getTo() { const msgTo = Office.context.mailbox.item.to; @@ -58,7 +58,6 @@ template:

    This sample shows how to get the To line recipients of the email.

    Required mode: Message Read

    -

    Try it out

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -52,15 +51,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/45-categories/work-with-categories.yaml b/samples/outlook/45-categories/work-with-categories.yaml index 1a27e0edc..6fcbcedc6 100644 --- a/samples/outlook/45-categories/work-with-categories.yaml +++ b/samples/outlook/45-categories/work-with-categories.yaml @@ -6,10 +6,10 @@ host: OUTLOOK api_set: Mailbox: '1.8' script: - content: | - $("#get-categories").on("click", getCategories); - $("#add-categories").on("click", addCategories); - $("#remove-categories").on("click", removeCategories); + content: |- + document.getElementById("get-categories").addEventListener("click", getCategories); + document.getElementById("add-categories").addEventListener("click", addCategories); + document.getElementById("remove-categories").addEventListener("click", removeCategories); function getCategories() { Office.context.mailbox.item.categories.getAsync(function(asyncResult) { @@ -81,7 +81,6 @@ template:

    This sample shows how to get, add, and remove categories assigned to the item.

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -
    +
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -61,15 +60,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/55-display-items/display-new-appointment.yaml b/samples/outlook/55-display-items/display-new-appointment.yaml index 60c7f18ef..7b55e2860 100644 --- a/samples/outlook/55-display-items/display-new-appointment.yaml +++ b/samples/outlook/55-display-items/display-new-appointment.yaml @@ -6,9 +6,9 @@ host: OUTLOOK api_set: Mailbox: '1.9' script: - content: | - $("#run").on("click", run); - $("#run-async").on("click", runAsync); + content: |- + document.getElementById("run").addEventListener("click", run); + document.getElementById("run-async").addEventListener("click", runAsync); function run() { const start = new Date(); @@ -57,7 +57,6 @@ template:

    This sample shows how to display a new appointment and populate attendees, location, body, and a few other properties.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -81,15 +80,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/55-display-items/display-new-message.yaml b/samples/outlook/55-display-items/display-new-message.yaml index 2cb258e7c..7ec9c407c 100644 --- a/samples/outlook/55-display-items/display-new-message.yaml +++ b/samples/outlook/55-display-items/display-new-message.yaml @@ -6,9 +6,9 @@ host: OUTLOOK api_set: Mailbox: '1.9' script: - content: | - $("#run").on("click", run); - $("#run-async").on("click", runAsync); + content: |- + document.getElementById("run").addEventListener("click", run); + document.getElementById("run-async").addEventListener("click", runAsync); function run() { Office.context.mailbox.displayNewMessageForm({ @@ -52,11 +52,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to display a new message, populate recipients, subject, and body, and add an inline image attachment.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -80,15 +79,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/55-display-items/display-reply-forms.yaml b/samples/outlook/55-display-items/display-reply-forms.yaml index ace941dc9..4f8dd7af6 100644 --- a/samples/outlook/55-display-items/display-reply-forms.yaml +++ b/samples/outlook/55-display-items/display-reply-forms.yaml @@ -6,11 +6,11 @@ host: OUTLOOK api_set: Mailbox: '1.9' script: - content: | - $("#display-reply-form").on("click", displayReplyForm); - $("#display-reply-form-async").on("click", displayReplyFormAsync); - $("#display-reply-all-form").on("click", displayReplyAllForm); - $("#display-reply-all-form-async").on("click", displayReplyAllFormAsync); + content: |- + document.getElementById("display-reply-form").addEventListener("click", displayReplyForm); + document.getElementById("display-reply-form-async").addEventListener("click", displayReplyFormAsync); + document.getElementById("display-reply-all-form").addEventListener("click", displayReplyAllForm); + document.getElementById("display-reply-all-form-async").addEventListener("click", displayReplyAllFormAsync); // The async version is only available starting with requirement set 1.9. function displayReplyForm() { @@ -42,7 +42,6 @@ template:

    This sample shows how to create reply or reply-all messages and populate the body of the reply.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -73,15 +72,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/55-display-items/display-reply-with-attachments.yaml b/samples/outlook/55-display-items/display-reply-with-attachments.yaml index 91b1ae33b..f6a140f8e 100644 --- a/samples/outlook/55-display-items/display-reply-with-attachments.yaml +++ b/samples/outlook/55-display-items/display-reply-with-attachments.yaml @@ -6,11 +6,11 @@ host: OUTLOOK api_set: Mailbox: '1.9' script: - content: | - $("#reply").on("click", reply); - $("#reply-async").on("click", replyAsync); - $("#reply-all").on("click", replyAll); - $("#reply-all-async").on("click", replyAllAsync); + content: |- + document.getElementById("reply").addEventListener("click", reply); + document.getElementById("reply-async").addEventListener("click", replyAsync); + document.getElementById("reply-all").addEventListener("click", replyAll); + document.getElementById("reply-all-async").addEventListener("click", replyAllAsync); function reply() { // Define attachments. @@ -172,7 +172,6 @@ template:

    This sample shows how to create a reply message and add an inline image attachment and an item attachment.

    Required mode: Compose

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out on a message or appointment from a shared folder or shared mailbox.

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -53,15 +52,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml index af91e6505..2c6432fe6 100644 --- a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml +++ b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml @@ -5,8 +5,8 @@ host: OUTLOOK api_set: Mailbox: '1.8' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.mailbox.item.getAllInternetHeadersAsync(function (asyncResult) { @@ -61,15 +61,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml index 9b93155a8..9a82619a5 100644 --- a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml +++ b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -5,10 +5,10 @@ host: OUTLOOK api_set: Mailbox: '1.8' script: - content: | - $("#set-custom-headers").on("click", setCustomHeaders); - $("#get-selected-custom-headers").on("click", getSelectedCustomHeaders); - $("#remove-selected-custom-headers").on("click", removeSelectedCustomHeaders); + content: |- + document.getElementById("set-custom-headers").addEventListener("click", setCustomHeaders); + document.getElementById("get-selected-custom-headers").addEventListener("click", getSelectedCustomHeaders); + document.getElementById("remove-selected-custom-headers").addEventListener("click", removeSelectedCustomHeaders); // Set custom internet headers. function setCustomHeaders() { @@ -92,15 +92,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/75-regex-matches/contextual.yaml b/samples/outlook/75-regex-matches/contextual.yaml index 40918affc..f83c31234 100644 --- a/samples/outlook/75-regex-matches/contextual.yaml +++ b/samples/outlook/75-regex-matches/contextual.yaml @@ -5,10 +5,10 @@ host: OUTLOOK api_set: Mailbox: '1.6' script: - content: | - $("#getRegExMatches").on("click", getRegExMatches); - $("#getRegExMatchesByName").on("click", getRegExMatchesByName); - $("#getSelectedRegExMatches").on("click", getSelectedRegExMatches); + content: |- + document.getElementById("getRegExMatches").addEventListener("click", getRegExMatches); + document.getElementById("getRegExMatchesByName").addEventListener("click", getRegExMatchesByName); + document.getElementById("getSelectedRegExMatches").addEventListener("click", getSelectedRegExMatches); function getRegExMatches() { // This API only works when you click on the highlighted word "ScriptLab". @@ -50,7 +50,6 @@ template: for Microsoft 365.

    Required mode: Item Read, contextual add-in

    -

    Tip: Try this out as a contextual add-in.

    @@ -66,7 +65,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -78,15 +77,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml index 8b2cf4938..c7cba1a0c 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml +++ b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { const ewsId = Office.context.mailbox.item.itemId; @@ -42,7 +42,7 @@ script: } language: typescript template: - content: | + content: |-

    This sample uses Exchange Web Services (EWS) to get an appointment's iCalUId value if the user is an attendee.

    Important: Exchange user identity and callback tokens are only supported in Exchange on-premises environments. @@ -50,7 +50,6 @@ template: to get an access token. Then, use Microsoft Graph to get the iCalUId property.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -71,15 +70,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml index 8ac65f4b0..c0744d2be 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml +++ b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.3' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.mailbox.item.saveAsync((result) => { @@ -49,7 +49,7 @@ script: } language: typescript template: - content: | + content: |-

    This sample uses Exchange Web Services (EWS) to get an appointment's iCalUId value if the user is the organizer.

    Important: Exchange user identity and callback tokens are only supported in Exchange on-premises environments. @@ -57,7 +57,6 @@ template: to get an access token. Then, use Microsoft Graph to get the iCalUId property.

    - @@ -75,15 +74,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml b/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml index d7b4df2ac..7b05c488c 100644 --- a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml +++ b/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.5' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { // Get the EWS URL and EWS item ID. @@ -25,7 +25,7 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to retrieve the EWS endpoint URL and item IDs, and convert item IDs for different protocols.

    Important: Exchange user identity and callback tokens are only supported in Exchange on-premises environments. @@ -33,7 +33,6 @@ template: to get an access token.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -54,15 +53,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml index df2c26980..1b023e5a6 100644 --- a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { const ewsId = Office.context.mailbox.item.itemId; @@ -31,7 +31,7 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get a message using EWS, without any back-end code.

    Important: This API is only supported in Exchange on-premises environments. @@ -39,7 +39,6 @@ template: to get an access token. Then, use Microsoft Graph to get the message.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -60,15 +59,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml index 227e2cd0b..e008862db 100644 --- a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { const request = ''+ @@ -34,7 +34,7 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to send a message using EWS, without any back-end code.

    Important: This API is only supported in Exchange on-premises environments. @@ -42,7 +42,6 @@ template: to get an access token. Then, use Microsoft Graph to send the message.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -63,15 +62,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml b/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml index 9e342b5f6..e7e7e9cb3 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.mailbox.getCallbackTokenAsync((result) => { @@ -21,7 +21,7 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get a callback token to call Outlook services from an add-in's backend service.

    Important: Exchange user identity and callback tokens are only supported in Exchange on-premises environments. @@ -30,7 +30,6 @@ template: to get an access token instead.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -51,15 +50,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml b/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml index 169118cd9..4ccdc8fd4 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.mailbox.getUserIdentityTokenAsync((result) => { @@ -21,7 +21,7 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get a user identity token to use in authentication flows.

    Important: This API is only supported in Exchange on-premises environments. @@ -29,7 +29,6 @@ template: to get an access token.

    -

    Try it out

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -50,15 +49,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml index b58289c80..186e35414 100644 --- a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml +++ b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml @@ -6,13 +6,13 @@ host: OUTLOOK api_set: Mailbox: '1.13' script: - content: | - $("#get-date").on("click", getDeliveryDate); - $("#set-time-five-minutes").on("click", () => computeDelay("set-time-five-minutes")); - $("#set-time-fifteen-minutes").on("click", () => computeDelay("set-time-fifteen-minutes")); - $("#set-time-thirty-minutes").on("click", () => computeDelay("set-time-thirty-minutes")); - $("#set-time-sixty-minutes").on("click", () => computeDelay("set-time-sixty-minutes")); - $("#set-time-one-day").on("click", () => computeDelay("set-time-one-day")); + content: |- + document.getElementById("get-date").addEventListener("click", getDeliveryDate); + document.getElementById("set-time-five-minutes").addEventListener("click", () => computeDelay("set-time-five-minutes")); + document.getElementById("set-time-fifteen-minutes").addEventListener("click", () => computeDelay("set-time-fifteen-minutes")); + document.getElementById("set-time-thirty-minutes").addEventListener("click", () => computeDelay("set-time-thirty-minutes")); + document.getElementById("set-time-sixty-minutes").addEventListener("click", () => computeDelay("set-time-sixty-minutes")); + document.getElementById("set-time-one-day").addEventListener("click", () => computeDelay("set-time-one-day")); let totalDelay = 0; @@ -69,7 +69,6 @@ template:

    This sample gets and sets the delivery date and time of a message in compose mode. To learn more about this API, see Manage the delivery date and time of a message.

    Required mode: Compose

    -

    Try it out

    @@ -108,15 +107,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml index b18fd4901..e03300997 100644 --- a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml +++ b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -6,10 +6,10 @@ host: OUTLOOK api_set: Mailbox: '1.8' script: - content: | - $("#get").on("click", get); - $("#add").on("click", add); - $("#remove").on("click", remove); + content: |- + document.getElementById("get").addEventListener("click", get); + document.getElementById("add").addEventListener("click", add); + document.getElementById("remove").addEventListener("click", remove); function get() { Office.context.mailbox.item.enhancedLocation.getAsync((result) => { @@ -106,15 +106,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml index 520c48474..047455858 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.1' script: - content: | - $("#get").on("click", get); + content: |- + document.getElementById("get").addEventListener("click", get); function get() { console.log(`Conversation ID: ${Office.context.mailbox.item.conversationId}`); @@ -39,15 +39,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-conversation-index.yaml b/samples/outlook/90-other-item-apis/get-conversation-index.yaml index e7f797ce5..f3ed7d215 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-index.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-index.yaml @@ -6,8 +6,8 @@ host: OUTLOOK api_set: Mailbox: '1.14' script: - content: | - $("#get-conversation-index").click(getConversationIndex); + content: |- + document.getElementById("get-conversation-index").addEventListener("click", getConversationIndex); function getConversationIndex() { // This snippet returns the Base64-encoded position of the current message in a conversation thread (PR_CONVERSATION_INDEX). @@ -33,7 +33,6 @@ template:

    This sample shows how to get the Base64-encoded position of the current message in a conversation thread.

    Required mode: Message Compose

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -
    -

    Try it out

    -

    Try it out

    Select text in the item body or subject then push the Replace selected text button.

    @@ -47,15 +46,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml index 7cbaccb5a..8e8612592 100644 --- a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml +++ b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -6,12 +6,12 @@ host: OUTLOOK api_set: Mailbox: '1.10' script: - content: | - $("#isClientSignatureEnabled").on("click", isClientSignatureEnabled); - $("#disableClientSignature").on("click", disableClientSignature); - $("#getComposeType").on("click", getComposeType); - $("#setSignature").on("click", setSignature); - $("#setSignatureWithInlineImage").on("click", setSignatureWithInlineImage); + content: |- + document.getElementById("isClientSignatureEnabled").addEventListener("click", isClientSignatureEnabled); + document.getElementById("disableClientSignature").addEventListener("click", disableClientSignature); + document.getElementById("getComposeType").addEventListener("click", getComposeType); + document.getElementById("setSignature").addEventListener("click", setSignature); + document.getElementById("setSignatureWithInlineImage").addEventListener("click", setSignatureWithInlineImage); function isClientSignatureEnabled() { // Check if the client signature is currently enabled. @@ -99,7 +99,6 @@ template:

    -

    Try it out

    -
    -

    Try it out

    @@ -83,15 +82,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js @types/office-js-preview - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/default.yaml b/samples/outlook/default.yaml index 215d8fa86..7d8729c82 100644 --- a/samples/outlook/default.yaml +++ b/samples/outlook/default.yaml @@ -5,8 +5,8 @@ author: OfficeDev host: OUTLOOK api_set: null script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { const userProfile = Office.context.mailbox.userProfile; @@ -14,7 +14,7 @@ script: } language: typescript template: - content: | + content: |- @@ -32,15 +32,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/basics/basic-api-call-js.yaml b/samples/powerpoint/basics/basic-api-call-js.yaml index 440196ff2..a07f9456e 100644 --- a/samples/powerpoint/basics/basic-api-call-js.yaml +++ b/samples/powerpoint/basics/basic-api-call-js.yaml @@ -6,8 +6,8 @@ host: POWERPOINT api_set: PowerPointApi: '1.4' script: - content: | - $("#run").on("click", () => tryCatch(run)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); function run() { // This function gets the collection of shapes on the first slide, @@ -59,15 +59,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/basics/basic-api-call-ts.yaml b/samples/powerpoint/basics/basic-api-call-ts.yaml index 0b3db65ff..2ca0fd607 100644 --- a/samples/powerpoint/basics/basic-api-call-ts.yaml +++ b/samples/powerpoint/basics/basic-api-call-ts.yaml @@ -6,8 +6,8 @@ host: POWERPOINT api_set: PowerPointApi: '1.4' script: - content: | - $("#run").on("click", () => tryCatch(run)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); const run: Function = async () => { // This function gets the collection of shapes on the first slide, @@ -59,15 +59,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/basics/basic-common-api-call.yaml b/samples/powerpoint/basics/basic-common-api-call.yaml index 869630269..c3107a43e 100644 --- a/samples/powerpoint/basics/basic-common-api-call.yaml +++ b/samples/powerpoint/basics/basic-common-api-call.yaml @@ -7,8 +7,8 @@ host: POWERPOINT api_set: Selection: '1.1' script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, (asyncResult) => { @@ -21,7 +21,7 @@ script: } language: typescript template: - content: | + content: |- @@ -39,15 +39,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/default.yaml b/samples/powerpoint/default.yaml index 7b3f697fc..0a15973de 100644 --- a/samples/powerpoint/default.yaml +++ b/samples/powerpoint/default.yaml @@ -5,8 +5,8 @@ author: OfficeDev host: POWERPOINT api_set: {} script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, (asyncResult) => { @@ -19,7 +19,7 @@ script: } language: typescript template: - content: | + content: |- @@ -37,15 +37,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/document/create-presentation.yaml b/samples/powerpoint/document/create-presentation.yaml index d2aba3d06..6011dfb8b 100644 --- a/samples/powerpoint/document/create-presentation.yaml +++ b/samples/powerpoint/document/create-presentation.yaml @@ -6,8 +6,8 @@ host: POWERPOINT api_set: PowerPoint: '1.1' script: - content: | - $("#create-new-blank-presentation").on("click", () => tryCatch(createBlankPresentation)); + content: |- + document.getElementById("create-new-blank-presentation").addEventListener("click", () => tryCatch(createBlankPresentation)); $("#file").on("change", () => tryCatch(createPresentationFromExisting)); function createBlankPresentation() { @@ -45,7 +45,6 @@ template:

    This sample shows how to create a new, empty presentation and how to create a new presentation by copying an existing one.

    -

    Try it out

    Create empty presentation

    @@ -72,15 +71,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml index 37790cb38..f8f486309 100644 --- a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml +++ b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml @@ -5,8 +5,8 @@ host: POWERPOINT api_set: PowerPointApi: '1.6' script: - content: | - $("#get-hyperlinks").on("click", () => tryCatch(getHyperlinks)); + content: |- + document.getElementById("get-hyperlinks").addEventListener("click", () => tryCatch(getHyperlinks)); async function getHyperlinks() { // Gets the hyperlinks found in the first selected slide. @@ -38,7 +38,6 @@ template:

    Demonstrates how to get the hyperlinks located in a slide.

    -

    Try it out

    First, add at least one hyperlink to a slide then select at least one slide.

    @@ -58,17 +57,11 @@ style: margin-bottom: 5px; margin-left: 20px; min-width: 80px; - } + } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/images/insert-image.yaml b/samples/powerpoint/images/insert-image.yaml index 9c4a0af2e..a42fb4a33 100644 --- a/samples/powerpoint/images/insert-image.yaml +++ b/samples/powerpoint/images/insert-image.yaml @@ -6,7 +6,7 @@ author: OfficeDev host: POWERPOINT api_set: {} script: - content: | + content: |- $('#insert').on("click", run); function run() { @@ -35,7 +35,6 @@ template:

    Insert an image into the current slide.

    - @@ -53,15 +52,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/images/insert-svg.yaml b/samples/powerpoint/images/insert-svg.yaml index fb17d3eb0..ced98b544 100644 --- a/samples/powerpoint/images/insert-svg.yaml +++ b/samples/powerpoint/images/insert-svg.yaml @@ -6,7 +6,7 @@ author: OfficeDev host: POWERPOINT api_set: {} script: - content: | + content: |- $('#insert').on("click", newImage); function newImage() { @@ -36,7 +36,6 @@ template:

    This sample shows how to insert an SVG image using an XML string as the source.

    -

    Try it out

    language: html style: content: |- @@ -221,17 +218,12 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - core-js@2.4.1/client/core.min.js - @types/core-js + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - jquery@3.1.1 - @types/jquery@3.3.1 https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js \ No newline at end of file diff --git a/samples/powerpoint/shapes/get-set-shapes.yaml b/samples/powerpoint/shapes/get-set-shapes.yaml index c7c18a673..3a6dc8d9f 100644 --- a/samples/powerpoint/shapes/get-set-shapes.yaml +++ b/samples/powerpoint/shapes/get-set-shapes.yaml @@ -6,14 +6,14 @@ host: POWERPOINT api_set: PowerPointApi: '1.5' script: - content: | - $("#getSelectedShapes").on("click", () => tryCatch(getSelectedShapes)); - $("#setSelectedShapes").on("click", () => tryCatch(setSelectedShapes)); - $("#changeFill").on("click", () => tryCatch(changeFill)); - $("#saveShapeSelection").on("click", () => tryCatch(saveShapeSelection)); - $("#loadShapeSelection").on("click", () => tryCatch(loadShapeSelection)); - $("#createShapes").on("click", () => tryCatch(createShapes)); - $("#arrangeSelected").on("click", () => tryCatch(arrangeSelected)); + content: |- + document.getElementById("getSelectedShapes").addEventListener("click", () => tryCatch(getSelectedShapes)); + document.getElementById("setSelectedShapes").addEventListener("click", () => tryCatch(setSelectedShapes)); + document.getElementById("changeFill").addEventListener("click", () => tryCatch(changeFill)); + document.getElementById("saveShapeSelection").addEventListener("click", () => tryCatch(saveShapeSelection)); + document.getElementById("loadShapeSelection").addEventListener("click", () => tryCatch(loadShapeSelection)); + document.getElementById("createShapes").addEventListener("click", () => tryCatch(createShapes)); + document.getElementById("arrangeSelected").addEventListener("click", () => tryCatch(arrangeSelected)); async function getSelectedShapes() { // Gets the shapes you selected on the slide and displays their IDs on the task pane. @@ -176,11 +176,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get selected shapes, and how to select and change specific shapes.

    -

    Try it out

    @@ -194,7 +193,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -213,15 +212,9 @@ style: transition: max-height 0.2s ease-out; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/shapes/get-shapes-by-type.yaml b/samples/powerpoint/shapes/get-shapes-by-type.yaml index 112edce73..9bca1519a 100644 --- a/samples/powerpoint/shapes/get-shapes-by-type.yaml +++ b/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -6,10 +6,10 @@ host: POWERPOINT api_set: PowerPointApi: '1.4' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#change-lines").on("click", () => tryCatch(changeLines)); - $("#change-geometric-shapes").on("click", () => tryCatch(changeGeometricShapes)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("change-lines").addEventListener("click", () => tryCatch(changeLines)); + document.getElementById("change-geometric-shapes").addEventListener("click", () => tryCatch(changeGeometricShapes)); async function changeLines() { // Changes the dash style of every line in the slide. @@ -99,12 +99,10 @@ template:

    This sample shows how select and change shapes based on their types.

    -

    Setup

    Create some shapes in a new, blank presentation.

    - @@ -134,15 +132,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/shapes/shapes.yaml b/samples/powerpoint/shapes/shapes.yaml index 7310e0336..8685c527e 100644 --- a/samples/powerpoint/shapes/shapes.yaml +++ b/samples/powerpoint/shapes/shapes.yaml @@ -5,14 +5,14 @@ host: POWERPOINT api_set: PowerPointApi: '1.4' script: - content: | - $("#create-hexagon").on("click", () => tryCatch(createHexagon)); - $("#shrink-hexagon").on("click", () => tryCatch(shrinkHexagon)); - $("#move-hexagon").on("click", () => tryCatch(moveHexagon)); - $("#create-line").on("click", () => tryCatch(createLine)); - $("#create-text-box").on("click", () => tryCatch(createTextBox)); - $("#create-shape-with-text").on("click", () => tryCatch(createShapeWithText)); - $("#remove-all").on("click", () => tryCatch(removeAll)); + content: |- + document.getElementById("create-hexagon").addEventListener("click", () => tryCatch(createHexagon)); + document.getElementById("shrink-hexagon").addEventListener("click", () => tryCatch(shrinkHexagon)); + document.getElementById("move-hexagon").addEventListener("click", () => tryCatch(moveHexagon)); + document.getElementById("create-line").addEventListener("click", () => tryCatch(createLine)); + document.getElementById("create-text-box").addEventListener("click", () => tryCatch(createTextBox)); + document.getElementById("create-shape-with-text").addEventListener("click", () => tryCatch(createShapeWithText)); + document.getElementById("remove-all").addEventListener("click", () => tryCatch(removeAll)); async function createHexagon() { // This function gets the collection of shapes on the first slide, @@ -155,7 +155,6 @@ template:

    This sample shows how to create, resize, move, and delete shapes.

    -

    Try it out

    Begin by deleting all shapes that are currently on the slide.

    @@ -165,20 +164,16 @@ template: Remove all shapes

    -

    Create, shrink, and move a shape.

    -

    -

    - @@ -186,21 +181,17 @@ template:

    Create other shapes.

    -

    -

    - -

    language: html style: @@ -216,15 +207,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/slide-management/add-slides.yaml b/samples/powerpoint/slide-management/add-slides.yaml index e69f9354f..74e68bd1e 100644 --- a/samples/powerpoint/slide-management/add-slides.yaml +++ b/samples/powerpoint/slide-management/add-slides.yaml @@ -6,9 +6,9 @@ host: POWERPOINT api_set: PowerPointApi: '1.3' script: - content: | - $("#slide-masters").on("click", () => tryCatch(logSlideMasters)); - $("#add-slide").on("click", () => tryCatch(addSlide)); + content: |- + document.getElementById("slide-masters").addEventListener("click", () => tryCatch(logSlideMasters)); + document.getElementById("add-slide").addEventListener("click", () => tryCatch(addSlide)); async function addSlide() { const chosenMaster = $("#master-id").val() as string; @@ -60,31 +60,26 @@ template:

    This sample shows how to add a slide and optionally to specify the slide master and layout of the slide.

    -

    Try it out

    On the Home ribbon, open the New Slide drop down menu to see the slide masters and slide layouts in the presentation. Be sure there are at least two slide masters. To add a master, see Use multiple slide masters in one presentation. The page will open in your browser.

    -

    Press Add slide to add a slide with the default layout of the default slide master to the end of the presentation.

    -

    Press Log slide masters info to log to the console a list of all the slide masters, their child layouts, and the IDs of the masters and the layouts.

    -

    Copy one of the slide master IDs from the console and enter it in the Master ID text box. (Example: 6147483651#7142061614)

    -

    Copy one of the layout IDs from the console, under the same master you choose above, and enter it in the Layout ID text box. (Example: 2147483651#3142061614)

    -

    Press Add slide again to add a slide with the corresponding master and layout.

    +
    language: html @@ -101,15 +96,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/slide-management/get-set-slides.yaml b/samples/powerpoint/slide-management/get-set-slides.yaml index 4d359b9d8..d797ed57b 100644 --- a/samples/powerpoint/slide-management/get-set-slides.yaml +++ b/samples/powerpoint/slide-management/get-set-slides.yaml @@ -7,11 +7,11 @@ api_set: PowerPointApi: '1.5' script: content: |- - $("#getSelectedSlides").on("click", () => tryCatch(getSelectedSlides)); - $("#setSelectedSlides").on("click", () => tryCatch(setSelectedSlides)); - $("#deleteSlides").on("click", () => tryCatch(deleteSlides)); - $("#saveSlideSelection").on("click", () => tryCatch(saveSlideSelection)); - $("#loadSlideSelection").on("click", () => tryCatch(loadSlideSelection)); + document.getElementById("getSelectedSlides").addEventListener("click", () => tryCatch(getSelectedSlides)); + document.getElementById("setSelectedSlides").addEventListener("click", () => tryCatch(setSelectedSlides)); + document.getElementById("deleteSlides").addEventListener("click", () => tryCatch(deleteSlides)); + document.getElementById("saveSlideSelection").addEventListener("click", () => tryCatch(saveSlideSelection)); + document.getElementById("loadSlideSelection").addEventListener("click", () => tryCatch(loadSlideSelection)); async function getSelectedSlides() { // Gets the selected slides and displays their IDs on the task pane. @@ -129,11 +129,10 @@ script: } language: typescript template: - content: | + content: |-

    This sample shows how to get selected slides, and how to select specific slides.

    -

    Try it out

    @@ -145,7 +144,7 @@ template:
    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -164,15 +163,9 @@ style: transition: max-height 0.2s ease-out; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/slide-management/get-slide-metadata.yaml b/samples/powerpoint/slide-management/get-slide-metadata.yaml index f84c6043b..1e86a7752 100644 --- a/samples/powerpoint/slide-management/get-slide-metadata.yaml +++ b/samples/powerpoint/slide-management/get-slide-metadata.yaml @@ -7,7 +7,7 @@ host: POWERPOINT api_set: {} script: content: |- - $("#get-slide-metadata").on("click", getSlideMetadata); + document.getElementById("get-slide-metadata").addEventListener("click", getSlideMetadata); function getSlideMetadata() { Office.context.document.getSelectedDataAsync(Office.CoercionType.SlideRange, @@ -27,7 +27,6 @@ template:

    Demonstrates how to get slide metadata.

    Select one or more slides and click Get slide metadata to get the ID, title, and index of the slide(s).

    - @@ -43,17 +42,11 @@ style: margin-bottom: 5px; margin-left: 20px; min-width: 80px; - } + } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/slide-management/insert-slides.yaml b/samples/powerpoint/slide-management/insert-slides.yaml index 67e2b85ed..d247a007a 100644 --- a/samples/powerpoint/slide-management/insert-slides.yaml +++ b/samples/powerpoint/slide-management/insert-slides.yaml @@ -6,9 +6,9 @@ host: POWERPOINT api_set: PowerPointApi: '1.5' script: - content: | - $("#insert-all-slides").on("click", () => tryCatch(insertAllSlides)); - $("#insert-after-target-slide").on("click", () => tryCatch(insertAfterSelectedSlide)); + content: |- + document.getElementById("insert-all-slides").addEventListener("click", () => tryCatch(insertAllSlides)); + document.getElementById("insert-after-target-slide").addEventListener("click", () => tryCatch(insertAfterSelectedSlide)); $("#file").on("change", () => tryCatch(storeFileAsBase64)); let chosenFileBase64; @@ -71,7 +71,6 @@ template:

    This sample shows how to insert slides from another presentation into the current presentation.

    -

    Try it out

    @@ -109,15 +108,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/tags/tags.yaml b/samples/powerpoint/tags/tags.yaml index 4153e3973..94b85c9c3 100644 --- a/samples/powerpoint/tags/tags.yaml +++ b/samples/powerpoint/tags/tags.yaml @@ -5,13 +5,13 @@ host: POWERPOINT api_set: PowerPointApi: '1.3' script: - content: | - $("#add-selected-slide-tag").on("click", () => tryCatch(addTagToSelectedSlide)); - $("#delete-slides-by-audience").on("click", () => tryCatch(deleteSlidesByAudience)); - $("#add-slide-tags").on("click", () => tryCatch(addMultipleSlideTags)); - $("#add-shape-tag").on("click", () => tryCatch(addShapeTag)); - $("#add-presentation-tag").on("click", () => tryCatch(addPresentationTag)); - $("#delete-presentation-tag").on("click", () => tryCatch(deletePresentationTag)); + content: |- + document.getElementById("add-selected-slide-tag").addEventListener("click", () => tryCatch(addTagToSelectedSlide)); + document.getElementById("delete-slides-by-audience").addEventListener("click", () => tryCatch(deleteSlidesByAudience)); + document.getElementById("add-slide-tags").addEventListener("click", () => tryCatch(addMultipleSlideTags)); + document.getElementById("add-shape-tag").addEventListener("click", () => tryCatch(addShapeTag)); + document.getElementById("add-presentation-tag").addEventListener("click", () => tryCatch(addPresentationTag)); + document.getElementById("delete-presentation-tag").addEventListener("click", () => tryCatch(deletePresentationTag)); async function addTagToSelectedSlide() { await PowerPoint.run(async function(context) { @@ -153,39 +153,30 @@ template: content: |-

    These snippets show how to use tags with the presentation and its slides and shapes.

    -

    Try it out

    -

    1. Add several slides to the deck. Add content to each so they are visually distinct in the thumbnail pane.

    -

    2. Select a single slide and press Add tag to tag the slide to be shown only to premium customers.

    -

    3. Repeat step 2 for another slide.

    -

    4. Press Delete premium customer slides to remove from the presentation slides that should only be shown to premium customers.

    -

    5. Press Add slide tags to add mulitiple tags to the first slide of the presentation.

    -

    6. Select the first slide and on the ribbon, navigate Insert > Illustrations > Shapes to add a shape to it. Press Add shape tag.

    -

    7. Press Add presentation tag.

    -

    8. Press Delete presentation tag.

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -182,15 +182,9 @@ style: transition: max-height 0.2s ease-out; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/project/basics/basic-common-api-call.yaml b/samples/project/basics/basic-common-api-call.yaml index e069060b8..f8d4d189a 100644 --- a/samples/project/basics/basic-common-api-call.yaml +++ b/samples/project/basics/basic-common-api-call.yaml @@ -7,8 +7,8 @@ host: PROJECT api_set: Selection: 1.1 script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, (asyncResult) => { @@ -21,24 +21,17 @@ script: } language: typescript template: - content: | + content: |- language: html style: - content: | - /* Your style goes here */ + content: /* Your style goes here */ language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/project/default.yaml b/samples/project/default.yaml index 7f5b087a5..c73af1eeb 100644 --- a/samples/project/default.yaml +++ b/samples/project/default.yaml @@ -5,8 +5,8 @@ author: OfficeDev host: PROJECT api_set: {} script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, (asyncResult) => { @@ -19,7 +19,7 @@ script: } language: typescript template: - content: | + content: |- @@ -37,15 +37,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/web/default.yaml b/samples/web/default.yaml index 12d365a1d..dba053526 100644 --- a/samples/web/default.yaml +++ b/samples/web/default.yaml @@ -5,15 +5,15 @@ author: OfficeDev host: WEB api_set: {} script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { console.log("Your code goes here"); } language: typescript template: - content: | + content: |- @@ -31,12 +31,6 @@ style: min-width: 80px; } language: css -libraries: | - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file +libraries: |- + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/01-basics/basic-api-call-es5.yaml b/samples/word/01-basics/basic-api-call-es5.yaml index 0886ad057..a9cdf506b 100644 --- a/samples/word/01-basics/basic-api-call-es5.yaml +++ b/samples/word/01-basics/basic-api-call-es5.yaml @@ -8,7 +8,7 @@ api_set: WordApi: '1.1' script: content: |- - $("#run").on("click", () => tryCatch(run)); + document.getElementById("run").addEventListener("click", () => tryCatch(run)); function run() { return Word.run(function (context) { @@ -55,15 +55,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/01-basics/basic-api-call.yaml b/samples/word/01-basics/basic-api-call.yaml index 4128b7967..6aab3ed8e 100644 --- a/samples/word/01-basics/basic-api-call.yaml +++ b/samples/word/01-basics/basic-api-call.yaml @@ -8,7 +8,7 @@ api_set: WordApi: '1.1' script: content: |- - $("#run").on("click", () => tryCatch(run)); + document.getElementById("run").addEventListener("click", () => tryCatch(run)); async function run() { // Gets the current selection and changes the font color to red. @@ -56,15 +56,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/01-basics/basic-common-api-call.yaml b/samples/word/01-basics/basic-common-api-call.yaml index c71ebb2e5..d1b374d41 100644 --- a/samples/word/01-basics/basic-common-api-call.yaml +++ b/samples/word/01-basics/basic-common-api-call.yaml @@ -7,8 +7,8 @@ host: WORD api_set: Selection: 1.1 script: - content: | - $("#run").on("click", run); + content: |- + document.getElementById("run").addEventListener("click", run); function run() { Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, (asyncResult) => { @@ -21,7 +21,7 @@ script: } language: typescript template: - content: | + content: |-
    This sample executes a code snippet that prints the selected text to the console. Make sure to enter and select text before clicking "Print selection".
    @@ -42,15 +42,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-onadded-event.yaml b/samples/word/10-content-controls/content-control-onadded-event.yaml index 47fd52025..2ee82194f 100644 --- a/samples/word/10-content-controls/content-control-onadded-event.yaml +++ b/samples/word/10-content-controls/content-control-onadded-event.yaml @@ -6,11 +6,11 @@ host: WORD api_set: WordApi: '1.5' script: - content: | - $("#register-event-handler").on("click", () => tryCatch(registerEventHandler)); - $("#insert-content-controls").on("click", () => tryCatch(insertContentControls)); - $("#deregister-event-handler").on("click", () => tryCatch(deregisterEventHandler)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("register-event-handler").addEventListener("click", () => tryCatch(registerEventHandler)); + document.getElementById("insert-content-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("deregister-event-handler").addEventListener("click", () => tryCatch(deregisterEventHandler)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); let eventContext; @@ -93,14 +93,12 @@ template:
    This sample demonstrates how to use the onAdded event with content controls.
    -

    Set up

    -

    Try it out

    Register event handler. @@ -132,13 +130,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml index 8e7df83e6..976769d1a 100644 --- a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml +++ b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml @@ -6,11 +6,11 @@ host: WORD api_set: WordApi: '1.5' script: - content: | - $("#insert-content-controls").on("click", () => tryCatch(insertContentControls)); - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); - $("#deregister-event-handlers").on("click", () => tryCatch(deregisterEventHandlers)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-content-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); + document.getElementById("deregister-event-handlers").addEventListener("click", () => tryCatch(deregisterEventHandlers)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); let eventContexts = []; @@ -110,14 +110,12 @@ template:
    This sample demonstrates how to use the onDataChanged event on content controls.
    -

    Set up

    -

    Try it out

    1. Insert content controls. @@ -150,13 +148,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-ondeleted-event.yaml b/samples/word/10-content-controls/content-control-ondeleted-event.yaml index 535ecd315..e98eec7af 100644 --- a/samples/word/10-content-controls/content-control-ondeleted-event.yaml +++ b/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -6,12 +6,12 @@ host: WORD api_set: WordApi: '1.5' script: - content: | - $("#insert-content-controls").on("click", () => tryCatch(insertContentControls)); - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); - $("#delete-content-control").on("click", () => tryCatch(deleteContentControl)); - $("#deregister-event-handlers").on("click", () => tryCatch(deregisterEventHandlers)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-content-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); + document.getElementById("delete-content-control").addEventListener("click", () => tryCatch(deleteContentControl)); + document.getElementById("deregister-event-handlers").addEventListener("click", () => tryCatch(deregisterEventHandlers)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); let eventContexts = []; @@ -127,14 +127,12 @@ template:
    This sample demonstrates how to use the onDeleted event on content controls.
    -

    Set up

    -

    Try it out

    Insert content controls. @@ -170,13 +168,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-onentered-event.yaml b/samples/word/10-content-controls/content-control-onentered-event.yaml index a1e2e93cb..4c7128dc0 100644 --- a/samples/word/10-content-controls/content-control-onentered-event.yaml +++ b/samples/word/10-content-controls/content-control-onentered-event.yaml @@ -6,11 +6,11 @@ host: WORD api_set: WordApi: '1.5' script: - content: | - $("#insert-content-controls").on("click", () => tryCatch(insertContentControls)); - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); - $("#deregister-event-handlers").on("click", () => tryCatch(deregisterEventHandlers)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-content-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); + document.getElementById("deregister-event-handlers").addEventListener("click", () => tryCatch(deregisterEventHandlers)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); let eventContexts = []; @@ -110,14 +110,12 @@ template:
    This sample demonstrates how to use the onEntered event on content controls.
    -

    Set up

    -

    Try it out

    1. Insert content controls. @@ -150,13 +148,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-onexited-event.yaml b/samples/word/10-content-controls/content-control-onexited-event.yaml index 242550f03..c2e5b4eab 100644 --- a/samples/word/10-content-controls/content-control-onexited-event.yaml +++ b/samples/word/10-content-controls/content-control-onexited-event.yaml @@ -6,11 +6,11 @@ host: WORD api_set: WordApi: '1.5' script: - content: | - $("#insert-content-controls").on("click", () => tryCatch(insertContentControls)); - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); - $("#deregister-event-handlers").on("click", () => tryCatch(deregisterEventHandlers)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-content-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); + document.getElementById("deregister-event-handlers").addEventListener("click", () => tryCatch(deregisterEventHandlers)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); let eventContexts = []; @@ -110,14 +110,12 @@ template:
    This sample demonstrates how to use the onExited event on content controls.
    -

    Set up

    -

    Try it out

    1. Insert content controls. @@ -151,13 +149,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml index 7f04b743d..989a07ac1 100644 --- a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml +++ b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml @@ -6,11 +6,11 @@ host: WORD api_set: WordApi: '1.5' script: - content: | - $("#insert-content-controls").on("click", () => tryCatch(insertContentControls)); - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); - $("#deregister-event-handlers").on("click", () => tryCatch(deregisterEventHandlers)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-content-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); + document.getElementById("deregister-event-handlers").addEventListener("click", () => tryCatch(deregisterEventHandlers)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); let eventContexts = []; @@ -109,14 +109,12 @@ template:
    This sample demonstrates how to use the onSelectionChanged event on content controls.
    -

    Set up

    -

    Try it out

    1. Insert content controls. @@ -149,13 +147,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/get-change-tracking-states.yaml b/samples/word/10-content-controls/get-change-tracking-states.yaml index 59c3e7901..b59d84146 100644 --- a/samples/word/10-content-controls/get-change-tracking-states.yaml +++ b/samples/word/10-content-controls/get-change-tracking-states.yaml @@ -7,13 +7,13 @@ host: WORD api_set: WordApi: '1.5' script: - content: | - $("#turn-on-change-tracking").on("click", () => tryCatch(turnOnChangeTracking)); - $("#insert-content-control").on("click", () => tryCatch(insertContentControlOnLastParagraph)); - $("#delete-content-control").on("click", () => tryCatch(deleteFirstContentControl)); - $("#turn-off-change-tracking").on("click", () => tryCatch(turnOffChangeTracking)); - $("#log-change-tracking-states").on("click", () => tryCatch(logChangeTrackingStates)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("turn-on-change-tracking").addEventListener("click", () => tryCatch(turnOnChangeTracking)); + document.getElementById("insert-content-control").addEventListener("click", () => tryCatch(insertContentControlOnLastParagraph)); + document.getElementById("delete-content-control").addEventListener("click", () => tryCatch(deleteFirstContentControl)); + document.getElementById("turn-off-change-tracking").addEventListener("click", () => tryCatch(turnOffChangeTracking)); + document.getElementById("log-change-tracking-states").addEventListener("click", () => tryCatch(logChangeTrackingStates)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function turnOnChangeTracking() { // Turns on change tracking. @@ -121,14 +121,12 @@ template:
    This sample demonstrates how to insert and delete control controls then get their change tracking state.
    -

    Set up

    -

    Try it out

    -

    Try it out

    @@ -236,13 +234,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml index a0660bfaf..a0fee9f6f 100644 --- a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -6,14 +6,14 @@ host: WORD api_set: WordApi: '1.9' script: - content: | - $("#insert-control").on("click", () => tryCatch(insertComboBoxContentControl)); - $("#add-item").on("click", () => tryCatch(addItemToComboBoxContentControl)); - $("#get-items").on("click", () => tryCatch(getListFromComboBoxContentControl)); - $("#delete-item").on("click", () => tryCatch(deleteItemFromComboBoxContentControl)); - $("#delete-list").on("click", () => tryCatch(deleteListFromComboBoxContentControl)); - $("#delete-control").on("click", () => tryCatch(deleteComboBoxContentControl)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-control").addEventListener("click", () => tryCatch(insertComboBoxContentControl)); + document.getElementById("add-item").addEventListener("click", () => tryCatch(addItemToComboBoxContentControl)); + document.getElementById("get-items").addEventListener("click", () => tryCatch(getListFromComboBoxContentControl)); + document.getElementById("delete-item").addEventListener("click", () => tryCatch(deleteItemFromComboBoxContentControl)); + document.getElementById("delete-list").addEventListener("click", () => tryCatch(deleteListFromComboBoxContentControl)); + document.getElementById("delete-control").addEventListener("click", () => tryCatch(deleteComboBoxContentControl)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertComboBoxContentControl() { // Places a combo box content control at the end of the selection. @@ -247,14 +247,12 @@ template:

    This sample demonstrates how to insert, change, and delete combo box content controls.
    -

    Set up

    -

    Try it out

    @@ -318,13 +316,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/insert-and-change-content-controls.yaml b/samples/word/10-content-controls/insert-and-change-content-controls.yaml index ae89ef06a..961b5d982 100644 --- a/samples/word/10-content-controls/insert-and-change-content-controls.yaml +++ b/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -7,10 +7,10 @@ host: WORD api_set: WordApi: '1.1' script: - content: | - $("#insert-controls").on("click", () => tryCatch(insertContentControls)); - $("#change-controls").on("click", () => tryCatch(modifyContentControls)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("change-controls").addEventListener("click", () => tryCatch(modifyContentControls)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertContentControls() { // Traverses each paragraph of the document and wraps a content control on each with either a even or odd tags. @@ -104,14 +104,12 @@ template:

    This sample demonstrates how to insert and change content control properties.
    -

    Set up

    -

    Try it out

    Insert content controls on each paragraph. @@ -139,13 +137,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml index cb99d13e3..36532629e 100644 --- a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -6,14 +6,14 @@ host: WORD api_set: WordApi: '1.9' script: - content: | - $("#insert-control").on("click", () => tryCatch(insertDropdownListContentControl)); - $("#add-item").on("click", () => tryCatch(addItemToDropdownListContentControl)); - $("#get-items").on("click", () => tryCatch(getListFromDropdownListContentControl)); - $("#delete-item").on("click", () => tryCatch(deleteItemFromDropdownListContentControl)); - $("#delete-list").on("click", () => tryCatch(deleteListFromDropdownListContentControl)); - $("#delete-control").on("click", () => tryCatch(deleteDropdownListContentControl)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-control").addEventListener("click", () => tryCatch(insertDropdownListContentControl)); + document.getElementById("add-item").addEventListener("click", () => tryCatch(addItemToDropdownListContentControl)); + document.getElementById("get-items").addEventListener("click", () => tryCatch(getListFromDropdownListContentControl)); + document.getElementById("delete-item").addEventListener("click", () => tryCatch(deleteItemFromDropdownListContentControl)); + document.getElementById("delete-list").addEventListener("click", () => tryCatch(deleteListFromDropdownListContentControl)); + document.getElementById("delete-control").addEventListener("click", () => tryCatch(deleteDropdownListContentControl)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertDropdownListContentControl() { // Places a dropdown list content control at the end of the selection. @@ -249,14 +249,12 @@ template:
    This sample demonstrates how to insert, change, and delete dropdown list content controls.
    -

    Set up

    -

    Try it out

    @@ -320,13 +318,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/15-images/insert-and-get-pictures.yaml b/samples/word/15-images/insert-and-get-pictures.yaml index 1c3c3e08a..ee39795ab 100644 --- a/samples/word/15-images/insert-and-get-pictures.yaml +++ b/samples/word/15-images/insert-and-get-pictures.yaml @@ -6,10 +6,10 @@ host: WORD api_set: WordApiDesktop: '1.1' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#insert").on("click", () => tryCatch(insertImage)); - $("#get").on("click", () => tryCatch(getImage)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("insert").addEventListener("click", () => tryCatch(insertImage)); + document.getElementById("get").addEventListener("click", () => tryCatch(getImage)); async function insertImage() { // Inserts an image anchored to the last paragraph. @@ -75,14 +75,12 @@ template:

    This sample demonstrates how to insert and get inline pictures in a document.
    -

    Set up

    -

    Try it out

    -

    Try it out

    -
    language: html style: @@ -107,10 +105,6 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - core-js@2.4.1/client/core.min.js - @types/core-js - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/20-lists/organize-list.yaml b/samples/word/20-lists/organize-list.yaml index 28eaa77ab..ccfef74ef 100644 --- a/samples/word/20-lists/organize-list.yaml +++ b/samples/word/20-lists/organize-list.yaml @@ -7,10 +7,10 @@ host: WORD api_set: WordApi: '1.3' script: - content: | - $("#insert-list").on("click", () => tryCatch(insertOrganizeList)); - $("#get-list-props").on("click", () => tryCatch(getListProps)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-list").addEventListener("click", () => tryCatch(insertOrganizeList)); + document.getElementById("get-list-props").addEventListener("click", () => tryCatch(getListProps)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertOrganizeList() { // Inserts a list starting with the first paragraph then set numbering and bullet types of the list items. @@ -104,14 +104,12 @@ template:
    This sample demonstrates how to create and organize a list.
    -

    Set up

    -

    Try it out

    -

    Try it out

    Select an insertion point in the document.

    @@ -117,13 +115,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/25-paragraph/get-text.yaml b/samples/word/25-paragraph/get-text.yaml index ebd2d19e3..06c427331 100644 --- a/samples/word/25-paragraph/get-text.yaml +++ b/samples/word/25-paragraph/get-text.yaml @@ -7,9 +7,9 @@ host: WORD api_set: WordApi: '1.7' script: - content: | - $("#run").on("click", () => tryCatch(run)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function run() { await Word.run(async (context) => { @@ -67,14 +67,12 @@ template: Word.

    -

    Set up

    -

    Try it out

    -

    Try it out

    Get the word/term count. @@ -122,15 +120,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/25-paragraph/insert-formatted-text.yaml b/samples/word/25-paragraph/insert-formatted-text.yaml index fc7c89344..66b2fe227 100644 --- a/samples/word/25-paragraph/insert-formatted-text.yaml +++ b/samples/word/25-paragraph/insert-formatted-text.yaml @@ -8,9 +8,9 @@ api_set: WordApi: '1.1' script: content: |- - $("#add-text").on("click", () => tryCatch(addFormattedText)); - $("#add-paragraph").on("click", () => tryCatch(addFormattedParagraph)); - $("#add-preset").on("click", () => tryCatch(addPreStyledFormattedText)); + document.getElementById("add-text").addEventListener("click", () => tryCatch(addFormattedText)); + document.getElementById("add-paragraph").addEventListener("click", () => tryCatch(addFormattedParagraph)); + document.getElementById("add-preset").addEventListener("click", () => tryCatch(addPreStyledFormattedText)); async function addFormattedText() { await Word.run(async (context) => { @@ -79,7 +79,6 @@ template:
    This sample shows how to insert basic formatted text and apply built-in styles.
    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    -

    Try it out

    Compare location of first paragraph with location of second paragraph

    @@ -119,15 +117,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/35-ranges/scroll-to-range.yaml b/samples/word/35-ranges/scroll-to-range.yaml index a113fde70..bc4ec0029 100644 --- a/samples/word/35-ranges/scroll-to-range.yaml +++ b/samples/word/35-ranges/scroll-to-range.yaml @@ -7,10 +7,10 @@ host: WORD api_set: WordApi: '1.2' script: - content: | - $("#setup").on("click", () => tryCatch(setup)); - $("#scroll").on("click", () => tryCatch(scroll)); - $("#scroll-end").on("click", () => tryCatch(scrollEnd)); + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("scroll").addEventListener("click", () => tryCatch(scroll)); + document.getElementById("scroll-end").addEventListener("click", () => tryCatch(scrollEnd)); async function scroll() { await Word.run(async (context) => { @@ -63,14 +63,12 @@ template:
    This sample demonstrates how to scroll to a range.
    -

    Set up

    -

    Try it out

    -

    Try it out

    -

    Try it out

    Add a new table style

    @@ -362,7 +361,6 @@ template: Display style properties
    -

    Update custom style

    @@ -390,7 +387,6 @@ template: Set allowBreakAcrossPage property
    -
    @@ -399,7 +395,6 @@ template: Set top cell margin
    -
    @@ -408,7 +403,6 @@ template: Set bottom cell margin
    -
    @@ -417,7 +411,6 @@ template: Set left cell margin
    -
    @@ -426,7 +419,6 @@ template: Set right cell margin
    -
    @@ -435,7 +427,6 @@ template: Set cell spacing
    -

    Delete custom style

    @@ -445,7 +436,6 @@ template: Delete style
    -

    Import styles from JSON string

    language: html style: - content: | + content: |- section.samples { margin-top: 20px; } @@ -471,15 +461,9 @@ style: margin-bottom: 5px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/40-tables/manage-formatting.yaml b/samples/word/40-tables/manage-formatting.yaml index 23b2855b5..303649fb2 100644 --- a/samples/word/40-tables/manage-formatting.yaml +++ b/samples/word/40-tables/manage-formatting.yaml @@ -7,17 +7,17 @@ host: WORD api_set: WordApi: '1.3' script: - content: | - $("#get-table-alignment").on("click", () => tryCatch(getTableAlignment)); - $("#get-table-border").on("click", () => tryCatch(getTableBorder)); - $("#get-table-cell-padding").on("click", () => tryCatch(getTableCellPadding)); - $("#get-table-row-alignment").on("click", () => tryCatch(getTableRowAlignment)); - $("#get-table-row-border").on("click", () => tryCatch(getTableRowBorder)); - $("#get-table-row-cell-padding").on("click", () => tryCatch(getTableRowCellPadding)); - $("#get-table-cell-alignment").on("click", () => tryCatch(getTableCellAlignment)); - $("#get-table-cell-border").on("click", () => tryCatch(getTableCellBorder)); - $("#get-table-cell-cell-padding").on("click", () => tryCatch(getTableCellCellPadding)); - $("#setup").on("click", () => tryCatch(insertTable)); + content: |- + document.getElementById("get-table-alignment").addEventListener("click", () => tryCatch(getTableAlignment)); + document.getElementById("get-table-border").addEventListener("click", () => tryCatch(getTableBorder)); + document.getElementById("get-table-cell-padding").addEventListener("click", () => tryCatch(getTableCellPadding)); + document.getElementById("get-table-row-alignment").addEventListener("click", () => tryCatch(getTableRowAlignment)); + document.getElementById("get-table-row-border").addEventListener("click", () => tryCatch(getTableRowBorder)); + document.getElementById("get-table-row-cell-padding").addEventListener("click", () => tryCatch(getTableRowCellPadding)); + document.getElementById("get-table-cell-alignment").addEventListener("click", () => tryCatch(getTableCellAlignment)); + document.getElementById("get-table-cell-border").addEventListener("click", () => tryCatch(getTableCellBorder)); + document.getElementById("get-table-cell-cell-padding").addEventListener("click", () => tryCatch(getTableCellCellPadding)); + document.getElementById("setup").addEventListener("click", () => tryCatch(insertTable)); async function getTableAlignment() { // Gets alignment details about the first table in the document. @@ -171,7 +171,6 @@ template: This sample shows how to get various formatting details about a table, a table row, and a table cell, including borders, alignment, and cell padding.
    -

    Set up

    -

    Try it out

    You should also show the formatting marks to see the section indicators. To learn more, refer to Show or hide tab marks in Word

    -

    Try it out

    -

    Set up

    -

    Try it out

    -

    Try it out

    -

    Try it out

    Get current change tracking mode

    @@ -140,15 +138,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-comments.yaml b/samples/word/50-document/manage-comments.yaml index b630ddcfd..7593ebb46 100644 --- a/samples/word/50-document/manage-comments.yaml +++ b/samples/word/50-document/manage-comments.yaml @@ -6,17 +6,17 @@ host: WORD api_set: WordApi: '1.4' script: - content: | - $("#insert").on("click", () => tryCatch(insertComment)); - $("#edit").on("click", () => tryCatch(editFirstCommentInSelection)); - $("#reply").on("click", () => tryCatch(replyToFirstActiveCommentInSelection)); - $("#resolve").on("click", () => tryCatch(toggleResolvedStatusOfFirstCommentInSelection)); - $("#range").on("click", () => tryCatch(getFirstCommentRangeInSelection)); - $("#get-comments-in-selection").on("click", () => tryCatch(getCommentsInSelection)); - $("#get-replies-to-first-comment-in-selection").on("click", () => tryCatch(getRepliesToFirstCommentInSelection)); - $("#delete").on("click", () => tryCatch(deleteFirstCommentInSelection)); - $("#get-comments").on("click", () => tryCatch(getComments)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert").addEventListener("click", () => tryCatch(insertComment)); + document.getElementById("edit").addEventListener("click", () => tryCatch(editFirstCommentInSelection)); + document.getElementById("reply").addEventListener("click", () => tryCatch(replyToFirstActiveCommentInSelection)); + document.getElementById("resolve").addEventListener("click", () => tryCatch(toggleResolvedStatusOfFirstCommentInSelection)); + document.getElementById("range").addEventListener("click", () => tryCatch(getFirstCommentRangeInSelection)); + document.getElementById("get-comments-in-selection").addEventListener("click", () => tryCatch(getCommentsInSelection)); + document.getElementById("get-replies-to-first-comment-in-selection").addEventListener("click", () => tryCatch(getRepliesToFirstCommentInSelection)); + document.getElementById("delete").addEventListener("click", () => tryCatch(deleteFirstCommentInSelection)); + document.getElementById("get-comments").addEventListener("click", () => tryCatch(getComments)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertComment() { // Sets a comment on the selected content. @@ -218,14 +218,12 @@ template:

    This sample shows basic operations using comments.

    -

    Set up

    -

    Try it out

    Manage comments in selection

    @@ -297,15 +295,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-custom-xml-part-ns.yaml b/samples/word/50-document/manage-custom-xml-part-ns.yaml index ba6380115..84d012fdb 100644 --- a/samples/word/50-document/manage-custom-xml-part-ns.yaml +++ b/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -6,15 +6,15 @@ host: WORD api_set: WordApi: '1.4' script: - content: | - $("#add-custom-xml-part").on("click", () => tryCatch(addCustomXmlPart)); - $("#query").on("click", () => tryCatch(query)); - $("#get-namespace").on("click", () => tryCatch(getNamespace)); - $("#get-by-namespace").on("click", () => tryCatch(getByNamespaceUri)); - $("#replace-custom-xml-part").on("click", () => tryCatch(replace)); - $("#insert-attribute").on("click", () => tryCatch(insertAttribute)); - $("#insert-element").on("click", () => tryCatch(insertElement)); - $("#delete-custom-xml-part").on("click", () => tryCatch(deleteCustomXmlPart)); + content: |- + document.getElementById("add-custom-xml-part").addEventListener("click", () => tryCatch(addCustomXmlPart)); + document.getElementById("query").addEventListener("click", () => tryCatch(query)); + document.getElementById("get-namespace").addEventListener("click", () => tryCatch(getNamespace)); + document.getElementById("get-by-namespace").addEventListener("click", () => tryCatch(getByNamespaceUri)); + document.getElementById("replace-custom-xml-part").addEventListener("click", () => tryCatch(replace)); + document.getElementById("insert-attribute").addEventListener("click", () => tryCatch(insertAttribute)); + document.getElementById("insert-element").addEventListener("click", () => tryCatch(insertElement)); + document.getElementById("delete-custom-xml-part").addEventListener("click", () => tryCatch(deleteCustomXmlPart)); async function addCustomXmlPart() { // Adds a custom XML part. @@ -257,7 +257,6 @@ template:

    This sample shows how to add, query, replace, edit, and delete a custom XML part in a document.

    Note: For your production add-in, make sure to create and host your own XML schema.

    -

    Try it out

    -

    Try it out

    -

    Set up

    -

    Try it out

    Insert fields

    @@ -197,7 +195,6 @@ template: Insert Date field

    -

    Get and update fields

    -

    Delete fields

    -

    Try it out

    Insert footnote

    @@ -238,15 +236,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-settings.yaml b/samples/word/50-document/manage-settings.yaml index 2dc50e3f5..b80adc658 100644 --- a/samples/word/50-document/manage-settings.yaml +++ b/samples/word/50-document/manage-settings.yaml @@ -6,10 +6,10 @@ host: WORD api_set: WordApi: '1.4' script: - content: | - $("#add-edit-setting").on("click", () => tryCatch(addEditSetting)); - $("#get-all-settings").on("click", () => tryCatch(getAllSettings)); - $("#delete-all-settings").on("click", () => tryCatch(deleteAllSettings)); + content: |- + document.getElementById("add-edit-setting").addEventListener("click", () => tryCatch(addEditSetting)); + document.getElementById("get-all-settings").addEventListener("click", () => tryCatch(getAllSettings)); + document.getElementById("delete-all-settings").addEventListener("click", () => tryCatch(deleteAllSettings)); async function addEditSetting() { // Adds a new custom setting or @@ -82,7 +82,6 @@ template: can only be managed by that add-in.

    -

    Try it out

    Add a new setting, or edit an existing one

    @@ -120,15 +119,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-styles.yaml b/samples/word/50-document/manage-styles.yaml index daf6afd8c..f798edc85 100644 --- a/samples/word/50-document/manage-styles.yaml +++ b/samples/word/50-document/manage-styles.yaml @@ -6,16 +6,16 @@ host: WORD api_set: WordApiDesktop: '1.1' script: - content: | - $("#count").on("click", () => tryCatch(getCount)); - $("#add-style").on("click", () => tryCatch(addStyle)); - $("#properties").on("click", () => tryCatch(getProperties)); - $("#apply-style").on("click", () => tryCatch(applyStyle)); - $("#font-properties").on("click", () => tryCatch(setFontProperties)); - $("#paragraph-format").on("click", () => tryCatch(setParagraphFormat)); - $("#border-properties").on("click", () => tryCatch(setBorderProperties)); - $("#shading-properties").on("click", () => tryCatch(setShadingProperties)); - $("#delete-style").on("click", () => tryCatch(deleteStyle)); + content: |- + document.getElementById("count").addEventListener("click", () => tryCatch(getCount)); + document.getElementById("add-style").addEventListener("click", () => tryCatch(addStyle)); + document.getElementById("properties").addEventListener("click", () => tryCatch(getProperties)); + document.getElementById("apply-style").addEventListener("click", () => tryCatch(applyStyle)); + document.getElementById("font-properties").addEventListener("click", () => tryCatch(setFontProperties)); + document.getElementById("paragraph-format").addEventListener("click", () => tryCatch(setParagraphFormat)); + document.getElementById("border-properties").addEventListener("click", () => tryCatch(setBorderProperties)); + document.getElementById("shading-properties").addEventListener("click", () => tryCatch(setShadingProperties)); + document.getElementById("delete-style").addEventListener("click", () => tryCatch(deleteStyle)); async function getCount() { // Gets the number of available styles stored with the document. @@ -253,7 +253,6 @@ template:
    This sample demonstrates how to manage styles.
    -

    Try it out

    @@ -262,7 +261,6 @@ template: Get count

    -

    Add a custom style

    Give the style an alphanumeric name. Must start with a letter. Examples: NewName, newname1

    @@ -281,7 +279,6 @@ template: -

    Use custom style

    @@ -293,7 +290,6 @@ template: -

    Update custom style

    @@ -317,7 +313,6 @@ template: -

    Delete custom style

    @@ -342,10 +337,6 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - core-js@2.4.1/client/core.min.js - @types/core-js - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-tracked-changes.yaml b/samples/word/50-document/manage-tracked-changes.yaml index 31796b541..f692ef0e9 100644 --- a/samples/word/50-document/manage-tracked-changes.yaml +++ b/samples/word/50-document/manage-tracked-changes.yaml @@ -6,15 +6,15 @@ host: WORD api_set: WordApi: '1.6' script: - content: | - $("#get-all-tracked-changes").on("click", () => tryCatch(getAllTrackedChanges)); - $("#get-first-tracked-change-range").on("click", () => tryCatch(getFirstTrackedChangeRange)); - $("#get-next-tracked-change").on("click", () => tryCatch(getNextTrackedChange)); - $("#accept-first-tracked-change").on("click", () => tryCatch(acceptFirstTrackedChange)); - $("#reject-first-tracked-change").on("click", () => tryCatch(rejectFirstTrackedChange)); - $("#accept-all-tracked-changes").on("click", () => tryCatch(acceptAllTrackedChanges)); - $("#reject-all-tracked-changes").on("click", () => tryCatch(rejectAllTrackedChanges)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("get-all-tracked-changes").addEventListener("click", () => tryCatch(getAllTrackedChanges)); + document.getElementById("get-first-tracked-change-range").addEventListener("click", () => tryCatch(getFirstTrackedChangeRange)); + document.getElementById("get-next-tracked-change").addEventListener("click", () => tryCatch(getNextTrackedChange)); + document.getElementById("accept-first-tracked-change").addEventListener("click", () => tryCatch(acceptFirstTrackedChange)); + document.getElementById("reject-first-tracked-change").addEventListener("click", () => tryCatch(rejectFirstTrackedChange)); + document.getElementById("accept-all-tracked-changes").addEventListener("click", () => tryCatch(acceptAllTrackedChanges)); + document.getElementById("reject-all-tracked-changes").addEventListener("click", () => tryCatch(rejectAllTrackedChanges)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function getAllTrackedChanges() { // Gets all tracked changes. @@ -152,14 +152,12 @@ template:

    This sample shows how to manage tracked changes.
    -

    Set up

    -

    Try it out

    -

    Replace placeholder text

    -

    Try it out

    -

    Try it out

    Set the styling of the first paragraph.

    @@ -108,13 +106,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml index 70b694d4a..d74455158 100644 --- a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml +++ b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -6,12 +6,12 @@ host: WORD api_set: WordApi: '1.9' script: - content: | - $("#insert-controls").on("click", () => tryCatch(insertContentControls)); - $("#change-controls").on("click", () => tryCatch(modifyContentControls)); - $("#set-state").on("click", () => tryCatch(setState)); - $("#reset-state").on("click", () => tryCatch(resetState)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("insert-controls").addEventListener("click", () => tryCatch(insertContentControls)); + document.getElementById("change-controls").addEventListener("click", () => tryCatch(modifyContentControls)); + document.getElementById("set-state").addEventListener("click", () => tryCatch(setState)); + document.getElementById("reset-state").addEventListener("click", () => tryCatch(resetState)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertContentControls() { // Traverses each paragraph of the document and wraps a content control on each with either a even or odd tags. @@ -144,14 +144,12 @@ template:
    This sample demonstrates how to insert content controls and change their properties.
    -

    Set up

    -

    Try it out

    Insert content controls on each paragraph. @@ -198,11 +196,5 @@ libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js @types/office-js-preview - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/99-preview-apis/manage-comments.yaml b/samples/word/99-preview-apis/manage-comments.yaml index b3eeefb61..679effec6 100644 --- a/samples/word/99-preview-apis/manage-comments.yaml +++ b/samples/word/99-preview-apis/manage-comments.yaml @@ -5,19 +5,19 @@ host: WORD api_set: WordApi: '1.9' script: - content: | - $("#register-event-handlers").on("click", () => tryCatch(registerEventHandlers)); - $("#insert").on("click", () => tryCatch(insertComment)); - $("#edit").on("click", () => tryCatch(editFirstCommentInSelection)); - $("#reply").on("click", () => tryCatch(replyToFirstActiveCommentInSelection)); - $("#resolve").on("click", () => tryCatch(toggleResolvedStatusOfFirstCommentInSelection)); - $("#range").on("click", () => tryCatch(getFirstCommentRangeInSelection)); - $("#get-comments-in-selection").on("click", () => tryCatch(getCommentsInSelection)); - $("#get-replies-to-first-comment-in-selection").on("click", () => tryCatch(getRepliesToFirstCommentInSelection)); - $("#delete").on("click", () => tryCatch(deleteFirstCommentInSelection)); - $("#get-comments").on("click", () => tryCatch(getComments)); - $("#deregister-event-handlers").on("click", () => tryCatch(deregisterEventHandlers)); - $("#setup").on("click", () => tryCatch(setup)); + content: |- + document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); + document.getElementById("insert").addEventListener("click", () => tryCatch(insertComment)); + document.getElementById("edit").addEventListener("click", () => tryCatch(editFirstCommentInSelection)); + document.getElementById("reply").addEventListener("click", () => tryCatch(replyToFirstActiveCommentInSelection)); + document.getElementById("resolve").addEventListener("click", () => tryCatch(toggleResolvedStatusOfFirstCommentInSelection)); + document.getElementById("range").addEventListener("click", () => tryCatch(getFirstCommentRangeInSelection)); + document.getElementById("get-comments-in-selection").addEventListener("click", () => tryCatch(getCommentsInSelection)); + document.getElementById("get-replies-to-first-comment-in-selection").addEventListener("click", () => tryCatch(getRepliesToFirstCommentInSelection)); + document.getElementById("delete").addEventListener("click", () => tryCatch(deleteFirstCommentInSelection)); + document.getElementById("get-comments").addEventListener("click", () => tryCatch(getComments)); + document.getElementById("deregister-event-handlers").addEventListener("click", () => tryCatch(deregisterEventHandlers)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); let eventContexts = []; @@ -273,14 +273,12 @@ template: Word on a different platform.

    -

    Set up

    -

    Try it out

    @@ -362,15 +360,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js @types/office-js-preview - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js - - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/default.yaml b/samples/word/default.yaml index afde4ef92..9d45b151a 100644 --- a/samples/word/default.yaml +++ b/samples/word/default.yaml @@ -6,8 +6,8 @@ host: WORD api_set: WordApi: '1.1' script: - content: | - $("#run").on("click", () => tryCatch(run)); + content: |- + document.getElementById("run").addEventListener("click", () => tryCatch(run)); async function run() { await Word.run(async (context) => { @@ -31,7 +31,7 @@ script: } language: typescript template: - content: | + content: |- @@ -49,15 +49,9 @@ style: min-width: 80px; } language: css -libraries: | +libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js - - office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - - core-js@2.4.1/client/core.min.js - @types/core-js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts - jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/scripts/.gitattributes b/scripts/.gitattributes deleted file mode 100644 index 638b85721..000000000 --- a/scripts/.gitattributes +++ /dev/null @@ -1,24 +0,0 @@ -* text=auto -.gitattributes text -*.css text eol=lf -*.html text eol=lf -*.js text eol=lf -*.json text eol=lf -*.xml text eol=lf -*.kql text eol=lf -*.lock text eol=lf -*.md text eol=lf -*.ts text eol=lf -*.tsx text eol=lf -*.txt text eol=lf -*.yaml text eol=lf -*.yml text eol=lf -.npmrc text eol=lf - -*.cs text eol=crlf -*.sln text eol=crlf -*.csproj text eol=crlf - - -*.png binary -*.jpg binary \ No newline at end of file diff --git a/scripts/.gitignore b/scripts/.gitignore deleted file mode 100644 index dbf082131..000000000 --- a/scripts/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/* \ No newline at end of file diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index be81caa85..000000000 --- a/scripts/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Scripts - -These scripts used to help maintain this repository. - -## Setup - -> npm install - -## Edit Script - -This script is used to bulk edit samples. - -To run this script: - -> npm run edit - -The edit targets all prod samples listed in `playlists-prod` and all default samples. - -Under the src folder the transform* files contain the specific JavaScript transforms that will run. - -To develop new transforms: - -1. Make changes the transform* functions -2. Run the transforms (npm run edit) -3. Check using the git diff to make sure the changes are what you expect -4. If you don't like the changes run the following in the **samples** folder: - > git checkout -- * diff --git a/scripts/config/prettier.json b/scripts/config/prettier.json deleted file mode 100644 index f485b3e4c..000000000 --- a/scripts/config/prettier.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "trailingComma": "all", - "arrowParens": "always", - "endOfLine": "lf", - "proseWrap": "preserve", - "printWidth": 100, - "tabWidth": 4 -} \ No newline at end of file diff --git a/scripts/package-lock.json b/scripts/package-lock.json deleted file mode 100644 index 25f3bb4a1..000000000 --- a/scripts/package-lock.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "name": "scripts", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "scripts", - "version": "0.0.0", - "license": "Unlicense", - "devDependencies": { - "@types/node": "^18.19.80", - "prettier": "^3.5.3", - "ts-node": "^10.9.2", - "typescript": "^5.8.2", - "yaml": "^2.7.0" - }, - "engines": { - "node": ">=18.0", - "npm": ">=10.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.19.80", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.80.tgz", - "integrity": "sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", - "dev": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - } -} diff --git a/scripts/package.json b/scripts/package.json deleted file mode 100644 index 455d76af6..000000000 --- a/scripts/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "scripts", - "version": "0.0.0", - "description": "Scripts to transform samples", - "private": true, - "engines": { - "node": ">=18.0", - "npm": ">=10.0" - }, - "scripts": { - "edit": "ts-node src/main.ts", - "style": "prettier --config ./config/prettier.json --write \"@(src|test|scripts)/**/*.@(ts|tsx|js|md|html|css|json)\"" - }, - "author": "wandyezj", - "license": "Unlicense", - "devDependencies": { - "@types/node": "^18.19.80", - "prettier": "^3.5.3", - "ts-node": "^10.9.2", - "typescript": "^5.8.2", - "yaml": "^2.7.0" - } -} diff --git a/scripts/src/RawPlaylist.ts b/scripts/src/RawPlaylist.ts deleted file mode 100644 index 0f3f4495c..000000000 --- a/scripts/src/RawPlaylist.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { RawPlaylistItem } from "./RawPlaylistItem"; - -export type RawPlaylist = RawPlaylistItem[]; diff --git a/scripts/src/RawPlaylistItem.ts b/scripts/src/RawPlaylistItem.ts deleted file mode 100644 index 0e9cc280f..000000000 --- a/scripts/src/RawPlaylistItem.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * YAML - */ -export interface RawPlaylistItem { - name: string; - description: string; - rawUrl: string; -} diff --git a/scripts/src/RawSample.ts b/scripts/src/RawSample.ts deleted file mode 100644 index 147d8d4c4..000000000 --- a/scripts/src/RawSample.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * YAML - */ -export interface RawSample { - name: string; - description: string; - script: { - content: string; - language: string; - }; - template: { - content: string; - language: string; - }; - style: { - content: string; - language: string; - }; - libraries: string; -} diff --git a/scripts/src/SampleTypes.ts b/scripts/src/SampleTypes.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/scripts/src/main.ts b/scripts/src/main.ts deleted file mode 100644 index d03c0eb22..000000000 --- a/scripts/src/main.ts +++ /dev/null @@ -1,118 +0,0 @@ -// -// main entry point for the application -// - -import * as fs from "fs"; -import { readFileText } from "./utils/readFileText"; -import { parseRawPlaylist } from "./parseRawPlaylist"; -import { parseRawSample } from "./parseRawSample"; -import { transformRawSample } from "./transformSample"; -import yaml from "yaml"; - -console.log("Start edit sample yaml"); - -// (1) Read the playlist YAML file from sample -// (2) Read each sample YAML file -// (3) Pase the YAML file -// (4) Transform the YAML file -// (5) Write the YAML file over the original file - -const sampleDirectory = "../samples"; -const playlistDirectory = "../playlists-prod"; - -// -// Get sample files -// - -const playlistFiles = fs.readdirSync(playlistDirectory); -console.log(`Playlist files: - ${playlistFiles.join("\n ")}`); - -const playlists = playlistFiles.map((file) => { - const filePath = `${playlistDirectory}/${file}`; - const fileText = readFileText(filePath); - const playlist = parseRawPlaylist(fileText); - return playlist; -}); - -const playlistSamplePaths = playlists - .map((playlist) => { - const sampleFilePaths = playlist.map((item) => { - const { rawUrl } = item; - - // flip raw url to the file path - // https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/project/basics/basic-common-api-call.yaml - const filePath = rawUrl.replace( - "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/", - "../", - ); - return filePath; - }); - - return sampleFilePaths; - }) - .flat(); - -const defaultSamplePaths = fs.readdirSync(sampleDirectory).map((file) => { - const filePath = `${sampleDirectory}/${file}/default.yaml`; - return filePath; -}); - -const samplePaths = [...defaultSamplePaths, ...playlistSamplePaths]; - -console.log(`Sample files: - ${samplePaths.join("\n ")}`); - -// Check that all of the sample files exist -const checkSampleFiles = samplePaths.map((path) => { - const present = fs.existsSync(path); - return { present, path }; -}); - -const missingSampleFiles = checkSampleFiles - .filter(({ present }) => !present) - .map(({ path }) => path); - -if (missingSampleFiles.length > 0) { - console.log("=".repeat(80)); - console.error(`Missing sample files: - ${missingSampleFiles.join("\n")}`); -} - -// -// Transform each sample file -// -console.log("=".repeat(80)); -console.log("Transforming sample files..."); -const transformSampleSuccess = samplePaths.map((path) => { - console.log(`${path}`); - let success = true; - try { - const fileText = readFileText(path); - const sample = parseRawSample(fileText); - const transformedSample = transformRawSample(path, sample); - - const transformedSampleYaml = yaml.stringify(transformedSample, { - indent: 4, - singleQuote: true, - }); - - fs.writeFileSync(path, transformedSampleYaml); - console.log(`success`); - } catch (error) { - console.error(`ERROR\n${error}`); - success = false; - } - - return { - path, - success, - }; -}); - -const transformSampleErrors = transformSampleSuccess.filter(({ success }) => !success); -if (transformSampleErrors.length > 0) { - console.log("=".repeat(80)); - console.log(`Error: Transforming sample files: - ${transformSampleErrors.map((x) => x.path).join("\n ")}`); -} diff --git a/scripts/src/parseRawPlaylist.ts b/scripts/src/parseRawPlaylist.ts deleted file mode 100644 index da3fd72a1..000000000 --- a/scripts/src/parseRawPlaylist.ts +++ /dev/null @@ -1,7 +0,0 @@ -import yaml from "yaml"; -import type { RawPlaylist } from "./RawPlaylist"; - -export function parseRawPlaylist(data: string): RawPlaylist { - const items = yaml.parse(data) as RawPlaylist; - return items; -} diff --git a/scripts/src/parseRawSample.ts b/scripts/src/parseRawSample.ts deleted file mode 100644 index d8765c7c6..000000000 --- a/scripts/src/parseRawSample.ts +++ /dev/null @@ -1,7 +0,0 @@ -import yaml from "yaml"; -import type { RawSample } from "./RawSample"; - -export function parseRawSample(data: string): RawSample { - const rawSample = yaml.parse(data) as RawSample; - return rawSample; -} diff --git a/scripts/src/transformCss.ts b/scripts/src/transformCss.ts deleted file mode 100644 index c52849def..000000000 --- a/scripts/src/transformCss.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function transformCss(data: string): string { - return data; -} diff --git a/scripts/src/transformHtml.ts b/scripts/src/transformHtml.ts deleted file mode 100644 index 4b0449df7..000000000 --- a/scripts/src/transformHtml.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function transformHtml(data: string): string { - return data.replace(/\n\n/g, "\n").trim(); -} diff --git a/scripts/src/transformLibraries.ts b/scripts/src/transformLibraries.ts deleted file mode 100644 index 1b6c34511..000000000 --- a/scripts/src/transformLibraries.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Transform library references. - * - Remove jquery & core-js - * - Reference CDN for office.js types - * - Directly reference unpkg for npm packages - * @returns transformed libraries - */ -export function transformLibraries(data: string): string { - function getLinkFromPackageReference(packageReference: string): string | undefined { - const reg = /^(?.*)@(?\d+\.\d+\.\d+)\/(?.*)$/; - const groups = reg.exec(packageReference)?.groups; - if (groups === undefined) { - return packageReference; - } - - const { packageName, packageVersion, packageFile } = groups; - - return `https://unpkg.com/${packageName}@${packageVersion}/${packageFile}`; - } - - const cleanLibraries = data - .split("\n") - .map((line) => { - line = line.trim(); - - // Empty line - if (line === "") { - return ""; - } - - // Comment - if (line.startsWith("//") || line.startsWith("#")) { - return line; - } - - // direct reference - if (line.startsWith("https://") || line.startsWith("http://")) { - return line; - } - - // office.js - if (line === "@types/office-js") { - return `https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts`; - } - - // Remove packages - const packageNamesIgnore = ["jquery", "@types/jquery", "core-js", "@types/core-js"]; - const isExcluded = packageNamesIgnore.some((packageName) => - line.startsWith(packageName), - ); - if (isExcluded) { - return undefined; - } - - // npm reference - const link = getLinkFromPackageReference(line); - return link; - }) - .filter((line) => line !== undefined) as string[]; - - const cleanData = cleanLibraries.join("\n").replace(/\n\n\n/, "\n\n"); - return cleanData; -} diff --git a/scripts/src/transformSample.ts b/scripts/src/transformSample.ts deleted file mode 100644 index 643b9fe22..000000000 --- a/scripts/src/transformSample.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { RawSample } from "./RawSample"; -import { transformCss } from "./transformCss"; -import { transformHtml } from "./transformHtml"; -import { transformLibraries } from "./transformLibraries"; -import { transformTypeScript } from "./transformTypeScript"; - -export function transformRawSample(id: string, rawSample: RawSample): RawSample { - const typescriptRaw = rawSample?.script?.content; - const htmlRaw = rawSample?.template?.content; - const cssRaw = rawSample?.style?.content; - const librariesRaw = rawSample?.libraries; - - if ([typescriptRaw, htmlRaw, cssRaw, librariesRaw].some((content) => content === undefined)) { - console.log(`ERROR: Empty content [${rawSample.name}] ${id}`); - // happens for custom functions - return rawSample; - } - - const typescriptContent = transformTypeScript(typescriptRaw).trim(); - const htmlContent = transformHtml(htmlRaw).trim(); - const cssContent = transformCss(cssRaw).trim(); - const librariesContent = transformLibraries(librariesRaw).trim(); - - // Update the raw sample with the transformed content - rawSample.script.content = typescriptContent; - rawSample.template.content = htmlContent; - rawSample.style.content = cssContent; - rawSample.libraries = librariesContent; - - return rawSample; -} diff --git a/scripts/src/transformTypeScript.ts b/scripts/src/transformTypeScript.ts deleted file mode 100644 index 1a8e025b2..000000000 --- a/scripts/src/transformTypeScript.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Transform TypeScript code. - * - remove JQuery handlers - * - Add Office on ready. - */ -export function transformTypeScript(data: string): string { - // remove jquery - // $("#id").on("click", () => tryCatch(handler));`; - const jqueryReg = /^\$\("#(?.*)"\)\.on\("click", \(\) => tryCatch\((?.*)\)\);$/; - - // Outlook specific - // $("#id").on("click", handler); - const jqueryAlt = /^\$\("#(?.*)"\)\.on\("click", (?.*)\);$/; - // $("#id").click(handler); - const jqueryAlt2 = /^\$\("#(?.*)"\)\.click\((?.*)\);$/; - - const cleanData = data - .split("\n") - .map((line) => { - const trimLine = line.trim(); - - if (trimLine.startsWith("$")) { - // JQuery - const match = jqueryReg.exec(trimLine); - if (match !== null) { - const groups = match?.groups; - if (groups) { - const { id, handler } = groups; - return `document.getElementById("${id}").addEventListener("click", () => tryCatch(${handler}));`; - } - } - - const matchAlt = jqueryAlt.exec(trimLine) || jqueryAlt2.exec(trimLine); - if (matchAlt !== null) { - const groups = matchAlt?.groups; - if (groups) { - const { id, handler } = groups; - return `document.getElementById("${id}").addEventListener("click", ${handler});`; - } - } - } - - return line; - }) - .join("\n"); - - const code = cleanData; - - return code; -} diff --git a/scripts/src/utils/capitalize.ts b/scripts/src/utils/capitalize.ts deleted file mode 100644 index 30198b274..000000000 --- a/scripts/src/utils/capitalize.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * uppercases the first character in a string. - * in the case that the first character in the string can not be upper cased (for example a white space character or an empty string) the string is unmodified. - * @param word - string to capitalize - * @returns the string with it's first character upper cased. - * - */ -export function capitalize(word: string): string { - if (!word || word.length === 0) { - return word; - } - - if (word.length === 1) { - return word.toUpperCase(); - } - - return word.substring(0, 1).toUpperCase() + word.substring(1); -} diff --git a/scripts/src/utils/decapitalize.ts b/scripts/src/utils/decapitalize.ts deleted file mode 100644 index 35c7ed38c..000000000 --- a/scripts/src/utils/decapitalize.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * decapitalize a string - * @param string - string to decapitalize - */ -export function decapitalize(string: string): string { - if (string.length === 0) { - return string; - } - return string.charAt(0).toLowerCase() + string.slice(1); -} diff --git a/scripts/src/utils/directoryFileNames.ts b/scripts/src/utils/directoryFileNames.ts deleted file mode 100644 index f05b3e725..000000000 --- a/scripts/src/utils/directoryFileNames.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { readdirSync } from "fs"; -import { isFile } from "./isFile"; -import { join } from "path"; - -/** - * retrieves the file names present in the directory - * @param path - path of the directory to get the files in - * @returns list of file names in the directory - */ -export function directoryFileNames(path: string): string[] { - const all = readdirSync(path); - const files = all.filter((file: string) => isFile(join(path, file))); - // paths are sorted because determinism is convenient for testing and reproduction of issues. - return files.sort(); -} diff --git a/scripts/src/utils/equivalentLists.ts b/scripts/src/utils/equivalentLists.ts deleted file mode 100644 index 8cce71c17..000000000 --- a/scripts/src/utils/equivalentLists.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * checks if two lists have the same values in the same order using the default comparison operator. - * - * @param a - a list - * @param b - a list - * @returns true if both lists have the same values in the same order. - */ -export function equivalentLists(a: string[], b: string[]): boolean { - if (a.length !== b.length) { - return false; - } - - for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) { - return false; - } - } - - return true; -} diff --git a/scripts/src/utils/indent.ts b/scripts/src/utils/indent.ts deleted file mode 100644 index abbb1f32a..000000000 --- a/scripts/src/utils/indent.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { lineSplit } from "./lineSplit"; -import { mergeWithDefaults } from "./mergeWithDefaults"; - -/** - * describe a single level of indent - */ -export interface IndentOptions { - /** - * the value to use for the indent - * default of four spaces - */ - value: string; - - /** - * the number of the value to use for a single level of indent - * default of 1 - */ - count: number; - - /** - * the number of times to indent - * default of 1 - */ - level: number; -} - -const defaultIndent: IndentOptions = { - value: " ", - count: 4, - level: 1, -}; - -/** - * indent all lines with the specified level of indent. - * @param string - string to indent - * @param indent - indent options - * @returns a version of the string indented according to the indent options - */ -export function indent(string: string, indent: Partial = defaultIndent): string { - const settings: IndentOptions = mergeWithDefaults(indent, defaultIndent); - - const indentString = settings.value.repeat(settings.count).repeat(settings.level); - - // this also indents any empty lines - return indentString + lineSplit(string).join(`\n${indentString}`); -} diff --git a/scripts/src/utils/isFile.ts b/scripts/src/utils/isFile.ts deleted file mode 100644 index d38c56869..000000000 --- a/scripts/src/utils/isFile.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { lstatSync } from "fs"; - -/** - * is the path a file? - * - * @param path - path to test - * @returns true when the path is a file - */ -export function isFile(path: string): boolean { - return lstatSync(path).isFile(); -} diff --git a/scripts/src/utils/joinWords.ts b/scripts/src/utils/joinWords.ts deleted file mode 100644 index be3b3b81d..000000000 --- a/scripts/src/utils/joinWords.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { capitalize } from "./capitalize"; - -/** - * splits on whitespaces and -, capitalizes words, and joins them - * @param words - */ -export function joinWords(words: string): string { - return words - .split(/(\s|-)/) - .map((word) => capitalize(word)) - .join(""); -} diff --git a/scripts/src/utils/lineSplit.ts b/scripts/src/utils/lineSplit.ts deleted file mode 100644 index 0332f14d9..000000000 --- a/scripts/src/utils/lineSplit.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { standardizeNewlines } from "./standardizeNewlines"; - -/** - * split a string into a list of lines - * @param string - string to split - * @returns list of the individual lines in the string - */ -export function lineSplit(string: string): string[] { - return standardizeNewlines(string).split("\n"); -} diff --git a/scripts/src/utils/listWithoutDuplicateElements.ts b/scripts/src/utils/listWithoutDuplicateElements.ts deleted file mode 100644 index da57f3363..000000000 --- a/scripts/src/utils/listWithoutDuplicateElements.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * creates list without duplicates from an original list, comparing using the default comparison operator, keeping only the first occurrence. - * @param original - list to - * @returns new list without the duplicates present in the original - */ -export function listWithoutDuplicateElements(original: readonly T[]): T[] { - // only take the first item - return original.filter( - (value: T, index: number, array: readonly T[]) => array.indexOf(value) === index, - ); -} diff --git a/scripts/src/utils/mergeWithDefaults.ts b/scripts/src/utils/mergeWithDefaults.ts deleted file mode 100644 index 859a83758..000000000 --- a/scripts/src/utils/mergeWithDefaults.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -/** - * create a new object that ensure all default properties are present - * @param original - original object - * @param defaults - default object - */ -export function mergeWithDefaults(original: Partial, defaults: T): T { - const o: any = original; - const d: any = defaults; - const merge: any = {}; //shallowCopyOwnProperties(original); - - Object.getOwnPropertyNames(defaults).forEach((name) => { - merge[name] = Object.getOwnPropertyDescriptor(o, name) ? o[name] : d[name]; - }); - - return merge; -} diff --git a/scripts/src/utils/pascalCase.ts b/scripts/src/utils/pascalCase.ts deleted file mode 100644 index 715c1bcb2..000000000 --- a/scripts/src/utils/pascalCase.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { joinWords } from "./joinWords"; -import { capitalize } from "./capitalize"; - -/** - * PascalCase - * splits on spaces and capitalizes words in between - * @param string - string to pascalCase - */ -export function pascalCase(string: string): string { - string = joinWords(string); - return capitalize(string); -} diff --git a/scripts/src/utils/readFileJson.ts b/scripts/src/utils/readFileJson.ts deleted file mode 100644 index 39f722bc7..000000000 --- a/scripts/src/utils/readFileJson.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { readFileText } from "./readFileText"; - -/** - * Read a file that contains JSON and turn it into an object - * - * Note: no validation is done on the data. - * - * @param path - path to the JSON file - */ -export function readFileJson(path: string): T { - const data: string = readFileText(path); - const object: T = JSON.parse(data); - return object; -} diff --git a/scripts/src/utils/readFileList.ts b/scripts/src/utils/readFileList.ts deleted file mode 100644 index 05e5ce413..000000000 --- a/scripts/src/utils/readFileList.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { lineSplit } from "./lineSplit"; -import { listWithoutDuplicateElements } from "./listWithoutDuplicateElements"; -import { readFileText } from "./readFileText"; - -/** - * reads lines from a file and removes the ones that are whitespace. - * @param path - path to read the file from - */ -export function readFileList(path: string): string[] { - const data: string = readFileText(path); - return listWithoutDuplicateElements(lineSplit(data)); -} diff --git a/scripts/src/utils/readFileText.ts b/scripts/src/utils/readFileText.ts deleted file mode 100644 index a9060c643..000000000 --- a/scripts/src/utils/readFileText.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { standardizeNewlines } from "./standardizeNewlines"; -import { readFileSync } from "fs"; - -/** - * Read utf-8 file and transform to standard new lines. - * @param path - path of the file to read - */ -export function readFileText(path: string): string { - let string: string = readFileSync(path, "utf-8"); - - // remove the BOM - // https://en.wikipedia.org/wiki/Byte_order_mark - // The BOM is generally unexpected in text files and causes JSON.parse to fail. - // U+FEFF is the Byte Order Mark for UTF-8 - string = string.replace(/^\uFEFF/, ""); - - const clean = standardizeNewlines(string); - return clean; -} diff --git a/scripts/src/utils/standardizeNewlines.ts b/scripts/src/utils/standardizeNewlines.ts deleted file mode 100644 index 6bc516e82..000000000 --- a/scripts/src/utils/standardizeNewlines.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * standardize newlines to proper unix line endings - * @param string - string to standardize - */ -export function standardizeNewlines(string: string): string { - return string.replace(/\r/gm, ""); -} diff --git a/scripts/src/utils/writeFileJson.ts b/scripts/src/utils/writeFileJson.ts deleted file mode 100644 index 1b35c6cb4..000000000 --- a/scripts/src/utils/writeFileJson.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { writeFileText } from "./writeFileText"; - -/** - * Transform a data object to a string and write it to the specified path. - * @param path - path to write the file to - * @param object - object to transform to JSON and write - */ -export function writeFileJson(path: string, object: object): void { - const json: string = JSON.stringify(object, undefined, 4); - - // add new line at end of file if it doesn't exist - let data = json; - if (!data.endsWith("\n")) { - data += "\n"; - } - - // write file - writeFileText(path, data); -} diff --git a/scripts/src/utils/writeFileList.ts b/scripts/src/utils/writeFileList.ts deleted file mode 100644 index 317655174..000000000 --- a/scripts/src/utils/writeFileList.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { writeFileText } from "./writeFileText"; - -/** - * write a list to a file - * @param path - path to write the file to - * @param list - string list to write to the file - */ -export function writeFileList(path: string, list: readonly string[]): void { - const joined: string = list.join("\n"); - writeFileText(path, joined); -} diff --git a/scripts/src/utils/writeFileText.ts b/scripts/src/utils/writeFileText.ts deleted file mode 100644 index 7ca1fb6eb..000000000 --- a/scripts/src/utils/writeFileText.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { writeFileSync } from "fs"; -import { standardizeNewlines } from "./standardizeNewlines"; - -/** - * write data to path with standard newlines. - * @param path - file path - * @param data - string data to write - */ -export function writeFileText(path: string, string: string): void { - const clean = standardizeNewlines(string); - writeFileSync(path, clean); -} diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json deleted file mode 100644 index 937ffabe1..000000000 --- a/scripts/tsconfig.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, - "moduleResolution": "node", - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - //"jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true /* Skip type checking of declaration files. */, - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - } -} \ No newline at end of file From f577e2cfb01bcd8e3fbbbf96782f221ec51a6973 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Tue, 25 Mar 2025 11:50:35 -0700 Subject: [PATCH 24/71] [All hosts] Convert jQuery to JavaScript (#971) * Convert jQuery to JavaScript * Run yarn script * Remove commented out function call --- .../conditional-formatting-basic.yaml | 4 +- ...e-set-get-and-delete-custom-xml-parts.yaml | 8 +- .../test-xml-for-unique-namespace.yaml | 12 +- .../20-data-types/data-types-web-image.yaml | 12 +- .../excel/26-document/custom-properties.yaml | 8 +- .../26-document/get-file-in-slices-async.yaml | 12 +- samples/excel/42-range/range-find.yaml | 6 +- samples/excel/44-shape/shape-images.yaml | 4 +- .../excel/50-workbook/create-workbook.yaml | 4 +- .../workbook-insert-external-worksheets.yaml | 4 +- samples/excel/99-just-for-fun/gradient.yaml | 89 +-- .../99-just-for-fun/path-finder-game.yaml | 19 +- samples/excel/99-just-for-fun/patterns.yaml | 6 +- samples/excel/99-just-for-fun/tetrominos.yaml | 22 +- .../10-roaming-settings/roaming-settings.yaml | 8 +- .../load-set-get-save.yaml | 8 +- .../20-item-body/append-text-on-send.yaml | 2 +- .../20-item-body/prepend-text-on-send.yaml | 2 +- .../prepend-text-to-item-body.yaml | 2 +- .../20-item-body/replace-selected-text.yaml | 2 +- .../get-set-bcc-message-compose.yaml | 4 +- .../get-set-cc-message-compose.yaml | 4 +- ...ional-attendees-appointment-organizer.yaml | 4 +- ...uired-attendees-appointment-organizer.yaml | 4 +- .../get-set-to-message-compose.yaml | 4 +- .../35-notifications/add-getall-remove.yaml | 14 +- .../40-attachments/attachments-compose.yaml | 8 +- .../display-existing-appointment.yaml | 6 +- .../display-existing-message.yaml | 6 +- .../work-with-client-signatures.yaml | 4 +- .../set-displayed-body-subject.yaml | 8 +- .../document/create-presentation.yaml | 4 +- samples/powerpoint/images/insert-image.yaml | 2 +- samples/powerpoint/images/insert-svg.yaml | 2 +- .../scenarios/searches-wikipedia-api.yaml | 210 +++--- samples/powerpoint/shapes/get-set-shapes.yaml | 14 +- .../slide-management/add-slides.yaml | 4 +- .../slide-management/get-set-slides.yaml | 14 +- .../slide-management/insert-slides.yaml | 2 +- .../powerpoint/text/get-set-textrange.yaml | 5 +- ...-and-change-combo-box-content-control.yaml | 10 +- ...-change-dropdown-list-content-control.yaml | 10 +- samples/word/20-lists/manage-list-styles.yaml | 2 +- samples/word/25-paragraph/onadded-event.yaml | 2 +- .../word/25-paragraph/onchanged-event.yaml | 2 +- .../word/40-tables/manage-custom-style.yaml | 88 +-- .../word/50-document/compare-documents.yaml | 4 +- .../word/50-document/get-external-styles.yaml | 4 +- .../50-document/insert-external-document.yaml | 4 +- samples/word/50-document/manage-body.yaml | 4 +- .../50-document/manage-change-tracking.yaml | 2 +- samples/word/50-document/manage-comments.yaml | 12 +- .../word/50-document/manage-footnotes.yaml | 14 +- samples/word/50-document/manage-settings.yaml | 10 +- samples/word/50-document/manage-styles.yaml | 18 +- samples/word/50-document/save-close.yaml | 4 +- .../correlated-objects-pattern.yaml | 5 +- .../insert-and-change-content-controls.yaml | 2 +- .../word/99-preview-apis/manage-comments.yaml | 12 +- snippet-extractor-output/snippets.yaml | 611 +++++++++--------- 60 files changed, 669 insertions(+), 708 deletions(-) diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml index 23f0d65e7..97ceb9f63 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -189,7 +189,9 @@ script: await context.sync(); - $(".conditional-formats").hide(); + document.querySelectorAll(".conditional-formats").forEach(element => { + element.style.display = "none"; + }); }); } diff --git a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml index 09f9e3bed..dff02a2e5 100644 --- a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml +++ b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -24,7 +24,7 @@ script: await context.sync(); const readableXml = addLineBreaksToXML(xmlBlob.value); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; // Store the XML part's ID in a setting. const settings = context.workbook.settings; @@ -50,7 +50,7 @@ script: await context.sync(); const readableXml = addLineBreaksToXML(xmlBlob.value); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; await context.sync(); } }); @@ -71,14 +71,14 @@ script: await context.sync(); if (customXmlPart.isNullObject) { - $("#display-xml").text(`The XML part with the id ${xmlPartIDSetting.value} has been deleted.`); + document.getElementById("display-xml").textContent = `The XML part with the id ${xmlPartIDSetting.value} has been deleted.`; // Delete the unneeded setting too. xmlPartIDSetting.delete(); } else { const readableXml = addLineBreaksToXML(xmlBlob.value); const strangeMessage = `This is strange. The XML part with the id ${xmlPartIDSetting.value} has not been deleted:\n${readableXml}` - $("#display-xml").text(strangeMessage); + document.getElementById("display-xml").textContent = strangeMessage; } await context.sync(); diff --git a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml index b1ca11906..6bf4d1544 100644 --- a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml +++ b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -14,7 +14,7 @@ script: async function createCustomXmlPart() { await Excel.run(async (context) => { - $("#display-xml").text(""); + document.getElementById("display-xml").textContent = ""; // You must have the xmlns attribute to populate the // CustomXml.namespaceUri property. @@ -26,7 +26,7 @@ script: // Make it a bit more readable. const readableXml = xmlBlob.value.replace(/>\n<"); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; await context.sync(); }); @@ -34,7 +34,7 @@ script: async function testForUniqueNamespace() { await Excel.run(async (context) => { - $("#display-xml").text(""); + document.getElementById("display-xml").textContent = ""; const contosoNamespace = "http://schemas.contoso.com/review/1.0"; const customXmlParts = context.workbook.customXmlParts; const filteredXmlParts = customXmlParts.getByNamespace(contosoNamespace); @@ -51,8 +51,8 @@ script: // Make it a bit more readable. const readableXml = xmlBlob.value.replace(/>\n<"); - $("#display-xml").text(`The only XML part in the namespace ${contosoNamespace} is: - ${readableXml}`); + document.getElementById("display-xml").textContent = `The only XML part in the namespace ${contosoNamespace} is: + ${readableXml}`; } else { console.log(`There are ${numberOfPartsInNamespace.value} XML parts with namespace ${contosoNamespace}. There should be exactly 1.`); @@ -64,7 +64,7 @@ script: async function deleteAllCustomXmlParts() { await Excel.run(async (context) => { - $("#display-xml").text(""); + document.getElementById("display-xml").textContent = ""; const customXmlParts = context.workbook.customXmlParts; customXmlParts.load("items"); diff --git a/samples/excel/20-data-types/data-types-web-image.yaml b/samples/excel/20-data-types/data-types-web-image.yaml index 9beed0017..68b7f2fd1 100644 --- a/samples/excel/20-data-types/data-types-web-image.yaml +++ b/samples/excel/20-data-types/data-types-web-image.yaml @@ -17,8 +17,8 @@ script: // This function inserts a web image into the currently selected cell. await Excel.run(async (context) => { // Retrieve image data from the task pane and then clear the input fields. - const imageUrl = $("#url").val() as string; - const imageAltText = $("#alt-text").val() as string; + const imageUrl = (document.getElementById("url") as HTMLInputElement).value; + const imageAltText = (document.getElementById("alt-text") as HTMLInputElement).value; clearForm(); // Load the active cell. @@ -65,8 +65,8 @@ script: } // Assign image data to corresponding input fields in the task pane. - $("#url").val(webImageUrl); - $("#alt-text").val(webImageAltText); + (document.getElementById("url") as HTMLInputElement).value = webImageUrl; + (document.getElementById("alt-text") as HTMLInputElement).value = webImageAltText; }); } @@ -95,8 +95,8 @@ script: async function clearForm() { // Clear the input fields in the task pane. - $("#url").val(""); - $("#alt-text").val(""); + (document.getElementById("url") as HTMLInputElement).value = ""; + (document.getElementById("alt-text") as HTMLInputElement).value = ""; } async function setup() { diff --git a/samples/excel/26-document/custom-properties.yaml b/samples/excel/26-document/custom-properties.yaml index 90c3ab73d..12d02e8bf 100644 --- a/samples/excel/26-document/custom-properties.yaml +++ b/samples/excel/26-document/custom-properties.yaml @@ -19,8 +19,8 @@ script: async function setCustomDocProperty() { await Excel.run(async (context) => { // Get the key/value pair from the task pane. - const userKey = $("#key").text(); - const userValue = $("#value").text(); + const userKey = document.getElementById("key").textContent; + const userValue = document.getElementById("value").textContent; // Add the custom property. const customDocProperties = context.workbook.properties.custom; @@ -50,8 +50,8 @@ script: async function setCustomWorksheetProperty() { await Excel.run(async (context) => { // Get the key/value pair from the task pane. - const userKey = $("#key").text(); - const userValue = $("#value").text(); + const userKey = document.getElementById("key").textContent; + const userValue = document.getElementById("value").textContent; // Add the custom property. const customWorksheetProperties = context.workbook.worksheets.getActiveWorksheet().customProperties; diff --git a/samples/excel/26-document/get-file-in-slices-async.yaml b/samples/excel/26-document/get-file-in-slices-async.yaml index 3371746d2..414ccec06 100644 --- a/samples/excel/26-document/get-file-in-slices-async.yaml +++ b/samples/excel/26-document/get-file-in-slices-async.yaml @@ -35,7 +35,9 @@ script: console.log("Received the full contents of the file."); let base64string = base64js.fromByteArray(byteArray); - $('#file-contents').val(base64string).show(); + const fileContentsElement = document.getElementById("file-contents") as HTMLTextAreaElement; + fileContentsElement.value = base64string; + fileContentsElement.style.display = "block"; console.log("The Base64-encoded string that represents the current document has been written to the text box. To validate the string, use the \"Create workbook from string\" button."); } @@ -82,7 +84,9 @@ script: } async function newWorkbookFromFile() { - await Excel.createWorkbook($('#file-contents').text()).catch(function (error) { + const fileContentsElement = document.getElementById("file-contents"); + const fileContentsText = fileContentsElement.textContent; + await Excel.createWorkbook(fileContentsText).catch(function (error) { console.error(error); }); } @@ -169,8 +173,8 @@ template: Get file
    - +

    Create a new workbook

    diff --git a/samples/excel/42-range/range-find.yaml b/samples/excel/42-range/range-find.yaml index 4b0c31b63..857401f22 100644 --- a/samples/excel/42-range/range-find.yaml +++ b/samples/excel/42-range/range-find.yaml @@ -26,7 +26,8 @@ script: // NOTE: If no match is found, an ItemNotFound error // is thrown when Range.find is evaluated. - const foundRange = searchRange.find($("#searchText").val().toString(), { + const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; + const foundRange = searchRange.find(searchText, { completeMatch: isCompleteMatchToggle, matchCase: isMatchCaseToggle, searchDirection: searchDirectionToggle @@ -45,7 +46,8 @@ script: const sheet = context.workbook.worksheets.getItem("Sample"); const table = sheet.tables.getItem("ExpensesTable"); const searchRange = table.getRange(); - const foundRange = searchRange.findOrNullObject($("#searchText").val().toString(), { + const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; + const foundRange = searchRange.findOrNullObject(searchText, { completeMatch: isCompleteMatchToggle, matchCase: isMatchCaseToggle, searchDirection: searchDirectionToggle diff --git a/samples/excel/44-shape/shape-images.yaml b/samples/excel/44-shape/shape-images.yaml index e931e3fd3..76da24989 100644 --- a/samples/excel/44-shape/shape-images.yaml +++ b/samples/excel/44-shape/shape-images.yaml @@ -8,13 +8,13 @@ api_set: script: content: |- document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - $("#selectedFile").on("change", () => tryCatch(readImageFromFile)); + document.getElementById("selectedFile").addEventListener("change", () => tryCatch(readImageFromFile)); document.getElementById("flipImage").addEventListener("click", () => tryCatch(flipImage)); document.getElementById("getImageFormat").addEventListener("click", () => tryCatch(getImageFormat)); document.getElementById("writeOutImageString").addEventListener("click", () => tryCatch(writeOutImageString)); async function readImageFromFile() { - const myFile = document.getElementById("selectedFile"); + const myFile = document.getElementById("selectedFile") as HTMLInputElement; const reader = new FileReader(); reader.onload = (event) => { diff --git a/samples/excel/50-workbook/create-workbook.yaml b/samples/excel/50-workbook/create-workbook.yaml index 5bb4f7f73..c5a6315ac 100644 --- a/samples/excel/50-workbook/create-workbook.yaml +++ b/samples/excel/50-workbook/create-workbook.yaml @@ -9,7 +9,7 @@ api_set: script: content: |- document.getElementById("create-new-blank-workbook").addEventListener("click", () => tryCatch(createBlankWorkbook)); - $("#file").on("change", () => tryCatch(createWorkbookFromExisting)); + document.getElementById("file").addEventListener("change", () => tryCatch(createWorkbookFromExisting)); async function createBlankWorkbook() { await Excel.run(async (context) => { @@ -18,7 +18,7 @@ script: } async function createWorkbookFromExisting() { - const myFile = document.getElementById("file"); + const myFile = document.getElementById("file") as HTMLInputElement; const reader = new FileReader(); reader.onload = ((event) => { diff --git a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml index 10fb58624..7af9e084f 100644 --- a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml +++ b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml @@ -7,14 +7,14 @@ api_set: ExcelAPI: '1.13' script: content: |- - $("#file").on("change", getBase64); + document.getElementById("file").addEventListener("change", getBase64); document.getElementById("insert-sheets").addEventListener("click", () => tryCatch(insertSheets)); let externalWorkbook; async function getBase64() { // Retrieve the file and set up an HTML FileReader element. - const myFile = document.getElementById("file"); + const myFile = document.getElementById("file") as HTMLInputElement; const reader = new FileReader(); reader.onload = (event) => { diff --git a/samples/excel/99-just-for-fun/gradient.yaml b/samples/excel/99-just-for-fun/gradient.yaml index 09b075b38..d4905cfa3 100644 --- a/samples/excel/99-just-for-fun/gradient.yaml +++ b/samples/excel/99-just-for-fun/gradient.yaml @@ -8,15 +8,14 @@ api_set: ExcelApi: '1.4' script: content: |- - initializeColorPickers(); - - // Set up the click handler: - const $drawButton = $("#draw-gradient").on("click", drawGradient); + // Set up the click handler. + document.getElementById("draw-gradient").addEventListener("click", drawGradient); document.getElementById("random").addEventListener("click", randomizeColors); - /** Click-handler for drawing the gradient */ + /** Click-handler for drawing the gradient. */ async function drawGradient() { - $drawButton.prop("disabled", true); + const drawButton = document.getElementById("draw-gradient") as HTMLButtonElement; + drawButton.disabled = true; try { await Excel.run(drawGradientHelper); @@ -24,10 +23,10 @@ script: console.log(error); } - $drawButton.prop("disabled", false); + drawButton.disabled = false; } - /** Helper function to do the actual gradient-drawing */ + /** Helper function to do the actual gradient-drawing. */ async function drawGradientHelper(context: Excel.RequestContext) { context.workbook.worksheets.getItemOrNullObject("Gradient").delete(); const sheet = context.workbook.worksheets.add("Gradient"); @@ -40,9 +39,21 @@ script: } }); - let originalSize = parseInt($("#size").val() as string); + let originalSize = parseInt((document.getElementById("size") as HTMLInputElement).value); const colors2D = createColorArray(originalSize); + // Retrieve color values from elements. + const topLeftColor = (document.getElementById("top-left") as HTMLInputElement).value; + const topRightColor = (document.getElementById("top-right") as HTMLInputElement).value; + const bottomLeftColor = (document.getElementById("bottom-left") as HTMLInputElement).value; + const bottomRightColor = (document.getElementById("bottom-right") as HTMLInputElement).value; + + // Convert HEX colors to RGB using TinyColor. + const topLeftRgb = tinycolor(topLeftColor).toRgb(); + const topRightRgb = tinycolor(topRightColor).toRgb(); + const bottomLeftRgb = tinycolor(bottomLeftColor).toRgb(); + const bottomRightRgb = tinycolor(bottomRightColor).toRgb(); + if (Office.context.requirements.isSetSupported("ExcelApi", "1.9")) { // ExcelApi 1.9 introduced the setCellProperties APIs to efficiently set different properties // across a range without needing to iterate cell-by-cell. @@ -73,21 +84,33 @@ script: } function createColorArray(size: number): string[][] { - // Create a 2D in-memory array to hold the colors + // Create a 2D in-memory array to hold the colors. let colors2D = Array(size); for (let row = 0; row < size; row++) { colors2D[row] = Array(size); } + // Get the color values from the color pickers. + const topLeftColor = (document.getElementById("top-left") as HTMLInputElement).value; + const topRightColor = (document.getElementById("top-right") as HTMLInputElement).value; + const bottomLeftColor = (document.getElementById("bottom-left") as HTMLInputElement).value; + const bottomRightColor = (document.getElementById("bottom-right") as HTMLInputElement).value; + + // Convert HEX to RGB using TinyColor. + const topLeftRgb = tinycolor(topLeftColor).toRgb(); + const topRightRgb = tinycolor(topRightColor).toRgb(); + const bottomLeftRgb = tinycolor(bottomLeftColor).toRgb(); + const bottomRightRgb = tinycolor(bottomRightColor).toRgb(); + const topColors = getColorsArray( - $("#top-left").spectrum("get").toRgb(), - $("#top-right").spectrum("get").toRgb(), + topLeftRgb, + topRightRgb, size ); const bottomColors = getColorsArray( - $("#bottom-left").spectrum("get").toRgb(), - $("#bottom-right").spectrum("get").toRgb(), + bottomLeftRgb, + bottomRightRgb, size ); @@ -101,9 +124,9 @@ script: return colors2D; } - /** Helper function to get an array of colors */ - function getColorsArray(color1: ColorFormats.RGB, color2: ColorFormats.RGB, count: number) { - const result = new Array(count); + /** Helper function to get an array of colors. */ + function getColorsArray(color1, color2, count: number) { + const result = new Array(count); for (let i = 0; i < count; i++) { const fraction = i / (count - 1); result[i] = { @@ -115,16 +138,14 @@ script: return result; } - function initializeColorPickers() { - $("#color-table input[type='text']").spectrum({ - preferredFormat: "rgb", - showInput: true - }); - } - function randomizeColors() { - $("#color-table input[type='text']").each((index, element) => { - $(element).spectrum("set", tinycolor.random().toHexString()); + // Select all color input elements. + const colorInputs = document.querySelectorAll("#color-table input[type='color']"); + + // Iterate through each color input and set a random color. + colorInputs.forEach((input) => { + const randomColor = tinycolor.random().toHexString(); + (input as HTMLInputElement).value = randomColor; }); } language: typescript @@ -138,12 +159,12 @@ template:
    Top left
    - - + + - - + +
    @@ -162,7 +183,7 @@ template:
    - Uses the Spectrum color picker, and the TinyColor libraries. + Uses the TinyColor library.
    @@ -212,9 +233,5 @@ libraries: |- https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - https://unpkg.com/tinycolor2@1.4.1/tinycolor.js - @types/tinycolor2 - https://unpkg.com/spectrum-colorpicker@1.8.0/spectrum.js - https://unpkg.com/spectrum-colorpicker@1.8.0/spectrum.css - @types/spectrum \ No newline at end of file + @types/tinycolor2 \ No newline at end of file diff --git a/samples/excel/99-just-for-fun/path-finder-game.yaml b/samples/excel/99-just-for-fun/path-finder-game.yaml index 6dd28e9a0..8ea6024a2 100644 --- a/samples/excel/99-just-for-fun/path-finder-game.yaml +++ b/samples/excel/99-just-for-fun/path-finder-game.yaml @@ -10,9 +10,8 @@ script: content: |- document.getElementById("setup").addEventListener("click", setup); document.getElementById("repeat").addEventListener("click", repeat); - - const $pruneTheGrid = $("#step-by-step").on("click", pruneTheGrid); - const $allAtOnce = $("#all-at-once").on("click", allAtOnce); + document.getElementById("step-by-step").addEventListener("click", pruneTheGrid); + document.getElementById("all-at-once").addEventListener("click", allAtOnce); const GRID_ROW_COUNT = 25; const GRID_COLUMN_COUNT = 30; @@ -20,7 +19,7 @@ script: let matrixPrevious: string[][] function setup() { - const density = parseInt($("#density").val() as string) / 100; + const density = parseInt((document.getElementById("density") as HTMLInputElement).value) / 100; const symbol = "\u25cf"; const matrix = new Array(GRID_ROW_COUNT); @@ -32,7 +31,7 @@ script: } matrixPrevious = matrix; - $("#repeat").show(); + document.getElementById("repeat").style.display = "block"; setupHelper(matrix); } @@ -71,7 +70,8 @@ script: } async function pruneTheGrid() { - $pruneTheGrid.attr("disabled", "true"); + const pruneTheGrid = document.getElementById("step-by-step") as HTMLButtonElement; + pruneTheGrid.disabled = true; await tryCatch(() => Excel.run(async (context) => { const grid = context.workbook.worksheets @@ -84,11 +84,12 @@ script: await context.sync(); })); - $pruneTheGrid.removeAttr("disabled"); + pruneTheGrid.disabled = false; } async function allAtOnce() { - $allAtOnce.attr("disabled", "true"); + const allAtOnce = document.getElementById("all-at-once") as HTMLButtonElement; + allAtOnce.disabled = true; let counter = 0; await tryCatch(() => Excel.run(async (context) => { @@ -111,7 +112,7 @@ script: })); console.log("Count of iterations: " + counter); - $allAtOnce.removeAttr("disabled"); + allAtOnce.disabled = false; } diff --git a/samples/excel/99-just-for-fun/patterns.yaml b/samples/excel/99-just-for-fun/patterns.yaml index 8e0f74ec5..f946e71c8 100644 --- a/samples/excel/99-just-for-fun/patterns.yaml +++ b/samples/excel/99-just-for-fun/patterns.yaml @@ -20,7 +20,7 @@ script: sheet.activate(); formatBackground(sheet); - const size = parseInt($("#size").val() as string); + const size = parseInt((document.getElementById("size") as HTMLInputElement).value); for (let i = 0; i < size; i++) { const width = size * 2 - 2 * i; @@ -45,7 +45,7 @@ script: sheet.activate(); formatBackground(sheet); - const size = Math.floor(parseInt($("#size").val() as string) / 2); + const size = Math.floor(parseInt((document.getElementById("size") as HTMLInputElement).value) / 2); for (let i = 0; i < size - 1; i++) { @@ -106,7 +106,7 @@ script: sheet.activate(); formatBackground(sheet); - const size = Math.floor(parseInt($("#size").val() as string) / 2); + const size = Math.floor(parseInt((document.getElementById("size") as HTMLInputElement).value) / 2); for (let i = 0; i < size; i++) { const range1 = sheet.getCell(2 * i + 1, 2 * i + 1).getResizedRange(size - i, size - i); diff --git a/samples/excel/99-just-for-fun/tetrominos.yaml b/samples/excel/99-just-for-fun/tetrominos.yaml index 20b36299b..556180e9d 100644 --- a/samples/excel/99-just-for-fun/tetrominos.yaml +++ b/samples/excel/99-just-for-fun/tetrominos.yaml @@ -8,18 +8,17 @@ api_set: ExcelApi: '1.9' script: content: |- - $("#run").on("click", () => { - $("#setup").hide(); + document.getElementById("run").addEventListener("click", () => { + document.getElementById("setup").style.display = "none"; tryCatch(run); }); - - $("#selectedFile").on("change", () => tryCatch(readImageFromFile)); + document.getElementById("selectedFile").addEventListener("change", () => tryCatch(readImageFromFile)); document.getElementById("focusButton").addEventListener("click", () => tryCatch(focus)); let backgroundPicture = getDefaultBackgroundPicture(); function readImageFromFile() { - const myFile = document.getElementById("selectedFile"); + const myFile = document.getElementById("selectedFile") as HTMLInputElement; const reader = new FileReader(); reader.onload = (event) => { @@ -33,7 +32,7 @@ script: } function focus() { - $("#container").focus(); + document.getElementById("container").focus(); } async function run() { @@ -621,10 +620,12 @@ script: } } - await run($("#container")[0], $("#sessionPane")[0]); + const container = document.getElementById("container"); + const sessionPane = document.getElementById("sessionPane"); + await run(container, sessionPane); - $("#container").focus(); - $("#focus").show(); + container.focus(); + document.getElementById("focus").style.display = "block"; }); } @@ -633,7 +634,7 @@ script: try { await callback(); } catch (error) { - $("#setup").show(); + document.getElementById("setup").style.display = "block"; // Note: In a production add-in, you'd want to notify the user through your add-in's UI. console.error(error); } @@ -790,5 +791,4 @@ libraries: |- https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js \ No newline at end of file diff --git a/samples/outlook/10-roaming-settings/roaming-settings.yaml b/samples/outlook/10-roaming-settings/roaming-settings.yaml index 0e1bc28f1..1b15c078c 100644 --- a/samples/outlook/10-roaming-settings/roaming-settings.yaml +++ b/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -11,15 +11,15 @@ script: document.getElementById("save").addEventListener("click", save); function get() { - const settingName = $("#settingName").val(); + const settingName = (document.getElementById("settingName") as HTMLInputElement).value; const settingValue = Office.context.roamingSettings.get(settingName); - $("#settingValue").val(settingValue); + (document.getElementById("settingValue") as HTMLInputElement).value = settingValue; console.log(`The value of setting "${settingName}" is "${settingValue}".`); } function set() { - const settingName = $("#settingName").val(); - const settingValue = $("#settingValue").val(); + const settingName = (document.getElementById("settingName") as HTMLInputElement).value; + const settingValue = (document.getElementById("settingValue") as HTMLInputElement).value; Office.context.roamingSettings.set(settingName, settingValue); console.log(`Setting "${settingName}" set to value "${settingValue}".`); } diff --git a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml index 8cd1a84f4..4ebc0f45c 100644 --- a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml +++ b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -28,7 +28,7 @@ script: } function get() { - const propertyName = $("#get-property-name").val(); + const propertyName = (document.getElementById("get-property-name") as HTMLInputElement).value; const propertyValue = customProps.get(propertyName); console.log(`The value of custom property "${propertyName}" is "${propertyValue}".`); } @@ -45,14 +45,14 @@ script: } function set() { - const propertyName = $("#set-property-name").val(); - const propertyValue = $("#property-value").val(); + const propertyName = (document.getElementById("set-property-name") as HTMLInputElement).value; + const propertyValue = (document.getElementById("property-value") as HTMLInputElement).value; customProps.set(propertyName, propertyValue); console.log(`Custom property "${propertyName}" set to value "${propertyValue}".`); } function remove() { - const propertyName = $("#remove-property-name").val(); + const propertyName = (document.getElementById("remove-property-name") as HTMLInputElement).value; customProps.remove(propertyName); console.log(`Custom property "${propertyName}" removed.`); } diff --git a/samples/outlook/20-item-body/append-text-on-send.yaml b/samples/outlook/20-item-body/append-text-on-send.yaml index b077e266a..b571b4332 100644 --- a/samples/outlook/20-item-body/append-text-on-send.yaml +++ b/samples/outlook/20-item-body/append-text-on-send.yaml @@ -11,7 +11,7 @@ script: function appendOnSend() { // This snippet appends text to the end of the message or appointment's body once it's sent. - const text = $("#text-field").val(); + const text = (document.getElementById("text-field") as HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the options.coercionType parameter of the appendOnSendAsync call. Office.context.mailbox.item.body.getTypeAsync((asyncResult) => { diff --git a/samples/outlook/20-item-body/prepend-text-on-send.yaml b/samples/outlook/20-item-body/prepend-text-on-send.yaml index 32cb1a236..92a893f35 100644 --- a/samples/outlook/20-item-body/prepend-text-on-send.yaml +++ b/samples/outlook/20-item-body/prepend-text-on-send.yaml @@ -11,7 +11,7 @@ script: function prependOnSend() { // This snippet prepends text to the beginning of the message or appointment's body once it's sent. - const text = $("#text-field").val().toString(); + const text = (document.getElementById("text-field") as HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the options.coercionType parameter of the prependOnSendAsync call. Office.context.mailbox.item.body.getTypeAsync((asyncResult) => { diff --git a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml index eae94ef5a..43c3bbc13 100644 --- a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml +++ b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml @@ -14,7 +14,7 @@ script: When prepending a link in HTML markup to the body, you can disable the online link preview by setting the anchor tag's id attribute to "LPNoLP". For example, 'Click here!'. */ - const text = $("#text-field").val().toString(); + const text = (document.getElementById("text-field") as HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the options.coercionType parameter of the prependAsync call. Office.context.mailbox.item.body.getTypeAsync((asyncResult) => { diff --git a/samples/outlook/20-item-body/replace-selected-text.yaml b/samples/outlook/20-item-body/replace-selected-text.yaml index cdd8b6b04..6ee568518 100644 --- a/samples/outlook/20-item-body/replace-selected-text.yaml +++ b/samples/outlook/20-item-body/replace-selected-text.yaml @@ -14,7 +14,7 @@ script: If you want to use a link in HTML markup as a value of the setSelectedDataAsync call's data parameter, you can disable online link preview by setting the anchor tag's id attribute to "LPNoLP". For example, 'Click here!'. */ - const text = $("#text-field").val().toString(); + const text = (document.getElementById("text-field") as HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the options.coercionType parameter of the prependAsync call. Office.context.mailbox.item.body.getTypeAsync((asyncResult) => { diff --git a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml index 1847b5e2c..372652cfa 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml @@ -25,9 +25,7 @@ script: } function setBcc() { - const email = $("#emailBcc") - .val() - .toString(); + const email = (document.getElementById("emailBcc") as HTMLInputElement).value; const emailArray = [email]; Office.context.mailbox.item.bcc.setAsync(emailArray, function(asyncResult) { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { diff --git a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml index a550e0b14..48b2b66a6 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml @@ -25,9 +25,7 @@ script: } function setCc() { - const email = $("#emailCc") - .val() - .toString(); + const email = (document.getElementById("emailCc") as HTMLInputElement).value; const emailArray = [email]; Office.context.mailbox.item.cc.setAsync(emailArray, function(asyncResult) { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { diff --git a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml index e8f961373..dcf2c48f8 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml @@ -31,9 +31,7 @@ script: } function setOptionalAttendees() { - const email = $("#emailOptional") - .val() - .toString(); + const email = (document.getElementById("emailOptional") as HTMLInputElement).value; const emailArray = [email]; Office.context.mailbox.item.optionalAttendees.setAsync(emailArray, function(asyncResult) { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { diff --git a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml index c7deebc20..5773f7fc4 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml @@ -31,9 +31,7 @@ script: } function setRequiredAttendees() { - const email = $("#emailRequired") - .val() - .toString(); + const email = (document.getElementById("emailRequired") as HTMLInputElement).value; const emailArray = [email]; Office.context.mailbox.item.requiredAttendees.setAsync(emailArray, function(asyncResult) { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { diff --git a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml index 3164d9d20..8ff0b7f56 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml @@ -25,9 +25,7 @@ script: } function setTo() { - const email = $("#emailTo") - .val() - .toString(); + const email = (document.getElementById("emailTo") as HTMLInputElement).value; const emailArray = [email]; Office.context.mailbox.item.to.setAsync(emailArray, function(asyncResult) { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { diff --git a/samples/outlook/35-notifications/add-getall-remove.yaml b/samples/outlook/35-notifications/add-getall-remove.yaml index 4b1d1bc4c..84cdf8208 100644 --- a/samples/outlook/35-notifications/add-getall-remove.yaml +++ b/samples/outlook/35-notifications/add-getall-remove.yaml @@ -17,7 +17,7 @@ script: function addProgress() { // Adds a progress indicator to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as HTMLInputElement).value; const details = { type: Office.MailboxEnums.ItemNotificationMessageType.ProgressIndicator, @@ -28,7 +28,7 @@ script: function addInformational() { // Adds an informational notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as HTMLInputElement).value; const details = { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, @@ -41,7 +41,7 @@ script: function addInformationalPersisted() { // Adds a persistent information notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as HTMLInputElement).value; const details = { type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, @@ -54,7 +54,7 @@ script: function addInsight() { // Adds an informational message with actions to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as HTMLInputElement).value; const itemId = Office.context.mailbox.item.itemId; const details = { @@ -77,7 +77,7 @@ script: function addError() { // Adds an error notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as HTMLInputElement).value; const details = { type: Office.MailboxEnums.ItemNotificationMessageType.ErrorMessage, @@ -100,7 +100,7 @@ script: function replace() { // Replaces a notification message of a given key with another message. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.replaceAsync( id, { @@ -114,7 +114,7 @@ script: function remove() { // Removes a notification message from the current mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); } diff --git a/samples/outlook/40-attachments/attachments-compose.yaml b/samples/outlook/40-attachments/attachments-compose.yaml index 5479fdea7..4896c2b54 100644 --- a/samples/outlook/40-attachments/attachments-compose.yaml +++ b/samples/outlook/40-attachments/attachments-compose.yaml @@ -12,9 +12,7 @@ script: document.getElementById("remove").addEventListener("click", remove); function add() { - const attachmentUrl = $("#attachmentUrl") - .val() - .toString(); + const attachmentUrl = (document.getElementById("attachmentUrl") as HTMLInputElement).value; Office.context.mailbox.item.addFileAttachmentAsync( attachmentUrl, getFileName(attachmentUrl), @@ -85,9 +83,7 @@ script: function remove() { Office.context.mailbox.item.removeAttachmentAsync( - $("#attachmentId") - .val() - .toString(), + (document.getElementById("attachmentId") as HTMLInputElement).value, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.error(result.error.message); diff --git a/samples/outlook/55-display-items/display-existing-appointment.yaml b/samples/outlook/55-display-items/display-existing-appointment.yaml index eede487cd..c3e0b1e82 100644 --- a/samples/outlook/55-display-items/display-existing-appointment.yaml +++ b/samples/outlook/55-display-items/display-existing-appointment.yaml @@ -8,18 +8,18 @@ api_set: script: content: |- // Pre-populate with current item ID. - $("#itemId").val(Office.context.mailbox.item.itemId); + (document.getElementById("itemId") as HTMLInputElement).value = Office.context.mailbox.item.itemId; document.getElementById("run").addEventListener("click", run); document.getElementById("run-async").addEventListener("click", runAsync); function run() { - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as HTMLInputElement).value; Office.context.mailbox.displayAppointmentForm(itemId); } function runAsync() { - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as HTMLInputElement).value; // The async version will return error 9049 if the item is not found. // The async version is only available starting with requirement set 1.9. diff --git a/samples/outlook/55-display-items/display-existing-message.yaml b/samples/outlook/55-display-items/display-existing-message.yaml index 555f667b5..80e96c502 100644 --- a/samples/outlook/55-display-items/display-existing-message.yaml +++ b/samples/outlook/55-display-items/display-existing-message.yaml @@ -8,18 +8,18 @@ api_set: script: content: |- // Pre-populate with current item ID. - $("#itemId").val(Office.context.mailbox.item.itemId); + (document.getElementById("itemId") as HTMLInputElement).value = Office.context.mailbox.item.itemId; document.getElementById("run").addEventListener("click", run); document.getElementById("run-async").addEventListener("click", runAsync); function run() { - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as HTMLInputElement).value; Office.context.mailbox.displayMessageForm(itemId); } function runAsync() { - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as HTMLInputElement).value; // The async version will return error 9049 if the item is not found. // The async version is only available starting with requirement set 1.9. diff --git a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml index 8e8612592..3177c168b 100644 --- a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml +++ b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -53,7 +53,7 @@ script: function setSignature() { // Set the signature for the current item. - const signature = $("#signature").val(); + const signature = (document.getElementById("signature") as HTMLInputElement).value; console.log(`Setting signature to "${signature}".`); Office.context.mailbox.item.body.setSignatureAsync(signature, function(asyncResult) { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { @@ -73,7 +73,7 @@ script: { isInline: true }, function(result) { if (result.status == Office.AsyncResultStatus.Succeeded) { - const signature = $("#signature").val() + ""; + const signature = (document.getElementById("signature") as HTMLInputElement).value + ""; console.log(`Setting signature to "${signature}".`); Office.context.mailbox.item.body.setSignatureAsync( signature, diff --git a/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml b/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml index ea9d44c15..cdac8aa8d 100644 --- a/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml +++ b/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -13,9 +13,7 @@ script: function setDisplayedBody() { // This snippet temporarily sets the content displayed in the body of a message in read mode. // The set content will remain visible until the user switches to a different message in the Reading Pane or closes the window of the current message. - const bodyText = $("#body-text-field") - .val() - .toString(); + const bodyText = (document.getElementById("body-text-field") as HTMLInputElement).value; Office.context.mailbox.item.display.body.setAsync(bodyText, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { console.log(`Action failed with error: ${asyncResult.error.message}`); @@ -29,9 +27,7 @@ script: function setDisplayedSubject() { // This snippet temporarily sets the content displayed in the subject field of a message in read mode. // The set content will remain visible until the user switches to a different message in the Reading Pane or closes the window of the current message. - const subjectText = $("#subject-text-field") - .val() - .toString(); + const subjectText = (document.getElementById("subject-text-field") as HTMLInputElement).value; Office.context.mailbox.item.display.subject.setAsync(subjectText, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { console.log(`Action failed with error: ${asyncResult.error.message}`); diff --git a/samples/powerpoint/document/create-presentation.yaml b/samples/powerpoint/document/create-presentation.yaml index 6011dfb8b..678eb64d7 100644 --- a/samples/powerpoint/document/create-presentation.yaml +++ b/samples/powerpoint/document/create-presentation.yaml @@ -8,14 +8,14 @@ api_set: script: content: |- document.getElementById("create-new-blank-presentation").addEventListener("click", () => tryCatch(createBlankPresentation)); - $("#file").on("change", () => tryCatch(createPresentationFromExisting)); + document.getElementById("file").addEventListener("change", () => tryCatch(createPresentationFromExisting)); function createBlankPresentation() { PowerPoint.createPresentation(); } function createPresentationFromExisting() { - const myFile = document.getElementById("file"); + const myFile = document.getElementById("file") as HTMLInputElement; const reader = new FileReader(); reader.onload = (event) => { diff --git a/samples/powerpoint/images/insert-image.yaml b/samples/powerpoint/images/insert-image.yaml index a42fb4a33..f0677e897 100644 --- a/samples/powerpoint/images/insert-image.yaml +++ b/samples/powerpoint/images/insert-image.yaml @@ -7,7 +7,7 @@ host: POWERPOINT api_set: {} script: content: |- - $('#insert').on("click", run); + document.getElementById('insert').addEventListener("click", run); function run() { Office.context.document.setSelectedDataAsync(getImageAsBase64String(), { diff --git a/samples/powerpoint/images/insert-svg.yaml b/samples/powerpoint/images/insert-svg.yaml index ced98b544..4cbc8c87c 100644 --- a/samples/powerpoint/images/insert-svg.yaml +++ b/samples/powerpoint/images/insert-svg.yaml @@ -7,7 +7,7 @@ host: POWERPOINT api_set: {} script: content: |- - $('#insert').on("click", newImage); + document.getElementById('insert').addEventListener("click", newImage); function newImage() { Office.context.document.setSelectedDataAsync(getImageAsBase64String(), { diff --git a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml index ec3f02bef..e2883fb55 100644 --- a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml +++ b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml @@ -12,114 +12,144 @@ script: */ declare let moment: any; + document.getElementById("search").addEventListener("click", run); async function run() { Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, {}, getSelectedText); } - /* Extract selected text and call SearchWiki */ + /* Extract selected text and call SearchWiki. */ function getSelectedText(result) { - $("#result").empty(); - $("#result").append('
      '); + const resultElement = document.getElementById("result"); + if (resultElement) { + resultElement.innerHTML = ""; + const listElement = document.createElement("ul"); + listElement.className = "ms-List"; + listElement.id = "ms-List"; // Ensure the list has an ID for later reference + resultElement.appendChild(listElement); + } + if (result.status === Office.AsyncResultStatus.Succeeded) { searchWiki(result.value); } else { console.error(result.error.message); - } + } } - /* Searching Wiki */ - + /* Searching Wiki. */ function searchWiki(pattern) { - let url = build_wiki_search_url(http://github.com/pattern); + const url = build_wiki_search_url(http://github.com/pattern); fetch(url) - .then((response) => { - return response.json(); - }) + .then((response) => response.json()) .then((data) => { - $.each(data.query.search, function(i, val) { - let date = moment(val.timestamp).format("YYYY-MM-DD hh:mm A"); - let listItem = build_list_item(val.title, val.pageid, val.snippet, date); - $(".ms-List").append(listItem); + data.query.search.forEach((val) => { + const date = moment(val.timestamp).format("YYYY-MM-DD hh:mm A"); + const listItem = build_list_item(val.title, val.pageid, val.snippet, date); + const listElement = document.getElementById("ms-List"); + if (listElement) { + const tempDiv = document.createElement("div"); + tempDiv.innerHTML = listItem; + const listItemNode = tempDiv.firstElementChild; + if (listItemNode) { + listElement.appendChild(listItemNode); + } + } }); + return data.query; }) - .then(function(data) { - $(".ms-ListItem").each(function(i, item) { - if ($(this).find(".listItem-link a").length === 0) { - getWikiLink($(this).data("pageid"), $(this)); + .then((data) => { + const listItems = document.querySelectorAll(".ms-ListItem"); + listItems.forEach((item) => { + const link = item.querySelector(".listItem-link a"); + if (!link || link.innerHTML.length === 0) { + const pageId = item instanceof HTMLElement ? item.dataset.pageid : undefined; + if (pageId) { + getWikiLink(pageId, item); + } } }); - }); + }) + .catch((error) => console.error("Error fetching Wikipedia data:", error)); } - // Search for Wiki Page link based on the given pageId - // Update itemHTML from the returned result - + // Search for Wiki Page link based on the given pageId. + // Update itemHTML from the returned result. function getWikiLink(pageid, itemHTML) { - let pageinfo = build_wiki_pageinfo(pageid); + const pageinfo = build_wiki_pageinfo(pageid); fetch(pageinfo) - .then((response) => { - return response.json(); - }) + .then((response) => response.json()) .then((data) => { - let itemUrl = data.query.pages[pageid].fullurl; - let images = data.query.pages[pageid].images; - let title = $(itemHTML) - .find(".listItem-link") - .html(); - $(itemHTML) - .find(".listItem-link") - .html('' + title + ""); - if (typeof images !== "undefined") { - $(itemHTML) - .find(".ms-ListItem-image") - .attr("data-image", images[0].title); + const itemUrl = data.query.pages[pageid].fullurl; + const images = data.query.pages[pageid].images; + const titleElement = itemHTML.querySelector(".listItem-link"); + const title = titleElement ? titleElement.innerHTML : ""; + + if (titleElement && itemUrl) { + titleElement.innerHTML = `${title}`; + } + + if (images && images.length > 0) { + const imageElement = itemHTML.querySelector(".ms-ListItem-image"); + if (imageElement) { + imageElement.setAttribute("data-image", images[0].title); + } } }) - .then((data) => { + .then(() => { getWikiImages(pageid, itemHTML); - }); + }) + .catch((error) => console.error("Error fetching Wiki link:", error)); } - // Search for Wiki image based on the given pageId, first image - // Update itemHTML from the returned result - + // Search for Wiki image based on the given pageId, first image. + // Update itemHTML from the returned result. function getWikiImages(pageid, itemHTML) { - let pageInfo = build_wiki_image_search(pageid); + const pageInfo = build_wiki_image_search(pageid); fetch(pageInfo) - .then((response) => { - return response.json(); - }) + .then((response) => response.json()) .then(async (data) => { - if (typeof data.query.pages[pageid].original !== "undefined") { - let img = data.query.pages[pageid].original.source; - $(itemHTML) - .find(".ms-ListItem-image") - .append(''); - return true; + const pageData = data.query.pages[pageid]; + if (pageData && pageData.original && pageData.original.source) { + const originalImage = pageData.original.source; + const imageElement = itemHTML.querySelector(".ms-ListItem-image"); + + if (originalImage && imageElement) { + const imgElement = document.createElement("img"); + imgElement.width = 70; // Set the width to 70px. + imgElement.src = originalImage; + imageElement.appendChild(imgElement); + return true; + } } else { - let img = $(itemHTML) - .find(".ms-ListItem-image") - .data("image"); - pageInfo = build_wiki_file_search(img); - let pageInfoResult = await fetch(pageInfo); - return pageInfoResult.json(); + const imageElement = itemHTML.querySelector(".ms-ListItem-image"); + const img = imageElement ? imageElement.dataset.image : undefined; + if (img) { + const pageInfoResult = await fetch(build_wiki_file_search(img)); + return pageInfoResult.json(); + } } }) .then((data) => { - if (typeof data.query !== "undefined") { - let key = Object.keys(data.query.pages)[0]; - if (data.query.pages[key].title !== "Undefined") { - let img = data.query.pages[key].thumbnail.source; - $(itemHTML) - .find(".ms-ListItem-image") - .append(''); + if (data && data.query) { + const key = Object.keys(data.query.pages)[0]; + const page = data.query.pages[key]; + if (page && page.thumbnail && page.thumbnail.source) { + const thumbnail = page.thumbnail.source; + const imageElement = itemHTML.querySelector(".ms-ListItem-image"); + + if (thumbnail && imageElement) { + const imgElement = document.createElement("img"); + imgElement.width = 70; // Set the width to 70px. + imgElement.src = thumbnail; + imageElement.appendChild(imgElement); + } } } - }); + }) + .catch((error) => console.error("Error fetching Wiki images:", error)); } /* Wikipedia API query */ @@ -131,52 +161,45 @@ script: /* Wikipedia Search Query pattern */ function build_wiki_search_url(http://github.com/pattern) { - let qry = "pageimages&list=search&srsearch="; + const qry = "pageimages&list=search&srsearch="; return wiki_base(qry + pattern); } /* Wikipedia Image Query pattern */ function build_wiki_image_search(pattern) { - let qry = "pageimages&piprop=original&pilicense=any&pageids="; + const qry = "pageimages&piprop=original&pilicense=any&pageids="; return wiki_base(qry + pattern); } /* Wikipedia File Query pattern */ function build_wiki_file_search(pattern) { - let qry = "pageimages|pageterms&pilicense=any&titles="; + const qry = "pageimages|pageterms&pilicense=any&titles="; return wiki_base(qry + pattern); } /* Wikipedia Page Info Query pattern */ function build_wiki_pageinfo(pattern) { - let qry = "info|images&inprop=url&pageids="; + const qry = "info|images&inprop=url&pageids="; return wiki_base(qry + pattern); } /* Render */ function build_list_item(title, pageid, summary, ts) { - return ( - '
    • ' + - '
      ' + - '' + - title + - "" + - "" + - summary + - "" + - '
      ' + - '
      ' + - '
      ' + - ' ' + - "
      " + - '
      ' + - ' ' + - "
      " + - "
      " + - "
    • " - ); + return ` +
    • +
      + ${title} + ${summary} +
      +
      +
      + +
      +
      + +
      +
      +
    • `; } language: typescript template: @@ -225,5 +248,4 @@ libraries: |- https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js \ No newline at end of file diff --git a/samples/powerpoint/shapes/get-set-shapes.yaml b/samples/powerpoint/shapes/get-set-shapes.yaml index 3a6dc8d9f..6d472a567 100644 --- a/samples/powerpoint/shapes/get-set-shapes.yaml +++ b/samples/powerpoint/shapes/get-set-shapes.yaml @@ -31,8 +31,9 @@ script: finalTable += "" + index + "" + shape.id + ""; }); finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = ""; + outputSpan.innerHTML += finalTable; }); } @@ -134,8 +135,13 @@ script: rectangle.fill.foregroundColor = generateRandomHexColor(); } finalTable += "Done
      "; - $("#slide-tags").empty(); - $("#slide-tags").append(finalTable); + const slideTags = document.getElementById("slide-tags"); + if (slideTags) { + slideTags.innerHTML = ""; + slideTags.innerHTML += finalTable; + } else { + console.warn('Element with ID "slide-tags" not found.'); + } }); } diff --git a/samples/powerpoint/slide-management/add-slides.yaml b/samples/powerpoint/slide-management/add-slides.yaml index 74e68bd1e..8a4027b13 100644 --- a/samples/powerpoint/slide-management/add-slides.yaml +++ b/samples/powerpoint/slide-management/add-slides.yaml @@ -11,8 +11,8 @@ script: document.getElementById("add-slide").addEventListener("click", () => tryCatch(addSlide)); async function addSlide() { - const chosenMaster = $("#master-id").val() as string; - const chosenLayout = $("#layout-id").val() as string; + const chosenMaster = (document.getElementById("master-id") as HTMLInputElement).value; + const chosenLayout = (document.getElementById("layout-id") as HTMLInputElement).value; await PowerPoint.run(async function(context) { // Create a new slide using an existing master slide and layout. diff --git a/samples/powerpoint/slide-management/get-set-slides.yaml b/samples/powerpoint/slide-management/get-set-slides.yaml index d797ed57b..b4a63000f 100644 --- a/samples/powerpoint/slide-management/get-set-slides.yaml +++ b/samples/powerpoint/slide-management/get-set-slides.yaml @@ -28,9 +28,11 @@ script: allSlidesList[slide.id] = `Slide ${index + 1}`; }); - if ($("#id-check-usenative").is(":checked")) { + const checkbox = document.getElementById("id-check-usenative") as HTMLInputElement; + if (checkbox && checkbox.checked) { context.presentation.load("tags"); } + const slides: PowerPoint.SlideScopedCollection = context.presentation.getSelectedSlides(); const slideCount = slides.getCount(); slides.load("items"); @@ -42,8 +44,9 @@ script: finalTable += "" + index + " - " + allSlidesList[slide.id] + "" + slide.id + ""; }); finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = "" + outputSpan.innerHTML += finalTable; }); } async function deleteSlides() { @@ -105,8 +108,9 @@ script: savedSlideSelection.push(slide.id); }); finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = "" + outputSpan.innerHTML += finalTable; }); } diff --git a/samples/powerpoint/slide-management/insert-slides.yaml b/samples/powerpoint/slide-management/insert-slides.yaml index d247a007a..5ce708484 100644 --- a/samples/powerpoint/slide-management/insert-slides.yaml +++ b/samples/powerpoint/slide-management/insert-slides.yaml @@ -9,7 +9,7 @@ script: content: |- document.getElementById("insert-all-slides").addEventListener("click", () => tryCatch(insertAllSlides)); document.getElementById("insert-after-target-slide").addEventListener("click", () => tryCatch(insertAfterSelectedSlide)); - $("#file").on("change", () => tryCatch(storeFileAsBase64)); + document.getElementById("file").addEventListener("change", () => tryCatch(storeFileAsBase64)); let chosenFileBase64; diff --git a/samples/powerpoint/text/get-set-textrange.yaml b/samples/powerpoint/text/get-set-textrange.yaml index 2cfed52fb..b7391c145 100644 --- a/samples/powerpoint/text/get-set-textrange.yaml +++ b/samples/powerpoint/text/get-set-textrange.yaml @@ -44,8 +44,9 @@ script: finalTable += "Start" + textRange.start + ""; finalTable += "Length" + textRange.length + ""; finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = "" + outputSpan.innerHTML += finalTable; }); } diff --git a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml index a0fee9f6f..734cdc388 100644 --- a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -29,10 +29,7 @@ script: async function addItemToComboBoxContentControl() { // Adds the provided list item to the first combo box content control in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-add") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-add") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -99,10 +96,7 @@ script: async function deleteItemFromComboBoxContentControl() { // Deletes the provided list item from the first combo box content control in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-delete") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-delete") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ diff --git a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml index 36532629e..d18f95f5d 100644 --- a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -29,10 +29,7 @@ script: async function addItemToDropdownListContentControl() { // Adds the provided list item to the first dropdown list content control in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-add") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-add") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -99,10 +96,7 @@ script: async function deleteItemFromDropdownListContentControl() { // Deletes the provided list item from the first dropdown list content control in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-delete") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-delete") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ diff --git a/samples/word/20-lists/manage-list-styles.yaml b/samples/word/20-lists/manage-list-styles.yaml index 99e7eab68..915b657f9 100644 --- a/samples/word/20-lists/manage-list-styles.yaml +++ b/samples/word/20-lists/manage-list-styles.yaml @@ -32,7 +32,7 @@ script: async function getProperties() { // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; diff --git a/samples/word/25-paragraph/onadded-event.yaml b/samples/word/25-paragraph/onadded-event.yaml index 170cee03f..e7f3d34c9 100644 --- a/samples/word/25-paragraph/onadded-event.yaml +++ b/samples/word/25-paragraph/onadded-event.yaml @@ -32,7 +32,7 @@ script: async function getParagraphById() { await Word.run(async (context) => { - const paragraphId = $("#paragraph-id").val() as string; + const paragraphId = (document.getElementById("paragraph-id") as HTMLInputElement).value; const paragraph: Word.Paragraph = context.document.getParagraphByUniqueLocalId(paragraphId); paragraph.load(); await paragraph.context.sync(); diff --git a/samples/word/25-paragraph/onchanged-event.yaml b/samples/word/25-paragraph/onchanged-event.yaml index c6cccd41d..1b0cd1dd2 100644 --- a/samples/word/25-paragraph/onchanged-event.yaml +++ b/samples/word/25-paragraph/onchanged-event.yaml @@ -32,7 +32,7 @@ script: async function getParagraphById() { await Word.run(async (context) => { - const paragraphId = $("#paragraph-id").val() as string; + const paragraphId = (document.getElementById("paragraph-id") as HTMLInputElement).value; const paragraph: Word.Paragraph = context.document.getParagraphByUniqueLocalId(paragraphId); paragraph.load(); await paragraph.context.sync(); diff --git a/samples/word/40-tables/manage-custom-style.yaml b/samples/word/40-tables/manage-custom-style.yaml index 866087b30..4968defdb 100644 --- a/samples/word/40-tables/manage-custom-style.yaml +++ b/samples/word/40-tables/manage-custom-style.yaml @@ -22,7 +22,7 @@ script: async function addStyle() { // Adds a new table style. - const newStyleName = $("#new-style-name").val() as string; + const newStyleName = (document.getElementById("new-style-name") as HTMLInputElement).value; if (newStyleName == "") { console.warn("Enter a style name to add."); return; @@ -49,7 +49,7 @@ script: async function applyStyle() { // Applies the specified style to a new table. - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to apply."); return; @@ -83,9 +83,7 @@ script: async function getTableStyle() { // Gets the table style properties and displays them in the form. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; @@ -102,30 +100,26 @@ script: } console.log(tableStyle); - $("#alignment").val(tableStyle.alignment); - $("#allow-break-across-page").val(tableStyle.allowBreakAcrossPage.toString()); - $("#top-cell-margin").val(tableStyle.topCellMargin); - $("#bottom-cell-margin").val(tableStyle.bottomCellMargin); - $("#left-cell-margin").val(tableStyle.leftCellMargin); - $("#right-cell-margin").val(tableStyle.rightCellMargin); - $("#cell-spacing").val(tableStyle.cellSpacing); + (document.getElementById("alignment") as HTMLInputElement).value = tableStyle.alignment; + (document.getElementById("allow-break-across-page") as HTMLInputElement).value = tableStyle.allowBreakAcrossPage.toString(); + (document.getElementById("top-cell-margin") as HTMLInputElement).value = tableStyle.topCellMargin; + (document.getElementById("bottom-cell-margin") as HTMLInputElement).value = tableStyle.bottomCellMargin; + (document.getElementById("left-cell-margin") as HTMLInputElement).value = tableStyle.leftCellMargin; + (document.getElementById("right-cell-margin") as HTMLInputElement).value = tableStyle.rightCellMargin; + (document.getElementById("cell-spacing") as HTMLInputElement).value = tableStyle.cellSpacing; }); } async function setAlignment() { // Sets the table alignment. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; } await Word.run(async (context) => { - const alignment = $("#alignment") - .val() - .toString(); + const alignment = (document.getElementById("alignment") as HTMLInputElement).value; const tableStyle: Word.TableStyle = context.document.getStyles().getByName(styleName).tableStyle; tableStyle.alignment = alignment as Word.Alignment; await context.sync(); @@ -138,16 +132,14 @@ script: async function setAllowBreakAcrossPage() { // Sets the allowBreakAcrossPage property. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; } await Word.run(async (context) => { - const allowBreakAcrossPage = $("#allow-break-across-page").val() as string; + const allowBreakAcrossPage = (document.getElementById("allow-break-across-page") as HTMLInputElement).value; const tableStyle: Word.TableStyle = context.document.getStyles().getByName(styleName).tableStyle; tableStyle.allowBreakAcrossPage = allowBreakAcrossPage === "true"; await context.sync(); @@ -160,20 +152,14 @@ script: async function setTopCellMargin() { // Sets the top cell margin. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; } await Word.run(async (context) => { - const topCellMargin = Number( - $("#top-cell-margin") - .val() - .toString() - ); + const topCellMargin = Number((document.getElementById("top-cell-margin") as HTMLInputElement).value); const tableStyle: Word.TableStyle = context.document.getStyles().getByName(styleName).tableStyle; tableStyle.topCellMargin = topCellMargin; await context.sync(); @@ -186,20 +172,14 @@ script: async function setBottomCellMargin() { // Sets the bottom cell margin. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; } await Word.run(async (context) => { - const bottomCellMargin = Number( - $("#bottom-cell-margin") - .val() - .toString() - ); + const bottomCellMargin = Number((document.getElementById("bottom-cell-margin") as HTMLInputElement).value); const tableStyle: Word.TableStyle = context.document.getStyles().getByName(styleName).tableStyle; tableStyle.bottomCellMargin = bottomCellMargin; await context.sync(); @@ -212,20 +192,14 @@ script: async function setLeftCellMargin() { // Sets the left cell margin. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; } await Word.run(async (context) => { - const leftCellMargin = Number( - $("#left-cell-margin") - .val() - .toString() - ); + const leftCellMargin = Number((document.getElementById("left-cell-margin") as HTMLInputElement).value); const tableStyle: Word.TableStyle = context.document.getStyles().getByName(styleName).tableStyle; tableStyle.leftCellMargin = leftCellMargin; await context.sync(); @@ -238,20 +212,14 @@ script: async function setRightCellMargin() { // Sets the right cell margin. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; } await Word.run(async (context) => { - const rightCellMargin = Number( - $("#right-cell-margin") - .val() - .toString() - ); + const rightCellMargin = Number((document.getElementById("right-cell-margin") as HTMLInputElement).value); const tableStyle: Word.TableStyle = context.document.getStyles().getByName(styleName).tableStyle; tableStyle.rightCellMargin = rightCellMargin; await context.sync(); @@ -264,20 +232,14 @@ script: async function setCellSpacing() { // Sets the cell spacing. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Please input a table style name."); return; } await Word.run(async (context) => { - const cellSpacing = Number( - $("#cell-spacing") - .val() - .toString() - ); + const cellSpacing = Number((document.getElementById("cell-spacing") as HTMLInputElement).value); const tableStyle: Word.TableStyle = context.document.getStyles().getByName(styleName).tableStyle; tableStyle.cellSpacing = cellSpacing; await context.sync(); @@ -290,7 +252,7 @@ script: async function deleteStyle() { // Deletes the custom style. - const styleName = $("#style-name-to-delete").val() as string; + const styleName = (document.getElementById("style-name-to-delete") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to delete."); return; diff --git a/samples/word/50-document/compare-documents.yaml b/samples/word/50-document/compare-documents.yaml index 5d5d3afaf..988b3488c 100644 --- a/samples/word/50-document/compare-documents.yaml +++ b/samples/word/50-document/compare-documents.yaml @@ -14,9 +14,7 @@ script: // Compares the current document with a specified external document. await Word.run(async (context) => { // Absolute path of an online or local document. - const filePath = $("#filePath") - .val() - .toString(); + const filePath = (document.getElementById("filePath") as HTMLInputElement).value; // Options that configure the compare operation. const options: Word.DocumentCompareOptions = { compareTarget: Word.CompareTarget.compareTargetCurrent, diff --git a/samples/word/50-document/get-external-styles.yaml b/samples/word/50-document/get-external-styles.yaml index 41677d3c8..63fad088e 100644 --- a/samples/word/50-document/get-external-styles.yaml +++ b/samples/word/50-document/get-external-styles.yaml @@ -7,7 +7,7 @@ api_set: WordApi: '1.5' script: content: |- - $("#file").on("change", getBase64); + document.getElementById("file").addEventListener("change", getBase64); document.getElementById("get-external-styles").addEventListener("click", () => tryCatch(getExternalStyles)); let externalDocument; @@ -24,7 +24,7 @@ script: function getBase64() { // Retrieve the file and set up an HTML FileReader element. - const myFile = document.getElementById("file"); + const myFile = document.getElementById("file") as HTMLInputElement; const reader = new FileReader(); reader.onload = (event) => { diff --git a/samples/word/50-document/insert-external-document.yaml b/samples/word/50-document/insert-external-document.yaml index 2c8f00b6e..7e374a5f1 100644 --- a/samples/word/50-document/insert-external-document.yaml +++ b/samples/word/50-document/insert-external-document.yaml @@ -7,7 +7,7 @@ api_set: WordApi: '1.7' script: content: |- - $("#file").on("change", getBase64); + document.getElementById("file").addEventListener("change", getBase64); document.getElementById("insert-document").addEventListener("click", () => tryCatch(insertDocument)); document.getElementById("insert-document-with-settings").addEventListener("click", () => tryCatch(insertDocumentWithSettings)); @@ -57,7 +57,7 @@ script: function getBase64() { // Retrieve the file and set up an HTML FileReader element. - const myFile = document.getElementById("file"); + const myFile = document.getElementById("file") as HTMLInputElement; const reader = new FileReader(); reader.onload = (event) => { diff --git a/samples/word/50-document/manage-body.yaml b/samples/word/50-document/manage-body.yaml index 6f83be49a..18b7b14cd 100644 --- a/samples/word/50-document/manage-body.yaml +++ b/samples/word/50-document/manage-body.yaml @@ -14,7 +14,7 @@ script: document.getElementById("get-text").addEventListener("click", () => tryCatch(getText)); document.getElementById("insert-content-control").addEventListener("click", () => tryCatch(insertContentControl)); document.getElementById("insert-page-break").addEventListener("click", () => tryCatch(insertPageBreak)); - $("#file").on("change", getBase64); + document.getElementById("file").addEventListener("change", getBase64); document.getElementById("insert-external-body").addEventListener("click", () => tryCatch(insertExternalBody)); document.getElementById("insert-html").addEventListener("click", () => tryCatch(insertHTML)); document.getElementById("insert-image-inline").addEventListener("click", () => tryCatch(insertImageInline)); @@ -142,7 +142,7 @@ script: function getBase64() { // Retrieve the file and set up an HTML FileReader element. - const myFile = document.getElementById("file"); + const myFile = document.getElementById("file") as HTMLInputElement; const reader = new FileReader(); reader.onload = (event) => { diff --git a/samples/word/50-document/manage-change-tracking.yaml b/samples/word/50-document/manage-change-tracking.yaml index 20fc5eadf..e26519071 100644 --- a/samples/word/50-document/manage-change-tracking.yaml +++ b/samples/word/50-document/manage-change-tracking.yaml @@ -32,7 +32,7 @@ script: async function setChangeTrackingMode() { // Sets the change tracking mode. await Word.run(async (context) => { - const mode = $("input[name='mode']:checked").val(); + const mode = (document.querySelector("input[name='mode']:checked") as HTMLInputElement).value; if (mode === "Track only my changes") { context.document.changeTrackingMode = Word.ChangeTrackingMode.trackMineOnly; } else if (mode === "Track everyone's changes") { diff --git a/samples/word/50-document/manage-comments.yaml b/samples/word/50-document/manage-comments.yaml index 7593ebb46..420e05e77 100644 --- a/samples/word/50-document/manage-comments.yaml +++ b/samples/word/50-document/manage-comments.yaml @@ -21,9 +21,7 @@ script: async function insertComment() { // Sets a comment on the selected content. await Word.run(async (context) => { - const text = $("#comment-text") - .val() - .toString(); + const text = (document.getElementById("comment-text") as HTMLInputElement).value; const comment: Word.Comment = context.document.getSelection().insertComment(text); // Load object to log in the console. @@ -37,9 +35,7 @@ script: async function editFirstCommentInSelection() { // Edits the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#edit-comment-text") - .val() - .toString(); + const text = (document.getElementById("edit-comment-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); @@ -63,9 +59,7 @@ script: async function replyToFirstActiveCommentInSelection() { // Replies to the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#reply-text") - .val() - .toString(); + const text = (document.getElementById("reply-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); diff --git a/samples/word/50-document/manage-footnotes.yaml b/samples/word/50-document/manage-footnotes.yaml index 89ece99b7..b5ff910aa 100644 --- a/samples/word/50-document/manage-footnotes.yaml +++ b/samples/word/50-document/manage-footnotes.yaml @@ -21,9 +21,7 @@ script: async function insertFootnote() { // Sets a footnote on the selected content. await Word.run(async (context) => { - const text = $("#input-footnote") - .val() - .toString(); + const text = (document.getElementById("input-footnote") as HTMLInputElement).value; const footnote: Word.NoteItem = context.document.getSelection().insertFootnote(text); await context.sync(); @@ -37,7 +35,7 @@ script: footnotes.load("items/reference"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const item: Word.NoteItem = footnotes.items[mark]; const reference: Word.Range = item.reference; @@ -54,7 +52,7 @@ script: footnotes.load("items"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const item: Word.NoteItem = footnotes.items[mark]; console.log(`Note type of footnote ${referenceNumber}: ${item.type}`); @@ -72,7 +70,7 @@ script: footnotes.load("items/body"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const footnoteBody: Word.Range = footnotes.items[mark].body.getRange(); footnoteBody.load("text"); @@ -88,7 +86,7 @@ script: footnotes.load("items/reference"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const reference: Word.Range = footnotes.items[mark].getNext().reference; reference.select(); @@ -102,7 +100,7 @@ script: footnotes.load("items"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; footnotes.items[mark].delete(); await context.sync(); diff --git a/samples/word/50-document/manage-settings.yaml b/samples/word/50-document/manage-settings.yaml index b80adc658..bdb6df93b 100644 --- a/samples/word/50-document/manage-settings.yaml +++ b/samples/word/50-document/manage-settings.yaml @@ -15,19 +15,13 @@ script: // Adds a new custom setting or // edits the value of an existing one. await Word.run(async (context) => { - const key = $("#key") - .val() - .toString(); - + const key = (document.getElementById("key") as HTMLInputElement).value; if (key == "") { console.error("Key shouldn't be empty."); return; } - const value = $("#value") - .val() - .toString(); - + const value = (document.getElementById("value") as HTMLInputElement).value; const settings: Word.SettingCollection = context.document.settings; const setting: Word.Setting = settings.add(key, value); setting.load(); diff --git a/samples/word/50-document/manage-styles.yaml b/samples/word/50-document/manage-styles.yaml index f798edc85..3549dee24 100644 --- a/samples/word/50-document/manage-styles.yaml +++ b/samples/word/50-document/manage-styles.yaml @@ -31,7 +31,7 @@ script: async function addStyle() { // Adds a new style. await Word.run(async (context) => { - const newStyleName = $("#new-style-name").val() as string; + const newStyleName = (document.getElementById("new-style-name") as HTMLInputElement).value; if (newStyleName == "") { console.warn("Enter a style name to add."); return; @@ -48,7 +48,7 @@ script: return; } - const newStyleType = ($("#new-style-type").val() as unknown) as Word.StyleType; + const newStyleType = ((document.getElementById("new-style-type") as HTMLSelectElement).value as unknown) as Word.StyleType; context.document.addStyle(newStyleName, newStyleType); await context.sync(); @@ -59,7 +59,7 @@ script: async function getProperties() { // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; @@ -84,7 +84,7 @@ script: async function applyStyle() { // Applies the specified style to a paragraph. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to apply."); return; @@ -115,7 +115,7 @@ script: async function setFontProperties() { // Updates font properties (e.g., color, size) of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update font properties."); return; @@ -139,7 +139,7 @@ script: async function setParagraphFormat() { // Sets certain aspects of the specified style's paragraph format e.g., the left indent size and the alignment. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update its paragraph format."); return; @@ -162,7 +162,7 @@ script: async function setBorderProperties() { // Updates border properties (e.g., type, width, color) of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -190,7 +190,7 @@ script: async function setShadingProperties() { // Updates shading properties (e.g., texture, pattern colors) of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update shading properties."); return; @@ -219,7 +219,7 @@ script: async function deleteStyle() { // Deletes the custom style. await Word.run(async (context) => { - const styleName = $("#style-name-to-delete").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to delete."); return; diff --git a/samples/word/50-document/save-close.yaml b/samples/word/50-document/save-close.yaml index be15a868d..41381c638 100644 --- a/samples/word/50-document/save-close.yaml +++ b/samples/word/50-document/save-close.yaml @@ -18,9 +18,7 @@ script: // Saves the document with the provided file name // if it hasn't been saved before. await Word.run(async (context) => { - const text = $("#fileName-text") - .val() - .toString(); + const text = (document.getElementById("fileName-text") as HTMLInputElement).value; context.document.save(Word.SaveBehavior.save, text); await context.sync(); }); diff --git a/samples/word/90-scenarios/correlated-objects-pattern.yaml b/samples/word/90-scenarios/correlated-objects-pattern.yaml index 5200d349a..a28f29013 100644 --- a/samples/word/90-scenarios/correlated-objects-pattern.yaml +++ b/samples/word/90-scenarios/correlated-objects-pattern.yaml @@ -8,7 +8,10 @@ api_set: WordApi: '1.4' script: content: |- - document.getElementById("replace-placeholders").on("click", () => tryCatch(replacePlaceholders)); $("#replace-placeholders-slow").on("click", () => tryCatch(replacePlaceholdersSlow)); $("#setup").on("click", () => tryCatch(setup)); $("#add-lots-of-text").addEventListener("click", () => tryCatch(addLotsOfText)); + document.getElementById("replace-placeholders").addEventListener("click", () => tryCatch(replacePlaceholders)); + document.getElementById("replace-placeholders-slow").addEventListener("click", () => tryCatch(replacePlaceholdersSlow)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-lots-of-text").addEventListener("click", () => tryCatch(addLotsOfText)); const jobMapping = [ { job: "{Coordinator}", person: "Sally" }, { job: "{Deputy}", person: "Bob" }, diff --git a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml index d74455158..96f9e8905 100644 --- a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml +++ b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -74,7 +74,7 @@ script: async function setState() { // Sets the state of the first content control. await Word.run(async (context) => { - const state = ($("#state-to-set").val() as unknown) as Word.ContentControlState; + const state = ((document.getElementById("state-to-set") as HTMLSelectElement).value as unknown) as Word.ContentControlState; let firstContentControl = context.document.contentControls.getFirstOrNullObject(); await context.sync(); diff --git a/samples/word/99-preview-apis/manage-comments.yaml b/samples/word/99-preview-apis/manage-comments.yaml index 679effec6..cae554af5 100644 --- a/samples/word/99-preview-apis/manage-comments.yaml +++ b/samples/word/99-preview-apis/manage-comments.yaml @@ -42,9 +42,7 @@ script: async function insertComment() { // Sets a comment on the selected content. await Word.run(async (context) => { - const text = $("#comment-text") - .val() - .toString(); + const text = (document.getElementById("comment-text") as HTMLInputElement).value; const comment: Word.Comment = context.document.getSelection().insertComment(text); // Load object to log in the console. @@ -58,9 +56,7 @@ script: async function editFirstCommentInSelection() { // Edits the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#edit-comment-text") - .val() - .toString(); + const text = (document.getElementById("edit-comment-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); @@ -84,9 +80,7 @@ script: async function replyToFirstActiveCommentInSelection() { // Replies to the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#reply-text") - .val() - .toString(); + const text = (document.getElementById("reply-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 07dbe8d11..0ce86d48e 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -2257,7 +2257,9 @@ await context.sync(); - $(".conditional-formats").hide(); + document.querySelectorAll(".conditional-formats").forEach(element => { + element.style.display = "none"; + }); }); 'Excel.ConditionalFormatCollection#getItemAt:member(1)': - >- @@ -2772,8 +2774,8 @@ await Excel.run(async (context) => { // Get the key/value pair from the task pane. - const userKey = $("#key").text(); - const userValue = $("#value").text(); + const userKey = document.getElementById("key").textContent; + const userValue = document.getElementById("value").textContent; // Add the custom property. const customDocProperties = context.workbook.properties.custom; @@ -2803,14 +2805,14 @@ await context.sync(); if (customXmlPart.isNullObject) { - $("#display-xml").text(`The XML part with the id ${xmlPartIDSetting.value} has been deleted.`); + document.getElementById("display-xml").textContent = `The XML part with the id ${xmlPartIDSetting.value} has been deleted.`; // Delete the unneeded setting too. xmlPartIDSetting.delete(); } else { const readableXml = addLineBreaksToXML(xmlBlob.value); const strangeMessage = `This is strange. The XML part with the id ${xmlPartIDSetting.value} has not been deleted:\n${readableXml}` - $("#display-xml").text(strangeMessage); + document.getElementById("display-xml").textContent = strangeMessage; } await context.sync(); @@ -2833,7 +2835,7 @@ await context.sync(); const readableXml = addLineBreaksToXML(xmlBlob.value); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; // Store the XML part's ID in a setting. const settings = context.workbook.settings; @@ -2858,7 +2860,7 @@ await context.sync(); const readableXml = addLineBreaksToXML(xmlBlob.value); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; // Store the XML part's ID in a setting. const settings = context.workbook.settings; @@ -2887,7 +2889,7 @@ await context.sync(); const readableXml = addLineBreaksToXML(xmlBlob.value); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; await context.sync(); } }); @@ -2908,7 +2910,7 @@ await context.sync(); const readableXml = addLineBreaksToXML(xmlBlob.value); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; // Store the XML part's ID in a setting. const settings = context.workbook.settings; @@ -2923,7 +2925,7 @@ await Excel.run(async (context) => { - $("#display-xml").text(""); + document.getElementById("display-xml").textContent = ""; const contosoNamespace = "http://schemas.contoso.com/review/1.0"; const customXmlParts = context.workbook.customXmlParts; const filteredXmlParts = customXmlParts.getByNamespace(contosoNamespace); @@ -2940,8 +2942,8 @@ // Make it a bit more readable. const readableXml = xmlBlob.value.replace(/>\n<"); - $("#display-xml").text(`The only XML part in the namespace ${contosoNamespace} is: - ${readableXml}`); + document.getElementById("display-xml").textContent = `The only XML part in the namespace ${contosoNamespace} is: + ${readableXml}`; } else { console.log(`There are ${numberOfPartsInNamespace.value} XML parts with namespace ${contosoNamespace}. There should be exactly 1.`); @@ -2970,7 +2972,7 @@ await context.sync(); const readableXml = addLineBreaksToXML(xmlBlob.value); - $("#display-xml").text(readableXml); + document.getElementById("display-xml").textContent = readableXml; await context.sync(); } }); @@ -2981,7 +2983,7 @@ await Excel.run(async (context) => { - $("#display-xml").text(""); + document.getElementById("display-xml").textContent = ""; const contosoNamespace = "http://schemas.contoso.com/review/1.0"; const customXmlParts = context.workbook.customXmlParts; const filteredXmlParts = customXmlParts.getByNamespace(contosoNamespace); @@ -2998,8 +3000,8 @@ // Make it a bit more readable. const readableXml = xmlBlob.value.replace(/>\n<"); - $("#display-xml").text(`The only XML part in the namespace ${contosoNamespace} is: - ${readableXml}`); + document.getElementById("display-xml").textContent = `The only XML part in the namespace ${contosoNamespace} is: + ${readableXml}`; } else { console.log(`There are ${numberOfPartsInNamespace.value} XML parts with namespace ${contosoNamespace}. There should be exactly 1.`); @@ -3027,14 +3029,14 @@ await context.sync(); if (customXmlPart.isNullObject) { - $("#display-xml").text(`The XML part with the id ${xmlPartIDSetting.value} has been deleted.`); + document.getElementById("display-xml").textContent = `The XML part with the id ${xmlPartIDSetting.value} has been deleted.`; // Delete the unneeded setting too. xmlPartIDSetting.delete(); } else { const readableXml = addLineBreaksToXML(xmlBlob.value); const strangeMessage = `This is strange. The XML part with the id ${xmlPartIDSetting.value} has not been deleted:\n${readableXml}` - $("#display-xml").text(strangeMessage); + document.getElementById("display-xml").textContent = strangeMessage; } await context.sync(); @@ -3047,7 +3049,7 @@ await Excel.run(async (context) => { - $("#display-xml").text(""); + document.getElementById("display-xml").textContent = ""; const contosoNamespace = "http://schemas.contoso.com/review/1.0"; const customXmlParts = context.workbook.customXmlParts; const filteredXmlParts = customXmlParts.getByNamespace(contosoNamespace); @@ -3064,8 +3066,8 @@ // Make it a bit more readable. const readableXml = xmlBlob.value.replace(/>\n<"); - $("#display-xml").text(`The only XML part in the namespace ${contosoNamespace} is: - ${readableXml}`); + document.getElementById("display-xml").textContent = `The only XML part in the namespace ${contosoNamespace} is: + ${readableXml}`; } else { console.log(`There are ${numberOfPartsInNamespace.value} XML parts with namespace ${contosoNamespace}. There should be exactly 1.`); @@ -4931,7 +4933,8 @@ // NOTE: If no match is found, an ItemNotFound error // is thrown when Range.find is evaluated. - const foundRange = searchRange.find($("#searchText").val().toString(), { + const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; + const foundRange = searchRange.find(searchText, { completeMatch: isCompleteMatchToggle, matchCase: isMatchCaseToggle, searchDirection: searchDirectionToggle @@ -4953,7 +4956,8 @@ const sheet = context.workbook.worksheets.getItem("Sample"); const table = sheet.tables.getItem("ExpensesTable"); const searchRange = table.getRange(); - const foundRange = searchRange.findOrNullObject($("#searchText").val().toString(), { + const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; + const foundRange = searchRange.findOrNullObject(searchText, { completeMatch: isCompleteMatchToggle, matchCase: isMatchCaseToggle, searchDirection: searchDirectionToggle @@ -6343,7 +6347,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml - const myFile = document.getElementById("selectedFile"); + const myFile = document.getElementById("selectedFile") as HTMLInputElement; const reader = new FileReader(); @@ -7051,8 +7055,8 @@ await Excel.run(async (context) => { // Retrieve image data from the task pane and then clear the input fields. - const imageUrl = $("#url").val() as string; - const imageAltText = $("#alt-text").val() as string; + const imageUrl = (document.getElementById("url") as HTMLInputElement).value; + const imageAltText = (document.getElementById("alt-text") as HTMLInputElement).value; clearForm(); // Load the active cell. @@ -7123,7 +7127,7 @@ // Retrieve the file and set up an HTML FileReader element. - const myFile = document.getElementById("file"); + const myFile = document.getElementById("file") as HTMLInputElement; const reader = new FileReader(); @@ -7903,8 +7907,8 @@ await Excel.run(async (context) => { // Get the key/value pair from the task pane. - const userKey = $("#key").text(); - const userValue = $("#value").text(); + const userKey = document.getElementById("key").textContent; + const userValue = document.getElementById("value").textContent; // Add the custom property. const customWorksheetProperties = context.workbook.worksheets.getActiveWorksheet().customProperties; @@ -8124,9 +8128,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml - const attachmentUrl = $("#attachmentUrl") - .val() - .toString(); + const attachmentUrl = (document.getElementById("attachmentUrl") as + HTMLInputElement).value; + Office.context.mailbox.item.addFileAttachmentAsync( attachmentUrl, getFileName(attachmentUrl), @@ -8167,7 +8171,7 @@ { isInline: true }, function(result) { if (result.status == Office.AsyncResultStatus.Succeeded) { - const signature = $("#signature").val() + ""; + const signature = (document.getElementById("signature") as HTMLInputElement).value + ""; console.log(`Setting signature to "${signature}".`); Office.context.mailbox.item.body.setSignatureAsync( signature, @@ -8617,7 +8621,8 @@ // Adds a progress indicator to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -8633,7 +8638,8 @@ // Adds an informational notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -8651,7 +8657,8 @@ // Adds a persistent information notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -8686,7 +8693,8 @@ // Replaces a notification message of a given key with another message. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.replaceAsync( id, @@ -8704,7 +8712,8 @@ // Removes a notification message from the current mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); @@ -8737,9 +8746,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml - const email = $("#emailOptional") - .val() - .toString(); + const email = (document.getElementById("emailOptional") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.optionalAttendees.setAsync(emailArray, @@ -8840,9 +8849,7 @@ Office.context.mailbox.item.removeAttachmentAsync( - $("#attachmentId") - .val() - .toString(), + (document.getElementById("attachmentId") as HTMLInputElement).value, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.error(result.error.message); @@ -8881,9 +8888,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml - const email = $("#emailRequired") - .val() - .toString(); + const email = (document.getElementById("emailRequired") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.requiredAttendees.setAsync(emailArray, @@ -9566,7 +9573,8 @@ // Adds a progress indicator to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -9582,7 +9590,8 @@ // Adds an informational notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -9600,7 +9609,8 @@ // Adds a persistent information notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -9635,7 +9645,8 @@ // Replaces a notification message of a given key with another message. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.replaceAsync( id, @@ -9653,7 +9664,8 @@ // Removes a notification message from the current mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); @@ -9817,7 +9829,8 @@ // This snippet appends text to the end of the message or appointment's body once it's sent. - const text = $("#text-field").val(); + const text = (document.getElementById("text-field") as + HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the @@ -9904,7 +9917,8 @@ When prepending a link in HTML markup to the body, you can disable the online link preview by setting the anchor tag's id attribute to "LPNoLP". For example, 'Click here!'. */ - const text = $("#text-field").val().toString(); + const text = (document.getElementById("text-field") as + HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the @@ -9935,7 +9949,8 @@ // This snippet prepends text to the beginning of the message or appointment's body once it's sent. - const text = $("#text-field").val().toString(); + const text = (document.getElementById("text-field") as + HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the @@ -10005,7 +10020,8 @@ If you want to use a link in HTML markup as a value of the setSelectedDataAsync call's data parameter, you can disable online link preview by setting the anchor tag's id attribute to "LPNoLP". For example, 'Click here!'. */ - const text = $("#text-field").val().toString(); + const text = (document.getElementById("text-field") as + HTMLInputElement).value; // It's recommended to call getTypeAsync and pass its returned value to the @@ -10044,7 +10060,7 @@ { isInline: true }, function(result) { if (result.status == Office.AsyncResultStatus.Succeeded) { - const signature = $("#signature").val() + ""; + const signature = (document.getElementById("signature") as HTMLInputElement).value + ""; console.log(`Setting signature to "${signature}".`); Office.context.mailbox.item.body.setSignatureAsync( signature, @@ -10065,7 +10081,8 @@ // Set the signature for the current item. - const signature = $("#signature").val(); + const signature = (document.getElementById("signature") as + HTMLInputElement).value; console.log(`Setting signature to "${signature}".`); @@ -10159,7 +10176,8 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml - const propertyName = $("#get-property-name").val(); + const propertyName = (document.getElementById("get-property-name") as + HTMLInputElement).value; const propertyValue = customProps.get(propertyName); @@ -10187,7 +10205,8 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml - const propertyName = $("#remove-property-name").val(); + const propertyName = (document.getElementById("remove-property-name") as + HTMLInputElement).value; customProps.remove(propertyName); @@ -10212,9 +10231,11 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml - const propertyName = $("#set-property-name").val(); + const propertyName = (document.getElementById("set-property-name") as + HTMLInputElement).value; - const propertyValue = $("#property-value").val(); + const propertyValue = (document.getElementById("property-value") as + HTMLInputElement).value; customProps.set(propertyName, propertyValue); @@ -10312,9 +10333,9 @@ different message in the Reading Pane or closes the window of the current message. - const bodyText = $("#body-text-field") - .val() - .toString(); + const bodyText = (document.getElementById("body-text-field") as + HTMLInputElement).value; + Office.context.mailbox.item.display.body.setAsync(bodyText, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { @@ -10337,9 +10358,9 @@ different message in the Reading Pane or closes the window of the current message. - const subjectText = $("#subject-text-field") - .val() - .toString(); + const subjectText = (document.getElementById("subject-text-field") as + HTMLInputElement).value; + Office.context.mailbox.item.display.subject.setAsync(subjectText, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { @@ -10362,9 +10383,9 @@ different message in the Reading Pane or closes the window of the current message. - const bodyText = $("#body-text-field") - .val() - .toString(); + const bodyText = (document.getElementById("body-text-field") as + HTMLInputElement).value; + Office.context.mailbox.item.display.body.setAsync(bodyText, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { @@ -10387,9 +10408,9 @@ different message in the Reading Pane or closes the window of the current message. - const subjectText = $("#subject-text-field") - .val() - .toString(); + const subjectText = (document.getElementById("subject-text-field") as + HTMLInputElement).value; + Office.context.mailbox.item.display.subject.setAsync(subjectText, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { @@ -10703,7 +10724,8 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-appointment.yaml - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as + HTMLInputElement).value; Office.context.mailbox.displayAppointmentForm(itemId); 'Office.Mailbox#displayAppointmentFormAsync:member(1)': @@ -10712,7 +10734,8 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-appointment.yaml - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as + HTMLInputElement).value; // The async version will return error 9049 if the item is not found. @@ -10729,7 +10752,8 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-message.yaml - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as + HTMLInputElement).value; Office.context.mailbox.displayMessageForm(itemId); 'Office.Mailbox#displayMessageFormAsync:member(1)': @@ -10738,7 +10762,8 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-message.yaml - const itemId = $("#itemId").val(); + const itemId = (document.getElementById("itemId") as + HTMLInputElement).value; // The async version will return error 9049 if the item is not found. @@ -11093,7 +11118,8 @@ // Adds an informational message with actions to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const itemId = Office.context.mailbox.item.itemId; @@ -11313,7 +11339,8 @@ // Adds an error notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -11809,9 +11836,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml - const attachmentUrl = $("#attachmentUrl") - .val() - .toString(); + const attachmentUrl = (document.getElementById("attachmentUrl") as + HTMLInputElement).value; + Office.context.mailbox.item.addFileAttachmentAsync( attachmentUrl, getFileName(attachmentUrl), @@ -11826,9 +11853,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml - const attachmentUrl = $("#attachmentUrl") - .val() - .toString(); + const attachmentUrl = (document.getElementById("attachmentUrl") as + HTMLInputElement).value; + Office.context.mailbox.item.addFileAttachmentAsync( attachmentUrl, getFileName(attachmentUrl), @@ -11869,7 +11896,7 @@ { isInline: true }, function(result) { if (result.status == Office.AsyncResultStatus.Succeeded) { - const signature = $("#signature").val() + ""; + const signature = (document.getElementById("signature") as HTMLInputElement).value + ""; console.log(`Setting signature to "${signature}".`); Office.context.mailbox.item.body.setSignatureAsync( signature, @@ -11905,9 +11932,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml - const email = $("#emailBcc") - .val() - .toString(); + const email = (document.getElementById("emailBcc") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.bcc.setAsync(emailArray, function(asyncResult) { @@ -12013,9 +12040,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml - const email = $("#emailCc") - .val() - .toString(); + const email = (document.getElementById("emailCc") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.cc.setAsync(emailArray, function(asyncResult) { @@ -12398,7 +12425,8 @@ // Adds a progress indicator to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -12414,7 +12442,8 @@ // Adds an informational notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -12432,7 +12461,8 @@ // Adds a persistent information notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -12467,7 +12497,8 @@ // Replaces a notification message of a given key with another message. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.replaceAsync( id, @@ -12485,7 +12516,8 @@ // Removes a notification message from the current mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); @@ -12496,9 +12528,7 @@ Office.context.mailbox.item.removeAttachmentAsync( - $("#attachmentId") - .val() - .toString(), + (document.getElementById("attachmentId") as HTMLInputElement).value, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.error(result.error.message); @@ -12635,9 +12665,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml - const email = $("#emailTo") - .val() - .toString(); + const email = (document.getElementById("emailTo") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.to.setAsync(emailArray, function(asyncResult) { @@ -12813,9 +12843,9 @@ different message in the Reading Pane or closes the window of the current message. - const bodyText = $("#body-text-field") - .val() - .toString(); + const bodyText = (document.getElementById("body-text-field") as + HTMLInputElement).value; + Office.context.mailbox.item.display.body.setAsync(bodyText, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { @@ -13245,7 +13275,8 @@ // Adds a progress indicator to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -13261,7 +13292,8 @@ // Adds an informational notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -13279,7 +13311,8 @@ // Adds a persistent information notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -13314,7 +13347,8 @@ // Replaces a notification message of a given key with another message. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.replaceAsync( id, @@ -13332,7 +13366,8 @@ // Removes a notification message from the current mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); @@ -13455,7 +13490,8 @@ // Adds an informational message with actions to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const itemId = Office.context.mailbox.item.itemId; @@ -13504,7 +13540,8 @@ // Adds a progress indicator to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -13520,7 +13557,8 @@ // Adds an informational notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -13538,7 +13576,8 @@ // Adds a persistent information notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -13556,7 +13595,8 @@ // Adds an error notification to the mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; const details = { @@ -13591,7 +13631,8 @@ // Removes a notification message from the current mail item. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); @@ -13603,7 +13644,8 @@ // Replaces a notification message of a given key with another message. - const id = $("#notificationId").val().toString(); + const id = (document.getElementById("notificationId") as + HTMLInputElement).value; Office.context.mailbox.item.notificationMessages.replaceAsync( id, @@ -13729,9 +13771,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml - const email = $("#emailBcc") - .val() - .toString(); + const email = (document.getElementById("emailBcc") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.bcc.setAsync(emailArray, function(asyncResult) { @@ -13746,9 +13788,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml - const email = $("#emailCc") - .val() - .toString(); + const email = (document.getElementById("emailCc") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.cc.setAsync(emailArray, function(asyncResult) { @@ -13763,9 +13805,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml - const email = $("#emailOptional") - .val() - .toString(); + const email = (document.getElementById("emailOptional") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.optionalAttendees.setAsync(emailArray, @@ -13781,9 +13823,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml - const email = $("#emailRequired") - .val() - .toString(); + const email = (document.getElementById("emailRequired") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.requiredAttendees.setAsync(emailArray, @@ -13799,9 +13841,9 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml - const email = $("#emailTo") - .val() - .toString(); + const email = (document.getElementById("emailTo") as + HTMLInputElement).value; + const emailArray = [email]; Office.context.mailbox.item.to.setAsync(emailArray, function(asyncResult) { @@ -13985,11 +14027,13 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml - const settingName = $("#settingName").val(); + const settingName = (document.getElementById("settingName") as + HTMLInputElement).value; const settingValue = Office.context.roamingSettings.get(settingName); - $("#settingValue").val(settingValue); + (document.getElementById("settingValue") as HTMLInputElement).value = + settingValue; console.log(`The value of setting "${settingName}" is "${settingValue}".`); 'Office.RoamingSettings#saveAsync:member(1)': @@ -14013,9 +14057,11 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml - const settingName = $("#settingName").val(); + const settingName = (document.getElementById("settingName") as + HTMLInputElement).value; - const settingValue = $("#settingValue").val(); + const settingValue = (document.getElementById("settingValue") as + HTMLInputElement).value; Office.context.roamingSettings.set(settingName, settingValue); @@ -14313,9 +14359,11 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml - const chosenMaster = $("#master-id").val() as string; + const chosenMaster = (document.getElementById("master-id") as + HTMLInputElement).value; - const chosenLayout = $("#layout-id").val() as string; + const chosenLayout = (document.getElementById("layout-id") as + HTMLInputElement).value; await PowerPoint.run(async function(context) { @@ -14531,8 +14579,9 @@ finalTable += "" + index + "" + shape.id + ""; }); finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = ""; + outputSpan.innerHTML += finalTable; }); - >- // Link to full sample: @@ -14581,9 +14630,11 @@ allSlidesList[slide.id] = `Slide ${index + 1}`; }); - if ($("#id-check-usenative").is(":checked")) { + const checkbox = document.getElementById("id-check-usenative") as HTMLInputElement; + if (checkbox && checkbox.checked) { context.presentation.load("tags"); } + const slides: PowerPoint.SlideScopedCollection = context.presentation.getSelectedSlides(); const slideCount = slides.getCount(); slides.load("items"); @@ -14595,8 +14646,9 @@ finalTable += "" + index + " - " + allSlidesList[slide.id] + "" + slide.id + ""; }); finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = "" + outputSpan.innerHTML += finalTable; }); - >- // Link to full sample: @@ -14624,8 +14676,9 @@ savedSlideSelection.push(slide.id); }); finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = "" + outputSpan.innerHTML += finalTable; }); 'PowerPoint.Presentation#getSelectedTextRange:member(1)': - >- @@ -14665,8 +14718,9 @@ finalTable += "Start" + textRange.start + ""; finalTable += "Length" + textRange.length + ""; finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = "" + outputSpan.innerHTML += finalTable; }); - >- // Link to full sample: @@ -15151,8 +15205,13 @@ rectangle.fill.foregroundColor = generateRandomHexColor(); } finalTable += "Done
      "; - $("#slide-tags").empty(); - $("#slide-tags").append(finalTable); + const slideTags = document.getElementById("slide-tags"); + if (slideTags) { + slideTags.innerHTML = ""; + slideTags.innerHTML += finalTable; + } else { + console.warn('Element with ID "slide-tags" not found.'); + } }); 'PowerPoint.ShapeFill#setSolidColor:member(1)': - >- @@ -15327,8 +15386,9 @@ finalTable += "" + index + "" + shape.id + ""; }); finalTable += ""; - $("#outputSpan").empty(); - $("#outputSpan").append(finalTable); + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = ""; + outputSpan.innerHTML += finalTable; }); 'PowerPoint.ShapeType:enum': - >- @@ -15427,9 +15487,11 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml - const chosenMaster = $("#master-id").val() as string; + const chosenMaster = (document.getElementById("master-id") as + HTMLInputElement).value; - const chosenLayout = $("#layout-id").val() as string; + const chosenLayout = (document.getElementById("layout-id") as + HTMLInputElement).value; await PowerPoint.run(async function(context) { @@ -15447,9 +15509,11 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml - const chosenMaster = $("#master-id").val() as string; + const chosenMaster = (document.getElementById("master-id") as + HTMLInputElement).value; - const chosenLayout = $("#layout-id").val() as string; + const chosenLayout = (document.getElementById("layout-id") as + HTMLInputElement).value; await PowerPoint.run(async function(context) { @@ -17245,7 +17309,7 @@ footnotes.load("items"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const item: Word.NoteItem = footnotes.items[mark]; console.log(`Note type of footnote ${referenceNumber}: ${item.type}`); @@ -17269,7 +17333,7 @@ footnotes.load("items"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const item: Word.NoteItem = footnotes.items[mark]; console.log(`Note type of footnote ${referenceNumber}: ${item.type}`); @@ -17289,7 +17353,7 @@ style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -17322,7 +17386,7 @@ style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -17355,7 +17419,7 @@ style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -17388,7 +17452,7 @@ style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -17421,7 +17485,7 @@ style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -17489,7 +17553,7 @@ style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -17715,10 +17779,7 @@ selection. await Word.run(async (context) => { - const listItemText = $("#item-to-add") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-add") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -17794,10 +17855,7 @@ in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-delete") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-delete") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -17845,9 +17903,7 @@ // Sets a comment on the selected content. await Word.run(async (context) => { - const text = $("#comment-text") - .val() - .toString(); + const text = (document.getElementById("comment-text") as HTMLInputElement).value; const comment: Word.Comment = context.document.getSelection().insertComment(text); // Load object to log in the console. @@ -17909,9 +17965,7 @@ // Replies to the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#reply-text") - .val() - .toString(); + const text = (document.getElementById("reply-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); @@ -17933,9 +17987,7 @@ // Edits the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#edit-comment-text") - .val() - .toString(); + const text = (document.getElementById("edit-comment-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); @@ -18074,9 +18126,7 @@ // Replies to the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#reply-text") - .val() - .toString(); + const text = (document.getElementById("reply-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); @@ -18122,9 +18172,7 @@ // Replies to the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#reply-text") - .val() - .toString(); + const text = (document.getElementById("reply-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); @@ -18237,9 +18285,7 @@ // Replies to the first active comment in the selected content. await Word.run(async (context) => { - const text = $("#reply-text") - .val() - .toString(); + const text = (document.getElementById("reply-text") as HTMLInputElement).value; const comments: Word.CommentCollection = context.document.getSelection().getComments(); comments.load("items"); await context.sync(); @@ -18283,9 +18329,7 @@ await Word.run(async (context) => { // Absolute path of an online or local document. - const filePath = $("#filePath") - .val() - .toString(); + const filePath = (document.getElementById("filePath") as HTMLInputElement).value; // Options that configure the compare operation. const options: Word.DocumentCompareOptions = { compareTarget: Word.CompareTarget.compareTargetCurrent, @@ -18389,7 +18433,7 @@ // Sets the state of the first content control. await Word.run(async (context) => { - const state = ($("#state-to-set").val() as unknown) as Word.ContentControlState; + const state = ((document.getElementById("state-to-set") as HTMLSelectElement).value as unknown) as Word.ContentControlState; let firstContentControl = context.document.contentControls.getFirstOrNullObject(); await context.sync(); @@ -18458,10 +18502,7 @@ selection. await Word.run(async (context) => { - const listItemText = $("#item-to-add") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-add") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -18499,10 +18540,7 @@ the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-add") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-add") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -19036,10 +19074,7 @@ control in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-delete") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-delete") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -19088,10 +19123,7 @@ in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-delete") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-delete") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -19140,10 +19172,7 @@ control in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-delete") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-delete") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -19309,7 +19338,7 @@ // Sets the state of the first content control. await Word.run(async (context) => { - const state = ($("#state-to-set").val() as unknown) as Word.ContentControlState; + const state = ((document.getElementById("state-to-set") as HTMLSelectElement).value as unknown) as Word.ContentControlState; let firstContentControl = context.document.contentControls.getFirstOrNullObject(); await context.sync(); @@ -20339,7 +20368,7 @@ // Adds a new style. await Word.run(async (context) => { - const newStyleName = $("#new-style-name").val() as string; + const newStyleName = (document.getElementById("new-style-name") as HTMLInputElement).value; if (newStyleName == "") { console.warn("Enter a style name to add."); return; @@ -20356,7 +20385,7 @@ return; } - const newStyleType = ($("#new-style-type").val() as unknown) as Word.StyleType; + const newStyleType = ((document.getElementById("new-style-type") as HTMLSelectElement).value as unknown) as Word.StyleType; context.document.addStyle(newStyleName, newStyleType); await context.sync(); @@ -20385,9 +20414,7 @@ await Word.run(async (context) => { // Absolute path of an online or local document. - const filePath = $("#filePath") - .val() - .toString(); + const filePath = (document.getElementById("filePath") as HTMLInputElement).value; // Options that configure the compare operation. const options: Word.DocumentCompareOptions = { compareTarget: Word.CompareTarget.compareTargetCurrent, @@ -20461,7 +20488,7 @@ await Word.run(async (context) => { - const paragraphId = $("#paragraph-id").val() as string; + const paragraphId = (document.getElementById("paragraph-id") as HTMLInputElement).value; const paragraph: Word.Paragraph = context.document.getParagraphByUniqueLocalId(paragraphId); paragraph.load(); await paragraph.context.sync(); @@ -20890,9 +20917,7 @@ await Word.run(async (context) => { // Absolute path of an online or local document. - const filePath = $("#filePath") - .val() - .toString(); + const filePath = (document.getElementById("filePath") as HTMLInputElement).value; // Options that configure the compare operation. const options: Word.DocumentCompareOptions = { compareTarget: Word.CompareTarget.compareTargetCurrent, @@ -20986,10 +21011,7 @@ the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-add") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-add") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -21067,10 +21089,7 @@ control in the selection. await Word.run(async (context) => { - const listItemText = $("#item-to-delete") - .val() - .toString() - .trim(); + const listItemText = (document.getElementById("item-to-delete") as HTMLInputElement).value.trim(); const selectedRange: Word.Range = context.document.getSelection(); let selectedContentControl = selectedRange .getContentControls({ @@ -21897,7 +21916,7 @@ // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; @@ -22072,7 +22091,7 @@ // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; @@ -22108,7 +22127,7 @@ // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; @@ -22219,7 +22238,7 @@ // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; @@ -22283,7 +22302,7 @@ footnotes.load("items/body"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const footnoteBody: Word.Range = footnotes.items[mark].body.getRange(); footnoteBody.load("text"); @@ -22304,7 +22323,7 @@ footnotes.load("items"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; footnotes.items[mark].delete(); await context.sync(); @@ -22324,7 +22343,7 @@ footnotes.load("items/reference"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const reference: Word.Range = footnotes.items[mark].getNext().reference; reference.select(); @@ -22343,7 +22362,7 @@ footnotes.load("items/body"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const footnoteBody: Word.Range = footnotes.items[mark].body.getRange(); footnoteBody.load("text"); @@ -22364,7 +22383,7 @@ footnotes.load("items/reference"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const item: Word.NoteItem = footnotes.items[mark]; const reference: Word.Range = item.reference; @@ -22387,7 +22406,7 @@ footnotes.load("items"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const item: Word.NoteItem = footnotes.items[mark]; console.log(`Note type of footnote ${referenceNumber}: ${item.type}`); @@ -22439,7 +22458,7 @@ footnotes.load("items"); await context.sync(); - const referenceNumber = $("#input-reference").val(); + const referenceNumber = (document.getElementById("input-reference") as HTMLInputElement).value; const mark = (referenceNumber as number) - 1; const item: Word.NoteItem = footnotes.items[mark]; console.log(`Note type of footnote ${referenceNumber}: ${item.type}`); @@ -22812,7 +22831,7 @@ // Applies the specified style to a paragraph. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to apply."); return; @@ -23100,7 +23119,7 @@ left indent size and the alignment. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update its paragraph format."); return; @@ -23128,7 +23147,7 @@ left indent size and the alignment. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update its paragraph format."); return; @@ -23156,7 +23175,7 @@ left indent size and the alignment. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update its paragraph format."); return; @@ -23380,9 +23399,7 @@ // Sets a comment on the selected content. await Word.run(async (context) => { - const text = $("#comment-text") - .val() - .toString(); + const text = (document.getElementById("comment-text") as HTMLInputElement).value; const comment: Word.Comment = context.document.getSelection().insertComment(text); // Load object to log in the console. @@ -23456,9 +23473,7 @@ // Sets a footnote on the selected content. await Word.run(async (context) => { - const text = $("#input-footnote") - .val() - .toString(); + const text = (document.getElementById("input-footnote") as HTMLInputElement).value; const footnote: Word.NoteItem = context.document.getSelection().insertFootnote(text); await context.sync(); @@ -23685,19 +23700,13 @@ // edits the value of an existing one. await Word.run(async (context) => { - const key = $("#key") - .val() - .toString(); - + const key = (document.getElementById("key") as HTMLInputElement).value; if (key == "") { console.error("Key shouldn't be empty."); return; } - const value = $("#value") - .val() - .toString(); - + const value = (document.getElementById("value") as HTMLInputElement).value; const settings: Word.SettingCollection = context.document.settings; const setting: Word.Setting = settings.add(key, value); setting.load(); @@ -23716,19 +23725,13 @@ // edits the value of an existing one. await Word.run(async (context) => { - const key = $("#key") - .val() - .toString(); - + const key = (document.getElementById("key") as HTMLInputElement).value; if (key == "") { console.error("Key shouldn't be empty."); return; } - const value = $("#value") - .val() - .toString(); - + const value = (document.getElementById("value") as HTMLInputElement).value; const settings: Word.SettingCollection = context.document.settings; const setting: Word.Setting = settings.add(key, value); setting.load(); @@ -23747,19 +23750,13 @@ // edits the value of an existing one. await Word.run(async (context) => { - const key = $("#key") - .val() - .toString(); - + const key = (document.getElementById("key") as HTMLInputElement).value; if (key == "") { console.error("Key shouldn't be empty."); return; } - const value = $("#value") - .val() - .toString(); - + const value = (document.getElementById("value") as HTMLInputElement).value; const settings: Word.SettingCollection = context.document.settings; const setting: Word.Setting = settings.add(key, value); setting.load(); @@ -23792,19 +23789,13 @@ // edits the value of an existing one. await Word.run(async (context) => { - const key = $("#key") - .val() - .toString(); - + const key = (document.getElementById("key") as HTMLInputElement).value; if (key == "") { console.error("Key shouldn't be empty."); return; } - const value = $("#value") - .val() - .toString(); - + const value = (document.getElementById("value") as HTMLInputElement).value; const settings: Word.SettingCollection = context.document.settings; const setting: Word.Setting = settings.add(key, value); setting.load(); @@ -23844,7 +23835,7 @@ specified style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update shading properties."); return; @@ -23878,7 +23869,7 @@ specified style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update shading properties."); return; @@ -23911,7 +23902,7 @@ // Applies the specified style to a paragraph. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to apply."); return; @@ -23946,7 +23937,7 @@ // Deletes the custom style. await Word.run(async (context) => { - const styleName = $("#style-name-to-delete").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to delete."); return; @@ -23973,7 +23964,7 @@ style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update border properties."); return; @@ -24005,7 +23996,7 @@ // Updates font properties (e.g., color, size) of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update font properties."); return; @@ -24033,7 +24024,7 @@ // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; @@ -24069,7 +24060,7 @@ // Applies the specified style to a paragraph. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to apply."); return; @@ -24105,7 +24096,7 @@ left indent size and the alignment. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update its paragraph format."); return; @@ -24133,7 +24124,7 @@ specified style. await Word.run(async (context) => { - const styleName = $("#style-name").val() as string; + const styleName = (document.getElementById("style-name") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to update shading properties."); return; @@ -24181,7 +24172,7 @@ // Adds a new style. await Word.run(async (context) => { - const newStyleName = $("#new-style-name").val() as string; + const newStyleName = (document.getElementById("new-style-name") as HTMLInputElement).value; if (newStyleName == "") { console.warn("Enter a style name to add."); return; @@ -24198,7 +24189,7 @@ return; } - const newStyleType = ($("#new-style-type").val() as unknown) as Word.StyleType; + const newStyleType = ((document.getElementById("new-style-type") as HTMLSelectElement).value as unknown) as Word.StyleType; context.document.addStyle(newStyleName, newStyleType); await context.sync(); @@ -24228,7 +24219,7 @@ // Applies the specified style to a paragraph. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to apply."); return; @@ -24711,9 +24702,9 @@ // Gets the table style properties and displays them in the form. - const styleName = $("#style-name") - .val() - .toString(); + const styleName = (document.getElementById("style-name") as + HTMLInputElement).value; + if (styleName == "") { console.warn("Please input a table style name."); return; @@ -24731,13 +24722,13 @@ } console.log(tableStyle); - $("#alignment").val(tableStyle.alignment); - $("#allow-break-across-page").val(tableStyle.allowBreakAcrossPage.toString()); - $("#top-cell-margin").val(tableStyle.topCellMargin); - $("#bottom-cell-margin").val(tableStyle.bottomCellMargin); - $("#left-cell-margin").val(tableStyle.leftCellMargin); - $("#right-cell-margin").val(tableStyle.rightCellMargin); - $("#cell-spacing").val(tableStyle.cellSpacing); + (document.getElementById("alignment") as HTMLInputElement).value = tableStyle.alignment; + (document.getElementById("allow-break-across-page") as HTMLInputElement).value = tableStyle.allowBreakAcrossPage.toString(); + (document.getElementById("top-cell-margin") as HTMLInputElement).value = tableStyle.topCellMargin; + (document.getElementById("bottom-cell-margin") as HTMLInputElement).value = tableStyle.bottomCellMargin; + (document.getElementById("left-cell-margin") as HTMLInputElement).value = tableStyle.leftCellMargin; + (document.getElementById("right-cell-margin") as HTMLInputElement).value = tableStyle.rightCellMargin; + (document.getElementById("cell-spacing") as HTMLInputElement).value = tableStyle.cellSpacing; }); 'Word.TrackedChange:class': - >- @@ -24946,7 +24937,7 @@ // Gets the properties of the specified style. await Word.run(async (context) => { - const styleName = $("#style-name-to-use").val() as string; + const styleName = (document.getElementById("style-name-to-use") as HTMLInputElement).value; if (styleName == "") { console.warn("Enter a style name to get properties."); return; From 4954cac577762e60d69352524ff4db9504f90a11 Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Thu, 3 Apr 2025 12:00:12 -0700 Subject: [PATCH 25/71] [Excel] (Range) Add cell control and notes snippets (#973) * [Excel] (Range) Add cell control snippet * [Excel] (Notes) Add Notes snippet * Refactor, move Notes sample to Comments folder * Add comments to note snippet * Add new snippets to excel.xlsx * Run yarn start * Incorporate code review feedback * Re-run yarn start * fix typo in excel.xlsx * whitespace change in excel.xlsx * Add new functionality to checkbox snippet * Run yarn start * Update excel.xlsx, re-run yarn start * Add CellControlType to excel.xlsx, adjust comment locations, run yarn start * Apply suggestions from code review Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> * Incorporate code review feedback, re-run yarn start --------- Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> --- playlists-prod/excel.yaml | 34 +- playlists/excel.yaml | 34 +- .../comment-basics.yaml | 0 .../comment-mentions.yaml | 0 .../comment-replies.yaml | 0 .../comment-resolution.yaml | 0 .../excel-note-basics.yaml | 162 ++++++++ .../excel/42-range/range-cell-control.yaml | 164 ++++++++ snippet-extractor-metadata/excel.xlsx | Bin 28252 -> 28977 bytes snippet-extractor-output/snippets.yaml | 383 +++++++++++++++++- view-prod/excel.json | 10 +- view/excel.json | 10 +- 12 files changed, 763 insertions(+), 34 deletions(-) rename samples/excel/{12-comment => 12-comments-and-notes}/comment-basics.yaml (100%) rename samples/excel/{12-comment => 12-comments-and-notes}/comment-mentions.yaml (100%) rename samples/excel/{12-comment => 12-comments-and-notes}/comment-replies.yaml (100%) rename samples/excel/{12-comment => 12-comments-and-notes}/comment-resolution.yaml (100%) create mode 100644 samples/excel/12-comments-and-notes/excel-note-basics.yaml create mode 100644 samples/excel/42-range/range-cell-control.yaml diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index 9a3f0428b..3b67eee0d 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -173,8 +173,8 @@ fileName: comment-basics.yaml description: 'Adds, edits, and removes comments.' rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-basics.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml + group: Comments And Notes api_set: ExcelApi: '1.10' - id: excel-comment-mentions @@ -182,8 +182,8 @@ fileName: comment-mentions.yaml description: Mentions someone in a comment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-mentions.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml + group: Comments And Notes api_set: ExcelApi: '1.11' - id: excel-comment-replies @@ -191,8 +191,8 @@ fileName: comment-replies.yaml description: 'Adds, edits, and removes comment replies.' rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-replies.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml + group: Comments And Notes api_set: ExcelApi: '1.10' - id: excel-comment-resolution @@ -200,10 +200,19 @@ fileName: comment-resolution.yaml description: Resolves and reopens a comment thread. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-resolution.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-resolution.yaml + group: Comments And Notes api_set: ExcelApi: '1.10' +- id: excel-note-basics + name: Notes + fileName: excel-note-basics.yaml + description: 'Adds, edits, and removes notes.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + group: Comments And Notes + api_set: + ExcelApi: '1.18' - id: excel-range-conditional-formatting-basic name: Basic conditional formatting fileName: conditional-formatting-basic.yaml @@ -896,6 +905,15 @@ group: Range api_set: ExcelAPI: '1.15' +- id: excel-cell-controls + name: Checkboxes + fileName: range-cell-control.yaml + description: This sample shows how to add and remove checkboxes from a table. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + group: Range + api_set: + ExcelApi: '1.18' - id: excel-shape-create-and-delete name: Create and delete geometric shapes fileName: shape-create-and-delete.yaml diff --git a/playlists/excel.yaml b/playlists/excel.yaml index b10fa4406..2a8b5c90f 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -173,8 +173,8 @@ fileName: comment-basics.yaml description: 'Adds, edits, and removes comments.' rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-basics.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-basics.yaml + group: Comments And Notes api_set: ExcelApi: '1.10' - id: excel-comment-mentions @@ -182,8 +182,8 @@ fileName: comment-mentions.yaml description: Mentions someone in a comment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-mentions.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-mentions.yaml + group: Comments And Notes api_set: ExcelApi: '1.11' - id: excel-comment-replies @@ -191,8 +191,8 @@ fileName: comment-replies.yaml description: 'Adds, edits, and removes comment replies.' rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-replies.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-replies.yaml + group: Comments And Notes api_set: ExcelApi: '1.10' - id: excel-comment-resolution @@ -200,10 +200,19 @@ fileName: comment-resolution.yaml description: Resolves and reopens a comment thread. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-resolution.yaml - group: Comment + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-resolution.yaml + group: Comments And Notes api_set: ExcelApi: '1.10' +- id: excel-note-basics + name: Notes + fileName: excel-note-basics.yaml + description: 'Adds, edits, and removes notes.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/excel-note-basics.yaml + group: Comments And Notes + api_set: + ExcelApi: '1.18' - id: excel-range-conditional-formatting-basic name: Basic conditional formatting fileName: conditional-formatting-basic.yaml @@ -896,6 +905,15 @@ group: Range api_set: ExcelAPI: '1.15' +- id: excel-cell-controls + name: Checkboxes + fileName: range-cell-control.yaml + description: This sample shows how to add and remove checkboxes from a table. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/42-range/range-cell-control.yaml + group: Range + api_set: + ExcelApi: '1.18' - id: excel-shape-create-and-delete name: Create and delete geometric shapes fileName: shape-create-and-delete.yaml diff --git a/samples/excel/12-comment/comment-basics.yaml b/samples/excel/12-comments-and-notes/comment-basics.yaml similarity index 100% rename from samples/excel/12-comment/comment-basics.yaml rename to samples/excel/12-comments-and-notes/comment-basics.yaml diff --git a/samples/excel/12-comment/comment-mentions.yaml b/samples/excel/12-comments-and-notes/comment-mentions.yaml similarity index 100% rename from samples/excel/12-comment/comment-mentions.yaml rename to samples/excel/12-comments-and-notes/comment-mentions.yaml diff --git a/samples/excel/12-comment/comment-replies.yaml b/samples/excel/12-comments-and-notes/comment-replies.yaml similarity index 100% rename from samples/excel/12-comment/comment-replies.yaml rename to samples/excel/12-comments-and-notes/comment-replies.yaml diff --git a/samples/excel/12-comment/comment-resolution.yaml b/samples/excel/12-comments-and-notes/comment-resolution.yaml similarity index 100% rename from samples/excel/12-comment/comment-resolution.yaml rename to samples/excel/12-comments-and-notes/comment-resolution.yaml diff --git a/samples/excel/12-comments-and-notes/excel-note-basics.yaml b/samples/excel/12-comments-and-notes/excel-note-basics.yaml new file mode 100644 index 000000000..d8a65e187 --- /dev/null +++ b/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -0,0 +1,162 @@ +order: 5 +id: excel-note-basics +name: Notes +description: 'Adds, edits, and removes notes.' +host: EXCEL +api_set: + ExcelApi: '1.18' +script: + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-note-to-selected-cell").addEventListener("click", () => tryCatch(addNoteToSelectedCell)); + document.getElementById("add-note-to-cell").addEventListener("click", () => tryCatch(addNoteToCell)); + document.getElementById("change-note-visibility").addEventListener("click", () => tryCatch(changeNoteVisibility)); + document.getElementById("edit-note-content").addEventListener("click", () => tryCatch(editNoteContent)); + document.getElementById("edit-note-size").addEventListener("click", () => tryCatch(editNoteSize)); + document.getElementById("delete-note").addEventListener("click", () => tryCatch(deleteNote)); + + async function addNoteToSelectedCell() { + // This function adds a note to the selected cell. + await Excel.run(async (context) => { + const selectedRange = context.workbook.getSelectedRange(); + + // Note that an InvalidArgument error is thrown if multiple cells are selected. + context.workbook.notes.add(selectedRange, "The first note."); + await context.sync(); + }); + } + + async function addNoteToCell() { + // This function adds a note to cell A2. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + + // Note that an InvalidArgument error is thrown if multiple cells are passed to `notes.add`. + sheet.notes.add("A2", "The second note."); + await context.sync(); + }); + } + + async function changeNoteVisibility() { + // This function sets the note on cell A1 to visible. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const firstNote = sheet.notes.getItem("A1"); + + firstNote.load(); + await context.sync(); + + firstNote.visible = true; + }); + } + + async function editNoteContent() { + // This function changes the content in the first note. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItemAt(0); + note.content = "Changing the content of the first note."; + await context.sync(); + }); + } + + async function editNoteSize() { + // This function changes the height and width of the first note. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItemAt(0); + note.height = 200; + note.width = 400; + await context.sync(); + }); + } + + async function deleteNote() { + // This function deletes the note from cell A2. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItem("A2"); + note.delete(); + + await context.sync(); + }); + } + + /** Set up Sample worksheet. */ + async function setup() { + await Excel.run(async (context) => { + context.workbook.worksheets.getItemOrNullObject("Notes").delete(); + const sheet = context.workbook.worksheets.add("Notes"); + + sheet.activate(); + await context.sync(); + }); + } + + /** Default helper for invoking an action and handling errors. */ + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      +

      This sample shows how to work with notes: Add notes, edit content, size, and visibility, and remove notes.

      +
      +
      +

      Setup

      + +
      +
      +

      Try it out

      + +

      + +

      + +

      + +

      + +

      + +

      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-cell-control.yaml b/samples/excel/42-range/range-cell-control.yaml new file mode 100644 index 000000000..a207ebd8e --- /dev/null +++ b/samples/excel/42-range/range-cell-control.yaml @@ -0,0 +1,164 @@ +order: 23 +id: excel-cell-controls +name: Checkboxes +description: This sample shows how to add and remove checkboxes from a table. +host: EXCEL +api_set: + ExcelApi: '1.18' +script: + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-checkboxes").addEventListener("click", () => tryCatch(addCheckboxes)); + document.getElementById("change-checkbox").addEventListener("click", () => tryCatch(changeCheckbox)); + document.getElementById("remove-checkboxes").addEventListener("click", () => tryCatch(removeCheckboxes)); + document.getElementById("remove-content").addEventListener("click", () => tryCatch(removeContent)); + + async function addCheckboxes() { + // Add checkboxes to the table. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; + await context.sync(); + }); + } + + async function changeCheckbox() { + // Change the value of the checkbox in B3. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const range = sheet.getRange("B3"); + + range.values = [["TRUE"]]; + await context.sync(); + }); + } + + async function removeCheckboxes() { + // Remove checkboxes from the table. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the checkboxes back to boolean values. + range.control = { + type: Excel.CellControlType.empty + }; + await context.sync(); + }); + } + + async function removeContent() { + // Remove all content from the Analysis column. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Clear all the data from the second column. + range.clearOrResetContents(); + await context.sync(); + }); + } + + // Set up the sample content. + async function setup() { + await Excel.run(async (context) => { + context.workbook.worksheets.getItemOrNullObject("Sample").delete(); + const sheet = context.workbook.worksheets.add("Sample"); + + const fruitTable = sheet.tables.add("A1:B1", true /*hasHeaders*/); + fruitTable.name = "FruitTable"; + + fruitTable.getHeaderRowRange().values = [["Fruit", "Analysis"]]; + + fruitTable.rows.add(null /*add at the end*/, [ + ["Apple", "TRUE"], + ["Kale", "FALSE"], + ["Orange", "TRUE"], + ["Pear", "TRUE"], + ["Mango", "TRUE"], + ["Dog", "FALSE"], + ["Strawberry", "TRUE"], + ["Chair", "FALSE"], + ["Tomato", "UNKNOWN"] /* Only boolean values will render as checkboxes. */ + ]); + + sheet.getUsedRange().format.autofitColumns(); + sheet.getUsedRange().format.autofitRows(); + + sheet.activate(); + + await context.sync(); + }); + } + + /** Default helper for invoking an action and handling errors. */ + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      +

      This sample creates and table and then shows how to add, remove, and change checkboxes in the table. +

      +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      + +
      + +
      + +
      + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/excel.xlsx b/snippet-extractor-metadata/excel.xlsx index 0daeeb2d254f73ce314a6906e19ff6d3f47aba49..5c53016876e55a61f6216acce660344fec2b5531 100644 GIT binary patch delta 18636 zcmYhiWmH^E6D^DdcXxujyA#~qH3WAE8tmY%g9UeYcXtvzxJz(%&o|F|?_KNrGiy!t z>FVmL+PkWI&aAIP*6%{rWxxTV$duTq&=3%ua1an^5D*Yv_N<;x-|fCRIoYvzIoMZe zIjF3$p?`?j{3E}4L>G*_r5X6sR364f!-elFN#jx`g((v!5k2$qI%P8-$F77!#Ngp) zCF-Bkd3%31Us7I8TjNc>hMkBN!?cOpfPF3z)nmeX4zJg3=`e1)a)S*B-;(+Xygu!? zF)!?OC&%MLH2Fno>w8A--3>?aR*5E(IQ47DEwG^|+;87y?^d1ZWSy3H7{)-CnifbI zgh-MElUK@P`;tfJ?^JIF(HV21+`Xn8y&zQ6#|7H`^d=VQOi+SDe=NX#`2i!PtwD8& zR;_u~1G_>bUL6~x0`U)k8QfOp4LqIHils|FvnW=9SX}}67v_EqPtYM>?uzYqk?kpb zN@C+*Z&dFW)cfR9wGAPCC0d9 zot-9r%OOS1^f#lIqb&aytXgo|*J;Wz{a`C~LG_}SPYjeZ)>+>#>YTGvzF?jQ|PH$meUT;r_e9Z5U;8e6Sqyblh9 zuld=Z_?nDPnD_W@#6`ydvEP~r*dP?|=6TyZjs4&{-WsHqbRihpU^+A|@raLJ*K6noWT;i-1AcM8Qc5^Bq|p-@!-Yvjh5 zX25rpTI}xMobqNJ@D5w?Mr&}r!j!I1H{SH?!4LuZzS1D5#=&VOE4YP*pv zUERr4B5(*Pr~EYd^Mk)+DIFEJiskdDC1E25*4c?q8mp7nb0Fhryh+^d@^QcWGH~YpLDxqBZ9h`alts^M zB?{Ttk0=9$`l0GnXvG8pai9tbfe(=sXG;iVB^%kTv0;Z@!o8wNKVEwp(he~@&eaXz zTWpLrGm+62wEUHmPii{ry_Burh!aN$r2 zHX#F<$3{qGiG*aoT}?c$d{)?`6K{1wQ`zhzc?7*HDyAs8e<68{5r9>`qlie&a89uz z`1ft`<9Ftdf-@6l1Jx`t-cniELu;5XTV)4`vBWOwAeC>&w3-L-rTKm$= zceYU3UTEWj#?6L;PyKl+34Kzy@Zc&4e$CtW!&1NDLPv=RPh1Fpof*+DW_=bH$lCJ@ zpZqGP?`D!er%>vi+s25(=d)y?cTxv}>ozt}8KT3r&@j=c4j{bPB ztbM!&duTciSku4u5U~dhLbaSFfFx)vZrCA{(w&1XNY+on%Pw1^(Hm5e??ZV=s@@wq zG3VI07P1vG*`JqnaD$jW!uS9Rj-^1+u{A+Yl@4!NLzyYi%2EgR}@8ADElCw|am|7DL2_{qG)V-SYo;-`e}{I*rWu!|ZkEFxQ_X{=*7r z`Iol!`tRS;bgfgZDDeJNn+v>LFQMJl;`)($G%wHc6!1ppI9*C!;yMhG;=bD7k4~Kn z_E(G5iQ2*UAbiPFqT6KhJ`tVTC|K)3LTP%tc}9bv@ClR!Jj90z*66uvafMlLN;e;@ zE)_)AXLr}=@0NG3Nj`NKiq(n==3A+$Oc#u@04LdH$k%W)z@95iz?k0Wx!i2@`Z8K^ z&CQH8f(NW`hN6&uN=Nr{yT7oc!HUtWlgQm0%Ya;_j!QfOXUU|;WA*>dfn2?d1<(7Y zrV?T;zF#d?Bq~S_^+#zQ_g<3eBobXIq6;tL&WcttpkW1#Qt=$YvA9Vu8xXoNdB37JPq3oG!v@C&*OY5$SR{Dss9 zsW29(vAApykE*v?w$UhASev_-&BRDiIH?7|eoeovg(xPwgwSHV)-fyp!+>cfBt!%X z$UH?sdTqyybqY^9w10C=x2)BqlFGD091!r?f`D`TOuR`#GB6G&Qwbk^eO2X2$E>+e zE|3TPynT#5b)>m3m3fLZkm)ZDiF%ZGJ$aA16Qe9;-qb$vxvTsNnt0~RUJmNcex(gi zNfb@sYAfJgfe|DA<%nB+=I>q=r9{J6Tks~qH0!?7(Q-_zIDSU5L$D>wP^aH$8# zUvHgNL`$)CUHYDZ_Zt{|3dNd|13Y*L0iGmEI)Nl4Wstm$a&84bTA~Q?(WW;^kS;Gd zmTMw5w@65&J2%O*?v|M1WyZ|8W^0cxqF3!RCv0H-gG&_o6`Je*g>Z68$weMW& zK0~r|GoNAXNK><)N9R)jceE?@$=GL-d@}!-_czaP(#-|%E$tK#XXT%DrFTf`4=C@S z6aRhvMUWCjxO`v>aaGQ_8e6A=PD!7SH6}r*a)at4g%T5PCHD;}w=?F2v0xgIcsW?y zIbu{U;6h_@Zm77xNn|6fLBq`F7^<0CAhv7==(r0u)$rbAHI?ea;Wq$sDd!#yZO@!b(A|WD~sdp9&cjl1* zyGaD>rZpBa7@a_OgZMgNMe&)(4=Ibv?IB7Q?5h$eBsez+G7k5RS+83+{A`q#DB0yh z3dpNtpHXQz4M_7Kz!Mw>2659|q)&a2|EccZ3@w%5%Uogj2Db12$P_=JBZ1>keqL4xF#F+cVMwY}0IcM35N^A~*@_s&XsDs8?sd+$H}1 zgt^YP2Vw;zB$B0W3;Y}R34-2pm=c>#1F_U z4IW_yI~JAyPyogmm=RP|F01<1R62MBhFo}-D+v@|-r#;nNgV$9F`Gc4#w_`vVK@Zp z(ejZ*FW@9BkVTIF*Ajjp*C=k~qq#t0WH3nwvCfLVZYr20PFFs;0j4WkuHd+tLSUA=O=9DxzyD6n;mkH5(j1`#m7M5|DB0knh&U9t9gJh`Y(9 z=OT4?fDMEXvPVc~?^+eo6!!5}7w{P$MnOCGVFpQ}L9G*`WCIb>i$oYC|zc|nM)*vC;eD|$>7QScfceus8m zYx)ST14`!q7iLHE&aPUVc6QR7Ny0J3BQ6gKH#P*0)$DBYENta2?fnriFX_>Nw1ZT- z0S4IFHr78_e9t`{nr_2hUgF_(s4Ya>+d>HrUB{(&5`@!nJX$bA7A&9PFZCOd`0~t% zw%lucW%uMBj@AFi)|X#<#jT)VD^=l60K_=_%-^VbkGCgOG$M~09M_pgV6o&@aG+pIyQF(It|E!I2N+E}$Z7))g5&>rv;KtN-dfdoZ zphe-%Hg^<(&=J%7(^uDsA>*5n(4O^903`^$wn2Jp_UXE0D>5XOCaj`clMB3Sus0w{ z?2Ekw6s7qD0$5k-*P}|jz~!MY2X*_Qx#y0;@&i@x}05ykmy zXdvh3j3@Cre#HR)AGKp)V8_RVF7RzfeQg|mJ9ot^JH;EJF_FE*83z-*+807`g+qcW zMu16GB~%NiKDf_EiUqv3CexYEaKUAT;%rlC(DMH2TQ>y`7)T7b51LFB(oCLQ=jESy z(&M%mIZVMD|7NN(T;SbxyO7A6+x3^bn+M_4bBRD{bkOkvWxPq|0#-*mqP5C zE{6E3@~Qvjcv6>FhLUHTvP;Jt=mVpUaaqI}i%2pka~b`#>@yEP%)4xp18cdoxq@;yUq3Q`n8xjAlx z*8!yq=q&vL1!e^aqyk*eh1njvYq#oZ=zh0W0z#2+iVkgpaY6-VC8{()4!yq8!N`O9 zEZ%f!sSzS%0ZugU2%I$IUhVUyKb!ol@2V$G_N)>Nt{>dGJt5#)X67r2AV2(wxi7t{ zfYUu|d=Mnz%&dRW4I{OS+Gp2wp}?3^WpQ3i!Jea{5}uO+HMJPLbMnKLmKa%xE9YqK zK^=n-yi&+#cn{He10jIWE9S9VQs}%mYTugGb@Izw0VDTLURp^5xLj`)M_qx1f4>NQ z=2H5?CV=k|F$KRM#I%F|T%olGIP?jV4=|MApChmfP-}t+*otD{$+hZFl^rB}uShXG zvG}&DC^{Fq=yeW~hZY8op3QPOqYt{_;rw9Ola!DK1#V6~fPF?X`Rxw+9}XeSH4)BY zV-;ccWQ8b#qfq&wwt4(T8OUx#nq^SELzs`jQ(=e6@)f2QqH>1u`kwMg3lQtCsGR=1 zrzE}2VeIDlxd-Wy(s=U1V@q=6?ihDiyp-m6hy72Km6#6Pv=b>f)K?OxkuRs_Iv*0e zB^Obrura&i0E-3@O=4({J{_E{a)pN8VMtbR&K)hWA_mWk@Vw_BO@o+qKJiz9A8q<6 zuQzYxi9tonZ}ANB@oM8-UX zs1_$Gu?`9}%(&iGCrVSwtBi&DpsW<`EHWPPY`6)!K z)@_pv$6K~9>^SQEbi>1hH%^CCv&QK)q`{1+ej$~r)Qe9=7FZj|*Kp}}McVOBoX?&$ z?&1(wsduDiojROv+^0h3acRpiMOoTq<^wr*EOyk=dQ#28d- zoY6qSfCi=_uwlX(*==LcWLKUh@guGnZFEg=Wtm$nz7`QAigyv3a)rTV**`sis#mCi z!YRidex1yrh3G~T^2V`Rh%G2}9{)KtYVwAwQ~N$%>ID<}N&=quyz?Zos{rilrc(I= zvz^tI0GXmZf!_<^TNMvfBAxyXc#vxUh<}|~yG>|PCG)2vzCIS-4j;b&1h)Y^|4SZN#}F zv}tYIu>9af6%k-*?@aUcj>@D!A&$8x{L6xfpNReM}7qe$wsNJyx12OlSq+42YNg!_h=cw>m_c`JB-GkskN$h9Sy*P%Z` zaNWF|!82J5KLKjN6ZH>G& z)>E+a-hV}JQVl&t*RNr!Qw!JEJ=hOrlQCXLmpi=cW?*@$#NL`$E2k$gAIF3aT2YcF z6vsJR2uF_7uElyUw)n8Ou*@}5zt^+9*bglTcA+gvwZmU2-IAb4wbB9lI#*DN{&c2#u4@5ufi*NWe9IS4|}%a^Br zVJXrpuLAuN>rcQuX1i(4v-@-X)w6xyB=1>cW=%+J_U}=F*rR}i1seW*(48)y9~hS8 z$x$8qp9`SHO&GYCe|Q5eq2;vKlSWB$>l+*SJC3sjfu+yBJJFiouk4YKRQlh$w~??^ zV$<-h^Sx3Dh#!8M04ccAIk9b|*O$E9taJE7*$N3mM5U@=qq=mLfAH*kXyI+);!*uVC*ciJK3^gigN?loQui>y;xbprmgpsh&}gD?xrz_V|i zFtAw|dPKdi>rV0U;}k5Pe|cy$6nBjdyfi|_k5Sa_xDE)5(EQ>+^OTkJ=Up=-9mx#M z86L+1U?6#NF!c5XeT|z(N6j(t?wHn;##2Kk2FRNrJx$nSJam3=>hn6idIwU)jzdoT z(N||cN}BPv`w6V%qD$)(^ei{Rjrv&;p+rDUwJ^yaYe`HI%;x#6I z)YHqZBfIptQ3ubqIO9`a$QniZ+%m;_>IuDl4BP)hEC)b2dQUMAudHVge{xQW0(jH# z)4Wuou2{cXM}~PXm5C9P-_l)onsT{J_L4+b5y=Y#X$Mn9a$U5;PheUQ zFgK-HWzEz>7L9%_W@5))uoTvLt4il8hF0J(H)U82Fj-HL8!`!&!=O+6s!o-2u9cQ0 z1*{F|C$~{99HLbczGbA!Vn|Beih}5Eq}JJP-(GgR>qs2>peuG2Dnj2$P?wx+7Gt&g z8>iPn)HViQAk6r-0_`EKpvMEVni)}l_`T_gv_6oDO>00l-ps7)pCwtO3q-Ss)4y|Q zA0MVYk$fx2oHGMojfh+Fo2|trM#yaa0B0vKPqK@wU9tQ~YYF{9e{F=cT{E;{K5q~Y zN6nzud{*;FcBN^b>Z`Oiu$=rRK=MgAI=vc|xk3AzKkzT{gv< z+?_1B4_ZA2%q3L62ilt;I6%hR_pOGU z<#T2;qq)LLa_FE9G-+b9t(m81L(J1prd_B8d)_r$I=#G>P&kI`0H$5fN#afF%_Pv1 zy(yhueoH7`#dgQD2PLUJciy}3=g__WV?kXGDF-AS&3==Go(wNZL@QHYa#DYQbBoA# zN&cbCVJBYx?JBb>LNq4v0vIh(8y)mi+FfrUy%N5^r6VY72@Phr-qSL_(Q;`mj(G?s zVcWHF@Ewc&B3HFVQ!kc3N8oW0b`@@q1Qdh>Z>YN z!ypbl{BoXc4EjnYRI6RaYshjYWABP0McmYi_c%A7?>Z{qA3URgwnlo4brtNG>AA1e zP75t;I@CSSSO*cJO{!h26WVgb`bXEQLTZF-&TQ`utAL0wf1mt%5`}-;$#bBLM)!yf z8bc11Vhd>g_IvKA#xjhVkyd+TiZU202YSsv=?Y+Q3=Kbh6K$gH_r zx@oiSGt)wLpEulkHn-<*+azggoO)yLAdk2vcmd@#B2$E)Ymf4H+fA*0yFS*~Oi!=b zZF_RZv%6=C@OL*A_TwVGc&-(64L0al&^kq;iA(nl_#<^D5+ zu%XgqW3vs~>eGC-o~17r6G85uDf>a?X0|}xzuVm?In_#XD^K&qXZU1^;=V1%-6_br zxhm6PWJ2n#C0iCTTkF~tyZZVCUL|5-wZ}_7wx$ECe$?9>J929IvI09b*E!gGjXOFG zrsufGzw`p) z6|Lq=ue6OO3ksAz}@r+HLWleE>H_wAaF~ z)@m>(lFQ!h?Xd6u-XP&$0e#JPsx-L>kTI_Yu9nw_TZEx*Q*xc~bNw1qeT`Z}YZn!&d(!^B1VY_M_7UTCqef-cCD6^*A%ak8U^J# zzgXicO5FIeZ;a9^R0O|o$W8IE8%Ojo(CtU85y^z=)Pkw*G*iUP?oI}% ze=RwfKFb@%PSu2~hG&Q83cHy-Z1=ge4(97OT? zEePtgWJY#^$n77CGJC;*ubC0d@V|J^p!&94#bTJvxTZAfECIq~G`*&tN!t&$HuvFt8)6h}>w~?dMpVyAntn3d z^|#0(rS$_n2??a>4LJ>VH21kDHU(nX_u=s4byv1N+EE0}oE<-G=2G>z3Im*2SvdrZ zE=Ccb+ge}^(hPjLi`+Y&8*D|%wtf3GPQpOyazN8wMQ6!KFa}of zz}QkGq|>LLCZr$ViDT;B0yKIuUMV7=<}TJwDD`_e3<0ZiaDJuIUd}Si94;us$~8SFI_Xb z5zLkm-_D_&jr?qty<$OPFrNAFe0S%NT}h)qZyQw>zaz;lmqnVs4dl98dcdu*MKX8Q zA}vV%(%Y(CzCqN^lH{(}<90bU`+06@!a3;E(&wI^ab$klUJy3&gV{k?h;%S!zA{I8 z{V>WE-%dO|Q@$b+w#66)8Z8-yLxDwMvCymn9!Z;cdnHQad-n!zP3w@bM#gHz>}3RM zdK6xbf*&I37H(Hc72pg;?g6#e0<5Ci#p$RMT73B`pHu0u=&5Xq^EicPp;R?lFF3!} zzs%c>t@!rRrOWMx??y`LdUn?Q7DWnQx3Ww64UO{s{v>1#KK^xDp5>BwBv&bWum$9D z0p=OqY&%N)Ez%2-qgmhIIFm0-=}nmy$zh)^mX=aN^DkflA^b}1y))z6hpV5Ad+QxR zxf@Eb>8BIUHO$UN*l&GsyxX>eemMH^q?-3^yCd3K43A4Vla@a=O|1;RcBo3TjiUVI zV5LfaS<9fK~G+Pbqxtqhg^nhxRapK5)OTW`s|Q~r8HjV zX@Gx^iPpBO*kbJAZsk>XFGjY-Wy+T2-YZhf(&lPM)%A=fWh3G@EgzX3dg}NH5H*aWchf#fujiUl_WVc@*D-cY z>*!LYPHAx7*a+awF7lDlYoBEmEj7O=jBiW&6J!PI*zZ_lB~LFc4iIFu4&yb^h`rk8 z{Bo77A?L-U==q-+j6xZmPT@Nkv_n=S5C-G!kI#3CU;B7@x6SWmZlR#T10$vHnwa=V zd%y;YS04i6mrDDWSIPBWl_5@L>dOs>oo>dqO$dKV(%-(;qDOQe{vEIC99tW>2c1Ec z<*u}$%;cVXFxO&86g>vlH2QVsJ)O+IJtHq)%H46+k*Jz_eF7DP-aCjrT1@b;kZw0n zo=Vo>v#~wWetYz_YIH<(PI^a9i`2*;bOJ<*j=>HTyR|Hz5QMx-s|Z)PS??0Ic=^36 zB0=L9uvi-r*bmWn30^>HT|HKpM)Y@r4}T9?Um~8S(4AIQEUxB-sJ|j__FexhlbuCh z5{6}e(aPtv6A8H##tnSGjGH50CzFyTc73kw-w!;`b`xhhzhHX%&b$5LhWz!>W*wLX zA9>V_pzKJ~MKc_RQTNsc=!~$3`lNY3M+xJnrOErc@ir0O(dkcmH|-a8GW)tk`V=$` zxKsBB1lO2(ExJ?Fg1uFw(A6uc->Ix)s6(6i^H{#|A{DQnRZqKXzoe6S-7QkaP%oQ8 zZnSd<4qT$E|5EdU=aeW2QCNHeCN3_1;9u_u1#fNmYU^Gxp>X&*^oq9RfG(p@~r#{1z`eNxz`S(DOC-i17qoya)#RLco%h-n3i#NSvT!cfOrfY2=B+W|_SAN*2mv47(CyI~t z(0bF(Q7k!!nV$IPq4Xe*Jk^ojw$p`|tdl5Brz+o5=L?_g_a0!7=J7Q8W1y*ZYs)73 z6uLo`!WP)r+K}9t`Mnek**|Y;sLqGPxz*#)@!9TrgHOYc_>aPG-xWu$FZCOWQz)++ z;?peO1-Nb(pvq2Z+J2c(TlNqhBGWEAz949G+-~4n_5_`>^pQ+&BP+h9t6 zesH>ZR_1cCg8T(MMPOqmneZ0BGi|8--{&hGEH3Fai@ew&gc4kXtZERcIky~44;b6V z!~7J9BfuR!4tt6B-k?ZeZ|(+EXNsZ^n8SINZB9<(nW5ul>y4M5O+NSJGAS%}f^3|6 z*W9m_$?*zLS5mIu6(jux^56X(K-ri%2Yam4AgtOm7O!Q~wkDC0DQ zGq5}9XMXqJp&={(dSpvUWi71>XbpV?C(l_|7w+UGB(1qE%XnscS{0D1qH>_R+sO&o z(9~es=czr~R0?S0sQi&P5kfM%f4)m*_#-WrVimdHO*}bjxKec}FI292zH*JJ!zlhn zyW7}24Ipu*_9&GNz0b+6>$EcFfGRX6&IX0ORs*rgy+xV!DAjpHD2BJdS2GWw%gb9E z3Him-UWS@s#GuOBVIvo%GWwi|pE-aHBT8?3#E+JTY`6J}x618~L&5DQtwzz)=(!?2 zv&c|;#cA!-wyDQVaM#UO*XH-SdaF(D`qiCg6e8vTzp6~2UOUIqW5NUIpe?Ct=yq@RYOft5WOaH~z=Rml? z`#!mVc;#;wa@NcCp{X&r2K4QjMo!Y{G?$#y_!Rn#3xPE>!6nMOq-k*adlL0TRo(~e z$}y|Ej$luTWjWr+|Cp=h34&ra+$6s1~_?X6SoEroHxh~+-tUnvmr)lGU z(CB5))f2Tp`vagk%_V>NMYFL@hwb_)#WEPRY0@~xC(P|DeP_ef(}qn;WpPk;T{+BbIs!#ZP|@Yjy_a8bIR^M)yJfA_Uy^M>P- zpf}8}OlJCw*MKXqeM)fcMU9D7cXSkCGvaRw-9_s)eA#VeAv10@_KqXeW?w$9v^-H8r{f-mi#-_5a{SoyEOEiI}7Bfc^Y zv7fHEYMaKxkjloBH(d_16?Nr?KZS<~(Hz!N5>ySv$Djc2AS6~?-~xU(_+ z%E<+ifzhto^zPRtS0;k%oe8nd%>bsg$;Eq9IRpF=qJ$-!x+v0g;*K;97!}1{lFh=t#!F7f*R?srCZU(-BK)};ohy6u) z6~TnXaPp;bUc9ya-J-wokM6j5D_NYLqU3Tf0u9BsKEZMtW^^tj{qFIZJ|+iSajZAu zD;FgF*)6fRw=3SfL9aQR$a%TCrG;r!Cv+=@aZ{?hPv#>=# zz$2@M(H$0?;YUqtwyF@dfjVDZ8%h}URYaARSh%;trsojcOU8Mrj|X+_n%|DQLYIxe z5ks2^l=th-t}>dD6;*9-=J5px;i8AFpPDpL%2rB6d`lW!co*3&Hiotqe*f(>yp(5Y z6Fjpl+(9fZC?4pxitHr* zohu&s%lig>J$Y~}S{uaZoEOXYMcGSvS>$_h>jootx+Z$*CoAv~aZ)5cOb<9)5{<_N zYpAvn)-ks;gsqSny#>E~w*ukMCAij_cIF7KEi{BLa{>h+MxV@gJ${*R)8>ejkTux~ zG4pvV7`MI-oTj#E4;vwPcCuU_uBz?g4+{Su?E7{`F2r% zKQ{bgrg?Z3NZSMzt%FzK0C4x&++y3{Zgu;GnI)5Vs)~a~LGEWLoa18+yGb`BZC?*| z+RoIBbjCEX_=73K>wUVbY2d5<`D+N4b5I=uABN}O;iqTHPDE!`{%vqrl|in5q2Sgu zP=sHX8+S@mlZ3ISdoaSR9P)E<32^wfVc$bSWcwo9H0Z296t!G|aY)Z_DF-f@-#CZ^ zXon}i4hs39CapYqE(hIOW>li(adekq-^~Znx z6QHMq@9l={61?eL32sk0V=UT_>SQ%^0e5Jh$)VH%x&{>R^`inZ^6PRf>nIZ3y0N@t zn3W`A+l%9!C*n#>0QO_ZTn>W`^3#;`AR5J&2m99}iPZsz8(PO!%!6b&gUN{0b;rlh zHD(uJ0(r;MYW6B;c-JoZTkZD(^SZIU+$I6ySw=sdSM zd;Sfe32hHa2y!T1+KcQCJ=wQ5?Ypm`wXyP%JM3%UM6gqTvJS+1I}Gt^b+pd@jO?6S?MJGK zI#$ppIW72Lnq_~n?OB*((WzHbY#!6e8smcFxkea)hS+E0d&;;DGi|v6Vh0n(2sN;& zsJAg%75#Kz$B$`d*s@kTx=>5kl6f#6UJQmNAMQw-Aealyqig@l#<;9FN~WG$HZ=bq zosqfTdy`r&I={Z`8RpvH3H?Gwty~pHW07|-^(9JdxGoi~WV%*pINUNJJHJvV zKcS|^NL

      ;pc`Wg0I=nOKFSb!S}OnozS9h<*M8LiCmGMCP6``m{)t3!0UOdsAKQj z^{?rFXpQYWgh+_H#BT&uI1mtXMoAlAm;kG!ReKPBBlX%Ir?QY)S}{NEieOX-wI!YU zFESsu9Gd9{l@=4vVC+yw)v0VrF2Y#YnSXt+qJCQ`c&s%x(H$?xH=|qc&Odf4s-~iC zZ|DCmEjZka{)%oYwi>u~tvM))a*!`kCz2ioPN!qS7NrH=j zczHH<+SE=@xOPAf6VBfTzLpaqNZEe7IbLbr_|n)bc(y=5?vMm{H17@~!d;zV3&Iv? z=rx6z$`B=AWo1Vp^K939#1X?bKO5?OfKtJ~kMNsImJ1L`IK7&qR9ltzl72P|8H{*S zOPoTye|xZC%M^1IP{@YRElR1|!GTOIm+-d8UxstA$)J6^#%j^mz+K=SzMCtaEYK7X zz1^C|YKqOrwV(!qxDcsEHkL|==`}gSB%t_Q{|=)1V?pFzT=jCG$snM&$d6IrB#TnK^s3zCyJ9 zlBPw2@GO>@l0s<4O^)~XihvxYgt&Sg)GW`pJj|b5i+53Hizjf4I<>hT-;9AfLv~{k(BQXow$owFXc)yr$*0|9cAP!lz z_YZ5eyJXPYn{%kEmw=z0cwG0e`>Lz24X%?7D)+vrK$;ww0u^wKX@d5 z%ipc;{23LKHxfDs7Jj|3)Uo2QvWE`iJDVN^%I$DBkfEdtd?=sA#DC6lLLS8(c;&rQ z`6Z=i&oD ziA~_nU14~)G~ebzPm#=eMP+5_3==i)Px@;hSkn1y?jY0dH%ftp9>vV+SCQA zxFRM_d!wZZb!s`q%KfpPcss)r26k>(WpweS5oRc#LpPpJ|HSbl@}}T3c)Ae_9<^XR z;)S5&B;#(C%ElVI1xcZ~^TIy_@_Z<}MwLgSfv5Vj43X0pX@}at42*v(q|gCm{cJ{~ zoFs6jvFv5^h%lkIET@_zKTs**3RwTijwebrs>w_s3#bgo3eNM^)Z;gA{h7VaS109v zc-ZZ^>uk2mSvT+IVVX< z&>SIm0eRS>=qI&|y#y#OIE=ZVxLw%(KI#dkl3S*c8e5EcXy73#13uo}#>2!f2;tW$lB@$(v(^jW7^n14czEp%r4O(6@%_$HC@n7_P8)^|5LZ~>*I zOBoBZNfzA`--hj4IMt9MUu7wv&Ngsg$C%<)Vw8R(;W6l+!B*LA(8xl24wGs;i1Y{E z%D{cN{1_uzyr#8qS^6li3V`J;+$;QZJ@AXJkOZV*SZs<(R z1|OQ#Zz)XBF{5eWK8VR9&Gs-mOx8vEvU~XXvgkX|#npFxGQVutZI8$&peWa7vy(HL z2idFoc!d;RoT4nNu~cO3erI|^{sKDL7PS}GFp3^AAZOM5q7Z7Y=NQOP^A)I%_4l}+ zGVQcNu4v(4T>p#O%p7h&Ig7YLh-9){(oDTSmQ^y7qSkjEGxsxr=0*Bu`U&h|w+L~Y=Xt4ji%P|T_+L{He|*{}ME#?>+OjEehu51O z3rVSyDZOu{@Jp1rKAmxbU@ilA9c;{x3=s*e*QSoK!&C%~bg`3HeO9KQ%l-Au>87r% zZe?X4HtQ1uF?n*Ld0sP1Z8D?ZQ8Ae>xx^VB&Thg6Xkygz54M6Xq*5KfQLy3z)h+2o zxC_hUh2Hsoy^B^Qa@dk*SDhh?lsbuWp*GYXThr1@-uuc13j_H;Knohce99%WhGfs3Vnbl0UM)i_XoY}*aYQT*o*uMAyAAc9G zVh?h-BingRnu#DU<5UvWLv6HTW5PQGBFcrdABq@p&5}b{v zlrxq?T17f-vOaE#i}osTN39;isZS0w(Bh@NSPfO8jX9%hJp`{xQNjgUh*nc;EoSer zmNi$Mi&ZX(B;hd&GOchkmJSnY$Hldj#TgPQFRIkX8B?5Qv^ZV7_ndUE9V+G@VrI0n z5mH{}9RUSr`B1WQ7Kh&OoU|o$uW-|o=vM-WCjS;}#ePVHMl1k^TV2*$5Zu9Uh@n*} z4n<=}WTpxrUClQlnYcneb-clWGC(>{3t_CM;OVp~&k|zTVJnf{&S!2w?jhqo`&#De zGuLXy$)E6O%W4U<#)|5`6MQGoZi(z9TXF-OB)6Nq@wYay9{#s8RdigN0p*hz#qs3N zuh>#o&nH9V{$ap#$i^>$*Oq`@P`{;&q8P$~E#b2Ur)hW;iFqRLZhT=?qXN=7qohbU zuJ)>@`?qjoT5h?ohwXLZv2zWBvVjB+ysD83MVVz|E7F;m4-c}{GTng0<);-#awx(uk+|^&KV2yA;4V24uCJY+g< zjva3i1xvd=RhTs^pxah!Ks5w!lbU;j5~0$f`!z1AVm(-L|N9S;Nx3Ld5o;)%sC-!X z3R!tgfy}?9Z|uA01tM8l&gE_*(DQtJgwin|Wvf6gM1B)RM!5feAgIXrvvb@tGGmA+Np9srR}gg#lDN^gVzj?i8vZy(V?Ws`_>&9%GGeryC$@KwPHdts zj;2Vr`Xzv(NY6`*^zYjs%{y4=^o}U;!=vsZ)GiR*Eo#Pvlu}PUih?HIPzpkZBUHG7 za4UDZm`FhgOJtxfYT5f1H+n~)j)%wYs;l7co^I8udnZV**ut+>_EgSsHkhzR%X6VN z@rQANGqWY7v(!ySe;G)TC>;|QOERm0n~DZVqdG?MaFx;-KL;Uh&NiZB_K;aXnVfcs zUwokbEBJ9})C}*W@>7z4WWQxf>sNNtsVXgGY!a4QHKbKzznUy0AQ~IJZ(KbeEa?{7 zO_C!m=9ed#C{EMYfh8B*Ry`CTR#HF%L9USy`-YwwV;apO3=(o-H=t!r@^U{7iB9>0 z*};9NT?iAYV0vJ3T+ATIu23-FAWc$YwRTgr6((Mbd!QbCLitffBF%D48NBhQLIlR& z)AbsSuL)(Nr479XFcz~m$)o=di;*vhwsGIiB%_Z_1o@RAEU&04^WE%3y!fR2{ z&&N*;tY!MB*^B#(&Zq2LckyAx&QtbxrqyK&@YDz{Sfe+IEX+mZG@X8(-u z&jZ=R9QNQBzvaw*{gQwa8%#C2S)+udPHUsRINs96kDyM90T`T-$;2jdd#ySZs(2hC z+gNn(Ow##xF&~y(yt?Q{i`AN(Cvog(!At>hTR8pq`i6>Aj;~QHue24X_9n>SL9n*r zn@7V>2`Y0%;O2m3-I$Ek*th1^b-_Fs#PJ9Cb=puN>Z<4xq^*Bf_Mxr;CX!*su6&yfpH^X+nW}RnPLhZx|TwGD<6)FuKZz|wO zIJ-Kr{0L=)A)xlKziZ`?RWL@URUiq+O0+6$!uZ|*_GXqs>byHYG(%Ie(6jC{nWY-3n-PM}Bb5;s&=; zw>Ru3DM2S-locz!5Pf!WK3`_|h2kqkX&i%Xk-ISqVw+J%|C_@!CK|aAIionKT1Uqn z`0LD*M(9M>8j!2DE*G#{cxERLQJv^Hr*gv3Xt)hP!E@a*#UTZLJ2T3w| zuoIPi@_&))N7eG;Egxj{tIb{Y;$Kk;LE!P)pf|P=<)c3n^j4 zN7Tt6b3-piW_Zko?q|@G*aZ=kRGWI+}O6Y~O@daOnIm%jG z2o5p5lz0{)R?j`AAlCF|3@T|x_JwFrUf)HBrGKj?zu4n^!Q&4hF8X#Zs$2mkQjeR6L5zG(>wXz&) zMkvp`SHV~O&@wZ`7`;&Zuu0mQSDIce7maoG173HaA`&SyGje_u8;z8q*%1d>s9|a$ z*&UOqT5@T4alv@YK1yr8cX*Ti!`}dt0R$A2c54u`F;_hW1&f@v#zT{H zTr_{m8+)Noz`&*`n)J{kBhfJtNmNNX>tM0}y(3xcc#|B8y-`E)nU^y!=lbKZ@4P2z ztkT2UCs)|_RPFKV3U<-$@Tn4|eVEof}s{ zV4J<{g}u_F9AIasO)ngLnuoxSMvB(%rF4IN7latIpciWJPlQ$9{2xd!%;RB1jqXR` z)V=DId!AXo*Eg%}!=TNiYV9A5cQnyA_|d$9_o^}4>Ycj+SfF=1)yOv*NgNpYq^8om zprRjSu`>&FsTOJtOtU&n%P$EpD5n`kCB+oQX~9rhWCZbwQOeVpMa9kM2fO1D;83chhP0*b8WS8w@x^@kitdD zY?jrrGi~^TMN9&tntdyr2to3cr_g^xs~mLblq(Nc`E=_=#jD*STouc1a2B~aS-H^N zp&zW*=)>UFJ_G)2@l$;67!(s+wX`gPuCRpXD4}(VVw`fsi;AHVmwA=N8Od;cZrPur zc@z(FlJy!o+u$1%7bTCflAt;bGk_)~;xWT0t~e(#BXx<%8CrD0+V_y*rA~jG7dT5o zhB)X#F~QRc*C?!#lI0<0Rq>+pM)vn$fXPtrf$1ffkStF*Wl(@PM{x{vp5_HAIIk$? zn9&;Suy}R>Z%gl24b!I6qVr56yJ5)AIKvqy}*2PBilS zums2{;!PZ|1_qOHO4{GvyWKP|&h1U3I;u$qW(U`! zm}WIfW0ImWtI{mOEF=Yc{UW#Rc5r+7Pj>SOUedc2j4yK(NtmTH#fYSJ4LPb3r3}X? zifIz2l#)8a7ZsdJG<9Y>-0kHu1g3ig7nZV%!EW7i2S4ugQvbVYF3v8&8`-KupTJay zaZoE`;R#L7p9jMf`y}3krs3g?8YPT+@ay!~>CicfUxaM_1Cs#+6tm=CBLM`n?{;^y z3t=b$e@nwK6ouaf|3k@po2K372yF){dvYK+QGAQZ-BxYVkYslI_onSuI~cy@-gENh z+)J{>K~}*J7+cmVM?(Ge_K6t_1S*Ob==o=vU6 zxDssONy<{LbF_0#Q;aR&fn+xF4&}v7Z6tHPe>7XH8UJQmz)2j>umr~ha}2k@P!B|O zLJB@0_1;t+KyVBdNKnpV5)u68bzr2udZANBPFcF6_A{O0j@g3u;^02maxgYc6E$fU z!{;aXef9LxjT)A!-4zE^WP($>|NH{(iVTknf93|5t4%Kqh2Ln!tXuizZ%PpNN3UP$ zND1D}(L+E4J{j%jI4f`I!{d61iX(Pp{0-zM!F^7Qb(#AF)A zlQ2%#WKO3On#@MTGoa6X`8$eV0Fwa(6tj(EUw#mpPNvYCjAlK>z@FY%g-m6aWAK00000 z00000000X_li@)YlV)ow0_j)(Kl&qv$1X4*3J97&vWlz=Q+ExJG-+p zpTX|mZSd7q@al9}AYVA)8!{vq7&9yw7z!8|n7cKjo1LSTp`D!-gS(A&g{q=m1~;Zp zj`IiPHBUdxPY6qHXb8olxo*d>UY)pj}9YB@{_YUOqXxacsWMEdxukW z)=kVxgF|)`Zs6(H&`g8fOHg9cA>r4<6`QT`I9Bs{)rvR*Krh#fKR4#v$8W9;$vbz( zy#h$EwQ51D%9p;IV8<~nj?Cd~x6RTb%e3G;&&yz42Q?(CahDZ${(-m!mZ>}f;e5I7 zSQmQfj`+RBYq<+SOuJN==U&a*-oW|flCJune9`S%{~BOJy{5jrSqsI@BoFV2P-3;( z3En3wn3ZpS1G;6H*xu_fn%1r7!j*=F=ARLB+X;?1pW*JmcwqUTtzc&cV|s=Qz$NrT z(qgqIs5*CrN9#jIo-Z+z9F!25es{gKxw|c1#!+w86g?owq^X-erw-Cn;HRLW!5Gcvr5ZGh=DJ0i##li9XRoZJA^;8k_ zWwv6i%ozToUJd!T9*7?@2=5*$P|&r$YC)#f=(2!TRoJJk&;iYu{NE~9*53IlN?3-e z&*45>Z(y;8Lg15pXj*u@QjKEOgC^1~L=f?5)JeDvB}(@&RT){-w>Cg~=A%6Aw?GuW zQ`rU727oyDCpEA3jiE)_wj%%FD8q2F@o)4+{`3hny#Jy3OJ9F4?qd96PR1+kMzv;c z3SALfad{eE@ZXEzO}7+sGLZa%PzyP87JW)`)B_%Ymm3)U3QyM9gDmB9wiVaoyrnRr zgffNcHx~`Gf}xDB$raQjy~VZ7p>X#`tO0g+2Y}GZI!+RpKY8B>PPE9k18|q#AE=oj zeix=&|0a&;^!BLPmzW#%u7Oo>1&P4#Gxe6gKxxyB;Yl&}IKZCEKNzZ#EaJ@Q2QH&;YdHax})wSFe-qUl)ik zKk3_B{>4|(dO5q6f3RJ_%yPc=4fn5wVbn6JH>x*qyes>fL0W5SeO*sXj?e?E?S_|t z0JQRwUr1=cz?%5M!La|o$vBytm^eEz{_n&5pY3EO>ewwaVFq7No(YI{P;M0ZN|s}W zt68L%xezTxJ3*-JaMjBCsl8nAaKN3ZlnN(-4MuMqWIjBmKF#T}t&>rWnPemkp@hNG zCt%qv{CIjYVoyhv#{-tt>f-2kcfr!Nb$s60Hl*%yIl%@*gv*_3n2R%@{Y>#tRbFZW zzHZDa!CBgu&HJ5WPW}rM#pp9gh4#Nr#)o5dK^B>3H>*yxrp;xS2=x!f9o4gQFM&8-Z?pGV_{YGhD1!Z=)^!r0>v3g~;qEp>>J; zK)?||hO^`yv`m*Pq>9%6t*>D8QlhCh>IZcZv(h5Lc^S5LS<-L+`MqPM8V0(%k1>fM zwAS!x>VF?xRkr@(0SPk;69Felt(tECXiI~GtbK0&Su+6!x0*t-jZq#NnU4wN$O%-0 zIl4Y6t&Cj@cqeG;I%E@Nz36Pc89_;xMpnMVFp%3-lud6TT@gYLwySqnN&+L(OtpvT zbsBf7Mp{uOIPu4d5?}6<1N60SW8JqUAa@B2mJuBA19xfzQ!^q$cZmBoFGT-&f=9RO z|Lzd5M*RjL4eDkZ`#5s@K9plNg@1g4_s7Sl8h(5vW}QS+G&=<9i7mobr&n-$Gpix| zI=Ci8@Bsg)K{^v|*jOKCEwJ#3OEW$YsLYQqF&ZK*h#%gZ==>P8>wI%~xr@;Qo}Ml~ z?gW767d;>_2c)#2DxVT@r0A9`nJ|0Kp89%0h=e>i@ zD2b1;?D~%bx0egx_4@h!`6lP%YGeX;#C^ zUEh^&Czx1I@o6gPe~6egia0>Qyd8(&^Kuok6X$Ek;X`>+z7RDD74Xf@Ap;X-fF`{^ z^&g7#Bo*DOY}V=V5so~e%&mgs%OLOIHCU`g@D$8IEM19wey|Xa*^!08pW5~Iq(%K} z_D$56!`sMo79&kjKG0lvw_UI=TL(Y|KQ2DPxfA_tCrL+rqWZst4HGyA&CzTB5l__) zpFZl3Cr!a2n=pItgasbM3T*CYmEzXYB40N z#dPZG+raRv1M!=NaJ@dq?cuw)C!62iIkhF2h#A+_{{y3QddJGW-66=eqSiF7P&ekpp`}3PiY`HqEgNmS2EUw2xS^J#L?4Wx=O)l2gwR`*|L$xXA@laNzQaM9*H`Pv=4q>2aMT^G;3- z>9!sh?DubTIcR$?MKR(jklX$SKR*jMmg?j}8Cdl`97vP^M-t|(PXF|v6T`_BOKfr> z9IU#;UmqvPtxqmTXkuarR%`r^%B-MXIe6E%tSQ?-Z+P^uFIj?w)9%+ME3}sSylt9x zu?k$qvw$9&_m3hwTNsHAIP^W1%EvKQEmd05yect>%?Ps}5{;a13MuBpnF3I9hxk}= zOoY07(PoP?LUkpOkB(FXehFdce?kMVF2j)>!9Z@PYq#Y$$XvO-1GVd=p@By9=wPtz ztP-%!u{4+MB3x-C(bN3>rUiz%R^X$1kLU@YAz9RHn~0@u7SxV@lRH1eT-XU_~t z=9o3sU;B!Fh)v&de1f0Qs0i7}TNQ3JhFiZPpu51cesJfCly1!v^em04DMAlwVu5u4 z=G&+6k2+WlP~`(?Tn0{RqTTN9%zwe}t)b>UH1&(f?8Qq+;m7N#!0;!#YkdASuIuCz z5Qu-ONB*XE1Vk4&fi3DEh$M3f*eSFBPq}sPZ;DL5JSF5TU7}J^U8;|JQ**jhtlcTfryJ;v z072nbi{3^g|M=xR6t5Ufu@z||X0JW(4{6`!7|p*SCa^}wZ9Ggx@b_`-hR=hZ5sQH3 z)3hjRQLZO^#GJimW^1}guZSQhYmSwsNOrcc2)*+nDc0waei&cKjK zr3e_TQS2~Wl4|6=Gj`Tg>0#`MW(XMaA=8h%QZjKb?#S^^!v9O>ynm?N3D|ul7)OnC zWQE$AU^qxun<7c6M+X0djd-qAUTiyi$%5#;Rr5~ruwogp>`!>WfJMMs&1diJfcKB; zZ0e7QqRhJ2L?hkVf+pwzbQ-h3U|oitc1p^t#hqKE+tn}!-QC5^f?L1SfuAK=hU+`@^N`I|#F+_>WjSk{I1^K@O>KAJKR(s><49BB1jb^wD>vO6 z*#o3{f5JiTIw$ZwA<2pm$cLj*MBL51g;&5!zr-Uyg@F$$sLpL*|w*nM!y0NevGF z#$7Lbr?(s_dilJTnDXZ-I-7Fk29O7qu=auzblEM%O@tS_Ygxg6T3~3f8>avh&Xy;v z{W1@h>{Y`&rY|J-kg7X3EB-C=mi1nld3a-e@uvl+6->CT-H1C2!cJ*iw5dDyy94f5 z=V15FU|!r1C;Av%)bBvmVfcS=_RZssRP=Vs7=2SYW{nq0t|NJ!7T%DzEk9uHb#BVf zU!mUCMxq?ehlO}JXH-%Rs_#Wp5R9L}Qy;P#)C3cZPtCpB1jXykW)$XG_2+ZOGBRrL zTUx@Y5>tZnz`NR068md|J6$vY^?y=P(@UcDU-Ki$JwJq;w1AD_Q$|C%u(|?UR89*h z>Hk(pviITNo#sK18MvSAa$^=rMZ^Rp#`)t_f zBBj|v-b8%Hr&Kcdq23tmw3PT4G^7zbQa6#@?1Y3ELuAM|Mt=Rz6yh+1MtOh+Yv8-y z0TEW|C%!AD8GMeM!`q22UIT+nZ>J@~O8bA!cf7k}>CtKmulZ)7-xF-sV#38g9Xj@S zwHa4I3!JyaOg6kBD-9O)<=kF3(-ru0q~_bJSl>`B<0tJVq4h zE((|5*J>t|RM@T(_w~%Ak{(K3PvnFm6vd58d&gx$?aFw`k`asj>bK{T{7u;f9V0fV z!^^FwyGvvzERnq`c)GRjE7rt(v6~d7>-JQa$jkVH!iv0CX+Fd9h^8(oFe8>`KPjUC zP`>M=Z&ldWwX3iV+#Kyyi*R>iXqw_JdNQ4&X2~IA6;0{RD+RbuiVWeJ^Pv?$3Wv(U zsV0hfX~-aS-|aSzxuU{%TQ_2&BTm5Th)LC@)F+~9-{p3B2FBY@N<3a!YyMeM>mk2Z z9eMm%_C0yuQPrpK`hE)c_iA^f0E>VISV#*sv&xwXChX$Gkp2T9a2VQ}hJ0DqD_+%> zPOvu~6W>HA!Xb?}2e#VU!SbFeof)Je#eRB98FoU#NftyWHYvaAHhE(mDNqalk0TSm z)3&n1DWkBU@H}kkB(M@;Eue)KoY%GZ384FzJ*9e_K6=7W~!N+sO~4oBI_ zktBwM87pTnCgy#9qLt9fketuvywOil<~1C@AorsvLua*_P{{suDux2JV$Zw%0VZW9 zzz0+0=xw;!Jd24NAg==Fi>Q&{4-`Wl&uD z9#)Xt)`iP5`MzO8XQI(8X*5IuITQ}^l62H}O7H=_B>$Ks679d&2LrncA%_D;HQ)>0 zN3;f9;nS3kw?umUsvk@uPK-EE=jZr$s{_im4Sc+_k{>eQ20qPXp@l?jxgM;y1LIRwg^s zRl&R2fxhWkWf__<;}!mr@N?KV0#$TUJgae-Hd<=0BGa+SyJ}!Y=h7E*`zD(vEILZa z4Dyr9aVkUhi&`$_6*%>PS@XwMg@$_(2Sflzc0$n2!Cq7Hm`^p9T2K{y;~&`KHMD5ffC#qDLgz#}l$#23B@k`>VDL z;-2mlo39?N`}j1v=d29+LY9R3p!sOs8z2%h`Bw&xl`kW1yQ18k>q)P%(l6YZ-cx_t z6vE0t81I}eg_aj`D&c_(XUOG{Ve)#x%J65~07kpikGp9PZv-O0XO$)0AIp9Y$S-*x zmBxcDEqZWt&n3sWi&}o=;unhApFwZlD$q#f=eULhWzKM()@FdBqI2^fE&?Hi^=Q}# zL@D1+FN;Y_>@cDSb2hL;C=VFDv#kkbNjdmL4AoAR5ioCn3u zr#YNsYG?JGUh8FwUgc0aAKa!1ZC8a^Dbp^w@#pAb74-hRu}^-B6!^`-|MxPHtJ8e= z!Ze4T;@d>S->XkU%G&GSa_XG-p+da^T7|M`uIj2QcCVH=zUTCj)%+Q}{9#}v@O^{@ z#VrvQSYWo98fn#tC&NRTgyALS8HwsWP{klqu;9cVu;yHmB0|p8(_`T<%|&W@2{)+w zkSoIb^WvCrdAibS47<$XliL?GmGp-d0^goj!7L~r)P`cg{$fu16xa}@NaZjAV2D-9 z8RR>B*obgp8219TOz523(6-sfOEbPLJ%S=Twiy8HAxEO$Pfw}hl<9`i0pVHO-x-`| zzn9`REj>xDJX7+b#OiW%LZ_v5^CwEwWdz;?`KY%$$kpvr`Z0J%NKgjHt73+tivFx+ za^215dHqx0w*C3NIDff}NBdL%vx=#ZKZ};;E7%d}0=I_+ib3fP4ZHp)_pc&5wG(;q zQRXX;q3AJ^Lf+;!(>mLbN|EwXNwdQPva<|yX|N`f%6)6LNIQ^9p%c9MTEl#|Pq&WG zsjRq)@@Q`LsrL(kHv$zRF}~LGpf;-_m45@;b>J~W312n zqY&w_G=vNk-kQ*fenAO8pJv=VVu1L3C+4xEuScP zAhk|Hl*)F~j7ogEfupH1Y_gzH2_`z6oT4M?`(m3NJ853xpvQCDA)KqN>O?MeM>_Xp zSq7ZkhA2pyDY|it#*l5XrF#yX+HkN zVr4PsQxozOjJct%+b8>$V?rnrLjc&Ltmk+eI7GeaDtS7*fZ0zgiGVVL*{zp+mlq$_tC?<{e8#8eo5t7V635KLpn)OdW8SnDHX77KOUj4XOwNReR3m{#m8E?(r2Z&Hulry|riM!iFSZ|zU~Z&w%I9aYgdML&L&opg z`}pqTnSY*I*Q9RrENhLW?pLLQ%A~Q+;Ceg(<%D*t z)?#e7YiC^KUr}j7P(wzzZ}{dB9X$xk*4D_Y6lg%aD&>K8!XndzIRqsJLu ziu!goZBOfb^@h0nVpZe}LJr||?Go1Sc4M%Y-=6i=U3u)A@M(px&{0;T0gKjMNw9t_ zCJK(h?6mQFarWEb>WQExj2$xGbM*lW2QuJ(NSo)S+WxI&cLjTZUrTFL_BLWJW4c0b zrvfRXy{TQRKVh`AvIC$1p;C`0JuNMV)5bHtvu?|z26|SIP9_Zz<5X) zL}9kv;ZRI*-c0(s4dTS!B2f=>vP^Y%9W6>3waAgLGX0)D!@Y;{m`@$NV$Q!GuEXdC z5e3Xs@c7M#6al9TX2nrLXSMbHqoN<0o!jKd_0tuE+FoDyvBHM1|6?psi6hv9qxi}Q zmvjF3(zWB$ubbi-iLJhwpcQFP|4ATQ`6Lc%hH%wL?kiT)yrV@1*tHyjhph~t?5?G% zBauwMllvI6)Tgk={j^q%$KsKwVLBP zc|Zr6h{}CYsyvWTnx!+>k9!18Qdweq>K(Dm?0D_MV6{Eeq;09Nrvl0dO%v4Q8x{RJ zX<9prQzGp@1*<|FWxuup|ERz?^eNc$Iaz*c8+Fh6!blF7<}8@TY+B4wW6{^jru40n zb9p|@3FmJ6innL@nyW$fgOef%h|>ybY{1)c&0jHHi_<89h)k!Yl-z~myvg*wy_l^x zgxh5~_GcY(I$t{&7=I(Jw#*Sp`u1}j(WQRA5UxZc`FU1$i)TRY9nsDVi3U15-oz^M zt9uGkC#{1She*>)42=apK>~$h?cdR}zPofrJZA;=@t#2U2U_m!m)SU$N9p6BY@oh- z)5tF-+0vzNh24`z0NU+Z`SPbvGOyFi0BcH9Z4H_ALk$fj8Re~awgl>E>lOZDMnV2M^-jj!QHzozM{ISSMG?eI+14ID@*BH<2#KFduujB z$gx^4G;+)J@lkG5m&AAZ8raOr1B*@52#9uB!Hquqkc90D<^pS_R5<&txZBTZF^}bv zLS#XXo4%M0@ol!kZ5rGrb}CXbU6&lk)W+hs_Wku_?~@~u=i#l4%mXEQh7`T4$Pz1| zn67SYd$xtXCwo=m;Y}-xUwKzf2?*=;zMbI>uFAd6?Fst6%nU{f+=}Oh01Y{NXVTHl z-aDzZP1&J!Zt$@2{%+w?DC(iZ8x!ZiA%)rM!A$vt5!WoCXWi*P_YZH1E!$hT?5K`- zaN7;+P4tC$h62(0++n1EUPhn5C!9EY4ie;yrK(O-Jmpp7)o)V}t{ITQ1H6hMr`BY9 z61BpY@rs`V_s~&7Ycv;uJM)^I06iqnMD~Bf=$x+mMXSE&XbZzWB{@dAJNb`*40^RQz~Ag- z(|-7^C49;K+;tO;`t*n^g(&RdB)2Z-UPWriy3K{>(~URSusylpU0t;faD9N#CTxKTeD*Dd|6NblPiM-t7-S%mo729 zmCy8*{WF~O_z|+fSB#*&SWDri`*O43Lem9V)3>2>zHk{!x6?+P;#wQ_XLs2O(oQ7V zEJL(g8^8hn0M|B~%oqiwqx7O4-wO40nT?N@R)2q+>*OLMH7lJRI^r*YleODb!fbYQn95H`_DHFlx)&aPjM z3YE~AtM|R+oatgqK2vObo*FwNoa>hA_Y83wKkJ4qIT{|wxs01D=M&{l; z19sGHkP*V4mQIZYL_ri1n;i~N-)+@B5=K=W)DOb$A(gt$#>Yj2k~4v`;F-Hua9&bq zq=H77)g>QM_^YG85%D*68(bfs(XqkDkX?Z0%T{&Yg}CvQttPF8BUD4wh%8Eeq8e*9 z2c6j}{b?8xQvqq&>zuU?74QW95Jkk~(E4Sy-A@6})}V2J$2O~%6hu{=7X5X^S{a=g zFGIg|$(^6Oa0&WEO=adVC9yrVPY14IQv+v(Y5%Q-Wn~d+<%}6miPg3-#Zu$P_F2u> zZIlMPZ*Hc_=2Df`*8V&;zXP&`|A`^(+LG}TCWqdrT0O4GX!dE>paAF97f4@!FTWh; zVc;b%VqW8Q__qcW_?y)W_FgtJ(Q%eyFT=tX<{GNREVqiUrsbpN+*>gD;Zx*n9?V2| zLT>Nl(e2aJOj6a6YS11|7g=Bkd2P(7iRXvZ;!=dP zb9@z_bav-NNlKt8R_@2pywvK0gB?bLw{v;;)Ka~X8iiu&UA8^BeBS6S$To5r?VE(i2Wsf;k`ZN^&lexj2LFJUJ(rWG+jvaQfL*<1 zPxJOAkyQk}w>R=~Th7yDNoEvMq66Bfvwg;oy3DG!T}*XWH}o6hv&uUp#a62G|s$xK`8E4P?Y*E1@d zo6p>%-O_$CY6wtrKWsesA27Rg?rxZ*NcZcpNerhwe6ES^8e3>WxS9*W?=$uI>M)Mt z2c)PTnHtLon;4B*eS4Clm6)w%^(k|^w&@!*KHz#`P%4$0*f@%$P3ey3yZ}$o{&*7q zOvY3s1v%vMs@Fp4j(tmHUIVSAHmyfJ&fxcDCm?`@vSgkeM$fz(k*i&;J8YN+J-r)F zhPH`${-|kxHw@}TU(7O12&KM+zIDZ#l~3Q0X>Xc`jwEA!n3?{~@a5nr1#zH+PZga7 z&uk6y6VZfCX{g^!r^&B8SN{bQ?IbAS-{8<9bw5BgKjo zzcg~wXF+9zpv` ze8xmeupIRr5*E=X_}=0-B+3I%FM)$oPfXvMVRZ_FrEkUirk}+GfS8GT)1r89$xqcJRWU)Jk zQ}U~|jfC-xyw#rnCF^G3r7ybs$5#1CRtm> zMA^_gOoTPmrjxX=u4dx9jLGga^CMAy?!P_C=D+>3orEeUlr^FeT7Ks^iEP_5qfBAi z(xj1CT3jORf&}sYB?I1!-WvI*3fwscQ6QIvKWuKHPd`Pl25Z{;Q*0HyE2)9o#NlfBm$Teo9XOb$uVsnDw<0>oWO4Maszf z)cOn*sPTA+hSKvqu*jBU%wz6sAiqOVt zr1|juz3+u}>^%56@)=XxlRC=Qy1DXBt$LNQmz8b6$v7mT{dO7wUufSxnOx+AtBeeC zAY8spk@{Mru$$0~t7naJc!VQU>OTRV=Kh2m*#lg%& z{P)jfhitm5zJp6Djm=N6w1Mg(<@_uwVet7H_j1MYSpTp3I#QQd;SdwW4%)6UvNQfA ze8O+#2a9FvZ&qtN4Dqn|YZKj0S!3-Xfh^RnBbn@Pmr1LT2jt4wcsdaU!hc!C7CZv5 z8cJsz@qN^;;O%m)upT6z|5+-osWVHn_3vE-K z2o@tb=6SS@j8gL!in*h#RKzwq0Pz6!d3)l2Wq}>$_5$l)QYZ~?X5?pe-@6EAe{kvx z8^T1s?tKjplIh9;K4La}UUu$Jh@d;)uRp+QKe%ua;76Q1;qbA*z%aEE$VBOY)_Rwk zq|r3`CBmGYD6`WVwgYl6iMZ-ML@~=JqnLe*Yq}TX7Z*-R#Y33ARVmSeDRZzll(vtX zMjelI4ICGekaZZHMLCcI~an@*nTLM2rG$b`dBSttbm7%MBMBE=22{1t`}J z8dxvwC+F9#Wh*To8oygQ>7~C3dpoW*j0=?TxT#k*jJv_-fx^R0@qGYLc}AT~Rij0{ zgU8}whY9HCYD9Sp$1r$`F^B#RhuBK9ssG70raEWY(Dm1<9 zgN|taBjOI_MPN!CQ6PUKWqxm!W1-m!d7*83Q(ZPIF?c?*JUr6P*clT7anc4+P3=$A1JA(x(dP+V0fzzcs z8EGL&TpQ2#2m9OCfbVrp&MdG0f^);Ewl1BO20W*@%d_ctO-rHa^;H)CDnNic16rs!9X?8rb^f{>jJSG?233M04aY|u^F`ou`Dvx}m_0(|XG_7Td14kbJ1#?o=_{-<(Mch>SNtAr?`qLNWR$O36LL$%kX2R>^$sm#u<=r=Guad z0o+r?x&c|sNr%wGd1L+xvIuC}Zorwp)o$QQAHPv-h9y|uWreR9@zHk&Zu(bNA1-(7 zA1N6of-|FNdTQ`AHppO|@Rj zMoP#I7mEnJ5)60G*Gr<3;}*Xj>+oB;q%_z}gGuUv5?us?#h<~8J7JP$Ug%MN;Xh-_ z>pW=JmQRUaV7~kWdG2zsyZs`kYO5uyn%OTlx6UX*#oyl~?BshiR`I_XDKT4cg&li8 zuU0n;tdj+n=fY8F@w;l3Pq9PgOr~&y32YR4oLp&G7JUboe>h^#?mL-0S!u=xdGE)f z6&+h6wx1=i*JT&Id-_JAA(LG{ggdMKIcQ`ISb}n#(K!A@u*yKBsxQ?)38rZg`uWXe zW_Y(^I`zxhO%%OVe=_PU(@7WIuztMp3awyUDyjjbk_Cc>tKJs>;)L0axX5FbkDVew zAWf_ndud(+F9P$G%HxduwUi^0Q_iw|E#mic!kK@iLO0weZj<)%0o$st#y6(}0sWL> ziM(vk3POq}wcL9Ie&1d2zmjGmpCUGxWyh|wy>MY09D!eN7sc$&( z&bk8d53GM%uY=R=n(M*cFS=RlI+ZRe|LSfV{(C_ZXZUX0TB!%v!Urqu=8(ck9Zs{; zzFv9_sdsfJ`tGBETO9F5tG-3Nm>TjFb+0e7koG{zra1RzRwl5qkds5xqS}zb(D+Fi z(HoQ>iU`-HU+TzvN!wWEZ~kEHz>~lV8LWubq>y<>e^aoR6c!G+>m$S&xL`3h zPSzy2CZ;gYUhwPiQ0P&N3jG<|H*;^j2gS29tij;%1fo{{p0H_z2`(}T(yvc;(TFAD z=u~=XnG}s1ljhlq!r(`Sq2M+}|jL zLr=%Z7L|Sk-ESTy;)I`>aBh3*+eQ+Qn3P=3_R?a3TA$5R$S;Se6R^f?+4^fJwfiV@n|$z29Nwq~^2MTb@NuqD>9Mfe5{cx7avfxHsYmfmh^MN{T1GiF!Sh*UzLT76d3z0Irk z3}-&h%G8tu?0c1X4v9Lf(u>bIpxEHqN%oi7WN~L8V z*m{eKgmp`cG!kr4ZQbhNp6@cA=k(8sLBfOtyDscD&@4c1~FmXp>C7H zlp&|S&IyMQZWHZ&YRv;2av};6C4;TgR9f?(NvCb=faFjP*Yxbt;M-Yk9cd^P!;cL_ zR*XzP_v$r`YiavuYNptI?j)cFHZ-hFI8ln%@zxxcCXT<79-9YPRH#YhQ|f~IK+MZ+ z`X_A2dyM};Z^?d5F?ige5KYMY;s2(qByQpHr=}WKNi+1`#=YoRfU9iVzQ_6)aN)t|@JSeMUW47vF zvJEx#yBHE6xe0jZf{)6962vLi;8qwxi`H|ugnvcV7whyUG~Ojl>LpU3JaBp)gFK1Q zEdL^qp%tHC8`IVgcA<7E5ui}bp9QXP7!HHYX;V5@M{uj1sm+r?DMa3U`MRmF$dPb# zWgy;5k(#ZoXPEMkpLDl{;hSOJsxro#H(T>3vUVCMW{fk;oPsAoZRoG9vBhGlkM|uA zCKLBXXD*7X(2Wdlp^v%}6Cn+Vw{>QbJ*~#UKvXWeVPV-FuCHbiDI>m@qR^Qu6EyYI zrPgW$by|SDC>X{_Y&A4wb{u*-n3M5$SMfa3sOb|M6$gV($3Rj?lbUbJkIz+VkpJ*# zL@R*(=Y6pkm_InX>Qu&+)?{MhA78ZM`|`IpxE%5O<65x4iodZ!R7wlpWA*EqL9;_r z*}g2$3-Pa(#BfzIGnOufS}LLPpHQbnzG4MNDNl9hmlmL3lMp$03?ZbM)Mtir(&2bi zPKhJh&;WdsEFDdAJ(BAmb=A`y&HNrxX}u z8-P<`!y@@1YR$u$AYyGru$m($=f4R!1{L_o(%C=5n3<~Tkt9}eo-#Qsj>rg#mz=NM z)x|OGO7h-Cn+3)&#i8;4kRH_j#rgABzvg|LJ;Z&PDx3(Ku6xR?a}0S!^4&QeO_?JK zdfdpK3mYZ%`(rMg3RN&J@gGuZ#UtzFoa@2R#)xNo$DX3;C&ZsSo95We&jpqM01-Id z5PCgFF|E^}hVw=L&pJ)q%^TUW4--bXbp*QjNNnzt#&(~CFCV0#LiO}3>TdjRbnW25 zF4a>f4g?QES`({Db(=NgFU5&6AF6VPevg@3ZK)Q|&LiGAVNNbbXH6RkbO zB{tvH`^8z(gOTJ+k`{!!vY0!7+k_#c`j58{YZ~4#MefC2eIvRW_81PSk$SL%kFC&2 zv%yFMo`i@-Fftc-jKG6no-nnLE=;yP3uzc)md`Tm6L@J4smx|)5$u@-v2#aAtgoiV zoGG_0l}416&yt=IUvj6%jxtj)7_p3>RlZq7EmU8O^aCX+!@!^0^<_VRX2$)|LI`4Q zPbuC!kQcp7L^9HHosLC<6`R#bcvFB&8fIM0Lr#uM2f-yQi9fMc?nyP5%xEBVS0OyP zN_4Y9V&Cx#bG?H*tryQPB6Zxgdm(8W&$H&QSEPWc+is_}O!LOyAGJQkh@7X$()swCI9Qx|SC!x^Kd#7YfXC?t&3a zlalY&NGmCu#ZWAp)Yeox#rHkJdg@c7y0C_=U<#yJY>cIU{X}*6Hy@k&suN$xxj2TU zL(wQh<1R5FEcxh@2=}}42EO@)=;KcUu`(BUQi6tZB{*d*tcoN!z&If0ST%nnMB37` zjx0}>%de0xNrIuj7FH;D$s_0t6ctQYZ^V&s2BlSn?(O2l+7#PO9G*NGQp?E-bzZN zFAz!JROmzGtgf+|?yzy6)q9n=%s8H_)n+XN;{%(*jGiP@zUEsM-&d1eiZ-) zn)ORlOo8=eC*_AXt_rc-g{ph0v`ZR@1A)Pd@J&y8hVN#L-u*F!^m-8tE5QZy9C(LB z4D0w{SYMK6tQEVwFUn*~m=VW1v7UaGr@=p@H`Fb%k_U-O(>!hJ71ZL;+6~jcWT|T~ z^Jt8cptF1jJegciQ=fZkwyY77!a45TbJ3W~;VR}5Dlg`>s4YfnPHBdVONDZLsW-QA_n4H-({$0&UDk-(2UK0p4>@_mn^^1J5Z&RiQd znsKPdf`PtNlN5z`+v?W|el7jXUc6!c_I|h@csgi$K}2ncQhBHwM$3wO^;6`G`i}2` zRTjM8fV96za*QIsGIz-TU}gjs;J*zYs=o8+N%Ieaj?`}NcHf@_%5L`)?DXo<^jS@z zP~3G&WC{6(@nd;w=T+eNl&M~RU9ual+?$sDiR|8{=JXNT4b>&7!5YA*Bi|m-4kowMwE7FredZ_Wx)>etINI= znRC7s(vYfF3c?~iZ*4-zAGzC1$482L<3VP#QzC^rwW&_TZ!8yRRqWV}0pvJ*i(&ux zp8(0b0!xppWR#lcxqXo5RTWhb@umBj<6Rzppss*yc00k!_ojO)DiP70pv3AevSZ`e z=DcrYth}Zo53J_gT3e1Ii@Lt!S!*rL|LYVtut zM+zuci6%(tu>r$)W_j{mUBy)Cx07UKQ_N^#DpK4h`hP##MYK+g6Y#^^6-BPnQdk)e zu6GP@10)P8W-STg5%6Jz?>u9VeF)yYSMqofD|Re53)Bn=_~Gz;+Mb_EWCkz9(Yh>5 z7PiKlJ+Qe)mwJ~ut;yW zvKMbOk~A{nQToz6qmmzFu`>&F$pLB&Otaei<(Dk4X--Ru8j2}Oi<+ULE(yw8MrmH8 zc|x+UVW9W~m%CAaa-M~=VK7KLkNoM6S79Tz>#!uNE@3nboOXP)f9cORJN+4Y3?1G< zD};eibJ%VmKMt=h`QGVHj!u~1`}1d!ZCNwg-~@F|6QeYtF)C@7AW}DN)3TV7D*hTq zSC>{BcjLGd3n^Zd9L=&ijAn>`u!vb?WWO7@<1t9~d1|eH2I-(fr(9LMs{E}N6|Z*d zcvUaE(OKlx$;!1J_mi?gulLHWLk9e##ZU2L$C&R}va~FLuCOexP)54~rMSpZUbhT2 zxT)GQElG*HbIbnZ{R6)jUe;^q(FWh3xNh>KYzXR#xCCg{pgd(5rEQ**l##B%_@z#NT-CVDVuo_ig;Ik33U?@OvxZeMW^Mhf^IA-IU;uBZ_rTz$=K>H?Rz*%3 z6d;@JhfX@XxhOq)^jAyE5cGMEyw}5-i=&69Cv2}gUL84>~HVg z&d-Z;dyAw?I#Pn!!SyJmWrvEC6sRfNqD(N0NzGor$jz`(ZYTaJuRp;{dbfh<%N%tU zmjx{_B1P9hjukR^+6z4x4cJ@=-`@=%rD4`@@=GDT4kA`c|5MIpB-dd*k<9C^kvDOg!cNYN1t zT4uL530IWY8lH8nK-&V0=Sb2}u2QtKR#A)%-$BJp;2hG4n_5@Qx_?q{v10t2Z2^-o zyu%e(CYWWo1^Q|rq7zc^0jc)7>;QseD4_yr4UU2c|9LIw%3QtBDI;f9*rReYo#Kw! zg7@O!KA2)KHcb;WaTmkokMR5Y>7^UhFJ!wb4k$|mr)K~81>9x{9vAM+H85N2UKk3u z(UKXvcFW%sAnuP&zev&(yqlwkfbd*0+Rt%T-r|SHe1$R+Ml(N(d@{*NOv#K+=O1mB zi~DWTzEPbX{+CE5emM2XA`b}-V>(%kh-W~b`|@{WzW|c~1QfGkW?%*hqC%4w4g&xH zF_X(|d- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Add checkboxes to the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; + await context.sync(); + }); +'Excel.CellControlType:enum': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Add checkboxes to the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; + await context.sync(); + }); 'Excel.CellPropertiesFill#color:member': - >- // Link to full sample: @@ -1669,6 +1709,26 @@ chart.dataLabels.format.font.color = "black"; chart.title.text = "Bicycle Parts Quarterly Sales"; + await context.sync(); + }); +'Excel.CheckboxCellControl:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Add checkboxes to the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; await context.sync(); }); 'Excel.ClearApplyTo:enum': @@ -1732,7 +1792,7 @@ 'Excel.Comment#content:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-basics.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml await Excel.run(async (context) => { @@ -1744,7 +1804,7 @@ 'Excel.Comment#delete:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-basics.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml await Excel.run(async (context) => { @@ -1754,7 +1814,7 @@ 'Excel.Comment#load:member(2)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-basics.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml await Excel.run(async (context) => { @@ -1768,7 +1828,7 @@ 'Excel.Comment#resolved:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-resolution.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-resolution.yaml await Excel.run(async (context) => { @@ -1779,7 +1839,7 @@ 'Excel.CommentCollection#add:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-basics.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml await Excel.run(async (context) => { @@ -1907,7 +1967,7 @@ 'Excel.CommentReply#content:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-replies.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml await Excel.run(async (context) => { @@ -1925,7 +1985,7 @@ 'Excel.CommentReply#delete:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-replies.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml await Excel.run(async (context) => { @@ -1938,7 +1998,7 @@ 'Excel.CommentReplyCollection#add:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-replies.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml await Excel.run(async (context) => { @@ -1951,7 +2011,7 @@ 'Excel.CommentRichContent#mentions:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-mentions.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml await Excel.run(async (context) => { @@ -2688,7 +2748,7 @@ 'Excel.ContentType:enum': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-mentions.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml await Excel.run(async (context) => { @@ -4145,6 +4205,158 @@ await context.sync(); }); +'Excel.Note:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function changes the height and width of the first note. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItemAt(0); + note.height = 200; + note.width = 400; + await context.sync(); + }); +'Excel.Note#content:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function changes the content in the first note. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItemAt(0); + note.content = "Changing the content of the first note."; + await context.sync(); + }); +'Excel.Note#height:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function changes the height and width of the first note. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItemAt(0); + note.height = 200; + note.width = 400; + await context.sync(); + }); +'Excel.Note#visible:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function sets the note on cell A1 to visible. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const firstNote = sheet.notes.getItem("A1"); + + firstNote.load(); + await context.sync(); + + firstNote.visible = true; + }); +'Excel.Note#width:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function changes the height and width of the first note. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItemAt(0); + note.height = 200; + note.width = 400; + await context.sync(); + }); +'Excel.Note#delete:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function deletes the note from cell A2. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItem("A2"); + note.delete(); + + await context.sync(); + }); +'Excel.NoteCollection:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function adds a note to the selected cell. + + await Excel.run(async (context) => { + const selectedRange = context.workbook.getSelectedRange(); + + // Note that an InvalidArgument error is thrown if multiple cells are selected. + context.workbook.notes.add(selectedRange, "The first note."); + await context.sync(); + }); +'Excel.NoteCollection#add:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function adds a note to the selected cell. + + await Excel.run(async (context) => { + const selectedRange = context.workbook.getSelectedRange(); + + // Note that an InvalidArgument error is thrown if multiple cells are selected. + context.workbook.notes.add(selectedRange, "The first note."); + await context.sync(); + }); +'Excel.NoteCollection#getItem:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function sets the note on cell A1 to visible. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const firstNote = sheet.notes.getItem("A1"); + + firstNote.load(); + await context.sync(); + + firstNote.visible = true; + }); +'Excel.NoteCollection#getItemAt:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml + + + // This function changes the content in the first note. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Notes"); + const note = sheet.notes.getItemAt(0); + note.content = "Changing the content of the first note."; + await context.sync(); + }); 'Excel.NumberFormatInfo#numberDecimalSeparator:member': - >- // Link to full sample: @@ -4904,6 +5116,24 @@ sumCell.format.autofitColumns(); await context.sync(); }); +'Excel.Range#clearOrResetContents:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Remove all content from the Analysis column. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Clear all the data from the second column. + range.clearOrResetContents(); + await context.sync(); + }); 'Excel.Range#copyFrom:member(1)': - >- // Link to full sample: @@ -4920,6 +5150,26 @@ sheet.getRange("G2").copyFrom("A1:E1", Excel.RangeCopyType.formulas); await context.sync(); }); +'Excel.Range#control:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Add checkboxes to the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; + await context.sync(); + }); 'Excel.Range#find:member(1)': - >- // Link to full sample: @@ -5669,6 +5919,21 @@ sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byColumns); await context.sync(); }); +'Excel.Range#values:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Change the value of the checkbox in B3. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const range = sheet.getRange("B3"); + + range.values = [["TRUE"]]; + await context.sync(); + }); 'Excel.Range#valuesAsJson:member': - >- // Link to full sample: @@ -6907,6 +7172,46 @@ console.log("Worksheet Id : " + worksheet.name); }); } +'Excel.TableCollection:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Add checkboxes to the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; + await context.sync(); + }); +'Excel.TableCollection#getItem:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Remove checkboxes from the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the checkboxes back to boolean values. + range.control = { + type: Excel.CellControlType.empty + }; + await context.sync(); + }); 'Excel.TableCollection#onChanged:member': - >- // Link to full sample: @@ -6920,6 +7225,64 @@ await context.sync(); console.log("A handler has been registered for the table collection onChanged event"); }); +'Excel.TableColumn#getDataBodyRange:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Add checkboxes to the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; + await context.sync(); + }); +'Excel.TableColumnCollection:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Add checkboxes to the table. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Change the boolean values to checkboxes. + range.control = { + type: Excel.CellControlType.checkbox + }; + await context.sync(); + }); +'Excel.TableColumnCollection#getItem:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + + + // Remove all content from the Analysis column. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Get the second column in the table, without the header. + const range = sheet.tables.getItem("FruitTable").columns.getItem("Analysis").getDataBodyRange(); + + // Clear all the data from the second column. + range.clearOrResetContents(); + await context.sync(); + }); 'Excel.TableSelectionChangedEventArgs#address:member': - >- // Link to full sample: diff --git a/view-prod/excel.json b/view-prod/excel.json index 3ff4c77a9..b267d8b88 100644 --- a/view-prod/excel.json +++ b/view-prod/excel.json @@ -17,10 +17,11 @@ "excel-chart-title-format": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-title-format.yaml", "excel-chart-data-source": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml", "excel-chart-trendlines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-trendlines.yaml", - "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-basics.yaml", - "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-mentions.yaml", - "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-replies.yaml", - "excel-comment-resolution": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comment/comment-resolution.yaml", + "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml", + "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml", + "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml", + "excel-comment-resolution": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-resolution.yaml", + "excel-note-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml", "excel-range-conditional-formatting-basic": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml", "excel-range-conditional-formatting-advanced": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml", "excel-custom-functions-basic": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/basic-function.yaml", @@ -92,6 +93,7 @@ "excel-range-get-range-edge": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-get-range-edge.yaml", "excel-direct-dependents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-direct-dependents.yaml", "excel-range-dependents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-dependents.yaml", + "excel-cell-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml", "excel-shape-create-and-delete": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml", "excel-shape-images": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml", "excel-shape-lines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml", diff --git a/view/excel.json b/view/excel.json index 7f9d59fff..c805307dd 100644 --- a/view/excel.json +++ b/view/excel.json @@ -17,10 +17,11 @@ "excel-chart-title-format": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-title-format.yaml", "excel-chart-data-source": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-data-source.yaml", "excel-chart-trendlines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-trendlines.yaml", - "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-basics.yaml", - "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-mentions.yaml", - "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-replies.yaml", - "excel-comment-resolution": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comment/comment-resolution.yaml", + "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-basics.yaml", + "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-mentions.yaml", + "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-replies.yaml", + "excel-comment-resolution": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-resolution.yaml", + "excel-note-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/excel-note-basics.yaml", "excel-range-conditional-formatting-basic": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml", "excel-range-conditional-formatting-advanced": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml", "excel-custom-functions-basic": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/16-custom-functions/basic-function.yaml", @@ -92,6 +93,7 @@ "excel-range-get-range-edge": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/42-range/range-get-range-edge.yaml", "excel-direct-dependents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/42-range/range-direct-dependents.yaml", "excel-range-dependents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/42-range/range-dependents.yaml", + "excel-cell-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/42-range/range-cell-control.yaml", "excel-shape-create-and-delete": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-create-and-delete.yaml", "excel-shape-images": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-images.yaml", "excel-shape-lines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-lines.yaml", From e24211a9e580c6a7af46897ca5e2e99977f75a98 Mon Sep 17 00:00:00 2001 From: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> Date: Wed, 23 Apr 2025 14:58:56 -0700 Subject: [PATCH 26/71] Remapping cell control from a class to a type (#975) --- snippet-extractor-metadata/excel.xlsx | Bin 28977 -> 28959 bytes snippet-extractor-output/snippets.yaml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/snippet-extractor-metadata/excel.xlsx b/snippet-extractor-metadata/excel.xlsx index 5c53016876e55a61f6216acce660344fec2b5531..65ff1a38bd7faa8505d474d5a72fba611935f418 100644 GIT binary patch delta 13107 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 k- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml From 4011ea049ad81e04de005154dc34580bf39b01e7 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 23 Apr 2025 15:48:23 -0700 Subject: [PATCH 27/71] [Word] Add snippets for APIs re pages, panes, windows (#974) * [Word] Add snippets for APIs re pages, panes, windows * Note some types * Apply suggestions from code review Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> * Updates based on feedback * remove jquery * map objects --------- Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> --- playlists-prod/word.yaml | 9 + playlists/word.yaml | 9 + samples/word/35-ranges/get-pages.yaml | 249 +++++++++++++++ snippet-extractor-metadata/word.xlsx | Bin 27526 -> 28077 bytes snippet-extractor-output/snippets.yaml | 420 +++++++++++++++++++++++++ view-prod/word.json | 1 + view/word.json | 1 + 7 files changed, 689 insertions(+) create mode 100644 samples/word/35-ranges/get-pages.yaml diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index 0a4b1d017..315c9303d 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -337,6 +337,15 @@ group: Ranges api_set: WordApi: '1.3' +- id: word-ranges-get-pages + name: 'Work with pages, panes, and windows' + fileName: get-pages.yaml + description: 'Shows how to work with pages, panes, and windows.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + group: Ranges + api_set: + WordApiDesktop: '1.2' - id: word-tables-table-cell-access name: Create and access a table fileName: table-cell-access.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index a934f0e69..be093b51c 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -337,6 +337,15 @@ group: Ranges api_set: WordApi: '1.3' +- id: word-ranges-get-pages + name: 'Work with pages, panes, and windows' + fileName: get-pages.yaml + description: 'Shows how to work with pages, panes, and windows.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/35-ranges/get-pages.yaml + group: Ranges + api_set: + WordApiDesktop: '1.2' - id: word-tables-table-cell-access name: Create and access a table fileName: table-cell-access.yaml diff --git a/samples/word/35-ranges/get-pages.yaml b/samples/word/35-ranges/get-pages.yaml new file mode 100644 index 000000000..3533307d5 --- /dev/null +++ b/samples/word/35-ranges/get-pages.yaml @@ -0,0 +1,249 @@ +order: 4 +id: word-ranges-get-pages +name: 'Work with pages, panes, and windows' +description: 'Shows how to work with pages, panes, and windows.' +author: yilin4 +host: WORD +api_set: + WordApiDesktop: '1.2' +script: + content: | + document.getElementById("get-pages-selected-range").addEventListener("click", () => tryCatch(getPagesOfSelectedRange)); + document.getElementById("get-pages-third-paragraph").addEventListener("click", () => tryCatch(getPagesOfThirdParagraph)); + document.getElementById("get-pages-enclosing-viewport").addEventListener("click", () => tryCatch(getPagesEnclosingViewport)); + document.getElementById("get-all-pages").addEventListener("click", () => tryCatch(getAllPages)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + async function getPagesOfSelectedRange() { + await Word.run(async (context) => { + // Gets pages of the selection. + const pages: Word.PageCollection = context.document.getSelection().pages; + pages.load(); + await context.sync(); + + // Log info for pages included in selection. + console.log(pages); + const pagesIndexes = []; + const pagesText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const range = page.getRange(); + range.load('text'); + pagesText.push(range); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Index info for page ${i + 1} in the selection: ${pagesIndexes[i].index}`); + console.log("Text of that page in the selection:", pagesText[i].text); + } + }); + } + + async function getPagesOfThirdParagraph() { + await Word.run(async (context) => { + // Gets the pages that contain the third paragraph. + const paragraphs: Word.ParagraphCollection = context.document.body.paragraphs; + paragraphs.load(); + await context.sync(); + + const paraThree = paragraphs.items[2]; + const rangeOfParagraph = paraThree.getRange(); + const pages: Word.PageCollection = rangeOfParagraph.pages; + pages.load(); + await context.sync(); + + // Log info for pages in range. + console.log(pages); + const pagesIndexes = []; + const pagesText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const range = page.getRange(); + range.load('text'); + pagesText.push(range); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Index of page ${i + 1} that contains the third paragraph: ${pagesIndexes[i].index}`); + console.log("Text of that page:", pagesText[i].text); + } + }); + } + + async function getPagesEnclosingViewport() { + await Word.run(async (context) => { + // Gets the pages enclosing the viewport. + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get pages enclosing the viewport. + const pages: Word.PageCollection = activePane.pagesEnclosingViewport; + pages.load(); + + await context.sync(); + + // Log the number of pages. + const pageCount = pages.items.length; + console.log(`Number of pages enclosing the viewport: ${pageCount}`); + + // Log index info of these pages. + const pagesIndexes = []; + for (let i = 0; i < pageCount; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + } + }); + } + + async function getAllPages() { + await Word.run(async (context) => { + // Gets the first paragraph of each page. + console.log("Getting first paragraph of each page..."); + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get all pages. + const pages: Word.PageCollection = activePane.pages; + pages.load(); + + await context.sync(); + + // Get page index and paragraphs of each page. + const pagesIndexes = []; + const pagesNumberOfParagraphs = []; + const pagesFirstParagraphText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const paragraphs = page.getRange().paragraphs; + paragraphs.load('items/length'); + pagesNumberOfParagraphs.push(paragraphs); + + const firstParagraph = paragraphs.getFirst(); + firstParagraph.load('text'); + pagesFirstParagraphText.push(firstParagraph); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + console.log(`Number of paragraphs: ${pagesNumberOfParagraphs[i].items.length}`); + console.log("First paragraph's text:", pagesFirstParagraphText[i].text); + } + }); + } + + async function setup() { + await Word.run(async (context) => { + const body: Word.Body = context.document.body; + body.clear(); + body.insertBreak(Word.BreakType.page, Word.InsertLocation.end); + body.insertParagraph( + "Themes and styles also help keep your document coordinated. When you click design and choose a new Theme, the pictures, charts, and SmartArt graphics change to match your new theme. When you apply styles, your headings change to match the new theme.", + "End" + ); + body.insertText( + "Save time in Word with new buttons that show up where you need them. To change the way a picture fits in your document, click it and a button for layout options appears next to it. When you work on a table, click where you want to add a row or a column, and then click the plus sign.", + "Start" + ); + body.insertParagraph( + "Do you want to create a solution that extends the functionality of Word? You can use the Office Add-ins platform to extend Word clients running on the web, on a Windows desktop, or on a Mac.", + "Start" + ); + body.paragraphs + .getLast() + .insertText( + "Use add-in commands to extend the Word UI and launch task panes that run JavaScript that interacts with the content in a Word document. Any code that you can run in a browser can run in a Word add-in. Add-ins that interact with content in a Word document create requests to act on Word objects and synchronize object state.", + "Replace" + ); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +

      + This sample demonstrates how to work with pages, panes, and windows. +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      + + + + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: | + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 0867a4eb57643bd032635be3c3b3e2a946e57466..d614523682d32c83fb6646febcbced3a4eec439f 100644 GIT binary patch delta 20259 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 z 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 VM&k8TgCu&A?EOT}l>7XL`5$ujG5Y`j delta 19693 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

      % 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 F^B+AwvPl2{ diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 6a70737a4..9fe9a88bc 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -20925,6 +20925,56 @@ context.document.save(); await context.sync(); }); +'Word.Document#activeWindow:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the first paragraph of each page. + console.log("Getting first paragraph of each page..."); + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get all pages. + const pages: Word.PageCollection = activePane.pages; + pages.load(); + + await context.sync(); + + // Get page index and paragraphs of each page. + const pagesIndexes = []; + const pagesNumberOfParagraphs = []; + const pagesFirstParagraphText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const paragraphs = page.getRange().paragraphs; + paragraphs.load('items/length'); + pagesNumberOfParagraphs.push(paragraphs); + + const firstParagraph = paragraphs.getFirst(); + firstParagraph.load('text'); + pagesFirstParagraphText.push(firstParagraph); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + console.log(`Number of paragraphs: ${pagesNumberOfParagraphs[i].items.length}`); + console.log("First paragraph's text:", pagesFirstParagraphText[i].text); + } + }); 'Word.Document#changeTrackingMode:member': - >- // Link to full sample: @@ -22846,6 +22896,285 @@ await context.sync(); console.log("Styles imported from JSON:", styles); }); +'Word.Page:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets pages of the selection. + const pages: Word.PageCollection = context.document.getSelection().pages; + pages.load(); + await context.sync(); + + // Log info for pages included in selection. + console.log(pages); + const pagesIndexes = []; + const pagesText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const range = page.getRange(); + range.load('text'); + pagesText.push(range); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Index info for page ${i + 1} in the selection: ${pagesIndexes[i].index}`); + console.log("Text of that page in the selection:", pagesText[i].text); + } + }); +'Word.Page#getRange:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets pages of the selection. + const pages: Word.PageCollection = context.document.getSelection().pages; + pages.load(); + await context.sync(); + + // Log info for pages included in selection. + console.log(pages); + const pagesIndexes = []; + const pagesText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const range = page.getRange(); + range.load('text'); + pagesText.push(range); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Index info for page ${i + 1} in the selection: ${pagesIndexes[i].index}`); + console.log("Text of that page in the selection:", pagesText[i].text); + } + }); +'Word.Page#index:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the pages that contain the third paragraph. + const paragraphs: Word.ParagraphCollection = context.document.body.paragraphs; + paragraphs.load(); + await context.sync(); + + const paraThree = paragraphs.items[2]; + const rangeOfParagraph = paraThree.getRange(); + const pages: Word.PageCollection = rangeOfParagraph.pages; + pages.load(); + await context.sync(); + + // Log info for pages in range. + console.log(pages); + const pagesIndexes = []; + const pagesText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const range = page.getRange(); + range.load('text'); + pagesText.push(range); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Index of page ${i + 1} that contains the third paragraph: ${pagesIndexes[i].index}`); + console.log("Text of that page:", pagesText[i].text); + } + }); +'Word.PageCollection:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets pages of the selection. + const pages: Word.PageCollection = context.document.getSelection().pages; + pages.load(); + await context.sync(); + + // Log info for pages included in selection. + console.log(pages); + const pagesIndexes = []; + const pagesText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const range = page.getRange(); + range.load('text'); + pagesText.push(range); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Index info for page ${i + 1} in the selection: ${pagesIndexes[i].index}`); + console.log("Text of that page in the selection:", pagesText[i].text); + } + }); +'Word.Pane:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the first paragraph of each page. + console.log("Getting first paragraph of each page..."); + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get all pages. + const pages: Word.PageCollection = activePane.pages; + pages.load(); + + await context.sync(); + + // Get page index and paragraphs of each page. + const pagesIndexes = []; + const pagesNumberOfParagraphs = []; + const pagesFirstParagraphText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const paragraphs = page.getRange().paragraphs; + paragraphs.load('items/length'); + pagesNumberOfParagraphs.push(paragraphs); + + const firstParagraph = paragraphs.getFirst(); + firstParagraph.load('text'); + pagesFirstParagraphText.push(firstParagraph); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + console.log(`Number of paragraphs: ${pagesNumberOfParagraphs[i].items.length}`); + console.log("First paragraph's text:", pagesFirstParagraphText[i].text); + } + }); +'Word.Pane#pages:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the first paragraph of each page. + console.log("Getting first paragraph of each page..."); + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get all pages. + const pages: Word.PageCollection = activePane.pages; + pages.load(); + + await context.sync(); + + // Get page index and paragraphs of each page. + const pagesIndexes = []; + const pagesNumberOfParagraphs = []; + const pagesFirstParagraphText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const paragraphs = page.getRange().paragraphs; + paragraphs.load('items/length'); + pagesNumberOfParagraphs.push(paragraphs); + + const firstParagraph = paragraphs.getFirst(); + firstParagraph.load('text'); + pagesFirstParagraphText.push(firstParagraph); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + console.log(`Number of paragraphs: ${pagesNumberOfParagraphs[i].items.length}`); + console.log("First paragraph's text:", pagesFirstParagraphText[i].text); + } + }); +'Word.Pane#pagesEnclosingViewport:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the pages enclosing the viewport. + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get pages enclosing the viewport. + const pages: Word.PageCollection = activePane.pagesEnclosingViewport; + pages.load(); + + await context.sync(); + + // Log the number of pages. + const pageCount = pages.items.length; + console.log(`Number of pages enclosing the viewport: ${pageCount}`); + + // Log index info of these pages. + const pagesIndexes = []; + for (let i = 0; i < pageCount; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + } + }); 'Word.Paragraph:class': - >- // Link to full sample: @@ -25344,3 +25673,94 @@ console.log(`Details about the alignment of the first table's first row:`, `- Horizontal alignment of every cell in the row: ${firstTableRow.horizontalAlignment}`, `- Vertical alignment of every cell in the row: ${firstTableRow.verticalAlignment}`); }); +'Word.Window:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the first paragraph of each page. + console.log("Getting first paragraph of each page..."); + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get all pages. + const pages: Word.PageCollection = activePane.pages; + pages.load(); + + await context.sync(); + + // Get page index and paragraphs of each page. + const pagesIndexes = []; + const pagesNumberOfParagraphs = []; + const pagesFirstParagraphText = []; + for (let i = 0; i < pages.items.length; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + + const paragraphs = page.getRange().paragraphs; + paragraphs.load('items/length'); + pagesNumberOfParagraphs.push(paragraphs); + + const firstParagraph = paragraphs.getFirst(); + firstParagraph.load('text'); + pagesFirstParagraphText.push(firstParagraph); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + console.log(`Number of paragraphs: ${pagesNumberOfParagraphs[i].items.length}`); + console.log("First paragraph's text:", pagesFirstParagraphText[i].text); + } + }); +'Word.Window#activePane:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the pages enclosing the viewport. + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load(); + + // Get the active pane. + const activePane: Word.Pane = activeWindow.activePane; + activePane.load(); + + // Get pages enclosing the viewport. + const pages: Word.PageCollection = activePane.pagesEnclosingViewport; + pages.load(); + + await context.sync(); + + // Log the number of pages. + const pageCount = pages.items.length; + console.log(`Number of pages enclosing the viewport: ${pageCount}`); + + // Log index info of these pages. + const pagesIndexes = []; + for (let i = 0; i < pageCount; i++) { + const page = pages.items[i]; + page.load('index'); + pagesIndexes.push(page); + } + + await context.sync(); + + for (let i = 0; i < pagesIndexes.length; i++) { + console.log(`Page index: ${pagesIndexes[i].index}`); + } + }); diff --git a/view-prod/word.json b/view-prod/word.json index 91af0634e..72709dc7b 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -34,6 +34,7 @@ "word-ranges-scroll-to-range": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/scroll-to-range.yaml", "word-ranges-split-words-of-first-paragraph": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/split-words-of-first-paragraph.yaml", "word-ranges-compare-location": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/compare-location.yaml", + "word-ranges-get-pages": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml", "word-tables-table-cell-access": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/table-cell-access.yaml", "word-tables-manage-formatting": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml", "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml", diff --git a/view/word.json b/view/word.json index 3d5b2bafa..1bcd2b652 100644 --- a/view/word.json +++ b/view/word.json @@ -34,6 +34,7 @@ "word-ranges-scroll-to-range": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/35-ranges/scroll-to-range.yaml", "word-ranges-split-words-of-first-paragraph": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/35-ranges/split-words-of-first-paragraph.yaml", "word-ranges-compare-location": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/35-ranges/compare-location.yaml", + "word-ranges-get-pages": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/35-ranges/get-pages.yaml", "word-tables-table-cell-access": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/table-cell-access.yaml", "word-tables-manage-formatting": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/manage-formatting.yaml", "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/manage-custom-style.yaml", From 71a685d0a840b5b995c8263c046550875ef9ae75 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 25 Apr 2025 09:17:15 -0700 Subject: [PATCH 28/71] [Word] (preview) Update to next set (#976) --- playlists-prod/word.yaml | 4 ++-- playlists/word.yaml | 4 ++-- .../insert-and-change-content-controls.yaml | 11 ++++++----- samples/word/99-preview-apis/manage-comments.yaml | 2 +- snippet-extractor-output/snippets.yaml | 8 +++++--- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index 315c9303d..801f6e431 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -579,7 +579,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml group: Preview APIs api_set: - WordApi: '1.9' + WordApi: '1.10' - id: word-manage-comments name: Manage comments fileName: manage-comments.yaml @@ -590,4 +590,4 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml group: Preview APIs api_set: - WordApi: '1.9' \ No newline at end of file + WordApi: '1.10' \ No newline at end of file diff --git a/playlists/word.yaml b/playlists/word.yaml index be093b51c..edca57ca8 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -579,7 +579,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-content-controls.yaml group: Preview APIs api_set: - WordApi: '1.9' + WordApi: '1.10' - id: word-manage-comments name: Manage comments fileName: manage-comments.yaml @@ -590,4 +590,4 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/manage-comments.yaml group: Preview APIs api_set: - WordApi: '1.9' + WordApi: '1.10' diff --git a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml index 96f9e8905..81d9a9ecb 100644 --- a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml +++ b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -4,9 +4,9 @@ description: 'Inserts, updates, and retrieves content controls.' author: OfficeDev host: WORD api_set: - WordApi: '1.9' + WordApi: '1.10' script: - content: |- + content: | document.getElementById("insert-controls").addEventListener("click", () => tryCatch(insertContentControls)); document.getElementById("change-controls").addEventListener("click", () => tryCatch(modifyContentControls)); document.getElementById("set-state").addEventListener("click", () => tryCatch(setState)); @@ -74,7 +74,8 @@ script: async function setState() { // Sets the state of the first content control. await Word.run(async (context) => { - const state = ((document.getElementById("state-to-set") as HTMLSelectElement).value as unknown) as Word.ContentControlState; + const state = ((document.getElementById("state-to-set") as HTMLSelectElement) + .value as unknown) as Word.ContentControlState; let firstContentControl = context.document.contentControls.getFirstOrNullObject(); await context.sync(); @@ -101,7 +102,7 @@ script: console.warn("There are no content controls in this document."); return; } - + firstContentControl.resetState(); firstContentControl.load("id"); await context.sync(); @@ -161,7 +162,7 @@ template: -

      +

      Preview features

      Set state of first content control.
      diff --git a/samples/word/99-preview-apis/manage-comments.yaml b/samples/word/99-preview-apis/manage-comments.yaml index cae554af5..c050ead75 100644 --- a/samples/word/99-preview-apis/manage-comments.yaml +++ b/samples/word/99-preview-apis/manage-comments.yaml @@ -3,7 +3,7 @@ name: Manage comments description: 'This sample shows how to perform operations on comments (including insert, reply, get, edit, resolve, and delete) and use comment events.' host: WORD api_set: - WordApi: '1.9' + WordApi: '1.10' script: content: |- document.getElementById("register-event-handlers").addEventListener("click", () => tryCatch(registerEventHandlers)); diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 9fe9a88bc..392723f9d 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -18740,7 +18740,7 @@ console.warn("There are no content controls in this document."); return; } - + firstContentControl.resetState(); firstContentControl.load("id"); await context.sync(); @@ -18796,7 +18796,8 @@ // Sets the state of the first content control. await Word.run(async (context) => { - const state = ((document.getElementById("state-to-set") as HTMLSelectElement).value as unknown) as Word.ContentControlState; + const state = ((document.getElementById("state-to-set") as HTMLSelectElement) + .value as unknown) as Word.ContentControlState; let firstContentControl = context.document.contentControls.getFirstOrNullObject(); await context.sync(); @@ -19701,7 +19702,8 @@ // Sets the state of the first content control. await Word.run(async (context) => { - const state = ((document.getElementById("state-to-set") as HTMLSelectElement).value as unknown) as Word.ContentControlState; + const state = ((document.getElementById("state-to-set") as HTMLSelectElement) + .value as unknown) as Word.ContentControlState; let firstContentControl = context.document.contentControls.getFirstOrNullObject(); await context.sync(); From 762fe34369937117e687d3088ada1fb024a14bf6 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Mon, 28 Apr 2025 09:28:14 -0700 Subject: [PATCH 29/71] [Word] (Shapes) Work with text boxes (#977) * [Word] (Shapes) Work with text boxes * Apply suggestions from code review Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> * Updates based on feedback and add API mappings --------- Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> --- playlists-prod/word.yaml | 9 + playlists/word.yaml | 9 + .../50-document/manage-shapes-text-boxes.yaml | 290 ++++++++++++++++++ snippet-extractor-metadata/word.xlsx | Bin 28077 -> 28566 bytes snippet-extractor-output/snippets.yaml | 264 ++++++++++++++++ view-prod/word.json | 1 + view/word.json | 1 + 7 files changed, 574 insertions(+) create mode 100644 samples/word/50-document/manage-shapes-text-boxes.yaml diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index 801f6e431..9def75438 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -544,6 +544,15 @@ group: Document api_set: WordApiDesktop: '1.1' +- id: word-document-manage-shapes-text-boxes + name: Work with shapes and text boxes + fileName: manage-shapes-text-boxes.yaml + description: Shows how to work with shapes and text boxes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + group: Document + api_set: + WordApiDesktop: '1.2' - id: word-scenarios-doc-assembly name: Document assembly fileName: doc-assembly.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index edca57ca8..cb7a87af1 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -544,6 +544,15 @@ group: Document api_set: WordApiDesktop: '1.1' +- id: word-document-manage-shapes-text-boxes + name: Work with shapes and text boxes + fileName: manage-shapes-text-boxes.yaml + description: Shows how to work with shapes and text boxes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-shapes-text-boxes.yaml + group: Document + api_set: + WordApiDesktop: '1.2' - id: word-scenarios-doc-assembly name: Document assembly fileName: doc-assembly.yaml diff --git a/samples/word/50-document/manage-shapes-text-boxes.yaml b/samples/word/50-document/manage-shapes-text-boxes.yaml new file mode 100644 index 000000000..0052c6c77 --- /dev/null +++ b/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -0,0 +1,290 @@ +order: 17 +id: word-document-manage-shapes-text-boxes +name: Work with shapes and text boxes +description: Shows how to work with shapes and text boxes. +author: yilin4 +host: WORD +api_set: + WordApiDesktop: '1.2' +script: + content: | + document + .getElementById("insert-text-box-into-current-selection") + .addEventListener("click", () => tryCatch(insertTextBoxIntoCurrentSelection)); + document.getElementById("get-text-boxes-in-main-doc").addEventListener("click", () => tryCatch(getTextBoxesInMainDoc)); + document.getElementById("set-text-box-properties").addEventListener("click", () => tryCatch(setTextBoxProperties)); + document + .getElementById("insert-content-control-into-text-box") + .addEventListener("click", () => tryCatch(insertContentControlIntoTextBox)); + document + .getElementById("get-content-controls-in-text-box") + .addEventListener("click", () => tryCatch(getContentControlsInTextBox)); + document + .getElementById("insert-picture-at-start-of-text-box") + .addEventListener("click", () => tryCatch(insertPictureAtStartOfTextBox)); + document.getElementById("delete-first-text-box").addEventListener("click", () => tryCatch(deleteFirstTextBox)); + document + .getElementById("insert-text-box-in-header-at-first-paragraph") + .addEventListener("click", () => tryCatch(insertTextBoxInHeaderAtFirstParagraph)); + document.getElementById("get-text-box-in-header").addEventListener("click", () => tryCatch(getTextBoxInHeader)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + async function insertTextBoxIntoCurrentSelection() { + await Word.run(async (context) => { + // Inserts a text box at the beginning of the selection. + const range: Word.Range = context.document.getSelection(); + const insertShapeOptions: Word.InsertShapeOptions = { + top: 0, + left: 0, + height: 100, + width: 100 + }; + + const newTextBox: Word.Shape = range.insertTextBox("placeholder text", insertShapeOptions); + await context.sync(); + + console.log("Inserted a text box at the beginning of the current selection."); + }); + } + + async function getTextBoxesInMainDoc() { + await Word.run(async (context) => { + // Gets text boxes in main document. + const shapes: Word.ShapeCollection = context.document.body.shapes; + shapes.load(); + await context.sync(); + + if (shapes.items.length > 0) { + shapes.items.forEach(function(shape, index) { + if (shape.type === Word.ShapeType.textBox) { + console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } + }); + } else { + console.log("No shapes found in main document."); + } + }); + } + + async function setTextBoxProperties() { + await Word.run(async (context) => { + // Sets the properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.top = 115; + firstShapeWithTextBox.left = 0; + firstShapeWithTextBox.width = 50; + firstShapeWithTextBox.height = 50; + await context.sync(); + + console.log("The first text box's properties were updated:", firstShapeWithTextBox); + }); + } + + async function insertContentControlIntoTextBox() { + await Word.run(async (context) => { + // Inserts a content control into the first paragraph in the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.load("type/body"); + await context.sync(); + + const firstParagraphInTextBox: Word.Paragraph = firstShapeWithTextBox.body.paragraphs.getFirst(); + const newControl: Word.ContentControl = firstParagraphInTextBox.insertContentControl(); + newControl.load(); + await context.sync(); + + console.log("New content control properties:", newControl); + }); + } + + async function getContentControlsInTextBox() { + await Word.run(async (context) => { + // Gets the content controls in the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.load("type/body"); + await context.sync(); + + const contentControlsInTextBox: Word.ContentControlCollection = firstShapeWithTextBox.body.contentControls; + contentControlsInTextBox.load(); + await context.sync(); + + console.log(`There are ${contentControlsInTextBox.items.length} content controls in total.`); + }); + } + + async function insertPictureAtStartOfTextBox() { + await Word.run(async (context) => { + // Inserts a picture at the start of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.load("type/body"); + await context.sync(); + + const startRange: Word.Range = firstShapeWithTextBox.body.getRange(Word.RangeLocation.start); + const newPic: Word.InlinePicture = startRange.insertInlinePictureFromBase64( + getPictureBase64(), + Word.InsertLocation.start + ); + newPic.load(); + await context.sync(); + + console.log("New inline picture properties:", newPic); + }); + } + + async function deleteFirstTextBox() { + await Word.run(async (context) => { + // Deletes the first text box. + context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst() + .delete(); + await context.sync(); + + console.log("The first text box in document was deleted."); + }); + } + + async function insertTextBoxInHeaderAtFirstParagraph() { + await Word.run(async (context) => { + // Inserts a text box at the beginning of the first paragraph in header. + const headerFooterBody: Word.Body = context.document.sections.getFirst().getHeader(Word.HeaderFooterType.primary); + headerFooterBody.load("paragraphs"); + const firstParagraph: Word.Paragraph = headerFooterBody.paragraphs.getFirst(); + const insertShapeOptions: Word.InsertShapeOptions = { + top: 0, + left: 0, + height: 100, + width: 100 + }; + const newTextBox: Word.Shape = firstParagraph.insertTextBox("placeholder text", insertShapeOptions); + newTextBox.select(); + await context.sync(); + + console.log("Inserted a text box at the beginning of the first paragraph in the header."); + }); + } + + async function getTextBoxInHeader() { + await Word.run(async (context) => { + // Gets text boxes in header. + const shapes: Word.ShapeCollection = context.document.sections.getFirst().getHeader(Word.HeaderFooterType.primary) + .shapes; + shapes.load(); + await context.sync(); + + if (shapes.items.length > 0) { + shapes.items.forEach(function(shape, index) { + if (shape.type === Word.ShapeType.textBox) { + console.log(`Shape ${index} in header has a text box. Properties:`, shape); + } + }); + } else { + console.log("No shapes found in header."); + } + }); + } + + async function setup() { + await Word.run(async (context) => { + const body: Word.Body = context.document.body; + body.clear(); + body.insertParagraph( + "Do you want to create a solution that extends the functionality of Word? You can use the Office Add-ins platform to extend Word clients running on the web, on a Windows desktop, or on a Mac.", + "Start" + ); + body.paragraphs + .getLast() + .insertText( + "Use add-in commands to extend the Word UI and launch task panes that run JavaScript that interacts with the content in a Word document. Any code that you can run in a browser can run in a Word add-in. Add-ins that interact with content in a Word document create requests to act on Word objects and synchronize object state.", + "Replace" + ); + }); + } + + function getPictureBase64(): string { + // Returns Base64-encoded image data for a sample picture. + const pictureBase64 = + "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"; + return pictureBase64; + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      + This sample demonstrates how to work with shapes and text boxes. +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      +

      Main document

      + + + + + + + +

      Header

      + + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index d614523682d32c83fb6646febcbced3a4eec439f..223f0a5f460e3363fae93087e4f92f9e6ea5e75a 100644 GIT binary patch delta 20105 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 Count: " + length); }); }); +'Word.Body#shapes:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets text boxes in main document. + const shapes: Word.ShapeCollection = context.document.body.shapes; + shapes.load(); + await context.sync(); + + if (shapes.items.length > 0) { + shapes.items.forEach(function(shape, index) { + if (shape.type === Word.ShapeType.textBox) { + console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } + }); + } else { + console.log("No shapes found in main document."); + } + }); 'Word.Body#tables:member': - >- // Link to full sample: @@ -22108,6 +22130,27 @@ console.log("Inserted section without an associated page break."); }); +'Word.InsertShapeOptions:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Inserts a text box at the beginning of the selection. + const range: Word.Range = context.document.getSelection(); + const insertShapeOptions: Word.InsertShapeOptions = { + top: 0, + left: 0, + height: 100, + width: 100 + }; + + const newTextBox: Word.Shape = range.insertTextBox("placeholder text", insertShapeOptions); + await context.sync(); + + console.log("Inserted a text box at the beginning of the current selection."); + }); 'Word.List:class': - >- // Link to full sample: @@ -23332,6 +23375,29 @@ await context.sync(); }); +'Word.Paragraph#insertTextBox:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Inserts a text box at the beginning of the first paragraph in header. + const headerFooterBody: Word.Body = context.document.sections.getFirst().getHeader(Word.HeaderFooterType.primary); + headerFooterBody.load("paragraphs"); + const firstParagraph: Word.Paragraph = headerFooterBody.paragraphs.getFirst(); + const insertShapeOptions: Word.InsertShapeOptions = { + top: 0, + left: 0, + height: 100, + width: 100 + }; + const newTextBox: Word.Shape = firstParagraph.insertTextBox("placeholder text", insertShapeOptions); + newTextBox.select(); + await context.sync(); + + console.log("Inserted a text box at the beginning of the first paragraph in the header."); + }); 'Word.Paragraph#select:member(1)': - >- // Link to full sample: @@ -24173,6 +24239,63 @@ console.log("Inserted footnote."); }); +'Word.Range#insertInlinePictureFromBase64:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Inserts a picture at the start of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.load("type/body"); + await context.sync(); + + const startRange: Word.Range = firstShapeWithTextBox.body.getRange(Word.RangeLocation.start); + const newPic: Word.InlinePicture = startRange.insertInlinePictureFromBase64( + getPictureBase64(), + Word.InsertLocation.start + ); + newPic.load(); + await context.sync(); + + console.log("New inline picture properties:", newPic); + }); + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + // Returns Base64-encoded image data for a sample picture. + + const pictureBase64 = + + "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"; + + return pictureBase64; +'Word.Range#insertTextBox:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Inserts a text box at the beginning of the selection. + const range: Word.Range = context.document.getSelection(); + const insertShapeOptions: Word.InsertShapeOptions = { + top: 0, + left: 0, + height: 100, + width: 100 + }; + + const newTextBox: Word.Shape = range.insertTextBox("placeholder text", insertShapeOptions); + await context.sync(); + + console.log("Inserted a text box at the beginning of the current selection."); + }); 'Word.Range#footnotes:member': - >- // Link to full sample: @@ -24587,6 +24710,147 @@ console.log("Updated shading."); } }); +'Word.Shape:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets the properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.top = 115; + firstShapeWithTextBox.left = 0; + firstShapeWithTextBox.width = 50; + firstShapeWithTextBox.height = 50; + await context.sync(); + + console.log("The first text box's properties were updated:", firstShapeWithTextBox); + }); +'Word.Shape#delete:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Deletes the first text box. + context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst() + .delete(); + await context.sync(); + + console.log("The first text box in document was deleted."); + }); +'Word.Shape#type:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets text boxes in main document. + const shapes: Word.ShapeCollection = context.document.body.shapes; + shapes.load(); + await context.sync(); + + if (shapes.items.length > 0) { + shapes.items.forEach(function(shape, index) { + if (shape.type === Word.ShapeType.textBox) { + console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } + }); + } else { + console.log("No shapes found in main document."); + } + }); +'Word.ShapeCollection:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets text boxes in main document. + const shapes: Word.ShapeCollection = context.document.body.shapes; + shapes.load(); + await context.sync(); + + if (shapes.items.length > 0) { + shapes.items.forEach(function(shape, index) { + if (shape.type === Word.ShapeType.textBox) { + console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } + }); + } else { + console.log("No shapes found in main document."); + } + }); +'Word.ShapeCollection#getByTypes:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets the properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.top = 115; + firstShapeWithTextBox.left = 0; + firstShapeWithTextBox.width = 50; + firstShapeWithTextBox.height = 50; + await context.sync(); + + console.log("The first text box's properties were updated:", firstShapeWithTextBox); + }); +'Word.ShapeCollection#getFirst:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Inserts a content control into the first paragraph in the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.load("type/body"); + await context.sync(); + + const firstParagraphInTextBox: Word.Paragraph = firstShapeWithTextBox.body.paragraphs.getFirst(); + const newControl: Word.ContentControl = firstParagraphInTextBox.insertContentControl(); + newControl.load(); + await context.sync(); + + console.log("New content control properties:", newControl); + }); +'Word.ShapeType:enum': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets text boxes in main document. + const shapes: Word.ShapeCollection = context.document.body.shapes; + shapes.load(); + await context.sync(); + + if (shapes.items.length > 0) { + shapes.items.forEach(function(shape, index) { + if (shape.type === Word.ShapeType.textBox) { + console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } + }); + } else { + console.log("No shapes found in main document."); + } + }); 'Word.Style:class': - >- // Link to full sample: diff --git a/view-prod/word.json b/view-prod/word.json index 72709dc7b..a6f3f7244 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -54,6 +54,7 @@ "word-document-save-close": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/save-close.yaml", "word-document-manage-annotations": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml", "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/compare-documents.yaml", + "word-document-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/multiple-property-set.yaml", "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/correlated-objects-pattern.yaml", diff --git a/view/word.json b/view/word.json index 1bcd2b652..1e2ed094d 100644 --- a/view/word.json +++ b/view/word.json @@ -54,6 +54,7 @@ "word-document-save-close": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/save-close.yaml", "word-document-manage-annotations": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-annotations.yaml", "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/compare-documents.yaml", + "word-document-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-shapes-text-boxes.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/multiple-property-set.yaml", "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/correlated-objects-pattern.yaml", From ddf187a9e086aaac43c9f95e8f271bb261bd7b35 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Tue, 6 May 2025 13:10:33 -0700 Subject: [PATCH 30/71] [PowerPoint] Add group-ungroup-shapes snippet (#982) * [PowerPoint] Add group-ungroup-shapes snippet * Add API mapping --- playlists-prod/powerpoint.yaml | 9 + playlists/powerpoint.yaml | 9 + .../shapes/group-ungroup-shapes.yaml | 165 ++++++++++++++++++ snippet-extractor-metadata/powerpoint.xlsx | Bin 14220 -> 14411 bytes snippet-extractor-output/snippets.yaml | 135 ++++++++++++++ view-prod/powerpoint.json | 1 + view/powerpoint.json | 1 + 7 files changed, 320 insertions(+) create mode 100644 samples/powerpoint/shapes/group-ungroup-shapes.yaml diff --git a/playlists-prod/powerpoint.yaml b/playlists-prod/powerpoint.yaml index 543434d41..aae374492 100644 --- a/playlists-prod/powerpoint.yaml +++ b/playlists-prod/powerpoint.yaml @@ -89,6 +89,15 @@ group: Shapes api_set: PowerPointApi: '1.4' +- id: powerpoint-shapes-group-ungroup-shapes + name: Group and ungroup shapes + fileName: group-ungroup-shapes.yaml + description: Shows how to create two shapes then group and ungroup them. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml + group: Shapes + api_set: + PowerPointApi: '1.8' - id: powerpoint-shapes name: 'Insert shape, line, and text box' fileName: shapes.yaml diff --git a/playlists/powerpoint.yaml b/playlists/powerpoint.yaml index 72f4c2f59..4d09312d4 100644 --- a/playlists/powerpoint.yaml +++ b/playlists/powerpoint.yaml @@ -89,6 +89,15 @@ group: Shapes api_set: PowerPointApi: '1.4' +- id: powerpoint-shapes-group-ungroup-shapes + name: Group and ungroup shapes + fileName: group-ungroup-shapes.yaml + description: Shows how to create two shapes then group and ungroup them. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/group-ungroup-shapes.yaml + group: Shapes + api_set: + PowerPointApi: '1.8' - id: powerpoint-shapes name: 'Insert shape, line, and text box' fileName: shapes.yaml diff --git a/samples/powerpoint/shapes/group-ungroup-shapes.yaml b/samples/powerpoint/shapes/group-ungroup-shapes.yaml new file mode 100644 index 000000000..9ab621906 --- /dev/null +++ b/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -0,0 +1,165 @@ +order: 6 +id: powerpoint-shapes-group-ungroup-shapes +name: Group and ungroup shapes +description: Shows how to create two shapes then group and ungroup them. +author: aafvstam +host: POWERPOINT +api_set: + PowerPointApi: '1.8' +script: + content: | + document.getElementById("group-shapes").addEventListener("click", () => tryCatch(groupShapes)); + document.getElementById("ungroup-shapes").addEventListener("click", () => tryCatch(ungroupShapes)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + async function groupShapes() { + await PowerPoint.run(async (context) => { + // Groups the geometric shapes on the current slide. + + // Get the current slide. + context.presentation.load("slides"); + const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); + + // Get the shapes. + slide.load("shapes"); + await context.sync(); + + const shapes: PowerPoint.ShapeCollection = slide.shapes; + shapes.load("items/type,items/id"); + await context.sync(); + + // Group the geometric shapes. + const shapesToGroup = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); + console.log(`Number of shapes to group: ${shapesToGroup.length}`); + const group = shapes.addGroup(shapesToGroup); + group.load("id"); + await context.sync(); + + console.log(`Grouped shapes. Group ID: ${group.id}`); + }); + } + + async function ungroupShapes() { + await PowerPoint.run(async (context) => { + // Ungroups the first shape group on the current slide. + + // Get the current slide. + context.presentation.load("slides"); + const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); + + // Get the shapes. + slide.load("shapes"); + await context.sync(); + + const shapes: PowerPoint.ShapeCollection = slide.shapes; + shapes.load("items/type,items/id"); + await context.sync(); + + // Ungroup the first grouped shapes. + const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); + if (shapeGroups.length == 0) { + console.warn("No shape groups on the current slide so nothing to ungroup."); + return; + } + + const firstGroupId = shapeGroups[0].id; + const shapeGroupToUngroup = shapes.getItem(firstGroupId); + shapeGroupToUngroup.group.ungroup(); + await context.sync(); + + console.log(`Ungrouped shapes with group ID: ${firstGroupId}`); + }); + } + + async function setup() { + await PowerPoint.run(async (context) => { + // Adds a new slide with two shapes. + const slideCountResult = context.presentation.slides.getCount(); + context.presentation.slides.add(); + await context.sync(); + + const newSlide = context.presentation.slides.getItemAt(slideCountResult.value); + newSlide.load("id"); + + // Create two shapes. + const shape1 = newSlide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.rectangle); + shape1.left = 100; + shape1.top = 100; + shape1.width = 150; + shape1.height = 100; + shape1.fill.foregroundColor = "darkred"; + + const shape2 = newSlide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.ellipse); + shape2.left = 300; + shape2.top = 100; + shape2.width = 150; + shape2.height = 100; + shape2.fill.foregroundColor = "darkblue"; + + await context.sync(); + + console.log(`Added slide - ID: ${newSlide.id}`); + + // Switch to the new slide. + context.presentation.setSelectedSlides([newSlide.id]); + await context.sync(); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      +

      Shows how to group then ungroup shapes.

      +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      + + +
      + language: html +style: + content: | + section.samples { + margin-top: 20px; + } + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + .content { + padding: 0 18px; + /* display: none; */ + overflow: hidden; + background-color: #f1f1f1; + max-height: 0; + transition: max-height 0.2s ease-out; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/powerpoint.xlsx b/snippet-extractor-metadata/powerpoint.xlsx index 4c6d50cb6874357cbe9580841f63e005de69da1a..bd9539d1c32f638e3911527b849450b60d4de632 100644 GIT binary patch delta 6532 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 RorM=+F2wvumj7Rn{{pT}Hm3jp delta 6315 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 + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml + + + await PowerPoint.run(async (context) => { + // Ungroups the first shape group on the current slide. + + // Get the current slide. + context.presentation.load("slides"); + const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); + + // Get the shapes. + slide.load("shapes"); + await context.sync(); + + const shapes: PowerPoint.ShapeCollection = slide.shapes; + shapes.load("items/type,items/id"); + await context.sync(); + + // Ungroup the first grouped shapes. + const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); + if (shapeGroups.length == 0) { + console.warn("No shape groups on the current slide so nothing to ungroup."); + return; + } + + const firstGroupId = shapeGroups[0].id; + const shapeGroupToUngroup = shapes.getItem(firstGroupId); + shapeGroupToUngroup.group.ungroup(); + await context.sync(); + + console.log(`Ungrouped shapes with group ID: ${firstGroupId}`); + }); 'PowerPoint.Shape#height:member': - >- // Link to full sample: @@ -15427,6 +15462,36 @@ await context.sync(); }); +'PowerPoint.ShapeCollection#addGroup:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml + + + await PowerPoint.run(async (context) => { + // Groups the geometric shapes on the current slide. + + // Get the current slide. + context.presentation.load("slides"); + const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); + + // Get the shapes. + slide.load("shapes"); + await context.sync(); + + const shapes: PowerPoint.ShapeCollection = slide.shapes; + shapes.load("items/type,items/id"); + await context.sync(); + + // Group the geometric shapes. + const shapesToGroup = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); + console.log(`Number of shapes to group: ${shapesToGroup.length}`); + const group = shapes.addGroup(shapesToGroup); + group.load("id"); + await context.sync(); + + console.log(`Grouped shapes. Group ID: ${group.id}`); + }); 'PowerPoint.ShapeCollection#addLine:member(1)': - >- // Link to full sample: @@ -15642,6 +15707,76 @@ textRange.font.color = "green"; await context.sync(); }); +'PowerPoint.ShapeGroup:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml + + + await PowerPoint.run(async (context) => { + // Ungroups the first shape group on the current slide. + + // Get the current slide. + context.presentation.load("slides"); + const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); + + // Get the shapes. + slide.load("shapes"); + await context.sync(); + + const shapes: PowerPoint.ShapeCollection = slide.shapes; + shapes.load("items/type,items/id"); + await context.sync(); + + // Ungroup the first grouped shapes. + const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); + if (shapeGroups.length == 0) { + console.warn("No shape groups on the current slide so nothing to ungroup."); + return; + } + + const firstGroupId = shapeGroups[0].id; + const shapeGroupToUngroup = shapes.getItem(firstGroupId); + shapeGroupToUngroup.group.ungroup(); + await context.sync(); + + console.log(`Ungrouped shapes with group ID: ${firstGroupId}`); + }); +'PowerPoint.ShapeGroup#ungroup:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml + + + await PowerPoint.run(async (context) => { + // Ungroups the first shape group on the current slide. + + // Get the current slide. + context.presentation.load("slides"); + const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); + + // Get the shapes. + slide.load("shapes"); + await context.sync(); + + const shapes: PowerPoint.ShapeCollection = slide.shapes; + shapes.load("items/type,items/id"); + await context.sync(); + + // Ungroup the first grouped shapes. + const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); + if (shapeGroups.length == 0) { + console.warn("No shape groups on the current slide so nothing to ungroup."); + return; + } + + const firstGroupId = shapeGroups[0].id; + const shapeGroupToUngroup = shapes.getItem(firstGroupId); + shapeGroupToUngroup.group.ungroup(); + await context.sync(); + + console.log(`Ungrouped shapes with group ID: ${firstGroupId}`); + }); 'PowerPoint.ShapeLineDashStyle:enum': - >- // Link to full sample: diff --git a/view-prod/powerpoint.json b/view-prod/powerpoint.json index 6563b54a1..937983a3a 100644 --- a/view-prod/powerpoint.json +++ b/view-prod/powerpoint.json @@ -9,6 +9,7 @@ "powerpoint-scenarios-searches-wikipedia-api": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/scenarios/searches-wikipedia-api.yaml", "powerpoint-shapes-get-set-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml", "powerpoint-shapes-get-shapes-by-type": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml", + "powerpoint-shapes-group-ungroup-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml", "powerpoint-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml", "powerpoint-add-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml", "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml", diff --git a/view/powerpoint.json b/view/powerpoint.json index 7f1b28742..af639f65f 100644 --- a/view/powerpoint.json +++ b/view/powerpoint.json @@ -9,6 +9,7 @@ "powerpoint-scenarios-searches-wikipedia-api": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/scenarios/searches-wikipedia-api.yaml", "powerpoint-shapes-get-set-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/get-set-shapes.yaml", "powerpoint-shapes-get-shapes-by-type": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/get-shapes-by-type.yaml", + "powerpoint-shapes-group-ungroup-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/group-ungroup-shapes.yaml", "powerpoint-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/shapes.yaml", "powerpoint-add-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/add-slides.yaml", "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/insert-slides.yaml", From 8b38053503c4a0f9d1747a0f4629fe2bce213781 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Tue, 6 May 2025 14:30:21 -0700 Subject: [PATCH 31/71] [PowerPoint] (shapes) Add 'Move group' to group-ungroup snippet (#983) * [PowerPoint] (shapes) Add 'Move group' to group-ungroup snippet * Fix typo --- .../shapes/group-ungroup-shapes.yaml | 43 ++++++++++++++++--- snippet-extractor-output/snippets.yaml | 16 ++----- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/samples/powerpoint/shapes/group-ungroup-shapes.yaml b/samples/powerpoint/shapes/group-ungroup-shapes.yaml index 9ab621906..9af73fa46 100644 --- a/samples/powerpoint/shapes/group-ungroup-shapes.yaml +++ b/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -9,6 +9,7 @@ api_set: script: content: | document.getElementById("group-shapes").addEventListener("click", () => tryCatch(groupShapes)); + document.getElementById("move-group").addEventListener("click", () => tryCatch(moveGroup)); document.getElementById("ungroup-shapes").addEventListener("click", () => tryCatch(ungroupShapes)); document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); @@ -16,11 +17,9 @@ script: await PowerPoint.run(async (context) => { // Groups the geometric shapes on the current slide. - // Get the current slide. + // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - - // Get the shapes. slide.load("shapes"); await context.sync(); @@ -39,15 +38,44 @@ script: }); } + async function moveGroup() { + await PowerPoint.run(async (context) => { + // Move the first shape group to the top-left of the current slide. + + // Get the shapes on the current slide. + context.presentation.load("slides"); + const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); + slide.load("shapes"); + await context.sync(); + + const shapes: PowerPoint.ShapeCollection = slide.shapes; + shapes.load("items/type,items/id"); + await context.sync(); + + // Move the first grouped shapes. + const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); + if (shapeGroups.length == 0) { + console.warn("No shape groups on the current slide so nothing to move."); + return; + } + + const firstGroupId = shapeGroups[0].id; + const shapeGroupToMove = shapes.getItem(firstGroupId); + shapeGroupToMove.top = 0; + shapeGroupToMove.left = 0; + await context.sync(); + + console.log(`Moved shape group with group ID: ${firstGroupId}`); + }); + } + async function ungroupShapes() { await PowerPoint.run(async (context) => { // Ungroups the first shape group on the current slide. - // Get the current slide. + // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - - // Get the shapes. slide.load("shapes"); await context.sync(); @@ -132,6 +160,9 @@ template: + diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 1f2e01d6d..654620a2d 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -15230,11 +15230,9 @@ await PowerPoint.run(async (context) => { // Ungroups the first shape group on the current slide. - // Get the current slide. + // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - - // Get the shapes. slide.load("shapes"); await context.sync(); @@ -15471,11 +15469,9 @@ await PowerPoint.run(async (context) => { // Groups the geometric shapes on the current slide. - // Get the current slide. + // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - - // Get the shapes. slide.load("shapes"); await context.sync(); @@ -15716,11 +15712,9 @@ await PowerPoint.run(async (context) => { // Ungroups the first shape group on the current slide. - // Get the current slide. + // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - - // Get the shapes. slide.load("shapes"); await context.sync(); @@ -15751,11 +15745,9 @@ await PowerPoint.run(async (context) => { // Ungroups the first shape group on the current slide. - // Get the current slide. + // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - - // Get the shapes. slide.load("shapes"); await context.sync(); From 80ee730820676f3d22e79af36afbe1b42152e30e Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Tue, 6 May 2025 16:50:36 -0700 Subject: [PATCH 32/71] [PowerPoint] Add export-import-slide snippet (#978) * [PowerPoint] Add export-import-slide snippet * Updates based on suggestions * API mappings * Apply suggestions from code review Co-authored-by: David Chesnut --------- Co-authored-by: David Chesnut --- playlists-prod/powerpoint.yaml | 9 + playlists/powerpoint.yaml | 9 + .../slide-management/export-import-slide.yaml | 306 ++++++++++++++++++ snippet-extractor-metadata/powerpoint.xlsx | Bin 14411 -> 14467 bytes snippet-extractor-output/snippets.yaml | 42 +++ view-prod/powerpoint.json | 1 + view/powerpoint.json | 1 + 7 files changed, 368 insertions(+) create mode 100644 samples/powerpoint/slide-management/export-import-slide.yaml diff --git a/playlists-prod/powerpoint.yaml b/playlists-prod/powerpoint.yaml index aae374492..799327b7c 100644 --- a/playlists-prod/powerpoint.yaml +++ b/playlists-prod/powerpoint.yaml @@ -142,6 +142,15 @@ group: Slide Management api_set: PowerPointApi: '1.5' +- id: powerpoint-slide-management-export-import-slide + name: Export and import slide + fileName: export-import-slide.yaml + description: Shows how to export and import a slide. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml + group: Slide Management + api_set: + PowerPointApi: '1.8' - id: powerpoint-tags name: Work with tags fileName: tags.yaml diff --git a/playlists/powerpoint.yaml b/playlists/powerpoint.yaml index 4d09312d4..873c655ff 100644 --- a/playlists/powerpoint.yaml +++ b/playlists/powerpoint.yaml @@ -142,6 +142,15 @@ group: Slide Management api_set: PowerPointApi: '1.5' +- id: powerpoint-slide-management-export-import-slide + name: Export and import slide + fileName: export-import-slide.yaml + description: Shows how to export and import a slide. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/export-import-slide.yaml + group: Slide Management + api_set: + PowerPointApi: '1.8' - id: powerpoint-tags name: Work with tags fileName: tags.yaml diff --git a/samples/powerpoint/slide-management/export-import-slide.yaml b/samples/powerpoint/slide-management/export-import-slide.yaml new file mode 100644 index 000000000..36711aca3 --- /dev/null +++ b/samples/powerpoint/slide-management/export-import-slide.yaml @@ -0,0 +1,306 @@ +order: 5 +id: powerpoint-slide-management-export-import-slide +name: Export and import slide +description: Shows how to export and import a slide. +host: POWERPOINT +api_set: + PowerPointApi: '1.8' +script: + content: | + document.getElementById("export-slide-button").addEventListener("click", () => tryCatch(exportSlide)); + document.getElementById("clear-exported-slide-button").addEventListener("click", () => tryCatch(clearExportedSlide)); + document.getElementById("import-slide-button").addEventListener("click", () => tryCatch(importSlide)); + document.getElementById("slide-image-button").addEventListener("click", () => tryCatch(addSlideImageToNewSlide)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + async function exportSlide() { + // Exports current slide. + await PowerPoint.run(async (context) => { + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const slideBase64DataResult = slide.exportAsBase64(); + const imageBase64DataResult = slide.getImageAsBase64({ height: 300 }); + await context.sync(); + + localStorage.setItem("exportedSlide", slideBase64DataResult.value); + localStorage.setItem("exportedSlideImage", imageBase64DataResult.value); + + updateSlideImage(imageBase64DataResult.value); + + console.log("Slide was exported."); + }); + } + + function clearExportedSlide() { + // Clears exported slide. + localStorage.removeItem("exportedSlide"); + localStorage.removeItem("exportedSlideImage"); + updateSlideImage(""); + console.log("Exported slide was cleared."); + } + + async function importSlide() { + // Imports the slide that was most recently exported. + const slideBase64Data = localStorage.getItem("exportedSlide"); + if (slideBase64Data === null) { + console.warn("Unable to import. You must first export a slide."); + return; + } + + await PowerPoint.run(async (context) => { + const currentSlide = context.presentation.getSelectedSlides().getItemAt(0); + currentSlide.load("id"); + await context.sync(); + + context.presentation.insertSlidesFromBase64(slideBase64Data, { targetSlideId: currentSlide.id }); + }); + } + + async function getSlideImage(options?: PowerPoint.SlideGetImageOptions): Promise { + // Gets slide image. + return PowerPoint.run(async (context) => { + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const imageBase64Result = slide.getImageAsBase64(options); + await context.sync(); + + return imageBase64Result.value; + }); + } + + async function getImageDimensions(base64Data: string): Promise<{ width: number; height: number }> { + // Gets image dimensions. + return new Promise((resolve, reject) => { + const image = new Image(); + image.onerror = () => { + reject(); + }; + image.onload = () => { + resolve({ width: image.width, height: image.height }); + }; + image.src = `data:image/png;base64,${base64Data}`; + }); + } + + async function addSlideWithImage(imageBase64): Promise { + // Adds a new slide including an image. + return PowerPoint.run(async (context) => { + const presentation = context.presentation; + const currentSlide = presentation.getSelectedSlides().getItemAt(0); + const slideCountResult = context.presentation.slides.getCount(); + + currentSlide.layout.load(); + await context.sync(); + + const slideCount = slideCountResult.value; + + console.log(`Adding slide using layout ${currentSlide.layout.id}`); + + // Add a new slide at the end of the presentation. + context.presentation.slides.add({ layoutId: currentSlide.layout.id }); + try { + await context.sync(); + } catch (err) { + console.error(`Unable to add slide (with layout from current slide). ${err}`); + + // Try adding without specifying the layout. + context.presentation.slides.add(); + + try { + await context.sync(); + } catch (err) { + console.error(`Unable to add slide. ${err}`); + throw err; + } + } + + console.log("Slide added"); + + // Get added slide. + const slide = context.presentation.slides.getItemAt(slideCount); + + slide.load(["id"]); + + await context.sync(); + + console.log(`Added slide id: ${slide.id}`); + + // Switch to the new slide. + context.presentation.setSelectedSlides([slide.id]); + try { + await context.sync(); + } catch (err) { + console.error(`Unable to switch to the new slide. ${err}`); + throw err; + } + + console.log("Switched to the added slide."); + + const activeSlide = context.presentation.getSelectedSlides().getItemAt(0); + activeSlide.load(["id"]); + await context.sync(); + + console.log(`Active slide id: ${activeSlide.id}`); + + const imageDimensions = await getImageDimensions(imageBase64); + const shapeAddOptions = { + height: imageDimensions.height, + width: imageDimensions.width + }; + + let shape; + + shape = await addImageToCurrentSlide(imageBase64); + shape.load(["id"]); + await context.sync(); + + // Select the added image. + activeSlide.setSelectedShapes([shape.id]); + await context.sync(); + }); + } + + async function addImageToCurrentSlide( + imageBase64: string, + options?: PowerPoint.ShapeAddOptions + ): Promise { + // Adds an image to the current slide. + const setSelectedDataOptions: Office.SetSelectedDataOptions = { + coercionType: Office.CoercionType.Image + }; + if (options) { + if (options.height) { + setSelectedDataOptions.imageHeight = options.height; + } + if (options.left) { + setSelectedDataOptions.imageLeft = options.left; + } + if (options.top) { + setSelectedDataOptions.imageTop = options.top; + } + if (options.width) { + setSelectedDataOptions.imageWidth = options.width; + } + } + + return new Promise((resolve, reject) => { + Office.context.document.setSelectedDataAsync( + imageBase64, + setSelectedDataOptions, + async (result: Office.AsyncResult) => { + if (result.error) { + console.error(`ERROR in setSelectedDataAsync(): ${result.error}`); + reject(result.error); + } else { + const shape = await PowerPoint.run(async (context) => { + const slide = context.presentation.getSelectedSlides().getItemAt(0); + slide.shapes.load(); + await context.sync(); + + return slide.shapes.items[slide.shapes.items.length - 1]; + }); + resolve(shape); + } + } + ); + }); + } + + async function addSlideImageToNewSlide() { + // Adds an image of current slide to the new slide. + const imageBase64 = await getSlideImage({ height: 500 }); + + await addSlideWithImage(imageBase64); + } + + function updateSlideImage(imageBase64: string) { + const slideImageElement = document.getElementById("slide-image") as HTMLImageElement; + slideImageElement.src = imageBase64 ? `data:image/png;base64,${imageBase64}` : ""; + } + + async function setup() { + await PowerPoint.run(async (context) => { + // Adds a new slide with some content. + const slideCountResult = context.presentation.slides.getCount(); + context.presentation.slides.add(); + await context.sync(); + + const newSlide = context.presentation.slides.getItemAt(slideCountResult.value); + newSlide.load("id"); + newSlide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.hexagon); + await context.sync(); + + console.log(`Added slide - ID: ${newSlide.id}`); + + // Switch to the new slide. + context.presentation.setSelectedSlides([newSlide.id]); + await context.sync(); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      + This sample demonstrates how to export and import a slide. +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      + + + +

      Once a slide has been exported, click the Import slide button to insert into the presentation.

      +

      To add it to a different presentation, open that presentation and select a slide. It will be inserted after the + selected slide.

      +
      +

      Click the following button to capture an image of the current slide and add it to a new slide at the end of the presentation.

      + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + + img { + border: 5px solid #555; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js + + office-ui-fabric-js@1.4.0/dist/css/fabric.min.css + office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css + + core-js@2.4.1/client/core.min.js + @types/core-js \ No newline at end of file diff --git a/snippet-extractor-metadata/powerpoint.xlsx b/snippet-extractor-metadata/powerpoint.xlsx index bd9539d1c32f638e3911527b849450b60d4de632..a99d06f28514d92448bf5bef91277979840e4da9 100644 GIT binary patch delta 6616 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 delta 6566 zcmZ8`1yCGYu=e6^0fGjH4YEjZ2@AoUY;e~E_uw!{fP^3kiw3tKi!Bh`gNEP)4-%Z< z&SF3JzE^esdQ&x1T{GXAnm*lMpKtnvyAQfm>EPh?7JVZ_qJuzFa8n#=V97O|pENkT z_8#pjGYsuSjaheG8v+y6b)1&g;}z?~x3E!vp>qZ-r6t;!nw7ecA&;Ki?O*Q?XPKPq z+B>B=H5QY<<8!j9k{}naoW?`F1)L-M?I_DVjiSG>+l?4`iQl4ZtI0i1c)EK*Ax#?E zxjN*=dg+v9d3zCd21Hpv(kDvYszgVGGh4o&G5^=naSx~YdafUiUNZ03mH4|IdIal8 z4fT;mPh{A*OVClyo$224i0b$bT^*OE-kWivvg|iI9n9n@w@=QzibHDY4SX|upGyA*ptqR=M ztI{5}nJj=JB%82+7fh1C-)VOF?)_Jp1JuygcY;0)rhG6#mJ&yQG~yvQX;uyuXRD~s zt4)?Dd~tYi2HsrB9}PsL<|mx4VUs0$sDITHA1UaVFLEjPYt}uj;u0b`U+WCxP4jso zWvdWM$!yaqg^65}$pJ7zRfz0jU$BnoqJ4;UIO1kx#ISXs z6!EF1GIwjmLBgG~qFffVy3AZWgGv`8;mi&vuLKO)-PxLsIH?IuQ!9UMO2Jc;zLw+1 znyO)5pNAnIDn7Sitlqnm%ZOS&icdkjHq<*>vl?|}Rtj##;%9h7Yx=2NV2=k^Xg(}wE(Idg08?Qv z?re7;-_k>aWGYX}(nlIHJ#|%9N-bd~G}O)LgjHvT^m>tE2@4yvFCOb<+l3JUop_~L z-h1y=##pR|99`mwRi!##U!*H?HC2pVFspK&5aUAyg5j@dMS;&MZeI(Mla4;qdkLG* zWn)i-R10p8-!rKvV&i8uIxiD&1)HmkUH*(Vw-}JLoTYgkuQue}!qb1CB9_Uqvgc9z zel;+0V{m@V3aP9lDhhvUyZ|`>TzV&C+Dh;f3-*}CLb2%t%P{dxGtx5F9B zP|doa>hC@lbw+984OT3ov#`3yaHBn4QW?jzkh2t!!10b*$Js=g$7`7Zdi$+XPb=R= z?>n3*>_gF(oSZvL;`x16Ua!03eOV!pu@1IEs!#QIm}|LRCmf+q$oV{K5i+J%2>zmI zpW0*nr(8B&7r=Ka8rzBw)*sn<>dO`v=Dt+kmj-1hnq^b!r+eYlKyGyt?`Glc^_PiS zi*${M!a7JZ21!+f%--|^5;*G4Lleu2EOt3pSN^n6S?~7X)vfRS4E?)m4g!Jh@Bh6d zrvG(WP$Y~nXFtT4OxB}vU8c6HJrBUN54ltQD5gALf1pn4dv!#Zc4(d+U*Pq#kv_JT zgbxTtot_=9{Eh01;sb6^HU^v1w>O3cml&nnYw!J=f45xu07lY*f!BRNiWVOuH0Tbs zzp-CGF|_)+#dW!hk~K^_0WKy}(Kjp)e_ zm-I4yXHQwHdPPzFA&kyBY`m$N4=NWZAFYxdg~ z&0#46ZE{#7@R-iA%FWZq1MQTShk__%8cHNohD8JsnX*{%+I;<^XFNc3JS)}TgFH-# zTGKiD{@BYEi6kT_l7yB(C~4Hso+)F{1js6WjI}jrxK49k*-%Q1aG8SU@Ax`5@jbOe zBGCzapp}q?n>m|Y{g6^?tj(~n$8_9Pqqj+X$pbO~x>rqSwWGN}VNvss#py6>yw*wX zx3t6^aQzv(C9U6t{#FW56`2%^*-X^{$@5q3Xy-7bbU}2ReHjU*g1L6WEn@fJRa0lU z>is7!)CN*Iy*64}EyXTS@BEJQ_l>LqBkZdK!2xlh3)uK=qE-!1n)4U-f^<%q zbx#3^b&!b4S*Y12@0qUD_rx#Q+G9~V?O3&wmiJEMJEl(#II84d^{AgN+uYXvJHpvI zsQ4*Lrjp9$o{QI7)fu~ZD}2OlxW$%uK4q4~1Y%^ug>9qy1h@FTT&a%%B>1@)O~waV@l-Cm0OoBv_eLQOSgSsnHyDtsFyM!!T&vUaz&(4u zo-WJd5tH9&%kS@Ix6nQzQsB6Hi+M_42KU^iXMw&CaU~5sr1zlsERhfluLNe;XONrG ztlOO`h-F53mG;qQI{HrwSA8o7KC9t2xN%%qk$x4_2@Dzi;j*ND$rZy+(A;XkKxwoe zHA4A!ES#J@8TD&LX5Zty$ef>M5mQifN2SN+XUPCam%R$p<*o0Fiu3M`$mb<9AH=_r z=agbDc3c&L*A@r8WL;{l^jp4X_~U5nT6yZ$#u%g|RlI5I(qI89rsvypa)U9o2(_bok^LaCbTvtxZ4-)$ymth2ZqA?abe`@knk zsDxGhMUM=w{ahUI>SI?nd8XodPrmZws_bn#(#7GoC##6!=n}EQujqhIAH>YIzq#}% z6kApEnSk?vxc{`?5pB_=V@Rn?dh<2-bMn08mNT>Jk6sO0NI4~ehbjbjiz}Q|q>IjH ztu(hoVKHbWO^?4GAtbbB{~61xJw``l%P~5 z!x|GkC0cO16Dgw&-2#Y51E4|5x0;Hy>e+>V)cxJ^y2pnCc-Er((3A3w$1McSxE>ea zfK_?U9$xM;PEN0KDNNVsSWsZaojj@M#pOLPk~f_*&&b$jqOFrI%*B;o>86a-aZ)7F zGRA{s;?sWj z{7P88$CjsL5Y+0EJ`pkL+EtK;Nz4v|A<5Moz%s1~;gbNnBA4o+fa1d!fRiURL$YkW zR`Ln9@ygyq`Q+BO-g`gf2SWxANwWV#97n3dWA`uy(=L`K`Dr$91u% z5}RUM55&_j#V*E|uOJ*aTESBNQHD+=Y2Z%jxWgr*%jBW3Jfo3QfKRAe9Zq>)_4N)- zXXA^;uf|9?(fxCNe63FA9wQ{lb1_3JRiC;n;?SHRG8rR8k_w!r^y@P1hJsYdgxdjdPqj#0*i>(Z9AjKRi-vO~7bu zt_L1?k%Yl+-1F*m*#K{ApTUw%!GGo3Q?y@MGk+hrml_2TCdo-(GLiiT z790MQWkAbS((n%Q7B9za0FBEP^x#SM4@^KzQ@Ppq=A}b zyZOdF;D=&1RCl`joYO-Wz;k*B?ULUY_a$E7ipzOOv?|14LNbGNPIZe6Ypg%a9n*LR zR|Z_P#+3B?P2gn*n|)GiCZ|~747Xw~PG31XWoXWE&iqz?W_1Boe?n*YzS+^k)RNhi z;A5V7R_HR|%O~Js5=CzP@9k~FV5!$7Jaol82W~R;#k#;lfQs%yC;8}dO1t&+*mF9M z#{PwF;}x5Wd}>Bb=)-7C>pV_H94arP7&4xsQL^8@SOQvu%9nq`5YP-NzRo49xuZ3Ek`5P3vUkJWBT52!U|eRyMsPXm(V3OATFj+y_uby&>L`>=O=BY+Jcg{a2q)_ z)-iJy?-k>YVq+zsx56ITlCQ96Cvw+swfj6Bs2eXZ_CSz`h_AKyoxE0-XmY|*3Mh5_ zY7=uyK*Gx9smtFOdsNgsnP#m+$3oDRR3IQdN(-2CRGKS%6L<4(&Yxro`Sdo%r&mX9 zy8Pq`WkH)ZWl|N43-Ug+WU=XOAt$H9U$zE1-^HJl?^G68c@*wMnZmZNzj}DEb6FYm ziU~#$6R>{ftE`9FC%EU#pjz6;x9Ft-nU(zchW>PlGUO=D}26<(mkPcZ-4Y^upF#b1rUGtgAB17Ns2UP2G}`Xth}mt5MbNZt^0)@Je=_z zD^5K@s(jiw7JYvHrQYUZqI^a&w#TGXb4|OV?qMdUbTH9gQtDxV=$QvzA^W^?l`aq zU|?7I(r88}IPu;EI>+-V4c2F+6ZQ07W3b$b>(v)%5ERC22=-oUD2xz)VqfDsV2qL;5xye(kp$3|bS`D2l z#yipi5RHPFqoaoJ5V7Q%(}*DsQ{T|~J86GrvqNbw5?XpTps7r}g~ealn+XW0>+u!Z z-u7_@)%Gn=b^Z*XLuJ7=rIyl$`xnwiIC9~U!BuG*`udi%aSc%;fl5--7uO6_0|_K4 zk$6ASq^5QZa*>qLm=jBED-7H#S@#e&=s*8XfGmjBvigA{Z4dmQ_+N_HS$f#oyz=s} zcX{(KQ{L$h#m$S5woz?K;!1qOQD}BX;^NPT)`XH{G?$Y}a{Aj8Am!h&=z6pmwrgY; zYE3b(mwj9751`mgS^6nTKeQ<2%@qLpTQGKVgZibL6{Hd0Bgz6Q~UJsv&Zs#Mxb4ttHEEt zG-mNiPRgF)#Gc$tPmB6_j~-`ZED(dIr>C#1HrA{nKN_=Vq$f3`Cf!+xwct2un7Wj0 z560(IL*;Rh!+L{lI40AMKrG~@wWZxyCCQE`tL4_{z(|ay@TiH;qUNl5w}|(hciPy_ zrDs_^a#{wk1zY>Zf+-ZmERUvXCP0DNp~zB{XN^Dn^{zj?OASc z>+}o@gSHC)Xtqjt^fstdPzAh@@J_=K{AJrBKjWp4%FBVxTiM)QN&s_djeE?#I0yIl zqt&v3)Ki}g7CW%xvzJ-FFSBA>{h*8yni|Dc zBV0d(yW!{`XZpX}PyiROL?k+$ZGl^;R%o6ASSWO2EaU0Z#xQlT@<#Xfj(01Ogh5GU z7$jifND+pwny~Lva+Jrj{f+}qcjN5iL!`ZqAg-}frzq+{8Xhf@f$UZw>yiIN8K{{`SK|F` zvo|08hY^xt;NIhx%E*_Fs7?ty8XKQKcEr8|C;bZaG90cu{cp-zq${z=sbhrnEX!Za zjTrQLfJpW>qksVaS0f-kKd?!2k9E@%qTZ3gtcIf&x7Mm!35MC)!1v521}0iqSvk%* zPDkqoOcMbMhCR;lZSBwrUJmZuWL1&5kv}$Kkx@c!TYMkN>n-`}%k9?BFf(SV?7E}M zMFh@?ZW08_$3_i|qWvOCNPPM~^YJ1b^GbNUHqer{xAZTlObuUWzn-ErA~7?tlh)2G zOF%gW-hw+7*0O37{>IW4+%kO6%$oWW_$aC{W{Es&;A7Wmx;{7Y-1jA_8` zN>IOMZGMqP`0T8)%Dwr=do;KV4n++k2Q3Efl3lW0K zVUm-7inFl7PLL)nA!L_H{h=+N8^p91qb(>SM4ouhh`aDST;o$L&Oc=WOR~s*7#BVQ z76D=ll_wBmUI&)(E^ZQ2AjLXCxSh~_8^?eRd|$dOl3dD7w^jeF;l7FywS}nGOn0Zr zm!wv5aMCF1OR>GVfP)n1#rgU)&tK~dUgntGSe{+GUYJQ=aN!pz)yLE?YJFsL-_s)+ z|DC21yE4=}Ba1q;Gk+v%$Szs0`-3DX0eGPdm)#MNX6A`JzYifC51!S?5&q8B8a&l{ z9>uChPqb%s`;1l+VbmKyx95CL9_YFhLeliDH!ZfEz~aNKlNVyqPF@VTgUC`kVbnSQ zXmA=v>9x)KQ^I1d$EEEyiz=PpC_7ViAMbQ#(riI>4O#HV6rzXvl# zUtE~YZf#sDSiKTZ75f>oEQKY;%31urA7s_CLZpFLI>G2(-Q?4YQsQfsz$lc(Y5iGQ zZ;JXz{*xRr?+k8L4_{7;OhZmc&j6lzrDJ)-I=5e^ zt+RZ_8pZTXqRuK@eN#}R7)}ER?qqQZTCNazl|22*=-%unt?FAA^GWp^+Ecq@E$x2a z&${$zFTYZD@NedHP@peRV0BU85szUdo{bMZj`AK6u{|Iwm@c&(vPdeTpa5E2K#Fc{ z;phb#!}ggk=J?&2eYJxfo7UjMuZ|7R#xnBg+D@NKdkppQk5K;*D>fJg4U=Iie4w^d z)|AuPDSf;f?dnUsZFI5~zoNXyB6uDJU9wKozxbn&_CY;|i;Yj7)B=X5ZKZ>5CTyD| z`-Mf(oUgCRI6fG0SHd72sRJyXM=V-*iw3RR>n1!x*TE;FrXyCx7wG37m`EUHdv@s% zcXB$lI-!?YfATuvFm(Xo)ZhtYxXmT$6WPcpD7w0M%OhQ^c@SCE&RbSKIu%hhLMF|7 zXmb5@DRG1SLQjk9=Cj=4Mx|yH?=Nm<1c3HWuLuLAt%iX~0m261!nJU)YH+z((XcvA zm3lO4_<1Mqa6483T5p{tFGWPdgNIori<06EMS3ocl;6VY`-CC~3DeA+Vnc@#Q1lZ-wAk zPYAt)dkX{xhb=v{txOS?C3A-EG721G-2ReWV~y_ zbO#PmN)dvc&C>q3?>oTxL5$#aNRY1yMEi61ng|=4x{IEQD%@BiEvVLTc)wod8pAK} z(%kA9o^|_IZV#nfRXEuZ=9XvnecT_ae~VTHuOasTw_5nZwZ;vf7k!Rq2d5Exj>ZAk7vsQI5c&u4{{Zr^Ho*V@ diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 654620a2d..43ac4f917 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -15935,6 +15935,48 @@ slide.delete(); }); }); +'PowerPoint.Slide#exportAsBase64:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml + + + // Exports current slide. + + await PowerPoint.run(async (context) => { + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const slideBase64DataResult = slide.exportAsBase64(); + const imageBase64DataResult = slide.getImageAsBase64({ height: 300 }); + await context.sync(); + + localStorage.setItem("exportedSlide", slideBase64DataResult.value); + localStorage.setItem("exportedSlideImage", imageBase64DataResult.value); + + updateSlideImage(imageBase64DataResult.value); + + console.log("Slide was exported."); + }); +'PowerPoint.Slide#getImageAsBase64:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml + + + // Exports current slide. + + await PowerPoint.run(async (context) => { + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const slideBase64DataResult = slide.exportAsBase64(); + const imageBase64DataResult = slide.getImageAsBase64({ height: 300 }); + await context.sync(); + + localStorage.setItem("exportedSlide", slideBase64DataResult.value); + localStorage.setItem("exportedSlideImage", imageBase64DataResult.value); + + updateSlideImage(imageBase64DataResult.value); + + console.log("Slide was exported."); + }); 'PowerPoint.Slide#setSelectedShapes:member(1)': - >- // Link to full sample: diff --git a/view-prod/powerpoint.json b/view-prod/powerpoint.json index 937983a3a..c612b45b2 100644 --- a/view-prod/powerpoint.json +++ b/view-prod/powerpoint.json @@ -15,6 +15,7 @@ "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml", "powerpoint-basics-get-slide-metadata": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-slide-metadata.yaml", "powerpoint-slide-management-get-set-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-set-slides.yaml", + "powerpoint-slide-management-export-import-slide": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml", "powerpoint-tags": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/tags/tags.yaml", "powerpoint-text-get-set-textrange": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml" } \ No newline at end of file diff --git a/view/powerpoint.json b/view/powerpoint.json index af639f65f..06b407359 100644 --- a/view/powerpoint.json +++ b/view/powerpoint.json @@ -15,6 +15,7 @@ "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/insert-slides.yaml", "powerpoint-basics-get-slide-metadata": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/get-slide-metadata.yaml", "powerpoint-slide-management-get-set-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/get-set-slides.yaml", + "powerpoint-slide-management-export-import-slide": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/export-import-slide.yaml", "powerpoint-tags": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/tags/tags.yaml", "powerpoint-text-get-set-textrange": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/text/get-set-textrange.yaml" } \ No newline at end of file From cb9dea08dd23948bf6d087ff43b5dd9b8fd3a1ef Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 7 May 2025 10:41:14 -0700 Subject: [PATCH 33/71] [PowerPoint] Add add-modify-tables snippet (#979) * [PowerPoint] Add add-modify-tables snippet * Update how to update table values * Update based on feedback and add API mapping --- playlists-prod/powerpoint.yaml | 27 +- playlists/powerpoint.yaml | 27 +- .../powerpoint/shapes/add-modify-tables.yaml | 366 +++++ samples/powerpoint/shapes/shapes.yaml | 1 + snippet-extractor-metadata/powerpoint.xlsx | Bin 14467 -> 16114 bytes snippet-extractor-output/snippets.yaml | 1449 +++++++++++++++++ view-prod/powerpoint.json | 3 +- view/powerpoint.json | 3 +- 8 files changed, 1856 insertions(+), 20 deletions(-) create mode 100644 samples/powerpoint/shapes/add-modify-tables.yaml diff --git a/playlists-prod/powerpoint.yaml b/playlists-prod/powerpoint.yaml index 799327b7c..f427754c4 100644 --- a/playlists-prod/powerpoint.yaml +++ b/playlists-prod/powerpoint.yaml @@ -71,6 +71,15 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/scenarios/searches-wikipedia-api.yaml group: Scenarios api_set: {} +- id: powerpoint-shapes + name: 'Insert shape, line, and text box' + fileName: shapes.yaml + description: 'Inserts geometric shapes, lines, and text boxes to a slide.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml + group: Shapes + api_set: + PowerPointApi: '1.4' - id: powerpoint-shapes-get-set-shapes name: 'Get, set, load, and save shapes' fileName: get-set-shapes.yaml @@ -89,6 +98,15 @@ group: Shapes api_set: PowerPointApi: '1.4' +- id: powerpoint-shapes-add-modify-tables + name: Add and modify tables + fileName: add-modify-tables.yaml + description: Shows how to add and modify tables in a presentation. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + group: Shapes + api_set: + PowerPointApi: '1.8' - id: powerpoint-shapes-group-ungroup-shapes name: Group and ungroup shapes fileName: group-ungroup-shapes.yaml @@ -98,15 +116,6 @@ group: Shapes api_set: PowerPointApi: '1.8' -- id: powerpoint-shapes - name: 'Insert shape, line, and text box' - fileName: shapes.yaml - description: 'Inserts geometric shapes, lines, and text boxes to a slide.' - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml - group: Shapes - api_set: - PowerPointApi: '1.4' - id: powerpoint-add-slides name: Add slides to a presentation fileName: add-slides.yaml diff --git a/playlists/powerpoint.yaml b/playlists/powerpoint.yaml index 873c655ff..7030c5a3d 100644 --- a/playlists/powerpoint.yaml +++ b/playlists/powerpoint.yaml @@ -71,6 +71,15 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/scenarios/searches-wikipedia-api.yaml group: Scenarios api_set: {} +- id: powerpoint-shapes + name: 'Insert shape, line, and text box' + fileName: shapes.yaml + description: 'Inserts geometric shapes, lines, and text boxes to a slide.' + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/shapes.yaml + group: Shapes + api_set: + PowerPointApi: '1.4' - id: powerpoint-shapes-get-set-shapes name: 'Get, set, load, and save shapes' fileName: get-set-shapes.yaml @@ -89,6 +98,15 @@ group: Shapes api_set: PowerPointApi: '1.4' +- id: powerpoint-shapes-add-modify-tables + name: Add and modify tables + fileName: add-modify-tables.yaml + description: Shows how to add and modify tables in a presentation. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/add-modify-tables.yaml + group: Shapes + api_set: + PowerPointApi: '1.8' - id: powerpoint-shapes-group-ungroup-shapes name: Group and ungroup shapes fileName: group-ungroup-shapes.yaml @@ -98,15 +116,6 @@ group: Shapes api_set: PowerPointApi: '1.8' -- id: powerpoint-shapes - name: 'Insert shape, line, and text box' - fileName: shapes.yaml - description: 'Inserts geometric shapes, lines, and text boxes to a slide.' - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/shapes.yaml - group: Shapes - api_set: - PowerPointApi: '1.4' - id: powerpoint-add-slides name: Add slides to a presentation fileName: add-slides.yaml diff --git a/samples/powerpoint/shapes/add-modify-tables.yaml b/samples/powerpoint/shapes/add-modify-tables.yaml new file mode 100644 index 000000000..e3626ba35 --- /dev/null +++ b/samples/powerpoint/shapes/add-modify-tables.yaml @@ -0,0 +1,366 @@ +order: 4 +id: powerpoint-shapes-add-modify-tables +name: Add and modify tables +description: Shows how to add and modify tables in a presentation. +host: POWERPOINT +api_set: + PowerPointApi: '1.8' +script: + content: | + document.getElementById("add-basic-table").addEventListener("click", () => tryCatch(addBasicTable)); + document.getElementById("table-width-height").addEventListener("click", () => tryCatch(tableWidthHeight)); + document + .getElementById("table-column-widths-row-heights") + .addEventListener("click", () => tryCatch(tableColumnWidthsRowHeights)); + document.getElementById("table-values").addEventListener("click", () => tryCatch(tableValues)); + document.getElementById("table-merge-areas").addEventListener("click", () => tryCatch(tableMergeAreas)); + document.getElementById("table-cell-fill-font").addEventListener("click", () => tryCatch(tableCellFillFont)); + document.getElementById("table-borders").addEventListener("click", () => tryCatch(tableBorders)); + document.getElementById("table-indent-margin").addEventListener("click", () => tryCatch(tableIndentMargin)); + document.getElementById("table-cell-alignment").addEventListener("click", () => tryCatch(tableCellAlignment)); + document.getElementById("table-from-shape").addEventListener("click", () => tryCatch(getTableFromShape)); + document.getElementById("update-table-values").addEventListener("click", () => tryCatch(updateTableValues)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + async function addBasicTable() { + // Adds a basic table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a simple table, specifying the row and column count. + shapes.addTable(3, 4); + await context.sync(); + }); + } + + async function tableWidthHeight() { + // Specifies the width and height of a table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying the width and height. + shapes.addTable(3, 4, { + width: 600, + height: 400 + }); + await context.sync(); + }); + } + + async function tableColumnWidthsRowHeights() { + // Specifies the column widths and row heights of a table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying column widths and row heights + shapes.addTable(3, 4, { + columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], + rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] + }); + await context.sync(); + }); + } + + async function tableValues() { + // Specifies a table's values. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying cell values. + const shape = shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ] + }); + await context.sync(); + }); + } + + async function tableMergeAreas() { + // Specifies the merge areas of a table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying one 2x2 merged area. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "", "HHHH"], + ["1", "", "", "1234"] + ], + mergedAreas: [{ rowIndex: 1, columnIndex: 1, rowCount: 2, columnCount: 2 }] + }); + await context.sync(); + }); + } + + async function tableCellFillFont() { + // Specifies the font formatting and fill colors of the cells in a table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); + } + + async function tableBorders() { + // Specifies a table's borders. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); + } + + async function tableIndentMargin() { + // Specifying the indents for a table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying the indent level for cells. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [{ indentLevel: 0 }, { indentLevel: 1 }, { indentLevel: 2 }, { indentLevel: 3 }], + [{ indentLevel: 0 }, { indentLevel: 1 }, { indentLevel: 2 }, { indentLevel: 3 }], + [{ indentLevel: 0 }, { indentLevel: 1 }, { indentLevel: 2 }, { indentLevel: 3 }] + ] + }); + await context.sync(); + }); + } + + async function tableCellAlignment() { + // Specifies the horizontal and vertical alignments of the cells in a table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying horizontal and vertical alignment. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + horizontalAlignment: PowerPoint.ParagraphHorizontalAlignment.justify, + verticalAlignment: PowerPoint.TextVerticalAlignment.middle + } + }); + await context.sync(); + }); + } + + async function getTableFromShape() { + // Gets the table from a shape. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedShapes(); + const shapeCount = shapes.getCount(); + shapes.load("items"); + await context.sync(); + + if (shapeCount.value > 0) { + const shape = shapes.getItemAt(0); + shape.load("type"); + await context.sync(); + + // The shape type can indicate whether the shape is a table. + const isTable = shape.type === PowerPoint.ShapeType.table; + + if (isTable) { + // Get the Table object for the Shape which is a table. + const table = shape.getTable(); + table.load(); + await context.sync(); + + // Get the Table row and column count. + console.log("Table RowCount:" + table.rowCount + " and columnCount: " + table.columnCount); + } else console.log("Selected shape isn't table."); + } else console.log("No shape selected."); + }); + } + + async function updateTableValues() { + // Updates a table's values. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table (which is a type of Shape). + const shape = shapes.addTable(4, 3); + let table = shape.getTable(); + table.load(); + await context.sync(); + + // Update values in the table. + for (let rowIndex = 0; rowIndex < table.rowCount; rowIndex++) { + for (let columnIndex = 0; columnIndex < table.columnCount; columnIndex++) { + const cell = table.getCellOrNullObject(rowIndex, columnIndex); + cell.text = generateRandomString(); + } + } + }); + } + + function generateRandomString(length: number = 5): string { + // Generates a random string. + const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + let result = ""; + + while (result.length < length) { + const randomIndex = Math.floor(Math.random() * characters.length); + result += characters.charAt(randomIndex); + } + + return result; + } + + async function setup() { + await PowerPoint.run(async (context) => { + // Adds a new slide with some content. + const slideCountResult = context.presentation.slides.getCount(); + context.presentation.slides.add(); + await context.sync(); + + const newSlide = context.presentation.slides.getItemAt(slideCountResult.value); + newSlide.load("id"); + newSlide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.hexagon); + await context.sync(); + + console.log(`Added slide - ID: ${newSlide.id}`); + + // Switch to the new slide. + context.presentation.setSelectedSlides([newSlide.id]); + await context.sync(); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      +

      This sample shows how to add and modify tables.

      +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      + + + + + + + + + + + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js + + office-ui-fabric-js@1.4.0/dist/css/fabric.min.css + office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css + + core-js@2.4.1/client/core.min.js + @types/core-js \ No newline at end of file diff --git a/samples/powerpoint/shapes/shapes.yaml b/samples/powerpoint/shapes/shapes.yaml index 8685c527e..80a1cc305 100644 --- a/samples/powerpoint/shapes/shapes.yaml +++ b/samples/powerpoint/shapes/shapes.yaml @@ -1,3 +1,4 @@ +order: 1 id: powerpoint-shapes name: 'Insert shape, line, and text box' description: 'Inserts geometric shapes, lines, and text boxes to a slide.' diff --git a/snippet-extractor-metadata/powerpoint.xlsx b/snippet-extractor-metadata/powerpoint.xlsx index a99d06f28514d92448bf5bef91277979840e4da9..12fb77cb995698fceb2ed97a90a6d80ceefd2153 100644 GIT binary patch delta 7425 zcmZ8m1yCJLm&JK_fIx89hr2rjclRK{-Ge>c1B8bKch@`!5}e@f7J|Dy++q2?{kL{& zr>1(Qrq1nK-RIsj-F-t{F9PbckP*-#$4kL_$fTe(=VkVHfw>K@lox&(i`&T206c^W zN>9y3uM>+Mx(GcQS4*LHTGya80d5acHf=rx-VSi*mkAh+6Vor zaq00R<&eNt<0T7AM&+Zd)B-CMLH2OgQqxYQ8%d|!utftHwMqm$1HSsLvZ_yb+8+wc zczi(fk~&(w>P{qcav$Bb*-I*?DQk%N@pgCwseWHj6PUN}5*kKTRqItJP$Z>j!3StV zKVsNu-(WY#3_GqYelH^m^4X+ah$MTjuZ>^J+n9J&9@ZdqY?vM93?p{jBN-vLE{LXm zu7pZE{{WYlO??1)sz3VlRD-bk1w%AqTObK^(tNNHoq{ep1mrhEbpEvXY|V{6eb|U2 zbuJpco7;@don7^1=rm!v(Pri;FXcchx+)3SKH6gSB}9@xM#RrL(UHsf3yKLR+15LO z8E}?!5n^4&5b=;Vw@_E6xX$=|1Isn3oF4#iLlG6_eCowXHVi5(Mts$cwa;@=^cDvJ zrpHaMTSKCJuJo)q`x7P(Hth(dxy&v2JRRAt{e@6v%awbUY`$-@r?U;B%__&1CvV!K7Re$$M`$|W zf`l_BT(%=2`V)iqp&DXhK?a?Mo@Fb z-GN47Cvk4J%o>PN5mO#irXA4W@97OE%HiZmap7_j=ew2(os>cFU~%O45Dru>IMf&9 zB$-nz7?@30uoF53$nl>j9#~Ud_KteW5eAD(8%Qu36t|bni?s8MBQhuPLzIJ69#4gY zg1rv4WKx2-ZdT7u&o0Mm5Z35=8WOh4pI*FrYOD3m?LmFPN~(> zY6*5y4byA@y7_Qc;cwNbwf(IA)6QWnce-$#Vy|zk$r z9Cc1>iao!=YRSMO5pvKHz!}aO4Ryei7Co=Ax0_Bc=x;zxSdioge5HO z>&lfpBkpV6kq`1=Rgxd(6rqsZO4`#rz*)iO&O?>W=Yd@lLBwPa(*w3mD9W9c{c!v$ zLG4W2KoviW1P2L1^4>?J5$SOBCr>*kB%(DA5wF{BwDvyj^?uiPkMjI<<3!0O*WTSX zs5_vS{dQj++3wi-_YIM!!b*S6`Bmr`CI13`cdUpvyrPh#lg=3cmbnnVz=zh0636|- zikIS3o?(brI)P`DSCv@N?C%Yo5hZXWCowbpJAS+*`ho}p^ZE+&Pm`Q|Rzuu^(Pv6K z2+y4=!u9imH@wF{#~F4J?1QbLLx|(!4JajxclS(f8>7?lCNWE(gof;ya5b$K^m?(g zax&ATN^bgcH_-X_`TXed=4EvO6!`FL|5|JM^Y-jzHB~hibiV>}GVKU_xp-_cT_b;S z^L;(vxnzH~Z#sG1vwywKC09M!>CGiK74?51zsp3#`t21Py*6f!_I!#jgyYvY0($Ba z^)L`?CPn+xdIHWAKH@`jvhEnfSeGHtt3$cg4VthH=`HWdU+E`dUeq!3f$W#itS|G* zBTVkx9|iSm-WX5EEFhj{A{-F#~!RFYQ5(e98F zj}-Ocf|}6Yx#E!EP|U#p^essAOU4*Eva+zd3-+s5*=(;92`*uNV4mZ*3?KMoPD$&5 za3~{{Ch(M@%m9{Hp*d*@_E+2F5?JCmQK>kisUZvA^ZOFwylX6|&N{S$>__?Rbt=AB z9xiXyM1jQV)s4eC>5uZ{+thjQw{Ofd2Ac;bOI<>in&lTPESKW+4tmwuPh*NAp^*;2 zzK-HKvi&d&`=2@rzK?(YK{4L5RNss9-Jdv1lcqHs_uk$mmH3$Zv{GJKIr@rYV5r#LAV0%pm1@fUy5Z?di?+BD=GY2GLsmL_}M zE>89ow+SgdVsYRiJuQj>uj9?Ho#DEeGHJlqynaF3t4x-Ir9>tl9MY_m=bIuLyx{y zl&L>^9$Fa_MdnkL(t2Z??ZJ9I-1H^F@&$OfkzRqE7f)_P+BuSy>v{1MBnl$Fs074V z02zWnf`Klc;V1t(F}~VZK{!0qnj+}s*I#TbyC|%@INGlY=ovbve(O18tw zi_i7+yjsr6xmK45DMjo%)550d<(JQqAr)w@@I4ML9fGLTTy8j~+Dzm(93-9z(hz+X z>z+F&CRPoEhJp7!gjsG?MWty1O@derKx;vQ*dMk0O{0-|x67$CBV4C(SSpmf?#MhN zmZoeg9ORn#;}aKbva0rzH7hiOd_(jC7d@7jvP;n~mC=QNI8Nk#9jhtkJrs}} zYBm@SLCSZ6 z9HWEXmR99aU(HBL5z8zjwE}O1)CR&ju)#4^dK&t$vt0EZm2uwQcfNGNlu@h~{z zz*%{l_PW7mGBnfKW%CpT5*P+RJ2L`$CFVnSIF@`cQ2ItdV!O;UMTK#D;61aiwsGBh zR!F>wxbYGVQSw-E0a}D>67G9fP<1TS6E(8T-kA4-*3K9Ywyp>cW?w!1SlYOM_c~Wa z5SNCixI*JOt>FRw8ll>GrdO`%R9KTgY6;Uo0j24aWWAP0H@iwkp^S)Zo?zkrx6=0; z+erX!A_1U*nS3Lhn(8|tf-#<%`w&EPUeHyvM5z9mfjV|CzY3Mwz_+p*(3H1Fsby>VwmRdtuX;eFoar(i(Zrq}f zk*LQEu&LiN$3|UsvcNj~-R)p#p4}H=Xu)-&jT+WM%tyk06p7f@cJ{m0VU<~q`fr89 z9Xi~@>?-M>q@+K_k%BsOMaJQ04?aF1&HQaFP>*o!K`)GpaV9EWc&e#RWnUp3)QU)**YUVG=oC)cVV_655VK9t zFJA~L<6PP}8ozr1^uK8ct%>J4IfuIQ~(`|OFQ6UbHw3tR^3Tj zMY`L!@-1vE*@&~LCQZc2=~(_w9R}oms4f&=MIn5!!-n$>#4OhHTLt>Qk$v!EzmG>G z&liC9ZFLZd+foA?$q=EKx|!z^bCv@_S@4j=Yim5sV0(6GL_P-(s;~Y5 z_Ix6suO2BF23bbdW~zI52)-}s397|)xOBoZV~@iP!510HSj6ZEq>u}T_3!tH;N}r? z1-B+RL?exS-1~R-OPCLRGZDx7FKwj1ben=f;!57dS8|;SbYblU=bI%wH1e11Hr<{ui zLlk8Cc1+OBPS^rB}RHP!1EXe6}1nTh_t|JG< zOQK+2TOB1$i}pWrJu_u{TaR^xQ2z-VyQ(Zwv4Skf#Ip$g@Rw@qC)l-pNVMWVnrvAF zv6=DQBF+-Q<9{SZArMNZHvtyB5pSusm@XtDHxQz$Ew>_;o^O}T^%gfDJss*#E~!gUm>OmPfT z@9d@}782OR;F6eOFGKZ4F#0V4H;;>xtcZ-l;@U;aa@1WyKHghgy z{z&=NMN7RF&+#oxd5w@=9AJ)ok4fw49rj79z(!0DZ{u^&+ax7+P}wa-S1JGPOl z+z+*{zzX7B&25JDGLIY&M89Jsb*bJDG6Q8KGs3Hi;tXy_{iiUfhTZHn$Q5wU&-_*ISjCJjoL>H^d0O}5q zjNa(|t2Kpul8B1Xb5i6^wh1;|W?I(cJlM=GX&|&5TElRpbkNw{xM;HGa&#>Ok1w%ieyopf|(_F!WL{vfj{yw zjvNSN9dj*Fngtf`UQ^R*DM8Tl4Gf`Y>Xd2H_;Oz#ghz=lsdREMA}~w#xC@j|0EyT2 zEag|Z#vYUfshlU{c!qOP)i&elruHV*()X|HncrVfG@>kwr!gjA zzFI-F53#q@%aiA_^B;|&Sh^IAPIquDyi=6VQGvoa7Jkzs<1$XE5l9l+D&H>sbmOy_ zz^yWU6%m#Q?LJf$V>T>ERs{SNC{Omy$ir^n`-^x>-EtS1r9ia#)t+g`PX1Zv2TDz) zL5M29gp_opN4rMaMY28Mub99Pu1t{Afr!bjK#vmtl-Q`IymXsuIPE&`hBO{Up}Di4 zaNT+Z_&1h7iq>!9G?4zq+fO=R_g0ECKz%wYap>K7L{uVlqf8eE+u6t#rJ1oK)*Y$AH!;~9=q!{ z{@h;JyzSP5++BFz*DP_dHwS;3c}115pnf<&{k4vahY;#80@C<%g{vG)&0*LI4>|i@ z1jg)o=u_<+S@HcPH4L9~xor^ka)SL41E1sZr#WM8%V<|)3T}=XVTaJT^RR#0CZz1% zpUQ60NpYIGlLZ3XG2G=!EqoBk55IA*=Yw{slSF!dk{-~|G^UFsjhzGS?upog=f9)K zOJVKx*R$TD0j2UhH7BtduDdDTwov4f2HY?9e@zK@@dGLJ8X1`?|q)^ zZOq(0TWWf^**aOfv-&tX#OaMWZSlVA_^>ZTAlisr4K5hN58nz0hw~wA8dH0DPf@c> z;Sfh_$pfPwxdT!~^{wRw)CcpYV`1H`Ita(bc%GrNvxUetU)3(${9jHTgf}^L!xMLQ z?ru*&RF9s*oT)=0a|#zD=fRohkxRF0%3tfL6H|8GjPzGtc)zE&ZDMepX^qgT-6-&l z_Lv&0C{+qDDfP8D9uBEmTYmsYpa_udRDf^X{Le@3eP-p)bq8vnhwl3x&mHW3JJ?w- z@NiiP)vR*FXv7qXR*^{CGU&> z=sYpJKeG2SN=PM_72{TEBxKYl4@AG8&md-Hfvis^(iLqiJK3qbKqf0%%p**nl-$Q| zQ;#rezc_u_ke2Mw5pi1uQabJib8RJ3v#lRAR$#}l$KdtBaH`?fiBpa(|KO~yvW9#H zeSWXiW#rk2=Qu{n`$s3vN*C&6QE^!aex z?-6t7;u+z2jtS{&re+^-1uFL%8E9`d%LG~_4(;|c z>+psX(^j_YF3e%+c$sa^ohrYEaRjg7MDS#!5v7{9_B^k9@lJP#A1cs*Qg*-ku3t7^ zZ^?YfSS*e9M4S)h!_Od&0@sAMVby}D(0xyT;~CecQOrRw-ASsKM&!#<#Tpe>TJqD* z0_V+q9txKgtqLSy#OkD6jM#_?P8fZ#Bu>W&wrxhSWr7^^=}G-Q)<($!v+>^5t0n`H z`4i=eCe=0fk(y%8Hmz_#rpRj_FogMT)h5wt$~-?%(O$463g$Z=n!a zN-UV80hy>q(PT7#YRcP?GMh%ok7Oyj^E3VuOnaZAK6Kv|79UIna#6X+Ox-hQyRbJ| zur>6z2}a~&v}3!-C-^Ns)qsSctVuhig(19sx)BREYf0$X5PnF}%PYlPvhv+1mN!GW zBvh+F9$JnlHt~dIZOmv4qmZs9^l-P`5td$ZbD8}^M~10TR_@ouw<;Uh7Mc?l(E3zp ze;=8<>@wa=aa6~+hL%EXC#63;F|0oWu?e9HN~#fXUJ0TB`Pur#kW>kGPyIgnXPFD#F z3TE-JM1_Alj(XGA|7fd+nYqJfceZ~Y9RFx*mR5KC3h(>25Bp*O!A9g7xtJmvixY7w znJ)34fFCPT2}aQ-Xy2rRi*Si0UfPpSnr}|YV(w_fqPZ^rj&40iK2OS;HhN|grg5}} zx)u%eH>}?MhwCN8@AoIexqC}(8HuR@gSLLH3SKN)_ttLj z>#=XGqle!M)elyILJ(YuIBGDgJR=fq3ZuBuY=KpJ0qScMc&?pmUd(srnh*t&6OqB9JPZ*hDlBlK1mv$V_Tjp~dUGL9wh$B| z$$HW79xw=(7SyE_l*JB^%ifD(r$Lndp!S!EZ-wMRL@1?0HmFv+H>Q`f7k#^+0#?E$ zFa&2^5Vxu)an8sDK-RF9!Fz8xmh3+tz)gP;fz>%6TYJxs%_v(ALp#AwK^Q{8_70h6 zOb?)_t&?PW4#JqA{A7>)%t2CaY}x+;-ScC%K?4o*@L1vLbfVz`w- zbC7-W_&TI&<$AyAA@^d#0&wGKx-at4ZALd@Bn1Cmp5$#_JxIyMpiaDj~+OUd@6JaG?8 z5E5Pxt>7#EGSPlQN9wfmuI;{ZCSUPdVeruO-?RZRQNtq6kuQ`fL)e+=U_t7Nz3lJ9 z*AQQ&hWs*1+?~RH!l#G`ysJ|3j~!aoahy)H^m@E4Infa!kR)?+SLw*|lW*l81m3|~ zj2L{5lIB1aKQ~CW%gk>wCmdJ*M5-C0-57#S+Fc+M=m&OF{^GdaH%k=9)Qyx=#JnRY zCA7!gw|GG+XGMLcX7XqDBPVE25z?1&?)(!m>-V`x>U#R8_zir5!{8_txo+g5znK;A zfcShklwo}(s*u+<%(wWE@H>ps|>^7YwMvCg1h!hKskXDzV1b~9*F8}tSoM>>IbnK-|Dr;cQG#}UpR_9-dg za^r3SvQnFyAa2FV{GN+S#)D2+&W2uLF-jkGk<-I5>g zckf#Fz2}ef$Ju*7XFX@fI(wf4hPhR0W1;WiAAUgUW6=ScE}wacgR*KLf^XqfIK-hc z9Ek{SEnywUX-Qokkq%sQ>(6fscYvj|Bu^95;@6s%y*?*COACRm+ctX1Q*p}O@^nw# zLlU}o)Yh99e{4-JB-1geIv8%&k_knRg|K^y-dx)>QMlhQ|CmAzHta4OZHlB-w81DT zY$7Ho>8Jt7t8=O2+}8>f_&=3|@|h&ZMY}C)Crxif5ckKMN1T7Mb7HTqx2%&4RnpZW zIMeB%5z5w?Rb1xa_~vY7m-`B|8u`(f-Vb4|V^BNyOJ=+PJbn=2;stI+xy63hO~(|n z%cb2dz@DVPix=!2_hsaSb%t@>1gGhgIsm`lgLxiso9H6tqzXvXaqYxiY{$O06GR=~ zsRK(NOGa*FH8k44FgZd3!rN9Cs3w)_$N z(ncoD8?Umh)}<}&$`5O4py-O+BTM$swdr{0i?)=GOUrS-itEgp7Qd1xQNsna3XiJz z1a)4u@UEM+Rv*bDV+zDn!fu#fT)j(-3oc-;W;{ZfbMww1CX>QrDeLNI)xIz3^aVB- zjsfxfdDj?}krYU0mUy~Jq;hu)dUf}DGH}GjaZymMYwfV?>);X8#yYo82d<_&?8=vC zgK6@@XepkrM#^p$+VM>Q|pU&mCd>!E%+cce7FLr zxFRnnKTYC-Kx2x?*Z2&8iOU=>*}Fs5eJQzC)+Od(B~HUAT?dNErg+D-^x#R6VW*eo z6Zbc988C4^9Zi@>h+RWWk5yWFFk#lf9JqUz$T95xg+Y7 zbI4v!n@4HQUcIaX$YMuIuP{=YNmDW`yubf)>irpdoB4La0ldhg7%eia=+N3s$4wsX z>FFU5S>3&Ga$pO+lP%w1>BTY9%M2}Mh_-62S0`e*1&>YoWaAlKP=Nq6GGZDmoGThaK65O&H2Wmz9H&XFm{|bdTfij*5G`; z-J3f0eyhe$7f|eYxy(j+xo{(L+PfzBc^%tVHiFbgCgy>Jur%&99r_whXmg0=-bf_h z#j4=NDO6+p$A#pF#B;J32^*+!`lV$|i%3URvx%sy$1NTR^zZ=sXG=;qiX&4bmj4!N zi}JOk>B)pWjDJ$%21eO$He*R#?{lbTJ?6G*`!*7g`ivye`F85X$-lDw=Tal9)l@3r z?&x6qCq2+|eR5&p_vZX$^Zm&4{kBCXqKf;>6e9Yi+l!I&iJ!e1S#7O>B6sdVZ!XWO zgzxI=oPm?^`-l1Or)Ou^^WO`m=^w%lxuFSkDUA&!Hh62VQ--WZ-lWm*c_Ghb=Z#0F z<`(OKM!S}8uJeDH^x72*+B^G|0nBD8QtDw0f->jQj!tI}YLH$*N9U~9n831$gdo@d zo)5M3Lq;7d5rUvafZARkkJ@lvKP-Hre<-OWKmPTX1xi0}(ojK4xO3FQnWu}h6%{$0 zRjP;^LWO_MuY^YBFRkE6^Rv?RQUI9m9ExYdTPOt-rjF;%^bwXYD<&S=R)W1ySdW+GpxkfqiV(p-Fpf1NV~oG|<8`dKvj806JwCraNZ0 z4UQcdSd_~DELFHATezfawB;Hwm)-4bH4^aIU**EAn?kLK4+IIsh6Mi9&mzzY%)V?? z4TOyF=6^-eK4bjlg2L@N1H7<5FOPE})z2-meCD@ieOLP^(mr$k@6E77BI^eoG_AK8U@LW0YwuP>`GMVwA)ARXXVIc=G)Ii)3zA6CHR5G==2=hwvKszC z2V%^JYPW_;hko(dR$HT`so&cA?$mhqp-Th=PhrP0OF7KOy?iEVQA9J;GL$|lBIE9( zUS3{KA46MQuxY55JI^HJi41x`81~!E4_b0NO4q9QR~8@5f!<8cxG%!+Cfs}JBz>_A zIo#uJUjXX+=|Ey=2hklgSab(E7uW)sWYo1L_~rEthKyx#D&##HbZhCL?gU-X@JIi_ zh?O+hh|1rJC1pt|22+B*k^lZ+kj&umixqOpTd;wmo!pKi;^Qg1msdIx5j(XR^)mHk z0jOBTX>SLRiXbToMAaZZSMDYqEMf(<^kq6&W1}H&mYFAriDKT_cN?U?v_mOIb>2H@ z<2Q6Vly*T)(5iPBw`VM)jPrOU0@I^<%S&({gIiU+ZinC7Xesg-7hIiMA}m;z&xie% z09dyx?~5x_F+F@mmvlC15}BlS*S>5TJ;oy#B!XI=!L{h>!=eZ|_72tp%Jo(OQPCyi zmyR<74#`KSCFwW$Du(O3X=iJtun^$)YVpxNKFbfSignoDv%paIFtZwx?+Pj$^_I%c z7+ZpkjX@Yw@cy3!JU*3OJP^Dw8rB8CvM55782WerWbUX>j#ninTa`MpbS8qOjwCxi zNEt1;#Xh|QbGxYCTax{W#{QA$t8ZpyQsNU$pFVF^izPuutnIKm{C(+Of#`Lzf1 zhyweQoj*2qAI2a``n07Yr#VmW7|(Hs0;a=25YnbK8u}iW>d!}*lHh*`Wa3s z14Y#QE}D8ew_TanSXzf~VLFd|RA6EJ%cjRfEpGfrfUu{{u1zy$E>)w(6~cW zFJjv!y1w`MbJ!N{qsrao3ZCsPR#WZD(Q_m5-(gacw*^KY`e{EhebBdArB~8W|F&Io*6*#w6#FCpyR2{_M7f4yPQ}*ku&FNK0Hjf&x=U4!jK9HCv92+3;@t_R|DK%iR?GW97uzS2(pQ|Q(g z8Xlw~293&UGp_#)eBU9HWF<;xNgsJsYCK$SJltbXxG8`v!co|hmMePOpvNHb0!C@W z7hi=BQA!EvO!GToG4xc+^$^=5#V{?0O(ZZ0?D1&JykXRA1!Sra@AIe`V`Zn6Eoa0& zTIrD~%Qq3a-*o)- zN<|B;MMtCCBfWy=Rj}hP_T)=`Z~1(y`7#w%3vqHn4mi&~nfDv;!sUAmX-!QZD(fTr z45*XDXW36r82}%X+W|)w7C3!Ad)QyM54Q{7kCT#wFK|bVbn|0phU$!L5dqX9Z9!UN z$|KZfL>*!|XVo;`2yuTxUl0lDk@Z(XUaLQU9JncuJ788T(;U$^R0dT^VY1ha8=0-Y zbb^u1c3(~AWt-?Q*4|ram>Zj@yIiUU(0osQ2D`b?LFHBoa< zOoASwzf)GErs6FsO-Ca)wy=sSavmC-GYI}Rc!hITaJDB9;2AY9y&|>x*d9-{Mokdg zlb>3C#M^L3x4mrX70aCb4!+Ozd@e!Zw6Q(AKi@7b{7`w$vzGWhBG50koKCih*wXMsdZ!4gB zO2v-7j1CS4JQSpdanY-zz=?lER1w!t@fG;4Hl8R7sgKX{+9zlDx!vyS%=Rsaag7$k zPkCMEA{T?EmY#^;4H@kb95j=TUxB6e>NB6b|LkAo)1=#ieAXZul%NlZ0TYrUJf5JX zf1o7$0tZ<(uR>yRIM(PbY8$`JH7K&CL(#fT-xG}iiAj?=!p^tRq-sy|K9xh@KTMC* zy3S@eHups}lkIixWO)Z~D+WQb z>1f7abQSI7V8o|iyo$6IOZ&4QG;;qknXaqdQhW0KWo5I5s^Z4MGI}xEdH*nUk)ayf zP<4_4leD>bY`ftZ+!yI1nx2J?a>_1!Ae#?ws!x_)X$H3on)=9 z%aK3MUh9>e%xS9xW z@pf{1G~bWK`t*5?1)m5C#)DX8wpvXl|1%W8%(07sta}OThOp!EN9w(NB3b=d0R(e* zYv%LB{0k$&TyKZAJGF6J_M{LZ(~;xNMv94U&6ExzN+WF!S>`BBP?TOS;yZpz*~b-H zj43`AeFOHsQ5-JA^-CZ2=_EZ&Q?>k#22`hIZQTA@TA5P4ZfXpEs--kft$7|xIKF_uZV?0a%Ek+yO!&u5U;VzGJs4Sl#%JQ zZiXuerj7OA=JmUKwJFch^__M-fRW0SH$u)4Rx)d|!EaDJ8!G_CdpslxGg%FtkOAiZ z3}gMoL;gM1!hq_cT2LTOpi-y@Pmq~VdfNZ{k^EDn{=M*+kT6zqQ5+V*d=X4c0_2SdH)K%z-<(*D=KC?L=)R1k>d-)bN_E~JX21Zp-9 UGEx$XYRZS~m1MyT6#Pf$Kbqgp- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.BorderProperties#color:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.BorderProperties#dashStyle:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.BorderProperties#weight:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); 'PowerPoint.ConnectorType:enum': - >- // Link to full sample: @@ -14764,6 +14880,375 @@ }); line.name = "StraightLine"; + await context.sync(); + }); +'PowerPoint.FillProperties:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FillProperties#color:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FontProperties:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FontProperties#color:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FontProperties#doubleStrikethrough:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FontProperties#name:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FontProperties#strikethrough:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FontProperties#subscript:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.FontProperties#superscript:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); await context.sync(); }); 'PowerPoint.GeometricShapeType:enum': @@ -14871,6 +15356,31 @@ presentation.insertSlidesFromBase64(chosenFileBase64, insertOptions); await context.sync(); }); +'PowerPoint.ParagraphHorizontalAlignment:enum': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the horizontal and vertical alignments of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying horizontal and vertical alignment. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + horizontalAlignment: PowerPoint.ParagraphHorizontalAlignment.justify, + verticalAlignment: PowerPoint.TextVerticalAlignment.middle + } + }); + await context.sync(); + }); 'PowerPoint.Presentation:class': - >- // Link to full sample: @@ -15203,6 +15713,39 @@ await context.sync(); }); +'PowerPoint.Shape#getTable:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Gets the table from a shape. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedShapes(); + const shapeCount = shapes.getCount(); + shapes.load("items"); + await context.sync(); + + if (shapeCount.value > 0) { + const shape = shapes.getItemAt(0); + shape.load("type"); + await context.sync(); + + // The shape type can indicate whether the shape is a table. + const isTable = shape.type === PowerPoint.ShapeType.table; + + if (isTable) { + // Get the Table object for the Shape which is a table. + const table = shape.getTable(); + table.load(); + await context.sync(); + + // Get the Table row and column count. + console.log("Table RowCount:" + table.rowCount + " and columnCount: " + table.columnCount); + } else console.log("Selected shape isn't table."); + } else console.log("No shape selected."); + }); 'PowerPoint.Shape#fill:member': - >- // Link to full sample: @@ -15514,6 +16057,21 @@ }); line.name = "StraightLine"; + await context.sync(); + }); +'PowerPoint.ShapeCollection#addTable:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Adds a basic table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a simple table, specifying the row and column count. + shapes.addTable(3, 4); await context.sync(); }); 'PowerPoint.ShapeCollection#addTextBox:member(1)': @@ -15541,6 +16099,39 @@ return context.sync(); }); +'PowerPoint.ShapeCollection#getCount:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Gets the table from a shape. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedShapes(); + const shapeCount = shapes.getCount(); + shapes.load("items"); + await context.sync(); + + if (shapeCount.value > 0) { + const shape = shapes.getItemAt(0); + shape.load("type"); + await context.sync(); + + // The shape type can indicate whether the shape is a table. + const isTable = shape.type === PowerPoint.ShapeType.table; + + if (isTable) { + // Get the Table object for the Shape which is a table. + const table = shape.getTable(); + table.load(); + await context.sync(); + + // Get the Table row and column count. + console.log("Table RowCount:" + table.rowCount + " and columnCount: " + table.columnCount); + } else console.log("Selected shape isn't table."); + } else console.log("No shape selected."); + }); 'PowerPoint.ShapeCollection#getItemAt:member(1)': - >- // Link to full sample: @@ -16295,6 +16886,864 @@ savedShapeSelection.push(shape.id); }); }); +'PowerPoint.Table:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Updates a table's values. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table (which is a type of Shape). + const shape = shapes.addTable(4, 3); + let table = shape.getTable(); + table.load(); + await context.sync(); + + // Update values in the table. + for (let rowIndex = 0; rowIndex < table.rowCount; rowIndex++) { + for (let columnIndex = 0; columnIndex < table.columnCount; columnIndex++) { + const cell = table.getCellOrNullObject(rowIndex, columnIndex); + cell.text = generateRandomString(); + } + } + }); +'PowerPoint.Table#getCellOrNullObject:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Updates a table's values. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table (which is a type of Shape). + const shape = shapes.addTable(4, 3); + let table = shape.getTable(); + table.load(); + await context.sync(); + + // Update values in the table. + for (let rowIndex = 0; rowIndex < table.rowCount; rowIndex++) { + for (let columnIndex = 0; columnIndex < table.columnCount; columnIndex++) { + const cell = table.getCellOrNullObject(rowIndex, columnIndex); + cell.text = generateRandomString(); + } + } + }); +'PowerPoint.TableAddOptions:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the width and height of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying the width and height. + shapes.addTable(3, 4, { + width: 600, + height: 400 + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#columns:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the column widths and row heights of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying column widths and row heights + shapes.addTable(3, 4, { + columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], + rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#height:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the width and height of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying the width and height. + shapes.addTable(3, 4, { + width: 600, + height: 400 + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#mergedAreas:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the merge areas of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying one 2x2 merged area. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "", "HHHH"], + ["1", "", "", "1234"] + ], + mergedAreas: [{ rowIndex: 1, columnIndex: 1, rowCount: 2, columnCount: 2 }] + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#rows:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the column widths and row heights of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying column widths and row heights + shapes.addTable(3, 4, { + columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], + rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#specificCellProperties:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#uniformCellProperties:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#values:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's values. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying cell values. + const shape = shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ] + }); + await context.sync(); + }); +'PowerPoint.TableAddOptions#width:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the width and height of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying the width and height. + shapes.addTable(3, 4, { + width: 600, + height: 400 + }); + await context.sync(); + }); +'PowerPoint.TableCell:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Updates a table's values. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table (which is a type of Shape). + const shape = shapes.addTable(4, 3); + let table = shape.getTable(); + table.load(); + await context.sync(); + + // Update values in the table. + for (let rowIndex = 0; rowIndex < table.rowCount; rowIndex++) { + for (let columnIndex = 0; columnIndex < table.columnCount; columnIndex++) { + const cell = table.getCellOrNullObject(rowIndex, columnIndex); + cell.text = generateRandomString(); + } + } + }); +'PowerPoint.TableCell#text:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Updates a table's values. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table (which is a type of Shape). + const shape = shapes.addTable(4, 3); + let table = shape.getTable(); + table.load(); + await context.sync(); + + // Update values in the table. + for (let rowIndex = 0; rowIndex < table.rowCount; rowIndex++) { + for (let columnIndex = 0; columnIndex < table.columnCount; columnIndex++) { + const cell = table.getCellOrNullObject(rowIndex, columnIndex); + cell.text = generateRandomString(); + } + } + }); +'PowerPoint.TableCellBorders:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.TableCellBorders#bottom:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.TableCellBorders#left:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.TableCellBorders#right:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.TableCellBorders#top:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.TableCellProperties:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.TableCellProperties#borders:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies a table's borders. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying border styles + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + borders: { + left: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + right: { color: "blue", dashStyle: PowerPoint.ShapeLineDashStyle.solid, weight: 4 }, + top: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 }, + bottom: { color: "red", dashStyle: PowerPoint.ShapeLineDashStyle.longDashDotDot, weight: 2 } + } + } + }); + await context.sync(); + }); +'PowerPoint.TableCellProperties#fill:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.TableCellProperties#font:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the font formatting and fill colors of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying font formatting and fill colors + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [ + { fill: { color: "red" }, font: { color: "yellow", name: "Calibri" } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", name: "Coolvetica" } }, + { fill: { color: "red" }, font: { color: "yellow", italic: true } }, + { fill: { color: "red" }, font: { color: "#9966cc", strikethrough: true } } + ], + [ + { fill: { color: "#fbceb1" }, font: { color: "yellow", doubleStrikethrough: true } }, + { fill: { color: "red" }, font: { color: "yellow", subscript: true } }, + { fill: { color: "#0048ba" }, font: { color: "yellow", superscript: true } }, + { fill: { color: "red" }, font: { color: "yellow" } } + ], + [ + { fill: { color: "red" }, font: { color: "#b0bf1a" } }, + { fill: { color: "#9966cc" }, font: { color: "yellow" } }, + { fill: { color: "#b0bf1a" }, font: { color: "yellow" } }, + { fill: { color: "red" }, font: { color: "#fbceb1" } } + ] + ] + }); + await context.sync(); + }); +'PowerPoint.TableCellProperties#horizontalAlignment:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the horizontal and vertical alignments of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying horizontal and vertical alignment. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + horizontalAlignment: PowerPoint.ParagraphHorizontalAlignment.justify, + verticalAlignment: PowerPoint.TextVerticalAlignment.middle + } + }); + await context.sync(); + }); +'PowerPoint.TableCellProperties#indentLevel:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifying the indents for a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying the indent level for cells. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + specificCellProperties: [ + [{ indentLevel: 0 }, { indentLevel: 1 }, { indentLevel: 2 }, { indentLevel: 3 }], + [{ indentLevel: 0 }, { indentLevel: 1 }, { indentLevel: 2 }, { indentLevel: 3 }], + [{ indentLevel: 0 }, { indentLevel: 1 }, { indentLevel: 2 }, { indentLevel: 3 }] + ] + }); + await context.sync(); + }); +'PowerPoint.TableCellProperties#verticalAlignment:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the horizontal and vertical alignments of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying horizontal and vertical alignment. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "GGG", "HHHH"], + ["1", "12", "123", "1234"] + ], + uniformCellProperties: { + horizontalAlignment: PowerPoint.ParagraphHorizontalAlignment.justify, + verticalAlignment: PowerPoint.TextVerticalAlignment.middle + } + }); + await context.sync(); + }); +'PowerPoint.TableColumnProperties:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the column widths and row heights of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying column widths and row heights + shapes.addTable(3, 4, { + columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], + rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] + }); + await context.sync(); + }); +'PowerPoint.TableColumnProperties#columnWidth:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the column widths and row heights of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying column widths and row heights + shapes.addTable(3, 4, { + columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], + rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] + }); + await context.sync(); + }); +'PowerPoint.TableMergedAreaProperties:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the merge areas of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying one 2x2 merged area. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "", "HHHH"], + ["1", "", "", "1234"] + ], + mergedAreas: [{ rowIndex: 1, columnIndex: 1, rowCount: 2, columnCount: 2 }] + }); + await context.sync(); + }); +'PowerPoint.TableMergedAreaProperties#columnCount:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the merge areas of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying one 2x2 merged area. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "", "HHHH"], + ["1", "", "", "1234"] + ], + mergedAreas: [{ rowIndex: 1, columnIndex: 1, rowCount: 2, columnCount: 2 }] + }); + await context.sync(); + }); +'PowerPoint.TableMergedAreaProperties#columnIndex:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the merge areas of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying one 2x2 merged area. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "", "HHHH"], + ["1", "", "", "1234"] + ], + mergedAreas: [{ rowIndex: 1, columnIndex: 1, rowCount: 2, columnCount: 2 }] + }); + await context.sync(); + }); +'PowerPoint.TableMergedAreaProperties#rowCount:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the merge areas of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying one 2x2 merged area. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "", "HHHH"], + ["1", "", "", "1234"] + ], + mergedAreas: [{ rowIndex: 1, columnIndex: 1, rowCount: 2, columnCount: 2 }] + }); + await context.sync(); + }); +'PowerPoint.TableMergedAreaProperties#rowIndex:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the merge areas of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying one 2x2 merged area. + shapes.addTable(3, 4, { + values: [ + ["A", "BB", "CCC", "DDDD"], + ["E", "FF", "", "HHHH"], + ["1", "", "", "1234"] + ], + mergedAreas: [{ rowIndex: 1, columnIndex: 1, rowCount: 2, columnCount: 2 }] + }); + await context.sync(); + }); +'PowerPoint.TableRowProperties:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the column widths and row heights of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying column widths and row heights + shapes.addTable(3, 4, { + columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], + rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] + }); + await context.sync(); + }); +'PowerPoint.TableRowProperties#rowHeight:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the column widths and row heights of a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying column widths and row heights + shapes.addTable(3, 4, { + columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], + rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] + }); + await context.sync(); + }); 'PowerPoint.Tag:class': - >- // Link to full sample: diff --git a/view-prod/powerpoint.json b/view-prod/powerpoint.json index c612b45b2..0c40ce1b7 100644 --- a/view-prod/powerpoint.json +++ b/view-prod/powerpoint.json @@ -7,10 +7,11 @@ "powerpoint-basics-insert-image": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/images/insert-image.yaml", "powerpoint-basics-insert-svg": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/images/insert-svg.yaml", "powerpoint-scenarios-searches-wikipedia-api": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/scenarios/searches-wikipedia-api.yaml", + "powerpoint-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml", "powerpoint-shapes-get-set-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml", "powerpoint-shapes-get-shapes-by-type": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml", + "powerpoint-shapes-add-modify-tables": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml", "powerpoint-shapes-group-ungroup-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml", - "powerpoint-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml", "powerpoint-add-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml", "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml", "powerpoint-basics-get-slide-metadata": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-slide-metadata.yaml", diff --git a/view/powerpoint.json b/view/powerpoint.json index 06b407359..f70fe3e3a 100644 --- a/view/powerpoint.json +++ b/view/powerpoint.json @@ -7,10 +7,11 @@ "powerpoint-basics-insert-image": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/images/insert-image.yaml", "powerpoint-basics-insert-svg": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/images/insert-svg.yaml", "powerpoint-scenarios-searches-wikipedia-api": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/scenarios/searches-wikipedia-api.yaml", + "powerpoint-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/shapes.yaml", "powerpoint-shapes-get-set-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/get-set-shapes.yaml", "powerpoint-shapes-get-shapes-by-type": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/get-shapes-by-type.yaml", + "powerpoint-shapes-add-modify-tables": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/add-modify-tables.yaml", "powerpoint-shapes-group-ungroup-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/group-ungroup-shapes.yaml", - "powerpoint-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/shapes.yaml", "powerpoint-add-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/add-slides.yaml", "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/insert-slides.yaml", "powerpoint-basics-get-slide-metadata": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/get-slide-metadata.yaml", From bbba85e6dc56ca5b75bb58d8a0db537168c5670a Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 7 May 2025 14:20:13 -0700 Subject: [PATCH 34/71] [PowerPoint] Fix get-set-shapes snippet (#981) * [PowerPoint] Fix get-set-shapes snippet * Tweak group-ungroup snippet * Link to contributor on task pane * Tweak --- samples/powerpoint/shapes/get-set-shapes.yaml | 27 ++++---- .../shapes/group-ungroup-shapes.yaml | 33 ++++----- snippet-extractor-output/snippets.yaml | 68 +++++++++---------- 3 files changed, 60 insertions(+), 68 deletions(-) diff --git a/samples/powerpoint/shapes/get-set-shapes.yaml b/samples/powerpoint/shapes/get-set-shapes.yaml index 6d472a567..41790cdec 100644 --- a/samples/powerpoint/shapes/get-set-shapes.yaml +++ b/samples/powerpoint/shapes/get-set-shapes.yaml @@ -6,7 +6,7 @@ host: POWERPOINT api_set: PowerPointApi: '1.5' script: - content: |- + content: | document.getElementById("getSelectedShapes").addEventListener("click", () => tryCatch(getSelectedShapes)); document.getElementById("setSelectedShapes").addEventListener("click", () => tryCatch(setSelectedShapes)); document.getElementById("changeFill").addEventListener("click", () => tryCatch(changeFill)); @@ -43,14 +43,17 @@ script: context.presentation.load("slides"); await context.sync(); const slide1 = context.presentation.slides.getItemAt(0); - slide1.load("shapes"); + slide1.load("shapes/items/type"); await context.sync(); - const shapes: PowerPoint.ShapeCollection = slide1.shapes; - const shape1: PowerPoint.Shape = shapes.getItemAt(0); - const shape2: PowerPoint.Shape = shapes.getItemAt(1); + + const shapes = slide1.shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); + const shape1: PowerPoint.Shape = shapes[0]; + const shape2: PowerPoint.Shape = shapes[1]; shape1.load("id"); shape2.load("id"); await context.sync(); + + console.log(`IDs: ${shape1.id}, ${shape2.id}`) slide1.setSelectedShapes([shape1.id, shape2.id]); await context.sync(); }); @@ -127,7 +130,9 @@ script: const minNewShapeWidth = 50; const minNewShapeHeight = 50; for (let i = 0; i < 20; i++) { - const rectangle: PowerPoint.Shape = currentSlide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.rectangle); + const rectangle: PowerPoint.Shape = currentSlide.shapes.addGeometricShape( + PowerPoint.GeometricShapeType.rectangle + ); rectangle.height = getRandomBetween(minNewShapeWidth, maxNewShapeWidth); rectangle.width = getRandomBetween(minNewShapeHeight, maxNewShapeHeight); rectangle.left = getRandomBetween(0, slideWidth - rectangle.width); @@ -135,13 +140,9 @@ script: rectangle.fill.foregroundColor = generateRandomHexColor(); } finalTable += "Done
      "; - const slideTags = document.getElementById("slide-tags"); - if (slideTags) { - slideTags.innerHTML = ""; - slideTags.innerHTML += finalTable; - } else { - console.warn('Element with ID "slide-tags" not found.'); - } + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = ""; + outputSpan.innerHTML += finalTable; }); } diff --git a/samples/powerpoint/shapes/group-ungroup-shapes.yaml b/samples/powerpoint/shapes/group-ungroup-shapes.yaml index 9af73fa46..17592fc3b 100644 --- a/samples/powerpoint/shapes/group-ungroup-shapes.yaml +++ b/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -20,15 +20,17 @@ script: // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - slide.load("shapes"); + slide.load("shapes/items/type,shapes/items/id"); await context.sync(); const shapes: PowerPoint.ShapeCollection = slide.shapes; - shapes.load("items/type,items/id"); - await context.sync(); + const shapesToGroup = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); + if (shapesToGroup.length === 0) { + console.warn("No shapes on the current slide, so nothing to group."); + return; + } // Group the geometric shapes. - const shapesToGroup = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); console.log(`Number of shapes to group: ${shapesToGroup.length}`); const group = shapes.addGroup(shapesToGroup); group.load("id"); @@ -45,20 +47,17 @@ script: // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - slide.load("shapes"); + slide.load("shapes/items/type,shapes/items/id"); await context.sync(); const shapes: PowerPoint.ShapeCollection = slide.shapes; - shapes.load("items/type,items/id"); - await context.sync(); - - // Move the first grouped shapes. const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); - if (shapeGroups.length == 0) { - console.warn("No shape groups on the current slide so nothing to move."); + if (shapeGroups.length === 0) { + console.warn("No shape groups on the current slide, so nothing to move."); return; } + // Move the first grouped shapes. const firstGroupId = shapeGroups[0].id; const shapeGroupToMove = shapes.getItem(firstGroupId); shapeGroupToMove.top = 0; @@ -76,20 +75,17 @@ script: // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - slide.load("shapes"); + slide.load("shapes/items/type,shapes/items/id"); await context.sync(); const shapes: PowerPoint.ShapeCollection = slide.shapes; - shapes.load("items/type,items/id"); - await context.sync(); - - // Ungroup the first grouped shapes. const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); - if (shapeGroups.length == 0) { - console.warn("No shape groups on the current slide so nothing to ungroup."); + if (shapeGroups.length === 0) { + console.warn("No shape groups on the current slide, so nothing to ungroup."); return; } + // Ungroup the first grouped shapes. const firstGroupId = shapeGroups[0].id; const shapeGroupToUngroup = shapes.getItem(firstGroupId); shapeGroupToUngroup.group.ungroup(); @@ -148,6 +144,7 @@ template: content: |-

      Shows how to group then ungroup shapes.

      +

      Code sample based on community contribution from Maarten van Stam.

      Set up

      diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index ae29b25cf..78fca06c5 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -15776,20 +15776,17 @@ // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - slide.load("shapes"); + slide.load("shapes/items/type,shapes/items/id"); await context.sync(); const shapes: PowerPoint.ShapeCollection = slide.shapes; - shapes.load("items/type,items/id"); - await context.sync(); - - // Ungroup the first grouped shapes. const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); - if (shapeGroups.length == 0) { - console.warn("No shape groups on the current slide so nothing to ungroup."); + if (shapeGroups.length === 0) { + console.warn("No shape groups on the current slide, so nothing to ungroup."); return; } + // Ungroup the first grouped shapes. const firstGroupId = shapeGroups[0].id; const shapeGroupToUngroup = shapes.getItem(firstGroupId); shapeGroupToUngroup.group.ungroup(); @@ -16015,15 +16012,17 @@ // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - slide.load("shapes"); + slide.load("shapes/items/type,shapes/items/id"); await context.sync(); const shapes: PowerPoint.ShapeCollection = slide.shapes; - shapes.load("items/type,items/id"); - await context.sync(); + const shapesToGroup = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); + if (shapesToGroup.length === 0) { + console.warn("No shapes on the current slide, so nothing to group."); + return; + } // Group the geometric shapes. - const shapesToGroup = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); console.log(`Number of shapes to group: ${shapesToGroup.length}`); const group = shapes.addGroup(shapesToGroup); group.load("id"); @@ -16212,7 +16211,9 @@ const minNewShapeWidth = 50; const minNewShapeHeight = 50; for (let i = 0; i < 20; i++) { - const rectangle: PowerPoint.Shape = currentSlide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.rectangle); + const rectangle: PowerPoint.Shape = currentSlide.shapes.addGeometricShape( + PowerPoint.GeometricShapeType.rectangle + ); rectangle.height = getRandomBetween(minNewShapeWidth, maxNewShapeWidth); rectangle.width = getRandomBetween(minNewShapeHeight, maxNewShapeHeight); rectangle.left = getRandomBetween(0, slideWidth - rectangle.width); @@ -16220,13 +16221,9 @@ rectangle.fill.foregroundColor = generateRandomHexColor(); } finalTable += "Done
      "; - const slideTags = document.getElementById("slide-tags"); - if (slideTags) { - slideTags.innerHTML = ""; - slideTags.innerHTML += finalTable; - } else { - console.warn('Element with ID "slide-tags" not found.'); - } + const outputSpan = document.getElementById("outputSpan"); + outputSpan.innerHTML = ""; + outputSpan.innerHTML += finalTable; }); 'PowerPoint.ShapeFill#setSolidColor:member(1)': - >- @@ -16306,20 +16303,17 @@ // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - slide.load("shapes"); + slide.load("shapes/items/type,shapes/items/id"); await context.sync(); const shapes: PowerPoint.ShapeCollection = slide.shapes; - shapes.load("items/type,items/id"); - await context.sync(); - - // Ungroup the first grouped shapes. const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); - if (shapeGroups.length == 0) { - console.warn("No shape groups on the current slide so nothing to ungroup."); + if (shapeGroups.length === 0) { + console.warn("No shape groups on the current slide, so nothing to ungroup."); return; } + // Ungroup the first grouped shapes. const firstGroupId = shapeGroups[0].id; const shapeGroupToUngroup = shapes.getItem(firstGroupId); shapeGroupToUngroup.group.ungroup(); @@ -16339,20 +16333,17 @@ // Get the shapes on the current slide. context.presentation.load("slides"); const slide: PowerPoint.Slide = context.presentation.getSelectedSlides().getItemAt(0); - slide.load("shapes"); + slide.load("shapes/items/type,shapes/items/id"); await context.sync(); const shapes: PowerPoint.ShapeCollection = slide.shapes; - shapes.load("items/type,items/id"); - await context.sync(); - - // Ungroup the first grouped shapes. const shapeGroups = shapes.items.filter((item) => item.type === PowerPoint.ShapeType.group); - if (shapeGroups.length == 0) { - console.warn("No shape groups on the current slide so nothing to ungroup."); + if (shapeGroups.length === 0) { + console.warn("No shape groups on the current slide, so nothing to ungroup."); return; } + // Ungroup the first grouped shapes. const firstGroupId = shapeGroups[0].id; const shapeGroupToUngroup = shapes.getItem(firstGroupId); shapeGroupToUngroup.group.ungroup(); @@ -16593,14 +16584,17 @@ context.presentation.load("slides"); await context.sync(); const slide1 = context.presentation.slides.getItemAt(0); - slide1.load("shapes"); + slide1.load("shapes/items/type"); await context.sync(); - const shapes: PowerPoint.ShapeCollection = slide1.shapes; - const shape1: PowerPoint.Shape = shapes.getItemAt(0); - const shape2: PowerPoint.Shape = shapes.getItemAt(1); + + const shapes = slide1.shapes.items.filter((item) => item.type === PowerPoint.ShapeType.geometricShape); + const shape1: PowerPoint.Shape = shapes[0]; + const shape2: PowerPoint.Shape = shapes[1]; shape1.load("id"); shape2.load("id"); await context.sync(); + + console.log(`IDs: ${shape1.id}, ${shape2.id}`) slide1.setSelectedShapes([shape1.id, shape2.id]); await context.sync(); }); From 5706df44d20ac86cfabed149f4489a2788b2b5e6 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 7 May 2025 14:21:10 -0700 Subject: [PATCH 35/71] [PowerPoint] Add binding-to-shapes snippet (#980) * [PowerPoint] Add binding-to-shapes snippet * Apply suggestions from code review Co-authored-by: David Chesnut * Updates based on feedback * Add API mappings * Remove API mapping * Update images * Re-add API mapping --------- Co-authored-by: David Chesnut --- playlists-prod/powerpoint.yaml | 9 + playlists/powerpoint.yaml | 9 + .../powerpoint/shapes/binding-to-shapes.yaml | 370 +++++++++++++++ snippet-extractor-metadata/powerpoint.xlsx | Bin 16114 -> 16593 bytes snippet-extractor-output/snippets.yaml | 427 +++++++++++++++++- view-prod/powerpoint.json | 1 + view/powerpoint.json | 1 + 7 files changed, 799 insertions(+), 18 deletions(-) create mode 100644 samples/powerpoint/shapes/binding-to-shapes.yaml diff --git a/playlists-prod/powerpoint.yaml b/playlists-prod/powerpoint.yaml index f427754c4..edea496ed 100644 --- a/playlists-prod/powerpoint.yaml +++ b/playlists-prod/powerpoint.yaml @@ -107,6 +107,15 @@ group: Shapes api_set: PowerPointApi: '1.8' +- id: powerpoint-shapes-binding-to-shapes + name: Binding to shapes + fileName: binding-to-shapes.yaml + description: Shows how to create binding references for images and work with z-order. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + group: Shapes + api_set: + PowerPointApi: '1.8' - id: powerpoint-shapes-group-ungroup-shapes name: Group and ungroup shapes fileName: group-ungroup-shapes.yaml diff --git a/playlists/powerpoint.yaml b/playlists/powerpoint.yaml index 7030c5a3d..efc61d962 100644 --- a/playlists/powerpoint.yaml +++ b/playlists/powerpoint.yaml @@ -107,6 +107,15 @@ group: Shapes api_set: PowerPointApi: '1.8' +- id: powerpoint-shapes-binding-to-shapes + name: Binding to shapes + fileName: binding-to-shapes.yaml + description: Shows how to create binding references for images and work with z-order. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/binding-to-shapes.yaml + group: Shapes + api_set: + PowerPointApi: '1.8' - id: powerpoint-shapes-group-ungroup-shapes name: Group and ungroup shapes fileName: group-ungroup-shapes.yaml diff --git a/samples/powerpoint/shapes/binding-to-shapes.yaml b/samples/powerpoint/shapes/binding-to-shapes.yaml new file mode 100644 index 000000000..10e205150 --- /dev/null +++ b/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -0,0 +1,370 @@ +order: 5 +id: powerpoint-shapes-binding-to-shapes +name: Binding to shapes +description: Shows how to create binding references for images and work with z-order. +host: POWERPOINT +api_set: + PowerPointApi: '1.8' +script: + content: | + document + .getElementById("insert-image-and-create-binding") + .addEventListener("click", () => tryCatch(insertImageWithBinding)); + document.getElementById("replace-binding1").addEventListener("click", () => + tryCatch(() => { + replaceBinding(1); + }) + ); + document.getElementById("replace-binding2").addEventListener("click", () => + tryCatch(() => { + replaceBinding(2); + }) + ); + document.getElementById("replace-binding3").addEventListener("click", () => + tryCatch(() => { + replaceBinding(3); + }) + ); + document.getElementById("load-bindings").addEventListener("click", () => tryCatch(loadBindings)); + document.getElementById("bring-to-front").addEventListener("click", () => tryCatch(bringToFront)); + document.getElementById("bring-forward").addEventListener("click", () => tryCatch(bringForward)); + document.getElementById("send-backward").addEventListener("click", () => tryCatch(sendBackward)); + document.getElementById("send-to-back").addEventListener("click", () => tryCatch(sendToBack)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + const flowerImage = getImageAsBase64String(); + + const greenery1 = returnGreenery1AsBase64(); + + const greenery2 = returnGreenery2AsBase64(); + + const greenery3 = returnGreenery3AsBase64(); + + async function insertImageWithBinding() { + // Inserts an image with binding. + await PowerPoint.run(async (context) => { + const bindingId = (document.getElementById("temp-binding-id") as HTMLInputElement).value; + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const myShape = slide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.rectangle, { + top: 100, + left: 30, + width: 200, + height: 200 + }); + + myShape.fill.setImage(flowerImage); + context.presentation.bindings.add(myShape, PowerPoint.BindingType.shape, bindingId); + await context.sync(); + + const bindingsDropdown = document.getElementById("bindings-dropdown") as HTMLSelectElement; + + const option = new Option(`Binding ${bindingId}`, bindingId); + + // When a binding ID already exists, the binding is updated to refer to the new shape + // so select the existing item rather than add a new one. + const foundIndex = findDropdownItem(bindingsDropdown, option.text); + if (foundIndex < 0) { + bindingsDropdown.add(option); + bindingsDropdown.selectedIndex = bindingsDropdown.options.length - 1; + } else { + bindingsDropdown.selectedIndex = foundIndex; + } + }); + } + + async function replaceBinding(greenery) { + // Update image in binding with selected replacement image. + await PowerPoint.run(async (context) => { + if (greenery === 1) + context.presentation.bindings + .getItem((document.getElementById("bindings-dropdown") as HTMLSelectElement).value) + .getShape() + .fill.setImage(greenery1); + else if (greenery === 2) + context.presentation.bindings + .getItem((document.getElementById("bindings-dropdown") as HTMLSelectElement).value) + .getShape() + .fill.setImage(greenery2); + else + context.presentation.bindings + .getItem((document.getElementById("bindings-dropdown") as HTMLSelectElement).value) + .getShape() + .fill.setImage(greenery3); + + await context.sync(); + }); + } + + async function getShapeForBindingId(bindingId: string): Promise { + // Gets shape associated with binding ID. + return PowerPoint.run(async (context) => { + const binding = context.presentation.bindings.getItem(bindingId); + const shape = binding.getShape(); + return shape; + }); + } + + async function loadBindings() { + // Loads bindings. + await PowerPoint.run(async (context) => { + const bindings = context.presentation.bindings; + bindings.load("items"); + await context.sync(); + + const bindingCount = bindings.items.length; + if (bindingCount === 0) { + console.log(`There are no bindings.`); + } else if (bindingCount === 1) { + console.log("There's 1 binding."); + } else { + console.log(`There are ${bindingCount} bindings.`); + } + + bindings.items.forEach((binding) => { + getShapeForBindingId(binding.id).then((shape) => { + if (shape) { + console.log(`Binding ID: ${binding.id} refers to shape ID ${shape.id}`); + } else { + console.log(`Binding ID: ${binding.id} doesn't refers to shape.`); + } + }); + }); + + populateBindingsDropdown(bindings.items); + }); + } + + function findDropdownItem(dropdown: HTMLSelectElement, text: string): number { + // Finds dropdown items. + for (let index = 0; index < dropdown.options.length; ++index) { + if (dropdown.options[index].text === text) { + return index; + } + } + + return -1; + } + + async function populateBindingsDropdown(bindings: PowerPoint.Binding[]) { + // Populates bindings dropdown list. + const bindingsDropdown = document.getElementById("bindings-dropdown") as HTMLSelectElement; + bindingsDropdown.options.length = 0; + bindings.forEach((binding) => { + const option = new Option(`Binding ${binding.id}`, binding.id); + bindingsDropdown.add(option); + }); + + bindingsDropdown.selectedIndex = 0; + } + + function bringToFront() { + // Brings the shape to the front. + changeZOrder(PowerPoint.ShapeZOrder.bringToFront); + } + + function bringForward() { + // Brings the shape forward. + changeZOrder(PowerPoint.ShapeZOrder.bringForward); + } + + function sendBackward() { + // Sends the shape backward. + changeZOrder(PowerPoint.ShapeZOrder.sendBackward); + } + + function sendToBack() { + // Sends the shape to the back. + changeZOrder(PowerPoint.ShapeZOrder.sendToBack); + } + + async function changeZOrder(operation: PowerPoint.ShapeZOrder) { + // Changes the z-order position of the selected shapes. + return PowerPoint.run(async (context) => { + const selectedShapes = context.presentation.getSelectedShapes(); + selectedShapes.load(); + await context.sync(); + + if (selectedShapes.items.length === 0) { + console.log("No shapes are selected."); + } else { + let direction = 1; // Start with bottom-most (lowest number). + + // Start with top-most when sending to back or bringing forward. + + switch (operation) { + case PowerPoint.ShapeZOrder.bringForward: + + case PowerPoint.ShapeZOrder.sendToBack: + direction = -1; // Reverse direction. + + break; + } + + // Change the z-order position for each of the selected shapes, + + // starting with the bottom-most when bringing to front or sending backward, + + // or top-most when sending to back or bringing forward, + + // so the selected shapes retain their relative z-order positions after they're changed. + + selectedShapes.items + .sort((a, b) => (a.zOrderPosition - b.zOrderPosition) * direction) + .forEach((shape) => { + try { + const originalZOrderPosition = shape.zOrderPosition; + shape.setZOrder(operation); + + console.log(`Changed z-order of shape ${shape.id}.`); + } catch (err) { + console.log(`Unable to change z-order of shape ${shape.id}. ${err.message}`); + } + }); + + await context.sync(); + } + }); + } + + function logSelectedShapesZOrder(selectedShapes: PowerPoint.ShapeScopedCollection) { + // Logs the z-order position of the selected shapes. + console.log(`Selected shapes:`); + + selectedShapes.items.forEach((shape, index) => { + console.log(` [${index}] shape ID ${shape.id}, z-order position: ${shape.zOrderPosition}`); + }); + } + + function getImageAsBase64String() { + // A production add-in code could get an image from an + + // online source and pass it to a library function that + + // converts to Base64. + + return "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"; + } + + function returnGreenery1AsBase64() { + return "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"; + } + + function returnGreenery2AsBase64() { + return "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"; + } + + function returnGreenery3AsBase64() { + return "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAClAPgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyK8u0g0Oa5Ma3EiruyT92vP7e3u/EGoQy3KTeSDuiDD5GPtWx4m0e60i9W3tp1kS8B3qx5A+ldJpGr2mg6fG2r/uUWPbFx0I9K/Ik38J5G5j64baK2S1ubme1u2XaERT8xPTArJk8J+MLcqlpeubaMkJL5nykegNdFodzH4k1y41q9c+RbDEG5M4HrSTa99kf/iY3Jt9NugZoVfnJzweOhPpSpvluoq7GkramB4b8GxNrnlakJ7q7f5iwb5A3v61qeIF13Rrq7l0+RZ7MgAeX8wQjtjtXQXttGLOLV7abf5abnZehHrWJ4a8R/btTvJHka1sLtlCq4+844yK0TbfvE36F/TdKb4hWkVy16qvbLma0VsNx6e3tT7rQdHtrSextRLZToRMJ1BL8Dn5qztQ0a68I3z3lrOArEu2w8nPtVXTfiAb+6e08lprqU+VtEeAB6k+1azd3t6/10KT6Mo22taZpr3Ecl+5u4jxkbd5ptw2r/EF47m0K2BtmCxyEZ3Y68mu2u/AXhq4uGmZhczkgFHfaF/D61SjXULPW1Q28cdkqeUI4TwpHeocuW7hv1Fa25yl74A1zT5Yr7T7pHEi7JRIQCCeTuHvWJPpniXTLi4ii0yVXmIVL5BgZPXHpmvUYitpdztNKi+bjcJZPTofrVTUNX1C2uJoRLGbe4HmlSvKbfu4PYc81pTqyWjQWRn+HPh/bWOmpfXC293qEYLMz/eU57Hvg1d8M+JpIDqFhZxzSSykh5c5UknHfqOaraJPdWFu2qPILm2kzF5UXIQA5x/8AXqwdfjuPLuoLN2kY4eOJcfL3NYVH7RNX1X9fIEzd8TeDfDfhpLfVRp4vY5OZFb5grAfMcdDXK2r6D4p0qez09Bp2oHcUcJt+b+E5/pXY6JNbvPFJMHXTlV9kLAuQSMZIPXArjNQ0/VNV1DULfTtImvo2jHkS2w8sIeoLfQc0Qm6tm/i/rU1l7yujNuLTxl4fhjl+zwyTwRgefG5+YdifU1d0ywufF1ukfih0ljDiVbXJzIexOOuM9BT7Xwf4mv4guoasWuEjDQ2obCZHQv64rnFbX9I8V6XZ6nfLa3ETEB9oBZWP3iT1H8hXTGzbatdGVrHU6z8HtDuLeWPTrOQS3EeAnmMfIYkfMfYVs6F8FNJNqjXOo3W+GD/WKwRGVQdxOBkk4rVh1GTSL+2vxdidB+7dI2BDMBwK2LHxHpLx3UrPlnRgwkjK84OQAevNcrrVIRXO76msbNnmFz4c1V7K01/w1cKbiF2hktGJw6KcDn1x1z61T8N/Eb7Bqt3Y+IoJrS5uZQ4VwdsfrgntWXDq9x4J8Wiz1Vrmw09ybiIgkoVYcHA65rttL1rRfGNwIJdOS7SPc63nl5Df7OTXXUi4xftIky+I3NF8Zabd3V/BbqpiQbkKKAGYjBb0/Csvxt8Ol1jwdNDotsI9SWXzVnDBTIeeSfes1vEOmaFdCzjni05TceW7eWCQp7MPpWxe6nGmow31rqkctkIwixEY+pz3+lefapRlzQ9S07qzPLPDHjYaEZbjUJns9Tsdtp9nznzDznjsRXqOhT3Gq6Al7p14sbXD+Y7XLBgG6t9P6VV8SfDvSPHfhnGmJCL0OZftm3vnPJ6nPvXCaPZ3nhTwpd2epebbusmZFkc4MfBDL7N0zn8K65ezrxcoL3luv8iUmtj0PxTLBrsb6cNKtLjVpIiYZ4lEkm4Dt2AzisDwD45tvDvh270uaOW31ZSUlgc4Z3Jxx61nxafcw3nh7XNIlDxkrFceU+QMnPOOnpXb+Nvh9Z+PIhqFo40/VoOfOUY34/vev1qVGMaahPbv29TS7exev4F8J+GZbrSbZBMLcmRTJgnIySayfhDdWPiXwlPol5agIWJlR8lZcntWdrWlaoPBWp2C6pa3t8sfzuzkFABkg/ljHvWh8I9abxJ4QnggFrY3MC+VGo65x1rk5G6U+6Za3R5v4t8DXnw18a2us6chOiiYJGztuETE8g+1Fem6d4skEMui+LtOSURsQhcZVz2+porT20qqSqLVaXutQt1Tsee2Baa6S/1eSbZI2Fk5+Var22nnWr+R5ppZ7BXIhWRuoFek6Z4c0fxjP9mW/eJUX/U4wKr+Ivhzp2nXEKvfSiz3bdsXG0+tZKo23rqcvJ5nOSeObbSLVLCC1a3b7kzsMgLS6lc2niq3e3s1822giDgkYy/0rqZfBXh+TSYilyjiI4lZzlj7+9WvDl5oOiEx2tt51t3mK7dremauEqa01XmUopPVnHr4d1m6tfOEk+kaGiqDHKSC+Ov4VPfvJp94sGniLUw8XCwqP3bf0rr9U/4qiVrMXsmWQv5URyFX+6aw4tRg8J7V0vSpZih+aSRSd+OvIpuTkrx1X4/NA4L7I7wpp13FdC41R1hlmjKCCVgQw9az9QvBqGtzaZYwrbNaqXfy8DcewzU134r0nV4421RZILx2IYwoSIwOgqlFov8AZdrHeXyTRtdzea/lZJEZ6Z/ChztHayJs0VrIa7pN0zjRjPDN1nL5A55JqXxJo+v3jLLp4k+zsfOGJANo9CK3dKu0eK4t9PkaSzlyGWXOFHqc1TvrLU9FeS9RfMjZRHhJMjB9K6KbTXMo77kbIyLjwpP4nth5t3BaXkW3cucnH9TVzQfDrWqztc64t6WgMIdlJ8oZ+7z0NVJfFcHhtTcXFnPmRskqd24DjGcce1UZdQl03TrdzaSTG9maZ4lB3qhPAPbgVV5KOg0+pr6R4M1DRLOeSz1VZ9O3ebJEnzSKB169Pwq7p3xD0e4Wfz7wRSBhFFbyJjdnkvntjpTdJmufN80xtpukjEnzsGnfjpn0Oe9Ynizwbod48Y0Uta3c4LxlzkKfQj1NKLjLSejYdNC7r+r399D5uj6hCTDgm1U4Jy2CPzNdxa2fiPRPCo1eC5jguHbNyik7FyOAfbArgNH8D/2Ldxard/8AExuON77dqqemcf1r1DQrk6tDLaTSSW1pKCzI7gjjgHPpntWcqsYS5Yq6e/z7ehrTai9TD8MXeoMj6hdT2N8sBId43+baw6Y4/wDrVQ8WaP4Z8e2EsVxEYLyIYjm80s8fuP8ACqVh8L76+1PUZdFnjSIgbZHmIWNiemP4hjP0zXM+K/B2v+EIhLYwNeySKVnlhyShz0HpWkaMoTXLK3X1JlzR0II/hBq9pbpHFqjbHcCJt5G057iu31Pwl4h0jwjc6pqGqR3iQRqiRImD6An3rG074sW1xaWtpLby6bcllVndS65GMlu/PtXX6rrS+PNDOh6c8lxcyttRwNkQYDjnuB1NNyqSqxjOOjKppN6FbQ7628Z+GBp+p6e0moKrQpBNHwVwdpHHv/OuCb4feL/CcNra6DqMdzbWu6bBGw7m5KnP3uOn0rXPi3U/h3c2WleINN8uRF+S9jfesw9V7Ee3UV6Umr2msabDc2UsM0kwAJxxx0X+lQ51KCtFXT+Yt9GfPGom31HxTZx6z+71AlUn2yYUn39DivYU8M6FcaGunF0twfnDRPlmUd8e1UvGXw40zxvD5szJp+uA486FSQ7c4Vh+FcvoNjqnh7S/sut6LqMmJTDFepk/J0ADD1IrSUlWgpQeq6Ak0zoJNIn8FWqXWk+I1n0+V8fY9nzO2cAY710kV4keo6jpWrQw3EuoQRrHJLFvXY6YIHpj+leZwapbai91HZW88c1hKkkVpneZArHeWPXP6V7JY6hZeMNNhvYAYpli4EvXGPu/mCK52qlNdm+ponbRHjEE2o/B6+1a2dLq/wDDhY+TcRp8hf1J9hmtv4V+ILnUtZu9Qub9ork7SlnJwGQjgkfSuli1KHxNNNoOohxbypt+zwnbkcnJNefyeE9X+G+q6nrcDrPoxXy457n55cdh7HsK3jUWJpyg9Jfn/wAEPNGzr1rZ6Z4rk07TZZJLnUGAl3niIN94CtG6+C9lpup21roer3dlI8ZlmRG3YA7/AIms7w7Y23iG90281uV7XULljPbzAgK6j+A10HjjTb3SNWi1zTb6Tzci3uIt+d6HgbfpXK+eD5Yu3fzsaLqzG8FDUb34hNDqdr9sTTlMSzSDAwOjH3OaK5/V/wDhJ/Buprq9hd3d7pN1P5kwZNxX+8T7UVtKhzqLhLp0Gnbc6aHTL5J5IobyO2k37HnUj5gTxWjIb2yY6RK/24FSXn64XuaxP+EZi0+0nsJ7iRLoks0jN1966Lw34asp7JFudQecuCqSB8E/7Nc0ZRqSv0OLZ6laaLTZdGMmnzZdP3eT0c1gaR45tJ9OudJe1MFy8gy6rwwH8quW+hRaVfTXKzswtpCfsp4Ufh3q3qFvbXEcV7bWEXnOcuF4IPrXRzRacXuxF+W/sfC9qmoQzGViuHVRyOOla/w18YWU+nahqE9n5lvPKdkUgGVwK8t1bWZTatZTtBFHISTgHeGHQfjXV29m+rWUMNgYrP7PGPNQKRlsc4zSknD4d3/TKi7O6O3nutG1Lz762hiESnzDGoHUdcD1qzfppuqwJJHqQltFw/kcK4BPAGa81ttJtdFs5YG1F/PkBJQ5PX3rTg0WF1gia5RXSMbctgmsHUqQXJa663/rQ1VSRPq88+J9Pg0B47jdhI4stuHuaqw6bqdtYYvJF82H5/szNhgPTmtmfVWivomunla7k+UvGcgADuKr3HgTVdQtItfjlM1lLL5YkmJztzg49vQ1UKcpu9Ja+fRByqfwnM3Gs3WtxpZDSUjtEAnlL9flPABHqf0FXvDOuxMs8eox4nwRG2PlxnAUe/vXd6Rp+m+FbWa2a3EDSy5RJGJ/hGSWI7/Wuf8AEEmm2sc907WxsgzApGwLrjqB61pJyU+Waat/V/QicHBamBL9g0KVpbu/i+y3bZZmfcQfYfWs3S7/AEy61aS9imkuLC2GxJWBChyOT7kflVXSvAOneONReeAS2dkhztLFkY+nPfp9K7iG2tvDw+wiyIYA4UAeVjHVfb1NVKcKaS79exCXcytJm024u7mC3v5VnuGL+XIcqR1P0/CqEXi/UpZrvTEhdZ1YRxQmPgAnly3cd8Vpaz4dNvp41vTorayuACcE5Uc4GKXwRY332B7ueIXE0jkbSQrAeo9BmkkpLTW+w0tS94k0zXvAttaX+mqL+0khG6HnMh/iPHv6Vh6J8T7HRYbBrxxOl0PMmwWZ489MgnGT0+ldXPZ6hf6fcl7oIYYd8NsCQevP557Vyml+P9MkeW08S6VFEzYjWVrcKq47nA/lXS3zJT5ddtPK36Gs9UpF61+Inhm91oyvawzIpBHmRgD3x74p/wAQfFbQyaRq2gWZitrAYnEClRgnPOPbjNdFoFl4B1MZYWDSK+VKgFWXsMVP4e1m0fWNZ0i3trW2t7xClsrplDyeMD2rKHJeUpS0XTvf/hhwXuu7K0q6Z8VPDiC+05poJPnDjgxMeAyt2xXndn4H8X+DNQ1S20loLyxkyLf7QxDEDBzjGM9u1T+Iv+Ei+G+o2tve24m8P2nIe0GzcpPG7rzmu8tdR0rxfDbX9jq62d5aNjZJLwxPUEdx2z7Um5UV7usX37/oRvozgvCPjx0szBrFrc2uo+YQH8ptpIOM5+oP5V0Vx4z1DSPEGlWerX8rWFx++WWWLhlyQML61H4s1jV7lbLSbaa2jjzJctNwIyi8EknkqSDx7Vr6xoVp4m8LWDTAzajZxh43Byv0GO1aziqclJppv8H/AMN9xduXRbnl/wARv7W+H/jC78RadCn9m6iSqK3Pl5Oce2eSPat7wfq9rd29vrb6hK15M+HtITxkdAFqx4ktJvF3gu6sLkRWkyMGW4JJVNvJYjv6fjXBrpviS4ktX00Wl89nKkix2i7A6qP7vcnvVxnDE01GTV72ZD3uex+L7mIaBHqunW4tdUuflVCwEme5Hp9KpeGtIPiTwfc6Tr0stp9oOFDHlQDwR6muD8T69c6/qGmxXA+xTRNuuEVcKjMfu/gK9zZrW1022R1juAANgQdFI4PrivLqqVOKu7S7msbNnhGm+E7zTdXbS5dW+1QWsmVK9YsnjOeh6dK77xt4CvrnQ4tQttYeC7gXzFRpMRyn2HYmvO/HFjJoviy7jt9OnS4ncTWuyTchHfP416Fquq6t4p8GW6C1mt9QtGVmtnX7wHBAHpXRWnKMlUVnf+tfIuNldWM7QviPrOl6XBo2saUtshRgZWX74Pv0xRUOu+LrrxRpCaNbRyW+pFVH2dkADAdcZ6UVx1I05tOclB9rmsVpuaHjS2tnvLZvtShpnAwjZOD61WsvAZt7iIpqzR7W3JlsAH6Vylr4aXTZDPc30koj5UAEgnsM1e1wyavZwTWNlPYzxn95vfg+9bxjBXSeh5rZ02laXNPql0L25SSeR8K+fvVPrNkPDocXF5GY3HRQSy+3tWBa+ErvU9IhNs8gu428wy7yu36VWm0bxLNdGCfUkmhkwHL4z+dVFU7Xe/QDa8I2lh4oaWKSIxW9vKGDsASR9fWn+NLXUJtRI0iWLehHynglfp3rastO0rTbODTY79LOUrkyZGZG7mqd7e2OlJcQRpDqN667A+SWjPr9azu4puNkW9rGPLHcXdzD/bLpFKhC7Y0xk9hRqfgi4vL1JrW6khlI+UMSNy+gHtXTa3p8tzo9nc3DtBOqKTOCMjH9ayrqxudd0q0vrPW7i78t2VGY5we4I7VtSVk7rUTVtDnvEGj63ZyWKW2qfu5hgysuGz6e2a7vQ/Ev9kG20+QzSyRRJERkskY/l9a5DxDrx17VdK0mGCSO5s2UEbfv45ZnPf2FPNtfWV8979sSO32bZYmOFyfT86eIXNLkQ07bHe6jr58RHy50QW8CFGCkb2PTI9qwR8LtH1Oyju472SA4Dy2xPzH6eprGOrmwnM0J89rkhSpyAB7etSeIvGVtfWsGlWMvl3O8PtiT5gCehIqYc0G2tfJlKb66nQ3+pxaNDa2mlWL2qRAERwrnzTjnJOfTP1rK1zx6lvFZDULJjK7s0TRRgkHGAAfQ9+tdpN4hkv8AybGVIVtbWLZG6xhee/H1qhLZ6dZRWmoRRrcSwg+ZAy71iXPzH6GknRlVclJpX6r/ACv+RpKMJdbHnul6LrWqy/bNbvHi0uNt8VqvAyeQMdfSun17xTeeDbB/M0221FpwET94AYhjg8dc1f8AFesefJaeXpgvYJIzgA7QuenTqOeKydB+DmpyW763cyHzQC9tbTsXHsQenHH8qpqcJNzVv68jOUJLRFXwRY+JPFmqRS3kg0ixZCu0KXd1z90Z/Cr2r+I5/C3iCzt9Q08XulRSbHIh3lTk4OCM59KreGviXF4Sne28RabdRagkxKyjO1k9V54PtW9r2pS+IrnSNR02HLOVZzJyHZGG0fj3roptyTptWb1Vu68/QunZxcUatlovgjWLO61eKzWK7T5VgjTY27acEr6d68216z8ReEo7XxImksLZZfON2j7mVem0jpjHtXqniWG4lsrLUJPsrXmooIs26YCLnJUg96o6dqupXuh6hFcRvLpd6TbpJJwEiUbS2PTHf1qeaNLDxdRX53p6bfqW4+7ykVt4y0690G0fVYopjexAquzc0iN1DD9frXnGv6XoNh4juRott9lgjjEkhecMzknoq5qxqraBbeObbR7HNnZsqIbi4fK7VB6DsMfjxTPjLp2l6hpFrquiWjpcWcgVbi3X/XL2+uMZz9a2cFRnKlJ25tF5f8H8iH7qt1Nvxj8PIfGPgqymsYo7K+tIi4fG6SQYztbngZ/KuQ+Fnj7xJYXP2F7c6hbWvySSEZ2JnAwfQeld78MfGEXibw4cTx2180fkSoeCPVgBXntjNqHwv8TaxaSsLrSyvntIqANtbkEKefUY9qI3lF0Xq195L6SR6V4z0q41rw9fiwt7WS8nhOV37SvpkDoev51y3wxtUXSxdR2zWUhBidlcswYdSCeldVo0en6tpIu4rpktbgBpWztOR6n6EdK5JNIl+G/xAmgtbxItLkjWdba6kyG3dVHXnOTj0rijJSpzg/l8imr2ZyT6LE3xIl0ptRmksZZRO285Ikbk17PcvZ+F5YY7hTeM5Ah2naOe/wCFcX4s0q7hE3iTRbqG7ubkiKa1WNS6KBwyjHSt7wbfXHizw/8A2XqNpNNJDGWS5jj+dGB4JPbFOqpVlCUVdvRevcuMWmYPxHa60bxjoestILiwcBFQxgCPnJHuOa7G+0PUbq+HiLT7lGCwhWiL5ye3FYEFjH4+0SfS728U3cTZj1B1+SPHAXHYGsTwrpV5Nql3okGox3McSmOZw5KBPVT3rGpd0k5dNH/SNVEr2jTfEPWJL5kg03UYG2hA2Ayg9PrRVi4+Fc/9tJdeG74tFbLukuZDtTeP4Qe496K55qFSzjLTz6fmacrZ0PjfSdPTSWu4bsCDPy7fX6UL4YOs6PZpbXS7Aozu6k4rkNZ8NTQTxC9uJrm1Bz5ScKamuBrAsoJ9IJS2J+Vw+Bx2Ndkope61Z9TzDuYNMudJtcXJljVF2iSM8fiKw7q2iheUyXiyBjuzu5B+lQ6V4p8WSMtpcWgeNvlMhGR+dKPDAn1oy3aSOqsGaO3Odw71jLlUeVLRdR27Ghq3gTTtUe1nN+ilkDfIfu+3NP07w5/YM0ggjgmn24Ekp9en41avdFfxLbSf2XGzJbyYUFgrJ7Gq+seELjVLPyJNRjs5Y9oKs/OR9Kak5ytBFcttTPa41DUX+wPD9pjMgV9r/dHQ/hWRe6RqHha4lOiFouCZFY5Vl9frUt5oWraJPGtpdM2xivmxnIY49a6HwlJqs809xqsBlgGyJSwKgc9Sf0rWDfwX94SV3qR+GNKhtNOS/vkD6g6sxYZ3hCec+9Q61d6ZNYlmkVraH5WOzDMO2R61JqnjOzl1W6tp7V1nhPChceZx61hRTR6pPPcz6ZNFbmPakIILSHPLfShrTRibvoRm6tjdW3lXiTWkI89S+MKegU+wp/h+80pvFrLtt7zOZJIolOFbgj5u4J7UyfwhHe6dvNtFa2yLuYZPzDPQmtDwkumw2s8lpbLGFBi8yMZwwOR+dWmnES0ZPc6zcW01yw3BxJwqICNufX1qLU/F9taae8LADzx5UaPJt257sfQc1XuPFV3FZ+Rf2Kw7p9wZkwQnue1Yt3q+mXVxcWhjUXcsY8pDHvVmP3SPY+tKFNvToSz2bwZqtnfeBdKs7iKJp0BDSDAlxkkYbuMUstzepbpDFqZEatkwQsVcA8YXjBB61wtlqqWGl2sE1nNdSRKEdOcRn0rotN8TLcRK05ls9NtgC7SjcRJn5QPesfrM4txqLmjtZ/1+J0xqtOzPQ/D3gTw9q1jE+pSQXc7vsZJf+WRHQMT1J55qz420HQn8MDTtHVLa5s3CSNG2FBY9s+x4q/p/w2vtf8L2OtaeJEMqh5YCu1yueCB0OcdDUtzYwvoU9vLH5M5bkqnBwc89wfavoo4WUKka9CyjZadbdv8AgndGCeqPOrRH1bWJGjiJhtrYFY2YY80JjI74zisPWdQj+0WWkRyyNYIEgZUOC0gJBjH48mur1SM6Ori3k843SBUkj5Vfxrk/E+laMgtYjLdXFzEfNVbbp5x5BLdOOnFa1JKo+ajH3lttpd79ip02ldFT4rfC+01nwxdahpnlyazpreYPsfO5cAFPfA/zzXJfBnxLaapbRaNewCOe0LPunJAKjtg/Wu18BnWYtT1Cy0y4+xwkqJI2YyGIkfe9s9MVzelaPpsvxF1HSr9h/aayMD8wRW5zkV5c0/Yv2stb9NfyOFwV02yhqfhW1+Hvj2HUIJpY9JvkdttqwbyX/uEdlPY1r+N9H0Dxd4Ra4jsZ4NStU8wXqxkAKOznuOn0zVf4rCHw5rejR6ZBFbzzo4dWfKEAgA5PTvVvxvKNJ+GEzQ6jPbuyJKQD8kj7hwT37+3FZKcI14Ts5XVr7fh/wR3im0kVfCEt7daLDYXNtb+QItpZP3ZYep9x6io/iJcaZaWlvpVprFteXUMf2mZZUO+M9MLkZLHP6VN8ObzUNTitvEM0ltcT3MJt3WU4Rsew+7Xn3i3Ur7T/AIoQ6jfaUJIAE2hTuVkHAbOOvXrWlGSUp01a9n01J53y6Hpfhm9g8P8Aw+e/FqJ72SPy4XkIyzsTjA7YqJ/EE/gf4cNDKPJ1K7Vk3ox3EtyST7c/nVbUraHxnpOnzabJNaRwz4MY6M2OMiqnjyK08Q2llp7Xjrd2mRKEXOM/TpXnc2qT6O4Ju1zX8LeGpdI0RZ1naITp5khBUkAjjr271yXgQyf8Jgscl8YrBy+G2hGnjJ5HHqa6GHSLix8GT/2hLPNp0UZUyq204xwPauL8C+DtVdZtajnL2VvGzRI3JOB0FY01zRqTTs3t5+hqtj1C/it7fV7fR1e4j0xUaWQR/dz2GfSik8Alda0C6TUiVe5H+sc7So749KK8eXJF8snqjeKTRwuq2eqa5a/ZlvAghGX7titXT7e50xtMt44DeWceCVJ4b1OKzro6nawPcT25E92fL+Q4Kg+1WNCS40lpr2a5dXhYRrA+cn3r3nXg4d7HlpaHe6mtvqNnMmlSLajcAYTwVJ61IdOv9PXzUt0LRw4YIfvViaVZXN0Wubg+Wbnpk4zUuu+MBos7xTsRbvEYt2c4OK8/m9s02uvQ10WrE0LxMdL0e+uPJMVzLLu8iMdB061Nqs8F9pUlxcoIw8e/IPIftzWb4c8OXOveGPku4IHlZmR3PzYHQYqvd/De9huYBf60l0/UWyEgH0PvXZByb122sS02V9H1bVdGsLmXymuDM48sZz5WOMketXm8VXAtVDX/ANrhcqrCRcDfntWVp73ek3F5ZSAkS5MW7gg96saT4TsLK/ivdSui7KS6WiggFvrWqkmkk7WJVzQ8W3VpZalGsqLBLLGWW5Azz6c1mWWtwm2+z3SSO6vlZE+9jHOMdq19Tk0670uK7vRLOwTIQrwoz0FXbCGwkay+zskZZN5O0Ej059fak6ib+ILXZw114rDrLZadplxezS/IBISQh7nFWmsn8MeF7e3BdLh8u7IgJ3Z+bn0rqtWH/COwKNMs1WZw0hdupP8AjWt/ZzCC1h1Ha9zc228E4wR14P405VfdQ7XTPOtd1q61jQo1MDG3XCkSc7x059TTBY2fhKW0htIRIFwWmb5mz15/ljtW3rPhORtZ0jTlt5zLeyrIrjIXap647itvUnj8L3E9qdPivrmB8/ugShJ+v1xWU6raim3r+mwlFsyG1bV9UW5itICHlHnFHTdsjPAf3PFXvCXh/WdW8SQnV7S5umJWZC0ey2SMdW9z0Fdj4KMkdzNcXmnhr+cBYo0GIrVF52n1yT39BXe6bptzqttJq2qavb2+mhgmwHJSPnqB0Gc9eT6V3LCS+Ockl17/ANWOuFDaU2dvovjSLT9Kt4oJHe4jg8tkiBI9Cfr25Nc7rlw9lYXd4zovyjYpIJx6n6Vp6DYaStzayy+fc2jtgsW25X1AHXtxVrxQmmyXcNpAuYSplLKmzKZ4B/GvrsE6OLbdKV3t6fI700locJ4ju7TUPB1na2tnidG2Eqm3cM5yRXK6hdjQ9PZbjQZIiw+W7iJLKe2M12mveGr7TxFf2+CqjExPIjHrj05ANef/ABG8Z6pql5pvhq1SO2k8o3K3UbH97H247HIINcWKSwcOeS5lsZVZpRucT4D1W38J+KNS1KSa4bTb1fLyyHJkzzux/Dkdf8Kb460PTb/4m6dLM7Wd1dxrcLdwvgsegH1GK2PB+pWuq6TcQa7AkEFgHR2xtkULltwPv05rn9P0OT4gyHUbeOaS3t28uxM8gDhQeMelfOp0XF1IycXtZ/5rocPuSWjsc/4xXUh8T9LtLiBdTtbeEGNZP4xk7ifxxV74l6rB/Yken6naPF9skWOGVekJzkkjvgU/xdcaz4e8Ux6tqGn7WbZB9oMhaPYowV6dTnk+tRfFKOHxNF4amg1K2ihkumzEzDKDb95j19sGhx/fUuboum2wOLTY/wAIwv4auJNP3K9qke23ZkIWY93+vtXHeK57rQvG82pGUtaFFUQ3JaWOSQfwcce/tXrxsrK6htNMvriOGaQfup24BA75HY1wmqi48Q+Ibvw/KLc22lQ+ZEbaTeC5HEjA+3GO1GHqTqz9r9nVE2shnw01C+vdTnSGIGGRjMqRtxGevQ9qyfC3iO60nxLqq6laXGLljmTZkhgf5Vv33iO38IeGsRxxW14yhEaDjc56nB7Vd8FWt3FdwXklw0kbqpwTu3N3zntzWEuVc8nHfT7hJ7Im8S6ta+IfBmoJZtdTyoo/d7doD5H6Yrl/CXjBrDwhf2FuJLLUI4yx3j7474/Ct/x/LNqHiHTtLsolW5nYzXBjIGRnjdjtXZM+h6dFZQX+nx3N1KAEjEYLHA6k1nBU6VPl6PVG1+hzEfjNL3wPFHaeV50MXzkodw9qKzfChGk+Pp7TUIfKVHOIyOMduPpRXOqVKDfNrc2jLQ7O2OjHW5PtXmxZXzYQ5zyKsNFBrk63fljy4zuAcY31xd2N2swXNxeKh+5HET61YvYrmC6htjO/lfe+RulazpuNk46eiORVXa5saxe395aeWLOZrVHLLJGuQv41b8M/D+fxTEdR1ZlktY/ljt1OJCB3Ydq5Z/Ht5oulzae88hQzYO1f4fY10fhbxhFFHcRYnSdW3RsG5ZSOhrNUYUr77de41ODep02raTbS6TKdKjNtdRDCDbgHH9a4vUV1G3SyuLuJ4bmN1AmXvzXpeg65pXiDRpIpWlgudxVmIxtPtWXeeEX17ULOG2kmuoUHmSsvIGOmawaqQaT1vrpsXKnzaoybfUdHudXIurWRp5By54x71JqtgHaULDGCVwspcZ/D3rd1vR9O0RY5ZEZmOXfkZHpiuWWK+1uOTFuQGbckzDlQO5xTVSVWTjCPNbt+olTbDR/Dd3e+F4JxZLcGKR0IkyWdAe1O0yG1bVhHHbyWjOC26bhEAPr2Fdydfu/B3hrTIlktRGY2BLgF5Djr+NYmltpF6gm1UBobxhvcMMpg5Hy/w5r05YXnqRgqkfP+rfI09nFPVnN6yb7V799OssTRpLsSeAfKCevPevR9a1HQ4LHTrdtMkuZIIw7ySfIikDB6e46iuW1t7bS9ZbTrRTZxlA8Mjtzn6dOlZfiHWNRvhYzXGpCR03I0aR7AV4xntzUQdGFOVOzk7+i+SJ54Qvpc9Jk03VfEV3ZaxI0NqkMflRSBQoWLOQqen1rjPFk1rot0TAPtROXmkAGQM9feud0n4hahDa6hoANxMskYOnxPJ8ozwcH0B5+lY2ta7qFlpcS3keZGIQSr/GB1/DIrrxGJkrQo+4vL/MJ1217uh2+u+KotZ0jR72PbFaxBkmtYCBkgfKx/HHX3qj4evP7cnuoo2kFjIifaUB2qpDZP6DH415zo+vJZ3fm29k5sZ4AotwC3myZOWA9R/SvV/A1nHFpsr2rCQjKzKQd8XTO9T715eJi+d1Z633f9amKk5u5614QZtWtZJAwaBYmEYB9Ack/pVKLxHHDdp9oJeYnOxV3M+0fKAPqayPDs8mgaZcBWKWepFkjjBJZMHkA++OlVNS04xaZ/aolmhuo3ZYoWOXLOuN2fQDHFepl0/qGDljIO/Nol+L/DY9BPlhdnpEnivS76zd7mOSBXIjNvKOdu3nAHHPvXzd41s9Z0XxZDrFjALmS3b7P5X3iY2HUD6d/euvs43+zqkmoLmTjzC2SGAGevepvHyRT+E7W7068xqLb4nAIZ9pHGMenOT2yKeCxbxylQqq3Pr6Nf5+pkvfTizxXxxrLeM9K1F9EjFvEu0TtzmZkHIC4zgdM+1dN4DvLZPCNm9pc/LFhJHJ27iepx2x61T8N6o/gfQZWuZIHsYN5S9ZdrlCOVI6nnjms3SbFZrW21PyxHLcXJngs48gLH3OO/19q8yceeHs7Wino++hx25Xc3/EniK+8WStoVhBBPp9uwa5nkZSzEjIX26fjWjq/gzwpeaNFpMcE6anNjyVj5cv6+w68muFi1B7H4k3V6bWO0ivIANgwRKwbBYD171a1W4g8HeLZ9Xmu5vKNussP7zLgn7w/SuyDlCUY0G3aOi7otTaL2veFr7wxdeG7nU0N1HazfvJUbKmM4Azjoc1mNHLpXxknlgsInTUkDK8D9VIxkjp26VpWXi/UvGV1brd2s50eMBogThJH/ANr2ArtLvwRaeLdNiltvK0/WLEboZEP3wOik9wK0c4RXJblk1bTa/wDX4mi5Z6I8n+NNhFez6dBbQeXezSb/AC2GD6AfiTXQaDq0mkaGLfVLKWC6iQiRYcZAA6j8BVTxXc3PiDxLptzc2YeK3hEQmtyf3cgPJPrzWp471qODw5bwTIIDdsYGv0AdORyfUHFYzhNRhh5brqTyNNs5HSNKbxLpOoeJLG6kbU0kLQgn5ig6Kw9MV1mheKZJvCkF7qc0XnqWZHlAyCP4RVbwZ4UbR9CvW05m1Ozn+WNlOw49fYVlaRaW2vfD2/01oBJqNrMzRg8upzwB3NFZxu4yVkmvuEr7nQ+BPsfiWK61HWFEt4zH5uV49M0Vk+D9el0zRWshGJLqN9siOuGjz1+tFcE6lSMmo/kaIpah4T1LULiA7Fd1/ePIrfdxRp2tX+i3FwlzYvcs5+Rz0x9a0tE1CS2026llLbJXLBCeSKLCMeI9PuomdrYxyAxFj1HpXRGpZ6HJa+iMCBv+Egvbi4uWFsjsBHGBnkV1OgaZb6deSXl1MXtdu3d0OfpVAW6y20KpC1vcW8nzEj5SPWuj0XQ4vENzepJIpWJBJ8v3SfeuWpUcnccY3djrPDk2mS+HZJxJslkYlQP4jmuz021a20fMDtZLOhwTwCPrXD+GNITT9KP9oBLe1Us6EdSfaqGreLpLjQWMEksO1/LFuxz8vrXVRxLwcJxi9ZLa2339Tu5vZx8ywniTTbHVkuLu3bVLeJ/9IgST5mXuA3Y10/iHx1HcaVZXuhRRWdgyj5FwZD7H6V5PJbC0hY2gZ5JuWz933rE07ULzT5LqAgm2fkxZxt9CPrTVSc6fs56LfY5XVm7pnZeIPFen3yLAZQxUh5Ni7gh9j25rlNZvtVt7ZTbdHIAU4zs9T7VkaJdiP7RCzfPNIX8gLkgfWraalbX17PFdF1lUDynTOFq4xUZXuYNt6s1X1R/FCRyzXyzTWaCFRGTgcdSOvtTtUml1Cy8t2+zrHy5yc5Hb/wCvWM4fwxrdlqcjKkJOyVVH3ge5FagMt/rDTXBjW3mG1Yn4z6EUTpqMuZ9Qvcx73U7oHTzbxsbm3Ytb/J+8cj+7ngj2rqdRsZ9Q0+GRnV2C/LbfxK5HcfSszXNEuhe2+bhVggPnoI8Hp2B96ytFvL1559VSAZS4/eOWO4r0ZQOhpuKqRUXug20ZrafFbw3f2WGfyprKJnTABDE9ua7XwZby6Ldw6urNJCkam8jDDE4zg9e4zmqml+DF8WXzSwyhpGUTMqLzsOMc9h7V6R4c8JpbeH557m5dILUFXgcDLv8Aw8dhXnTdWbUYq9jop023c1vGt3b3P2KfTpHEUI80BEAEp25K47Y46da8f8T6re6rPaR6ne3SvKWaS2V9qxIOi+5NdzZeLb61nSw06zglnWEqXnGVi5ySP0Ga43W213UpYJ55tOtZpBxmLoTwT19Oa9rMJ048tDDy5VFarW3N1+7+tTory+yc4J4o9NFvaaast45aNpZGLEKT97PqMV6L4LuLCOR7R7ERmSEJvjBIAPr7Hj8a80nl1nT9cnjhaC4ghG5wsYUMB1rU0HxPf63Jf+TdjSbhH2iKMBjtXoxJGeteMqNSTUozs1qcsGou474s2MmlE+GUtw4nuBcSO5A8yMYKqD154/Kpbma21vQBJZ3K2t9bgQ/Zf7qjt7V0sngzUPFvhsahc+dNq0CkMXIy2OdwGOoHavOfE12y31x4dggaO9lC+ZcW45d8jIHccda9ivNYy1eHw9eln1+/dG9RX98reJ/ElncNZW8CQvq1pmSJACx5GCCQefoK5Hw1nxPqF3pWv2ssepy8+aW2/u85UYPYV2/xG0ez8JT+G9Wsbby3tmSN/LH3gQO/XOawPidbLBqFp4g0/wAz7fKyKDjKque/8q3oyhGMYQe+z9Dld29TtbeDUNM0t9ItpkuJvKIjPcA9Dx71h+MviL4i0LQ9Ptp7KETPmGVEkPnAAYLccjNa1pPBNpUF/HJJHchB9pUEI2fqePbHavLvDPxBuB8QZV1GaaaK5dhIblVkJIJACt9MciowtOM3KaXuxf8AWg78q0PTvC3iB9QRtO02E6ZZfKxkdMu5Iy3J/nXX+J/BOh6p4dmhur0oqoHhVX3EydiRXmvjbxJcaC2kiGMrbTyHzHQZOz0rq9N1ObUry4X7NJa2rRjypFALE46msqz9natCTS7F0520Mv4dWGpeENeXT9QnaLTphmMuf3bD2NR3X2fwb4m1G/0qGW/geUbHhGVVj1BNd1q/iS2u/Bg0ZrSC+1SZdkAA+ZPc46V5VYXWo+BNSvLTUoGs7V4/MEUhyNw7jPWsIxhU9+pu91/Xc2dklylm7mPiDxXA0jP9q2l7womxVH8K5oqXQZTpenXGuX94siXh3tEBlwo6CisaqnUm/ZLRaEavdmtb6jaa7CmmW8G24T5Fb196tahGnhlGt2iE1ztzgetM0TSZEu4LjT498zP82f4a2PEFlPcxzzLFtmUhckZJ9a4vaxjLVakxg3salhAms2cF+1iEtEiAnz0ZqXQrWJ7ycQIkKshxD03Yp2lTJo3hTyPO8yQkM9vnv6muZ13xIEiEtlNsmTkeo9a6ZOPtVOO9vxZu5Kn6j9b8W2ceoRWV5FIoQ4kdT8q066EE7tNY3kU0aLnym7isO5uv+Eh0tljijaaU4dxyQa5nwlazAXltPDKsiyY84Z6Dtis9JQlKe679Tmk3zG5rks6XKNauY4Ww3qBWfeahbLZM5ilW7VhibGd2O30roNDRpbi4NyoS0hUBUIyWqfUYLM6el9BEq7TgQv39auFSUI6bdieW+pmatcW2n2ov7cj7TcKCCVAIGKiuC9pp0U22K8knUKCg2sp71W1a0u7q4tZ4LcNaxgNIh6fSr0fh24vLeO/EuyHJACnoPaqT59kJpoybuJ9Vjd7eZWlQBHjmXlfwq5canYXlpFaInkvHhBLPwpYDn5u1Z097DpuuXM0conRIxEeecnrmrcV5E4nt2WN7Zl3kk5IyK2ire70Jegf2s/hqOC1uCS1xJjJ5UKe4NbZvLWS1n0uySOaR3xHP/Cn4iuRgmuf7Nazu4VezjJZZerYJ4x9BXc+HNGOgyWZ8kXlvIRmVV+VFPc+vWqnP2UXyvTuC1Z0nw7km8JXMGnyW0smpJgJtORIucEqe/HbtivVvFkVxGyw2iKi3jpPKJAcs3C7fp3Fc1pehxwTG+LsZYyGgl5ypHQA1Y8Rarda6q6wZbj/R4x+5iPyjsBxXVlrpqc8TN6Q1a79n6np0Fyq76EuteFJvDlveXMcao0kCptP3lJPUHt1FeWX2rAeGm8+AFoJGByMk9QD71v68Fv4zbJqDyytCJDG8rHnPQAnj0rkdThuZQtrZ7fssi5f7S52o3TCjvXm1FDEVW4N23ZyzldlLS7uXTpo2+2xrBqChZZGwdqfXtznNXYPDFp4c8X2c6aibldSLKzrgKzDnOOoBrMjubGx01YbtrdXtn2i3QbWmb8f8aW88Y2VzbWkn9jyTOsuDO5+4eg6e34VTpVGnGys79fuX3mSslqeueCtbuTr72gldbeLKKUPzMzfXjb9a4jxfoc3hv4pR3LoSsYzCVXPmOR90+9Mh1LUNUmk/sfUo4YlAWR0TDMe4Hp6ZrrG0dNe0tdYhnluNRsnDAytvHy8kfhW1CKhzUpy0lbbZSXf8tDpi1JcpivdReJtCng1uzit7mOR5NrgBVA6EfSvOdOux4sF9osMMUnkOCJJc7WweCMeldDp/iPU9e8QzXVzpayyJKRtU/u40P+z6+9ad9plnaancNaYjurwGQRqMfOOgPfAq1anLkT5prbokYSV2ea6MYm+Id5ZX0MwFigaKMPuhkYj7zD8a3b7wbpmneG7vU7lEu7u0dpFEbBcE8gj29RWFpXikeEPFerWWuW8P265cMLtAf3gPQKD0AHatfxUbaxht9PhZo4b1jJLK3zAL16V6tSpyNe7/AF1sZ9Sj4Yik1aLS7q+aW53IXmXIKLzwAK7DxJrw0rQ5b6wgRJQwSOISYyfYHqaq+HfCsmjadDd2V7G6FixhdCvGMn6V5lr3io6t4hvWlsy3lENbmOQ7EweW9zXJG9ebafu9ircqueqeD79rPQLm4SKNNQJMsl1dDa6+1Xtd06w8b6Kq3E5uLh1AjvGyQG9BWTLNpuq+HZLm8Z4YZolDnd8zn2rX0kR6N4ctJYrY+UGAhR2+dj2NcMmvjp6NX+ZrGT6nCaxfG3tP7Ba3QXe5Y2KgjcoPbPrRXZeNPBmqeLXi1YQJbahbKG2IQAyjnn3oqo8zivZfP1KlFt3ia/gLSLiK7kjkWRCpLZPAzXQXmpW2li4ikJkn6h8ZUe1SXWrC2lmXcgdlymOCa811jxVe20k0d3GBA78tjoK82L5LKFrvd9zaclTjaJZvtfTUdaaS4j+zx7cZj6H61zMk0sWo+bHB5ySZGD2rVjvdPm8maNg8AbDjPIqhJeef4h8u3VhbdF47VdOMlLme5wyd0U7LXD4cuxJHGUlDElQMgj0qxoGty3d7PNcOYTK2VRR1pNdtLi1kaeECSFfvBh1FZmh3UthrbXxtfMs5Fwm/oprrtzR97oStjvreOW1mjEqcSkmNs/ePvVG0voJ9VntrlAiKCTuPB+lTzfaLq3S7KEGMZUHpiseSyF7tuXkSIzAgI5wfrXFSTUrtGm6LkuowS6glnYXBeGdfnTqFxVDxBY3loyW9vdukEeScn5MH0rIhhayMMdsssStIUe7x2zzita9mF6o06Ul54GDrcA43r2yK6nSf8SBDae5Q0DQZdQuJY45VCMNz7o8l/wAabcaFaxWHmG7ER3FXjH3iQe1a2n6nqN7I1taW/wC9ztjmAwAPerv/AAh9yiNBLG01zgvu28P64+lYyqSXvMEuYl0/Sv7Vt9Ps4oREu3Bc/wAY9a7fQtHudGu7a2DrJZSSC3SOdv8AVE85HtWD4d0XU9N1PSbaSNgZNzq2eiY5rXGrRpqSNfvhVk+WXH3QD2HelSfNNOXw31b2/rsjopw6vQ9n8SCz0nTYbOKNPOkQLIkbZGMfe+tcB4oku9A8PW6QvIi3Hzywgc7MgD+Wa2buSCLQ4NSjlNzGxIVt3r6iuR8Z3sb3lna/aLidioHGMdM4BPavocTLCUsvaw8/ek99vkdtSSUNCpaTacurF4JEC+USDIo3H6iuE1UfaNanitw1wtuWkZYzkRk+nPWtPRZ1ttUuhNazC5yWBxuAHb8K57R7S+sNavp3+5cv+8VepJOfwr5uMXyyb2POlrsY/jrTUfRraC1kaW81SfckZHz4X37Yrp9MtNR0XSrTTJYIpC4VpHk5K/hWB4tsg3irQWnt5I1DZdk6IvQV1izxeGrme71C7EtvGN8XmfMWXsAO/Fd0qi9lCNPVsi12WLDTJtO1K7hmWKDT7mHLqrbXBHceleg/D2/0fRo1tp7gT2hHzKrbigI6HFeDajqGt+MNZgvktRa6NE+7eRtUp6k16JaW1xPYxyWaR2kG4M0luArcdvpWNWkowUqsr27bXNIys7xRc1iTTvCGt6sdOzM+oSBbXC/dz1yPSsjWPCcWh3VtqlxdSi52FndnwN3oc9q79vDtrq+hS6g8mZLRBKCr5Py9efWvJdGv77x1rGpzatibTlOyFJMYB7f/AK660o4mP1hLlT3XW/8AX3GtTZMpeItMtvFtgLoxlpI7gTecVyNo7Z9MUt0+lahYw6lJG7Q2nHmMMbx6D2pPEa3EmpW2kRQyRaSvEpHy+Z7fSofFkbTWlhoNpEQZ2XeYx/q1966pVY1JRjbVL7kcuu5d8Y+ILrT/AAhJcWsBMbqACx5CsPWqOg6Pp8/hOTWLiBYyYzttwM7vqa0/Eui2dj4LmsLm5aKJY/kY9Sw6Vi+C/Dt1r/hi50v7XtVUykinJHtWVNxcbrTUp30RFqngO9i8IJqUF6zhMOLYNuXHoK7a01f+1vBNs9oVku4VUlWGAMdapfDjWF0i1uNH1hdj2oP+s4Dj1Gap+FJP+Em8RXFlbKtlpMZJKjgvz/KuKpKVS6T+F7+TLSS1Oz03xbpzIq3WZJZo9jQQtls4orjb9LbQPiFAbSB0twApkI4J+tFYRqrDK199dbmsZPodLqWVkF1kmSJcgHpVxLG18Tac01zbqCVwQKKK56OsdSI9TzoeH7e1v2SMsIw2dg6VNd3zabfxSwooOMEH0ooqoycpq7MmvdMrW9SudRD5lMa5xtUcVY8Rq+m6HpUUch2H5iMd6KK64fFFErZnUQay+raFGrRiN1AXep6is2y0SK+0bUr2V2aWF9sYPRQKKK7IRTlK66Mta7lLTLzyNRiRkEkQXIjJwM+tVNcjMFxdXETFGfauPQUUVnSbtJGXQ7rwrEmoaDuiX7LcxkM068l8dvau5W3W6m067cneCVKrwCMdKKK4fixUYPZnXSV0jifEd7L/AGp5kbtHs+VQG+6PaqniRWGr6bG8jSFsNuPHNFFViIqnzUoaRWyFWfvW6HpumltQ8IXkTHYIsEFR1rkvE+otqOsy2UUcdqljAG3KNxkJ4/CiitqVOE8DT5l9p/kjSb9xHHax4gvtNvYLaGVVluE2+ft5QD0FZZt3s9Cnd55J5xIZRMx+fdn1ooq6fuxaj/WpwybuW7vXJ9S16z01wEt47YSMV+85I7k1z/xVt47pkmiDQPY7S3zbvOz6+lFFd9PSovRFXbvcvWV/N4phFnu+xWlvGsrQxciQ+nsK7fXdVlm8JqYP9GkchWkBySOlFFeTXk41IxWw47HReGQNR8Ox2DZjDRhWkQ4LA9cjvXlVlbvp3jf+yo5SbWGQyEY+/joDRRU4aUp0J8zvbb8Tol8B1Vzr0t940t7No0EaAue+TXIeJJbrSfGlz5F0wSaZGK46ew9qKK66cnyb9DCR1+vyR69paaVcQJm4XLXH8Q47VxngnTpPCF1cx291JLGGPytwDRRWqX+zW9CutzZEUPj6+vhdxm3+zqFBibk/Ws3TdJPhe8kMNw8qMjEK3BGPeiiuWrJxqRpr4Wti1qdj8NtY/wCEq0eWG+t0kMch2uetFFFeLjJyjXlFPRGkdUf/2Q=="; + } + + async function setup() { + await PowerPoint.run(async (context) => { + // Adds a new slide with some content. + const slideCountResult = context.presentation.slides.getCount(); + context.presentation.slides.add(); + await context.sync(); + + const newSlide = context.presentation.slides.getItemAt(slideCountResult.value); + newSlide.load("id"); + newSlide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.hexagon); + await context.sync(); + + console.log(`Added slide - ID: ${newSlide.id}`); + + // Switch to the new slide. + context.presentation.setSelectedSlides([newSlide.id]); + await context.sync(); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      +

      This sample shows how to create binding references for images.

      +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      +

      Insert image with binding

      +

      Try adding a few images. Enter an ID, then select the button. A binding with that ID will be created which refers + to the shape.

      +

      Binding ID: + +

      + +

      Show the bindings in the document

      +

      The console will show the bindings in the document.

      + +

      Update an image using its binding

      +

      Select a binding ID from the dropdown list then pick a replacement picture.

      +

      Choose the binding for the image you want to update:

      + +

      +

      Select the replacement image:

      + + + +

      +

      After adding a few images, try z-Order APIs

      +

      Click on or select the image you want to act on.

      + + + + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: | + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js + + office-ui-fabric-js@1.4.0/dist/css/fabric.min.css + office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css + + core-js@2.4.1/client/core.min.js + @types/core-js \ No newline at end of file diff --git a/snippet-extractor-metadata/powerpoint.xlsx b/snippet-extractor-metadata/powerpoint.xlsx index 12fb77cb995698fceb2ed97a90a6d80ceefd2153..98705550277c308d80465a4c5b62cbf37aaa94f4 100644 GIT binary patch delta 8678 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

      BD; z@b}-31GXoI(-_Hx4~OW)pvt4xn9I!w2UYK@6in6wL! zZe6R0z%%!HxSjQ?G-*gb>)j<6pX{Q^I<*Ep2G?6xyUP?3Bj)?CDK(AG968`lYM4`K zhw3(kl2h~+`nm|df1w!U_(vT!Qt%lf{huEm z{6)0jXkn8gY-Im6kY8ovYgP5%(1j6-$^v&OU?!qq^8dg1`fr*$7?vwaMgE`k1ON#B zd-{5p#{`pPB!r!cvH;()!*bq$VUl7jKrarMqnHr+zp3!GsC#);t^e;bWKLM0m?Th+ x2L>4U2=3#zp^`@jsqXEL;Ep delta 8215 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 78fca06c5..d45a6bb43 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -14738,6 +14738,157 @@ context.presentation.slides.add(newSlideOptions); await context.sync(); }); +'PowerPoint.Binding:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + async function getShapeForBindingId(bindingId: string): + Promise { + // Gets shape associated with binding ID. + return PowerPoint.run(async (context) => { + const binding = context.presentation.bindings.getItem(bindingId); + const shape = binding.getShape(); + return shape; + }); + } +'PowerPoint.Binding#getShape:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + async function getShapeForBindingId(bindingId: string): + Promise { + // Gets shape associated with binding ID. + return PowerPoint.run(async (context) => { + const binding = context.presentation.bindings.getItem(bindingId); + const shape = binding.getShape(); + return shape; + }); + } +'PowerPoint.BindingCollection:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + // Loads bindings. + + await PowerPoint.run(async (context) => { + const bindings = context.presentation.bindings; + bindings.load("items"); + await context.sync(); + + const bindingCount = bindings.items.length; + if (bindingCount === 0) { + console.log(`There are no bindings.`); + } else if (bindingCount === 1) { + console.log("There's 1 binding."); + } else { + console.log(`There are ${bindingCount} bindings.`); + } + + bindings.items.forEach((binding) => { + getShapeForBindingId(binding.id).then((shape) => { + if (shape) { + console.log(`Binding ID: ${binding.id} refers to shape ID ${shape.id}`); + } else { + console.log(`Binding ID: ${binding.id} doesn't refers to shape.`); + } + }); + }); + + populateBindingsDropdown(bindings.items); + }); +'PowerPoint.BindingCollection#add:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + // Inserts an image with binding. + + await PowerPoint.run(async (context) => { + const bindingId = (document.getElementById("temp-binding-id") as HTMLInputElement).value; + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const myShape = slide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.rectangle, { + top: 100, + left: 30, + width: 200, + height: 200 + }); + + myShape.fill.setImage(flowerImage); + context.presentation.bindings.add(myShape, PowerPoint.BindingType.shape, bindingId); + await context.sync(); + + const bindingsDropdown = document.getElementById("bindings-dropdown") as HTMLSelectElement; + + const option = new Option(`Binding ${bindingId}`, bindingId); + + // When a binding ID already exists, the binding is updated to refer to the new shape + // so select the existing item rather than add a new one. + const foundIndex = findDropdownItem(bindingsDropdown, option.text); + if (foundIndex < 0) { + bindingsDropdown.add(option); + bindingsDropdown.selectedIndex = bindingsDropdown.options.length - 1; + } else { + bindingsDropdown.selectedIndex = foundIndex; + } + }); +'PowerPoint.BindingCollection#getItem:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + async function getShapeForBindingId(bindingId: string): + Promise { + // Gets shape associated with binding ID. + return PowerPoint.run(async (context) => { + const binding = context.presentation.bindings.getItem(bindingId); + const shape = binding.getShape(); + return shape; + }); + } +'PowerPoint.BindingType:enum': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + // Inserts an image with binding. + + await PowerPoint.run(async (context) => { + const bindingId = (document.getElementById("temp-binding-id") as HTMLInputElement).value; + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const myShape = slide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.rectangle, { + top: 100, + left: 30, + width: 200, + height: 200 + }); + + myShape.fill.setImage(flowerImage); + context.presentation.bindings.add(myShape, PowerPoint.BindingType.shape, bindingId); + await context.sync(); + + const bindingsDropdown = document.getElementById("bindings-dropdown") as HTMLSelectElement; + + const option = new Option(`Binding ${bindingId}`, bindingId); + + // When a binding ID already exists, the binding is updated to refer to the new shape + // so select the existing item rather than add a new one. + const foundIndex = findDropdownItem(bindingsDropdown, option.text); + if (foundIndex < 0) { + bindingsDropdown.add(option); + bindingsDropdown.selectedIndex = bindingsDropdown.options.length - 1; + } else { + bindingsDropdown.selectedIndex = foundIndex; + } + }); 'PowerPoint.BorderProperties:interface': - >- // Link to full sample: @@ -15668,6 +15819,40 @@ context.presentation.setSelectedSlides([slide2.id, slide4.id, slide5.id]); await context.sync(); }); +'PowerPoint.Presentation#bindings:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + // Loads bindings. + + await PowerPoint.run(async (context) => { + const bindings = context.presentation.bindings; + bindings.load("items"); + await context.sync(); + + const bindingCount = bindings.items.length; + if (bindingCount === 0) { + console.log(`There are no bindings.`); + } else if (bindingCount === 1) { + console.log("There's 1 binding."); + } else { + console.log(`There are ${bindingCount} bindings.`); + } + + bindings.items.forEach((binding) => { + getShapeForBindingId(binding.id).then((shape) => { + if (shape) { + console.log(`Binding ID: ${binding.id} refers to shape ID ${shape.id}`); + } else { + console.log(`Binding ID: ${binding.id} doesn't refers to shape.`); + } + }); + }); + + populateBindingsDropdown(bindings.items); + }); 'PowerPoint.Shape:class': - >- // Link to full sample: @@ -15746,6 +15931,60 @@ } else console.log("Selected shape isn't table."); } else console.log("No shape selected."); }); +'PowerPoint.Shape#setZOrder:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + async function changeZOrder(operation: PowerPoint.ShapeZOrder) { + // Changes the z-order position of the selected shapes. + return PowerPoint.run(async (context) => { + const selectedShapes = context.presentation.getSelectedShapes(); + selectedShapes.load(); + await context.sync(); + + if (selectedShapes.items.length === 0) { + console.log("No shapes are selected."); + } else { + let direction = 1; // Start with bottom-most (lowest number). + + // Start with top-most when sending to back or bringing forward. + + switch (operation) { + case PowerPoint.ShapeZOrder.bringForward: + + case PowerPoint.ShapeZOrder.sendToBack: + direction = -1; // Reverse direction. + + break; + } + + // Change the z-order position for each of the selected shapes, + + // starting with the bottom-most when bringing to front or sending backward, + + // or top-most when sending to back or bringing forward, + + // so the selected shapes retain their relative z-order positions after they're changed. + + selectedShapes.items + .sort((a, b) => (a.zOrderPosition - b.zOrderPosition) * direction) + .forEach((shape) => { + try { + const originalZOrderPosition = shape.zOrderPosition; + shape.setZOrder(operation); + + console.log(`Changed z-order of shape ${shape.id}.`); + } catch (err) { + console.log(`Unable to change z-order of shape ${shape.id}. ${err.message}`); + } + }); + + await context.sync(); + } + }); + } 'PowerPoint.Shape#fill:member': - >- // Link to full sample: @@ -15928,6 +16167,60 @@ currentLeft = 0; if (currentTop > slideHeight - 200) currentTop = 0; }); +'PowerPoint.Shape#zOrderPosition:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + async function changeZOrder(operation: PowerPoint.ShapeZOrder) { + // Changes the z-order position of the selected shapes. + return PowerPoint.run(async (context) => { + const selectedShapes = context.presentation.getSelectedShapes(); + selectedShapes.load(); + await context.sync(); + + if (selectedShapes.items.length === 0) { + console.log("No shapes are selected."); + } else { + let direction = 1; // Start with bottom-most (lowest number). + + // Start with top-most when sending to back or bringing forward. + + switch (operation) { + case PowerPoint.ShapeZOrder.bringForward: + + case PowerPoint.ShapeZOrder.sendToBack: + direction = -1; // Reverse direction. + + break; + } + + // Change the z-order position for each of the selected shapes, + + // starting with the bottom-most when bringing to front or sending backward, + + // or top-most when sending to back or bringing forward, + + // so the selected shapes retain their relative z-order positions after they're changed. + + selectedShapes.items + .sort((a, b) => (a.zOrderPosition - b.zOrderPosition) * direction) + .forEach((shape) => { + try { + const originalZOrderPosition = shape.zOrderPosition; + shape.setZOrder(operation); + + console.log(`Changed z-order of shape ${shape.id}.`); + } catch (err) { + console.log(`Unable to change z-order of shape ${shape.id}. ${err.message}`); + } + }); + + await context.sync(); + } + }); + } 'PowerPoint.ShapeAddOptions:interface': - >- // Link to full sample: @@ -16195,6 +16488,60 @@ }); await context.sync(); }); +'PowerPoint.ShapeFill#setImage:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + // Inserts an image with binding. + + await PowerPoint.run(async (context) => { + const bindingId = (document.getElementById("temp-binding-id") as HTMLInputElement).value; + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const myShape = slide.shapes.addGeometricShape(PowerPoint.GeometricShapeType.rectangle, { + top: 100, + left: 30, + width: 200, + height: 200 + }); + + myShape.fill.setImage(flowerImage); + context.presentation.bindings.add(myShape, PowerPoint.BindingType.shape, bindingId); + await context.sync(); + + const bindingsDropdown = document.getElementById("bindings-dropdown") as HTMLSelectElement; + + const option = new Option(`Binding ${bindingId}`, bindingId); + + // When a binding ID already exists, the binding is updated to refer to the new shape + // so select the existing item rather than add a new one. + const foundIndex = findDropdownItem(bindingsDropdown, option.text); + if (foundIndex < 0) { + bindingsDropdown.add(option); + bindingsDropdown.selectedIndex = bindingsDropdown.options.length - 1; + } else { + bindingsDropdown.selectedIndex = foundIndex; + } + }); +'PowerPoint.ShapeFill#setSolidColor:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml + + + // Changes the selected shapes fill color to red. + + await PowerPoint.run(async (context) => { + const shapes: PowerPoint.ShapeScopedCollection = context.presentation.getSelectedShapes(); + const shapeCount = shapes.getCount(); + shapes.load("items"); + await context.sync(); + shapes.items.map((shape) => { + shape.fill.setSolidColor("red"); + }); + await context.sync(); + }); 'PowerPoint.ShapeFill#foregroundColor:member': - >- // Link to full sample: @@ -16225,24 +16572,6 @@ outputSpan.innerHTML = ""; outputSpan.innerHTML += finalTable; }); -'PowerPoint.ShapeFill#setSolidColor:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml - - - // Changes the selected shapes fill color to red. - - await PowerPoint.run(async (context) => { - const shapes: PowerPoint.ShapeScopedCollection = context.presentation.getSelectedShapes(); - const shapeCount = shapes.getCount(); - shapes.load("items"); - await context.sync(); - shapes.items.map((shape) => { - shape.fill.setSolidColor("red"); - }); - await context.sync(); - }); 'PowerPoint.ShapeFill#transparency:member': - >- // Link to full sample: @@ -16484,6 +16813,68 @@ }); await context.sync(); }); +'PowerPoint.ShapeZOrder:enum': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + // Sends the shape to the back. + + changeZOrder(PowerPoint.ShapeZOrder.sendToBack); + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml + + + async function changeZOrder(operation: PowerPoint.ShapeZOrder) { + // Changes the z-order position of the selected shapes. + return PowerPoint.run(async (context) => { + const selectedShapes = context.presentation.getSelectedShapes(); + selectedShapes.load(); + await context.sync(); + + if (selectedShapes.items.length === 0) { + console.log("No shapes are selected."); + } else { + let direction = 1; // Start with bottom-most (lowest number). + + // Start with top-most when sending to back or bringing forward. + + switch (operation) { + case PowerPoint.ShapeZOrder.bringForward: + + case PowerPoint.ShapeZOrder.sendToBack: + direction = -1; // Reverse direction. + + break; + } + + // Change the z-order position for each of the selected shapes, + + // starting with the bottom-most when bringing to front or sending backward, + + // or top-most when sending to back or bringing forward, + + // so the selected shapes retain their relative z-order positions after they're changed. + + selectedShapes.items + .sort((a, b) => (a.zOrderPosition - b.zOrderPosition) * direction) + .forEach((shape) => { + try { + const originalZOrderPosition = shape.zOrderPosition; + shape.setZOrder(operation); + + console.log(`Changed z-order of shape ${shape.id}.`); + } catch (err) { + console.log(`Unable to change z-order of shape ${shape.id}. ${err.message}`); + } + }); + + await context.sync(); + } + }); + } 'PowerPoint.Slide:class': - >- // Link to full sample: diff --git a/view-prod/powerpoint.json b/view-prod/powerpoint.json index 0c40ce1b7..3174b1a57 100644 --- a/view-prod/powerpoint.json +++ b/view-prod/powerpoint.json @@ -11,6 +11,7 @@ "powerpoint-shapes-get-set-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml", "powerpoint-shapes-get-shapes-by-type": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml", "powerpoint-shapes-add-modify-tables": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml", + "powerpoint-shapes-binding-to-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml", "powerpoint-shapes-group-ungroup-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml", "powerpoint-add-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml", "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml", diff --git a/view/powerpoint.json b/view/powerpoint.json index f70fe3e3a..76e7bddc5 100644 --- a/view/powerpoint.json +++ b/view/powerpoint.json @@ -11,6 +11,7 @@ "powerpoint-shapes-get-set-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/get-set-shapes.yaml", "powerpoint-shapes-get-shapes-by-type": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/get-shapes-by-type.yaml", "powerpoint-shapes-add-modify-tables": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/add-modify-tables.yaml", + "powerpoint-shapes-binding-to-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/binding-to-shapes.yaml", "powerpoint-shapes-group-ungroup-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/group-ungroup-shapes.yaml", "powerpoint-add-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/add-slides.yaml", "powerpoint-insert-slides": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/insert-slides.yaml", From 5736240e0464d3a26c3a44ce1be1073c5b431ddf Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Mon, 19 May 2025 13:50:43 -0700 Subject: [PATCH 36/71] [Outlook] (attachments) Update snippet for getAttachmentContentAsync method [Outlook] (attachments) Update snippet for getAttachmentContentAsync method --- .../get-attachment-content.yaml | 18 ++++------ snippet-extractor-output/snippets.yaml | 36 +++++++------------ 2 files changed, 18 insertions(+), 36 deletions(-) diff --git a/samples/outlook/40-attachments/get-attachment-content.yaml b/samples/outlook/40-attachments/get-attachment-content.yaml index 5e62a33dd..beee2236a 100644 --- a/samples/outlook/40-attachments/get-attachment-content.yaml +++ b/samples/outlook/40-attachments/get-attachment-content.yaml @@ -9,15 +9,9 @@ script: document.getElementById("attachment-content-compose").addEventListener("click", getAttachmentContentCompose); document.getElementById("attachment-content-read").addEventListener("click", getAttachmentContentRead); - const item = Office.context.mailbox.item; - function getAttachmentContentCompose() { - // Gets the attachments of the current message or appointment in compose mode. - const options = { asyncContext: { currentItem: item } }; - // The getAttachmentsAsync call can only be used in compose mode. - item.getAttachmentsAsync(options, callback); - - function callback(result) { + // Gets the attachments of the current message or appointment in compose mode. The getAttachmentsAsync call can only be used in compose mode. + Office.context.mailbox.item.getAttachmentsAsync((result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; @@ -30,14 +24,14 @@ script: for (let i = 0; i < result.value.length; i++) { // Log the attachment type and its contents to the console. - result.asyncContext.currentItem.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); + Office.context.mailbox.item.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); } - } + }); } function getAttachmentContentRead() { - // Gets the attachments of the current message or appointment in read mode. - // The item.attachments call can only be used in read mode. + // Gets the attachments of the current message or appointment in read mode. The item.attachments call can only be used in read mode. + const item = Office.context.mailbox.item; const attachments = item.attachments; if (attachments.length <= 0) { console.log("Mail item has no attachments."); diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index d45a6bb43..f2aa9a717 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -8757,16 +8757,9 @@ // Gets the attachments of the current message or appointment in compose - mode. + mode. The getAttachmentsAsync call can only be used in compose mode. - const options = { asyncContext: { currentItem: item } }; - - // The getAttachmentsAsync call can only be used in compose mode. - - item.getAttachmentsAsync(options, callback); - - - function callback(result) { + Office.context.mailbox.item.getAttachmentsAsync((result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; @@ -8779,9 +8772,9 @@ for (let i = 0; i < result.value.length; i++) { // Log the attachment type and its contents to the console. - result.asyncContext.currentItem.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); + Office.context.mailbox.item.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); } - } + }); 'Office.AppointmentCompose#getAttachmentsAsync:member(1)': - >- // Link to full sample: @@ -9812,8 +9805,9 @@ // Gets the attachments of the current message or appointment in read mode. + The item.attachments call can only be used in read mode. - // The item.attachments call can only be used in read mode. + const item = Office.context.mailbox.item; const attachments = item.attachments; @@ -12515,16 +12509,9 @@ // Gets the attachments of the current message or appointment in compose - mode. + mode. The getAttachmentsAsync call can only be used in compose mode. - const options = { asyncContext: { currentItem: item } }; - - // The getAttachmentsAsync call can only be used in compose mode. - - item.getAttachmentsAsync(options, callback); - - - function callback(result) { + Office.context.mailbox.item.getAttachmentsAsync((result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; @@ -12537,9 +12524,9 @@ for (let i = 0; i < result.value.length; i++) { // Log the attachment type and its contents to the console. - result.asyncContext.currentItem.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); + Office.context.mailbox.item.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); } - } + }); 'Office.MessageCompose#getAttachmentsAsync:member(1)': - >- // Link to full sample: @@ -13506,8 +13493,9 @@ // Gets the attachments of the current message or appointment in read mode. + The item.attachments call can only be used in read mode. - // The item.attachments call can only be used in read mode. + const item = Office.context.mailbox.item; const attachments = item.attachments; From df2a6d260b5465eac3ee0ffff62d126bc01b8815 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 21 May 2025 12:06:56 -0700 Subject: [PATCH 37/71] [PowerPoint] (tables) Add missing sync statement (#985) --- samples/powerpoint/shapes/add-modify-tables.yaml | 4 +++- snippet-extractor-output/snippets.yaml | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/samples/powerpoint/shapes/add-modify-tables.yaml b/samples/powerpoint/shapes/add-modify-tables.yaml index e3626ba35..d398f0862 100644 --- a/samples/powerpoint/shapes/add-modify-tables.yaml +++ b/samples/powerpoint/shapes/add-modify-tables.yaml @@ -224,7 +224,7 @@ script: await context.sync(); // Get the Table row and column count. - console.log("Table RowCount:" + table.rowCount + " and columnCount: " + table.columnCount); + console.log("Table RowCount: " + table.rowCount + " and columnCount: " + table.columnCount); } else console.log("Selected shape isn't table."); } else console.log("No shape selected."); }); @@ -248,6 +248,8 @@ script: cell.text = generateRandomString(); } } + + await context.sync(); }); } diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index f2aa9a717..7dc91f8b0 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -15915,7 +15915,7 @@ await context.sync(); // Get the Table row and column count. - console.log("Table RowCount:" + table.rowCount + " and columnCount: " + table.columnCount); + console.log("Table RowCount: " + table.rowCount + " and columnCount: " + table.columnCount); } else console.log("Selected shape isn't table."); } else console.log("No shape selected."); }); @@ -16408,7 +16408,7 @@ await context.sync(); // Get the Table row and column count. - console.log("Table RowCount:" + table.rowCount + " and columnCount: " + table.columnCount); + console.log("Table RowCount: " + table.rowCount + " and columnCount: " + table.columnCount); } else console.log("Selected shape isn't table."); } else console.log("No shape selected."); }); @@ -17283,6 +17283,8 @@ cell.text = generateRandomString(); } } + + await context.sync(); }); 'PowerPoint.Table#getCellOrNullObject:member(1)': - >- @@ -17308,6 +17310,8 @@ cell.text = generateRandomString(); } } + + await context.sync(); }); 'PowerPoint.TableAddOptions:interface': - >- @@ -17536,6 +17540,8 @@ cell.text = generateRandomString(); } } + + await context.sync(); }); 'PowerPoint.TableCell#text:member': - >- @@ -17561,6 +17567,8 @@ cell.text = generateRandomString(); } } + + await context.sync(); }); 'PowerPoint.TableCellBorders:interface': - >- From 63576485654260cd649b138b2bd90067fcb60d0d Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Mon, 23 Jun 2025 18:24:58 -0700 Subject: [PATCH 38/71] [PowerPoint] (tables) Work with text runs (#986) * [PowerPoint] (tables) Work with text runs * Add HTML * Update based on feedback * Updates based on feedback --- .../powerpoint/shapes/add-modify-tables.yaml | 55 +++++- snippet-extractor-metadata/powerpoint.xlsx | Bin 16593 -> 16658 bytes snippet-extractor-output/snippets.yaml | 158 ++++++++++++++---- 3 files changed, 180 insertions(+), 33 deletions(-) diff --git a/samples/powerpoint/shapes/add-modify-tables.yaml b/samples/powerpoint/shapes/add-modify-tables.yaml index d398f0862..c0b652d34 100644 --- a/samples/powerpoint/shapes/add-modify-tables.yaml +++ b/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18,6 +18,7 @@ script: document.getElementById("table-borders").addEventListener("click", () => tryCatch(tableBorders)); document.getElementById("table-indent-margin").addEventListener("click", () => tryCatch(tableIndentMargin)); document.getElementById("table-cell-alignment").addEventListener("click", () => tryCatch(tableCellAlignment)); + document.getElementById("table-text-runs").addEventListener("click", () => tryCatch(tableTextRuns)); document.getElementById("table-from-shape").addEventListener("click", () => tryCatch(getTableFromShape)); document.getElementById("update-table-values").addEventListener("click", () => tryCatch(updateTableValues)); document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); @@ -52,7 +53,7 @@ script: await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying column widths and row heights + // Add a table, specifying column widths and row heights. shapes.addTable(3, 4, { columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] @@ -101,7 +102,7 @@ script: await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -138,7 +139,7 @@ script: await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -201,6 +202,51 @@ script: }); } + async function tableTextRuns() { + // Specifies the text runs of the cells in a table. + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying text runs. + shapes.addTable(3, 4, { + specificCellProperties: [ + [ + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } } + ], + [ + { text: "Bold text", font: { bold: true } }, + { + textRuns: [ + { text: "Text runs with " }, + { text: "Underlined text", font: { underline: PowerPoint.ShapeFontUnderlineStyle.double } }, + { text: " and plain text" } + ] + }, + { text: "Italicized text", font: { italic: true } }, + { text: "Plain text" } + ], + [ + { text: "Bold text", font: { bold: true } }, + { text: "Underlined text", font: { underline: PowerPoint.ShapeFontUnderlineStyle.dotted } }, + { + font: { bold: true }, + textRuns: [ + { text: "Text runs with " }, + { text: "italicized text", font: { italic: true } }, + { text: " and (inherited) bold text" } + ] + }, + { text: "Italicized text", font: { italic: true } } + ] + ] + }); + await context.sync(); + }); + } + async function getTableFromShape() { // Gets the table from a shape. await PowerPoint.run(async (context) => { @@ -336,6 +382,9 @@ template: + diff --git a/snippet-extractor-metadata/powerpoint.xlsx b/snippet-extractor-metadata/powerpoint.xlsx index 98705550277c308d80465a4c5b62cbf37aaa94f4..0c93174817338a9e487c2870a4cf4bce763b78ad 100644 GIT binary patch delta 8707 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
      HuV4U874}FUR;7z?}g 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 WhYwmIAp)$1{+6Iem=O7A{C@z-&muhl diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 7dc91f8b0..92f257ebe 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -14888,7 +14888,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -14917,7 +14917,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -14946,7 +14946,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -14975,7 +14975,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15032,7 +15032,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15073,7 +15073,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15114,7 +15114,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15155,7 +15155,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15196,7 +15196,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15237,7 +15237,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15278,7 +15278,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15319,7 +15319,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -15360,7 +15360,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17342,7 +17342,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying column widths and row heights + // Add a table, specifying column widths and row heights. shapes.addTable(3, 4, { columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] @@ -17400,7 +17400,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying column widths and row heights + // Add a table, specifying column widths and row heights. shapes.addTable(3, 4, { columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] @@ -17418,7 +17418,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17459,7 +17459,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17581,7 +17581,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17610,7 +17610,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17639,7 +17639,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17668,7 +17668,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17697,7 +17697,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17726,7 +17726,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17767,7 +17767,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying border styles + // Add a table, specifying border styles. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17796,7 +17796,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17837,7 +17837,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying font formatting and fill colors + // Add a table, specifying font formatting and fill colors. shapes.addTable(3, 4, { values: [ ["A", "BB", "CCC", "DDDD"], @@ -17918,6 +17918,55 @@ }); await context.sync(); }); +'PowerPoint.TableCellProperties#textRuns:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the text runs of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying text runs. + shapes.addTable(3, 4, { + specificCellProperties: [ + [ + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } } + ], + [ + { text: "Bold text", font: { bold: true } }, + { + textRuns: [ + { text: "Text runs with " }, + { text: "Underlined text", font: { underline: PowerPoint.ShapeFontUnderlineStyle.double } }, + { text: " and plain text" } + ] + }, + { text: "Italicized text", font: { italic: true } }, + { text: "Plain text" } + ], + [ + { text: "Bold text", font: { bold: true } }, + { text: "Underlined text", font: { underline: PowerPoint.ShapeFontUnderlineStyle.dotted } }, + { + font: { bold: true }, + textRuns: [ + { text: "Text runs with " }, + { text: "italicized text", font: { italic: true } }, + { text: " and (inherited) bold text" } + ] + }, + { text: "Italicized text", font: { italic: true } } + ] + ] + }); + await context.sync(); + }); 'PowerPoint.TableCellProperties#verticalAlignment:member': - >- // Link to full sample: @@ -17954,7 +18003,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying column widths and row heights + // Add a table, specifying column widths and row heights. shapes.addTable(3, 4, { columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] @@ -17972,7 +18021,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying column widths and row heights + // Add a table, specifying column widths and row heights. shapes.addTable(3, 4, { columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] @@ -18100,7 +18149,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying column widths and row heights + // Add a table, specifying column widths and row heights. shapes.addTable(3, 4, { columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] @@ -18118,7 +18167,7 @@ await PowerPoint.run(async (context) => { const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; - // Add a table, specifying column widths and row heights + // Add a table, specifying column widths and row heights. shapes.addTable(3, 4, { columns: [{ columnWidth: 100 }, { columnWidth: 200 }, { columnWidth: 100 }, { columnWidth: 200 }], rows: [{ rowHeight: 60 }, { rowHeight: 120 }, { rowHeight: 180 }] @@ -18337,6 +18386,55 @@ textRange.setSelected(); await context.sync(); }); +'PowerPoint.TextRun:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml + + + // Specifies the text runs of the cells in a table. + + await PowerPoint.run(async (context) => { + const shapes = context.presentation.getSelectedSlides().getItemAt(0).shapes; + + // Add a table, specifying text runs. + shapes.addTable(3, 4, { + specificCellProperties: [ + [ + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } }, + { text: "Title text", font: { bold: true } } + ], + [ + { text: "Bold text", font: { bold: true } }, + { + textRuns: [ + { text: "Text runs with " }, + { text: "Underlined text", font: { underline: PowerPoint.ShapeFontUnderlineStyle.double } }, + { text: " and plain text" } + ] + }, + { text: "Italicized text", font: { italic: true } }, + { text: "Plain text" } + ], + [ + { text: "Bold text", font: { bold: true } }, + { text: "Underlined text", font: { underline: PowerPoint.ShapeFontUnderlineStyle.dotted } }, + { + font: { bold: true }, + textRuns: [ + { text: "Text runs with " }, + { text: "italicized text", font: { italic: true } }, + { text: " and (inherited) bold text" } + ] + }, + { text: "Italicized text", font: { italic: true } } + ] + ] + }); + await context.sync(); + }); 'PowerPoint.TextVerticalAlignment:enum': - >- // Link to full sample: From 69d116c5edfb9804b81b781f71e05c7fbb2cb85e Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Tue, 24 Jun 2025 16:34:19 -0700 Subject: [PATCH 39/71] [Excel] (Custom functions) Switch formatted numbers to doubles (#987) * [Excel] (Custom functions) Switch formatted numbers to doubles * Run yarn start * Adjust title to emphasize purpose of sample --- playlists-prod/excel.yaml | 6 +- playlists/excel.yaml | 6 +- .../data-types-custom-functions.yaml | 2 +- .../data-types-formatted-number.yaml | 36 +++--- snippet-extractor-metadata/excel.xlsx | Bin 28959 -> 28994 bytes snippet-extractor-output/snippets.yaml | 114 +++++++++--------- view-prod/excel.json | 2 +- view/excel.json | 2 +- 8 files changed, 84 insertions(+), 84 deletions(-) diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index 3b67eee0d..97ca04c5c 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -305,12 +305,12 @@ group: Custom XML Parts api_set: ExcelApi: '1.5' -- id: excel-data-types-formatted-number +- id: excel-data-types-doubles name: 'Data types: Formatted numbers' fileName: data-types-formatted-number.yaml description: >- - This sample shows how to set and get data types using the formatted number - properties. + This sample shows how to set and get formatted numbers using double data + types. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml group: Data Types diff --git a/playlists/excel.yaml b/playlists/excel.yaml index 2a8b5c90f..3c4620a92 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -305,12 +305,12 @@ group: Custom XML Parts api_set: ExcelApi: '1.5' -- id: excel-data-types-formatted-number +- id: excel-data-types-doubles name: 'Data types: Formatted numbers' fileName: data-types-formatted-number.yaml description: >- - This sample shows how to set and get data types using the formatted number - properties. + This sample shows how to set and get formatted numbers using double data + types. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-formatted-number.yaml group: Data Types diff --git a/samples/excel/16-custom-functions/data-types-custom-functions.yaml b/samples/excel/16-custom-functions/data-types-custom-functions.yaml index a5ebdbab6..8d6745ff6 100644 --- a/samples/excel/16-custom-functions/data-types-custom-functions.yaml +++ b/samples/excel/16-custom-functions/data-types-custom-functions.yaml @@ -66,7 +66,7 @@ script: }, // Add Unit Price as a formatted number. "Unit Price": { - type: "FormattedNumber", + type: "Double", basicValue: product.unitPrice, numberFormat: "$* #,##0.00" }, diff --git a/samples/excel/20-data-types/data-types-formatted-number.yaml b/samples/excel/20-data-types/data-types-formatted-number.yaml index dd362a38a..12770b416 100644 --- a/samples/excel/20-data-types/data-types-formatted-number.yaml +++ b/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -1,19 +1,19 @@ order: 1 -id: excel-data-types-formatted-number +id: excel-data-types-doubles name: 'Data types: Formatted numbers' -description: This sample shows how to set and get data types using the formatted number properties. +description: This sample shows how to set and get formatted numbers using double data types. host: EXCEL api_set: ExcelApi: '1.16' script: content: |- document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); - document.getElementById("set-formatted-number-date").addEventListener("click", () => tryCatch(setFormattedNumberDate)); - document.getElementById("set-formatted-number-currency").addEventListener("click", () => tryCatch(setFormattedNumberCurrency)); - document.getElementById("get-formatted-number").addEventListener("click", () => tryCatch(getFormattedNumber)); + document.getElementById("set-double-as-date").addEventListener("click", () => tryCatch(setDoubleAsDate)); + document.getElementById("set-double-as-currency").addEventListener("click", () => tryCatch(setDoubleAsCurrency)); + document.getElementById("get-double").addEventListener("click", () => tryCatch(getDouble)); - async function setFormattedNumberDate() { - // This function creates a formatted number data type, + async function setDoubleAsDate() { + // This function creates a double data type, // and sets the format of this data type as a date. await Excel.run(async (context) => { // Get the Sample worksheet and a range on that sheet. @@ -24,7 +24,7 @@ script: dateRange.valuesAsJson = [ [ { - type: Excel.CellValueType.formattedNumber, + type: Excel.CellValueType.double, basicValue: 32889.0, numberFormat: "m/d/yyyy" } @@ -34,8 +34,8 @@ script: }); } - async function setFormattedNumberCurrency() { - // This function creates a formatted number data type, + async function setDoubleAsCurrency() { + // This function creates a double data type, // and sets the format of this data type as a currency. await Excel.run(async (context) => { // Get the Sample worksheet and a range on that sheet. @@ -46,7 +46,7 @@ script: currencyRange.valuesAsJson = [ [ { - type: Excel.CellValueType.formattedNumber, + type: Excel.CellValueType.double, basicValue: 12.34, numberFormat: "$* #,##0.00" } @@ -57,7 +57,7 @@ script: }); } - async function getFormattedNumber() { + async function getDouble() { // This function prints information about data types // in cells A1 and A2 to the console. await Excel.run(async (context) => { @@ -79,13 +79,13 @@ script: console.log(" Type: " + dateValues.type); console.log(" Basic value: " + dateValues.basicValue); console.log(" Basic type: " + dateValues.basicType); - console.log(" Number format: " + (dateValues as Excel.FormattedNumberCellValue).numberFormat); + console.log(" Number format: " + (dateValues as Excel.DoubleCellValue).numberFormat); console.log("Currency"); console.log(" Type: " + currencyValues.type); console.log(" Basic value: " + currencyValues.basicValue); console.log(" Basic type: " + currencyValues.basicType); - console.log(" Number format: " + (currencyValues as Excel.FormattedNumberCellValue).numberFormat); + console.log(" Number format: " + (currencyValues as Excel.DoubleCellValue).numberFormat); }); } @@ -111,7 +111,7 @@ script: template: content: |-

      -

      This sample shows how to work with the formatted number data type.

      +

      This sample shows how to work with double data types to create formatted numbers.

      Set up

      @@ -119,13 +119,13 @@ template: Add worksheet

      Try it out

      - - -
      diff --git a/snippet-extractor-metadata/excel.xlsx b/snippet-extractor-metadata/excel.xlsx index 65ff1a38bd7faa8505d474d5a72fba611935f418..31be28054d89ed85cbacbdf06dc15ac7c0d3b533 100644 GIT binary patch delta 14343 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 delta 14305 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 + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml + + + // This function creates a double data type, + + // and sets the format of this data type as a currency. + + await Excel.run(async (context) => { + // Get the Sample worksheet and a range on that sheet. + const sheet = context.workbook.worksheets.getItemOrNullObject("Sample"); + const currencyRange = sheet.getRange("A2"); + + // Write a number formatted as currency to cell A2. + currencyRange.valuesAsJson = [ + [ + { + type: Excel.CellValueType.double, + basicValue: 12.34, + numberFormat: "$* #,##0.00" + } + ] + ]; + + await context.sync(); + }); +'Excel.DoubleCellValue#type:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml + + + // This function creates a double data type, + + // and sets the format of this data type as a date. + + await Excel.run(async (context) => { + // Get the Sample worksheet and a range on that sheet. + const sheet = context.workbook.worksheets.getItemOrNullObject("Sample"); + const dateRange = sheet.getRange("A1"); + + // Write a number formatted as a date to cell A1. + dateRange.valuesAsJson = [ + [ + { + type: Excel.CellValueType.double, + basicValue: 32889.0, + numberFormat: "m/d/yyyy" + } + ] + ]; + await context.sync(); + }); 'Excel.DynamicFilterCriteria:enum': - >- // Link to full sample: @@ -3688,61 +3743,6 @@ }; filterField.applyFilter({ dateFilter: dateFilter }); - await context.sync(); - }); -'Excel.FormattedNumberCellValue#numberFormat:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml - - - // This function creates a formatted number data type, - - // and sets the format of this data type as a currency. - - await Excel.run(async (context) => { - // Get the Sample worksheet and a range on that sheet. - const sheet = context.workbook.worksheets.getItemOrNullObject("Sample"); - const currencyRange = sheet.getRange("A2"); - - // Write a number formatted as currency to cell A2. - currencyRange.valuesAsJson = [ - [ - { - type: Excel.CellValueType.formattedNumber, - basicValue: 12.34, - numberFormat: "$* #,##0.00" - } - ] - ]; - - await context.sync(); - }); -'Excel.FormattedNumberCellValue#type:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml - - - // This function creates a formatted number data type, - - // and sets the format of this data type as a date. - - await Excel.run(async (context) => { - // Get the Sample worksheet and a range on that sheet. - const sheet = context.workbook.worksheets.getItemOrNullObject("Sample"); - const dateRange = sheet.getRange("A1"); - - // Write a number formatted as a date to cell A1. - dateRange.valuesAsJson = [ - [ - { - type: Excel.CellValueType.formattedNumber, - basicValue: 32889.0, - numberFormat: "m/d/yyyy" - } - ] - ]; await context.sync(); }); 'Excel.Functions:class': @@ -5940,7 +5940,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml - // This function creates a formatted number data type, + // This function creates a double data type, // and sets the format of this data type as a date. @@ -5953,7 +5953,7 @@ dateRange.valuesAsJson = [ [ { - type: Excel.CellValueType.formattedNumber, + type: Excel.CellValueType.double, basicValue: 32889.0, numberFormat: "m/d/yyyy" } diff --git a/view-prod/excel.json b/view-prod/excel.json index b267d8b88..004d1fba2 100644 --- a/view-prod/excel.json +++ b/view-prod/excel.json @@ -33,7 +33,7 @@ "excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml", "excel-custom-xml-parts-test-xml-for-unique-namespace": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml", "excel-chart-chart-title-ts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/private-samples/excel/20-chart/chart-title-ts.yaml", - "excel-data-types-formatted-number": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml", + "excel-data-types-doubles": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml", "excel-data-types-web-image": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-web-image.yaml", "excel-data-types-entity-values": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-values.yaml", "excel-data-types-error-values": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-error-values.yaml", diff --git a/view/excel.json b/view/excel.json index c805307dd..7a5a11333 100644 --- a/view/excel.json +++ b/view/excel.json @@ -33,7 +33,7 @@ "excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml", "excel-custom-xml-parts-test-xml-for-unique-namespace": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml", "excel-chart-chart-title-ts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/private-samples/excel/20-chart/chart-title-ts.yaml", - "excel-data-types-formatted-number": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-formatted-number.yaml", + "excel-data-types-doubles": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-formatted-number.yaml", "excel-data-types-web-image": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-web-image.yaml", "excel-data-types-entity-values": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-entity-values.yaml", "excel-data-types-error-values": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-error-values.yaml", From 1e6cac62dd1afb8cb45940001efd3fd88195a4ad Mon Sep 17 00:00:00 2001 From: donlvMSFT <42738188+donlvMSFT@users.noreply.github.com> Date: Thu, 26 Jun 2025 04:37:48 +0800 Subject: [PATCH 40/71] [Excel] (Custom Functions) Sample for using custom enum in custom function (#988) * sample for using custom enum in custom function * resolve comments * resolve comment --- playlists-prod/excel.yaml | 11 +++ playlists/excel.yaml | 11 +++ .../16-custom-functions/custom-enum.yaml | 87 +++++++++++++++++++ view-prod/excel.json | 1 + view/excel.json | 1 + 5 files changed, 111 insertions(+) create mode 100644 samples/excel/16-custom-functions/custom-enum.yaml diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index 97ca04c5c..236c569b4 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -287,6 +287,17 @@ group: Custom Functions api_set: CustomFunctionsRuntime: 1.4 +- id: excel-custom-functions-custom-enum + name: Function with custom enum parameters + fileName: custom-enum.yaml + description: >- + Use custom enum as parameters in a custom function that searches for + flights. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/custom-enum.yaml + group: Custom Functions + api_set: + CustomFunctionsRuntime: '1.5' - id: excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts name: Using custom XML parts fileName: create-set-get-and-delete-custom-xml-parts.yaml diff --git a/playlists/excel.yaml b/playlists/excel.yaml index 3c4620a92..910e9ac77 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -287,6 +287,17 @@ group: Custom Functions api_set: CustomFunctionsRuntime: 1.4 +- id: excel-custom-functions-custom-enum + name: Function with custom enum parameters + fileName: custom-enum.yaml + description: >- + Use custom enum as parameters in a custom function that searches for + flights. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/16-custom-functions/custom-enum.yaml + group: Custom Functions + api_set: + CustomFunctionsRuntime: '1.5' - id: excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts name: Using custom XML parts fileName: create-set-get-and-delete-custom-xml-parts.yaml diff --git a/samples/excel/16-custom-functions/custom-enum.yaml b/samples/excel/16-custom-functions/custom-enum.yaml new file mode 100644 index 000000000..3bff6245f --- /dev/null +++ b/samples/excel/16-custom-functions/custom-enum.yaml @@ -0,0 +1,87 @@ +order: 7 +id: excel-custom-functions-custom-enum +name: Function with custom enum parameters +description: Use custom enum as parameters in a custom function that searches for flights. +host: EXCEL +api_set: + CustomFunctionsRuntime: '1.5' +script: + content: | + /** + * A custom enum representing different airports. + * @customenum {string} + */ + enum Airports { + // Beijing is the capital of China. + Beijing = "PEK", + + // Shanghai is a major financial hub in China. + Shanghai = "PVG", + + // Seattle is known for its tech industry and the Space Needle. + Seattle = "SEA", + + // San Francisco is famous for the Golden Gate Bridge and tech startups. + SanFrancisco = "SFO", + + // Tokyo is the capital of Japan and known for its modern architecture and culture. + Tokyo = "HND" + } + + /** + * A custom enum representing the days of the week. + * @customenum {number} + */ + enum DayOfWeek { + Monday = 1, + Tuesday = 2, + Wednesday = 3, + Thursday = 4, + Friday = 5, + Saturday = 6, + Sunday = 7 + } + + /** + * A function that shows how to use custom enums to get a flight schedule. + * @customfunction + * @param {Airports} departure Where the flight departs. + * @param {Airports} destination Where the flight arrives. + * @param {DayOfWeek[]} day Days of the week when the flight is available. + * @returns The available flight schedule. + */ + function fetchFlightSchedule(departure: Airports, destination: Airports, day: DayOfWeek[]): string[][] { + const flights: string[][] = []; + flights.push(["Flights from " + departure + " to " + destination, "", "", "", ""]); + flights.push(["Day", "Flight Number", "Departure Time", "Arrival Time", "Price"]); + const daysOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; + + day.forEach((d) => { + const dayName = daysOfWeek[d - 1]; + const numberOfFlights = Math.floor(Math.random() * 3) + 1; // 1 to 3 flights + + for (let i = 0; i < numberOfFlights; i++) { + const flightNumber = `AA${Math.floor(Math.random() * 900) + 100}`; + const departureTime = `${Math.floor(Math.random() * 12) + 1}:00 ${Math.random() > 0.5 ? "AM" : "PM"}`; + const arrivalTime = `${Math.floor(Math.random() * 12) + 1}:00 ${Math.random() > 0.5 ? "AM" : "PM"}`; + const price = `$${Math.floor(Math.random() * 500) + 100}`; + + flights.push([dayName, flightNumber, departureTime, arrivalTime, price]); + } + }); + + return flights; + } + language: typescript +libraries: | + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + @types/office-js + + office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + + core-js@2.4.1/client/core.min.js + @types/core-js + + jquery@3.1.1 + @types/jquery@3.3.1 \ No newline at end of file diff --git a/view-prod/excel.json b/view-prod/excel.json index 004d1fba2..cca1f36aa 100644 --- a/view-prod/excel.json +++ b/view-prod/excel.json @@ -30,6 +30,7 @@ "excel-custom-functions-web-call": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/web-call-function.yaml", "excel-custom-functions-errors": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/custom-functions-errors.yaml", "excel-data-types-custom-functions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/data-types-custom-functions.yaml", + "excel-custom-functions-custom-enum": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/custom-enum.yaml", "excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml", "excel-custom-xml-parts-test-xml-for-unique-namespace": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml", "excel-chart-chart-title-ts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/private-samples/excel/20-chart/chart-title-ts.yaml", diff --git a/view/excel.json b/view/excel.json index 7a5a11333..4524a7769 100644 --- a/view/excel.json +++ b/view/excel.json @@ -30,6 +30,7 @@ "excel-custom-functions-web-call": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/16-custom-functions/web-call-function.yaml", "excel-custom-functions-errors": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/16-custom-functions/custom-functions-errors.yaml", "excel-data-types-custom-functions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/16-custom-functions/data-types-custom-functions.yaml", + "excel-custom-functions-custom-enum": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/16-custom-functions/custom-enum.yaml", "excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml", "excel-custom-xml-parts-test-xml-for-unique-namespace": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml", "excel-chart-chart-title-ts": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/private-samples/excel/20-chart/chart-title-ts.yaml", From fde0f6e410191593e060c6ea771ae04d6001cbbd Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Thu, 26 Jun 2025 13:33:43 -0700 Subject: [PATCH 41/71] [Excel] (Custom functions) Tweak sample submitted by PM (#989) --- playlists-prod/excel.yaml | 6 +++--- playlists/excel.yaml | 6 +++--- samples/excel/16-custom-functions/custom-enum.yaml | 9 ++++++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index 236c569b4..3b1b669a1 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -288,16 +288,16 @@ api_set: CustomFunctionsRuntime: 1.4 - id: excel-custom-functions-custom-enum - name: Function with custom enum parameters + name: Function with custom enums fileName: custom-enum.yaml description: >- - Use custom enum as parameters in a custom function that searches for + Use custom enums as parameters in a custom function that searches for flights. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/custom-enum.yaml group: Custom Functions api_set: - CustomFunctionsRuntime: '1.5' + CustomFunctionsRuntime: 1.5 - id: excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts name: Using custom XML parts fileName: create-set-get-and-delete-custom-xml-parts.yaml diff --git a/playlists/excel.yaml b/playlists/excel.yaml index 910e9ac77..c6a91b5fa 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -288,16 +288,16 @@ api_set: CustomFunctionsRuntime: 1.4 - id: excel-custom-functions-custom-enum - name: Function with custom enum parameters + name: Function with custom enums fileName: custom-enum.yaml description: >- - Use custom enum as parameters in a custom function that searches for + Use custom enums as parameters in a custom function that searches for flights. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/16-custom-functions/custom-enum.yaml group: Custom Functions api_set: - CustomFunctionsRuntime: '1.5' + CustomFunctionsRuntime: 1.5 - id: excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts name: Using custom XML parts fileName: create-set-get-and-delete-custom-xml-parts.yaml diff --git a/samples/excel/16-custom-functions/custom-enum.yaml b/samples/excel/16-custom-functions/custom-enum.yaml index 3bff6245f..010b64081 100644 --- a/samples/excel/16-custom-functions/custom-enum.yaml +++ b/samples/excel/16-custom-functions/custom-enum.yaml @@ -1,10 +1,10 @@ order: 7 id: excel-custom-functions-custom-enum -name: Function with custom enum parameters -description: Use custom enum as parameters in a custom function that searches for flights. +name: Function with custom enums +description: Use custom enums as parameters in a custom function that searches for flights. host: EXCEL api_set: - CustomFunctionsRuntime: '1.5' + CustomFunctionsRuntime: 1.5 script: content: | /** @@ -52,7 +52,10 @@ script: */ function fetchFlightSchedule(departure: Airports, destination: Airports, day: DayOfWeek[]): string[][] { const flights: string[][] = []; + + // Use the `Airports` enum for both the `departure` and `destination` parameters. flights.push(["Flights from " + departure + " to " + destination, "", "", "", ""]); + flights.push(["Day", "Flight Number", "Departure Time", "Arrival Time", "Price"]); const daysOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; From f2d08d4ba40b41b182b62de6bfea83fafe625022 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Tue, 8 Jul 2025 11:21:07 -0700 Subject: [PATCH 42/71] [Outlook] (roaming settings) Update sample (#991) * Update roaming settings sample * Apply suggestion from review Co-authored-by: Elizabeth Samuel * Run script --------- Co-authored-by: Elizabeth Samuel --- playlists-prod/outlook.yaml | 2 +- playlists/outlook.yaml | 2 +- .../10-roaming-settings/roaming-settings.yaml | 17 ++++++++++++++--- snippet-extractor-metadata/outlook.xlsx | Bin 24519 -> 24576 bytes snippet-extractor-output/snippets.yaml | 14 ++++++++++++++ 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index 5a6387387..0a11cfd8e 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -1,7 +1,7 @@ - id: outlook-roaming-settings-roaming-settings name: Use add-in settings fileName: roaming-settings.yaml - description: 'Gets, sets, and saves add-in roaming settings' + description: 'Gets, sets, saves, and removes add-in roaming settings.' rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml group: Roaming Settings diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index 264640e55..00c0262b1 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -1,7 +1,7 @@ - id: outlook-roaming-settings-roaming-settings name: Use add-in settings fileName: roaming-settings.yaml - description: 'Gets, sets, and saves add-in roaming settings' + description: 'Gets, sets, saves, and removes add-in roaming settings.' rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/10-roaming-settings/roaming-settings.yaml group: Roaming Settings diff --git a/samples/outlook/10-roaming-settings/roaming-settings.yaml b/samples/outlook/10-roaming-settings/roaming-settings.yaml index 1b15c078c..5834cfab5 100644 --- a/samples/outlook/10-roaming-settings/roaming-settings.yaml +++ b/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -1,6 +1,6 @@ id: outlook-roaming-settings-roaming-settings name: Use add-in settings -description: 'Gets, sets, and saves add-in roaming settings' +description: 'Gets, sets, saves, and removes add-in roaming settings.' host: OUTLOOK api_set: Mailbox: '1.1' @@ -9,6 +9,7 @@ script: document.getElementById("get").addEventListener("click", get); document.getElementById("set").addEventListener("click", set); document.getElementById("save").addEventListener("click", save); + document.getElementById("remove").addEventListener("click", remove); function get() { const settingName = (document.getElementById("settingName") as HTMLInputElement).value; @@ -16,14 +17,14 @@ script: (document.getElementById("settingValue") as HTMLInputElement).value = settingValue; console.log(`The value of setting "${settingName}" is "${settingValue}".`); } - + function set() { const settingName = (document.getElementById("settingName") as HTMLInputElement).value; const settingValue = (document.getElementById("settingValue") as HTMLInputElement).value; Office.context.roamingSettings.set(settingName, settingValue); console.log(`Setting "${settingName}" set to value "${settingValue}".`); } - + function save() { // Save settings in the mailbox to make it available in future sessions. Office.context.roamingSettings.saveAsync(function(result) { @@ -34,6 +35,13 @@ script: } }); } + + function remove() { + // Remove the specified setting from the mailbox. + const settingName = (document.getElementById("settingName") as HTMLInputElement).value; + Office.context.roamingSettings.remove(settingName); + console.log(`The "${settingName}" setting has been removed.`); + } language: typescript template: content: |- @@ -59,6 +67,9 @@ template: +
      language: html style: diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index 82e39008fa08ab7a41be90ee12292607226ba1d8..fad79065637fb701a81f59c9354dfdba8f6ea385 100644 GIT binary patch delta 5657 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�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 YH144R>LWrDRE?TMa1)N0{%7sK05^fASpWb4 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 5f815d65d..fc5410f5a 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -14387,6 +14387,20 @@ settingValue; console.log(`The value of setting "${settingName}" is "${settingValue}".`); +'Office.RoamingSettings#remove:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml + + + // Remove the specified setting from the mailbox. + + const settingName = (document.getElementById("settingName") as + HTMLInputElement).value; + + Office.context.roamingSettings.remove(settingName); + + console.log(`The "${settingName}" setting has been removed.`); 'Office.RoamingSettings#saveAsync:member(1)': - >- // Link to full sample: From 8d006029dfb82800dabe4d47315df72a6e557170 Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Sun, 20 Jul 2025 21:57:33 -0700 Subject: [PATCH 43/71] [Excel] (Chart) Add chart data labels snippet (#990) * [Excel] Add chart, data types, and shape snippets * Active shape: Remove jQuery, adjust HTML * Switch from jQuery to JS, reformat html sections * Match sample to naming conventions of repo, align to style guide, reorder methods to follow logical order * Run yarn start, move other snippets to new branches * Re-run yarn start * [Excel] (Shape) Add get active shape image snippet * Remove unrelated snippet * Incorporate Copilot reviewer feedback * Incorporate Copilot feedback * Re-run yarn start * Apply suggestions from code review Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> * Code review feedback, re-run yarn start --------- Co-authored-by: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> --- .gitignore | 4 +- playlists-prod/excel.yaml | 9 + playlists/excel.yaml | 9 + samples/excel/10-chart/chart-data-labels.yaml | 278 ++++++++++++++++++ snippet-extractor-metadata/excel.xlsx | Bin 28994 -> 29116 bytes snippet-extractor-output/snippets.yaml | 127 ++++++++ view-prod/excel.json | 1 + view/excel.json | 1 + yarn.lock | 222 ++++++++------ 9 files changed, 563 insertions(+), 88 deletions(-) create mode 100644 samples/excel/10-chart/chart-data-labels.yaml diff --git a/.gitignore b/.gitignore index a133b9391..2d2f29ea5 100644 --- a/.gitignore +++ b/.gitignore @@ -64,4 +64,6 @@ npm-debug.log* ~$* # Used to ignore "playlists", but having those checked-in for diffing purposes is very useful, so undoing the ignore: -# playlists/** \ No newline at end of file +# playlists/** + +package-lock.json \ No newline at end of file diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index 3b1b669a1..8b3dc1932 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -168,6 +168,15 @@ group: Chart api_set: ExcelApi: '1.7' +- id: excel-chart-data-labels + name: Data labels + fileName: chart-data-labels.yaml + description: Add and style data labels for your charts. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml + group: Chart + api_set: + ExcelApi: '1.19' - id: excel-comment-basics name: Comment basics fileName: comment-basics.yaml diff --git a/playlists/excel.yaml b/playlists/excel.yaml index c6a91b5fa..3e6e594e8 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -168,6 +168,15 @@ group: Chart api_set: ExcelApi: '1.7' +- id: excel-chart-data-labels + name: Data labels + fileName: chart-data-labels.yaml + description: Add and style data labels for your charts. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-data-labels.yaml + group: Chart + api_set: + ExcelApi: '1.19' - id: excel-comment-basics name: Comment basics fileName: comment-basics.yaml diff --git a/samples/excel/10-chart/chart-data-labels.yaml b/samples/excel/10-chart/chart-data-labels.yaml new file mode 100644 index 000000000..43f109f55 --- /dev/null +++ b/samples/excel/10-chart/chart-data-labels.yaml @@ -0,0 +1,278 @@ +order: 16 +id: excel-chart-data-labels +name: Data labels +description: Add and style data labels for your charts. +host: EXCEL +api_set: + ExcelApi: '1.19' +script: + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-data-labels").addEventListener("click", () => tryCatch(addDataLabels)); + document.getElementById("style-data-label-substrings").addEventListener("click", () => tryCatch(styleDataLabelSubstrings)); + document.getElementById("change-label-to-round-rectangle").addEventListener("click", () => tryCatch(changeLabelShapesToRoundRectangle)); + document.getElementById("change-label-to-assorted").addEventListener("click", () => tryCatch(changeLabelShapesToAssorted)); + + // Define the worksheet name for the sample. + const sheetName = "Sample"; + + async function addDataLabels() { + // This function adds data labels to specific chart points + // and sets their text and position. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + await context.sync(); + + const series = chart.series.getItemAt(0); + series.points.load("dataLabel"); + await context.sync(); + + // Define properties for data label positioning and shape. + const labelProperties = [ + { + top: 70, + geometricShapeType: Excel.GeometricShapeType.rectangle + }, + { + top: 200, + geometricShapeType: Excel.GeometricShapeType.rectangle + } + ]; + + // Add data labels to specific chart points and set their text and properties. + for (let i = 0; i < dataLabelInfo.length; i++) { + const point = series.points.getItemAt(dataLabelInfo[i].index); + point.hasDataLabel = true; + + const dataLabel = point.dataLabel; + dataLabel.text = dataLabelInfo[i].news; + dataLabel.set(labelProperties[i]); + } + await context.sync(); + }); + } + + async function styleDataLabelSubstrings() { + // This function styles substrings within data label text using font formatting. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + await context.sync(); + + const series = chart.series.getItemAt(0); + series.load("points"); + await context.sync(); + + series.points.load("items"); + await context.sync(); + + // Style a substring in the first data label. + let searchString = "sports"; + let dataLabel = series.points.getItemAt(dataLabelInfo[0].index).dataLabel.load("text"); + await context.sync(); + let substringStart = dataLabel.text.indexOf(searchString); + let subLabel = dataLabel.getSubstring(substringStart, searchString.length); + subLabel.font.size = 13; + subLabel.font.bold = true; + + // Style a substring in the second data label. + searchString = "'Titanic'"; + dataLabel = series.points.getItemAt(dataLabelInfo[1].index).dataLabel.load("text"); + await context.sync(); + + substringStart = dataLabel.text.indexOf(searchString); + subLabel = dataLabel.getSubstring(substringStart, searchString.length); + subLabel.font.name = "Calibri"; + subLabel.font.size = 13; + subLabel.font.italic = true; + subLabel.font.color = "blue"; + await context.sync(); + }); + } + + async function changeLabelShapesToRoundRectangle() { + // This function changes the geometric shape of data labels to round rectangles. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + await context.sync(); + + const series = chart.series.getItemAt(0); + series.load("*"); + await context.sync(); + + series.points.load("*"); + await context.sync(); + + // Set both data labels to round rectangle shape. + let dataLabel = series.points.getItemAt(dataLabelInfo[0].index).dataLabel; + dataLabel.geometricShapeType = Excel.GeometricShapeType.roundRectangle; + + dataLabel = series.points.getItemAt(dataLabelInfo[1].index).dataLabel; + dataLabel.geometricShapeType = Excel.GeometricShapeType.roundRectangle; + await context.sync(); + }); + } + + async function changeLabelShapesToAssorted() { + // This function changes data labels to different geometric shapes with custom formatting. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + await context.sync(); + + const series = chart.series.getItemAt(0); + + // Set first data label to snip1Rectangle shape. + let dataLabel = series.points.getItemAt(dataLabelInfo[0].index).dataLabel; + dataLabel.geometricShapeType = Excel.GeometricShapeType.snip1Rectangle; + + // Set second data label to snip2DiagonalRectangle shape with light green fill. + dataLabel = series.points.getItemAt(dataLabelInfo[1].index).dataLabel; + dataLabel.geometricShapeType = Excel.GeometricShapeType.snip2DiagonalRectangle; + dataLabel.format.fill.setSolidColor("90EE90"); + await context.sync(); + }); + } + + /** Create sample data and a line chart for the data labels demo. */ + async function setup() { + await Excel.run(async (context) => { + context.workbook.worksheets.getItemOrNullObject(sheetName).delete(); + const sheet = context.workbook.worksheets.add(sheetName); + + // Add sample data to the worksheet. + const dataRange = sheet.getRange("A1:B32"); + dataRange.values = sampleData; + + sheet.activate(); + await context.sync(); + + // Create a line chart with markers. + const chart = sheet.charts.add(Excel.ChartType.lineMarkers, dataRange); + + // Position and format the chart. + chart.setPosition("D4", "Q25"); + chart.legend.visible = false; + chart.title.text = "Product price"; + chart.title.format.font.size = 20; + chart.axes.valueAxis.minimum = 80; + + await context.sync(); + }); + } + + /** Default helper for invoking an action and handling errors. */ + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + + // Save chart data labels as an object for use throughout the sample. + const dataLabelInfo = [ + { + index: 11, + date: "7/12/2023", + news: "The city holds a sports event." + }, + { + index: 20, + date: "7/21/2023", + news: "The movie 'Titanic' returns to the cinema." + } + ]; + + // Sample data for the chart. + const sampleData = [ + ["Date", "Price"], + ["7/1/2023", 100], + ["7/2/2023", 96.71], + ["7/3/2023", 103.24], + ["7/4/2023", 109.09], + ["7/5/2023", 113.68], + ["7/6/2023", 118.68], + ["7/7/2023", 123.2], + ["7/8/2023", 135.05], + ["7/9/2023", 138.68], + ["7/10/2023", 129.63], + ["7/11/2023", 130.85], + ["7/12/2023", 135.71], + ["7/13/2023", 124.83], + ["7/14/2023", 118.94], + ["7/15/2023", 119.63], + ["7/16/2023", 127.2], + ["7/17/2023", 113.98], + ["7/18/2023", 110.32], + ["7/19/2023", 119.3], + ["7/20/2023", 120.36], + ["7/21/2023", 111.88], + ["7/22/2023", 118.88], + ["7/23/2023", 124.37], + ["7/24/2023", 119.53], + ["7/25/2023", 133.42], + ["7/26/2023", 125.67], + ["7/27/2023", 135.82], + ["7/28/2023", 137.87], + ["7/29/2023", 138.9], + ["7/30/2023", 139.36], + ["7/31/2023", 138.75] + ]; + language: typescript +template: + content: |- +

      +

      This sample shows how to create data labels for charts and adjust the font and appearance of those labels.

      +
      +
      +

      Set up

      + +
      +
      +

      Add data labels to the chart

      + +
      +
      +

      Style data labels

      + +
      +
      + +
      +
      + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/excel.xlsx b/snippet-extractor-metadata/excel.xlsx index 31be28054d89ed85cbacbdf06dc15ac7c0d3b533..0680b101fa125759b7760e893eeb148c321ee041 100644 GIT binary patch delta 18429 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Μ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 + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml + + + // This function styles substrings within data label text using font + formatting. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + await context.sync(); + + const series = chart.series.getItemAt(0); + series.load("points"); + await context.sync(); + + series.points.load("items"); + await context.sync(); + + // Style a substring in the first data label. + let searchString = "sports"; + let dataLabel = series.points.getItemAt(dataLabelInfo[0].index).dataLabel.load("text"); + await context.sync(); + let substringStart = dataLabel.text.indexOf(searchString); + let subLabel = dataLabel.getSubstring(substringStart, searchString.length); + subLabel.font.size = 13; + subLabel.font.bold = true; + + // Style a substring in the second data label. + searchString = "'Titanic'"; + dataLabel = series.points.getItemAt(dataLabelInfo[1].index).dataLabel.load("text"); + await context.sync(); + + substringStart = dataLabel.text.indexOf(searchString); + subLabel = dataLabel.getSubstring(substringStart, searchString.length); + subLabel.font.name = "Calibri"; + subLabel.font.size = 13; + subLabel.font.italic = true; + subLabel.font.color = "blue"; + await context.sync(); + }); 'Excel.ChartDataTable#format:member': - >- // Link to full sample: @@ -1238,6 +1281,90 @@ await context.sync(); }); +'Excel.ChartPoint:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml + + + // This function adds data labels to specific chart points + + // and sets their text and position. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + await context.sync(); + + const series = chart.series.getItemAt(0); + series.points.load("dataLabel"); + await context.sync(); + + // Define properties for data label positioning and shape. + const labelProperties = [ + { + top: 70, + geometricShapeType: Excel.GeometricShapeType.rectangle + }, + { + top: 200, + geometricShapeType: Excel.GeometricShapeType.rectangle + } + ]; + + // Add data labels to specific chart points and set their text and properties. + for (let i = 0; i < dataLabelInfo.length; i++) { + const point = series.points.getItemAt(dataLabelInfo[i].index); + point.hasDataLabel = true; + + const dataLabel = point.dataLabel; + dataLabel.text = dataLabelInfo[i].news; + dataLabel.set(labelProperties[i]); + } + await context.sync(); + }); +'Excel.ChartPointsCollection:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml + + + // This function adds data labels to specific chart points + + // and sets their text and position. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + await context.sync(); + + const series = chart.series.getItemAt(0); + series.points.load("dataLabel"); + await context.sync(); + + // Define properties for data label positioning and shape. + const labelProperties = [ + { + top: 70, + geometricShapeType: Excel.GeometricShapeType.rectangle + }, + { + top: 200, + geometricShapeType: Excel.GeometricShapeType.rectangle + } + ]; + + // Add data labels to specific chart points and set their text and properties. + for (let i = 0; i < dataLabelInfo.length; i++) { + const point = series.points.getItemAt(dataLabelInfo[i].index); + point.hasDataLabel = true; + + const dataLabel = point.dataLabel; + dataLabel.text = dataLabelInfo[i].news; + dataLabel.set(labelProperties[i]); + } + await context.sync(); + }); 'Excel.ChartSeries#delete:member(1)': - >- // Link to full sample: diff --git a/view-prod/excel.json b/view-prod/excel.json index cca1f36aa..0a775b890 100644 --- a/view-prod/excel.json +++ b/view-prod/excel.json @@ -17,6 +17,7 @@ "excel-chart-title-format": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-title-format.yaml", "excel-chart-data-source": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml", "excel-chart-trendlines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-trendlines.yaml", + "excel-chart-data-labels": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml", "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml", "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml", "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml", diff --git a/view/excel.json b/view/excel.json index 4524a7769..156b0e45e 100644 --- a/view/excel.json +++ b/view/excel.json @@ -17,6 +17,7 @@ "excel-chart-title-format": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-title-format.yaml", "excel-chart-data-source": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-data-source.yaml", "excel-chart-trendlines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-trendlines.yaml", + "excel-chart-data-labels": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-data-labels.yaml", "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-basics.yaml", "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-mentions.yaml", "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-replies.yaml", diff --git a/yarn.lock b/yarn.lock index c24d793c0..2f5433b0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -51,12 +51,12 @@ "@types/chalk@0.4.31": version "0.4.31" resolved "https://registry.npmjs.org/@types/chalk/-/chalk-0.4.31.tgz" - integrity sha1-ox10JBprHtu5c8822XooloNKUfk= + integrity sha1-ox10JBprHtu5c8822XooloNKUfk= sha512-nF0fisEPYMIyfrFgabFimsz9Lnuu9MwkNrrlATm2E4E46afKDyeelT+8bXfw1VSc7sLBxMxRgT7PxTC2JcqN4Q== "@types/fs-extra@3.0.1": version "3.0.1" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-3.0.1.tgz" - integrity sha1-eCk6aKrT2GZ1Ho/P1k19ydARdHY= + integrity sha1-eCk6aKrT2GZ1Ho/P1k19ydARdHY= sha512-99ywH5BUw32J7pX3Nqo5xDw7KtvWUogKXLNGAlfSKvMGnCLq6/5Ufk+EuPNEMsKmSYJW1VityGHA9Lo+NEgCKg== dependencies: "@types/node" "*" @@ -83,12 +83,7 @@ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*": - version "16.10.3" - resolved "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz" - integrity sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ== - -"@types/node@^11.10.5": +"@types/node@*", "@types/node@^11.10.5": version "11.15.54" resolved "https://registry.npmjs.org/@types/node/-/node-11.15.54.tgz" integrity sha512-1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g== @@ -109,12 +104,12 @@ ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.1: version "3.2.1" @@ -161,7 +156,7 @@ argparse@^1.0.7: async@^3.2.0: version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== balanced-match@^1.0.0: @@ -182,7 +177,7 @@ big-integer@^1.6.17: binary@~0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz" - integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= + integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== dependencies: buffers "~0.1.1" chainsaw "~0.1.0" @@ -199,7 +194,7 @@ bl@^4.0.3: bluebird@~3.4.1: version "3.4.7" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" - integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= + integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== brace-expansion@^1.1.7: version "1.1.11" @@ -212,7 +207,7 @@ brace-expansion@^1.1.7: buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: version "0.2.13" resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-indexof-polyfill@~1.0.0: version "1.0.2" @@ -230,32 +225,30 @@ buffer@^5.5.0: buffers@~0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" - integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= + integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== chainsaw@~0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz" - integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= + integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== dependencies: traverse ">=0.3.0 <0.4" -chalk@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" -chalk@^2.0.0, chalk@^2.3.0: +chalk@^2.3.0: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -264,24 +257,35 @@ chalk@^2.0.0, chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + charm@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/charm/-/charm-1.0.1.tgz" - integrity sha1-aFZqelU9T+kXlwMN0YUtDdbvqC0= + integrity sha1-aFZqelU9T+kXlwMN0YUtDdbvqC0= sha512-mBB1orFlZvYF8PcQNtO446LbWmgZEIOvq6n0CY68csh9JN0Rk1rrqWPQpfLImQO7EhpibXUVDF2PTTaYIfTeRA== dependencies: inherits "^2.0.1" cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= + integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A== dependencies: restore-cursor "^1.0.1" cli-spinners@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.2.0.tgz" - integrity sha1-hQeHN5E7iA9uyf/ntl6D7Hd2KE8= + integrity sha1-hQeHN5E7iA9uyf/ntl6D7Hd2KE8= sha512-1sdlgy47mFLr4OfiKC/raeqJ4Jt6oZskLs51esqe/rFqcR23DNF++CbsDpv3hsvwGWHA/+lnxf4xdDtZZtkPBA== color-convert@^1.9.0: version "1.9.3" @@ -293,12 +297,12 @@ color-convert@^1.9.0: color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== colors@1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w== commander@^2.12.1: version "2.20.3" @@ -318,7 +322,7 @@ compress-commons@^4.1.0: concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== core-util-is@~1.0.0: version "1.0.3" @@ -354,7 +358,7 @@ diff@^4.0.1: duplexer2@~0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== dependencies: readable-stream "^2.0.2" @@ -365,10 +369,15 @@ end-of-stream@^1.4.1: dependencies: once "^1.4.0" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" @@ -398,7 +407,7 @@ exceljs@^4.3.0: exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= + integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg== exit-on-epipe@~1.0.1: version "1.0.1" @@ -421,7 +430,7 @@ fs-constants@^1.0.0: fs-extra@3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz" - integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= + integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg== dependencies: graceful-fs "^4.1.2" jsonfile "^3.0.0" @@ -430,7 +439,7 @@ fs-extra@3.0.1: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fstream@^1.0.12: version "1.0.12" @@ -467,14 +476,14 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has@^1.0.3: version "1.0.3" @@ -491,17 +500,17 @@ ieee754@^1.1.13: immediate@~3.0.5: version "3.0.6" resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== inflight@^1.0.4: version "1.0.6" resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3, inherits@2: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -521,7 +530,7 @@ is-core-module@^2.2.0: isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== js-tokens@^4.0.0: version "4.0.0" @@ -539,13 +548,13 @@ js-yaml@^3.13.1: jsonfile@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz" - integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= + integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w== optionalDependencies: graceful-fs "^4.1.6" jszip@^3.5.0: version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== dependencies: lie "~3.3.0" @@ -556,7 +565,7 @@ jszip@^3.5.0: lazystream@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= sha512-/330KFbmC/zKdtZoVDRwvkJ8snrJyBPfoZ39zsJl2O24HOE1CTNiEbeZmHXmjBVxTSSv7JlJEXPYhU83DhA2yg== dependencies: readable-stream "^2.0.5" @@ -570,42 +579,42 @@ lie@~3.3.0: listenercount@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz" - integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= + integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== lodash.difference@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" - integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== lodash.groupby@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz" - integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E= + integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E= sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw== lodash.isboolean@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== lodash.isfunction@^3.0.9: version "3.0.9" @@ -615,27 +624,27 @@ lodash.isfunction@^3.0.9: lodash.isnil@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz" - integrity sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw= + integrity sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw= sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng== lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isundefined@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz" - integrity sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g= + integrity sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g= sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA== lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= + integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@^4.17.21: version "4.17.21" @@ -644,17 +653,17 @@ lodash@^4.17.21: minimatch@^3.0.4: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimist@^1.2.5: version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -"mkdirp@>=0.5 0", mkdirp@^0.5.3: +mkdirp@^0.5.3, "mkdirp@>=0.5 0": version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -664,7 +673,7 @@ minimist@^1.2.5: node-status@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/node-status/-/node-status-1.0.0.tgz" - integrity sha1-eQanxHplh9A0lr907GNKuqA/joA= + integrity sha1-eQanxHplh9A0lr907GNKuqA/joA= sha512-vYKQTNACHKZRIV64kLuZ3mO2rrwoHUL7GMgEOmUFm4fSntm+guwAlFAhzlNdcMVtyppyR4MnHhaLqTNTHnFawg== dependencies: charm "1.0.1" cli-cursor "^1.0.2" @@ -679,14 +688,14 @@ normalize-path@^3.0.0: once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= + integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A== pako@~1.0.2: version "1.0.11" @@ -696,7 +705,7 @@ pako@~1.0.2: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-parse@^1.0.6: version "1.0.7" @@ -713,7 +722,33 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.3.6: +readable-stream@^2.0.0: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.0.2: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.0.5: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -735,6 +770,19 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdir-glob@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz" @@ -745,7 +793,7 @@ readdir-glob@^1.0.0: rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" @@ -760,18 +808,11 @@ resolve@^1.1.6, resolve@^1.3.2: restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= + integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw== dependencies: exit-hook "^1.0.0" onetime "^1.0.0" -rimraf@2: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" @@ -779,6 +820,13 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" +rimraf@2: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" @@ -798,13 +846,13 @@ saxes@^5.0.1: semver@^5.3.0: version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== setimmediate@^1.0.5, setimmediate@~1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== shelljs@^0.8.5: version "0.8.5" @@ -818,7 +866,7 @@ shelljs@^0.8.5: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== string_decoder@^1.1.1: version "1.3.0" @@ -837,14 +885,14 @@ string_decoder@~1.1.1: strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^5.3.0: version "5.5.0" @@ -874,7 +922,7 @@ tmp@^0.2.0: "traverse@>=0.3.0 <0.4": version "0.3.9" resolved "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" - integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= + integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== tslib@^1.13.0, tslib@^1.8.1: version "1.14.1" @@ -907,7 +955,7 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -typescript@^3.3.3333: +typescript@^3.3.3333, "typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev", "typescript@>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev": version "3.9.10" resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== @@ -936,7 +984,7 @@ unzipper@^0.10.11: util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^8.3.0: version "8.3.2" @@ -946,7 +994,7 @@ uuid@^8.3.0: wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== xmlchars@^2.2.0: version "2.2.0" From 58684e4787d38c7884ff71d8be18291f344f4401 Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Mon, 21 Jul 2025 09:49:08 -0700 Subject: [PATCH 44/71] [Excel] (Shape) Add get active shape image snippet (#993) * [Excel] (Shape) Add get active shape image snippet * Copilot reviewer feedback * Code review feedback * Update excel.xlsx, run yarn start --- playlists-prod/excel.yaml | 9 + playlists/excel.yaml | 9 + samples/excel/44-shape/shape-get-active.yaml | 175 +++++++++++++++++++ snippet-extractor-metadata/excel.xlsx | Bin 29116 -> 29172 bytes snippet-extractor-output/snippets.yaml | 28 +++ view-prod/excel.json | 1 + view/excel.json | 1 + 7 files changed, 223 insertions(+) create mode 100644 samples/excel/44-shape/shape-get-active.yaml diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index 8b3dc1932..0e7a71c76 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -990,6 +990,15 @@ group: Shape api_set: ExcelApi: '1.9' +- id: excel-shape-get-active + name: Get active shape image + fileName: shape-get-active.yaml + description: Get an image of the active shape in your workbook. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-get-active.yaml + group: Shape + api_set: + ExcelApi: '1.19' - id: excel-table-add-rows-and-columns-to-a-table name: Add rows and columns fileName: add-rows-and-columns-to-a-table.yaml diff --git a/playlists/excel.yaml b/playlists/excel.yaml index 3e6e594e8..78224139a 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -990,6 +990,15 @@ group: Shape api_set: ExcelApi: '1.9' +- id: excel-shape-get-active + name: Get active shape image + fileName: shape-get-active.yaml + description: Get an image of the active shape in your workbook. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-get-active.yaml + group: Shape + api_set: + ExcelApi: '1.19' - id: excel-table-add-rows-and-columns-to-a-table name: Add rows and columns fileName: add-rows-and-columns-to-a-table.yaml diff --git a/samples/excel/44-shape/shape-get-active.yaml b/samples/excel/44-shape/shape-get-active.yaml new file mode 100644 index 000000000..c51fb0d3e --- /dev/null +++ b/samples/excel/44-shape/shape-get-active.yaml @@ -0,0 +1,175 @@ +order: 7 +id: excel-shape-get-active +name: Get active shape image +description: Get an image of the active shape in your workbook. +host: EXCEL +api_set: + ExcelApi: '1.19' +script: + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-shape-over-chart").addEventListener("click", () => tryCatch(addShapeOverChart)); + document.getElementById("group-chart-shapes").addEventListener("click", () => tryCatch(groupChartShapes)); + document.getElementById("get-active-shape").addEventListener("click", () => tryCatch(getActiveShape)); + + const sheetName = "Sample"; + + async function addShapeOverChart() { + // This method adds a shape to use as a chart title. + // It positions the shape over the chart on the worksheet. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + + // Create a rectangle shape for the chart title. + const shape = sheet.shapes.addGeometricShape(Excel.GeometricShapeType.rectangle); + shape.name = "ChartTitle"; + shape.height = 20; + shape.width = 90; + shape.textFrame.textRange.text = "Sales Quantity"; + shape.textFrame.textRange.font.size = 13; + + // Get chart positioning information to place the shape correctly. + const chart = sheet.charts.getItemAt(0); + chart.load("left, top"); + chart.plotArea.load("width"); + await context.sync(); + + // Position the shape above the chart. + shape.left = chart.left + chart.plotArea.width / 2.5; + shape.top = chart.top + 10; + + await context.sync(); + }); + } + + async function groupChartShapes() { + // This method groups the new chart title shape together with the existing chart. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + + // Get the shapes to group. + const titleShape = sheet.shapes.getItem("ChartTitle"); + const chartShape = sheet.shapes.getItem("SalesChart"); + + // Create a group from the two shapes. + const shapeGroup = sheet.shapes.addGroup([titleShape, chartShape]); + shapeGroup.name = "GroupChart"; + + await context.sync(); + }); + } + + async function getActiveShape() { + // This method gets the active shape and displays it as an image in the task pane. + await Excel.run(async (context) => { + // Get the currently active shape, if any. + const activeShape = context.workbook.getActiveShapeOrNullObject(); + + if (activeShape) { + // Convert the active shape to an image. + const shapeImage = activeShape.getAsImage(Excel.PictureFormat.png); + await context.sync(); + + // Display the image in the task pane. + const imageContainer = document.getElementById("image"); + imageContainer.innerHTML = ''; // Clear the container before adding a new image. + const imageElement = document.createElement("img"); + imageElement.src = "data:image/png;base64," + shapeImage.value; + imageContainer.appendChild(imageElement); + } else { + console.log("No active shape"); + } + }); + } + + /** Create sample data and a line chart. */ + async function setup() { + await Excel.run(async (context) => { + context.workbook.worksheets.getItemOrNullObject(sheetName).delete(); + const sheet = context.workbook.worksheets.add(sheetName); + + // Add sample data to the worksheet. + const dataRange = sheet.getRange("A1:C4"); + dataRange.values = sampleData; + + // Create a line chart with markers. + const chart = sheet.charts.add(Excel.ChartType.lineMarkers, dataRange); + chart.name = "SalesChart"; + + sheet.activate(); + await context.sync(); + }); + } + + /** Default helper for invoking an action and handling errors. */ + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + + /** Sample data for the chart. */ + const sampleData = [ + ["Type", "Product A", "Product B"], + ["Q1", 15, 20], + ["Q2", 22, 15], + ["Q3", 33, 47] + ]; + language: typescript +template: + content: |- +
      +

      This sample shows how to add a shape over a chart, group that new shape together with the existing chart, and then return an image of the chart (the active shape) to this task pane.

      +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      +

      Add a shape to the workbook. This button adds a shape that covers the existing chart title with a new shape that contains text.

      + +
      +
      +

      Group the new chart title together with the existing chart.

      + +
      +
      +

      Get the active shape and display it as an image in this task pane. Make sure the chart is selected.

      + +
      +
      +

      Image of the active shape:

      +
      +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/excel.xlsx b/snippet-extractor-metadata/excel.xlsx index 0680b101fa125759b7760e893eeb148c321ee041..e9eadafdcf4b2966270f94f341fb736dde32b4b1 100644 GIT binary patch delta 8953 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 delta 8828 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 T?=B1|1CP2hAPzeH590p->SOZ@ diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index c28a2bbd6..c03992d7d 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -7596,6 +7596,34 @@ console.log("The active cell is " + activeCell.address); }); +'Excel.Workbook#getActiveShapeOrNullObject:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-get-active.yaml + + + // This method gets the active shape and displays it as an image in the task + pane. + + await Excel.run(async (context) => { + // Get the currently active shape, if any. + const activeShape = context.workbook.getActiveShapeOrNullObject(); + + if (activeShape) { + // Convert the active shape to an image. + const shapeImage = activeShape.getAsImage(Excel.PictureFormat.png); + await context.sync(); + + // Display the image in the task pane. + const imageContainer = document.getElementById("image"); + imageContainer.innerHTML = ''; // Clear the container before adding a new image. + const imageElement = document.createElement("img"); + imageElement.src = "data:image/png;base64," + shapeImage.value; + imageContainer.appendChild(imageElement); + } else { + console.log("No active shape"); + } + }); 'Excel.Workbook#getSelectedRanges:member(1)': - >- // Link to full sample: diff --git a/view-prod/excel.json b/view-prod/excel.json index 0a775b890..a1685f5b4 100644 --- a/view-prod/excel.json +++ b/view-prod/excel.json @@ -102,6 +102,7 @@ "excel-shape-move-and-order": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml", "excel-shape-groups": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-groups.yaml", "excel-shape-textboxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-textboxes.yaml", + "excel-shape-get-active": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-get-active.yaml", "excel-table-add-rows-and-columns-to-a-table": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml", "excel-table-convert-range-to-table": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/46-table/convert-range-to-table.yaml", "excel-table-create-table": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/46-table/create-table.yaml", diff --git a/view/excel.json b/view/excel.json index 156b0e45e..6ff03657f 100644 --- a/view/excel.json +++ b/view/excel.json @@ -102,6 +102,7 @@ "excel-shape-move-and-order": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-move-and-order.yaml", "excel-shape-groups": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-groups.yaml", "excel-shape-textboxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-textboxes.yaml", + "excel-shape-get-active": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/44-shape/shape-get-active.yaml", "excel-table-add-rows-and-columns-to-a-table": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml", "excel-table-convert-range-to-table": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/46-table/convert-range-to-table.yaml", "excel-table-create-table": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/46-table/create-table.yaml", From 8e1866566578267160c3c2b6a00d661ddc8fc2f3 Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Mon, 21 Jul 2025 09:50:06 -0700 Subject: [PATCH 45/71] [Excel] (Data types) Add basic types with metadata snippet (#994) * [Excel] (Data types) Add basic types with metadata snippet * Fix a couple bugs * Code review feedback * Run yarn start --- playlists-prod/excel.yaml | 9 + playlists/excel.yaml | 9 + .../20-data-types/data-types-basic-types.yaml | 362 ++++++++++++++++++ view-prod/excel.json | 1 + view/excel.json | 1 + 5 files changed, 382 insertions(+) create mode 100644 samples/excel/20-data-types/data-types-basic-types.yaml diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index 0e7a71c76..dcbbf01ac 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -403,6 +403,15 @@ group: Data Types api_set: ExcelApi: '1.16' +- id: excel-data-types-basic-types + name: Basic types with metadata + fileName: data-types-basic-types.yaml + description: This sample shows how to work with metadata on basic types. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-basic-types.yaml + group: Data Types + api_set: + ExcelApi: '1.19' - id: excel-data-validation name: Data validation fileName: data-validation.yaml diff --git a/playlists/excel.yaml b/playlists/excel.yaml index 78224139a..5892ba9e9 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -403,6 +403,15 @@ group: Data Types api_set: ExcelApi: '1.16' +- id: excel-data-types-basic-types + name: Basic types with metadata + fileName: data-types-basic-types.yaml + description: This sample shows how to work with metadata on basic types. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-basic-types.yaml + group: Data Types + api_set: + ExcelApi: '1.19' - id: excel-data-validation name: Data validation fileName: data-validation.yaml diff --git a/samples/excel/20-data-types/data-types-basic-types.yaml b/samples/excel/20-data-types/data-types-basic-types.yaml new file mode 100644 index 000000000..8c74f2173 --- /dev/null +++ b/samples/excel/20-data-types/data-types-basic-types.yaml @@ -0,0 +1,362 @@ +order: 8 +id: excel-data-types-basic-types +name: Basic types with metadata +description: This sample shows how to work with metadata on basic types. +host: EXCEL +api_set: + ExcelApi: '1.19' +script: + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("set-basic-types-with-metadata").addEventListener("click", () => tryCatch(setBasicTypesWithMetadata)); + document.getElementById("set-referenced-values").addEventListener("click", () => tryCatch(setReferencedValues)); + document.getElementById("set-circular-reference-values").addEventListener("click", () => tryCatch(setCircularReferenceValues)); + document.getElementById("print-to-console").addEventListener("click", () => tryCatch(printToConsole)); + + const sheetName = "Sample"; + + /** Add basic types with metadata to the worksheet. */ + async function setBasicTypesWithMetadata() { + await Excel.run(async (context) => { + // Get the worksheet and target range. + const sheet = context.workbook.worksheets.getItem(sheetName); + const dataRange = sheet.getRange("A1:A4"); + + // Write a variety of basic types with metadata to the range. + dataRange.valuesAsJson = [ + [doubleWithFormatAndMetadata], + [doubleWithMetadata], + [stringWithMetadata], + [booleanWithMetadata] + ]; + + dataRange.format.autofitColumns(); + await context.sync(); + }); + } + + /** Set basic types with metadata that reference other basic types in the worksheet. */ + async function setReferencedValues() { + await Excel.run(async (context) => { + // Get the worksheet and target range. + const sheet = context.workbook.worksheets.getItem(sheetName); + const targetRange = sheet.getRange("A5"); + + // Write a string with metadata that references other values. + targetRange.valuesAsJson = [ + [stringWithReferencedValues] + ]; + targetRange.format.autofitColumns(); + + await context.sync(); + }); + } + + /** Set basic types with metadata that contain circular references. */ + async function setCircularReferenceValues() { + await Excel.run(async (context) => { + // Get the worksheet and target range. + const sheet = context.workbook.worksheets.getItem(sheetName); + const targetRange = sheet.getRange("A6"); + + // Write a string with metadata that contains circular references. + targetRange.valuesAsJson = [ + [stringWithCircularReferences] + ]; + targetRange.format.autofitColumns(); + + await context.sync(); + }); + } + + /** Get and log information about the basic types in the worksheet. */ + async function printToConsole() { + await Excel.run(async (context) => { + // Get the worksheet and target range. + const sheet = context.workbook.worksheets.getItem(sheetName); + const dataRange = sheet.getRange("A1:A6"); + + // Load the data type property of the range. + dataRange.load("valuesAsJson"); + await context.sync(); + + const dataValues = dataRange.valuesAsJson; + + // Print information about the data types to the console. + console.log("Basic types as an array:", dataValues); + }); + } + + /** Set up Sample worksheet. */ + async function setup() { + await Excel.run(async (context) => { + // Create a new worksheet and activate it. + context.workbook.worksheets.getItemOrNullObject(sheetName).delete(); + const sheet = context.workbook.worksheets.add(sheetName); + sheet.activate(); + + await context.sync(); + }); + } + + /** Default helper for invoking an action and handling errors. */ + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + + /** Basic string value with metadata. */ + const basicStringValue: Excel.StringCellValue = { + type: Excel.CellValueType.string, + basicType: Excel.CellValueType.string, + basicValue: "This is a basic string value" + }; + + /** Basic double value with metadata. */ + const basicDoubleValue: Excel.DoubleCellValue = { + type: Excel.CellValueType.double, + basicType: Excel.CellValueType.double, + basicValue: 10 + }; + + /** Basic boolean value with metadata. */ + const basicBooleanValue: Excel.BooleanCellValue = { + type: Excel.CellValueType.boolean, + basicType: Excel.CellValueType.boolean, + basicValue: true + }; + + /** Web image cell value. */ + const imageCellValue: Excel.WebImageCellValue = { + type: "WebImage", + basicType: "Error", + basicValue: "#VALUE!", + address: "https://github.com/OfficeDev/office-js-snippets/blob/main/.github/images/microsoft-logo.png?raw=true", + }; + + /** Basic view layout with icon for card and compact views. */ + const basicViewLayoutWithIcon: Excel.BasicViewLayouts = { + card: { + title: "This is the title", + sections: [ + { + layout: "List", + properties: ["stringProperty", "booleanProperty", "doubleProperty"], + collapsed: false, + collapsible: true + } + ], + subTitle: { + property: "stringProperty" + }, + mainImage: { + property: "imageProperty" + } + }, + compact: { + icon: Excel.EntityCompactLayoutIcons.animalDog + } + }; + + /** Simple view layout without icon. */ + const basicViewLayoutSimple: Excel.BasicViewLayouts = { + card: { + title: "This is the title", + subTitle: { + property: "stringProperty" + } + } + }; + + /** Cell value provider attributes for data source attribution. */ + const cellValueProvider: Excel.CellValueProviderAttributes = { + description: "Microsoft Bing", + logoSourceAddress: "https://github.com/OfficeDev/office-js-snippets/blob/main/.github/images/microsoft-logo.png?raw=true", + logoTargetAddress: "http://microsoft.com/" + }; + + /** Double value with formatting and metadata. */ + const doubleWithFormatAndMetadata: Excel.DoubleCellValue = { + type: Excel.CellValueType.double, + basicType: Excel.CellValueType.double, + basicValue: 300, + numberFormat: "$0.00", + properties: { + stringProperty: basicStringValue, + booleanProperty: basicBooleanValue, + doubleProperty: basicDoubleValue, + imageProperty: imageCellValue + }, + layouts: basicViewLayoutWithIcon, + provider: cellValueProvider + }; + + /** Double value with metadata but no special formatting. */ + const doubleWithMetadata: Excel.DoubleCellValue = { + type: Excel.CellValueType.double, + basicType: Excel.CellValueType.double, + basicValue: 123.45, + properties: { + stringProperty: basicStringValue, + booleanProperty: basicBooleanValue, + doubleProperty: basicDoubleValue, + imageProperty: imageCellValue + }, + layouts: basicViewLayoutSimple, + provider: cellValueProvider + }; + + /** String value with metadata. */ + const stringWithMetadata: Excel.StringCellValue = { + type: Excel.CellValueType.string, + basicType: Excel.CellValueType.string, + basicValue: "String with metadata", + properties: { + stringProperty: basicStringValue, + booleanProperty: basicBooleanValue, + doubleProperty: basicDoubleValue, + imageProperty: imageCellValue + }, + layouts: basicViewLayoutWithIcon, + provider: cellValueProvider + }; + + /** Boolean value with metadata. */ + const booleanWithMetadata: Excel.BooleanCellValue = { + type: Excel.CellValueType.boolean, + basicType: Excel.CellValueType.boolean, + basicValue: true, + properties: { + stringProperty: basicStringValue, + booleanProperty: basicBooleanValue, + doubleProperty: basicDoubleValue, + imageProperty: imageCellValue + }, + layouts: basicViewLayoutSimple, + provider: cellValueProvider + }; + + /** String with metadata that references other values. */ + const stringWithReferencedValues = { + type: Excel.CellValueType.string, + basicType: Excel.CellValueType.string, + basicValue: "String with referenced values", + properties: { + stringProperty: { + type: Excel.CellValueType.reference, + reference: 0 + }, + booleanProperty: { + type: Excel.CellValueType.reference, + reference: 1 + }, + doubleWithFormatProperty: { + type: Excel.CellValueType.reference, + reference: 2 + }, + doubleProperty: { + type: Excel.CellValueType.reference, + reference: 3 + } + }, + referencedValues: [stringWithMetadata, booleanWithMetadata, doubleWithFormatAndMetadata, doubleWithMetadata], + layouts: { + compact: { + icon: Excel.EntityCompactLayoutIcons.apple + } + } + }; + + /** String with metadata that contains circular references. */ + const stringWithCircularReferences = { + type: Excel.CellValueType.string, + basicType: Excel.CellValueType.string, + basicValue: "String with circular references", + properties: { + doubleProperty: { + type: Excel.CellValueType.double, + basicType: Excel.CellValueType.double, + basicValue: 10, + properties: { + stringProperty: basicStringValue, + doubleProperty: basicDoubleValue, + booleanProperty: basicBooleanValue, + rootProperty: { + type: Excel.CellValueType.reference, + reference: 0 + } + }, + referencedValues: [ + { + type: Excel.ReferenceValueType.root + } + ] + } + }, + layouts: { + compact: { + icon: Excel.EntityCompactLayoutIcons.animalTurtle + } + } + }; + language: typescript +template: + content: |- +
      +

      This sample shows how to create basic types with metadata and then work with those basic types.

      +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      +

      Add basic types to the worksheet. Select the icon in each cell to see a data type card with metadata.

      + +
      +
      +

      Add a basic type with referenced values. Open the data type card to see other values in the worksheet that this basic type references—it references cells A1, A2, A3, and A4.

      + +
      +
      +

      Add a basic type with circular references. Open the data type card and select the doubleProperty to see the circular references.

      + +
      +
      +

      Print information about each of your basic types to the console.

      + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/view-prod/excel.json b/view-prod/excel.json index a1685f5b4..ae1ad8407 100644 --- a/view-prod/excel.json +++ b/view-prod/excel.json @@ -42,6 +42,7 @@ "excel-data-types-icons": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-icons.yaml", "excel-data-types-entity-attribution": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-attribution.yaml", "excel-data-types-references": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-references.yaml", + "excel-data-types-basic-types": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-basic-types.yaml", "excel-data-validation": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml", "excel-document-get-file-in-slices-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/get-file-in-slices-async.yaml", "excel-document-properties": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/properties.yaml", diff --git a/view/excel.json b/view/excel.json index 6ff03657f..993906cb7 100644 --- a/view/excel.json +++ b/view/excel.json @@ -42,6 +42,7 @@ "excel-data-types-icons": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-entity-icons.yaml", "excel-data-types-entity-attribution": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-entity-attribution.yaml", "excel-data-types-references": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-references.yaml", + "excel-data-types-basic-types": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/20-data-types/data-types-basic-types.yaml", "excel-data-validation": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/22-data-validation/data-validation.yaml", "excel-document-get-file-in-slices-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/26-document/get-file-in-slices-async.yaml", "excel-document-properties": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/26-document/properties.yaml", From 5e7fc442e3eeca92a3ed4a2a76897644986d5aa1 Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Tue, 12 Aug 2025 16:14:19 -0700 Subject: [PATCH 46/71] [Excel] (Chart) Add leader lines snippet (#992) * [Excel] (Chart) Add leader lines snippet * Fix minor bug * Adjust comments * Run yarn start * Update excel.xlsx and run yarn start * Incorporate copilot feedback * Code review feedback * run yarn start --- playlists-prod/excel.yaml | 9 + playlists/excel.yaml | 9 + .../excel/10-chart/chart-leader-lines.yaml | 185 ++ snippet-extractor-metadata/excel.xlsx | Bin 29172 -> 29305 bytes snippet-extractor-output/snippets.yaml | 2533 +++++++++-------- view-prod/excel.json | 1 + view/excel.json | 1 + 7 files changed, 1558 insertions(+), 1180 deletions(-) create mode 100644 samples/excel/10-chart/chart-leader-lines.yaml diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index dcbbf01ac..a1229c67b 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -177,6 +177,15 @@ group: Chart api_set: ExcelApi: '1.19' +- id: excel-chart-leader-lines + name: Leader lines + fileName: chart-leader-lines.yaml + description: Show and hide leader lines for chart labels. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml + group: Chart + api_set: + ExcelApi: '1.19' - id: excel-comment-basics name: Comment basics fileName: comment-basics.yaml diff --git a/playlists/excel.yaml b/playlists/excel.yaml index 5892ba9e9..7e9d49ed6 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -177,6 +177,15 @@ group: Chart api_set: ExcelApi: '1.19' +- id: excel-chart-leader-lines + name: Leader lines + fileName: chart-leader-lines.yaml + description: Show and hide leader lines for chart labels. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-leader-lines.yaml + group: Chart + api_set: + ExcelApi: '1.19' - id: excel-comment-basics name: Comment basics fileName: comment-basics.yaml diff --git a/samples/excel/10-chart/chart-leader-lines.yaml b/samples/excel/10-chart/chart-leader-lines.yaml new file mode 100644 index 000000000..ad2ac18ea --- /dev/null +++ b/samples/excel/10-chart/chart-leader-lines.yaml @@ -0,0 +1,185 @@ +order: 17 +id: excel-chart-leader-lines +name: Leader lines +description: Show and hide leader lines for chart labels. +host: EXCEL +api_set: + ExcelApi: '1.19' +script: + content: |- + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + document.getElementById("add-data-labels").addEventListener("click", () => tryCatch(addDataLabels)); + document.getElementById("hide-chart-leader-lines").addEventListener("click", () => tryCatch(hideChartLeaderLines)); + document.getElementById("show-chart-leader-lines").addEventListener("click", () => tryCatch(showChartLeaderLines)); + document.getElementById("change-leader-line-format").addEventListener("click", () => tryCatch(changeLeaderLineFormat)); + + const sheetName = "Sample"; + + async function addDataLabels() { + // The following code adds data labels to the chart and positions them to demonstrate leader lines. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + + // Enable data labels for the series. Leader lines are enabled by default. + series.hasDataLabels = true; + series.points.load("items"); + await context.sync(); + + // Load the top position for each data label. + series.points.items.forEach((point) => point.dataLabel.load("top")); + await context.sync(); + + // Move some data labels to create distance from their chart points. + const point1 = series.points.items[1]; + const point2 = series.points.items[2]; + point1.dataLabel.top -= 50; + point2.dataLabel.top += 50; + + // Format the data labels. + series.dataLabels.geometricShapeType = Excel.GeometricShapeType.rectangle; + series.dataLabels.showCategoryName = true; + series.dataLabels.format.border.weight = 1; + + await context.sync(); + }); + } + + async function hideChartLeaderLines() { + // The following code disables leader lines for chart data labels. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + const dataLabels = series.dataLabels; + + // Disable leader lines. + dataLabels.showLeaderLines = false; + + await context.sync(); + }); + } + + async function showChartLeaderLines() { + // The following code enables leader lines for chart data labels. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + const dataLabels = series.dataLabels; + + // Enable leader lines. + dataLabels.showLeaderLines = true; + + await context.sync(); + }); + } + + async function changeLeaderLineFormat() { + // The following code changes the format of leader lines. It adjusts color, weight, and line style. + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + const dataLabels = series.dataLabels; + const lineFormat = dataLabels.leaderLines.format; + + // Set leader line formatting properties. + lineFormat.line.color = "blue"; + lineFormat.line.weight = 2; + lineFormat.line.lineStyle = Excel.ChartLineStyle.dot; + + await context.sync(); + }); + } + + /** Create sample data and a line chart for the leader lines demo. */ + async function setup() { + await Excel.run(async (context) => { + context.workbook.worksheets.getItemOrNullObject(sheetName).delete(); + const sheet = context.workbook.worksheets.add(sheetName); + + // Add sample data to the worksheet. + const dataRange = sheet.getRange("A1:C4"); + dataRange.values = sampleData; + + // Create a line chart. + const chart = sheet.charts.add(Excel.ChartType.line, dataRange); + chart.title.text = "Sales Quantity"; + + sheet.activate(); + await context.sync(); + }); + } + + /** Default helper for invoking an action and handling errors. */ + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + + /** Sample data for the chart. */ + const sampleData = [ + ["Type", "Product A", "Product B"], + ["Q1", 15, 20], + ["Q2", 22, 15], + ["Q3", 33, 47] + ]; + language: typescript +template: + content: |- +
      +

      This sample shows how to add leader lines for data labels on your charts.

      +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      + +
      +
      + +
      +
      + +
      +
      + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/excel.xlsx b/snippet-extractor-metadata/excel.xlsx index e9eadafdcf4b2966270f94f341fb736dde32b4b1..ab89b7460a3921f4fdf8d7f326b0467ec25cc7ac 100644 GIT binary patch delta 19502 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 M4S_MlA^$1)8~6pPhX4Qo delta 19384 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index c03992d7d..d7d069fb7 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -16,15 +16,6 @@ await context.sync(); }); } -'Excel.Application#calculate:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/90-scenarios/performance-optimization.yaml - - - await Excel.run(async (context) => { - context.application.calculate(Excel.CalculationType.full); - }); 'Excel.Application#decimalSeparator:member': - >- // Link to full sample: @@ -54,6 +45,15 @@ await context.sync(); }); +'Excel.Application#calculate:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/90-scenarios/performance-optimization.yaml + + + await Excel.run(async (context) => { + context.application.calculate(Excel.CalculationType.full); + }); 'Excel.Application#suspendScreenUpdatingUntilNextSync:member(1)': - >- // Link to full sample: @@ -1258,6 +1258,52 @@ await context.sync(); }); +'Excel.ChartLeaderLines:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml + + + // The following code changes the format of leader lines. It adjusts color, + weight, and line style. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + const dataLabels = series.dataLabels; + const lineFormat = dataLabels.leaderLines.format; + + // Set leader line formatting properties. + lineFormat.line.color = "blue"; + lineFormat.line.weight = 2; + lineFormat.line.lineStyle = Excel.ChartLineStyle.dot; + + await context.sync(); + }); +'Excel.ChartLeaderLinesFormat:class': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml + + + // The following code changes the format of leader lines. It adjusts color, + weight, and line style. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + const dataLabels = series.dataLabels; + const lineFormat = dataLabels.leaderLines.format; + + // Set leader line formatting properties. + lineFormat.line.color = "blue"; + lineFormat.line.weight = 2; + lineFormat.line.lineStyle = Excel.ChartLineStyle.dot; + + await context.sync(); + }); 'Excel.ChartLegendFormat#font:member': - >- // Link to full sample: @@ -1365,23 +1411,78 @@ } await context.sync(); }); -'Excel.ChartSeries#delete:member(1)': +'Excel.ChartSeries#getDimensionValues:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-bubble-chart.yaml await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getItem("Sample"); - const seriesCollection = sheet.charts.getItemAt(0).series; - seriesCollection.load("count"); + + // The sample chart is of type `Excel.ChartType.bubble`. + const bubbleChart = sheet.charts.getItem("Product Chart"); + + // Get the first series in the chart. + const firstSeries = bubbleChart.series.getItemAt(0); + + // Get the values for the dimensions we're interested in. + const bubbleSize = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.bubbleSizes); + const xValues = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.xvalues); + const yValues = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.yvalues); + const category = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.categories); + await context.sync(); - if (seriesCollection.count > 0) { - const series = seriesCollection.getItemAt(0); + // Log the information. + console.log(`Series ${category.value} - X:${xValues.value},Y:${yValues.value},Bubble:${bubbleSize.value}`); + }); +'Excel.ChartSeries#setBubbleSizes:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-bubble-chart.yaml - // Delete the first series. - series.delete(); + + await Excel.run(async (context) => { + /* + The table is expected to look like this: + Product, Inventory, Price, Current Market Share + Calamansi, 2000, $2.45, 10% + ... + + We want each bubble to represent a single row. + */ + + // Get the worksheet and table data. + const sheet = context.workbook.worksheets.getItem("Sample"); + const table = sheet.tables.getItem("Sales"); + const dataRange = table.getDataBodyRange(); + + // Get the table data without the row names. + const valueRange = dataRange.getOffsetRange(0, 1).getResizedRange(0, -1); + + // Create the chart. + const bubbleChart = sheet.charts.add(Excel.ChartType.bubble, valueRange); + bubbleChart.name = "Product Chart"; + + // Remove the default series, since we want a unique series for each row. + bubbleChart.series.getItemAt(0).delete(); + + // Load the data necessary to make a chart series. + dataRange.load(["rowCount", "values"]); + await context.sync(); + + // For each row, create a chart series (a bubble). + for (let i = 0; i < dataRange.rowCount; i++) { + const newSeries = bubbleChart.series.add(dataRange.values[i][0], i); + newSeries.setXAxisValues(dataRange.getCell(i, 1)); + newSeries.setValues(dataRange.getCell(i, 2)); + newSeries.setBubbleSizes(dataRange.getCell(i, 3)); + + // Show the product name and market share percentage. + newSeries.dataLabels.showSeriesName = true; + newSeries.dataLabels.showBubbleSize = true; + newSeries.dataLabels.showValue = false; } await context.sync(); @@ -1440,31 +1541,173 @@ console.log(series.name + " data source string: " + dataSourceString.value); console.log(series.name + " data source type: " + dataSourceType.value); }); -'Excel.ChartSeries#getDimensionValues:member(1)': +'Excel.ChartSeries:class': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-bubble-chart.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml + + // The following code adds data labels to the chart and positions them to + demonstrate leader lines. await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + + // Enable data labels for the series. Leader lines are enabled by default. + series.hasDataLabels = true; + series.points.load("items"); + await context.sync(); + + // Load the top position for each data label. + series.points.items.forEach((point) => point.dataLabel.load("top")); + await context.sync(); - // The sample chart is of type `Excel.ChartType.bubble`. - const bubbleChart = sheet.charts.getItem("Product Chart"); + // Move some data labels to create distance from their chart points. + const point1 = series.points.items[1]; + const point2 = series.points.items[2]; + point1.dataLabel.top -= 50; + point2.dataLabel.top += 50; + + // Format the data labels. + series.dataLabels.geometricShapeType = Excel.GeometricShapeType.rectangle; + series.dataLabels.showCategoryName = true; + series.dataLabels.format.border.weight = 1; + + await context.sync(); + }); +'Excel.ChartSeries#hasDataLabels:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml - // Get the first series in the chart. - const firstSeries = bubbleChart.series.getItemAt(0); - // Get the values for the dimensions we're interested in. - const bubbleSize = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.bubbleSizes); - const xValues = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.xvalues); - const yValues = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.yvalues); - const category = firstSeries.getDimensionValues(Excel.ChartSeriesDimension.categories); + // The following code adds data labels to the chart and positions them to + demonstrate leader lines. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + + // Enable data labels for the series. Leader lines are enabled by default. + series.hasDataLabels = true; + series.points.load("items"); + await context.sync(); + + // Load the top position for each data label. + series.points.items.forEach((point) => point.dataLabel.load("top")); + await context.sync(); + // Move some data labels to create distance from their chart points. + const point1 = series.points.items[1]; + const point2 = series.points.items[2]; + point1.dataLabel.top -= 50; + point2.dataLabel.top += 50; + + // Format the data labels. + series.dataLabels.geometricShapeType = Excel.GeometricShapeType.rectangle; + series.dataLabels.showCategoryName = true; + series.dataLabels.format.border.weight = 1; + await context.sync(); + }); +'Excel.ChartSeries#points:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml - // Log the information. - console.log(`Series ${category.value} - X:${xValues.value},Y:${yValues.value},Bubble:${bubbleSize.value}`); + + // The following code adds data labels to the chart and positions them to + demonstrate leader lines. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + + // Enable data labels for the series. Leader lines are enabled by default. + series.hasDataLabels = true; + series.points.load("items"); + await context.sync(); + + // Load the top position for each data label. + series.points.items.forEach((point) => point.dataLabel.load("top")); + await context.sync(); + + // Move some data labels to create distance from their chart points. + const point1 = series.points.items[1]; + const point2 = series.points.items[2]; + point1.dataLabel.top -= 50; + point2.dataLabel.top += 50; + + // Format the data labels. + series.dataLabels.geometricShapeType = Excel.GeometricShapeType.rectangle; + series.dataLabels.showCategoryName = true; + series.dataLabels.format.border.weight = 1; + + await context.sync(); + }); +'Excel.ChartSeries#showLeaderLines:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml + + + // The following code disables leader lines for chart data labels. + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem(sheetName); + const chart = sheet.charts.getItemAt(0); + const series = chart.series.getItemAt(0); + const dataLabels = series.dataLabels; + + // Disable leader lines. + dataLabels.showLeaderLines = false; + + await context.sync(); + }); +'Excel.ChartSeries#delete:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + const seriesCollection = sheet.charts.getItemAt(0).series; + seriesCollection.load("count"); + await context.sync(); + + if (seriesCollection.count > 0) { + const series = seriesCollection.getItemAt(0); + + // Delete the first series. + series.delete(); + } + + await context.sync(); + }); +'Excel.ChartSeries#setValues:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + + let seriesCollection = sheet.charts.getItemAt(0); + let rangeSelection = sheet.getRange("C2:C7"); + let xRangeSelection = sheet.getRange("A1:A7"); + + // Add a series. + let newSeries = seriesCollection.series.add("Qtr2"); + newSeries.setValues(rangeSelection); + newSeries.setXAxisValues(xRangeSelection); + + await context.sync(); }); 'Excel.ChartSeries#markerBackgroundColor:member': - >- @@ -1598,90 +1841,20 @@ await context.sync(); }); -'Excel.ChartSeries#setBubbleSizes:member(1)': +'Excel.ChartSeriesBy:enum': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-bubble-chart.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml await Excel.run(async (context) => { - /* - The table is expected to look like this: - Product, Inventory, Price, Current Market Share - Calamansi, 2000, $2.45, 10% - ... - - We want each bubble to represent a single row. - */ - - // Get the worksheet and table data. - const sheet = context.workbook.worksheets.getItem("Sample"); - const table = sheet.tables.getItem("Sales"); - const dataRange = table.getDataBodyRange(); - - // Get the table data without the row names. - const valueRange = dataRange.getOffsetRange(0, 1).getResizedRange(0, -1); - - // Create the chart. - const bubbleChart = sheet.charts.add(Excel.ChartType.bubble, valueRange); - bubbleChart.name = "Product Chart"; - - // Remove the default series, since we want a unique series for each row. - bubbleChart.series.getItemAt(0).delete(); - - // Load the data necessary to make a chart series. - dataRange.load(["rowCount", "values"]); - await context.sync(); - - // For each row, create a chart series (a bubble). - for (let i = 0; i < dataRange.rowCount; i++) { - const newSeries = bubbleChart.series.add(dataRange.values[i][0], i); - newSeries.setXAxisValues(dataRange.getCell(i, 1)); - newSeries.setValues(dataRange.getCell(i, 2)); - newSeries.setBubbleSizes(dataRange.getCell(i, 3)); - - // Show the product name and market share percentage. - newSeries.dataLabels.showSeriesName = true; - newSeries.dataLabels.showBubbleSize = true; - newSeries.dataLabels.showValue = false; - } - - await context.sync(); - }); -'Excel.ChartSeries#setValues:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - - let seriesCollection = sheet.charts.getItemAt(0); - let rangeSelection = sheet.getRange("C2:C7"); - let xRangeSelection = sheet.getRange("A1:A7"); - - // Add a series. - let newSeries = seriesCollection.series.add("Qtr2"); - newSeries.setValues(rangeSelection); - newSeries.setXAxisValues(xRangeSelection); - - await context.sync(); - }); -'Excel.ChartSeriesBy:enum': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml - - - await Excel.run(async (context) => { - // Create a new worksheet called "Sample" and activate it. - context.workbook.worksheets.getItemOrNullObject("Sample").delete(); - const sheet = context.workbook.worksheets.add("Sample"); - - // Create an a table named SalesTable on the Sample worksheet. - let expensesTable = sheet.tables.add("A1:E1", true); - expensesTable.name = "SalesTable"; + // Create a new worksheet called "Sample" and activate it. + context.workbook.worksheets.getItemOrNullObject("Sample").delete(); + const sheet = context.workbook.worksheets.add("Sample"); + + // Create an a table named SalesTable on the Sample worksheet. + let expensesTable = sheet.tables.add("A1:E1", true); + expensesTable.name = "SalesTable"; expensesTable.getHeaderRowRange().values = [["Product", "Qtr1", "Qtr2", "Qtr3", "Qtr4"]]; expensesTable.rows.add(null, [ @@ -3103,39 +3276,6 @@ const settings = context.workbook.settings; settings.add("ContosoReviewXmlPartId", customXmlPart.id); - await context.sync(); - }); -'Excel.CustomXmlPartCollection#getByNamespace:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml - - - await Excel.run(async (context) => { - document.getElementById("display-xml").textContent = ""; - const contosoNamespace = "http://schemas.contoso.com/review/1.0"; - const customXmlParts = context.workbook.customXmlParts; - const filteredXmlParts = customXmlParts.getByNamespace(contosoNamespace); - const numberOfPartsInNamespace = filteredXmlParts.getCount(); - - await context.sync(); - - if (numberOfPartsInNamespace.value == 1) { - const onlyXmlPartInNamespace = filteredXmlParts.getOnlyItem(); - const xmlBlob = onlyXmlPartInNamespace.getXml(); - - await context.sync(); - - // Make it a bit more readable. - const readableXml = xmlBlob.value.replace(/>\n<"); - - document.getElementById("display-xml").textContent = `The only XML part in the namespace ${contosoNamespace} is: - ${readableXml}`; - - } else { - console.log(`There are ${numberOfPartsInNamespace.value} XML parts with namespace ${contosoNamespace}. There should be exactly 1.`); - } - await context.sync(); }); 'Excel.CustomXmlPartCollection#getItem:member(1)': @@ -3163,7 +3303,7 @@ await context.sync(); } }); -'Excel.CustomXmlPartScopedCollection#getCount:member(1)': +'Excel.CustomXmlPartCollection#getByNamespace:member(1)': - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -3229,7 +3369,7 @@ await context.sync(); } }); -'Excel.CustomXmlPartScopedCollection#getOnlyItem:member(1)': +'Excel.CustomXmlPartScopedCollection#getCount:member(1)': - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -3262,34 +3402,52 @@ await context.sync(); }); -'Excel.DataBarConditionalFormat#barDirection:member': +'Excel.CustomXmlPartScopedCollection#getOnlyItem:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - const range = sheet.getRange("B8:E13"); - const conditionalFormat = range.conditionalFormats - .add(Excel.ConditionalFormatType.dataBar); - conditionalFormat.dataBar.barDirection = Excel.ConditionalDataBarDirection.leftToRight; + document.getElementById("display-xml").textContent = ""; + const contosoNamespace = "http://schemas.contoso.com/review/1.0"; + const customXmlParts = context.workbook.customXmlParts; + const filteredXmlParts = customXmlParts.getByNamespace(contosoNamespace); + const numberOfPartsInNamespace = filteredXmlParts.getCount(); + + await context.sync(); + + if (numberOfPartsInNamespace.value == 1) { + const onlyXmlPartInNamespace = filteredXmlParts.getOnlyItem(); + const xmlBlob = onlyXmlPartInNamespace.getXml(); + + await context.sync(); + + // Make it a bit more readable. + const readableXml = xmlBlob.value.replace(/>\n<"); + + document.getElementById("display-xml").textContent = `The only XML part in the namespace ${contosoNamespace} is: + ${readableXml}`; + + } else { + console.log(`There are ${numberOfPartsInNamespace.value} XML parts with namespace ${contosoNamespace}. There should be exactly 1.`); + } await context.sync(); }); -'Excel.DataPivotHierarchy#name:member': +'Excel.DataBarConditionalFormat#barDirection:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml await Excel.run(async (context) => { - const dataHierarchies = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales").dataHierarchies - dataHierarchies.load("no-properties-needed"); - await context.sync(); + const sheet = context.workbook.worksheets.getItem("Sample"); + const range = sheet.getRange("B8:E13"); + const conditionalFormat = range.conditionalFormats + .add(Excel.ConditionalFormatType.dataBar); + conditionalFormat.dataBar.barDirection = Excel.ConditionalDataBarDirection.leftToRight; - dataHierarchies.items[0].name = "Farm Sales"; - dataHierarchies.items[1].name = "Wholesale"; await context.sync(); }); 'Excel.DataPivotHierarchy#showAs:member': @@ -3319,6 +3477,21 @@ wholesaleDataHierarchy.showAs = wholesaleShowAs; await context.sync(); }); +'Excel.DataPivotHierarchy#name:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml + + + await Excel.run(async (context) => { + const dataHierarchies = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales").dataHierarchies + dataHierarchies.load("no-properties-needed"); + await context.sync(); + + dataHierarchies.items[0].name = "Farm Sales"; + dataHierarchies.items[1].name = "Wholesale"; + await context.sync(); + }); 'Excel.DataValidation#errorAlert:member': - >- // Link to full sample: @@ -4819,6 +4992,28 @@ await context.sync(); }); +'Excel.PivotLayout#getDataBodyRange:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml + + + await Excel.run(async (context) => { + const pivotTable = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales"); + + // The layout controls the ranges used by the PivotTable. + const range = pivotTable.layout.getDataBodyRange(); + + // Get all the data hierarchy totals. + const grandTotalRange = range.getLastRow(); + grandTotalRange.load("address"); + await context.sync(); + + // Use the wholesale and farm sale totals to make a final sum. + const masterTotalRange = context.workbook.worksheets.getActiveWorksheet().getRange("B27:C27"); + masterTotalRange.formulas = [["All Crates", "=SUM(" + grandTotalRange.address + ")"]]; + await context.sync(); + }); 'Excel.PivotLayout#altTextDescription:member': - >- // Link to full sample: @@ -4889,28 +5084,6 @@ pivotLayout.fillEmptyCells = fillToSet; await context.sync(); }); -'Excel.PivotLayout#getDataBodyRange:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml - - - await Excel.run(async (context) => { - const pivotTable = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales"); - - // The layout controls the ranges used by the PivotTable. - const range = pivotTable.layout.getDataBodyRange(); - - // Get all the data hierarchy totals. - const grandTotalRange = range.getLastRow(); - grandTotalRange.load("address"); - await context.sync(); - - // Use the wholesale and farm sale totals to make a final sum. - const masterTotalRange = context.workbook.worksheets.getActiveWorksheet().getRange("B27:C27"); - masterTotalRange.formulas = [["All Crates", "=SUM(" + grandTotalRange.address + ")"]]; - await context.sync(); - }); 'Excel.PivotLayout#layoutType:member': - >- // Link to full sample: @@ -5084,27 +5257,28 @@ await context.sync(); }); -'Excel.PivotTable#filterHierarchies:member': +'Excel.PivotTable#layout:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml - async function filter(functionType: Excel.AggregationFunction) { - await Excel.run(async (context) => { - const pivotTable = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales"); - const filters = pivotTable.filterHierarchies; - const filter = filters.getItemOrNullObject("Classification"); - filter.load(); - await context.sync(); + await Excel.run(async (context) => { + const pivotTable = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales"); + pivotTable.layout.load("layoutType"); + await context.sync(); - // Add the Classification hierarchy to the filter, if it's not already there. - if (filter.isNullObject) { - filters.add(pivotTable.hierarchies.getItem("Classification")); - await context.sync(); - } - }); - } + // Cycle between the three layout types. + if (pivotTable.layout.layoutType === "Compact") { + pivotTable.layout.layoutType = "Outline"; + } else if (pivotTable.layout.layoutType === "Outline") { + pivotTable.layout.layoutType = "Tabular"; + } else { + pivotTable.layout.layoutType = "Compact"; + } + await context.sync(); + console.log("Pivot layout is now " + pivotTable.layout.layoutType); + }); 'Excel.PivotTable#getDataSourceString:member(1)': - >- // Link to full sample: @@ -5147,28 +5321,27 @@ console.log("Data source: " + pivotTableDataSourceString.value); console.log("Source type: " + pivotTableDataSourceType.value); }); -'Excel.PivotTable#layout:member': +'Excel.PivotTable#filterHierarchies:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml - await Excel.run(async (context) => { - const pivotTable = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales"); - pivotTable.layout.load("layoutType"); - await context.sync(); + async function filter(functionType: Excel.AggregationFunction) { + await Excel.run(async (context) => { + const pivotTable = context.workbook.worksheets.getActiveWorksheet().pivotTables.getItem("Farm Sales"); + const filters = pivotTable.filterHierarchies; + const filter = filters.getItemOrNullObject("Classification"); + filter.load(); + await context.sync(); - // Cycle between the three layout types. - if (pivotTable.layout.layoutType === "Compact") { - pivotTable.layout.layoutType = "Outline"; - } else if (pivotTable.layout.layoutType === "Outline") { - pivotTable.layout.layoutType = "Tabular"; - } else { - pivotTable.layout.layoutType = "Compact"; - } - await context.sync(); - console.log("Pivot layout is now " + pivotTable.layout.layoutType); - }); + // Add the Classification hierarchy to the filter, if it's not already there. + if (filter.isNullObject) { + filters.add(pivotTable.hierarchies.getItem("Classification")); + await context.sync(); + } + }); + } 'Excel.PivotTable#refresh:member(1)': - >- // Link to full sample: @@ -5228,21 +5401,6 @@ await context.sync(); }); -'Excel.Range#autoFill:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-auto-fill.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); - const sumCell = sheet.getRange("P4"); - - // Copy everything. The formulas will be contextually updated based on their new locations. - sumCell.autoFill("P4:P7", Excel.AutoFillType.fillCopy); - sumCell.format.autofitColumns(); - await context.sync(); - }); 'Excel.Range#clearOrResetContents:member(1)': - >- // Link to full sample: @@ -5261,22 +5419,6 @@ range.clearOrResetContents(); await context.sync(); }); -'Excel.Range#copyFrom:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-copyfrom.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - // Place a label in front of the copied data. - sheet.getRange("F2").values = [["Copied Formula"]]; - - // Copy a range preserving the formulas. - // Note: non-formula values are copied over as is. - sheet.getRange("G2").copyFrom("A1:E1", Excel.RangeCopyType.formulas); - await context.sync(); - }); 'Excel.Range#control:member': - >- // Link to full sample: @@ -5297,113 +5439,46 @@ }; await context.sync(); }); -'Excel.Range#find:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-find.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - const table = sheet.tables.getItem("ExpensesTable"); - const searchRange = table.getRange(); - - // NOTE: If no match is found, an ItemNotFound error - // is thrown when Range.find is evaluated. - const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; - const foundRange = searchRange.find(searchText, { - completeMatch: isCompleteMatchToggle, - matchCase: isMatchCaseToggle, - searchDirection: searchDirectionToggle - }); - - foundRange.load("address"); - await context.sync(); - - - console.log(foundRange.address); - }); -'Excel.Range#findOrNullObject:member(1)': +'Excel.Range#values:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-find.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - const table = sheet.tables.getItem("ExpensesTable"); - const searchRange = table.getRange(); - const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; - const foundRange = searchRange.findOrNullObject(searchText, { - completeMatch: isCompleteMatchToggle, - matchCase: isMatchCaseToggle, - searchDirection: searchDirectionToggle - }); - - foundRange.load("address"); - await context.sync(); + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml - if (foundRange.isNullObject) { - console.log("Text not found"); - } else { - console.log(foundRange.address); - } - }); -'Excel.Range#getCellProperties:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml + // Change the value of the checkbox in B3. await Excel.run(async (context) => { - const cell = context.workbook.getActiveCell(); - - // Define the cell properties to get by setting the matching LoadOptions to true. - const propertiesToGet = cell.getCellProperties({ - address: true, - format: { - fill: { - color: true - }, - font: { - color: true - } - }, - style: true - }); + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const range = sheet.getRange("B3"); - // Sync to get the data from the workbook. - await context.sync(); - const cellProperties = propertiesToGet.value[0][0]; - console.log( - `Address: ${cellProperties.address}\nStyle: ${cellProperties.style}\nFill Color: ${cellProperties.format.fill.color}\nFont Color: ${cellProperties.format.font.color}`); + range.values = [["TRUE"]]; + await context.sync(); }); -'Excel.Range#getDependents:member(1)': +'Excel.Range#valuesAsJson:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-dependents.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml - // This function highlights all the dependent cells of the active cell. + // This function creates a double data type, - // Dependent cells contain formulas that refer to other cells. + // and sets the format of this data type as a date. await Excel.run(async (context) => { - // Get addresses of the active cell's dependent cells. - const range = context.workbook.getActiveCell(); - const dependents = range.getDependents(); - range.load("address"); - dependents.areas.load("address"); - await context.sync(); - - console.log(`All dependent cells of ${range.address}:`); + // Get the Sample worksheet and a range on that sheet. + const sheet = context.workbook.worksheets.getItemOrNullObject("Sample"); + const dateRange = sheet.getRange("A1"); - // Use the dependents API to loop through dependents of the active cell. - for (let i = 0; i < dependents.areas.items.length; i++) { - // Highlight and print out the address of each dependent cell. - dependents.areas.items[i].format.fill.color = "Orange"; - console.log(` ${dependents.areas.items[i].address}`); - } + // Write a number formatted as a date to cell A1. + dateRange.valuesAsJson = [ + [ + { + type: Excel.CellValueType.double, + basicValue: 32889.0, + numberFormat: "m/d/yyyy" + } + ] + ]; await context.sync(); }); 'Excel.Range#getDirectDependents:member(1)': @@ -5430,143 +5505,118 @@ } await context.sync(); }); -'Excel.Range#getDirectPrecedents:member(1)': +'Excel.Range#sort:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/precedents.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml - await Excel.run(async (context) => { - // Precedents are cells referenced by the formula in a cell. - // A "direct precedent" is a cell directly referenced by the selected formula. - let range = context.workbook.getActiveCell(); - let directPrecedents = range.getDirectPrecedents(); - range.load("address"); - directPrecedents.areas.load("address"); - await context.sync(); + async function sortTopToBottom(criteria: string) { + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const range = sheet.getRange("A1:E5"); - console.log(`Direct precedent cells of ${range.address}:`); + // Find the column header that provides the sort criteria. + const header = range.find(criteria, {}); + header.load("columnIndex"); + await context.sync(); - // Use the direct precedents API to loop through precedents of the active cell. - for (let i = 0; i < directPrecedents.areas.items.length; i++) { - // Highlight and console the address of each precedent cell. - directPrecedents.areas.items[i].format.fill.color = "Yellow"; - console.log(` ${directPrecedents.areas.items[i].address}`); - } - await context.sync(); - }); -'Excel.Range#getExtendedRange:member(1)': + range.sort.apply( + [ + { + key: header.columnIndex, + sortOn: Excel.SortOn.value + } + ], + false /*matchCase*/, + true /*hasHeaders*/, + Excel.SortOrientation.rows + ); + await context.sync(); + }); + } +'Excel.Range#getMergedAreasOrNullObject:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-get-range-edge.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-merged-ranges.yaml await Excel.run(async (context) => { - // Get the selected range. - const range = context.workbook.getSelectedRange(); + // Retrieve the worksheet and the table in that worksheet. + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const tableRange = sheet.getRange("B2:E6"); - // Specify the direction with the `KeyboardDirection` enum. - const direction = Excel.KeyboardDirection.down; + // Retrieve the merged range within the table and load its details. + const mergedAreas = tableRange.getMergedAreasOrNullObject(); + mergedAreas.load("address"); + mergedAreas.load("cellCount"); - // Get the active cell in the workbook. - const activeCell = context.workbook.getActiveCell(); + // Select the merged range. + const range = mergedAreas.areas.getItemAt(0); + range.select(); + await context.sync(); - // Get all the cells from the currently selected range to the bottom-most edge of the used range. - // This method acts like the Ctrl+Shift+Arrow key keyboard shortcut while a range is selected. - const extendedRange = range.getExtendedRange( - direction, - activeCell // If the selected range contains more than one cell, the active cell must be defined. - ); - extendedRange.select(); + // Print out the details of the `mergedAreas` range object. + console.log(`Address of the merged range: ${mergedAreas.address}`); + console.log(`Number of cells in the merged range: ${mergedAreas.cellCount}`); await context.sync(); }); -'Excel.Range#getIntersectionOrNullObject:member(1)': +'Excel.Range#merge:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-relationships.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-merged-ranges.yaml await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - const salesTable = sheet.tables.getItem("SalesTable"); - const dataRange = salesTable.getDataBodyRange(); + // Retrieve the worksheet and the table in that worksheet. + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const tableRange = sheet.getRange("B2:E6"); - // We want the most recent quarter that has data, so - // exclude quarters without data and get the last of - // the remaining columns. - const usedDataRange = dataRange.getUsedRange(true /* valuesOnly */); - const currentQuarterRange = usedDataRange.getLastColumn(); + // Create a merged range in the first row of the table. + const chartTitle = tableRange.getRow(0); + chartTitle.merge(true); - // Asian and European teams have separate contests. - const asianSalesRange = sheet.getRange("A2:E4"); - const europeanSalesRange = sheet.getRange("A5:E7"); + // Format the merged range. + chartTitle.format.horizontalAlignment = "Center"; - // The data for each chart is the intersection of the - // current quarter column and the rows for the continent. - const asianContestRange = asianSalesRange.getIntersectionOrNullObject(currentQuarterRange); - const europeanContestRange = europeanSalesRange.getIntersectionOrNullObject(currentQuarterRange); - - // Must sync before you can test the output of *OrNullObject - // method/property. - await context.sync(); + await context.sync(); + }); +'Excel.Range#group:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml - if (asianContestRange.isNullObject) { - // See the declaration of this function for how to - // test this code path. - reportMissingData("Asian"); - } else { - createContinentChart( - sheet, - "Asian", - asianContestRange, - "A9", - "F24" - ); - } - if (europeanContestRange.isNullObject) { - // See the declaration of this function for how to - // test this code path. - reportMissingData("European"); - } else { - createContinentChart( - sheet, - "European", - europeanContestRange, - "A25", - "F40" - ); - } + Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Group the larger, main level. Note that the outline controls + // will be on row 10, meaning 4-9 will collapse and expand. + sheet.getRange("4:9").group(Excel.GroupOption.byRows); + // Group the smaller, sublevels. Note that the outline controls + // will be on rows 6 and 9, meaning 4-5 and 7-8 will collapse and expand. + sheet.getRange("4:5").group(Excel.GroupOption.byRows); + sheet.getRange("7:8").group(Excel.GroupOption.byRows); await context.sync(); }); -'Excel.Range#getMergedAreasOrNullObject:member(1)': +'Excel.Range#ungroup:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-merged-ranges.yaml - - - await Excel.run(async (context) => { - // Retrieve the worksheet and the table in that worksheet. - const sheet = context.workbook.worksheets.getActiveWorksheet(); - const tableRange = sheet.getRange("B2:E6"); - - // Retrieve the merged range within the table and load its details. - const mergedAreas = tableRange.getMergedAreasOrNullObject(); - mergedAreas.load("address"); - mergedAreas.load("cellCount"); - - // Select the merged range. - const range = mergedAreas.areas.getItemAt(0); - range.select(); - await context.sync(); + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml - // Print out the details of the `mergedAreas` range object. - console.log(`Address of the merged range: ${mergedAreas.address}`); - console.log(`Number of cells in the merged range: ${mergedAreas.cellCount}`); - await context.sync(); + Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // This removes two levels of groups from the "A1-R10" range. + // Any groups at the same level on the same dimension will be removed by a single call. + sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byRows); + sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byRows); + sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byColumns); + sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byColumns); + await context.sync(); }); 'Excel.Range#getPivotTables:member(1)': - >- @@ -5586,38 +5636,361 @@ fullyContainedPivotTables.load("name"); await context.sync(); - // Display the names in the console. - console.log("PivotTables in the current range:") - partiallyContainedPivotTables.items.forEach((pivotTable) => { - console.log(`\t${pivotTable.name}`); - }); - console.log("PivotTables completely contained in the current range:") - fullyContainedPivotTables.items.forEach((pivotTable) => { - console.log(`\t${pivotTable.name}`); - }); + // Display the names in the console. + console.log("PivotTables in the current range:") + partiallyContainedPivotTables.items.forEach((pivotTable) => { + console.log(`\t${pivotTable.name}`); + }); + console.log("PivotTables completely contained in the current range:") + fullyContainedPivotTables.items.forEach((pivotTable) => { + console.log(`\t${pivotTable.name}`); + }); + }); +'Excel.Range#getDirectPrecedents:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/precedents.yaml + + + await Excel.run(async (context) => { + // Precedents are cells referenced by the formula in a cell. + // A "direct precedent" is a cell directly referenced by the selected formula. + let range = context.workbook.getActiveCell(); + let directPrecedents = range.getDirectPrecedents(); + range.load("address"); + directPrecedents.areas.load("address"); + await context.sync(); + + console.log(`Direct precedent cells of ${range.address}:`); + + // Use the direct precedents API to loop through precedents of the active cell. + for (let i = 0; i < directPrecedents.areas.items.length; i++) { + // Highlight and console the address of each precedent cell. + directPrecedents.areas.items[i].format.fill.color = "Yellow"; + console.log(` ${directPrecedents.areas.items[i].address}`); + } + await context.sync(); + }); +'Excel.Range#getPrecedents:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/precedents.yaml + + + await Excel.run(async (context) => { + // Precedents are cells referenced by the formula in a cell. + let range = context.workbook.getActiveCell(); + let precedents = range.getPrecedents(); + range.load("address"); + precedents.areas.load("address"); + await context.sync(); + + console.log(`All precedent cells of ${range.address}:`); + + // Use the precedents API to loop through precedents of the active cell. + for (let i = 0; i < precedents.areas.items.length; i++) { + // Highlight and console the address of each precedent cell. + precedents.areas.items[i].format.fill.color = "Orange"; + console.log(` ${precedents.areas.items[i].address}`); + } + await context.sync(); + }); +'Excel.Range#getSpecialCells:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml + + + await Excel.run(async (context) => { + + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const usedRange = sheet.getUsedRange(); + + // Find the ranges with either text or logical (boolean) values. + const formulaRanges = usedRange.getSpecialCells("Constants", "LogicalText"); + formulaRanges.format.fill.color = "orange"; + + return context.sync(); + }); +'Excel.Range#autoFill:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-auto-fill.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const sumCell = sheet.getRange("P4"); + + // Copy everything. The formulas will be contextually updated based on their new locations. + sumCell.autoFill("P4:P7", Excel.AutoFillType.fillCopy); + sumCell.format.autofitColumns(); + await context.sync(); + }); +'Excel.Range#getCellProperties:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml + + + await Excel.run(async (context) => { + const cell = context.workbook.getActiveCell(); + + // Define the cell properties to get by setting the matching LoadOptions to true. + const propertiesToGet = cell.getCellProperties({ + address: true, + format: { + fill: { + color: true + }, + font: { + color: true + } + }, + style: true + }); + + // Sync to get the data from the workbook. + await context.sync(); + const cellProperties = propertiesToGet.value[0][0]; + console.log( + `Address: ${cellProperties.address}\nStyle: ${cellProperties.style}\nFill Color: ${cellProperties.format.fill.color}\nFont Color: ${cellProperties.format.font.color}`); + }); +'Excel.Range#setCellProperties:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Creating the SettableCellProperties objects to use for the range. + // In your add-in, these should be created once, outside the function. + const topHeaderProps: Excel.SettableCellProperties = { + // The style property takes a string matching the name of an Excel style. + // Built-in style names are listed in the `BuiltInStyle` enum. + // Note that a style will overwrite any formatting, + // so do not use the format property with the style property. + style: "Heading1" + }; + + const headerProps: Excel.SettableCellProperties = { + // Any subproperties of format that are not set will not be changed when these cell properties are set. + format: { + fill: { + color: "Blue" + }, + font: { + color: "White", + bold: true + } + } + }; + + const nonApplicableProps: Excel.SettableCellProperties = { + format: { + fill: { + pattern: Excel.FillPattern.gray25 + }, + font: { + color: "Gray", + italic: true + } + } + }; + + const matchupScoreProps: Excel.SettableCellProperties = { + format: { + borders: { + bottom: { + style: Excel.BorderLineStyle.continuous + }, + left: { + style: Excel.BorderLineStyle.continuous + }, + right: { + style: Excel.BorderLineStyle.continuous + }, + top: { + style: Excel.BorderLineStyle.continuous + } + } + } + }; + + const range = sheet.getRange("A1:E5"); + + // You can use empty JSON objects to avoid changing a cell's properties. + range.setCellProperties([ + [topHeaderProps, {}, {}, {}, {}], + [{}, {}, headerProps, headerProps, headerProps], + [{}, headerProps, nonApplicableProps, matchupScoreProps, matchupScoreProps], + [{}, headerProps, matchupScoreProps, nonApplicableProps, matchupScoreProps], + [{}, headerProps, matchupScoreProps, matchupScoreProps, nonApplicableProps] + ]); + + sheet.getUsedRange().format.autofitColumns(); + await context.sync(); + }); +'Excel.Range#copyFrom:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-copyfrom.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + // Place a label in front of the copied data. + sheet.getRange("F2").values = [["Copied Formula"]]; + + // Copy a range preserving the formulas. + // Note: non-formula values are copied over as is. + sheet.getRange("G2").copyFrom("A1:E1", Excel.RangeCopyType.formulas); + await context.sync(); + }); +'Excel.Range#moveTo:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-copyfrom.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + // Place a label in front of the moved data. + sheet.getRange("F12").values = [["Moved Range:"]]; + + // Move the range from A1:E1 to G12:K12. + sheet.getRange("A1:E1").moveTo("G12"); + await context.sync(); + }); +'Excel.Range#getDependents:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-dependents.yaml + + + // This function highlights all the dependent cells of the active cell. + + // Dependent cells contain formulas that refer to other cells. + + await Excel.run(async (context) => { + // Get addresses of the active cell's dependent cells. + const range = context.workbook.getActiveCell(); + const dependents = range.getDependents(); + range.load("address"); + dependents.areas.load("address"); + await context.sync(); + + console.log(`All dependent cells of ${range.address}:`); + + // Use the dependents API to loop through dependents of the active cell. + for (let i = 0; i < dependents.areas.items.length; i++) { + // Highlight and print out the address of each dependent cell. + dependents.areas.items[i].format.fill.color = "Orange"; + console.log(` ${dependents.areas.items[i].address}`); + } + await context.sync(); + }); +'Excel.Range#getSpillingToRange:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/dynamic-arrays.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + + // Set G4 to a formula that returns a dynamic array. + const targetCell = sheet.getRange("G4"); + targetCell.formulas = [["=A4:D4"]]; + + // Get the address of the cells that the dynamic array spilled into. + const spillRange = targetCell.getSpillingToRange(); + spillRange.load("address"); + + // Fit the columns for readability. + sheet.getUsedRange().format.autofitColumns(); + await context.sync(); + + console.log(`Copying the table headers spilled into ${spillRange.address}.`); + }); +'Excel.Range#find:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-find.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + const table = sheet.tables.getItem("ExpensesTable"); + const searchRange = table.getRange(); + + // NOTE: If no match is found, an ItemNotFound error + // is thrown when Range.find is evaluated. + const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; + const foundRange = searchRange.find(searchText, { + completeMatch: isCompleteMatchToggle, + matchCase: isMatchCaseToggle, + searchDirection: searchDirectionToggle + }); + + foundRange.load("address"); + await context.sync(); + + + console.log(foundRange.address); + }); +'Excel.Range#findOrNullObject:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-find.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + const table = sheet.tables.getItem("ExpensesTable"); + const searchRange = table.getRange(); + const searchText = (document.getElementById("searchText") as HTMLTextAreaElement).value; + const foundRange = searchRange.findOrNullObject(searchText, { + completeMatch: isCompleteMatchToggle, + matchCase: isMatchCaseToggle, + searchDirection: searchDirectionToggle + }); + + foundRange.load("address"); + await context.sync(); + + if (foundRange.isNullObject) { + console.log("Text not found"); + } else { + console.log(foundRange.address); + } }); -'Excel.Range#getPrecedents:member(1)': +'Excel.Range#getExtendedRange:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/precedents.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-get-range-edge.yaml await Excel.run(async (context) => { - // Precedents are cells referenced by the formula in a cell. - let range = context.workbook.getActiveCell(); - let precedents = range.getPrecedents(); - range.load("address"); - precedents.areas.load("address"); - await context.sync(); + // Get the selected range. + const range = context.workbook.getSelectedRange(); - console.log(`All precedent cells of ${range.address}:`); + // Specify the direction with the `KeyboardDirection` enum. + const direction = Excel.KeyboardDirection.down; + + // Get the active cell in the workbook. + const activeCell = context.workbook.getActiveCell(); + + // Get all the cells from the currently selected range to the bottom-most edge of the used range. + // This method acts like the Ctrl+Shift+Arrow key keyboard shortcut while a range is selected. + const extendedRange = range.getExtendedRange( + direction, + activeCell // If the selected range contains more than one cell, the active cell must be defined. + ); + extendedRange.select(); - // Use the precedents API to loop through precedents of the active cell. - for (let i = 0; i < precedents.areas.items.length; i++) { - // Highlight and console the address of each precedent cell. - precedents.areas.items[i].format.fill.color = "Orange"; - console.log(` ${precedents.areas.items[i].address}`); - } await context.sync(); }); 'Excel.Range#getRangeEdge:member(1)': @@ -5646,47 +6019,37 @@ await context.sync(); }); -'Excel.Range#getSpecialCells:member(1)': +'Excel.Range#hyperlink:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Orders"); - const sheet = context.workbook.worksheets.getActiveWorksheet(); - const usedRange = sheet.getUsedRange(); - - // Find the ranges with either text or logical (boolean) values. - const formulaRanges = usedRange.getSpecialCells("Constants", "LogicalText"); - formulaRanges.format.fill.color = "orange"; - - return context.sync(); - }); -'Excel.Range#getSpillingToRange:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/dynamic-arrays.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); + let productsRange = sheet.getRange("A3:A5"); + productsRange.load("values"); - // Set G4 to a formula that returns a dynamic array. - const targetCell = sheet.getRange("G4"); - targetCell.formulas = [["=A4:D4"]]; + await context.sync(); - // Get the address of the cells that the dynamic array spilled into. - const spillRange = targetCell.getSpillingToRange(); - spillRange.load("address"); + // Create a hyperlink to a URL + // for each product name in the first table. + for (let i = 0; i < productsRange.values.length; i++) { + let cellRange = productsRange.getCell(i, 0); + let cellText = productsRange.values[i][0]; - // Fit the columns for readability. - sheet.getUsedRange().format.autofitColumns(); - await context.sync(); + let hyperlink = { + textToDisplay: cellText, + screenTip: "Search Bing for '" + cellText + "'", + address: "https://www.bing.com/?q=" + cellText + } + cellRange.hyperlink = hyperlink; + } - console.log(`Copying the table headers spilled into ${spillRange.address}.`); + await context.sync(); }); -'Excel.Range#getUsedRange:member(1)': +'Excel.Range#getIntersectionOrNullObject:member(1)': - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-relationships.yaml @@ -5746,272 +6109,83 @@ await context.sync(); }); -'Excel.Range#getUsedRangeOrNullObject:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/used-range.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - const salesTable = sheet.tables.getItem("SalesTable"); - const dataRange = salesTable.getDataBodyRange(); - - // Pass true so only cells with values count as used - const usedDataRange = dataRange.getUsedRangeOrNullObject( - true /* valuesOnly */ - ); - - //Must sync before reading value returned from *OrNullObject method/property. - await context.sync(); - - if (usedDataRange.isNullObject) { - console.log("Need Data to Make Chart"); - console.log("To create a meaningful chart, press 'Fill the table' (or add names to the Product column and numbers to some of the other cells). Then press 'Try to create chart' again."); - } else { - const chart = sheet.charts.add( - Excel.ChartType.columnClustered, - dataRange, - "Columns" - ); - chart.setPosition("A15", "F30"); - chart.title.text = "Quarterly sales chart"; - chart.legend.position = "Right"; - chart.legend.format.fill.setSolidColor("white"); - chart.dataLabels.format.font.size = 15; - chart.dataLabels.format.font.color = "black"; - } - - await context.sync(); - }); -'Excel.Range#group:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml - - - Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); - - // Group the larger, main level. Note that the outline controls - // will be on row 10, meaning 4-9 will collapse and expand. - sheet.getRange("4:9").group(Excel.GroupOption.byRows); - - // Group the smaller, sublevels. Note that the outline controls - // will be on rows 6 and 9, meaning 4-5 and 7-8 will collapse and expand. - sheet.getRange("4:5").group(Excel.GroupOption.byRows); - sheet.getRange("7:8").group(Excel.GroupOption.byRows); - await context.sync(); - }); -'Excel.Range#hyperlink:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Orders"); - - let productsRange = sheet.getRange("A3:A5"); - productsRange.load("values"); - - await context.sync(); - - // Create a hyperlink to a URL - // for each product name in the first table. - for (let i = 0; i < productsRange.values.length; i++) { - let cellRange = productsRange.getCell(i, 0); - let cellText = productsRange.values[i][0]; - - let hyperlink = { - textToDisplay: cellText, - screenTip: "Search Bing for '" + cellText + "'", - address: "https://www.bing.com/?q=" + cellText - } - cellRange.hyperlink = hyperlink; - } - - await context.sync(); - }); -'Excel.Range#merge:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-merged-ranges.yaml - - - await Excel.run(async (context) => { - // Retrieve the worksheet and the table in that worksheet. - const sheet = context.workbook.worksheets.getActiveWorksheet(); - const tableRange = sheet.getRange("B2:E6"); - - // Create a merged range in the first row of the table. - const chartTitle = tableRange.getRow(0); - chartTitle.merge(true); - - // Format the merged range. - chartTitle.format.horizontalAlignment = "Center"; - - await context.sync(); - }); -'Excel.Range#moveTo:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-copyfrom.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - // Place a label in front of the moved data. - sheet.getRange("F12").values = [["Moved Range:"]]; - - // Move the range from A1:E1 to G12:K12. - sheet.getRange("A1:E1").moveTo("G12"); - await context.sync(); - }); -'Excel.Range#removeDuplicates:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-remove-duplicates.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - const range = sheet.getRange("B2:D11"); - - const deleteResult = range.removeDuplicates([0],true); - deleteResult.load(); - await context.sync(); - - console.log(deleteResult.removed + " entries with duplicate names removed."); - console.log(deleteResult.uniqueRemaining + " entries with unique names remain in the range."); - }); -'Excel.Range#set:member(2)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/90-scenarios/multiple-property-set.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - - const sourceRange = sheet.getRange("B2:E2"); - sourceRange.load("format/fill/color, format/font/name, format/font/color"); - await context.sync(); - - // Set properties based on the loaded and synced - // source range. - const targetRange = sheet.getRange("B7:E7"); - targetRange.set(sourceRange); - targetRange.format.autofitColumns(); - await context.sync(); - }); -'Excel.Range#setCellProperties:member(1)': +'Excel.Range#getUsedRange:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-relationships.yaml await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); + const sheet = context.workbook.worksheets.getItem("Sample"); + const salesTable = sheet.tables.getItem("SalesTable"); + const dataRange = salesTable.getDataBodyRange(); - // Creating the SettableCellProperties objects to use for the range. - // In your add-in, these should be created once, outside the function. - const topHeaderProps: Excel.SettableCellProperties = { - // The style property takes a string matching the name of an Excel style. - // Built-in style names are listed in the `BuiltInStyle` enum. - // Note that a style will overwrite any formatting, - // so do not use the format property with the style property. - style: "Heading1" - }; + // We want the most recent quarter that has data, so + // exclude quarters without data and get the last of + // the remaining columns. + const usedDataRange = dataRange.getUsedRange(true /* valuesOnly */); + const currentQuarterRange = usedDataRange.getLastColumn(); - const headerProps: Excel.SettableCellProperties = { - // Any subproperties of format that are not set will not be changed when these cell properties are set. - format: { - fill: { - color: "Blue" - }, - font: { - color: "White", - bold: true - } - } - }; + // Asian and European teams have separate contests. + const asianSalesRange = sheet.getRange("A2:E4"); + const europeanSalesRange = sheet.getRange("A5:E7"); - const nonApplicableProps: Excel.SettableCellProperties = { - format: { - fill: { - pattern: Excel.FillPattern.gray25 - }, - font: { - color: "Gray", - italic: true - } - } - }; + // The data for each chart is the intersection of the + // current quarter column and the rows for the continent. + const asianContestRange = asianSalesRange.getIntersectionOrNullObject(currentQuarterRange); + const europeanContestRange = europeanSalesRange.getIntersectionOrNullObject(currentQuarterRange); - const matchupScoreProps: Excel.SettableCellProperties = { - format: { - borders: { - bottom: { - style: Excel.BorderLineStyle.continuous - }, - left: { - style: Excel.BorderLineStyle.continuous - }, - right: { - style: Excel.BorderLineStyle.continuous - }, - top: { - style: Excel.BorderLineStyle.continuous - } - } - } - }; + // Must sync before you can test the output of *OrNullObject + // method/property. + await context.sync(); - const range = sheet.getRange("A1:E5"); + if (asianContestRange.isNullObject) { + // See the declaration of this function for how to + // test this code path. + reportMissingData("Asian"); + } else { + createContinentChart( + sheet, + "Asian", + asianContestRange, + "A9", + "F24" + ); + } - // You can use empty JSON objects to avoid changing a cell's properties. - range.setCellProperties([ - [topHeaderProps, {}, {}, {}, {}], - [{}, {}, headerProps, headerProps, headerProps], - [{}, headerProps, nonApplicableProps, matchupScoreProps, matchupScoreProps], - [{}, headerProps, matchupScoreProps, nonApplicableProps, matchupScoreProps], - [{}, headerProps, matchupScoreProps, matchupScoreProps, nonApplicableProps] - ]); + if (europeanContestRange.isNullObject) { + // See the declaration of this function for how to + // test this code path. + reportMissingData("European"); + } else { + createContinentChart( + sheet, + "European", + europeanContestRange, + "A25", + "F40" + ); + } - sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.Range#sort:member': +'Excel.Range#removeDuplicates:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-remove-duplicates.yaml - async function sortTopToBottom(criteria: string) { - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); - const range = sheet.getRange("A1:E5"); + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + const range = sheet.getRange("B2:D11"); - // Find the column header that provides the sort criteria. - const header = range.find(criteria, {}); - header.load("columnIndex"); - await context.sync(); + const deleteResult = range.removeDuplicates([0],true); + deleteResult.load(); + await context.sync(); - range.sort.apply( - [ - { - key: header.columnIndex, - sortOn: Excel.SortOn.value - } - ], - false /*matchCase*/, - true /*hasHeaders*/, - Excel.SortOrientation.rows - ); - await context.sync(); - }); - } + console.log(deleteResult.removed + " entries with duplicate names removed."); + console.log(deleteResult.uniqueRemaining + " entries with unique names remain in the range."); + }); 'Excel.Range#style:member': - >- // Link to full sample: @@ -6029,64 +6203,63 @@ await context.sync(); }); -'Excel.Range#ungroup:member(1)': +'Excel.Range#getUsedRangeOrNullObject:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/used-range.yaml - Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); - - // This removes two levels of groups from the "A1-R10" range. - // Any groups at the same level on the same dimension will be removed by a single call. - sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byRows); - sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byRows); - sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byColumns); - sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byColumns); - await context.sync(); - }); -'Excel.Range#values:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + const salesTable = sheet.tables.getItem("SalesTable"); + const dataRange = salesTable.getDataBodyRange(); + // Pass true so only cells with values count as used + const usedDataRange = dataRange.getUsedRangeOrNullObject( + true /* valuesOnly */ + ); - // Change the value of the checkbox in B3. + //Must sync before reading value returned from *OrNullObject method/property. + await context.sync(); - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); - const range = sheet.getRange("B3"); + if (usedDataRange.isNullObject) { + console.log("Need Data to Make Chart"); + console.log("To create a meaningful chart, press 'Fill the table' (or add names to the Product column and numbers to some of the other cells). Then press 'Try to create chart' again."); + } else { + const chart = sheet.charts.add( + Excel.ChartType.columnClustered, + dataRange, + "Columns" + ); + chart.setPosition("A15", "F30"); + chart.title.text = "Quarterly sales chart"; + chart.legend.position = "Right"; + chart.legend.format.fill.setSolidColor("white"); + chart.dataLabels.format.font.size = 15; + chart.dataLabels.format.font.color = "black"; + } - range.values = [["TRUE"]]; - await context.sync(); + await context.sync(); }); -'Excel.Range#valuesAsJson:member': +'Excel.Range#set:member(2)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml - - - // This function creates a double data type, + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/90-scenarios/multiple-property-set.yaml - // and sets the format of this data type as a date. await Excel.run(async (context) => { - // Get the Sample worksheet and a range on that sheet. - const sheet = context.workbook.worksheets.getItemOrNullObject("Sample"); - const dateRange = sheet.getRange("A1"); + const sheet = context.workbook.worksheets.getItem("Sample"); - // Write a number formatted as a date to cell A1. - dateRange.valuesAsJson = [ - [ - { - type: Excel.CellValueType.double, - basicValue: 32889.0, - numberFormat: "m/d/yyyy" - } - ] - ]; - await context.sync(); + const sourceRange = sheet.getRange("B2:E2"); + sourceRange.load("format/fill/color, format/font/name, format/font/color"); + await context.sync(); + + // Set properties based on the loaded and synced + // source range. + const targetRange = sheet.getRange("B7:E7"); + targetRange.set(sourceRange); + targetRange.format.autofitColumns(); + await context.sync(); }); 'Excel.RangeAreas#format:member': - >- @@ -6470,6 +6643,19 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml + await Excel.run(async (context) => { + const settings = context.workbook.settings; + settings.onSettingsChanged.add(onChangedSetting); + + await context.sync(); + console.log("Settings changed handler registered."); + }); +'Excel.SettingCollection#onSettingsChanged:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml + + await Excel.run(async (context) => { const settings = context.workbook.settings; settings.onSettingsChanged.add(onChangedSetting); @@ -6499,19 +6685,6 @@ await context.sync(); }); -'Excel.SettingCollection#onSettingsChanged:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml - - - await Excel.run(async (context) => { - const settings = context.workbook.settings; - settings.onSettingsChanged.add(onChangedSetting); - - await context.sync(); - console.log("Settings changed handler registered."); - }); 'Excel.Shape#delete:member(1)': - >- // Link to full sample: @@ -6547,21 +6720,22 @@ shape.fill.foregroundColor = "yellow" await context.sync(); }); -'Excel.Shape#getAsImage:member(1)': +'Excel.Shape#rotation:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getItem("Shapes"); - const shape = sheet.shapes.getItem("Image"); - const result = shape.getAsImage(Excel.PictureFormat.png); + const shape = sheet.shapes.addGeometricShape(Excel.GeometricShapeType.triangle); + shape.left = 100; + shape.top = 300; + shape.height = 150; + shape.width = 200; + shape.rotation = 45; + shape.fill.clear(); await context.sync(); - - const imageString = result.value; - // Your add-in would save this string as a .png file. - console.log("The image's Base64-encoded string: " + imageString); }); 'Excel.Shape#group:member': - >- @@ -6578,17 +6752,21 @@ await context.sync(); }); -'Excel.Shape#incrementLeft:member(1)': +'Excel.Shape#getAsImage:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getItem("Shapes"); - const shape = sheet.shapes.getItem("Square") - shape.incrementLeft(-25); + const shape = sheet.shapes.getItem("Image"); + const result = shape.getAsImage(Excel.PictureFormat.png); await context.sync(); + + const imageString = result.value; + // Your add-in would save this string as a .png file. + console.log("The image's Base64-encoded string: " + imageString); }); 'Excel.Shape#incrementRotation:member(1)': - >- @@ -6602,18 +6780,6 @@ shape.incrementRotation(180); await context.sync(); }); -'Excel.Shape#incrementTop:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Shapes"); - const shape = sheet.shapes.getItem("Pentagon") - shape.incrementTop(25); - await context.sync(); - }); 'Excel.Shape#line:member': - >- // Link to full sample: @@ -6633,7 +6799,7 @@ await context.sync(); }); -'Excel.Shape#lockAspectRatio:member': +'Excel.Shape#incrementLeft:member(1)': - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -6641,26 +6807,33 @@ await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getItem("Shapes"); - const shape = sheet.shapes.getItem("Octagon") - shape.lockAspectRatio = true; - shape.scaleHeight(1.25, Excel.ShapeScaleType.currentSize); + const shape = sheet.shapes.getItem("Square") + shape.incrementLeft(-25); await context.sync(); }); -'Excel.Shape#rotation:member': +'Excel.Shape#incrementTop:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getItem("Shapes"); - const shape = sheet.shapes.addGeometricShape(Excel.GeometricShapeType.triangle); - shape.left = 100; - shape.top = 300; - shape.height = 150; - shape.width = 200; - shape.rotation = 45; - shape.fill.clear(); + const shape = sheet.shapes.getItem("Pentagon") + shape.incrementTop(25); + await context.sync(); + }); +'Excel.Shape#lockAspectRatio:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Shapes"); + const shape = sheet.shapes.getItem("Octagon") + shape.lockAspectRatio = true; + shape.scaleHeight(1.25, Excel.ShapeScaleType.currentSize); await context.sync(); }); 'Excel.Shape#scaleHeight:member(1)': @@ -7571,30 +7744,118 @@ await context.sync(); }); -'Excel.Workbook#close:member(1)': +'Excel.Workbook#properties:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-save-and-close.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/properties.yaml await Excel.run(async (context) => { - context.workbook.close(Excel.CloseBehavior.save); + let titleValue = "Excel document properties API"; + let subjectValue = "Set and get document properties"; + let keywordsValue = "Set and get operations"; + let commentsValue = "This is an Excel document properties API code sample"; + let categoryValue = "Office Add-ins"; + let managerValue = "John"; + let companyValue = "Microsoft"; + + let docProperties = context.workbook.properties; + + // Set the writeable document properties. + docProperties.title = titleValue; + docProperties.subject = subjectValue; + docProperties.keywords = keywordsValue; + docProperties.comments = commentsValue; + docProperties.category = categoryValue; + docProperties.manager = managerValue; + docProperties.company = companyValue; + + await context.sync(); + + console.log("Set the following document properties: title, subject, keywords, comments, category, manager, company."); }); -'Excel.Workbook#getActiveCell:member(1)': +'Excel.Workbook#onActivated:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-get-active-cell.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-activated.yaml + + + async function workbookActivated(event: Excel.WorkbookActivatedEventArgs) { + await Excel.run(async (context) => { + // Callback function for when the workbook is activated. + console.log("The workbook was activated."); + }); + } + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-activated.yaml await Excel.run(async (context) => { + const workbook = context.workbook; - let myWorkbook = context.workbook; - let activeCell = myWorkbook.getActiveCell(); - activeCell.load("address"); + // Register the workbook activated event handler. + workbook.onActivated.add(workbookActivated); + + await context.sync(); + console.log("Added event handler for workbook activated."); + }); +'Excel.Workbook#pivotTables:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-get-pivottables.yaml + + + await Excel.run(async (context) => { + // Get the names of all the PivotTables in the workbook. + const pivotTables = context.workbook.pivotTables; + pivotTables.load("name"); + await context.sync(); + + // Display the names in the console. + console.log("PivotTables in the workbook:") + pivotTables.items.forEach((pivotTable) => { + console.log(`\t${pivotTable.name}`); + }); + }); +'Excel.Workbook#getSelectedRanges:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml + + + await Excel.run(async (context) => { + + const selectedRanges = context.workbook.getSelectedRanges(); + selectedRanges.format.fill.color = "lightblue"; await context.sync(); + }) +'Excel.Workbook#styles:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml + + + await Excel.run(async (context) => { + let styles = context.workbook.styles; + + // Add a new style to the style collection. + // Styles is in the Home tab ribbon. + styles.add("Diagonal Orientation Style"); + + let newStyle = styles.getItem("Diagonal Orientation Style"); - console.log("The active cell is " + activeCell.address); + // The "Diagonal Orientation Style" properties. + newStyle.textOrientation = 38; + newStyle.autoIndent = true; + newStyle.includeProtection = true; + newStyle.shrinkToFit = true; + newStyle.locked = false; + + await context.sync(); + + console.log("Successfully added a new style with diagonal orientation to the Home tab ribbon."); }); 'Excel.Workbook#getActiveShapeOrNullObject:member(1)': - >- @@ -7624,19 +7885,22 @@ console.log("No active shape"); } }); -'Excel.Workbook#getSelectedRanges:member(1)': +'Excel.Workbook#getActiveCell:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-get-active-cell.yaml await Excel.run(async (context) => { - const selectedRanges = context.workbook.getSelectedRanges(); - selectedRanges.format.fill.color = "lightblue"; + let myWorkbook = context.workbook; + let activeCell = myWorkbook.getActiveCell(); + activeCell.load("address"); await context.sync(); - }) + + console.log("The active cell is " + activeCell.address); + }); 'Excel.Workbook#insertWorksheetsFromBase64:member(1)': - >- // Link to full sample: @@ -7663,132 +7927,41 @@ reader.readAsDataURL(myFile.files[0]); - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml - - - await Excel.run(async (context) => { - // Retrieve the source workbook. - const workbook = context.workbook; - - // Set up the insert options. - const options = { - sheetNamesToInsert: [], // Insert all the worksheets from the source workbook. - positionType: Excel.WorksheetPositionType.after, // Insert after the `relativeTo` sheet. - relativeTo: "Sheet1" // The sheet relative to which the other worksheets will be inserted. Used with `positionType`. - }; - - // Insert the new worksheets. - workbook.insertWorksheetsFromBase64(externalWorkbook, options); - await context.sync(); - }); -'Excel.Workbook#onActivated:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-activated.yaml - - - async function workbookActivated(event: Excel.WorkbookActivatedEventArgs) { - await Excel.run(async (context) => { - // Callback function for when the workbook is activated. - console.log("The workbook was activated."); - }); - } - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-activated.yaml - - - await Excel.run(async (context) => { - const workbook = context.workbook; - - // Register the workbook activated event handler. - workbook.onActivated.add(workbookActivated); - - await context.sync(); - console.log("Added event handler for workbook activated."); - }); -'Excel.Workbook#pivotTables:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-get-pivottables.yaml - - - await Excel.run(async (context) => { - // Get the names of all the PivotTables in the workbook. - const pivotTables = context.workbook.pivotTables; - pivotTables.load("name"); - await context.sync(); - - // Display the names in the console. - console.log("PivotTables in the workbook:") - pivotTables.items.forEach((pivotTable) => { - console.log(`\t${pivotTable.name}`); - }); - }); -'Excel.Workbook#properties:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/properties.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml await Excel.run(async (context) => { - let titleValue = "Excel document properties API"; - let subjectValue = "Set and get document properties"; - let keywordsValue = "Set and get operations"; - let commentsValue = "This is an Excel document properties API code sample"; - let categoryValue = "Office Add-ins"; - let managerValue = "John"; - let companyValue = "Microsoft"; - - let docProperties = context.workbook.properties; - - // Set the writeable document properties. - docProperties.title = titleValue; - docProperties.subject = subjectValue; - docProperties.keywords = keywordsValue; - docProperties.comments = commentsValue; - docProperties.category = categoryValue; - docProperties.manager = managerValue; - docProperties.company = companyValue; - + // Retrieve the source workbook. + const workbook = context.workbook; + + // Set up the insert options. + const options = { + sheetNamesToInsert: [], // Insert all the worksheets from the source workbook. + positionType: Excel.WorksheetPositionType.after, // Insert after the `relativeTo` sheet. + relativeTo: "Sheet1" // The sheet relative to which the other worksheets will be inserted. Used with `positionType`. + }; + + // Insert the new worksheets. + workbook.insertWorksheetsFromBase64(externalWorkbook, options); await context.sync(); - - console.log("Set the following document properties: title, subject, keywords, comments, category, manager, company."); }); -'Excel.Workbook#save:member(1)': +'Excel.Workbook#close:member(1)': - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-save-and-close.yaml await Excel.run(async (context) => { - context.workbook.save(Excel.SaveBehavior.save); + context.workbook.close(Excel.CloseBehavior.save); }); -'Excel.Workbook#styles:member': +'Excel.Workbook#save:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-save-and-close.yaml await Excel.run(async (context) => { - let styles = context.workbook.styles; - - // Add a new style to the style collection. - // Styles is in the Home tab ribbon. - styles.add("Diagonal Orientation Style"); - - let newStyle = styles.getItem("Diagonal Orientation Style"); - - // The "Diagonal Orientation Style" properties. - newStyle.textOrientation = 38; - newStyle.autoIndent = true; - newStyle.includeProtection = true; - newStyle.shrinkToFit = true; - newStyle.locked = false; - - await context.sync(); - - console.log("Successfully added a new style with diagonal orientation to the Home tab ribbon."); + context.workbook.save(Excel.SaveBehavior.save); }); 'Excel.WorkbookProtection#protect:member(1)': - >- @@ -7849,48 +8022,6 @@ } await context.sync(); }); -'Excel.Worksheet#autoFilter:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml - - - // This function adds a percentage AutoFilter to the active worksheet - - // and applies the filter to a column of the used range. - - await Excel.run(async (context) => { - // Retrieve the active worksheet and the used range on that worksheet. - const sheet = context.workbook.worksheets.getActiveWorksheet(); - const farmData = sheet.getUsedRange(); - - // Add a filter that will only show the rows with the top 50% of values in column 3. - sheet.autoFilter.apply(farmData, 3, { - criterion1: "50", - filterOn: Excel.FilterOn.topPercent - }); - - await context.sync(); - }); -'Excel.Worksheet#copy:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-copy.yaml - - - await Excel.run(async (context) => { - - let myWorkbook = context.workbook; - let sampleSheet = myWorkbook.worksheets.getActiveWorksheet(); - let copiedSheet = sampleSheet.copy("End") - - sampleSheet.load("name"); - copiedSheet.load("name"); - - await context.sync(); - - console.log("'" + sampleSheet.name + "' was copied to '" + copiedSheet.name + "'") - }); 'Excel.Worksheet#customProperties:member': - >- // Link to full sample: @@ -7909,124 +8040,46 @@ console.log(`${property.key}:${property.value}`); }); }); -'Excel.Worksheet#findAllOrNullObject:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-find-all.yaml - - - await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Sample"); - const foundRanges = sheet.findAllOrNullObject("Complete", { - completeMatch: true, - matchCase: false - }); - - await context.sync(); - - if (foundRanges.isNullObject) { - console.log("No complete projects"); - } else { - foundRanges.format.fill.color = "green" - } - }); -'Excel.Worksheet#getNext:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml - - - await Excel.run(async (context) => { - const sheets = context.workbook.worksheets; - - // We don't want to include the default worksheet that was created - // when the workbook was created, so our "firstSheet" will be the one - // after the literal first. Note chaining of navigation methods. - const firstSheet = sheets.getFirst().getNext(); - const lastSheet = sheets.getLast(); - const firstTaxRateRange = firstSheet.getRange("B2"); - const lastTaxRateRange = lastSheet.getRange("B2"); - - firstSheet.load("name"); - lastSheet.load("name"); - firstTaxRateRange.load("text"); - lastTaxRateRange.load("text"); - - await context.sync(); - - let firstYear = firstSheet.name.substr(5, 4); - let lastYear = lastSheet.name.substr(5, 4); - console.log(`Tax Rate change from ${firstYear} to ${lastYear}`, `Tax rate for ${firstYear}: ${firstTaxRateRange.text[0][0]}\nTax rate for ${lastYear}: ${lastTaxRateRange.text[0][0]}`) - - await context.sync(); - }); -'Excel.Worksheet#getPrevious:member(1)': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml - - - await Excel.run(async (context) => { - const sheets = context.workbook.worksheets; - const currentSheet = sheets.getActiveWorksheet(); - const previousYearSheet = currentSheet.getPrevious(); - const currentTaxDueRange = currentSheet.getRange("C2"); - const previousTaxDueRange = previousYearSheet.getRange("C2"); - - currentSheet.load("name"); - previousYearSheet.load("name"); - currentTaxDueRange.load("text"); - previousTaxDueRange.load("text"); - - await context.sync(); - - let currentYear = currentSheet.name.substr(5, 4); - let previousYear = previousYearSheet.name.substr(5, 4); - console.log("Two Year Tax Due Comparison", `Tax due for ${currentYear} was ${currentTaxDueRange.text[0][0]}\nTax due for ${previousYear} was ${previousTaxDueRange.text[0][0]}`) - - await context.sync(); - }); -'Excel.Worksheet#getRanges:member(1)': +'Excel.Worksheet#onColumnSorted:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml await Excel.run(async (context) => { - + console.log("Adding column handler"); const sheet = context.workbook.worksheets.getActiveWorksheet(); - const specifiedRanges = sheet.getRanges("D3:D5, G3:G5"); - specifiedRanges.format.fill.color = "pink"; - - await context.sync(); - }) -'Excel.Worksheet#onChanged:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet.yaml + // This will fire whenever a column has been moved as the result of a sort action. + sheet.onColumnSorted.add((event) => { + return Excel.run((context) => { + console.log("Column sorted: " + event.address); + const sheet = context.workbook.worksheets.getActiveWorksheet(); - await Excel.run(async (context) => { - let sheet = context.workbook.worksheets.getItem("Sample"); - sheet.onChanged.add(onChange); - await context.sync(); + // Clear formatting for section, then highlight the sorted area. + sheet.getRange("A1:E5").format.fill.clear(); + if (event.address !== "") { + sheet.getRanges(event.address).format.fill.color = "yellow"; + } - console.log("Added a worksheet-level data-changed event handler."); + return context.sync(); + }); + }); }); -'Excel.Worksheet#onColumnSorted:member': +'Excel.Worksheet#onRowSorted:member': - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml await Excel.run(async (context) => { - console.log("Adding column handler"); + console.log("Adding row handler"); const sheet = context.workbook.worksheets.getActiveWorksheet(); - // This will fire whenever a column has been moved as the result of a sort action. - sheet.onColumnSorted.add((event) => { + // This will fire whenever a row has been moved as the result of a sort action. + sheet.onRowSorted.add((event) => { return Excel.run((context) => { - console.log("Column sorted: " + event.address); + console.log("Row sorted: " + event.address); const sheet = context.workbook.worksheets.getActiveWorksheet(); // Clear formatting for section, then highlight the sorted area. @@ -8039,6 +8092,25 @@ }); }); }); +'Excel.Worksheet#onSingleClicked:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-worksheet-single-click.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + sheet.onSingleClicked.add((event) => { + return Excel.run((context) => { + console.log(`Click detected at ${event.address} (pixel offset from upper-left cell corner: ${event.offsetX}, ${event.offsetY})`); + return context.sync(); + }); + }); + + console.log("The worksheet click handler is registered."); + + await context.sync(); + }); 'Excel.Worksheet#onFormulaChanged:member': - >- // Link to full sample: @@ -8076,6 +8148,19 @@ ); }); } +'Excel.Worksheet#onChanged:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet.yaml + + + await Excel.run(async (context) => { + let sheet = context.workbook.worksheets.getItem("Sample"); + sheet.onChanged.add(onChange); + await context.sync(); + + console.log("Added a worksheet-level data-changed event handler."); + }); 'Excel.Worksheet#onProtectionChanged:member': - >- // Link to full sample: @@ -8114,49 +8199,32 @@ console.log(" Source of change event: " + source + "."); }); } -'Excel.Worksheet#onRowSorted:member': +'Excel.Worksheet#showOutlineLevels:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml - await Excel.run(async (context) => { - console.log("Adding row handler"); + Excel.run(async (context) => { const sheet = context.workbook.worksheets.getActiveWorksheet(); - // This will fire whenever a row has been moved as the result of a sort action. - sheet.onRowSorted.add((event) => { - return Excel.run((context) => { - console.log("Row sorted: " + event.address); - const sheet = context.workbook.worksheets.getActiveWorksheet(); - - // Clear formatting for section, then highlight the sorted area. - sheet.getRange("A1:E5").format.fill.clear(); - if (event.address !== "") { - sheet.getRanges(event.address).format.fill.color = "yellow"; - } - - return context.sync(); - }); - }); + // This shows the top 3 outline levels; collapsing any additional sublevels. + sheet.showOutlineLevels(3, 3); + await context.sync(); }); -'Excel.Worksheet#onSingleClicked:member': +'Excel.Worksheet#slicers:member': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-worksheet-single-click.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); - sheet.onSingleClicked.add((event) => { - return Excel.run((context) => { - console.log(`Click detected at ${event.address} (pixel offset from upper-left cell corner: ${event.offsetX}, ${event.offsetY})`); - return context.sync(); - }); - }); - - console.log("The worksheet click handler is registered."); - + const sheet = context.workbook.worksheets.getItem("Pivot"); + const slicer = sheet.slicers.add( + "Farm Sales", /* The slicer data source. For PivotTables, this can be the PivotTable object reference or name. */ + "Type" /* The field in the data source to filter by. For PivotTables, this can be a PivotField object reference or ID. */ + ); + slicer.name = "Fruit Slicer"; await context.sync(); }); 'Excel.Worksheet#pivotTables:member': @@ -8177,6 +8245,83 @@ console.log(`\t${pivotTable.name}`); }); }); +'Excel.Worksheet#getRanges:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml + + + await Excel.run(async (context) => { + + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const specifiedRanges = sheet.getRanges("D3:D5, G3:G5"); + specifiedRanges.format.fill.color = "pink"; + + await context.sync(); + }) +'Excel.Worksheet#autoFilter:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml + + + // This function adds a percentage AutoFilter to the active worksheet + + // and applies the filter to a column of the used range. + + await Excel.run(async (context) => { + // Retrieve the active worksheet and the used range on that worksheet. + const sheet = context.workbook.worksheets.getActiveWorksheet(); + const farmData = sheet.getUsedRange(); + + // Add a filter that will only show the rows with the top 50% of values in column 3. + sheet.autoFilter.apply(farmData, 3, { + criterion1: "50", + filterOn: Excel.FilterOn.topPercent + }); + + await context.sync(); + }); +'Excel.Worksheet#copy:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-copy.yaml + + + await Excel.run(async (context) => { + + let myWorkbook = context.workbook; + let sampleSheet = myWorkbook.worksheets.getActiveWorksheet(); + let copiedSheet = sampleSheet.copy("End") + + sampleSheet.load("name"); + copiedSheet.load("name"); + + await context.sync(); + + console.log("'" + sampleSheet.name + "' was copied to '" + copiedSheet.name + "'") + }); +'Excel.Worksheet#findAllOrNullObject:member(1)': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-find-all.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Sample"); + const foundRanges = sheet.findAllOrNullObject("Complete", { + completeMatch: true, + matchCase: false + }); + + await context.sync(); + + if (foundRanges.isNullObject) { + console.log("No complete projects"); + } else { + foundRanges.format.fill.color = "green" + } + }); 'Excel.Worksheet#showGridlines:member': - >- // Link to full sample: @@ -8189,32 +8334,60 @@ await context.sync(); }); -'Excel.Worksheet#showOutlineLevels:member(1)': +'Excel.Worksheet#getNext:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml - Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getActiveWorksheet(); + await Excel.run(async (context) => { + const sheets = context.workbook.worksheets; + + // We don't want to include the default worksheet that was created + // when the workbook was created, so our "firstSheet" will be the one + // after the literal first. Note chaining of navigation methods. + const firstSheet = sheets.getFirst().getNext(); + const lastSheet = sheets.getLast(); + const firstTaxRateRange = firstSheet.getRange("B2"); + const lastTaxRateRange = lastSheet.getRange("B2"); + + firstSheet.load("name"); + lastSheet.load("name"); + firstTaxRateRange.load("text"); + lastTaxRateRange.load("text"); + + await context.sync(); + + let firstYear = firstSheet.name.substr(5, 4); + let lastYear = lastSheet.name.substr(5, 4); + console.log(`Tax Rate change from ${firstYear} to ${lastYear}`, `Tax rate for ${firstYear}: ${firstTaxRateRange.text[0][0]}\nTax rate for ${lastYear}: ${lastTaxRateRange.text[0][0]}`) - // This shows the top 3 outline levels; collapsing any additional sublevels. - sheet.showOutlineLevels(3, 3); await context.sync(); }); -'Excel.Worksheet#slicers:member': +'Excel.Worksheet#getPrevious:member(1)': - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml await Excel.run(async (context) => { - const sheet = context.workbook.worksheets.getItem("Pivot"); - const slicer = sheet.slicers.add( - "Farm Sales", /* The slicer data source. For PivotTables, this can be the PivotTable object reference or name. */ - "Type" /* The field in the data source to filter by. For PivotTables, this can be a PivotField object reference or ID. */ - ); - slicer.name = "Fruit Slicer"; + const sheets = context.workbook.worksheets; + const currentSheet = sheets.getActiveWorksheet(); + const previousYearSheet = currentSheet.getPrevious(); + const currentTaxDueRange = currentSheet.getRange("C2"); + const previousTaxDueRange = previousYearSheet.getRange("C2"); + + currentSheet.load("name"); + previousYearSheet.load("name"); + currentTaxDueRange.load("text"); + previousTaxDueRange.load("text"); + + await context.sync(); + + let currentYear = currentSheet.name.substr(5, 4); + let previousYear = previousYearSheet.name.substr(5, 4); + console.log("Two Year Tax Due Comparison", `Tax due for ${currentYear} was ${currentTaxDueRange.text[0][0]}\nTax due for ${previousYear} was ${previousTaxDueRange.text[0][0]}`) + await context.sync(); }); 'Excel.Worksheet#tabColor:member': @@ -8318,6 +8491,45 @@ } }); } +'Excel.WorksheetCollection#onActivated:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml + + + await Excel.run(async (context) => { + let sheets = context.workbook.worksheets; + sheets.onActivated.add(onActivate); + + await context.sync(); + console.log("A handler has been registered for the OnActivate event."); + }); +'Excel.WorksheetCollection#onAdded:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml + + + await Excel.run(async (context) => { + let sheet = context.workbook.worksheets; + sheet.onAdded.add(onWorksheetAdd); + + await context.sync(); + console.log("A handler has been registered for the OnAdded event."); + }); +'Excel.WorksheetCollection#onDeactivated:member': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml + + + await Excel.run(async (context) => { + let sheets = context.workbook.worksheets; + sheets.onDeactivated.add(onDeactivate); + + await context.sync(); + console.log("A handler has been registered for the OnDeactivate event."); + }); 'Excel.WorksheetCollection#getFirst:member(1)': - >- // Link to full sample: @@ -8378,45 +8590,6 @@ await context.sync(); }); -'Excel.WorksheetCollection#onActivated:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml - - - await Excel.run(async (context) => { - let sheets = context.workbook.worksheets; - sheets.onActivated.add(onActivate); - - await context.sync(); - console.log("A handler has been registered for the OnActivate event."); - }); -'Excel.WorksheetCollection#onAdded:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml - - - await Excel.run(async (context) => { - let sheet = context.workbook.worksheets; - sheet.onAdded.add(onWorksheetAdd); - - await context.sync(); - console.log("A handler has been registered for the OnAdded event."); - }); -'Excel.WorksheetCollection#onDeactivated:member': - - >- - // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml - - - await Excel.run(async (context) => { - let sheets = context.workbook.worksheets; - sheets.onDeactivated.add(onDeactivate); - - await context.sync(); - console.log("A handler has been registered for the OnDeactivate event."); - }); 'Excel.WorksheetCustomPropertyCollection#add:member(1)': - >- // Link to full sample: diff --git a/view-prod/excel.json b/view-prod/excel.json index ae1ad8407..38e8b6628 100644 --- a/view-prod/excel.json +++ b/view-prod/excel.json @@ -18,6 +18,7 @@ "excel-chart-data-source": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml", "excel-chart-trendlines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-trendlines.yaml", "excel-chart-data-labels": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml", + "excel-chart-leader-lines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml", "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml", "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml", "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml", diff --git a/view/excel.json b/view/excel.json index 993906cb7..6c50b9c80 100644 --- a/view/excel.json +++ b/view/excel.json @@ -18,6 +18,7 @@ "excel-chart-data-source": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-data-source.yaml", "excel-chart-trendlines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-trendlines.yaml", "excel-chart-data-labels": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-data-labels.yaml", + "excel-chart-leader-lines": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-leader-lines.yaml", "excel-comment-basics": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-basics.yaml", "excel-comment-mentions": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-mentions.yaml", "excel-comment-replies": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-replies.yaml", From c35bfc2637a95bac2dd976a64bea46f2f4ffdb45 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 10 Sep 2025 12:37:14 -0700 Subject: [PATCH 47/71] [PowerPoint] Map for SlideGetImageOptions (#995) --- snippet-extractor-metadata/powerpoint.xlsx | Bin 16658 -> 16650 bytes snippet-extractor-output/snippets.yaml | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/snippet-extractor-metadata/powerpoint.xlsx b/snippet-extractor-metadata/powerpoint.xlsx index 0c93174817338a9e487c2870a4cf4bce763b78ad..d4a1aa15c7e22e0d62c5d7907c68075aec4eaf9b 100644 GIT binary patch delta 8641 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 HANYR&^hF4d delta 8666 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 bRtC2M$pZP{c_10!349gAiiRWe&+z{M5dshR diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index d7d069fb7..a8df1a586 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -17390,6 +17390,27 @@ context.presentation.setSelectedSlides([slide2.id, slide4.id, slide5.id]); await context.sync(); }); +'PowerPoint.SlideGetImageOptions:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml + + + // Exports current slide. + + await PowerPoint.run(async (context) => { + const slide = context.presentation.getSelectedSlides().getItemAt(0); + const slideBase64DataResult = slide.exportAsBase64(); + const imageBase64DataResult = slide.getImageAsBase64({ height: 300 }); + await context.sync(); + + localStorage.setItem("exportedSlide", slideBase64DataResult.value); + localStorage.setItem("exportedSlideImage", imageBase64DataResult.value); + + updateSlideImage(imageBase64DataResult.value); + + console.log("Slide was exported."); + }); 'PowerPoint.SlideLayout:class': - >- // Link to full sample: From f976b1b82482e870d2dc80a3ef7f7b580b587c74 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 17 Sep 2025 15:54:50 -0700 Subject: [PATCH 48/71] [Word] Update to use ImportedStylesConflictBehavior enum (#997) --- .../word/40-tables/manage-custom-style.yaml | 4 +++ snippet-extractor-metadata/word.xlsx | Bin 28566 -> 28680 bytes snippet-extractor-output/snippets.yaml | 27 ++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/samples/word/40-tables/manage-custom-style.yaml b/samples/word/40-tables/manage-custom-style.yaml index 4968defdb..8d3a60fcb 100644 --- a/samples/word/40-tables/manage-custom-style.yaml +++ b/samples/word/40-tables/manage-custom-style.yaml @@ -278,6 +278,10 @@ script: const str = '{"styles":[{"baseStyle":"Default Paragraph Font","builtIn":false,"inUse":true,"linked":false,"nameLocal":"NewCharStyle","priority":2,"quickStyle":true,"type":"Character","unhideWhenUsed":false,"visibility":false,"paragraphFormat":null,"font":{"name":"DengXian Light","size":16.0,"bold":true,"italic":false,"color":"#F1A983","underline":"None","subscript":false,"superscript":true,"strikeThrough":true,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#FF0000"}},{"baseStyle":"Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewParaStyle","nameLocal":"NewParaStyle","priority":1,"quickStyle":true,"type":"Paragraph","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Centered","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":72.0,"lineSpacing":18.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":72.0,"spaceAfter":30.0,"spaceBefore":30.0,"widowControl":true},"font":{"name":"DengXian","size":14.0,"bold":true,"italic":true,"color":"#8DD873","underline":"Single","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":true,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#00FF00"}},{"baseStyle":"Table Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewTableStyle","nameLocal":"NewTableStyle","priority":100,"type":"Table","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Left","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":0.0,"lineSpacing":12.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":0.0,"spaceAfter":0.0,"spaceBefore":0.0,"widowControl":true},"font":{"name":"DengXian","size":20.0,"bold":false,"italic":true,"color":"#D86DCB","underline":"None","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"tableStyle":{"allowBreakAcrossPage":true,"alignment":"Left","bottomCellMargin":0.0,"leftCellMargin":0.08,"rightCellMargin":0.08,"topCellMargin":0.0,"cellSpacing":0.0},"shading":{"backgroundPatternColor":"#60CAF3"}}]}'; const styles = context.document.importStylesFromJson(str); + + // If you'd like to set how conflicting styles are handled, use the importedStylesConflictBehavior parameter that was introduced in the Desktop 1.1 requirement set. "Ignore" is the default. + ////const styles = context.document.importStylesFromJson(str, Word.ImportedStylesConflictBehavior.Ignore); + await context.sync(); console.log("Styles imported from JSON:", styles); }); diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 223f0a5f460e3363fae93087e4f92f9e6ea5e75a..a3ceb2436882c3cfa68823042b63a7257a648485 100644 GIT binary patch delta 20277 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 u*jMhtOn*B$ClgRaN#lHZ3b>@Zu delta 20144 zcmYIvWmKHM({^!(WpQ6%ad&qpt_6x)k>XOkz~U~;;$GZa9Euhz?q1v}6nB65{m*mG z`}Lk=?#v{aQ&#Gv&r(z+>Hbdg% zrl+oW=sHzVYGvopX=be57P)UbJrQ5Ot7E~iAJCz-OaZwCCH7ZpTNnHRA1thZjC7>xxRDtbH39THx63&|YR>Y9@TAts3lBeYEJB$-7Ty&u%%!a#mH$oDp95M^Lp| za0HT>{l%CtKE`z;Sw;IG5>T07Hh67N><7%!W}MVjEF4!f_|A+krKaKHOIR@LNM`> zJhKR>7u~_Q{TUZ{UDJ<21xLL~`%F={8x6wZjX-;sH-)NDxuAsE{|F`(bNw=9*-nVm zC84xn;qe@jQt|<*4t@T>ik^1@h~J}maxW5MccjmPe%4xui3C&M~iumTICTxCOy-ReN2tJ*J`c%Eha#fH~TJcda%1%gU^ zH}WszU)C0=W|l*$26;ZyYUj*MVlW0}R!YwvWd}UAlE*S}rOqK$YGVnB1?M*lP)VrV zDmjlK{{n(%=}XD%v!YJPI^l+5OG(Sl^R#S-Aglq0jn1T4RW5RM7lk0=2Ut|5XJ}Ms zc>b`KiymWVlEyN2LB0jybynQx(J1{X7FecPLe zH5H5?k(E{&(&6m!o*`~D?!$GJRkR0oGiQ^yD62|_vOvRM?9_C}aK=oHj(Aiq%#zl< zcA$Y$kF?`I2V%@H9p3Fw|x~9s{ z0zX6C7p=&x^j>Cux=?-YmiX!|CVsEqs(e|d2uHW9a})Ci0$;nWpA!b<;&?Uj)e1~`irl<>TeCTiT5r>h?d+vcOCcA@wE+1#v&Y4Dp)rMehH!L>?h7dqR zz5uum%(^25?l@JiYB)Wi<|g-_A1GaFENrl8=$G|(^*NhE+C0wQL;x;Bx6A|i{~L;X zjTtgFCE;&u;ONn6+T3Jo2coFMMn()`GL<#FpYEjD%K`sy6D{Z^Wiz0%e4{)Ib@<2a z44H)Q`~dcv)uT=(%7&<-B*f{bxx$fG;ew3!SUw>vh@~%?kdbb&b#g^@a$L9i z>KZcm;UB3!A1BLjz5~dudQU_C?<);<{Jm;37m0F8+(H}CfdDbJz%qIp^|z-Q(|7`2 z-~UueD9CMIzXZ>lKH-KZF?-MBp)pE0$W(*4R3wo%yeIF(ZcuEYJPakMy|!<@7Jh-@_eKM(6z03WL|hw}>_Zk%))8bpfvikDb)??H=80gK zZ9OD!Zc@xtA6@tRG*MMLNxbgG#f=N{U-EoIEYZufzzw92v3G|JF$5g5rv7+$M@zHz z9Jqf{J_3~yLr*IFMq{2w+2|J^t5f?`tVL>m{`0%tMTN89`1>daAC6rq zH&L}w!++?$L2h7TXkhvY!@=6WLHs)4V^%R_b(h;iZ#9g~fXt&4>=tUxcXowUk0fwZ zQ=p$U){(NW5y2-EB2X14TqP`Drh~LjB`R5+$wqcmQi;nZY~lh_>Bg4Mp6mI9k0c=U zEXH}G4MM}tckiLyBr(=GleqIQ^vHK(G zLOoN=-m`Foi~3)4Nx){I62}^^T#Df@NwS$d{l~cDy4?t`S=B@D6gb;atmD$19cW5J8{6V$$`b-Vdo)7dh9cJX*_H zV;)!gMN|R*vhF&+cdgX=)qkBs{cT9JOlwpbRBCd>Cw9cARV=m?Di4XjB6Wr+XW1gH zFF4kje{~k=sl7=V)kTW(z&{eu|N9uob%VI-Oy<07YKAWjZHsP_Z_zU~&i0&Jk9B^svU-=4{%H56QXFZv$(T0#r9Gu2nC z`X+_J@PzyPRQTo`4ZL0)S4*LyT462JdCusqlwi>^n6GF8E^0Or0WdheX#l%aW zvahw$Hb)eU{hLKnuXT8Uen*vR@RzvM`UIkPtXgSP1U{Facw`@xSD$KZADq7|QEMci z2H9=celQwT)RFPh6CY(Wdn{&O4#8c2s7U$tm2o(a zmyX$oBJ-V%CTS27D|#Q|>fhJvhuJi`3rGp_mT(l>T%6!c)T1W)h^6-kuF6Tat!`dd zeOu-cWG`Va{rH$u&Au;SBeHEDTFHBMRh;P2>XpS+p87timXHv#iey4_!C7V9Lv$wx`Ft|2_)-urNOufFL$uEVlgx<7Aqk=~gs^|WS(~qB9ve>w zz9tZoj`#4vVra9_`iTR!9&J+Zc^ovx?ov-AEK>XCd`ZqpfCiANyh6QGPEQ#r!Q@9P zW+nN9lS50o?2>0&*;>GNr&U9@w@6A;RUB063@9ICkES6Pk*_G8A_HgOwLR{%y^^Nn z01$!#LU55Gm-HD3VK&o;0 z0!oqW7ayGO%Dx&h3?1V=n^m>sX;V!Vtt{4*p;OlK%$oFi<*Ued8lOLEMy>zfIplB? z@hn-9`rbLIN@jBz{4L@#>XFb~2usuhuN=^F57B2cb~@SGaidDPOFeq=yMCGcT4#BE z#>_1nIr%tjD*!Kj%5rc+iQStr;y|V@Aa;`*Br68TN7yAlsD&`GCI*LlI!7~|HAdk{ zh9@v_&4MdmJ0;ylvibg$MV}nmw>D;wfcIc%H5^(0a71$JU9=}pPu$wTih^m=cmIkJ zP6%~MWyAg9EKW-WyR(|^omdZy*<146wUxWpDwbi@$m*=J2NC%{t%;R>t7m3f@Lzuw z*p=0l)+!rpen8Ubq{O76ZBp5BR#B=`{!R-iVXe3|)}&&@vv^mTOy28ib-Zcv7L}u7 zBT?j#yS1=sUNX4l8F;xAq-INoE#{q21NnxWtA;xm%+{!?kw=4AUV z>TCJNl;MZ8DJG94*bIjw`FdLCvgFm@lHMk~7TJx-J2grFe!EkjlRf&IYbuug;vB6}c@l+Zr=1mB*V=4hVA;Yijo)zsldm`_5* zQmKg8aC%eq9tkVbwV8`@B?ar%Lyq|Oz;GrI?%1>RvObs{rM3#%suGUV&%dJe6}RcU zwys20vX5_wG}1m=`gLUq2)X~H)}o%2ObaQKFsp6Q{LPABhydq?5W>bKUFV^q6RhuyAUlOqRi!Sp0TNx=`ik95n6 z{XhTKLoT$VxLEkjDMSFH9?hJ~%Avm<2*j=ke6Y`nrEZe7ziNmyjjZ#qv+5UUXY#@M z(9xLE7}-=Fm_zWPn2C%4Kq|;VqADIw6uaf3At_Z-V@t6lOTKLCrmiQBIJz&S>Qnc8 z%JOWZ>f=)qIU-M$J?CuhigZ6Nu(1PLgh@VU#Rx=f8b;E=`hgM+s$zA_>5{6(_O2A6 z`+?8A(B9LGokh=Lfm5UbEomM)9g9WFYpnfK90I-?(lwqagR0Wovc-w&oV zetb`AE-TL<5E2ZCRpZC|GaX~V(b*4BpW!QToz+^1f;4xghQX$WkVwA~v{`x5Lnm1$l6}4W!$zgKieTPz^$VdrDmTWxyt*yL z0f$=QIs32*4>;R&rP*CX8rlJM?q?j&&wR7Pj~JSzjly#k0lYpCZic?6-Z-(SyVB~G zXO6z;`C)B5{By062-srmOqt~0FogivH@@c(NLhjInnmPI)m#NV<5sZ>n2RH^nUkZD zz^1s;p(qwAVr)iggQitX`bnGa)= zfAJ~&{yhHgy_RxbN_A86-D5+sHSMhohxV$kA+z(C1}nOauCijc}(R>v0mAy%r!1lcax*Ji#OV#c;YL&kExaR=%?VQF$i8A^zF;uNN-;Kmcx>Tpa~HdNf#@?(2uS>ZQR*pC6WVgGwwlLlr&lXYcnUsQp{MPdQf8p-Su23+QBILhjU= zt?^ztW}jbd%N-4C3dGj3d8pAso$T4-CZkO_Zi9=3|By-1u^8X@6w2ar#=JL>5|B{j zai6tdDKoMYLm!;bGnB-SfuEMpYRi%fnv_s!ayR5gA5v8eMR#(>5;Ja~E3=&VoZRGM z`Mc@yfR<;XKvK)@PH}yVqbY3C7qYKKauWAV4FH0fy+GB zk+`*7B@exx6p(RLHWbvfF#1J?=1L#d>}7Ozz(^AIJhqLR55H>2kt4RoH>@EN1+OJ< zbl*j(kg=^ZWLSjm!c%em-+|IOfE z#@UIEKSzK_I|)@a0wpTKN=--?Y;&5-=qJtEWx==a51o@30orx2{JiGsuh~U(zk=jo z7b{?oKbrPmtl1Je#MybT;F6P$sbnDgj+;9X7KYV2y)0tz`d}XQfh5+e-`AXjW#Oo{ zfn~aZeq!j`p9;vBveXI!hh$@WqBb=pF~I1kz@xBCl?b~c=L&QodyJhvBu_;6I-Tx6 zNq-FP#ModLhkaf~O*fBHk)rbzyVf4La)IAug9ctSeU^X-)ISqrkyaG#$hrk>Ehky;y)Moa_|u8MOtm1F30o08X2ld>4zWl=9l6nz@%QY@S3(4!MYeL-KY?%>xbCYx>&niz$rJ?*GS9@b zA!=SIW_mUnTpzJnGDQqU?<55R48b6VXcR;=dV6ZjT{fRa^xGpi>dN^R!|arK1_&H= zlf(Jbw6q#N4r-m+yfmQk=fH-c@zZr6YvKo8XdYtdA`P67rYJ~RwDFZvEZkeZ)Ntte zO=`ujPXYk~8d5wB{{^%;ycuAeDi{t(9vG39du}eSc)@>j3%^5W_vYqN)Gd+G>rCud zPy_|E79e5_e78s(EgR%87z$xlYG%U?qf`0=360eOu7~&vqbVXebZEa?@?gnyWaaGT zjS?2|vMV>(05;!odvg20rR7IlAvKwFLkO|o^Kp?!_PAsdQ(_ktS~^)(AOr|9=NnQA zrMaW3V+YuCEn7ZD2C+x+I3T{c7yD)ruBjmbuYX&LaH-aXOw-+^6h`k@BkIOp&X?Rx zPEU@B0%v7dc<7T=unB6#v}`7o^Wjlc=*;)quTrUgQ<3xp#^YWm5Dd#rI3ZNUH}9Z; zw$stOM;0KQlc~~Gd3t4Rae=b&B2)_=p`t!9)fHS-NoV1?Nm6vGax>oF%Kdp78X6MJ zU+PWg@aVH)1&kaW1k*W;wzI{qc$!82pabe?&~1gw0>Wv#+G`SeuyGe#96V1Uj=F*~ zM!62})#s!cIvH-UJVB^13ufAxVLr1|sH&Hn!&w4f>XYxViJ41~q*Y-1f1}XBF7qcnzf)n4i1^fvmu6 za8hl?1m0^n_)?PGL&1S%Qp%`_LnRMfIPe#;Kt#k^P&OkjVh_mG?Cqz`h^HgW;LBRR zD^XMhY()T|VcU1(S`rsg8dVXXP%uq}C*9zxNNGv?c5#GAlPLn!l2PHULHb^1K1%Ys zKK8y;BkMq=rI0ZU7FNxXkd4EAIw=}*`Mm*h2A2Jod+5nv6IirIqtA6Gbcm9OZCk>v=Y>J2jIOF&UUSWLv4o-SWo<}Y zN##2r4hR7v)*Yw@2WHn8<{<^K#>F^ZMPnC3lZS$G<6be5q|CmtB1R{0^pSaZgkGxK z`Gz2p$4KBRGwBr!5lK)$_?Xtb4=Jhb-e&k3J4e!u^cB)DYFkLAw; zExWb~??q)%QJ!YTlv|S!viYQ0jF-(gg|-++j1cbDiKaEfuAhfDnEIZZ9EP__byIbE zZmDn3+7df5?meGYV8)f2-`>B757QNzyxfFpNNSSYSV|!A0c1q-ic9$Qq&68DAXHFk zATx^ZA#0LG5Hrr${Gfh8K76IkJ`N1m^{cmn6dm8yicZ}XrVgc=;qBdZ`zyF|Z5cL$ ziBu{;GAPoKA^q^yn-T%G9rCHYl#KuZ))6w3bsJabK#uvvI82T|bX7UFv?8l+{DIV$ z5(&0Lt0`&Hw0x0N?3&Hk6z>Z$r9cT48&ZUoLcK?Va#2FTPYROI!efohXFrRAERK`P z?La6)l#gzG5cH3-f!0^^vK++Foihi`$hQbRtBUenBChb)XxkV~T?!YQZOHfXlNV!rU(9l6%0 z3U!3pJ8866MK{=;Ixs{dSJdOusui$BWKsbtQb~%uz+|V;z;`$o*R10JjFGNv`L8q1 z+?{2NI-reL*hE0zt3nK>%kmlDZeCd$#~b`|e-Sh*ndE(b%w6V+{AFBXhTYlmoTC;4 z(`M~}Z}AUsVjCvr^g)y|Gz{iV&PafBi@{xFm_+KURQiVP5cEI$HZ#baFkA$JzF1=I zNU|Y=>zuh%ublpP7;1-y23MhOGkB%-Czcl{Pg1&_8pqrlfAV*#e|h)?OAL^)EOCf#-C0 zQQA(Ryg*(^x8O@X?kk!-KFYK2!(Uh>?o0hYYBj>qc4cbjb%Rq3B(bYJfa;cnTf0`9 z(S*;$?3~*yL{HKQe43ZxH4r>JJpXK}AFd|*J-iWqC#31Z53L6c829e>F`3^-&*Vd#(1%U0U5{-jh%0#=RT|M%afhBOk<756ls7DCVAXVCAus%=PdH5> zynYB_WASJiz#zl~_>+mjVFNngls2r4?;w8e^ZGX)UO(Uyjetd=)N3Y~@phZ3$Tf-C zSCA3{2>6`R6Z6OrgcoPVw5q`C`0r-#bot>~x&No&45IYNq-}3ElTzx`lpI zH2^l4mxXrM;McUM4N|br;o_sganZ%=9-cq|uzE#hH-5}8E>Hn)@lG_IGSOiP>dyOE zxTN;;OeuwtlH^4L!5MkY8;9ZjC>UZ;*(@}fMJkaPMByPH3WcdMZPel;$Xcc#Egqz_`U z%i?P5TQr%f{;wrFL;d+XP0zS4#Gt^HT);5c#FtwpS5ku&+0uWh;n1cPY{#exg69X5 z-jP!qInWOQY>Z$(6cPIir1T&ZP8-Kf*{fs=bC1W#e2Q(9{Te3M`S`FOLX$JsL^N)_ z@X~iVVpSS{2A~Q+Ix<4Q1y}-T;mG{j*fM-NUU;1dKZ|#HlL@_9 zY^yjFp09u(2~yP$t#`PPUUh)2M&^Y4UA@yRYq!5YvQr!?Q4stDgLE^q`sFeXF+@FK zE)7a)v@xzMCSj@!|27OoRa^qo3xy;xN~ILrh(viNqr(poSqo8emVfc<(5TcZfs<#d?aMPW2Tv*}nS56g@9ThO)i|WvRRox=P^uV9s3p`oG zHId(|NO1F!PGdvq>Vj}JPw4NVHE#>6$-Hd!kR=&p_HzC(gNy>4Q+8}P!OLZ5~}h#Aa7el^0M15f`cK<%RV6V^uT`t6|RZ0K{cw< zX{f_Fv@$(>yO9q{(?Q=njWSwyEKiz#;aj_CgBYi&QHPHK)U}xnVBKB~E0lOg^t8}e zRCxV?-zAa_HpAAWkNS$5YhV(sGDQNh;VxW9(l)N6dJ-lPGO(c~DR&VTK<%fY(D`!v zU2%a!mKubI_c(p`zP2FZgfcTRQ{&vpYy6QdEnqZSDQ7Db`sNozX5Xqsj)J&_Pxo`{Ef@%y>72Oc0^T9 zksuUcM$HSuiF<0z^ae0`uST0O-dFx)K`0{1b7VS(?nm)Fy7F{GVX&4R`AdK@xFi zEQFbB*q)}@e)6!(4u`Ui0gjrccfBl1MBNCqZd9(H%-q}#c zOq`s6ZdgQ$w6nUM{#Q~6vPBQ2{C%hD3Wpja-2o-;v>X#1ExkEtK#dbqfq|-q;A)z0 z(;P%^rkSQt*z&bhW|;BquHhfdRBA?yn$|b(5`5C}ZMEeI%`?Hu7T$7oVI+}v6T0hX zBZuS9u#7O}<>rZ)6)5)QA|>)S+IbG~t*(o-@SBQ=&L3y}-yI<|>r|;?U6NZJcra8H z+ep{i^-1?2}nab7#nJacC*{J(yoWBRMq zl>M5)p8Oek@Iiq{QX}B@0$sJ$vg1{~g&J2{N_WibO~c-wgb6jSQz$L5$!_a%x)31My{MAiI2GU(awHWZ_=6aMbB| zA%{uX9^@Zk;GcOHv9Dw}(gv(CZi*TV@Y3*{>hg}MLZ&S}?(7fpA2DqEwiCbH20i8o zC=rgY$X}#&ASz-j=8+#P38TwcwW)4i%0{Wi-R8-@5UI^*U4oGM9DZs^3KjXgecRWR znQpbu+2#Gw0v83(^+x+uaeXzA{5h0S<%I+z3@zU5Es56&m!4oyYDDVUR=_`# zx18+$2^ov=Yh{2-k~w7fkMx7$)iGu_s5T(=>?q);`-o8IO6WAQK#U?C{*CCQSqi>U ziPU8fUKZc1%V!32N>6M~eC^C{CGF9)a&w}6C<^pYccfq%DaqjGZo=m6+c~DtUHS3K zdLQ__WUBG^6XY-%+XM5jAblAidL0Umc5(v5bT0zl5n9qsxwC`mrod91FP{ivW|9Lg zWkUpW%Sl3ryW;(W1P=C;WyO%x2Dr9O3Roj%Kalz!h~|IsEZy2aSMhk*e3^kVx}Ot@ zZ7f~OS&uNFQ|~4lP073_vRQ9+(FIRfx5OoXdL_Y?eI*%od`g_#YcI;^(Xe88=MD$S z!e-S3Wr$~!qgFT=^FR7$RKrfUj}(N!$!_0D@$;8v83~bgzG&EP`+ZZ$S%ttbQ9~rF z-nhISoJ*J>x=bwy#MdzJsI)C8Wx?C`sHY5Klt4{Hv@n@|Z_fBt`l?T%XC|GwX%1*SBH_T1`18qjGp}4vjkBH?;$oT_%X}Y#FYFZ8o^}zQLZcSGHCyY=3icC z88vLhBJzX#jlfyl-XM3Uh!0Zxm+dZ4D@$@ZR2dK0$gUwzPa%u1pec=GA7>4cZI+RE zz(*{R-3en%IWM})qSKjh>8Oq$tx2Ka57Ef~1Oc*INbpje`q^g(Md#8}k^qQUGN!Q7 z@d7D-U5uI~JT8;y2e1Z1kR){#NQUe_s{_kG+zsQIa$Q&HaSU&=_5VP?V- zbHGjq^+`g(G`}|y&jmrY_!!^iZ7X_tl5TIs8#2*{e7}I~$I}C8448>A8nl}b47EJ; zx4J>(cy#KR{s)F!4ZsjK>P#xn7Bhj#cr!h=lU4FQEIR}vrnL(*9utp7tU`?q@9T_^@ z>2rTePg}Q!Odm5NOWa@bF6MD3J!5xO{*^n&Y&wHPki!s$=q#60}Q63ohWIg zHm4F%Aaao#q{+ZA<1*X<8d(*nH*PB(pOdSnhRsyOd*vc48UMb=C0N!5SUHfu)0TQ=8eYx-XuThLOWWpw zF^F5-)X8XndI=W3Kd1Y1p<3^S&}fhpc)xQHE(gv?}OY{_&}t(zGL}(VCSx_t0D;< z-dpC%P!KsD^MR?DZ6l5>3SQ=?BXt9NM^UU+sQ+L=vA#BQVX(0qdm)W}1$`lnRN@<# zktPRmyr4O9G-rY+5NLCvr$2|RJZO*>I|SKI&9hMc{w*N?GmfSq$5oNMcu>G;Au}1y5?9ef~>^frQ(24-|Z8gBKO`$)X zgeO_pNK0x6v2mMSd{TgE8)3;uK@Xu|@HYX(VkALY0jZdrTW_gBN(0BR@Aa~QZW&&a zo!T+zn}*yGKcqQ5;^VxCKrM7v(@ha+x2AjvDF&XMk=C)LLFF?rg)yhbdn1H0x5oq< zt$_T1DS;-Kk(IK=0#nC$0!4{bE?G?vF!>|65uPQE<(^7qnbDSovrNc?A-GOfcKAr?GUElYnI<2NYKprwHCB0!U&pbj`C z`y4#UQjn>I-sp3Vnm9@~mprQdK|vJCa&lVpdJfe3DIplygdPK*IYHxJX)_JAQ!2k| z=1v0Q|0R>1FVd!NjPd+dec|zfx)k!?f%?PO6MLxS%}eDpTgGt|>qy zPg<2c#9iBg9jM*#8xgl@=HaGfE+u*L(e6(AgP^8Y1PI7d#l(5J#z_KHA2M#RFXIcECk;2i#-%x9>(a*1#D162DOZZ zxUI#|tO(ShlAZ8e$SvyVht#dxR6%#c3yh~X2+5WA?JW-r)aS*?j^ZxLg^|6{hIJ8% zvT*t)$K^?0p&W{Gm%K@cztDL?F{%7KLDEp;;pYy@ku zh7bb(TrSROSQjGc{|=~!cPHuBJ&}kC2)-Al8R~gJ%ZKE!cVkCYCtENpYezfChgyl# zr@>DX>?7oSlAA?#fXip($ftrC4dD&FMO3HT5C!*s{KoSszhp6I<%X|-sT33kv`-*s zW-O-q9Xcz*@H!gaJj`TCq|Nu|pFtxlXYRO(-io=%(%4bWZ&1Zu8f>BXijyO@GDxzlLcovBCKy9`+# zO!n`jd(=SW+tojEcG26grtY zM2D3=%4=3bm)&r>2A)67+Sx~q9tDCG|3X}cq1-C;nH-jzY2RSgS9&EfjkiEAaex&u z|5KullloY>Wg$(QS*yWFCkq9-f?F4WDaml5A2oIQXsF5L$6%UHX3Y$6QRAP_FCOB`9`^33QIL)n z4*sGWEv12YFTTSgk$ac6HOLdD(Jo3H>z-=6z-us)XhbQ>Li*7Ty-g{-0z27yx}RS4vs0#63Fi@f$PcPbJ=*hqocm=3*M=AEH)-=c1_k`(yLuS z|6vbZJ#`E@87?<+j=X(8;SP~3IP44~m{gF=;OrQkfyYLX6vw{#voYZoYoQ|4`X}#4 zOP2G&FEa%Cr&-EJt!XP!PjK`YTJLQYOB9g$+;Zp%B7x{I8)P>bK!KhP2c+K;hU!CK zW|@MRr*HoQdfU-g`%teP|A(SNx{fhpC>Jz9!{~BTzeGAV+>h?RE(;91atT&)s?LQn zDxC<^CQ+(su%a@{CEPbygrS%-CB4Vjgc%Zwf}>y=J7~6OU`6XJe_OP=^0&%3Wt(M{ z6+|Cmsryg93JAsI<|co)A&4oVJvMp28gkKZT>W!e%6+oE$U$ItSX=C1m14aL5jo0a z0aJ@(wb8z+!6k3{@8ne}Q*75CbSX(%au{n6Md+WD-sn~o-V5tp4}3Of^`9pkBn&oi zjkckz6O+c8mN(XkUsHG{H_W84D3TYHsS*8Oy}oztdTJmlKxo6RAd1{GRMZH#7i=yy zn6lhHI@ppj@7A(QDoQ($bzF^!xtM-%rQ?UWpZP{HKBT)goTmI+O}}t-s>xL-obT)N9?_63)#T9{gn> z(Uog}?hA8ib^g$o-*W*W#0WJU_HE-9Gn87mLX-c=k0E_r{VisOYG3CkrTPck|Jvf9 zg_0lq3;{1&VW5g$mtJEX!f{P`A(XpGrO`m)>BGY2 zr!ukKX!VQK{#$6vKu~U%WRYnCk-G*i%N_maiB|H(W1(0}?MU%gzvS$o*wn-YZr8y)+LhgeE5QpEtt0cMj<9 z-eJ9a_s-jat* z(SwBE&|T24g0A%q0Wx*qaetU*l!ZX+B_gfz4j@hR*=96=K(2KOH~uNsphK}lxVjg-&B?Wlml*YjfJonIDXqP-1sPkrw-;baQKy1L0otR8R1%m!tkKfp3 zGv%U1wX(#u_j2&xqs09SW18dxG*at{q25br-=K1f+NJz_5%KQB1fxX{w5^BAz$%?Xb(iFmu(A+awPQkDX~vc$6DOzh2k4Zy6h`O)MNRKe^?HL|^% zCZx{WB26NK1mSPwLX^soK_V@XManWWTBo`JNWqP5(QaOK=6C4aL5r69KyE~-K5RM| zV?HY7Z)`(~5N!?|6~XGszaNQT@4gpvY5cNU(`rwF=gEpI>~DGJMcT8NV_Ck2+T*!jOy|a2?xxsszCk?fXMjUR@jT1R z(m?^uh3Vbe#GlA!#jL`kZMf0Wk6pgU34w8MCN;kci?abmHk~aoKDN^ZGq&`mhVk6} z)eX413xWiGr5)%?p#97JLRo+FiKA(JYRG_0j_Nn=0X7+v0nL@REV7KO2p6owTw6uw z3cLBDSGM@}Xq&N?Zuf93#=a^_&PC=fLsR_xStPcbXlHuh26a- zrCzyqlhAs5SlEa|2U`8om~VY~sw?TbU$!Wg$r+~$2g&C%%cg0}TpT-hPcXzQmEd#T z`IT|+yJMzXE8&E7OGR?s1y|tso;NQ0-h#fKm11kg#C)@UifW4ukvM3JQSs?RA8bN5 z+>P*~p8DT)^6V%UMTiN#yG6 zkdyrdRsS0YqmN5_&-Zx&-d_T&Gka2XF0WpmjxIjjq+QmJ@2h4kG;y6yc$J8}-uIqD zZoeNrk;FQ--tOCQ{b*;M zDT!$Ju~-q_{viChb#=be&OT&|bf0C$zw+tf#uE~=)jk{~Y_+{t9GY8@+ zN+L1W%o!I^&973cGZPf5EQPueIo9A{u7^gxG`-yZ&JdP4wmVEVFl+QtUG(i`{OG@r*ESOjq%4oK|U|#GTM2ih6OChrRUM1 zEtb69aaXs&(zvIiF_%dZL7v2X$;g4aZhGtZ1^i0#Y)*BulsYpx*h#Pa_UZb zlk%W-dBa}~ zaqFh+!LY0G06~$+rqyG4e>YD^p>W!87S^(cupKd?_lFAFAcdQRhK~foJ5xfzpE4V} z=jzaGBV|sfth#r2oO$d3Z21gwGh;3;X-hgy6-FpuJ})q<)^)}6tc3sT4??aB_S4n< zeLQ%jEMgU0>ARxah?3^&uE(K&YI1f%O*Io-S0~@jZ#jo)e<&YLjMc;dNwSCs?QmxK z;echQwyXaR)8^|IG^>VBeaGfmqDM!){WSk4I)Y&6?71htTy&12jO=NDSWr-0-!X># z)KdSev3cf-PE#+|IEaQXYalbn1?HgM8s%!*Roq$ zDs;8EOt670YP7H9ES0Q5o;5vvykGfT1WGzu!WPG^W4-9F^C8gSU=B_f>=SCMLrh!a z*j~y8@hUGj-Ese=`Nml4D_$CeUtZ~rzs`dynNw23k95_WX8|XD zZCw~^l4!D$>oDh-r8CR5@TT7?D#78uEgUb9w+p1tt!Qd}A=^V$f77kRDSvCf=kq`d zavl^et~}C`;RJ;*HvQ#AL|1U=>0Ai`%C4BHc~7Xu`fGi!G4R-ei=f0VRuuq9kD52E$A_8f8*jg-oc5;uGJ$WBPr# zSya~<9fG=TQvp89Jkb$}F+vM9ltBKH&{zyg9IbS2<@VJQgkrOftbk5cWx1!FDNZ&>As|+WkRKeDLldGSbOFrgbklFKOu%g zXac&YH*G;AwARx!YGu|jYIHyepz4~5Uw`x(8{JO}l zD(kKCZq&HCt{j*(;H#@^CCq~mZfl8|AzbIR;b0oahp39xk=OJd+kmZx;+;02zU2s4 z3_HiSR?Ny)Sn00-uK{!m5yDeC@Jh_aiYq60UV00<8~bpElQJ`kN3Abvgd&ksZJG7K zSO`K?_d$lF6Ok>%=ebk*5C{I9_TR4A9_mfEQEKw+>FO<~SDtY~P?ku$=Jwed*oYQu z&mF+G>pD@21X&G$H=>QW@M_$1Ge~c{b2gjJTz?(mq70$R=UksUpkN=yj!dQT@0LkZ z5Fgh6?ojSIn&AAo=Xu?CU%BwX>n#6Mb0E_aG7TS)BW)imDLwI0LVi7i9t)5ert=e`%zV(eyyYvc+zhqC@?b_(*;N3b0x{$ zc-F+{Sw)+cGFAN9Bxq8E$k+&$fO#Kd?tOgM&IytxEV=~=|EuKkb9xsyeaOv64I=Uw zCS`%evq|=5!D`SmRHv^EGp80Ki|t$iY6Ac!R~INseu@Hn6q_=YJ3}bWrBrEa?UdRB z9d*N&X=kIZrYggrimk%=fy$z!If0rnAvh3L>axEnk~uZOSj5YyMrtSjRb9AtcpjF1@j1ifuP%Y~JOkhi0L5^s}%v&QgyX??6aZGYc(<;nHV z`Kb9Sg)Mc-Ulsh>!!Q_CU*%TZ2(KSwKMo9iFp0ezPkpS!Q;R_j8<0Y_-tx0^z1#K3 zdKZXR3F>v_a+TSjHe=LvCr*|1fbOoUKPM6&-YH|#bSq7goZOW(z1 z3g`y^PM&;i{(T%pA3$?2Tv8BJQ?1R+cziN>+HPOtv=baARHnlm^1utv$p?1oz}5#HxLo5W**zd`%n%X4dCthp%7P^*VmK*BYn(!TVQ#)U>R zWyaePp!Z6x_)>$*M=V5;Vtc8^xxrLoxOt>sM)ydu!D{icVC<$ta46)0L}va?6V0e& z{@r%@xQ6*acs`Fw0isIbp-lhzSGs-2vAh0(80@>RjPzA;Zfc&`fheppR|IHBfJ!$= zp5*07M?9*QT^uoe=32G0eI!Cw)8|$nredejHI=6-Ym{)@0D8n9yFk*HJ3voRN1JX; zkaIqXm!Ew_wJ#i_v3t2PoF+0ybpDfbETZ*k946W|ia{Z}1E=Hiz`DaVIoTyM`9r5(Aogni z4vi}sA1rmXFUU=e{0!rVkgf>^ook{M#Lvh`hD^cTtU;p9ypckN(Ibo+RAg+=e7kEj z>(C)fZz)GgjvpE{FbjP(`)-CFP&5(#F(G#Fih>D z7)3ep6#12kDksJ0#BAXb*JAsO)WtBmQ6Kv48XEBxefQFpzTJPxa;2fc*!(VI|M^-pcs1&gX@b$XSYmSOUOTz&+3K3_80y@8U2$Y%jU(owEKFgqe zhcyKk_8fu;r@*PfAC5EZ-fpgs3S2^oBbRoJFhlGvHTuuRqQ{Sm?G>7D74Ec-Zzz@b zT96qR-jzxoWU+7V%bq=Jd#xC}pDsHr=s%XNx9!h}S7SyXiVSIFb*bc-YW6zAupq6o zeU`dzDZU5Vk zaXDnfb9YY~-IEpg6GfP_o76P(m&}6!6lG(Q&Gc9Rcc1BXPGUrp^L=C`rByafWZ>t_ z5@NL|bJJ^s4@6QF19u+B3IX6_JRw4=+)O&@(by= z{gk%fpvhXIAq2xwQr5JXHJrszwjK}mrLcX`k|*+w45EA_TJPXVie->tmgMuCbE9ZRrP$ueV1Q0S4jbAJngPuaXI;I zw}Kx;3{rX7->FPu>#z{wz@pnM>L_vUpKU{YLauTg`RHAkoT{g?!IH`wQ@c*6h5&0$h0cr{24a;=6TmoR>Lpo4f0TGA_)mk{OI%Gx9C#xIG zt?X(njGLVc*Dbkn&-3)_0{QZX;}ttIF3Hhpf}&+2m7o+ziieqABCEhF0>i{R3Hyxs zkHvJLoq*aCz-lc~y`K7dWUr#oBXyCiJUy^RrU#xi=1sX2;SbN*X5(|za2wn2Ctn=5 zmg$q)2OZwXs5~oqT9R+{{OIl=36$WDS#8dss=#W20Ym!_KJkDuOlK=$ke21*kL%DR z(f4C5V(b;QWPi<`NCJ{Y%@q`C!XBq9I>*pfo^F4$#HEMK&I9AmPEeWV7M0%vsYj9!Uvl{rSBUm>;c!n zKcJ@Wl|2U##CeAFsjGG10iyIZdxhzu7Qxp_!!NQ+EEY&SiTPjnuuAF&zZzaJ@tjI_ z^uIVM*)@@d;n%+U{#={atnF7Y>86HRO!KR8#_0p%W(thHz&mhnzQMuMB3x$1cZMb* zcOTO=Nifc&&D>aHyzg$Nd9tK2Vu16l_ti0s7g$6)ivOfq>(}<=^hM$CSyVD!J6m*V zz!&XE6G_)$NOV3TW+Rd=SbnRcOe$;%#-IE)r=OGkbbPx@{l&3jX?#wtpW3dARR8Td z@Lqp+NcEcSlPqp`ZYv5bcIo8P2TcigvvPk^xLyjW&hFJAdGj4n8Ntg;W?P(ihcI1e zA$=Wk?M)}2!aPeysCqF^poAJV5OV5Rk6o#3*G3>_G>te#GNU3Rhy8N3Tty2vFAGO~ zygRi&ORR2wL&a(^4SW#JtkQT?%9pSLIiT3^wYf@MX87mbiaDDT{f}c?@)PvGdtfnp zngA6sKAzm%|BbM3DE7a`_@n;^+Nnr-`2P_#6##(le?|Y?eRMDfI#3K4$qzKf2qVRr z|MWJko1^)g#q%FhFAN$f^{>X(g`_6{*kF=upqSm8RB{Z=>n`)3O3(oU0PX|;0OUVX q1u-^WvIKQb7_65J$lDbFzyRH7p?aENqCYa~o4J33;*&l8ME?LV^|dAd diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index a8df1a586..ce67e62d4 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -23369,6 +23369,10 @@ const str = '{"styles":[{"baseStyle":"Default Paragraph Font","builtIn":false,"inUse":true,"linked":false,"nameLocal":"NewCharStyle","priority":2,"quickStyle":true,"type":"Character","unhideWhenUsed":false,"visibility":false,"paragraphFormat":null,"font":{"name":"DengXian Light","size":16.0,"bold":true,"italic":false,"color":"#F1A983","underline":"None","subscript":false,"superscript":true,"strikeThrough":true,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#FF0000"}},{"baseStyle":"Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewParaStyle","nameLocal":"NewParaStyle","priority":1,"quickStyle":true,"type":"Paragraph","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Centered","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":72.0,"lineSpacing":18.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":72.0,"spaceAfter":30.0,"spaceBefore":30.0,"widowControl":true},"font":{"name":"DengXian","size":14.0,"bold":true,"italic":true,"color":"#8DD873","underline":"Single","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":true,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#00FF00"}},{"baseStyle":"Table Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewTableStyle","nameLocal":"NewTableStyle","priority":100,"type":"Table","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Left","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":0.0,"lineSpacing":12.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":0.0,"spaceAfter":0.0,"spaceBefore":0.0,"widowControl":true},"font":{"name":"DengXian","size":20.0,"bold":false,"italic":true,"color":"#D86DCB","underline":"None","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"tableStyle":{"allowBreakAcrossPage":true,"alignment":"Left","bottomCellMargin":0.0,"leftCellMargin":0.08,"rightCellMargin":0.08,"topCellMargin":0.0,"cellSpacing":0.0},"shading":{"backgroundPatternColor":"#60CAF3"}}]}'; const styles = context.document.importStylesFromJson(str); + + // If you'd like to set how conflicting styles are handled, use the importedStylesConflictBehavior parameter that was introduced in the Desktop 1.1 requirement set. "Ignore" is the default. + ////const styles = context.document.importStylesFromJson(str, Word.ImportedStylesConflictBehavior.Ignore); + await context.sync(); console.log("Styles imported from JSON:", styles); }); @@ -24475,6 +24479,25 @@ await context.sync(); console.log(base64.value); }); +'Word.ImportedStylesConflictBehavior:enum': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml + + + // Imports styles from JSON. + + await Word.run(async (context) => { + const str = + '{"styles":[{"baseStyle":"Default Paragraph Font","builtIn":false,"inUse":true,"linked":false,"nameLocal":"NewCharStyle","priority":2,"quickStyle":true,"type":"Character","unhideWhenUsed":false,"visibility":false,"paragraphFormat":null,"font":{"name":"DengXian Light","size":16.0,"bold":true,"italic":false,"color":"#F1A983","underline":"None","subscript":false,"superscript":true,"strikeThrough":true,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#FF0000"}},{"baseStyle":"Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewParaStyle","nameLocal":"NewParaStyle","priority":1,"quickStyle":true,"type":"Paragraph","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Centered","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":72.0,"lineSpacing":18.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":72.0,"spaceAfter":30.0,"spaceBefore":30.0,"widowControl":true},"font":{"name":"DengXian","size":14.0,"bold":true,"italic":true,"color":"#8DD873","underline":"Single","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":true,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#00FF00"}},{"baseStyle":"Table Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewTableStyle","nameLocal":"NewTableStyle","priority":100,"type":"Table","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Left","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":0.0,"lineSpacing":12.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":0.0,"spaceAfter":0.0,"spaceBefore":0.0,"widowControl":true},"font":{"name":"DengXian","size":20.0,"bold":false,"italic":true,"color":"#D86DCB","underline":"None","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"tableStyle":{"allowBreakAcrossPage":true,"alignment":"Left","bottomCellMargin":0.0,"leftCellMargin":0.08,"rightCellMargin":0.08,"topCellMargin":0.0,"cellSpacing":0.0},"shading":{"backgroundPatternColor":"#60CAF3"}}]}'; + const styles = context.document.importStylesFromJson(str); + + // If you'd like to set how conflicting styles are handled, use the importedStylesConflictBehavior parameter that was introduced in the Desktop 1.1 requirement set. "Ignore" is the default. + ////const styles = context.document.importStylesFromJson(str, Word.ImportedStylesConflictBehavior.Ignore); + + await context.sync(); + console.log("Styles imported from JSON:", styles); + }); 'Word.InlinePicture#getBase64ImageSrc:member(1)': - >- // Link to full sample: @@ -25398,6 +25421,10 @@ const str = '{"styles":[{"baseStyle":"Default Paragraph Font","builtIn":false,"inUse":true,"linked":false,"nameLocal":"NewCharStyle","priority":2,"quickStyle":true,"type":"Character","unhideWhenUsed":false,"visibility":false,"paragraphFormat":null,"font":{"name":"DengXian Light","size":16.0,"bold":true,"italic":false,"color":"#F1A983","underline":"None","subscript":false,"superscript":true,"strikeThrough":true,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#FF0000"}},{"baseStyle":"Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewParaStyle","nameLocal":"NewParaStyle","priority":1,"quickStyle":true,"type":"Paragraph","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Centered","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":72.0,"lineSpacing":18.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":72.0,"spaceAfter":30.0,"spaceBefore":30.0,"widowControl":true},"font":{"name":"DengXian","size":14.0,"bold":true,"italic":true,"color":"#8DD873","underline":"Single","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":true,"highlightColor":null,"hidden":false},"shading":{"backgroundPatternColor":"#00FF00"}},{"baseStyle":"Table Normal","builtIn":false,"inUse":true,"linked":false,"nextParagraphStyle":"NewTableStyle","nameLocal":"NewTableStyle","priority":100,"type":"Table","unhideWhenUsed":false,"visibility":false,"paragraphFormat":{"alignment":"Left","firstLineIndent":0.0,"keepTogether":false,"keepWithNext":false,"leftIndent":0.0,"lineSpacing":12.0,"lineUnitAfter":0.0,"lineUnitBefore":0.0,"mirrorIndents":false,"outlineLevel":"OutlineLevelBodyText","rightIndent":0.0,"spaceAfter":0.0,"spaceBefore":0.0,"widowControl":true},"font":{"name":"DengXian","size":20.0,"bold":false,"italic":true,"color":"#D86DCB","underline":"None","subscript":false,"superscript":false,"strikeThrough":false,"doubleStrikeThrough":false,"highlightColor":null,"hidden":false},"tableStyle":{"allowBreakAcrossPage":true,"alignment":"Left","bottomCellMargin":0.0,"leftCellMargin":0.08,"rightCellMargin":0.08,"topCellMargin":0.0,"cellSpacing":0.0},"shading":{"backgroundPatternColor":"#60CAF3"}}]}'; const styles = context.document.importStylesFromJson(str); + + // If you'd like to set how conflicting styles are handled, use the importedStylesConflictBehavior parameter that was introduced in the Desktop 1.1 requirement set. "Ignore" is the default. + ////const styles = context.document.importStylesFromJson(str, Word.ImportedStylesConflictBehavior.Ignore); + await context.sync(); console.log("Styles imported from JSON:", styles); }); From 43b853ae093219d49a2894dc56472372f08084c7 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Mon, 22 Sep 2025 16:44:46 -0700 Subject: [PATCH 49/71] [Outlook] Map code snippet to Office.AttachmentDetailsCompose (#996) --- snippet-extractor-metadata/outlook.xlsx | Bin 24576 -> 24557 bytes snippet-extractor-output/snippets.yaml | 48 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index fad79065637fb701a81f59c9354dfdba8f6ea385..d3bcea07da6e2dafcc5810793c747628bf50777e 100644 GIT binary patch delta 13833 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index ce67e62d4..331186ec3 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -10469,6 +10469,54 @@ } else { console.log("This mail item doesn't contain any attachments."); } +'Office.AttachmentDetailsCompose:interface': + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml + + + Office.context.mailbox.item.getAttachmentsAsync((result) => { + if (result.status === Office.AsyncResultStatus.Failed) { + console.error(result.error.message); + return; + } + + if (result.value.length > 0) { + for (let i = 0; i < result.value.length; i++) { + const attachment = result.value[i]; + let attachmentType; + switch (attachment.attachmentType) { + case Office.MailboxEnums.AttachmentType.Cloud: + attachmentType = "Attachment is stored in a cloud location"; + break; + case Office.MailboxEnums.AttachmentType.File: + attachmentType = "Attachment is a file"; + break; + case Office.MailboxEnums.AttachmentType.Item: + attachmentType = "Attachment is an Exchange item"; + break; + } + console.log( + "ID: " + + attachment.id + + "\n" + + "Type: " + + attachmentType + + "\n" + + "Name: " + + attachment.name + + "\n" + + "Size: " + + attachment.size + + "\n" + + "isInline: " + + attachment.isInline + ); + } + } else { + console.log("No attachments on this message."); + } + }); 'Office.Body:interface': - >- // Link to full sample: From a5c1f0bb6acd40a9736ca85d12d9eaa230ce7688 Mon Sep 17 00:00:00 2001 From: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> Date: Thu, 25 Sep 2025 08:33:50 -0700 Subject: [PATCH 50/71] [admin] Update packages and remove yarn references (#998) * Update packages and remove yarn references * Remove undefined author additions * Allow empty template and style sections for custom functions snippets * Update yaml package --- README.md | 9 +- config/build.documentation.ts | 4 +- config/build.ts | 14 +- config/helpers.ts | 23 +- config/snippet.helpers.ts | 4 +- config/status.ts | 2 +- package.json | 30 +- playlists-prod/excel.yaml | 26 +- playlists-prod/outlook.yaml | 16 +- playlists-prod/powerpoint.yaml | 14 +- playlists-prod/word.yaml | 16 +- playlists/excel.yaml | 26 +- playlists/outlook.yaml | 16 +- playlists/powerpoint.yaml | 14 +- playlists/word.yaml | 16 +- .../excel/20-chart/chart-title-ts.yaml | 2 +- .../excel/01-basics/basic-api-call-es5.yaml | 2 +- samples/excel/01-basics/basic-api-call.yaml | 2 +- .../01-basics/basic-common-api-call.yaml | 2 +- .../excel/10-chart/chart-axis-formatting.yaml | 2 +- samples/excel/10-chart/chart-axis.yaml | 2 +- .../excel/10-chart/chart-bubble-chart.yaml | 2 +- .../10-chart/chart-create-several-charts.yaml | 2 +- samples/excel/10-chart/chart-data-labels.yaml | 2 +- samples/excel/10-chart/chart-data-source.yaml | 2 +- samples/excel/10-chart/chart-data-table.yaml | 2 +- samples/excel/10-chart/chart-formatting.yaml | 2 +- .../excel/10-chart/chart-leader-lines.yaml | 2 +- samples/excel/10-chart/chart-legend.yaml | 2 +- .../excel/10-chart/chart-series-markers.yaml | 2 +- .../10-chart/chart-series-plotorder.yaml | 2 +- samples/excel/10-chart/chart-series.yaml | 2 +- samples/excel/10-chart/chart-trendlines.yaml | 2 +- .../12-comments-and-notes/comment-basics.yaml | 2 +- .../comment-mentions.yaml | 2 +- .../comment-replies.yaml | 2 +- .../comment-resolution.yaml | 2 +- .../excel-note-basics.yaml | 2 +- .../conditional-formatting-advanced.yaml | 2 +- .../conditional-formatting-basic.yaml | 2 +- .../16-custom-functions/custom-enum.yaml | 2 +- .../custom-functions-errors.yaml | 2 +- .../data-types-custom-functions.yaml | 2 +- .../streaming-function.yaml | 2 +- .../web-call-function.yaml | 2 +- ...e-set-get-and-delete-custom-xml-parts.yaml | 2 +- .../test-xml-for-unique-namespace.yaml | 2 +- .../20-data-types/data-types-basic-types.yaml | 2 +- .../data-types-entity-attribution.yaml | 2 +- .../data-types-entity-icons.yaml | 2 +- .../data-types-entity-values.yaml | 2 +- .../data-types-error-values.yaml | 2 +- .../data-types-formatted-number.yaml | 2 +- .../20-data-types/data-types-references.yaml | 2 +- .../20-data-types/data-types-web-image.yaml | 2 +- .../22-data-validation/data-validation.yaml | 2 +- .../excel/26-document/custom-properties.yaml | 2 +- .../26-document/get-file-in-slices-async.yaml | 2 +- samples/excel/26-document/properties.yaml | 2 +- .../30-events/data-change-event-details.yaml | 2 +- samples/excel/30-events/data-changed.yaml | 2 +- .../30-events/event-column-and-row-sort.yaml | 2 +- .../event-worksheet-single-click.yaml | 2 +- .../30-events/events-chart-activated.yaml | 2 +- ...vents-chartcollection-added-activated.yaml | 2 +- .../events-comment-event-handler.yaml | 2 +- .../30-events/events-disable-events.yaml | 2 +- .../30-events/events-formula-changed.yaml | 2 +- .../excel/30-events/events-table-changed.yaml | 2 +- .../events-tablecollection-changed.yaml | 2 +- .../30-events/events-workbook-activated.yaml | 2 +- ...nts-workbook-and-worksheet-collection.yaml | 2 +- .../events-worksheet-protection.yaml | 2 +- samples/excel/30-events/events-worksheet.yaml | 2 +- .../30-events/selection-changed-events.yaml | 2 +- .../create-and-remove-named-item.yaml | 4 +- .../34-named-item/update-named-item.yaml | 2 +- .../pivottable-calculations.yaml | 2 +- .../pivottable-create-and-modify.yaml | 2 +- .../pivottable-filters-and-summaries.yaml | 2 +- .../pivottable-get-pivottables.yaml | 2 +- .../pivottable-pivotfilters.yaml | 2 +- .../38-pivottable/pivottable-pivotlayout.yaml | 2 +- .../38-pivottable/pivottable-refresh.yaml | 2 +- .../38-pivottable/pivottable-slicer.yaml | 2 +- .../38-pivottable/pivottable-source-data.yaml | 2 +- samples/excel/42-range/cell-properties.yaml | 2 +- samples/excel/42-range/dynamic-arrays.yaml | 2 +- .../42-range/insert-delete-clear-range.yaml | 4 +- samples/excel/42-range/outline.yaml | 2 +- samples/excel/42-range/precedents.yaml | 2 +- samples/excel/42-range/range-areas.yaml | 2 +- samples/excel/42-range/range-auto-fill.yaml | 2 +- .../excel/42-range/range-cell-control.yaml | 2 +- samples/excel/42-range/range-copyfrom.yaml | 2 +- samples/excel/42-range/range-dependents.yaml | 2 +- .../42-range/range-direct-dependents.yaml | 2 +- samples/excel/42-range/range-find.yaml | 2 +- .../excel/42-range/range-get-range-edge.yaml | 2 +- samples/excel/42-range/range-hyperlink.yaml | 2 +- .../excel/42-range/range-merged-ranges.yaml | 2 +- .../excel/42-range/range-relationships.yaml | 2 +- .../42-range/range-remove-duplicates.yaml | 2 +- .../42-range/range-text-orientation.yaml | 2 +- samples/excel/42-range/selected-range.yaml | 2 +- samples/excel/42-range/set-get-values.yaml | 2 +- samples/excel/42-range/style.yaml | 2 +- samples/excel/42-range/used-range.yaml | 2 +- .../44-shape/shape-create-and-delete.yaml | 2 +- samples/excel/44-shape/shape-get-active.yaml | 2 +- samples/excel/44-shape/shape-groups.yaml | 2 +- samples/excel/44-shape/shape-images.yaml | 2 +- .../excel/44-shape/shape-move-and-order.yaml | 2 +- samples/excel/44-shape/shape-textboxes.yaml | 2 +- .../add-rows-and-columns-to-a-table.yaml | 2 +- samples/excel/46-table/create-table.yaml | 2 +- samples/excel/46-table/filter-data.yaml | 2 +- samples/excel/46-table/formatting.yaml | 2 +- .../excel/46-table/get-data-from-table.yaml | 2 +- ...get-visible-range-of-a-filtered-table.yaml | 2 +- samples/excel/46-table/import-json-data.yaml | 2 +- samples/excel/46-table/resize-table.yaml | 2 +- samples/excel/46-table/sort-data.yaml | 2 +- .../create-get-change-delete-settings.yaml | 2 +- .../excel/50-workbook/create-workbook.yaml | 2 +- .../50-workbook/culture-info-date-time.yaml | 2 +- samples/excel/50-workbook/culture-info.yaml | 2 +- .../excel/50-workbook/data-protection.yaml | 2 +- .../workbook-built-in-functions.yaml | 2 +- .../50-workbook/workbook-calculation.yaml | 2 +- .../50-workbook/workbook-get-active-cell.yaml | 2 +- .../workbook-insert-external-worksheets.yaml | 2 +- .../50-workbook/workbook-save-and-close.yaml | 2 +- .../add-delete-rename-move-worksheet.yaml | 4 +- samples/excel/54-worksheet/gridlines.yaml | 2 +- .../excel/54-worksheet/list-worksheets.yaml | 2 +- ...rence-worksheets-by-relative-position.yaml | 2 +- samples/excel/54-worksheet/tab-color.yaml | 2 +- .../54-worksheet/worksheet-auto-filter.yaml | 2 +- .../excel/54-worksheet/worksheet-copy.yaml | 2 +- .../54-worksheet/worksheet-find-all.yaml | 2 +- .../54-worksheet/worksheet-freeze-panes.yaml | 2 +- .../54-worksheet/worksheet-page-layout.yaml | 2 +- .../54-worksheet/worksheet-range-cell.yaml | 2 +- .../54-worksheet/worksheet-visibility.yaml | 2 +- .../90-scenarios/currency-converter.yaml | 2 +- .../90-scenarios/multiple-property-set.yaml | 2 +- .../performance-optimization.yaml | 2 +- .../excel/90-scenarios/report-generation.yaml | 2 +- .../90-scenarios/working-with-dates.yaml | 2 +- .../excel/99-just-for-fun/color-wheel.yaml | 2 +- samples/excel/99-just-for-fun/gradient.yaml | 2 +- .../99-just-for-fun/path-finder-game.yaml | 2 +- samples/excel/99-just-for-fun/patterns.yaml | 2 +- samples/excel/99-just-for-fun/tetrominos.yaml | 2 +- samples/excel/default.yaml | 2 +- samples/onenote/default.yaml | 2 +- .../10-roaming-settings/roaming-settings.yaml | 2 +- .../load-set-get-save.yaml | 2 +- .../20-item-body/add-inline-base64-image.yaml | 2 +- .../20-item-body/append-text-on-send.yaml | 2 +- .../outlook/20-item-body/get-body-format.yaml | 2 +- .../20-item-body/get-selected-data.yaml | 2 +- .../20-item-body/prepend-text-on-send.yaml | 2 +- .../prepend-text-to-item-body.yaml | 2 +- .../20-item-body/replace-selected-text.yaml | 2 +- .../25-item-save-and-close/close-async.yaml | 2 +- .../outlook/25-item-save-and-close/save.yaml | 2 +- .../get-all-attendees.yaml | 2 +- .../get-cc-message-read.yaml | 2 +- .../get-from-message-compose.yaml | 2 +- .../get-from-message-read.yaml | 2 +- ...tional-attendees-appointment-attendee.yaml | 2 +- .../get-organizer-appointment-attendee.yaml | 2 +- .../get-organizer-appointment-organizer.yaml | 2 +- ...quired-attendees-appointment-attendee.yaml | 2 +- .../get-sender-message-read.yaml | 2 +- .../get-set-bcc-message-compose.yaml | 2 +- .../get-set-cc-message-compose.yaml | 2 +- ...ional-attendees-appointment-organizer.yaml | 2 +- ...uired-attendees-appointment-organizer.yaml | 2 +- .../get-set-to-message-compose.yaml | 2 +- .../get-to-message-read.yaml | 2 +- .../35-notifications/add-getall-remove.yaml | 2 +- .../40-attachments/attachments-compose.yaml | 2 +- .../get-attachment-content.yaml | 2 +- .../40-attachments/get-attachments-read.yaml | 2 +- .../45-categories/work-with-categories.yaml | 2 +- .../work-with-master-categories.yaml | 2 +- .../50-recurrence/get-recurrence-read.yaml | 2 +- .../outlook/50-recurrence/get-series-id.yaml | 2 +- ...-set-recurrence-appointment-organizer.yaml | 2 +- .../display-existing-appointment.yaml | 2 +- .../display-existing-message.yaml | 2 +- .../display-new-appointment.yaml | 2 +- .../55-display-items/display-new-message.yaml | 2 +- .../55-display-items/display-reply-forms.yaml | 2 +- .../display-reply-with-attachments.yaml | 2 +- .../sensitivity-label.yaml | 2 +- .../sensitivity-labels-catalog.yaml | 2 +- .../get-shared-properties.yaml | 2 +- .../get-internet-headers-message-read.yaml | 2 +- ...stom-internet-headers-message-compose.yaml | 2 +- .../outlook/75-regex-matches/contextual.yaml | 2 +- .../get-icaluid-as-attendee.yaml | 2 +- .../get-icaluid-as-organizer.yaml | 2 +- .../ids-and-urls.yaml | 2 +- .../make-ews-request-async.yaml | 2 +- ...-message-using-make-ews-request-async.yaml | 2 +- .../user-callback-token.yaml | 2 +- .../user-identity-token.yaml | 2 +- .../delay-message-delivery.yaml | 2 +- ...d-remove-enhancedlocation-appointment.yaml | 2 +- .../get-conversation-id-message.yaml | 2 +- .../get-conversation-index.yaml | 2 +- .../get-date-time-created-read.yaml | 2 +- .../get-date-time-modified-read.yaml | 2 +- .../get-diagnostic-information.yaml | 2 +- .../90-other-item-apis/get-eml-format.yaml | 2 +- .../90-other-item-apis/get-end-read.yaml | 2 +- .../90-other-item-apis/get-in-reply-to.yaml | 2 +- .../get-internet-message-id-read.yaml | 2 +- .../get-item-class-async.yaml | 2 +- .../get-item-class-read.yaml | 2 +- .../90-other-item-apis/get-item-type.yaml | 2 +- .../get-loaded-message-properties.yaml | 2 +- .../90-other-item-apis/get-location-read.yaml | 2 +- .../get-message-properties.yaml | 2 +- .../get-normalized-subject-read.yaml | 2 +- .../get-set-end-appointment-organizer.yaml | 2 +- ...et-set-location-appointment-organizer.yaml | 2 +- .../get-set-sensitivity-level.yaml | 2 +- .../get-set-start-appointment-organizer.yaml | 2 +- .../get-set-subject-compose.yaml | 2 +- .../90-other-item-apis/get-start-read.yaml | 2 +- .../90-other-item-apis/get-subject-read.yaml | 2 +- .../90-other-item-apis/item-id-compose.yaml | 2 +- .../90-other-item-apis/send-async.yaml | 2 +- .../90-other-item-apis/session-data-apis.yaml | 2 +- .../90-other-item-apis/set-selected-data.yaml | 2 +- .../work-with-client-signatures.yaml | 2 +- .../get-set-isalldayevent.yaml | 2 +- .../set-displayed-body-subject.yaml | 2 +- .../powerpoint/basics/basic-api-call-js.yaml | 2 +- .../powerpoint/basics/basic-api-call-ts.yaml | 2 +- .../basics/basic-common-api-call.yaml | 2 +- samples/powerpoint/default.yaml | 2 +- .../document/create-presentation.yaml | 2 +- .../hyperlinks/manage-hyperlinks.yaml | 2 +- samples/powerpoint/images/insert-image.yaml | 2 +- samples/powerpoint/images/insert-svg.yaml | 2 +- .../scenarios/searches-wikipedia-api.yaml | 2 +- .../powerpoint/shapes/add-modify-tables.yaml | 2 +- .../powerpoint/shapes/binding-to-shapes.yaml | 2 +- samples/powerpoint/shapes/get-set-shapes.yaml | 2 +- .../powerpoint/shapes/get-shapes-by-type.yaml | 2 +- .../shapes/group-ungroup-shapes.yaml | 2 +- samples/powerpoint/shapes/shapes.yaml | 4 +- .../slide-management/add-slides.yaml | 2 +- .../slide-management/export-import-slide.yaml | 2 +- .../slide-management/get-set-slides.yaml | 2 +- .../slide-management/get-slide-metadata.yaml | 2 +- .../slide-management/insert-slides.yaml | 2 +- samples/powerpoint/tags/tags.yaml | 2 +- .../powerpoint/text/get-set-textrange.yaml | 2 +- .../project/basics/basic-common-api-call.yaml | 2 +- samples/project/default.yaml | 2 +- .../word/01-basics/basic-api-call-es5.yaml | 2 +- samples/word/01-basics/basic-api-call.yaml | 2 +- .../word/01-basics/basic-common-api-call.yaml | 2 +- .../content-control-onadded-event.yaml | 2 +- .../content-control-ondatachanged-event.yaml | 2 +- .../content-control-ondeleted-event.yaml | 2 +- .../content-control-onentered-event.yaml | 2 +- .../content-control-onexited-event.yaml | 2 +- ...tent-control-onselectionchanged-event.yaml | 2 +- .../get-change-tracking-states.yaml | 2 +- ...t-and-change-checkbox-content-control.yaml | 2 +- ...-and-change-combo-box-content-control.yaml | 2 +- .../insert-and-change-content-controls.yaml | 2 +- ...-change-dropdown-list-content-control.yaml | 2 +- .../15-images/insert-and-get-pictures.yaml | 2 +- samples/word/20-lists/insert-list.yaml | 2 +- samples/word/20-lists/manage-list-styles.yaml | 2 +- samples/word/20-lists/organize-list.yaml | 2 +- .../get-paragraph-on-insertion-point.yaml | 2 +- samples/word/25-paragraph/get-text.yaml | 2 +- samples/word/25-paragraph/get-word-count.yaml | 2 +- .../25-paragraph/insert-formatted-text.yaml | 2 +- .../insert-header-and-footer.yaml | 2 +- .../insert-in-different-locations.yaml | 2 +- .../insert-line-and-page-breaks.yaml | 2 +- samples/word/25-paragraph/onadded-event.yaml | 2 +- .../word/25-paragraph/onchanged-event.yaml | 2 +- .../word/25-paragraph/ondeleted-event.yaml | 2 +- .../25-paragraph/paragraph-properties.yaml | 2 +- samples/word/25-paragraph/search.yaml | 2 +- .../get-built-in-properties.yaml | 2 +- ...read-write-custom-document-properties.yaml | 2 +- samples/word/35-ranges/compare-location.yaml | 2 +- samples/word/35-ranges/get-pages.yaml | 4 +- samples/word/35-ranges/scroll-to-range.yaml | 2 +- .../split-words-of-first-paragraph.yaml | 2 +- .../word/40-tables/manage-custom-style.yaml | 2 +- samples/word/40-tables/manage-formatting.yaml | 2 +- samples/word/40-tables/table-cell-access.yaml | 2 +- .../word/50-document/compare-documents.yaml | 2 +- .../word/50-document/get-external-styles.yaml | 2 +- .../50-document/insert-external-document.yaml | 2 +- .../50-document/insert-section-breaks.yaml | 2 +- .../word/50-document/manage-annotations.yaml | 2 +- samples/word/50-document/manage-body.yaml | 2 +- .../50-document/manage-change-tracking.yaml | 2 +- samples/word/50-document/manage-comments.yaml | 2 +- .../manage-custom-xml-part-ns.yaml | 2 +- .../50-document/manage-custom-xml-part.yaml | 2 +- samples/word/50-document/manage-fields.yaml | 2 +- .../word/50-document/manage-footnotes.yaml | 2 +- samples/word/50-document/manage-settings.yaml | 2 +- .../50-document/manage-shapes-text-boxes.yaml | 2 +- samples/word/50-document/manage-styles.yaml | 2 +- .../50-document/manage-tracked-changes.yaml | 2 +- samples/word/50-document/save-close.yaml | 2 +- .../correlated-objects-pattern.yaml | 2 +- samples/word/90-scenarios/doc-assembly.yaml | 2 +- .../90-scenarios/multiple-property-set.yaml | 2 +- .../insert-and-change-content-controls.yaml | 2 +- .../word/99-preview-apis/manage-comments.yaml | 2 +- samples/word/default.yaml | 2 +- snippet-extractor-output/snippets.yaml | 2232 ++++++++--------- tsconfig.json | 9 +- yarn.lock | 1016 -------- 332 files changed, 1554 insertions(+), 2571 deletions(-) delete mode 100644 yarn.lock diff --git a/README.md b/README.md index a0e9602b7..0fe20ada1 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,7 @@ A collection of code snippets built with [Script Lab](//github.com/OfficeDev/scr 1. [Fork](https://help.github.com/articles/about-forks/) this project into your GitHub account. 1. Clone your fork to your development computer. 1. Ensure that you have Node, version 6.10+, installed. (To check the version run the command `node -v`.) -1. Install `yarn` as a global package `npm install yarn --global`. -1. Be sure your CLI is in the root of the office-js-snippets repo and run `yarn install`. (It's similar to `npm install`.) +1. Be sure your CLI is in the root of the office-js-snippets repo and run `npm install` to install all dependencies. 1. Set up the original \OfficeDev\office-js-snippets as the upstream repo for your local repo by following the steps in [Configuring a remote for a fork](https://help.github.com/articles/configuring-a-remote-for-a-fork/). 1. If you'll be using Visual Studio Code as your editor, install the [TSLint](https://marketplace.visualstudio.com/items?itemName=eg2.tslint) extension for Visual Studio Code. @@ -46,11 +45,11 @@ A collection of code snippets built with [Script Lab](//github.com/OfficeDev/scr 1. Open one of the `.yaml` files already in the group folder. If it has an `order` property near the top, then the snippets in the group folder are ordered in a particular sequence in Script Lab. Add an `order` property to the top of your `.yaml` file and give it a number that is between the order numbers of the snippets between which you want it to appear. 1. Copy your `.yaml` file to the chosen group folder. -1. Run `yarn start`. If there are no problems, the output will end with a `Done!`. If there are errors, review the output to check what caused the build validation to fail, and fix as needed. See [**Known errors and fixes**](#known-errors-and-fixes-in-the-build-tool) for more information. +1. Run `npm start`. If there are no problems, the output will end with a `Done!`. If there are errors, review the output to check what caused the build validation to fail, and fix as needed. See [**Known errors and fixes**](#known-errors-and-fixes-in-the-build-tool) for more information. - > **Note**: The `yarn start` command adds an `id` property to the top of the file. + > **Note**: The `npm start` command adds an `id` property to the top of the file. -1. Re-run `yarn start`, and fix errors, until the build succeeds. +1. Re-run `npm start`, and fix errors, until the build succeeds. 1. Run `git status`. You should see that, in addition to your new `.yaml` file (or possibly new folder), a `playlist\{host}.yaml` file (where `{host}` is `excel`, `word`, etc.) has also been changed. This is expected. The build tool you just ran added a reference to your new snippet to this file. 1. Run the following two commands. The commit message should be a brief description of what the snippet demonstrates; for example, `"shows how to use getWhatever method"`. diff --git a/config/build.documentation.ts b/config/build.documentation.ts index 72eb9099b..ee9d8f653 100644 --- a/config/build.documentation.ts +++ b/config/build.documentation.ts @@ -36,7 +36,7 @@ export async function buildReferenceDocSnippetExtracts( await rmRf('snippet-extractor-output'); await mkDir('snippet-extractor-output'); - const contents = snippetExtractsPerHost.map(extracts => jsyaml.safeDump(extracts)).join(''); + const contents = snippetExtractsPerHost.map(extracts => jsyaml.dump(extracts)).join(''); await writeFile(path.resolve(`snippet-extractor-output/snippets.yaml`), contents); } @@ -119,7 +119,7 @@ function getExtractedDataFromSnippet( const filename = snippetIdsToFilenames[row.snippetId]; if (filename) { try { - const script = (jsyaml.safeLoad(fs.readFileSync(filename).toString()) as ISnippet).script.content; + const script = (jsyaml.load(fs.readFileSync(filename).toString()) as ISnippet).script.content; const fullSnippetTextArray = script.split('\n') .map(line => line.replace(/\r/, '')); diff --git a/config/build.ts b/config/build.ts index 678cbe254..5d718ccc7 100644 --- a/config/build.ts +++ b/config/build.ts @@ -2,7 +2,8 @@ import * as path from 'path'; import { isNil, isString, isArray, isEmpty, sortBy, cloneDeep } from 'lodash'; -import * as chalk from 'chalk'; +import chalk from 'chalk'; +import escapeStringRegexp from 'escape-string-regexp'; import { status } from './status'; import { SnippetFileInput, SnippetProcessedData, @@ -14,7 +15,6 @@ import { getShareableYaml } from './snippet.helpers'; import { processLibraries } from './libraries.processor'; import { startCase, groupBy, map } from 'lodash'; import * as jsyaml from 'js-yaml'; -import escapeStringRegexp = require('escape-string-regexp'); import * as fsx from 'fs-extra'; @@ -84,7 +84,7 @@ async function processSnippets(processedSnippets: Dictionary{}; additionalFields.id = snippet.id; additionalFields.api_set = snippet.api_set; - additionalFields.author = snippet.author; + + // Only set author field if it has a value + if (snippet.author) { + additionalFields.author = snippet.author; + } if ((typeof (snippet as any).order) !== 'undefined') { // # for ordering, if present (used for samples only) @@ -537,7 +541,7 @@ async function generatePlaylists(processedSnippets: Dictionary { +export const banner = (title: string, message: string = null, chalkFn: any = null) => { if (!chalkFn) { chalkFn = chalk.bold; } @@ -55,7 +55,7 @@ export const banner = (title: string, message: string = null, chalkFn: chalk.Cha }; export function getPrintableDetails(item: any, indent: number) { - const details = jsyaml.safeDump(item, { + const details = jsyaml.dump(item, { indent: 4, lineWidth: -1, skipInvalid: true @@ -83,16 +83,11 @@ export const mkDir = (dir: string) => * Deletes a folder. * @param dir An absolute path to the directory. */ -export const rmRf = (dir: string) => - new Promise((resolve, reject) => { - const location = path.resolve(dir); - rimraf(location, (err) => { - if (err) { - return reject(err); - } - return resolve(location); - }); - }); +export const rmRf = async (dir: string): Promise => { + const location = path.resolve(dir); + await rimraf(location); + return location; +}; /** * Load all the files and folders in a given directory. diff --git a/config/snippet.helpers.ts b/config/snippet.helpers.ts index f2574957d..449e40d59 100644 --- a/config/snippet.helpers.ts +++ b/config/snippet.helpers.ts @@ -91,7 +91,7 @@ function scrubCarriageReturns(snippet: ISnippet) { export function getScrubbedSnippet(snippet: ISnippet, keep: SnippetFieldType): ISnippet { let copy = {}; forIn(snippetFields, (fieldType, fieldName) => { - if (fieldType & keep) { + if (fieldType & keep && snippet[fieldName] !== undefined) { copy[fieldName] = snippet[fieldName]; } }); @@ -103,7 +103,7 @@ export function getShareableYaml(rawSnippet: ISnippet, additionalFields: ISnippe const snippet = { ...getScrubbedSnippet(rawSnippet, SnippetFieldType.PUBLIC), ...additionalFields }; scrubCarriageReturns(snippet); - return jsyaml.safeDump(snippet, { + return jsyaml.dump(snippet, { indent: 4, lineWidth: -1, sortKeys: ((a, b) => snippetFieldSortingOrder[a] - snippetFieldSortingOrder[b]), diff --git a/config/status.ts b/config/status.ts index 44003309c..692b788ac 100644 --- a/config/status.ts +++ b/config/status.ts @@ -1,5 +1,5 @@ import * as nodeStatus from 'node-status'; -import * as chalk from 'chalk'; +import chalk from 'chalk'; import { isString, find, isNil, isArray } from 'lodash'; interface IStage { diff --git a/package.json b/package.json index 6628cb3e3..40974d9bf 100644 --- a/package.json +++ b/package.json @@ -23,25 +23,23 @@ }, "homepage": "https://github.com/OfficeDev/office-js-snippets#readme", "dependencies": { - "chalk": "1.1.3", - "escape-string-regexp": "^2.0.0", - "exceljs": "^4.3.0", - "fs-extra": "3.0.1", - "js-yaml": "^3.13.1", + "chalk": "^4.1.2", + "escape-string-regexp": "^4.0.0", + "exceljs": "^4.4.0", + "fs-extra": "11.3.2", + "js-yaml": "^4.1.0", "lodash": "^4.17.21", "node-status": "^1.0.0", - "rimraf": "^3.0.0", - "shelljs": "^0.8.5", - "yarn": "^1.22.19" + "rimraf": "^6.0.1", + "shelljs": "^0.10.0" }, "devDependencies": { - "@types/chalk": "0.4.31", - "@types/fs-extra": "3.0.1", - "@types/js-yaml": "^3.12.0", - "@types/lodash": "^4.14.175", - "@types/node": "^11.10.5", - "@types/shelljs": "^0.8.3", - "tslint": "^6.1.0", - "typescript": "^3.3.3333" + "@types/fs-extra": "^11.0.4", + "@types/js-yaml": "^4.0.9", + "@types/lodash": "^4.17.20", + "@types/node": "^24.5.2", + "@types/shelljs": "^0.8.17", + "tslint": "^6.1.3", + "typescript": "^5.9.2" } } diff --git a/playlists-prod/excel.yaml b/playlists-prod/excel.yaml index a1229c67b..059d3893b 100644 --- a/playlists-prod/excel.yaml +++ b/playlists-prod/excel.yaml @@ -30,7 +30,7 @@ - id: excel-chart-axis name: Axis details fileName: chart-axis.yaml - description: 'Gets, sets, and removes axis unit, label, and title in a chart.' + description: Gets, sets, and removes axis unit, label, and title in a chart. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-axis.yaml group: Chart @@ -162,7 +162,7 @@ - id: excel-chart-trendlines name: Trendlines fileName: chart-trendlines.yaml - description: 'Adds, gets, and formats trendlines in a chart.' + description: Adds, gets, and formats trendlines in a chart. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-trendlines.yaml group: Chart @@ -189,7 +189,7 @@ - id: excel-comment-basics name: Comment basics fileName: comment-basics.yaml - description: 'Adds, edits, and removes comments.' + description: Adds, edits, and removes comments. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml group: Comments And Notes @@ -207,7 +207,7 @@ - id: excel-comment-replies name: Comment replies fileName: comment-replies.yaml - description: 'Adds, edits, and removes comment replies.' + description: Adds, edits, and removes comment replies. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml group: Comments And Notes @@ -225,7 +225,7 @@ - id: excel-note-basics name: Notes fileName: excel-note-basics.yaml - description: 'Adds, edits, and removes notes.' + description: Adds, edits, and removes notes. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml group: Comments And Notes @@ -319,7 +319,7 @@ - id: excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts name: Using custom XML parts fileName: create-set-get-and-delete-custom-xml-parts.yaml - description: 'Creates, sets, gets, and deletes a custom XML part.' + description: Creates, sets, gets, and deletes a custom XML part. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml group: Custom XML Parts @@ -625,9 +625,9 @@ api_set: ExcelAPI: '1.14' - id: excel-named-item-create-and-remove-named-item - name: 'Create, access, and remove' + name: Create, access, and remove fileName: create-and-remove-named-item.yaml - description: 'Creates, accesses, and removes named items in a worksheet.' + description: Creates, accesses, and removes named items in a worksheet. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/34-named-item/create-and-remove-named-item.yaml group: Named Item @@ -785,16 +785,16 @@ - id: excel-range-hyperlink name: Hyperlinks fileName: range-hyperlink.yaml - description: 'Creates, updates, and clears hyperlinks in a range.' + description: Creates, updates, and clears hyperlinks in a range. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml group: Range api_set: ExcelApi: '1.7' - id: excel-range-insert-delete-and-clear-range - name: 'Insert, delete, and clear' + name: Insert, delete, and clear fileName: insert-delete-clear-range.yaml - description: 'Inserts, deletes, and clears a range.' + description: Inserts, deletes, and clears a range. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/insert-delete-clear-range.yaml group: Range @@ -1217,9 +1217,9 @@ api_set: ExcelApi: '1.1' - id: excel-worksheet-add-delete-rename-move-worksheet - name: 'Add, delete, rename, and move worksheet' + name: Add, delete, rename, and move worksheet fileName: add-delete-rename-move-worksheet.yaml - description: 'Adds, deletes, renames, and moves a worksheet.' + description: Adds, deletes, renames, and moves a worksheet. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml group: Worksheet diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index 0a11cfd8e..d675b90a6 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -1,7 +1,7 @@ - id: outlook-roaming-settings-roaming-settings name: Use add-in settings fileName: roaming-settings.yaml - description: 'Gets, sets, saves, and removes add-in roaming settings.' + description: Gets, sets, saves, and removes add-in roaming settings. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml group: Roaming Settings @@ -295,7 +295,7 @@ - id: outlook-categories-work-with-categories name: Work with item categories fileName: work-with-categories.yaml - description: 'Gets, adds, and removes categories assigned to the item.' + description: Gets, adds, and removes categories assigned to the item. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml group: Categories @@ -304,7 +304,7 @@ - id: outlook-categories-work-with-master-categories name: Work with the categories master list fileName: work-with-master-categories.yaml - description: 'Gets, adds, and removes categories in the master list for the mailbox.' + description: Gets, adds, and removes categories in the master list for the mailbox. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-master-categories.yaml group: Categories @@ -447,7 +447,7 @@ api_set: Mailbox: '1.8' - id: outlook-regex-matches-contextual - name: 'Get regex matches (Item Read, contextual)' + name: Get regex matches (Item Read, contextual) fileName: contextual.yaml description: Gets regex matches when the add-in is opened as a contextual add-in. rawUrl: >- @@ -639,7 +639,7 @@ - id: outlook-other-item-apis-get-add-remove-enhancedlocation-appointment name: Manage the locations of an appointment fileName: get-add-remove-enhancedlocation-appointment.yaml - description: 'Gets, adds, and removes locations on an appointment (enhancedLocation API).' + description: Gets, adds, and removes locations on an appointment (enhancedLocation API). rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml group: Other Item APIs @@ -704,7 +704,7 @@ - id: outlook-other-item-apis-session-data-apis name: Work with session data APIs (Compose) fileName: session-data-apis.yaml - description: 'Sets, gets, gets all, removes, and clears session data in Compose mode.' + description: Sets, gets, gets all, removes, and clears session data in Compose mode. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml group: Other Item APIs @@ -720,7 +720,7 @@ api_set: Mailbox: '1.13' - id: outlook-other-item-apis-get-message-properties - name: 'Get properties of selected messages (Message Compose, Message Read)' + name: Get properties of selected messages (Message Compose, Message Read) fileName: get-message-properties.yaml description: Gets the properties of multiple selected messages. rawUrl: >- @@ -794,7 +794,7 @@ api_set: Mailbox: '1.15' - id: outlook-other-item-apis-get-loaded-message-properties - name: 'Get properties of a loaded message (Message Compose, Message Read)' + name: Get properties of a loaded message (Message Compose, Message Read) fileName: get-loaded-message-properties.yaml description: Gets the properties of the currently loaded message. rawUrl: >- diff --git a/playlists-prod/powerpoint.yaml b/playlists-prod/powerpoint.yaml index edea496ed..40ca88e0d 100644 --- a/playlists-prod/powerpoint.yaml +++ b/playlists-prod/powerpoint.yaml @@ -72,16 +72,16 @@ group: Scenarios api_set: {} - id: powerpoint-shapes - name: 'Insert shape, line, and text box' + name: Insert shape, line, and text box fileName: shapes.yaml - description: 'Inserts geometric shapes, lines, and text boxes to a slide.' + description: Inserts geometric shapes, lines, and text boxes to a slide. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml group: Shapes api_set: PowerPointApi: '1.4' - id: powerpoint-shapes-get-set-shapes - name: 'Get, set, load, and save shapes' + name: Get, set, load, and save shapes fileName: get-set-shapes.yaml description: Get and set one or more selected shapes. Load and save one or more shapes. rawUrl: >- @@ -92,7 +92,7 @@ - id: powerpoint-shapes-get-shapes-by-type name: Select shapes by type fileName: get-shapes-by-type.yaml - description: 'Gets shapes in a slide based on their type, such as GeometricShape or Line.' + description: Gets shapes in a slide based on their type, such as GeometricShape or Line. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml group: Shapes @@ -146,13 +146,13 @@ - id: powerpoint-basics-get-slide-metadata name: Get slide metadata fileName: get-slide-metadata.yaml - description: 'Gets the title, index, and ID of the selected slides.' + description: Gets the title, index, and ID of the selected slides. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-slide-metadata.yaml group: Slide Management api_set: {} - id: powerpoint-slide-management-get-set-slides - name: 'Get, set, load, and save slides' + name: Get, set, load, and save slides fileName: get-set-slides.yaml description: Get and set one or more selected slides. Load and save one or more slides. rawUrl: >- @@ -181,7 +181,7 @@ - id: powerpoint-text-get-set-textrange name: Work with text range selections fileName: get-set-textrange.yaml - description: 'Get, set, load, and save text range selections.' + description: Get, set, load, and save text range selections. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml group: Text diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index 9def75438..644cc25a5 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -30,7 +30,7 @@ - id: word-content-controls-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml - description: 'Inserts, updates, and retrieves content controls.' + description: Inserts, updates, and retrieves content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-content-controls.yaml group: Content Controls @@ -105,7 +105,7 @@ - id: word-content-controls-insert-and-change-checkbox-content-control name: Manage checkbox content controls fileName: insert-and-change-checkbox-content-control.yaml - description: 'Inserts, updates, retrieves, and deletes checkbox content controls.' + description: Inserts, updates, retrieves, and deletes checkbox content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml group: Content Controls @@ -114,7 +114,7 @@ - id: word-content-controls-insert-and-change-combo-box-content-control name: Manage combo box content controls fileName: insert-and-change-combo-box-content-control.yaml - description: 'Inserts, updates, and deletes combo box content controls.' + description: Inserts, updates, and deletes combo box content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml group: Content Controls @@ -123,7 +123,7 @@ - id: word-content-controls-insert-and-change-dropdown-list-content-control name: Manage dropdown list content controls fileName: insert-and-change-dropdown-list-content-control.yaml - description: 'Inserts, updates, and deletes dropdown list content controls.' + description: Inserts, updates, and deletes dropdown list content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml group: Content Controls @@ -222,7 +222,7 @@ - id: word-paragraph-paragraph-properties name: Paragraph properties fileName: paragraph-properties.yaml - description: 'Sets indentation, space between paragraphs, and other paragraph properties.' + description: Sets indentation, space between paragraphs, and other paragraph properties. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml group: Paragraph @@ -338,9 +338,9 @@ api_set: WordApi: '1.3' - id: word-ranges-get-pages - name: 'Work with pages, panes, and windows' + name: Work with pages, panes, and windows fileName: get-pages.yaml - description: 'Shows how to work with pages, panes, and windows.' + description: Shows how to work with pages, panes, and windows. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml group: Ranges @@ -583,7 +583,7 @@ - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml - description: 'Inserts, updates, and retrieves content controls.' + description: Inserts, updates, and retrieves content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml group: Preview APIs diff --git a/playlists/excel.yaml b/playlists/excel.yaml index 7e9d49ed6..5aa863380 100644 --- a/playlists/excel.yaml +++ b/playlists/excel.yaml @@ -30,7 +30,7 @@ - id: excel-chart-axis name: Axis details fileName: chart-axis.yaml - description: 'Gets, sets, and removes axis unit, label, and title in a chart.' + description: Gets, sets, and removes axis unit, label, and title in a chart. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-axis.yaml group: Chart @@ -162,7 +162,7 @@ - id: excel-chart-trendlines name: Trendlines fileName: chart-trendlines.yaml - description: 'Adds, gets, and formats trendlines in a chart.' + description: Adds, gets, and formats trendlines in a chart. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/10-chart/chart-trendlines.yaml group: Chart @@ -189,7 +189,7 @@ - id: excel-comment-basics name: Comment basics fileName: comment-basics.yaml - description: 'Adds, edits, and removes comments.' + description: Adds, edits, and removes comments. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-basics.yaml group: Comments And Notes @@ -207,7 +207,7 @@ - id: excel-comment-replies name: Comment replies fileName: comment-replies.yaml - description: 'Adds, edits, and removes comment replies.' + description: Adds, edits, and removes comment replies. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/comment-replies.yaml group: Comments And Notes @@ -225,7 +225,7 @@ - id: excel-note-basics name: Notes fileName: excel-note-basics.yaml - description: 'Adds, edits, and removes notes.' + description: Adds, edits, and removes notes. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/12-comments-and-notes/excel-note-basics.yaml group: Comments And Notes @@ -319,7 +319,7 @@ - id: excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts name: Using custom XML parts fileName: create-set-get-and-delete-custom-xml-parts.yaml - description: 'Creates, sets, gets, and deletes a custom XML part.' + description: Creates, sets, gets, and deletes a custom XML part. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml group: Custom XML Parts @@ -625,9 +625,9 @@ api_set: ExcelAPI: '1.14' - id: excel-named-item-create-and-remove-named-item - name: 'Create, access, and remove' + name: Create, access, and remove fileName: create-and-remove-named-item.yaml - description: 'Creates, accesses, and removes named items in a worksheet.' + description: Creates, accesses, and removes named items in a worksheet. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/34-named-item/create-and-remove-named-item.yaml group: Named Item @@ -785,16 +785,16 @@ - id: excel-range-hyperlink name: Hyperlinks fileName: range-hyperlink.yaml - description: 'Creates, updates, and clears hyperlinks in a range.' + description: Creates, updates, and clears hyperlinks in a range. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/42-range/range-hyperlink.yaml group: Range api_set: ExcelApi: '1.7' - id: excel-range-insert-delete-and-clear-range - name: 'Insert, delete, and clear' + name: Insert, delete, and clear fileName: insert-delete-clear-range.yaml - description: 'Inserts, deletes, and clears a range.' + description: Inserts, deletes, and clears a range. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/42-range/insert-delete-clear-range.yaml group: Range @@ -1217,9 +1217,9 @@ api_set: ExcelApi: '1.1' - id: excel-worksheet-add-delete-rename-move-worksheet - name: 'Add, delete, rename, and move worksheet' + name: Add, delete, rename, and move worksheet fileName: add-delete-rename-move-worksheet.yaml - description: 'Adds, deletes, renames, and moves a worksheet.' + description: Adds, deletes, renames, and moves a worksheet. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml group: Worksheet diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index 00c0262b1..ca772433b 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -1,7 +1,7 @@ - id: outlook-roaming-settings-roaming-settings name: Use add-in settings fileName: roaming-settings.yaml - description: 'Gets, sets, saves, and removes add-in roaming settings.' + description: Gets, sets, saves, and removes add-in roaming settings. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/10-roaming-settings/roaming-settings.yaml group: Roaming Settings @@ -295,7 +295,7 @@ - id: outlook-categories-work-with-categories name: Work with item categories fileName: work-with-categories.yaml - description: 'Gets, adds, and removes categories assigned to the item.' + description: Gets, adds, and removes categories assigned to the item. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/45-categories/work-with-categories.yaml group: Categories @@ -304,7 +304,7 @@ - id: outlook-categories-work-with-master-categories name: Work with the categories master list fileName: work-with-master-categories.yaml - description: 'Gets, adds, and removes categories in the master list for the mailbox.' + description: Gets, adds, and removes categories in the master list for the mailbox. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/45-categories/work-with-master-categories.yaml group: Categories @@ -447,7 +447,7 @@ api_set: Mailbox: '1.8' - id: outlook-regex-matches-contextual - name: 'Get regex matches (Item Read, contextual)' + name: Get regex matches (Item Read, contextual) fileName: contextual.yaml description: Gets regex matches when the add-in is opened as a contextual add-in. rawUrl: >- @@ -639,7 +639,7 @@ - id: outlook-other-item-apis-get-add-remove-enhancedlocation-appointment name: Manage the locations of an appointment fileName: get-add-remove-enhancedlocation-appointment.yaml - description: 'Gets, adds, and removes locations on an appointment (enhancedLocation API).' + description: Gets, adds, and removes locations on an appointment (enhancedLocation API). rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml group: Other Item APIs @@ -704,7 +704,7 @@ - id: outlook-other-item-apis-session-data-apis name: Work with session data APIs (Compose) fileName: session-data-apis.yaml - description: 'Sets, gets, gets all, removes, and clears session data in Compose mode.' + description: Sets, gets, gets all, removes, and clears session data in Compose mode. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/session-data-apis.yaml group: Other Item APIs @@ -720,7 +720,7 @@ api_set: Mailbox: '1.13' - id: outlook-other-item-apis-get-message-properties - name: 'Get properties of selected messages (Message Compose, Message Read)' + name: Get properties of selected messages (Message Compose, Message Read) fileName: get-message-properties.yaml description: Gets the properties of multiple selected messages. rawUrl: >- @@ -794,7 +794,7 @@ api_set: Mailbox: '1.15' - id: outlook-other-item-apis-get-loaded-message-properties - name: 'Get properties of a loaded message (Message Compose, Message Read)' + name: Get properties of a loaded message (Message Compose, Message Read) fileName: get-loaded-message-properties.yaml description: Gets the properties of the currently loaded message. rawUrl: >- diff --git a/playlists/powerpoint.yaml b/playlists/powerpoint.yaml index efc61d962..6d8cc0135 100644 --- a/playlists/powerpoint.yaml +++ b/playlists/powerpoint.yaml @@ -72,16 +72,16 @@ group: Scenarios api_set: {} - id: powerpoint-shapes - name: 'Insert shape, line, and text box' + name: Insert shape, line, and text box fileName: shapes.yaml - description: 'Inserts geometric shapes, lines, and text boxes to a slide.' + description: Inserts geometric shapes, lines, and text boxes to a slide. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/shapes.yaml group: Shapes api_set: PowerPointApi: '1.4' - id: powerpoint-shapes-get-set-shapes - name: 'Get, set, load, and save shapes' + name: Get, set, load, and save shapes fileName: get-set-shapes.yaml description: Get and set one or more selected shapes. Load and save one or more shapes. rawUrl: >- @@ -92,7 +92,7 @@ - id: powerpoint-shapes-get-shapes-by-type name: Select shapes by type fileName: get-shapes-by-type.yaml - description: 'Gets shapes in a slide based on their type, such as GeometricShape or Line.' + description: Gets shapes in a slide based on their type, such as GeometricShape or Line. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/shapes/get-shapes-by-type.yaml group: Shapes @@ -146,13 +146,13 @@ - id: powerpoint-basics-get-slide-metadata name: Get slide metadata fileName: get-slide-metadata.yaml - description: 'Gets the title, index, and ID of the selected slides.' + description: Gets the title, index, and ID of the selected slides. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/slide-management/get-slide-metadata.yaml group: Slide Management api_set: {} - id: powerpoint-slide-management-get-set-slides - name: 'Get, set, load, and save slides' + name: Get, set, load, and save slides fileName: get-set-slides.yaml description: Get and set one or more selected slides. Load and save one or more slides. rawUrl: >- @@ -181,7 +181,7 @@ - id: powerpoint-text-get-set-textrange name: Work with text range selections fileName: get-set-textrange.yaml - description: 'Get, set, load, and save text range selections.' + description: Get, set, load, and save text range selections. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/text/get-set-textrange.yaml group: Text diff --git a/playlists/word.yaml b/playlists/word.yaml index cb7a87af1..8773282f5 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -30,7 +30,7 @@ - id: word-content-controls-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml - description: 'Inserts, updates, and retrieves content controls.' + description: Inserts, updates, and retrieves content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-content-controls.yaml group: Content Controls @@ -105,7 +105,7 @@ - id: word-content-controls-insert-and-change-checkbox-content-control name: Manage checkbox content controls fileName: insert-and-change-checkbox-content-control.yaml - description: 'Inserts, updates, retrieves, and deletes checkbox content controls.' + description: Inserts, updates, retrieves, and deletes checkbox content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml group: Content Controls @@ -114,7 +114,7 @@ - id: word-content-controls-insert-and-change-combo-box-content-control name: Manage combo box content controls fileName: insert-and-change-combo-box-content-control.yaml - description: 'Inserts, updates, and deletes combo box content controls.' + description: Inserts, updates, and deletes combo box content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml group: Content Controls @@ -123,7 +123,7 @@ - id: word-content-controls-insert-and-change-dropdown-list-content-control name: Manage dropdown list content controls fileName: insert-and-change-dropdown-list-content-control.yaml - description: 'Inserts, updates, and deletes dropdown list content controls.' + description: Inserts, updates, and deletes dropdown list content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml group: Content Controls @@ -222,7 +222,7 @@ - id: word-paragraph-paragraph-properties name: Paragraph properties fileName: paragraph-properties.yaml - description: 'Sets indentation, space between paragraphs, and other paragraph properties.' + description: Sets indentation, space between paragraphs, and other paragraph properties. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/25-paragraph/paragraph-properties.yaml group: Paragraph @@ -338,9 +338,9 @@ api_set: WordApi: '1.3' - id: word-ranges-get-pages - name: 'Work with pages, panes, and windows' + name: Work with pages, panes, and windows fileName: get-pages.yaml - description: 'Shows how to work with pages, panes, and windows.' + description: Shows how to work with pages, panes, and windows. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/35-ranges/get-pages.yaml group: Ranges @@ -583,7 +583,7 @@ - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml - description: 'Inserts, updates, and retrieves content controls.' + description: Inserts, updates, and retrieves content controls. rawUrl: >- https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-content-controls.yaml group: Preview APIs diff --git a/private-samples/excel/20-chart/chart-title-ts.yaml b/private-samples/excel/20-chart/chart-title-ts.yaml index 25e06c787..40d3be036 100644 --- a/private-samples/excel/20-chart/chart-title-ts.yaml +++ b/private-samples/excel/20-chart/chart-title-ts.yaml @@ -143,4 +143,4 @@ libraries: | // IntelliSense: @types/library or node_modules paths or URL to d.ts files @types/office-js @types/core-js - @types/jquery@3.3.1 \ No newline at end of file + @types/jquery@3.3.1 diff --git a/samples/excel/01-basics/basic-api-call-es5.yaml b/samples/excel/01-basics/basic-api-call-es5.yaml index e2baf785a..b25de1525 100644 --- a/samples/excel/01-basics/basic-api-call-es5.yaml +++ b/samples/excel/01-basics/basic-api-call-es5.yaml @@ -63,4 +63,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/01-basics/basic-api-call.yaml b/samples/excel/01-basics/basic-api-call.yaml index 86ddf8c87..144e6d260 100644 --- a/samples/excel/01-basics/basic-api-call.yaml +++ b/samples/excel/01-basics/basic-api-call.yaml @@ -64,4 +64,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/01-basics/basic-common-api-call.yaml b/samples/excel/01-basics/basic-common-api-call.yaml index 539bee657..86b1df00e 100644 --- a/samples/excel/01-basics/basic-common-api-call.yaml +++ b/samples/excel/01-basics/basic-common-api-call.yaml @@ -55,4 +55,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-axis-formatting.yaml b/samples/excel/10-chart/chart-axis-formatting.yaml index d82d312b1..b6f3b5d56 100644 --- a/samples/excel/10-chart/chart-axis-formatting.yaml +++ b/samples/excel/10-chart/chart-axis-formatting.yaml @@ -157,4 +157,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-axis.yaml b/samples/excel/10-chart/chart-axis.yaml index a9c093176..103105274 100644 --- a/samples/excel/10-chart/chart-axis.yaml +++ b/samples/excel/10-chart/chart-axis.yaml @@ -1,7 +1,7 @@ order: 1 id: excel-chart-axis name: Axis details -description: 'Gets, sets, and removes axis unit, label, and title in a chart.' +description: Gets, sets, and removes axis unit, label, and title in a chart. host: EXCEL api_set: ExcelApi: '1.7' diff --git a/samples/excel/10-chart/chart-bubble-chart.yaml b/samples/excel/10-chart/chart-bubble-chart.yaml index a9aa558ab..84a38133e 100644 --- a/samples/excel/10-chart/chart-bubble-chart.yaml +++ b/samples/excel/10-chart/chart-bubble-chart.yaml @@ -157,4 +157,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-create-several-charts.yaml b/samples/excel/10-chart/chart-create-several-charts.yaml index a8113bff5..078f6b308 100644 --- a/samples/excel/10-chart/chart-create-several-charts.yaml +++ b/samples/excel/10-chart/chart-create-several-charts.yaml @@ -1,7 +1,7 @@ order: 5 id: excel-chart-create-several-charts name: Create charts -description: 'Creates column-clustered, line, XY-scatter, area, radar, pie, 3D, cylinder, and 100% charts.' +description: Creates column-clustered, line, XY-scatter, area, radar, pie, 3D, cylinder, and 100% charts. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/10-chart/chart-data-labels.yaml b/samples/excel/10-chart/chart-data-labels.yaml index 43f109f55..e70e8eac5 100644 --- a/samples/excel/10-chart/chart-data-labels.yaml +++ b/samples/excel/10-chart/chart-data-labels.yaml @@ -275,4 +275,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-data-source.yaml b/samples/excel/10-chart/chart-data-source.yaml index d4bb53742..417b3e253 100644 --- a/samples/excel/10-chart/chart-data-source.yaml +++ b/samples/excel/10-chart/chart-data-source.yaml @@ -116,4 +116,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-data-table.yaml b/samples/excel/10-chart/chart-data-table.yaml index a48cae0f3..8e47b80eb 100644 --- a/samples/excel/10-chart/chart-data-table.yaml +++ b/samples/excel/10-chart/chart-data-table.yaml @@ -154,4 +154,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-formatting.yaml b/samples/excel/10-chart/chart-formatting.yaml index 5027e5948..6a6f00563 100644 --- a/samples/excel/10-chart/chart-formatting.yaml +++ b/samples/excel/10-chart/chart-formatting.yaml @@ -214,4 +214,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-leader-lines.yaml b/samples/excel/10-chart/chart-leader-lines.yaml index ad2ac18ea..dd096f4b5 100644 --- a/samples/excel/10-chart/chart-leader-lines.yaml +++ b/samples/excel/10-chart/chart-leader-lines.yaml @@ -182,4 +182,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-legend.yaml b/samples/excel/10-chart/chart-legend.yaml index b9dbc32d9..b62f39f8a 100644 --- a/samples/excel/10-chart/chart-legend.yaml +++ b/samples/excel/10-chart/chart-legend.yaml @@ -134,4 +134,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-series-markers.yaml b/samples/excel/10-chart/chart-series-markers.yaml index 8405b89cd..5ad48cfad 100644 --- a/samples/excel/10-chart/chart-series-markers.yaml +++ b/samples/excel/10-chart/chart-series-markers.yaml @@ -115,4 +115,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-series-plotorder.yaml b/samples/excel/10-chart/chart-series-plotorder.yaml index 40ff375f7..5aac92606 100644 --- a/samples/excel/10-chart/chart-series-plotorder.yaml +++ b/samples/excel/10-chart/chart-series-plotorder.yaml @@ -126,4 +126,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-series.yaml b/samples/excel/10-chart/chart-series.yaml index 2eb2a4ef6..2010d02e3 100644 --- a/samples/excel/10-chart/chart-series.yaml +++ b/samples/excel/10-chart/chart-series.yaml @@ -142,4 +142,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-trendlines.yaml b/samples/excel/10-chart/chart-trendlines.yaml index 5edbd97b9..c8755bb33 100644 --- a/samples/excel/10-chart/chart-trendlines.yaml +++ b/samples/excel/10-chart/chart-trendlines.yaml @@ -1,7 +1,7 @@ order: 14 id: excel-chart-trendlines name: Trendlines -description: 'Adds, gets, and formats trendlines in a chart.' +description: Adds, gets, and formats trendlines in a chart. host: EXCEL api_set: ExcelApi: '1.7' diff --git a/samples/excel/12-comments-and-notes/comment-basics.yaml b/samples/excel/12-comments-and-notes/comment-basics.yaml index f6f26b62f..ea27365f6 100644 --- a/samples/excel/12-comments-and-notes/comment-basics.yaml +++ b/samples/excel/12-comments-and-notes/comment-basics.yaml @@ -1,7 +1,7 @@ order: 1 id: excel-comment-basics name: Comment basics -description: 'Adds, edits, and removes comments.' +description: Adds, edits, and removes comments. host: EXCEL api_set: ExcelApi: '1.10' diff --git a/samples/excel/12-comments-and-notes/comment-mentions.yaml b/samples/excel/12-comments-and-notes/comment-mentions.yaml index 0ec354dba..7b6a09088 100644 --- a/samples/excel/12-comments-and-notes/comment-mentions.yaml +++ b/samples/excel/12-comments-and-notes/comment-mentions.yaml @@ -93,4 +93,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/12-comments-and-notes/comment-replies.yaml b/samples/excel/12-comments-and-notes/comment-replies.yaml index beed1063c..e3f10b0b7 100644 --- a/samples/excel/12-comments-and-notes/comment-replies.yaml +++ b/samples/excel/12-comments-and-notes/comment-replies.yaml @@ -1,7 +1,7 @@ order: 3 id: excel-comment-replies name: Comment replies -description: 'Adds, edits, and removes comment replies.' +description: Adds, edits, and removes comment replies. host: EXCEL api_set: ExcelApi: '1.10' diff --git a/samples/excel/12-comments-and-notes/comment-resolution.yaml b/samples/excel/12-comments-and-notes/comment-resolution.yaml index c77a480c3..2b7039fc3 100644 --- a/samples/excel/12-comments-and-notes/comment-resolution.yaml +++ b/samples/excel/12-comments-and-notes/comment-resolution.yaml @@ -104,4 +104,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/12-comments-and-notes/excel-note-basics.yaml b/samples/excel/12-comments-and-notes/excel-note-basics.yaml index d8a65e187..fc74c8521 100644 --- a/samples/excel/12-comments-and-notes/excel-note-basics.yaml +++ b/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -1,7 +1,7 @@ order: 5 id: excel-note-basics name: Notes -description: 'Adds, edits, and removes notes.' +description: Adds, edits, and removes notes. host: EXCEL api_set: ExcelApi: '1.18' diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml index 09600d694..bae922ff7 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml @@ -227,4 +227,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml index 97ceb9f63..5ea7fceef 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -346,4 +346,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/16-custom-functions/custom-enum.yaml b/samples/excel/16-custom-functions/custom-enum.yaml index 010b64081..f2e3cbb4e 100644 --- a/samples/excel/16-custom-functions/custom-enum.yaml +++ b/samples/excel/16-custom-functions/custom-enum.yaml @@ -87,4 +87,4 @@ libraries: | @types/core-js jquery@3.1.1 - @types/jquery@3.3.1 \ No newline at end of file + @types/jquery@3.3.1 diff --git a/samples/excel/16-custom-functions/custom-functions-errors.yaml b/samples/excel/16-custom-functions/custom-functions-errors.yaml index e1f5582b1..98c38b020 100644 --- a/samples/excel/16-custom-functions/custom-functions-errors.yaml +++ b/samples/excel/16-custom-functions/custom-functions-errors.yaml @@ -35,4 +35,4 @@ script: libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js - core-js@2.4.1/client/core.min.js \ No newline at end of file + core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/data-types-custom-functions.yaml b/samples/excel/16-custom-functions/data-types-custom-functions.yaml index 8d6745ff6..34796ff56 100644 --- a/samples/excel/16-custom-functions/data-types-custom-functions.yaml +++ b/samples/excel/16-custom-functions/data-types-custom-functions.yaml @@ -331,4 +331,4 @@ libraries: | @types/office-js core-js@2.4.1/client/core.min.js - @types/core-js \ No newline at end of file + @types/core-js diff --git a/samples/excel/16-custom-functions/streaming-function.yaml b/samples/excel/16-custom-functions/streaming-function.yaml index cdaf1ccb0..1e9740051 100644 --- a/samples/excel/16-custom-functions/streaming-function.yaml +++ b/samples/excel/16-custom-functions/streaming-function.yaml @@ -30,4 +30,4 @@ script: libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js - core-js@2.4.1/client/core.min.js \ No newline at end of file + core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/web-call-function.yaml b/samples/excel/16-custom-functions/web-call-function.yaml index faf57fbdb..6d25d23c8 100644 --- a/samples/excel/16-custom-functions/web-call-function.yaml +++ b/samples/excel/16-custom-functions/web-call-function.yaml @@ -30,4 +30,4 @@ script: libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js @types/office-js - core-js@2.4.1/client/core.min.js \ No newline at end of file + core-js@2.4.1/client/core.min.js diff --git a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml index dff02a2e5..94f01a2ff 100644 --- a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml +++ b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -1,7 +1,7 @@ order: 1 id: excel-custom-xml-parts-create-set-get-and-delete-custom-xml-parts name: Using custom XML parts -description: 'Creates, sets, gets, and deletes a custom XML part.' +description: Creates, sets, gets, and deletes a custom XML part. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml index 6bf4d1544..9df023ebf 100644 --- a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml +++ b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -133,4 +133,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-basic-types.yaml b/samples/excel/20-data-types/data-types-basic-types.yaml index 8c74f2173..b72203a60 100644 --- a/samples/excel/20-data-types/data-types-basic-types.yaml +++ b/samples/excel/20-data-types/data-types-basic-types.yaml @@ -359,4 +359,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-entity-attribution.yaml b/samples/excel/20-data-types/data-types-entity-attribution.yaml index 46adc2e94..93ceb5e26 100644 --- a/samples/excel/20-data-types/data-types-entity-attribution.yaml +++ b/samples/excel/20-data-types/data-types-entity-attribution.yaml @@ -225,4 +225,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-entity-icons.yaml b/samples/excel/20-data-types/data-types-entity-icons.yaml index 53cecd46b..704894f33 100644 --- a/samples/excel/20-data-types/data-types-entity-icons.yaml +++ b/samples/excel/20-data-types/data-types-entity-icons.yaml @@ -111,4 +111,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-entity-values.yaml b/samples/excel/20-data-types/data-types-entity-values.yaml index 9383863f7..793b288d0 100644 --- a/samples/excel/20-data-types/data-types-entity-values.yaml +++ b/samples/excel/20-data-types/data-types-entity-values.yaml @@ -1,7 +1,7 @@ order: 3 id: excel-data-types-entity-values name: 'Data types: Create entity cards from data in a table' -description: 'This sample shows how to create entity cards for each row in a table. An entity is a container for data types, similar to an object in object-oriented programming.' +description: This sample shows how to create entity cards for each row in a table. An entity is a container for data types, similar to an object in object-oriented programming. host: EXCEL api_set: ExcelApi: '1.16' diff --git a/samples/excel/20-data-types/data-types-error-values.yaml b/samples/excel/20-data-types/data-types-error-values.yaml index bcf1d28f6..c5dfce56c 100644 --- a/samples/excel/20-data-types/data-types-error-values.yaml +++ b/samples/excel/20-data-types/data-types-error-values.yaml @@ -1,7 +1,7 @@ order: 4 id: excel-data-types-error-values name: 'Data types: Set and change error values' -description: 'This sample shows how to set a cell value to an error data type, and then update the value of cells that contain an error data type.' +description: This sample shows how to set a cell value to an error data type, and then update the value of cells that contain an error data type. host: EXCEL api_set: ExcelApi: '1.16' diff --git a/samples/excel/20-data-types/data-types-formatted-number.yaml b/samples/excel/20-data-types/data-types-formatted-number.yaml index 12770b416..9c5e243aa 100644 --- a/samples/excel/20-data-types/data-types-formatted-number.yaml +++ b/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -148,4 +148,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-references.yaml b/samples/excel/20-data-types/data-types-references.yaml index 89a45c742..266750743 100644 --- a/samples/excel/20-data-types/data-types-references.yaml +++ b/samples/excel/20-data-types/data-types-references.yaml @@ -1,7 +1,7 @@ order: 7 id: excel-data-types-references name: 'Data types: Entity values with references' -description: 'This sample shows how to create entity values with references to other entity values. An entity value is a container for data, and this container can reference (or contain) other entities within the original entity. One entity can contain multiple additional entities.' +description: This sample shows how to create entity values with references to other entity values. An entity value is a container for data, and this container can reference (or contain) other entities within the original entity. One entity can contain multiple additional entities. host: EXCEL api_set: ExcelApi: '1.16' diff --git a/samples/excel/20-data-types/data-types-web-image.yaml b/samples/excel/20-data-types/data-types-web-image.yaml index 68b7f2fd1..fb64e6d37 100644 --- a/samples/excel/20-data-types/data-types-web-image.yaml +++ b/samples/excel/20-data-types/data-types-web-image.yaml @@ -186,4 +186,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/22-data-validation/data-validation.yaml b/samples/excel/22-data-validation/data-validation.yaml index 23d6089f9..4d344d30b 100644 --- a/samples/excel/22-data-validation/data-validation.yaml +++ b/samples/excel/22-data-validation/data-validation.yaml @@ -1,7 +1,7 @@ order: 1 id: excel-data-validation name: Data validation -description: 'Sets data validation rules on ranges, prompts users to enter valid data, and displays messages when invalid data is entered.' +description: Sets data validation rules on ranges, prompts users to enter valid data, and displays messages when invalid data is entered. host: EXCEL api_set: ExcelApi: '1.8' diff --git a/samples/excel/26-document/custom-properties.yaml b/samples/excel/26-document/custom-properties.yaml index 12d02e8bf..0901f91c1 100644 --- a/samples/excel/26-document/custom-properties.yaml +++ b/samples/excel/26-document/custom-properties.yaml @@ -133,4 +133,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/26-document/get-file-in-slices-async.yaml b/samples/excel/26-document/get-file-in-slices-async.yaml index 414ccec06..defcd7050 100644 --- a/samples/excel/26-document/get-file-in-slices-async.yaml +++ b/samples/excel/26-document/get-file-in-slices-async.yaml @@ -211,4 +211,4 @@ libraries: |- https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - https://unpkg.com/base64-js@1.2.1/base64js.min.js \ No newline at end of file + https://unpkg.com/base64-js@1.2.1/base64js.min.js diff --git a/samples/excel/26-document/properties.yaml b/samples/excel/26-document/properties.yaml index 41deb4f44..da1c1a4f3 100644 --- a/samples/excel/26-document/properties.yaml +++ b/samples/excel/26-document/properties.yaml @@ -172,4 +172,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/data-change-event-details.yaml b/samples/excel/30-events/data-change-event-details.yaml index d395f6c0c..931b58c9b 100644 --- a/samples/excel/30-events/data-change-event-details.yaml +++ b/samples/excel/30-events/data-change-event-details.yaml @@ -106,4 +106,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/data-changed.yaml b/samples/excel/30-events/data-changed.yaml index 6bf0e7f7b..468506f12 100644 --- a/samples/excel/30-events/data-changed.yaml +++ b/samples/excel/30-events/data-changed.yaml @@ -109,4 +109,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/event-column-and-row-sort.yaml b/samples/excel/30-events/event-column-and-row-sort.yaml index 9dda33d2c..046886aff 100644 --- a/samples/excel/30-events/event-column-and-row-sort.yaml +++ b/samples/excel/30-events/event-column-and-row-sort.yaml @@ -197,4 +197,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/event-worksheet-single-click.yaml b/samples/excel/30-events/event-worksheet-single-click.yaml index b6b7c3c03..19f110f30 100644 --- a/samples/excel/30-events/event-worksheet-single-click.yaml +++ b/samples/excel/30-events/event-worksheet-single-click.yaml @@ -67,4 +67,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-chart-activated.yaml b/samples/excel/30-events/events-chart-activated.yaml index 6ac14fd45..a9378e940 100644 --- a/samples/excel/30-events/events-chart-activated.yaml +++ b/samples/excel/30-events/events-chart-activated.yaml @@ -171,4 +171,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-chartcollection-added-activated.yaml b/samples/excel/30-events/events-chartcollection-added-activated.yaml index 49c754f27..1c0c78280 100644 --- a/samples/excel/30-events/events-chartcollection-added-activated.yaml +++ b/samples/excel/30-events/events-chartcollection-added-activated.yaml @@ -1,7 +1,7 @@ order: 1 id: excel-events-chartcollection-added-activated name: Chart collection events -description: 'Registers event handlers on a worksheet''s chart collection that run when any chart within is activated or deactivated, as well as when charts are added to or deleted from the collection.' +description: Registers event handlers on a worksheet's chart collection that run when any chart within is activated or deactivated, as well as when charts are added to or deleted from the collection. host: EXCEL api_set: ExcelApi: '1.8' diff --git a/samples/excel/30-events/events-comment-event-handler.yaml b/samples/excel/30-events/events-comment-event-handler.yaml index fbf4d77d1..89be09ffb 100644 --- a/samples/excel/30-events/events-comment-event-handler.yaml +++ b/samples/excel/30-events/events-comment-event-handler.yaml @@ -1,7 +1,7 @@ order: 4 id: excel-events-comments name: Comment events -description: 'Registers event handlers to listen for comment additions, changes, and deletions.' +description: Registers event handlers to listen for comment additions, changes, and deletions. host: EXCEL api_set: ExcelAPI: '1.12' diff --git a/samples/excel/30-events/events-disable-events.yaml b/samples/excel/30-events/events-disable-events.yaml index d7711daf1..681294088 100644 --- a/samples/excel/30-events/events-disable-events.yaml +++ b/samples/excel/30-events/events-disable-events.yaml @@ -178,4 +178,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-formula-changed.yaml b/samples/excel/30-events/events-formula-changed.yaml index 89e3f9d1f..e7c81a18d 100644 --- a/samples/excel/30-events/events-formula-changed.yaml +++ b/samples/excel/30-events/events-formula-changed.yaml @@ -122,4 +122,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-table-changed.yaml b/samples/excel/30-events/events-table-changed.yaml index 4f686e1ce..e7896c2a1 100644 --- a/samples/excel/30-events/events-table-changed.yaml +++ b/samples/excel/30-events/events-table-changed.yaml @@ -158,4 +158,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-tablecollection-changed.yaml b/samples/excel/30-events/events-tablecollection-changed.yaml index a382bcdf7..786274970 100644 --- a/samples/excel/30-events/events-tablecollection-changed.yaml +++ b/samples/excel/30-events/events-tablecollection-changed.yaml @@ -154,4 +154,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-workbook-activated.yaml b/samples/excel/30-events/events-workbook-activated.yaml index 72c944193..8f1f6ea6a 100644 --- a/samples/excel/30-events/events-workbook-activated.yaml +++ b/samples/excel/30-events/events-workbook-activated.yaml @@ -70,4 +70,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml b/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml index b158f3c05..bf85695b0 100644 --- a/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml +++ b/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -1,7 +1,7 @@ order: 14 id: excel-events-workbook-and-worksheet-collection name: Workbook and worksheet collection events -description: 'Registers event handlers that run when a worksheet is added, activated, or deactivated, or when the settings of a workbook are changed.' +description: Registers event handlers that run when a worksheet is added, activated, or deactivated, or when the settings of a workbook are changed. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/30-events/events-worksheet-protection.yaml b/samples/excel/30-events/events-worksheet-protection.yaml index 132db9fe9..636bc2b52 100644 --- a/samples/excel/30-events/events-worksheet-protection.yaml +++ b/samples/excel/30-events/events-worksheet-protection.yaml @@ -102,4 +102,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-worksheet.yaml b/samples/excel/30-events/events-worksheet.yaml index cbba6505e..ed4c09408 100644 --- a/samples/excel/30-events/events-worksheet.yaml +++ b/samples/excel/30-events/events-worksheet.yaml @@ -1,7 +1,7 @@ order: 15 id: excel-events-worksheet name: Worksheet events -description: 'Registers event handlers that run when data is changed in worksheet, the selected range changes in a worksheet, or the worksheet is recalculated.' +description: Registers event handlers that run when data is changed in worksheet, the selected range changes in a worksheet, or the worksheet is recalculated. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/30-events/selection-changed-events.yaml b/samples/excel/30-events/selection-changed-events.yaml index 7e8108677..ab7203010 100644 --- a/samples/excel/30-events/selection-changed-events.yaml +++ b/samples/excel/30-events/selection-changed-events.yaml @@ -146,4 +146,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/34-named-item/create-and-remove-named-item.yaml b/samples/excel/34-named-item/create-and-remove-named-item.yaml index 5cf8f5325..eadc487fa 100644 --- a/samples/excel/34-named-item/create-and-remove-named-item.yaml +++ b/samples/excel/34-named-item/create-and-remove-named-item.yaml @@ -1,7 +1,7 @@ order: 1 id: excel-named-item-create-and-remove-named-item -name: 'Create, access, and remove' -description: 'Creates, accesses, and removes named items in a worksheet.' +name: Create, access, and remove +description: Creates, accesses, and removes named items in a worksheet. host: EXCEL api_set: ExcelApi: '1.4' diff --git a/samples/excel/34-named-item/update-named-item.yaml b/samples/excel/34-named-item/update-named-item.yaml index 73235255d..331a88f32 100644 --- a/samples/excel/34-named-item/update-named-item.yaml +++ b/samples/excel/34-named-item/update-named-item.yaml @@ -126,4 +126,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-calculations.yaml b/samples/excel/38-pivottable/pivottable-calculations.yaml index 8fb52a748..d66f74eb9 100644 --- a/samples/excel/38-pivottable/pivottable-calculations.yaml +++ b/samples/excel/38-pivottable/pivottable-calculations.yaml @@ -201,4 +201,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-create-and-modify.yaml b/samples/excel/38-pivottable/pivottable-create-and-modify.yaml index b33e40bc4..ba7020057 100644 --- a/samples/excel/38-pivottable/pivottable-create-and-modify.yaml +++ b/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -265,4 +265,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml b/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml index aec8fbdae..5948578ce 100644 --- a/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml +++ b/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml @@ -220,4 +220,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-get-pivottables.yaml b/samples/excel/38-pivottable/pivottable-get-pivottables.yaml index 1d986789a..5748fce28 100644 --- a/samples/excel/38-pivottable/pivottable-get-pivottables.yaml +++ b/samples/excel/38-pivottable/pivottable-get-pivottables.yaml @@ -187,4 +187,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-pivotfilters.yaml b/samples/excel/38-pivottable/pivottable-pivotfilters.yaml index 61e561818..bb857275b 100644 --- a/samples/excel/38-pivottable/pivottable-pivotfilters.yaml +++ b/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -315,4 +315,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-pivotlayout.yaml b/samples/excel/38-pivottable/pivottable-pivotlayout.yaml index 2e45c708c..703c6bcc4 100644 --- a/samples/excel/38-pivottable/pivottable-pivotlayout.yaml +++ b/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -313,4 +313,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-refresh.yaml b/samples/excel/38-pivottable/pivottable-refresh.yaml index 45a15746e..13f6fb0b5 100644 --- a/samples/excel/38-pivottable/pivottable-refresh.yaml +++ b/samples/excel/38-pivottable/pivottable-refresh.yaml @@ -130,4 +130,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-slicer.yaml b/samples/excel/38-pivottable/pivottable-slicer.yaml index 587b6562b..1b057f748 100644 --- a/samples/excel/38-pivottable/pivottable-slicer.yaml +++ b/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -204,4 +204,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-source-data.yaml b/samples/excel/38-pivottable/pivottable-source-data.yaml index 2da0cde5e..238b79392 100644 --- a/samples/excel/38-pivottable/pivottable-source-data.yaml +++ b/samples/excel/38-pivottable/pivottable-source-data.yaml @@ -124,4 +124,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/cell-properties.yaml b/samples/excel/42-range/cell-properties.yaml index 700c067bf..bdf6baafb 100644 --- a/samples/excel/42-range/cell-properties.yaml +++ b/samples/excel/42-range/cell-properties.yaml @@ -183,4 +183,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/dynamic-arrays.yaml b/samples/excel/42-range/dynamic-arrays.yaml index 821802200..3d98c24ec 100644 --- a/samples/excel/42-range/dynamic-arrays.yaml +++ b/samples/excel/42-range/dynamic-arrays.yaml @@ -174,4 +174,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/insert-delete-clear-range.yaml b/samples/excel/42-range/insert-delete-clear-range.yaml index 7256c9820..2507db642 100644 --- a/samples/excel/42-range/insert-delete-clear-range.yaml +++ b/samples/excel/42-range/insert-delete-clear-range.yaml @@ -1,7 +1,7 @@ order: 8 id: excel-range-insert-delete-and-clear-range -name: 'Insert, delete, and clear' -description: 'Inserts, deletes, and clears a range.' +name: Insert, delete, and clear +description: Inserts, deletes, and clears a range. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/42-range/outline.yaml b/samples/excel/42-range/outline.yaml index 206088be3..e4d261065 100644 --- a/samples/excel/42-range/outline.yaml +++ b/samples/excel/42-range/outline.yaml @@ -229,4 +229,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/precedents.yaml b/samples/excel/42-range/precedents.yaml index 25e935188..0f694b5e1 100644 --- a/samples/excel/42-range/precedents.yaml +++ b/samples/excel/42-range/precedents.yaml @@ -206,4 +206,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-areas.yaml b/samples/excel/42-range/range-areas.yaml index 4b08ddc0a..1b3297ce9 100644 --- a/samples/excel/42-range/range-areas.yaml +++ b/samples/excel/42-range/range-areas.yaml @@ -1,7 +1,7 @@ order: 3 id: excel-range-areas name: Discontiguous ranges (RangeAreas) and special cells -description: 'Creates and uses RangeAreas, which are sets of ranges that need not be contiguous, through user selection and programmatic selection of special cells.' +description: Creates and uses RangeAreas, which are sets of ranges that need not be contiguous, through user selection and programmatic selection of special cells. host: EXCEL api_set: ExcelApi: '1.9' diff --git a/samples/excel/42-range/range-auto-fill.yaml b/samples/excel/42-range/range-auto-fill.yaml index aefdda342..b0c331649 100644 --- a/samples/excel/42-range/range-auto-fill.yaml +++ b/samples/excel/42-range/range-auto-fill.yaml @@ -145,4 +145,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-cell-control.yaml b/samples/excel/42-range/range-cell-control.yaml index a207ebd8e..ef4ee5a4d 100644 --- a/samples/excel/42-range/range-cell-control.yaml +++ b/samples/excel/42-range/range-cell-control.yaml @@ -161,4 +161,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-copyfrom.yaml b/samples/excel/42-range/range-copyfrom.yaml index 64c20d1da..391b6ef7a 100644 --- a/samples/excel/42-range/range-copyfrom.yaml +++ b/samples/excel/42-range/range-copyfrom.yaml @@ -216,4 +216,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-dependents.yaml b/samples/excel/42-range/range-dependents.yaml index b09070dd6..f798dd5e6 100644 --- a/samples/excel/42-range/range-dependents.yaml +++ b/samples/excel/42-range/range-dependents.yaml @@ -165,4 +165,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-direct-dependents.yaml b/samples/excel/42-range/range-direct-dependents.yaml index 339653430..8942430fe 100644 --- a/samples/excel/42-range/range-direct-dependents.yaml +++ b/samples/excel/42-range/range-direct-dependents.yaml @@ -158,4 +158,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-find.yaml b/samples/excel/42-range/range-find.yaml index 857401f22..1fde3e616 100644 --- a/samples/excel/42-range/range-find.yaml +++ b/samples/excel/42-range/range-find.yaml @@ -164,4 +164,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-get-range-edge.yaml b/samples/excel/42-range/range-get-range-edge.yaml index 1f28f89a2..d4f020020 100644 --- a/samples/excel/42-range/range-get-range-edge.yaml +++ b/samples/excel/42-range/range-get-range-edge.yaml @@ -1,7 +1,7 @@ order: 20 id: excel-range-get-range-edge name: Select used range edge -description: 'This sample shows how to select the edges of the used range, based on the currently selected range.' +description: This sample shows how to select the edges of the used range, based on the currently selected range. host: EXCEL api_set: ExcelAPI: '1.13' diff --git a/samples/excel/42-range/range-hyperlink.yaml b/samples/excel/42-range/range-hyperlink.yaml index a8d0c18c2..035a8cb50 100644 --- a/samples/excel/42-range/range-hyperlink.yaml +++ b/samples/excel/42-range/range-hyperlink.yaml @@ -1,7 +1,7 @@ order: 7 id: excel-range-hyperlink name: Hyperlinks -description: 'Creates, updates, and clears hyperlinks in a range.' +description: Creates, updates, and clears hyperlinks in a range. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/42-range/range-merged-ranges.yaml b/samples/excel/42-range/range-merged-ranges.yaml index c43bd925a..62db7860f 100644 --- a/samples/excel/42-range/range-merged-ranges.yaml +++ b/samples/excel/42-range/range-merged-ranges.yaml @@ -128,4 +128,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-relationships.yaml b/samples/excel/42-range/range-relationships.yaml index f21fd7176..24dcea2e1 100644 --- a/samples/excel/42-range/range-relationships.yaml +++ b/samples/excel/42-range/range-relationships.yaml @@ -1,7 +1,7 @@ order: 10 id: excel-range-range-relationships name: Range relationships -description: 'Shows relationships between ranges, such as bounding rectangles and intersections.' +description: Shows relationships between ranges, such as bounding rectangles and intersections. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/42-range/range-remove-duplicates.yaml b/samples/excel/42-range/range-remove-duplicates.yaml index f89dbda7c..c6fd18196 100644 --- a/samples/excel/42-range/range-remove-duplicates.yaml +++ b/samples/excel/42-range/range-remove-duplicates.yaml @@ -122,4 +122,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-text-orientation.yaml b/samples/excel/42-range/range-text-orientation.yaml index d10058503..a24409415 100644 --- a/samples/excel/42-range/range-text-orientation.yaml +++ b/samples/excel/42-range/range-text-orientation.yaml @@ -116,4 +116,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/selected-range.yaml b/samples/excel/42-range/selected-range.yaml index 6ae16734d..5b3dda01b 100644 --- a/samples/excel/42-range/selected-range.yaml +++ b/samples/excel/42-range/selected-range.yaml @@ -77,4 +77,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/set-get-values.yaml b/samples/excel/42-range/set-get-values.yaml index 5e44ab46d..78c79eefd 100644 --- a/samples/excel/42-range/set-get-values.yaml +++ b/samples/excel/42-range/set-get-values.yaml @@ -230,4 +230,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/style.yaml b/samples/excel/42-range/style.yaml index 67e2fdaaa..3254d3bb1 100644 --- a/samples/excel/42-range/style.yaml +++ b/samples/excel/42-range/style.yaml @@ -1,7 +1,7 @@ order: 14 id: excel-range-style name: Style -description: 'Creates a custom style, applies a custom and built-in styles to a range, gets style properties, and deletes the custom style.' +description: Creates a custom style, applies a custom and built-in styles to a range, gets style properties, and deletes the custom style. author: siewmoi host: EXCEL api_set: diff --git a/samples/excel/42-range/used-range.yaml b/samples/excel/42-range/used-range.yaml index d1761bbfe..643156e10 100644 --- a/samples/excel/42-range/used-range.yaml +++ b/samples/excel/42-range/used-range.yaml @@ -138,4 +138,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-create-and-delete.yaml b/samples/excel/44-shape/shape-create-and-delete.yaml index 2c07a8a7f..13f4500fb 100644 --- a/samples/excel/44-shape/shape-create-and-delete.yaml +++ b/samples/excel/44-shape/shape-create-and-delete.yaml @@ -133,4 +133,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-get-active.yaml b/samples/excel/44-shape/shape-get-active.yaml index c51fb0d3e..8b6ff0cd6 100644 --- a/samples/excel/44-shape/shape-get-active.yaml +++ b/samples/excel/44-shape/shape-get-active.yaml @@ -172,4 +172,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-groups.yaml b/samples/excel/44-shape/shape-groups.yaml index aa3b2d605..6fd30d1ad 100644 --- a/samples/excel/44-shape/shape-groups.yaml +++ b/samples/excel/44-shape/shape-groups.yaml @@ -148,4 +148,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-images.yaml b/samples/excel/44-shape/shape-images.yaml index 76da24989..a880febde 100644 --- a/samples/excel/44-shape/shape-images.yaml +++ b/samples/excel/44-shape/shape-images.yaml @@ -132,4 +132,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-move-and-order.yaml b/samples/excel/44-shape/shape-move-and-order.yaml index b674aded7..bab2c6c3b 100644 --- a/samples/excel/44-shape/shape-move-and-order.yaml +++ b/samples/excel/44-shape/shape-move-and-order.yaml @@ -163,4 +163,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-textboxes.yaml b/samples/excel/44-shape/shape-textboxes.yaml index 412051e0e..3193d3338 100644 --- a/samples/excel/44-shape/shape-textboxes.yaml +++ b/samples/excel/44-shape/shape-textboxes.yaml @@ -138,4 +138,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml index 4b5cf701f..c8a21f8e0 100644 --- a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml +++ b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml @@ -168,4 +168,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/create-table.yaml b/samples/excel/46-table/create-table.yaml index 7c458bb57..bca2b65b2 100644 --- a/samples/excel/46-table/create-table.yaml +++ b/samples/excel/46-table/create-table.yaml @@ -80,4 +80,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/filter-data.yaml b/samples/excel/46-table/filter-data.yaml index 781dc4ac6..d0efc48ee 100644 --- a/samples/excel/46-table/filter-data.yaml +++ b/samples/excel/46-table/filter-data.yaml @@ -125,4 +125,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/formatting.yaml b/samples/excel/46-table/formatting.yaml index 521c164d6..1e40a5350 100644 --- a/samples/excel/46-table/formatting.yaml +++ b/samples/excel/46-table/formatting.yaml @@ -101,4 +101,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/get-data-from-table.yaml b/samples/excel/46-table/get-data-from-table.yaml index 118e50b13..591ba0d07 100644 --- a/samples/excel/46-table/get-data-from-table.yaml +++ b/samples/excel/46-table/get-data-from-table.yaml @@ -114,4 +114,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml index 027847e85..23eb4f02c 100644 --- a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml +++ b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml @@ -137,4 +137,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/import-json-data.yaml b/samples/excel/46-table/import-json-data.yaml index 30e9bb971..70d69c39f 100644 --- a/samples/excel/46-table/import-json-data.yaml +++ b/samples/excel/46-table/import-json-data.yaml @@ -142,4 +142,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/resize-table.yaml b/samples/excel/46-table/resize-table.yaml index 1001e0bf0..2b15b90cd 100644 --- a/samples/excel/46-table/resize-table.yaml +++ b/samples/excel/46-table/resize-table.yaml @@ -97,4 +97,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/sort-data.yaml b/samples/excel/46-table/sort-data.yaml index 46bc63d41..43b994cf8 100644 --- a/samples/excel/46-table/sort-data.yaml +++ b/samples/excel/46-table/sort-data.yaml @@ -108,4 +108,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/create-get-change-delete-settings.yaml b/samples/excel/50-workbook/create-get-change-delete-settings.yaml index 6c5dcc12d..3797bcda7 100644 --- a/samples/excel/50-workbook/create-get-change-delete-settings.yaml +++ b/samples/excel/50-workbook/create-get-change-delete-settings.yaml @@ -1,7 +1,7 @@ order: 2 id: excel-settings-create-get-change-delete-settings name: Add-in settings -description: 'Creates, gets, changes, and deletes settings that are unique to the specific workbook and add-in combination.' +description: Creates, gets, changes, and deletes settings that are unique to the specific workbook and add-in combination. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/50-workbook/create-workbook.yaml b/samples/excel/50-workbook/create-workbook.yaml index c5a6315ac..bd56088c4 100644 --- a/samples/excel/50-workbook/create-workbook.yaml +++ b/samples/excel/50-workbook/create-workbook.yaml @@ -1,7 +1,7 @@ order: 4 id: excel-workbook-create-workbook name: Create workbook -description: 'Creates a new, empty workbook and creates a new workbook by copying an existing one.' +description: Creates a new, empty workbook and creates a new workbook by copying an existing one. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/50-workbook/culture-info-date-time.yaml b/samples/excel/50-workbook/culture-info-date-time.yaml index cde8c9289..036894f16 100644 --- a/samples/excel/50-workbook/culture-info-date-time.yaml +++ b/samples/excel/50-workbook/culture-info-date-time.yaml @@ -136,4 +136,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/culture-info.yaml b/samples/excel/50-workbook/culture-info.yaml index 8de992922..1ba143d4a 100644 --- a/samples/excel/50-workbook/culture-info.yaml +++ b/samples/excel/50-workbook/culture-info.yaml @@ -148,4 +148,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/data-protection.yaml b/samples/excel/50-workbook/data-protection.yaml index e22d27213..a87a43384 100644 --- a/samples/excel/50-workbook/data-protection.yaml +++ b/samples/excel/50-workbook/data-protection.yaml @@ -254,4 +254,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-built-in-functions.yaml b/samples/excel/50-workbook/workbook-built-in-functions.yaml index 3490d043b..48e46b992 100644 --- a/samples/excel/50-workbook/workbook-built-in-functions.yaml +++ b/samples/excel/50-workbook/workbook-built-in-functions.yaml @@ -117,4 +117,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-calculation.yaml b/samples/excel/50-workbook/workbook-calculation.yaml index 2d3b8aaea..02235ae2e 100644 --- a/samples/excel/50-workbook/workbook-calculation.yaml +++ b/samples/excel/50-workbook/workbook-calculation.yaml @@ -188,4 +188,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-get-active-cell.yaml b/samples/excel/50-workbook/workbook-get-active-cell.yaml index 66b67a49c..10e5df770 100644 --- a/samples/excel/50-workbook/workbook-get-active-cell.yaml +++ b/samples/excel/50-workbook/workbook-get-active-cell.yaml @@ -63,4 +63,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml index 7af9e084f..561a7d875 100644 --- a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml +++ b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml @@ -91,4 +91,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-save-and-close.yaml b/samples/excel/50-workbook/workbook-save-and-close.yaml index 2e126d2c7..817908238 100644 --- a/samples/excel/50-workbook/workbook-save-and-close.yaml +++ b/samples/excel/50-workbook/workbook-save-and-close.yaml @@ -85,4 +85,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml index 1c09d834a..1425fe93d 100644 --- a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml +++ b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml @@ -1,7 +1,7 @@ order: 2 id: excel-worksheet-add-delete-rename-move-worksheet -name: 'Add, delete, rename, and move worksheet' -description: 'Adds, deletes, renames, and moves a worksheet.' +name: Add, delete, rename, and move worksheet +description: Adds, deletes, renames, and moves a worksheet. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/54-worksheet/gridlines.yaml b/samples/excel/54-worksheet/gridlines.yaml index bc359b69d..7a25135b1 100644 --- a/samples/excel/54-worksheet/gridlines.yaml +++ b/samples/excel/54-worksheet/gridlines.yaml @@ -75,4 +75,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/list-worksheets.yaml b/samples/excel/54-worksheet/list-worksheets.yaml index d179c4d50..180475d1d 100644 --- a/samples/excel/54-worksheet/list-worksheets.yaml +++ b/samples/excel/54-worksheet/list-worksheets.yaml @@ -69,4 +69,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml index 3bf6f0473..fc9fca872 100644 --- a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml +++ b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -159,4 +159,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/tab-color.yaml b/samples/excel/54-worksheet/tab-color.yaml index 11f1917e8..ab336da87 100644 --- a/samples/excel/54-worksheet/tab-color.yaml +++ b/samples/excel/54-worksheet/tab-color.yaml @@ -105,4 +105,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-auto-filter.yaml b/samples/excel/54-worksheet/worksheet-auto-filter.yaml index a4e887a21..8434addeb 100644 --- a/samples/excel/54-worksheet/worksheet-auto-filter.yaml +++ b/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -209,4 +209,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-copy.yaml b/samples/excel/54-worksheet/worksheet-copy.yaml index 1fe3d9318..7053c450a 100644 --- a/samples/excel/54-worksheet/worksheet-copy.yaml +++ b/samples/excel/54-worksheet/worksheet-copy.yaml @@ -100,4 +100,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-find-all.yaml b/samples/excel/54-worksheet/worksheet-find-all.yaml index f47475263..6278ab9f6 100644 --- a/samples/excel/54-worksheet/worksheet-find-all.yaml +++ b/samples/excel/54-worksheet/worksheet-find-all.yaml @@ -144,4 +144,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-freeze-panes.yaml b/samples/excel/54-worksheet/worksheet-freeze-panes.yaml index 015d907c2..d1c4f5dcb 100644 --- a/samples/excel/54-worksheet/worksheet-freeze-panes.yaml +++ b/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -1,7 +1,7 @@ order: 6 id: excel-worksheet-freeze-panes name: Frozen panes -description: 'Freezes columns, rows, and a range of cells. Gets the address of the frozen pane. Unfreezes frozen panes.' +description: Freezes columns, rows, and a range of cells. Gets the address of the frozen pane. Unfreezes frozen panes. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/54-worksheet/worksheet-page-layout.yaml b/samples/excel/54-worksheet/worksheet-page-layout.yaml index 3d4a283ae..46beed753 100644 --- a/samples/excel/54-worksheet/worksheet-page-layout.yaml +++ b/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -207,4 +207,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-range-cell.yaml b/samples/excel/54-worksheet/worksheet-range-cell.yaml index a26ccb9e3..95f7ff500 100644 --- a/samples/excel/54-worksheet/worksheet-range-cell.yaml +++ b/samples/excel/54-worksheet/worksheet-range-cell.yaml @@ -1,7 +1,7 @@ order: 7 id: excel-worksheet-worksheet-range-cell name: Get range or cell -description: 'Gets the used range, the entire range of a worksheet, the specified range, and the specified cell.' +description: Gets the used range, the entire range of a worksheet, the specified range, and the specified cell. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/54-worksheet/worksheet-visibility.yaml b/samples/excel/54-worksheet/worksheet-visibility.yaml index 928d8a2fe..aeff5bbe7 100644 --- a/samples/excel/54-worksheet/worksheet-visibility.yaml +++ b/samples/excel/54-worksheet/worksheet-visibility.yaml @@ -120,4 +120,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/90-scenarios/currency-converter.yaml b/samples/excel/90-scenarios/currency-converter.yaml index a8ba2aa1b..1510dc666 100644 --- a/samples/excel/90-scenarios/currency-converter.yaml +++ b/samples/excel/90-scenarios/currency-converter.yaml @@ -184,4 +184,4 @@ libraries: |- https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css moment@2.18.1 - moment-msdate@0.2.2 \ No newline at end of file + moment-msdate@0.2.2 diff --git a/samples/excel/90-scenarios/multiple-property-set.yaml b/samples/excel/90-scenarios/multiple-property-set.yaml index e74a52b5c..9a48bb487 100644 --- a/samples/excel/90-scenarios/multiple-property-set.yaml +++ b/samples/excel/90-scenarios/multiple-property-set.yaml @@ -132,4 +132,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/90-scenarios/performance-optimization.yaml b/samples/excel/90-scenarios/performance-optimization.yaml index 2ae8fed6f..f7af6e94a 100644 --- a/samples/excel/90-scenarios/performance-optimization.yaml +++ b/samples/excel/90-scenarios/performance-optimization.yaml @@ -1,7 +1,7 @@ order: 1 id: excel-performance-optimization name: Performance optimization -description: 'Optimizes performance by untracking ranges, turning off screen painting, and switching the calculation mode.' +description: Optimizes performance by untracking ranges, turning off screen painting, and switching the calculation mode. host: EXCEL api_set: ExcelApi: '1.9' diff --git a/samples/excel/90-scenarios/report-generation.yaml b/samples/excel/90-scenarios/report-generation.yaml index 47027784b..88a83e495 100644 --- a/samples/excel/90-scenarios/report-generation.yaml +++ b/samples/excel/90-scenarios/report-generation.yaml @@ -1,7 +1,7 @@ order: 2 id: excel-scenarios-report-generation name: Report generation -description: 'Writes data to the workbook, reads and applies basic formatting, and adds a chart bound to that data.' +description: Writes data to the workbook, reads and applies basic formatting, and adds a chart bound to that data. author: OfficeDev host: EXCEL api_set: diff --git a/samples/excel/90-scenarios/working-with-dates.yaml b/samples/excel/90-scenarios/working-with-dates.yaml index 7c8c816b6..531ca8299 100644 --- a/samples/excel/90-scenarios/working-with-dates.yaml +++ b/samples/excel/90-scenarios/working-with-dates.yaml @@ -136,4 +136,4 @@ libraries: |- moment@2.18.1 - moment-msdate@0.2.2 \ No newline at end of file + moment-msdate@0.2.2 diff --git a/samples/excel/99-just-for-fun/color-wheel.yaml b/samples/excel/99-just-for-fun/color-wheel.yaml index 456c044bc..f4a2d1692 100644 --- a/samples/excel/99-just-for-fun/color-wheel.yaml +++ b/samples/excel/99-just-for-fun/color-wheel.yaml @@ -148,4 +148,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/gradient.yaml b/samples/excel/99-just-for-fun/gradient.yaml index d4905cfa3..cf94c9c6d 100644 --- a/samples/excel/99-just-for-fun/gradient.yaml +++ b/samples/excel/99-just-for-fun/gradient.yaml @@ -234,4 +234,4 @@ libraries: |- https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css https://unpkg.com/tinycolor2@1.4.1/tinycolor.js - @types/tinycolor2 \ No newline at end of file + @types/tinycolor2 diff --git a/samples/excel/99-just-for-fun/path-finder-game.yaml b/samples/excel/99-just-for-fun/path-finder-game.yaml index 8ea6024a2..3388e0af9 100644 --- a/samples/excel/99-just-for-fun/path-finder-game.yaml +++ b/samples/excel/99-just-for-fun/path-finder-game.yaml @@ -224,4 +224,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/patterns.yaml b/samples/excel/99-just-for-fun/patterns.yaml index f946e71c8..723400183 100644 --- a/samples/excel/99-just-for-fun/patterns.yaml +++ b/samples/excel/99-just-for-fun/patterns.yaml @@ -189,4 +189,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/tetrominos.yaml b/samples/excel/99-just-for-fun/tetrominos.yaml index 556180e9d..2ca35b401 100644 --- a/samples/excel/99-just-for-fun/tetrominos.yaml +++ b/samples/excel/99-just-for-fun/tetrominos.yaml @@ -791,4 +791,4 @@ libraries: |- https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js \ No newline at end of file + https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js diff --git a/samples/excel/default.yaml b/samples/excel/default.yaml index c68f87b37..3198ff5da 100644 --- a/samples/excel/default.yaml +++ b/samples/excel/default.yaml @@ -54,4 +54,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/onenote/default.yaml b/samples/onenote/default.yaml index 603dd6062..0b94d1a3f 100644 --- a/samples/onenote/default.yaml +++ b/samples/onenote/default.yaml @@ -52,4 +52,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/10-roaming-settings/roaming-settings.yaml b/samples/outlook/10-roaming-settings/roaming-settings.yaml index 5834cfab5..0933e6d36 100644 --- a/samples/outlook/10-roaming-settings/roaming-settings.yaml +++ b/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -1,6 +1,6 @@ id: outlook-roaming-settings-roaming-settings name: Use add-in settings -description: 'Gets, sets, saves, and removes add-in roaming settings.' +description: Gets, sets, saves, and removes add-in roaming settings. host: OUTLOOK api_set: Mailbox: '1.1' diff --git a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml index 4ebc0f45c..b928ad2fa 100644 --- a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml +++ b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -1,6 +1,6 @@ id: outlook-item-custom-properties-load-set-get-save name: Work with item custom properties -description: 'Gets the custom properties that the add-in placed on the current item, sets a new one, gets it, removes it, and saves all custom properties back to the item.' +description: Gets the custom properties that the add-in placed on the current item, sets a new one, gets it, removes it, and saves all custom properties back to the item. host: OUTLOOK api_set: Mailbox: '1.1' diff --git a/samples/outlook/20-item-body/add-inline-base64-image.yaml b/samples/outlook/20-item-body/add-inline-base64-image.yaml index a8b5ad9e6..f2703f677 100644 --- a/samples/outlook/20-item-body/add-inline-base64-image.yaml +++ b/samples/outlook/20-item-body/add-inline-base64-image.yaml @@ -97,4 +97,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/append-text-on-send.yaml b/samples/outlook/20-item-body/append-text-on-send.yaml index b571b4332..5c025a7ef 100644 --- a/samples/outlook/20-item-body/append-text-on-send.yaml +++ b/samples/outlook/20-item-body/append-text-on-send.yaml @@ -69,4 +69,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/get-body-format.yaml b/samples/outlook/20-item-body/get-body-format.yaml index b1cbc7506..47d4cf236 100644 --- a/samples/outlook/20-item-body/get-body-format.yaml +++ b/samples/outlook/20-item-body/get-body-format.yaml @@ -52,4 +52,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/get-selected-data.yaml b/samples/outlook/20-item-body/get-selected-data.yaml index 8334e9509..1a0e40c01 100644 --- a/samples/outlook/20-item-body/get-selected-data.yaml +++ b/samples/outlook/20-item-body/get-selected-data.yaml @@ -53,4 +53,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/prepend-text-on-send.yaml b/samples/outlook/20-item-body/prepend-text-on-send.yaml index 92a893f35..3d282886b 100644 --- a/samples/outlook/20-item-body/prepend-text-on-send.yaml +++ b/samples/outlook/20-item-body/prepend-text-on-send.yaml @@ -69,4 +69,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml index 43c3bbc13..d06c16a6d 100644 --- a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml +++ b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml @@ -71,4 +71,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/replace-selected-text.yaml b/samples/outlook/20-item-body/replace-selected-text.yaml index 6ee568518..34d024049 100644 --- a/samples/outlook/20-item-body/replace-selected-text.yaml +++ b/samples/outlook/20-item-body/replace-selected-text.yaml @@ -75,4 +75,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/25-item-save-and-close/close-async.yaml b/samples/outlook/25-item-save-and-close/close-async.yaml index 109be2bbd..3fe6ed8c0 100644 --- a/samples/outlook/25-item-save-and-close/close-async.yaml +++ b/samples/outlook/25-item-save-and-close/close-async.yaml @@ -54,4 +54,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/25-item-save-and-close/save.yaml b/samples/outlook/25-item-save-and-close/save.yaml index 0acf244d8..46ee419e8 100644 --- a/samples/outlook/25-item-save-and-close/save.yaml +++ b/samples/outlook/25-item-save-and-close/save.yaml @@ -50,4 +50,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml index 0854d08d0..389395766 100644 --- a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml @@ -121,4 +121,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml index abcd7294b..3a740a408 100644 --- a/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml @@ -48,4 +48,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml index 2a87d7879..42763337a 100644 --- a/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml @@ -51,4 +51,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml index dd87d8298..518027c02 100644 --- a/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml @@ -46,4 +46,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml index 9fd59b1ec..4bbed2e4b 100644 --- a/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml @@ -54,4 +54,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml index 0e6a7d54a..1dd835d97 100644 --- a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml @@ -45,4 +45,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml index 8cec1f366..26113821c 100644 --- a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml @@ -51,4 +51,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml index 2766205fe..3292f062d 100644 --- a/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml @@ -54,4 +54,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml index ccabbe93a..4fe385b64 100644 --- a/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml @@ -45,4 +45,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml index 372652cfa..4b32e4907 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml @@ -74,4 +74,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml index 48b2b66a6..b55dea048 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml @@ -74,4 +74,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml index dcf2c48f8..bc9aba7ac 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml @@ -80,4 +80,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml index 5773f7fc4..8257b8c87 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml @@ -80,4 +80,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml index 8ff0b7f56..c390cf2ac 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml @@ -74,4 +74,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml index 37807769a..dbb6417e7 100644 --- a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml @@ -83,4 +83,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/35-notifications/add-getall-remove.yaml b/samples/outlook/35-notifications/add-getall-remove.yaml index 84cdf8208..0748aa395 100644 --- a/samples/outlook/35-notifications/add-getall-remove.yaml +++ b/samples/outlook/35-notifications/add-getall-remove.yaml @@ -1,6 +1,6 @@ id: outlook-notifications-add-getall-remove name: Work with notification messages -description: 'Adds different kinds of notification messages, gets all notifications, and replaces and removes an individual notification message.' +description: Adds different kinds of notification messages, gets all notifications, and replaces and removes an individual notification message. host: OUTLOOK api_set: Mailbox: '1.10' diff --git a/samples/outlook/40-attachments/attachments-compose.yaml b/samples/outlook/40-attachments/attachments-compose.yaml index 4896c2b54..cb2133d03 100644 --- a/samples/outlook/40-attachments/attachments-compose.yaml +++ b/samples/outlook/40-attachments/attachments-compose.yaml @@ -1,6 +1,6 @@ id: outlook-attachments-attachments-compose name: Manipulate attachments (Item Compose) -description: 'Adds, gets, and removes attachments from a message or an appointment in Compose mode.' +description: Adds, gets, and removes attachments from a message or an appointment in Compose mode. host: OUTLOOK api_set: Mailbox: '1.8' diff --git a/samples/outlook/40-attachments/get-attachment-content.yaml b/samples/outlook/40-attachments/get-attachment-content.yaml index beee2236a..1e1cc2b27 100644 --- a/samples/outlook/40-attachments/get-attachment-content.yaml +++ b/samples/outlook/40-attachments/get-attachment-content.yaml @@ -104,4 +104,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/40-attachments/get-attachments-read.yaml b/samples/outlook/40-attachments/get-attachments-read.yaml index e8c1b3872..005ae16ed 100644 --- a/samples/outlook/40-attachments/get-attachments-read.yaml +++ b/samples/outlook/40-attachments/get-attachments-read.yaml @@ -56,4 +56,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/45-categories/work-with-categories.yaml b/samples/outlook/45-categories/work-with-categories.yaml index 6fcbcedc6..5c8e29fc7 100644 --- a/samples/outlook/45-categories/work-with-categories.yaml +++ b/samples/outlook/45-categories/work-with-categories.yaml @@ -1,7 +1,7 @@ order: 1 id: outlook-categories-work-with-categories name: Work with item categories -description: 'Gets, adds, and removes categories assigned to the item.' +description: Gets, adds, and removes categories assigned to the item. host: OUTLOOK api_set: Mailbox: '1.8' diff --git a/samples/outlook/45-categories/work-with-master-categories.yaml b/samples/outlook/45-categories/work-with-master-categories.yaml index fbe2aec19..3fd458afd 100644 --- a/samples/outlook/45-categories/work-with-master-categories.yaml +++ b/samples/outlook/45-categories/work-with-master-categories.yaml @@ -1,7 +1,7 @@ order: 2 id: outlook-categories-work-with-master-categories name: Work with the categories master list -description: 'Gets, adds, and removes categories in the master list for the mailbox.' +description: Gets, adds, and removes categories in the master list for the mailbox. host: OUTLOOK api_set: Mailbox: '1.8' diff --git a/samples/outlook/50-recurrence/get-recurrence-read.yaml b/samples/outlook/50-recurrence/get-recurrence-read.yaml index 00b300640..ea91e9dc3 100644 --- a/samples/outlook/50-recurrence/get-recurrence-read.yaml +++ b/samples/outlook/50-recurrence/get-recurrence-read.yaml @@ -52,4 +52,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/50-recurrence/get-series-id.yaml b/samples/outlook/50-recurrence/get-series-id.yaml index a67e04c8a..f702e3b58 100644 --- a/samples/outlook/50-recurrence/get-series-id.yaml +++ b/samples/outlook/50-recurrence/get-series-id.yaml @@ -51,4 +51,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml b/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml index b6644d8a1..f8a417a86 100644 --- a/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml +++ b/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -96,4 +96,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-existing-appointment.yaml b/samples/outlook/55-display-items/display-existing-appointment.yaml index c3e0b1e82..0539b19ec 100644 --- a/samples/outlook/55-display-items/display-existing-appointment.yaml +++ b/samples/outlook/55-display-items/display-existing-appointment.yaml @@ -65,4 +65,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-existing-message.yaml b/samples/outlook/55-display-items/display-existing-message.yaml index 80e96c502..7fb9f46e1 100644 --- a/samples/outlook/55-display-items/display-existing-message.yaml +++ b/samples/outlook/55-display-items/display-existing-message.yaml @@ -65,4 +65,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-new-appointment.yaml b/samples/outlook/55-display-items/display-new-appointment.yaml index 7b55e2860..770c12e9a 100644 --- a/samples/outlook/55-display-items/display-new-appointment.yaml +++ b/samples/outlook/55-display-items/display-new-appointment.yaml @@ -85,4 +85,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-new-message.yaml b/samples/outlook/55-display-items/display-new-message.yaml index 7ec9c407c..5aca34788 100644 --- a/samples/outlook/55-display-items/display-new-message.yaml +++ b/samples/outlook/55-display-items/display-new-message.yaml @@ -1,7 +1,7 @@ order: 1 id: outlook-display-items-display-new-message name: Create a new message -description: 'Opens a new message form with a sample content, recipients, and an inline image attachment' +description: Opens a new message form with a sample content, recipients, and an inline image attachment host: OUTLOOK api_set: Mailbox: '1.9' diff --git a/samples/outlook/55-display-items/display-reply-forms.yaml b/samples/outlook/55-display-items/display-reply-forms.yaml index 4f8dd7af6..1c8d46bfb 100644 --- a/samples/outlook/55-display-items/display-reply-forms.yaml +++ b/samples/outlook/55-display-items/display-reply-forms.yaml @@ -77,4 +77,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-reply-with-attachments.yaml b/samples/outlook/55-display-items/display-reply-with-attachments.yaml index f6a140f8e..a8c28a08d 100644 --- a/samples/outlook/55-display-items/display-reply-with-attachments.yaml +++ b/samples/outlook/55-display-items/display-reply-with-attachments.yaml @@ -206,4 +206,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/60-sensitivity-label/sensitivity-label.yaml b/samples/outlook/60-sensitivity-label/sensitivity-label.yaml index 3eff3cfa4..8b0db6aaa 100644 --- a/samples/outlook/60-sensitivity-label/sensitivity-label.yaml +++ b/samples/outlook/60-sensitivity-label/sensitivity-label.yaml @@ -91,4 +91,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml b/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml index 6cc2ea515..beb6aef86 100644 --- a/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml +++ b/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml @@ -74,4 +74,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml index 7ebaf45f8..a38fcc94e 100644 --- a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml +++ b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -57,4 +57,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml index 2c6432fe6..12d2e2a8a 100644 --- a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml +++ b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml @@ -66,4 +66,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml index 9a82619a5..9869ae0e5 100644 --- a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml +++ b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -1,6 +1,6 @@ id: outlook-mime-headers-manage-custom-internet-headers-message-compose name: Work with custom internet headers -description: 'Sets, gets, and removes custom internet headers on a message in Compose mode.' +description: Sets, gets, and removes custom internet headers on a message in Compose mode. host: OUTLOOK api_set: Mailbox: '1.8' diff --git a/samples/outlook/75-regex-matches/contextual.yaml b/samples/outlook/75-regex-matches/contextual.yaml index f83c31234..4be7a3f0a 100644 --- a/samples/outlook/75-regex-matches/contextual.yaml +++ b/samples/outlook/75-regex-matches/contextual.yaml @@ -1,5 +1,5 @@ id: outlook-regex-matches-contextual -name: 'Get regex matches (Item Read, contextual)' +name: Get regex matches (Item Read, contextual) description: Gets regex matches when the add-in is opened as a contextual add-in. host: OUTLOOK api_set: diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml index c7cba1a0c..07a5a11d6 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml +++ b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml @@ -75,4 +75,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml index c0744d2be..57259939d 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml +++ b/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml @@ -79,4 +79,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml b/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml index 7b05c488c..90a24f5f7 100644 --- a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml +++ b/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml @@ -1,7 +1,7 @@ order: 1 id: outlook-tokens-and-service-calls-ids-and-urls name: Endpoint URLs and item IDs -description: 'Retrieves and displays the Exchange Web Services (EWS) endpoint URL and item IDs, and converts item IDs for different protocols.' +description: Retrieves and displays the Exchange Web Services (EWS) endpoint URL and item IDs, and converts item IDs for different protocols. host: OUTLOOK api_set: Mailbox: '1.5' diff --git a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml index 1b023e5a6..a4fd49450 100644 --- a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml @@ -64,4 +64,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml index e008862db..90feb4ccb 100644 --- a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml @@ -67,4 +67,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml b/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml index e7e7e9cb3..986a3bcbc 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml @@ -55,4 +55,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml b/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml index 4ccdc8fd4..b37f4f878 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml @@ -54,4 +54,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml index 186e35414..c5861ddc6 100644 --- a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml +++ b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml @@ -112,4 +112,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml index e03300997..31a6bfe6b 100644 --- a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml +++ b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -1,7 +1,7 @@ order: 13 id: outlook-other-item-apis-get-add-remove-enhancedlocation-appointment name: Manage the locations of an appointment -description: 'Gets, adds, and removes locations on an appointment (enhancedLocation API).' +description: Gets, adds, and removes locations on an appointment (enhancedLocation API). host: OUTLOOK api_set: Mailbox: '1.8' diff --git a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml index 047455858..7b5fee263 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-conversation-index.yaml b/samples/outlook/90-other-item-apis/get-conversation-index.yaml index f3ed7d215..033a58ce8 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-index.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-index.yaml @@ -58,4 +58,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml b/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml index 757d0bec4..da459a365 100644 --- a/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml +++ b/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml b/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml index da56959ec..dd97e6de5 100644 --- a/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml +++ b/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml b/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml index 35bfa5c04..dea58a0d0 100644 --- a/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml +++ b/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml @@ -65,4 +65,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-eml-format.yaml b/samples/outlook/90-other-item-apis/get-eml-format.yaml index aae4995c2..6d06770a7 100644 --- a/samples/outlook/90-other-item-apis/get-eml-format.yaml +++ b/samples/outlook/90-other-item-apis/get-eml-format.yaml @@ -51,4 +51,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-end-read.yaml b/samples/outlook/90-other-item-apis/get-end-read.yaml index 63c196abe..e66f3af01 100644 --- a/samples/outlook/90-other-item-apis/get-end-read.yaml +++ b/samples/outlook/90-other-item-apis/get-end-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-in-reply-to.yaml b/samples/outlook/90-other-item-apis/get-in-reply-to.yaml index 5128ab698..02a3b9d8a 100644 --- a/samples/outlook/90-other-item-apis/get-in-reply-to.yaml +++ b/samples/outlook/90-other-item-apis/get-in-reply-to.yaml @@ -51,4 +51,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml b/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml index cdf9a999b..37a258bd1 100644 --- a/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml +++ b/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-class-async.yaml b/samples/outlook/90-other-item-apis/get-item-class-async.yaml index 8d232618c..7c221cfce 100644 --- a/samples/outlook/90-other-item-apis/get-item-class-async.yaml +++ b/samples/outlook/90-other-item-apis/get-item-class-async.yaml @@ -53,4 +53,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-class-read.yaml b/samples/outlook/90-other-item-apis/get-item-class-read.yaml index 8638e4f3c..70e0759ba 100644 --- a/samples/outlook/90-other-item-apis/get-item-class-read.yaml +++ b/samples/outlook/90-other-item-apis/get-item-class-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-type.yaml b/samples/outlook/90-other-item-apis/get-item-type.yaml index fb9a71d53..806a76a70 100644 --- a/samples/outlook/90-other-item-apis/get-item-type.yaml +++ b/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -51,4 +51,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml b/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml index 397604bbd..a568ae296 100644 --- a/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml +++ b/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml @@ -1,6 +1,6 @@ order: 31 id: outlook-other-item-apis-get-loaded-message-properties -name: 'Get properties of a loaded message (Message Compose, Message Read)' +name: Get properties of a loaded message (Message Compose, Message Read) description: Gets the properties of the currently loaded message. host: OUTLOOK api_set: diff --git a/samples/outlook/90-other-item-apis/get-location-read.yaml b/samples/outlook/90-other-item-apis/get-location-read.yaml index 77b04d4ad..8647470b2 100644 --- a/samples/outlook/90-other-item-apis/get-location-read.yaml +++ b/samples/outlook/90-other-item-apis/get-location-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-message-properties.yaml b/samples/outlook/90-other-item-apis/get-message-properties.yaml index 223509302..652c9e01b 100644 --- a/samples/outlook/90-other-item-apis/get-message-properties.yaml +++ b/samples/outlook/90-other-item-apis/get-message-properties.yaml @@ -1,6 +1,6 @@ order: 23 id: outlook-other-item-apis-get-message-properties -name: 'Get properties of selected messages (Message Compose, Message Read)' +name: Get properties of selected messages (Message Compose, Message Read) description: Gets the properties of multiple selected messages. host: OUTLOOK api_set: diff --git a/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml b/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml index e531c0cfe..38c75c1e6 100644 --- a/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml +++ b/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml index c54f8bf46..22f02f686 100644 --- a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml @@ -73,4 +73,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml index 7d2617559..10abec6e5 100644 --- a/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml @@ -65,4 +65,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml b/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml index 31735089f..bccf5570f 100644 --- a/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml +++ b/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml @@ -69,4 +69,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml index ad3713570..d58d33125 100644 --- a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml @@ -66,4 +66,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml b/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml index 7d8efcc66..1a00f3831 100644 --- a/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml +++ b/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml @@ -65,4 +65,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-start-read.yaml b/samples/outlook/90-other-item-apis/get-start-read.yaml index bee75989c..bc2cd169c 100644 --- a/samples/outlook/90-other-item-apis/get-start-read.yaml +++ b/samples/outlook/90-other-item-apis/get-start-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-subject-read.yaml b/samples/outlook/90-other-item-apis/get-subject-read.yaml index c9146810a..08f83b678 100644 --- a/samples/outlook/90-other-item-apis/get-subject-read.yaml +++ b/samples/outlook/90-other-item-apis/get-subject-read.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/item-id-compose.yaml b/samples/outlook/90-other-item-apis/item-id-compose.yaml index 8e44d1b6e..b2407b014 100644 --- a/samples/outlook/90-other-item-apis/item-id-compose.yaml +++ b/samples/outlook/90-other-item-apis/item-id-compose.yaml @@ -52,4 +52,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/send-async.yaml b/samples/outlook/90-other-item-apis/send-async.yaml index da6d56dc9..41ef2e0a8 100644 --- a/samples/outlook/90-other-item-apis/send-async.yaml +++ b/samples/outlook/90-other-item-apis/send-async.yaml @@ -50,4 +50,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/session-data-apis.yaml b/samples/outlook/90-other-item-apis/session-data-apis.yaml index 213e66b38..d89b45d0c 100644 --- a/samples/outlook/90-other-item-apis/session-data-apis.yaml +++ b/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -1,7 +1,7 @@ order: 20 id: outlook-other-item-apis-session-data-apis name: Work with session data APIs (Compose) -description: 'Sets, gets, gets all, removes, and clears session data in Compose mode.' +description: Sets, gets, gets all, removes, and clears session data in Compose mode. host: OUTLOOK api_set: Mailbox: '1.11' diff --git a/samples/outlook/90-other-item-apis/set-selected-data.yaml b/samples/outlook/90-other-item-apis/set-selected-data.yaml index 8a0af7b5c..7d2be55ff 100644 --- a/samples/outlook/90-other-item-apis/set-selected-data.yaml +++ b/samples/outlook/90-other-item-apis/set-selected-data.yaml @@ -51,4 +51,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml index 3177c168b..63cfa93df 100644 --- a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml +++ b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -1,7 +1,7 @@ order: 19 id: outlook-other-item-apis-work-with-client-signatures name: Work with client signatures (Compose) -description: 'Checks if the client signature is enabled, disables the client signature, gets the compose type, and sets a signature in Compose mode.' +description: Checks if the client signature is enabled, disables the client signature, gets the compose type, and sets a signature in Compose mode. host: OUTLOOK api_set: Mailbox: '1.10' diff --git a/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml b/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml index 7cf1ad0a1..d9d8c44aa 100644 --- a/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml +++ b/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml @@ -66,4 +66,4 @@ libraries: |- @types/office-js-preview https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml b/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml index cdac8aa8d..fcb27dd05 100644 --- a/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml +++ b/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -83,4 +83,4 @@ libraries: |- @types/office-js-preview https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/basics/basic-api-call-js.yaml b/samples/powerpoint/basics/basic-api-call-js.yaml index a07f9456e..903944372 100644 --- a/samples/powerpoint/basics/basic-api-call-js.yaml +++ b/samples/powerpoint/basics/basic-api-call-js.yaml @@ -64,4 +64,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/basics/basic-api-call-ts.yaml b/samples/powerpoint/basics/basic-api-call-ts.yaml index 2ca0fd607..9fce2f953 100644 --- a/samples/powerpoint/basics/basic-api-call-ts.yaml +++ b/samples/powerpoint/basics/basic-api-call-ts.yaml @@ -64,4 +64,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/basics/basic-common-api-call.yaml b/samples/powerpoint/basics/basic-common-api-call.yaml index c3107a43e..304c0f1d5 100644 --- a/samples/powerpoint/basics/basic-common-api-call.yaml +++ b/samples/powerpoint/basics/basic-common-api-call.yaml @@ -44,4 +44,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/default.yaml b/samples/powerpoint/default.yaml index 0a15973de..cbf9fc811 100644 --- a/samples/powerpoint/default.yaml +++ b/samples/powerpoint/default.yaml @@ -42,4 +42,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/document/create-presentation.yaml b/samples/powerpoint/document/create-presentation.yaml index 678eb64d7..debc2bff0 100644 --- a/samples/powerpoint/document/create-presentation.yaml +++ b/samples/powerpoint/document/create-presentation.yaml @@ -1,6 +1,6 @@ id: powerpoint-create-presentation name: Create presentation -description: 'Creates a new, empty presentation and creates a new presentation by copying an existing one.' +description: Creates a new, empty presentation and creates a new presentation by copying an existing one. author: OfficeDev host: POWERPOINT api_set: diff --git a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml index f8f486309..d10d316b4 100644 --- a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml +++ b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml @@ -64,4 +64,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/images/insert-image.yaml b/samples/powerpoint/images/insert-image.yaml index f0677e897..bc432ec35 100644 --- a/samples/powerpoint/images/insert-image.yaml +++ b/samples/powerpoint/images/insert-image.yaml @@ -57,4 +57,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/images/insert-svg.yaml b/samples/powerpoint/images/insert-svg.yaml index 4cbc8c87c..d3d66522e 100644 --- a/samples/powerpoint/images/insert-svg.yaml +++ b/samples/powerpoint/images/insert-svg.yaml @@ -61,4 +61,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml index e2883fb55..79139a157 100644 --- a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml +++ b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml @@ -248,4 +248,4 @@ libraries: |- https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css - https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js \ No newline at end of file + https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js diff --git a/samples/powerpoint/shapes/add-modify-tables.yaml b/samples/powerpoint/shapes/add-modify-tables.yaml index c0b652d34..df292f525 100644 --- a/samples/powerpoint/shapes/add-modify-tables.yaml +++ b/samples/powerpoint/shapes/add-modify-tables.yaml @@ -414,4 +414,4 @@ libraries: |- office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css core-js@2.4.1/client/core.min.js - @types/core-js \ No newline at end of file + @types/core-js diff --git a/samples/powerpoint/shapes/binding-to-shapes.yaml b/samples/powerpoint/shapes/binding-to-shapes.yaml index 10e205150..6059ca2ba 100644 --- a/samples/powerpoint/shapes/binding-to-shapes.yaml +++ b/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -367,4 +367,4 @@ libraries: | office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css core-js@2.4.1/client/core.min.js - @types/core-js \ No newline at end of file + @types/core-js diff --git a/samples/powerpoint/shapes/get-set-shapes.yaml b/samples/powerpoint/shapes/get-set-shapes.yaml index 41790cdec..4e24db0c5 100644 --- a/samples/powerpoint/shapes/get-set-shapes.yaml +++ b/samples/powerpoint/shapes/get-set-shapes.yaml @@ -1,6 +1,6 @@ order: 2 id: powerpoint-shapes-get-set-shapes -name: 'Get, set, load, and save shapes' +name: Get, set, load, and save shapes description: Get and set one or more selected shapes. Load and save one or more shapes. host: POWERPOINT api_set: diff --git a/samples/powerpoint/shapes/get-shapes-by-type.yaml b/samples/powerpoint/shapes/get-shapes-by-type.yaml index 9bca1519a..747202762 100644 --- a/samples/powerpoint/shapes/get-shapes-by-type.yaml +++ b/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -1,7 +1,7 @@ order: 3 id: powerpoint-shapes-get-shapes-by-type name: Select shapes by type -description: 'Gets shapes in a slide based on their type, such as GeometricShape or Line.' +description: Gets shapes in a slide based on their type, such as GeometricShape or Line. host: POWERPOINT api_set: PowerPointApi: '1.4' diff --git a/samples/powerpoint/shapes/group-ungroup-shapes.yaml b/samples/powerpoint/shapes/group-ungroup-shapes.yaml index 17592fc3b..6d8e8f3fe 100644 --- a/samples/powerpoint/shapes/group-ungroup-shapes.yaml +++ b/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -190,4 +190,4 @@ libraries: |- @types/office-js https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/shapes/shapes.yaml b/samples/powerpoint/shapes/shapes.yaml index 80a1cc305..da2850890 100644 --- a/samples/powerpoint/shapes/shapes.yaml +++ b/samples/powerpoint/shapes/shapes.yaml @@ -1,7 +1,7 @@ order: 1 id: powerpoint-shapes -name: 'Insert shape, line, and text box' -description: 'Inserts geometric shapes, lines, and text boxes to a slide.' +name: Insert shape, line, and text box +description: Inserts geometric shapes, lines, and text boxes to a slide. host: POWERPOINT api_set: PowerPointApi: '1.4' diff --git a/samples/powerpoint/slide-management/add-slides.yaml b/samples/powerpoint/slide-management/add-slides.yaml index 8a4027b13..ab7faeaa3 100644 --- a/samples/powerpoint/slide-management/add-slides.yaml +++ b/samples/powerpoint/slide-management/add-slides.yaml @@ -101,4 +101,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/slide-management/export-import-slide.yaml b/samples/powerpoint/slide-management/export-import-slide.yaml index 36711aca3..20ba32a3a 100644 --- a/samples/powerpoint/slide-management/export-import-slide.yaml +++ b/samples/powerpoint/slide-management/export-import-slide.yaml @@ -303,4 +303,4 @@ libraries: |- office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css core-js@2.4.1/client/core.min.js - @types/core-js \ No newline at end of file + @types/core-js diff --git a/samples/powerpoint/slide-management/get-set-slides.yaml b/samples/powerpoint/slide-management/get-set-slides.yaml index b4a63000f..9010a097e 100644 --- a/samples/powerpoint/slide-management/get-set-slides.yaml +++ b/samples/powerpoint/slide-management/get-set-slides.yaml @@ -1,6 +1,6 @@ order: 4 id: powerpoint-slide-management-get-set-slides -name: 'Get, set, load, and save slides' +name: Get, set, load, and save slides description: Get and set one or more selected slides. Load and save one or more slides. host: POWERPOINT api_set: diff --git a/samples/powerpoint/slide-management/get-slide-metadata.yaml b/samples/powerpoint/slide-management/get-slide-metadata.yaml index 1e86a7752..9a83ed396 100644 --- a/samples/powerpoint/slide-management/get-slide-metadata.yaml +++ b/samples/powerpoint/slide-management/get-slide-metadata.yaml @@ -1,7 +1,7 @@ order: 3 id: powerpoint-basics-get-slide-metadata name: Get slide metadata -description: 'Gets the title, index, and ID of the selected slides.' +description: Gets the title, index, and ID of the selected slides. author: OfficeDev host: POWERPOINT api_set: {} diff --git a/samples/powerpoint/slide-management/insert-slides.yaml b/samples/powerpoint/slide-management/insert-slides.yaml index 5ce708484..399523abf 100644 --- a/samples/powerpoint/slide-management/insert-slides.yaml +++ b/samples/powerpoint/slide-management/insert-slides.yaml @@ -113,4 +113,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/tags/tags.yaml b/samples/powerpoint/tags/tags.yaml index 94b85c9c3..45aa7828a 100644 --- a/samples/powerpoint/tags/tags.yaml +++ b/samples/powerpoint/tags/tags.yaml @@ -201,4 +201,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/text/get-set-textrange.yaml b/samples/powerpoint/text/get-set-textrange.yaml index b7391c145..fa6cb92f2 100644 --- a/samples/powerpoint/text/get-set-textrange.yaml +++ b/samples/powerpoint/text/get-set-textrange.yaml @@ -1,7 +1,7 @@ order: 1 id: powerpoint-text-get-set-textrange name: Work with text range selections -description: 'Get, set, load, and save text range selections.' +description: Get, set, load, and save text range selections. host: POWERPOINT api_set: PowerPointApi: '1.5' diff --git a/samples/project/basics/basic-common-api-call.yaml b/samples/project/basics/basic-common-api-call.yaml index f8d4d189a..9a1b68aa0 100644 --- a/samples/project/basics/basic-common-api-call.yaml +++ b/samples/project/basics/basic-common-api-call.yaml @@ -34,4 +34,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/project/default.yaml b/samples/project/default.yaml index c73af1eeb..11f70dd5e 100644 --- a/samples/project/default.yaml +++ b/samples/project/default.yaml @@ -42,4 +42,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/01-basics/basic-api-call-es5.yaml b/samples/word/01-basics/basic-api-call-es5.yaml index a9cdf506b..29b33f94a 100644 --- a/samples/word/01-basics/basic-api-call-es5.yaml +++ b/samples/word/01-basics/basic-api-call-es5.yaml @@ -60,4 +60,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/01-basics/basic-api-call.yaml b/samples/word/01-basics/basic-api-call.yaml index 6aab3ed8e..d399bdfd1 100644 --- a/samples/word/01-basics/basic-api-call.yaml +++ b/samples/word/01-basics/basic-api-call.yaml @@ -61,4 +61,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/01-basics/basic-common-api-call.yaml b/samples/word/01-basics/basic-common-api-call.yaml index d1b374d41..02de4d908 100644 --- a/samples/word/01-basics/basic-common-api-call.yaml +++ b/samples/word/01-basics/basic-common-api-call.yaml @@ -47,4 +47,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/10-content-controls/content-control-onadded-event.yaml b/samples/word/10-content-controls/content-control-onadded-event.yaml index 2ee82194f..26ab14665 100644 --- a/samples/word/10-content-controls/content-control-onadded-event.yaml +++ b/samples/word/10-content-controls/content-control-onadded-event.yaml @@ -1,7 +1,7 @@ order: 2 id: word-content-controls-content-control-onadded-event name: On adding content controls -description: 'Registers, triggers, and deregisters onAdded event that tracks the addition of content controls.' +description: Registers, triggers, and deregisters onAdded event that tracks the addition of content controls. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml index 976769d1a..fbead0ddb 100644 --- a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml +++ b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml @@ -1,7 +1,7 @@ order: 5 id: word-content-controls-content-control-ondatachanged-event name: On changing data in content controls -description: 'Registers, triggers, and deregisters onDataChanged event that tracks when data is changed in content controls.' +description: Registers, triggers, and deregisters onDataChanged event that tracks when data is changed in content controls. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/10-content-controls/content-control-ondeleted-event.yaml b/samples/word/10-content-controls/content-control-ondeleted-event.yaml index e98eec7af..1736cc338 100644 --- a/samples/word/10-content-controls/content-control-ondeleted-event.yaml +++ b/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -1,7 +1,7 @@ order: 7 id: word-content-controls-content-control-ondeleted-event name: On deleting content controls -description: 'Registers, triggers, and deregisters onDeleted event that tracks the removal of content controls.' +description: Registers, triggers, and deregisters onDeleted event that tracks the removal of content controls. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/10-content-controls/content-control-onentered-event.yaml b/samples/word/10-content-controls/content-control-onentered-event.yaml index 4c7128dc0..09874c1db 100644 --- a/samples/word/10-content-controls/content-control-onentered-event.yaml +++ b/samples/word/10-content-controls/content-control-onentered-event.yaml @@ -1,7 +1,7 @@ order: 3 id: word-content-controls-content-control-onentered-event name: On entering content controls -description: 'Registers, triggers, and deregisters onEntered event that tracks when the cursor is placed within content controls.' +description: Registers, triggers, and deregisters onEntered event that tracks when the cursor is placed within content controls. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/10-content-controls/content-control-onexited-event.yaml b/samples/word/10-content-controls/content-control-onexited-event.yaml index c2e5b4eab..c12456e21 100644 --- a/samples/word/10-content-controls/content-control-onexited-event.yaml +++ b/samples/word/10-content-controls/content-control-onexited-event.yaml @@ -1,7 +1,7 @@ order: 6 id: word-content-controls-content-control-onexited-event name: On exiting content controls -description: 'Registers, triggers, and deregisters onExited event that tracks when the cursor is removed from within content controls.' +description: Registers, triggers, and deregisters onExited event that tracks when the cursor is removed from within content controls. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml index 989a07ac1..531e7a23a 100644 --- a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml +++ b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml @@ -1,7 +1,7 @@ order: 4 id: word-content-controls-content-control-onselectionchanged-event name: On changing selection in content controls -description: 'Registers, triggers, and deregisters onSelectionChanged event that tracks when selections are changed in content controls.' +description: Registers, triggers, and deregisters onSelectionChanged event that tracks when selections are changed in content controls. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/10-content-controls/get-change-tracking-states.yaml b/samples/word/10-content-controls/get-change-tracking-states.yaml index b59d84146..b874d6b6d 100644 --- a/samples/word/10-content-controls/get-change-tracking-states.yaml +++ b/samples/word/10-content-controls/get-change-tracking-states.yaml @@ -164,4 +164,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml b/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml index 2cda8dcd1..2904ffa23 100644 --- a/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -1,7 +1,7 @@ order: 8 id: word-content-controls-insert-and-change-checkbox-content-control name: Manage checkbox content controls -description: 'Inserts, updates, retrieves, and deletes checkbox content controls.' +description: Inserts, updates, retrieves, and deletes checkbox content controls. host: WORD api_set: WordApi: '1.7' diff --git a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml index 734cdc388..5dca81e43 100644 --- a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -1,7 +1,7 @@ order: 9 id: word-content-controls-insert-and-change-combo-box-content-control name: Manage combo box content controls -description: 'Inserts, updates, and deletes combo box content controls.' +description: Inserts, updates, and deletes combo box content controls. host: WORD api_set: WordApi: '1.9' diff --git a/samples/word/10-content-controls/insert-and-change-content-controls.yaml b/samples/word/10-content-controls/insert-and-change-content-controls.yaml index 961b5d982..00f9ac93e 100644 --- a/samples/word/10-content-controls/insert-and-change-content-controls.yaml +++ b/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -1,7 +1,7 @@ order: 1 id: word-content-controls-insert-and-change-content-controls name: Content control basics -description: 'Inserts, updates, and retrieves content controls.' +description: Inserts, updates, and retrieves content controls. author: OfficeDev host: WORD api_set: diff --git a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml index d18f95f5d..ff1ef0479 100644 --- a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -1,7 +1,7 @@ order: 10 id: word-content-controls-insert-and-change-dropdown-list-content-control name: Manage dropdown list content controls -description: 'Inserts, updates, and deletes dropdown list content controls.' +description: Inserts, updates, and deletes dropdown list content controls. host: WORD api_set: WordApi: '1.9' diff --git a/samples/word/15-images/insert-and-get-pictures.yaml b/samples/word/15-images/insert-and-get-pictures.yaml index ee39795ab..a24cb7b69 100644 --- a/samples/word/15-images/insert-and-get-pictures.yaml +++ b/samples/word/15-images/insert-and-get-pictures.yaml @@ -109,4 +109,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/20-lists/insert-list.yaml b/samples/word/20-lists/insert-list.yaml index c899c16df..6444834ce 100644 --- a/samples/word/20-lists/insert-list.yaml +++ b/samples/word/20-lists/insert-list.yaml @@ -110,4 +110,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/20-lists/manage-list-styles.yaml b/samples/word/20-lists/manage-list-styles.yaml index 915b657f9..1fbd489f5 100644 --- a/samples/word/20-lists/manage-list-styles.yaml +++ b/samples/word/20-lists/manage-list-styles.yaml @@ -107,4 +107,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/20-lists/organize-list.yaml b/samples/word/20-lists/organize-list.yaml index ccfef74ef..5007a602d 100644 --- a/samples/word/20-lists/organize-list.yaml +++ b/samples/word/20-lists/organize-list.yaml @@ -138,4 +138,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml b/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml index e58e52ac5..536f169e4 100644 --- a/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml +++ b/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -118,4 +118,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/get-text.yaml b/samples/word/25-paragraph/get-text.yaml index 06c427331..8190d75ae 100644 --- a/samples/word/25-paragraph/get-text.yaml +++ b/samples/word/25-paragraph/get-text.yaml @@ -1,7 +1,7 @@ order: 9 id: word-paragraph-get-text name: Get text -description: 'Shows how to get paragraph text, including hidden text and text marked for deletion.' +description: Shows how to get paragraph text, including hidden text and text marked for deletion. author: OfficeDev host: WORD api_set: diff --git a/samples/word/25-paragraph/get-word-count.yaml b/samples/word/25-paragraph/get-word-count.yaml index 00d26a8e6..7ab14f35c 100644 --- a/samples/word/25-paragraph/get-word-count.yaml +++ b/samples/word/25-paragraph/get-word-count.yaml @@ -125,4 +125,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-formatted-text.yaml b/samples/word/25-paragraph/insert-formatted-text.yaml index 66b2fe227..77dec94c7 100644 --- a/samples/word/25-paragraph/insert-formatted-text.yaml +++ b/samples/word/25-paragraph/insert-formatted-text.yaml @@ -110,4 +110,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-header-and-footer.yaml b/samples/word/25-paragraph/insert-header-and-footer.yaml index d54fd737a..61c5ce6bf 100644 --- a/samples/word/25-paragraph/insert-header-and-footer.yaml +++ b/samples/word/25-paragraph/insert-header-and-footer.yaml @@ -187,4 +187,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-in-different-locations.yaml b/samples/word/25-paragraph/insert-in-different-locations.yaml index 128ac7a3b..962ff5897 100644 --- a/samples/word/25-paragraph/insert-in-different-locations.yaml +++ b/samples/word/25-paragraph/insert-in-different-locations.yaml @@ -153,4 +153,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-line-and-page-breaks.yaml b/samples/word/25-paragraph/insert-line-and-page-breaks.yaml index 7a2593e30..2bb69dff1 100644 --- a/samples/word/25-paragraph/insert-line-and-page-breaks.yaml +++ b/samples/word/25-paragraph/insert-line-and-page-breaks.yaml @@ -97,4 +97,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/onadded-event.yaml b/samples/word/25-paragraph/onadded-event.yaml index e7f3d34c9..b5989162c 100644 --- a/samples/word/25-paragraph/onadded-event.yaml +++ b/samples/word/25-paragraph/onadded-event.yaml @@ -1,7 +1,7 @@ order: 10 id: word-paragraph-onadded-event name: On adding paragraphs -description: 'Registers, triggers, and deregisters the onParagraphAdded event that tracks the addition of paragraphs.' +description: Registers, triggers, and deregisters the onParagraphAdded event that tracks the addition of paragraphs. host: WORD api_set: WordApi: '1.6' diff --git a/samples/word/25-paragraph/onchanged-event.yaml b/samples/word/25-paragraph/onchanged-event.yaml index 1b0cd1dd2..833138a41 100644 --- a/samples/word/25-paragraph/onchanged-event.yaml +++ b/samples/word/25-paragraph/onchanged-event.yaml @@ -1,7 +1,7 @@ order: 11 id: word-paragraph-onchanged-event name: On changing content in paragraphs -description: 'Registers, triggers, and deregisters the onParagraphChanged event that tracks when content is changed in paragraphs.' +description: Registers, triggers, and deregisters the onParagraphChanged event that tracks when content is changed in paragraphs. host: WORD api_set: WordApi: '1.6' diff --git a/samples/word/25-paragraph/ondeleted-event.yaml b/samples/word/25-paragraph/ondeleted-event.yaml index d1348fd36..28643099d 100644 --- a/samples/word/25-paragraph/ondeleted-event.yaml +++ b/samples/word/25-paragraph/ondeleted-event.yaml @@ -1,7 +1,7 @@ order: 12 id: word-paragraph-ondeleted-event name: On deleting paragraphs -description: 'Registers, triggers, and deregisters the onParagraphDeleted event that tracks the removal of paragraphs.' +description: Registers, triggers, and deregisters the onParagraphDeleted event that tracks the removal of paragraphs. host: WORD api_set: WordApi: '1.6' diff --git a/samples/word/25-paragraph/paragraph-properties.yaml b/samples/word/25-paragraph/paragraph-properties.yaml index 86eda92fe..43493a296 100644 --- a/samples/word/25-paragraph/paragraph-properties.yaml +++ b/samples/word/25-paragraph/paragraph-properties.yaml @@ -1,7 +1,7 @@ order: 6 id: word-paragraph-paragraph-properties name: Paragraph properties -description: 'Sets indentation, space between paragraphs, and other paragraph properties.' +description: Sets indentation, space between paragraphs, and other paragraph properties. author: OfficeDev host: WORD api_set: diff --git a/samples/word/25-paragraph/search.yaml b/samples/word/25-paragraph/search.yaml index 561af82e2..ea8337044 100644 --- a/samples/word/25-paragraph/search.yaml +++ b/samples/word/25-paragraph/search.yaml @@ -115,4 +115,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/30-properties/get-built-in-properties.yaml b/samples/word/30-properties/get-built-in-properties.yaml index e3306f39f..5eeb51d8d 100644 --- a/samples/word/30-properties/get-built-in-properties.yaml +++ b/samples/word/30-properties/get-built-in-properties.yaml @@ -61,4 +61,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/30-properties/read-write-custom-document-properties.yaml b/samples/word/30-properties/read-write-custom-document-properties.yaml index 4493dedf4..600c31687 100644 --- a/samples/word/30-properties/read-write-custom-document-properties.yaml +++ b/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -88,4 +88,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/35-ranges/compare-location.yaml b/samples/word/35-ranges/compare-location.yaml index 4bca6acb8..c93592309 100644 --- a/samples/word/35-ranges/compare-location.yaml +++ b/samples/word/35-ranges/compare-location.yaml @@ -122,4 +122,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/35-ranges/get-pages.yaml b/samples/word/35-ranges/get-pages.yaml index 3533307d5..ac6000b3d 100644 --- a/samples/word/35-ranges/get-pages.yaml +++ b/samples/word/35-ranges/get-pages.yaml @@ -1,7 +1,7 @@ order: 4 id: word-ranges-get-pages -name: 'Work with pages, panes, and windows' -description: 'Shows how to work with pages, panes, and windows.' +name: Work with pages, panes, and windows +description: Shows how to work with pages, panes, and windows. author: yilin4 host: WORD api_set: diff --git a/samples/word/35-ranges/scroll-to-range.yaml b/samples/word/35-ranges/scroll-to-range.yaml index bc4ec0029..0bea961dd 100644 --- a/samples/word/35-ranges/scroll-to-range.yaml +++ b/samples/word/35-ranges/scroll-to-range.yaml @@ -97,4 +97,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/35-ranges/split-words-of-first-paragraph.yaml b/samples/word/35-ranges/split-words-of-first-paragraph.yaml index ab281397b..8e23f4118 100644 --- a/samples/word/35-ranges/split-words-of-first-paragraph.yaml +++ b/samples/word/35-ranges/split-words-of-first-paragraph.yaml @@ -1,7 +1,7 @@ order: 2 id: word-ranges-split-words-of-first-paragraph name: Split a paragraph into ranges -description: 'Splits a paragraph into word ranges and then traverses all the ranges to format each word, producing a "karaoke" effect.' +description: Splits a paragraph into word ranges and then traverses all the ranges to format each word, producing a "karaoke" effect. author: OfficeDev host: WORD api_set: diff --git a/samples/word/40-tables/manage-custom-style.yaml b/samples/word/40-tables/manage-custom-style.yaml index 8d3a60fcb..9c6ab8360 100644 --- a/samples/word/40-tables/manage-custom-style.yaml +++ b/samples/word/40-tables/manage-custom-style.yaml @@ -432,4 +432,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/40-tables/manage-formatting.yaml b/samples/word/40-tables/manage-formatting.yaml index 303649fb2..4031cf690 100644 --- a/samples/word/40-tables/manage-formatting.yaml +++ b/samples/word/40-tables/manage-formatting.yaml @@ -1,7 +1,7 @@ order: 2 id: word-tables-manage-formatting name: Table formatting -description: 'Gets the formatting details of a table, a table row, and a table cell, including borders, alignment, and cell padding.' +description: Gets the formatting details of a table, a table row, and a table cell, including borders, alignment, and cell padding. author: OfficeDev host: WORD api_set: diff --git a/samples/word/40-tables/table-cell-access.yaml b/samples/word/40-tables/table-cell-access.yaml index ea3f037f8..283c41753 100644 --- a/samples/word/40-tables/table-cell-access.yaml +++ b/samples/word/40-tables/table-cell-access.yaml @@ -83,4 +83,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/compare-documents.yaml b/samples/word/50-document/compare-documents.yaml index 988b3488c..368c7dc05 100644 --- a/samples/word/50-document/compare-documents.yaml +++ b/samples/word/50-document/compare-documents.yaml @@ -71,4 +71,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/get-external-styles.yaml b/samples/word/50-document/get-external-styles.yaml index 63fad088e..86aa2117b 100644 --- a/samples/word/50-document/get-external-styles.yaml +++ b/samples/word/50-document/get-external-styles.yaml @@ -82,4 +82,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/insert-external-document.yaml b/samples/word/50-document/insert-external-document.yaml index 7e374a5f1..126961451 100644 --- a/samples/word/50-document/insert-external-document.yaml +++ b/samples/word/50-document/insert-external-document.yaml @@ -1,7 +1,7 @@ order: 3 id: word-document-insert-external-document name: Insert an external document -description: 'Inserts the content (with or without settings) of an external document into the current document. Settings include formatting, change-tracking mode, custom properties, and XML parts.' +description: Inserts the content (with or without settings) of an external document into the current document. Settings include formatting, change-tracking mode, custom properties, and XML parts. host: WORD api_set: WordApi: '1.7' diff --git a/samples/word/50-document/insert-section-breaks.yaml b/samples/word/50-document/insert-section-breaks.yaml index a8e6f38d3..b870d7865 100644 --- a/samples/word/50-document/insert-section-breaks.yaml +++ b/samples/word/50-document/insert-section-breaks.yaml @@ -134,4 +134,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-annotations.yaml b/samples/word/50-document/manage-annotations.yaml index 79553d280..7fd3a5dab 100644 --- a/samples/word/50-document/manage-annotations.yaml +++ b/samples/word/50-document/manage-annotations.yaml @@ -358,4 +358,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-body.yaml b/samples/word/50-document/manage-body.yaml index 18b7b14cd..c92791dab 100644 --- a/samples/word/50-document/manage-body.yaml +++ b/samples/word/50-document/manage-body.yaml @@ -412,4 +412,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-change-tracking.yaml b/samples/word/50-document/manage-change-tracking.yaml index e26519071..fa7f17120 100644 --- a/samples/word/50-document/manage-change-tracking.yaml +++ b/samples/word/50-document/manage-change-tracking.yaml @@ -143,4 +143,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-comments.yaml b/samples/word/50-document/manage-comments.yaml index 420e05e77..3fb2d2b1d 100644 --- a/samples/word/50-document/manage-comments.yaml +++ b/samples/word/50-document/manage-comments.yaml @@ -1,7 +1,7 @@ order: 6 id: word-document-manage-comments name: Manage comments -description: 'This sample shows how to perform basic comments operations, including insert, reply, get, edit, resolve, and delete.' +description: This sample shows how to perform basic comments operations, including insert, reply, get, edit, resolve, and delete. host: WORD api_set: WordApi: '1.4' diff --git a/samples/word/50-document/manage-custom-xml-part-ns.yaml b/samples/word/50-document/manage-custom-xml-part-ns.yaml index 84d012fdb..4f9b9c5f4 100644 --- a/samples/word/50-document/manage-custom-xml-part-ns.yaml +++ b/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -1,7 +1,7 @@ order: 10 id: word-document-manage-custom-xml-part-ns name: Manage a CustomXmlPart with the namespace -description: 'This sample shows how to add, query, replace, edit, and delete a custom XML part in a document.' +description: This sample shows how to add, query, replace, edit, and delete a custom XML part in a document. host: WORD api_set: WordApi: '1.4' diff --git a/samples/word/50-document/manage-custom-xml-part.yaml b/samples/word/50-document/manage-custom-xml-part.yaml index 64ef6b011..12f1de659 100644 --- a/samples/word/50-document/manage-custom-xml-part.yaml +++ b/samples/word/50-document/manage-custom-xml-part.yaml @@ -1,7 +1,7 @@ order: 11 id: word-document-manage-custom-xml-part name: Manage a CustomXmlPart without the namespace -description: 'This sample shows how to add, query, edit, and delete a custom XML part in a document.' +description: This sample shows how to add, query, edit, and delete a custom XML part in a document. host: WORD api_set: WordApi: '1.4' diff --git a/samples/word/50-document/manage-fields.yaml b/samples/word/50-document/manage-fields.yaml index 8a3499ac0..49a583f69 100644 --- a/samples/word/50-document/manage-fields.yaml +++ b/samples/word/50-document/manage-fields.yaml @@ -1,7 +1,7 @@ order: 8 id: word-document-manage-fields name: Manage fields -description: 'This sample shows how to perform basic operations on fields, including insert, get, and delete.' +description: This sample shows how to perform basic operations on fields, including insert, get, and delete. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/50-document/manage-footnotes.yaml b/samples/word/50-document/manage-footnotes.yaml index b5ff910aa..32007812f 100644 --- a/samples/word/50-document/manage-footnotes.yaml +++ b/samples/word/50-document/manage-footnotes.yaml @@ -1,7 +1,7 @@ order: 7 id: word-document-manage-footnotes name: Manage footnotes -description: 'This sample shows how to perform basic footnote operations, including insert, get, and delete.' +description: This sample shows how to perform basic footnote operations, including insert, get, and delete. host: WORD api_set: WordApi: '1.5' diff --git a/samples/word/50-document/manage-settings.yaml b/samples/word/50-document/manage-settings.yaml index bdb6df93b..5c5b6a95d 100644 --- a/samples/word/50-document/manage-settings.yaml +++ b/samples/word/50-document/manage-settings.yaml @@ -1,7 +1,7 @@ order: 9 id: word-document-manage-settings name: Manage settings -description: 'This sample shows how to add, edit, get, and delete custom settings on a document.' +description: This sample shows how to add, edit, get, and delete custom settings on a document. host: WORD api_set: WordApi: '1.4' diff --git a/samples/word/50-document/manage-shapes-text-boxes.yaml b/samples/word/50-document/manage-shapes-text-boxes.yaml index 0052c6c77..6d8d0d900 100644 --- a/samples/word/50-document/manage-shapes-text-boxes.yaml +++ b/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -287,4 +287,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-styles.yaml b/samples/word/50-document/manage-styles.yaml index 3549dee24..4c0347195 100644 --- a/samples/word/50-document/manage-styles.yaml +++ b/samples/word/50-document/manage-styles.yaml @@ -339,4 +339,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-tracked-changes.yaml b/samples/word/50-document/manage-tracked-changes.yaml index f692ef0e9..3099bf706 100644 --- a/samples/word/50-document/manage-tracked-changes.yaml +++ b/samples/word/50-document/manage-tracked-changes.yaml @@ -1,7 +1,7 @@ order: 5 id: word-document-manage-tracked-changes name: Manage tracked changes -description: 'This samples shows how to manage tracked changes, including accepting and rejecting changes.' +description: This samples shows how to manage tracked changes, including accepting and rejecting changes. host: WORD api_set: WordApi: '1.6' diff --git a/samples/word/50-document/save-close.yaml b/samples/word/50-document/save-close.yaml index 41381c638..67ec5b4c8 100644 --- a/samples/word/50-document/save-close.yaml +++ b/samples/word/50-document/save-close.yaml @@ -134,4 +134,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/90-scenarios/correlated-objects-pattern.yaml b/samples/word/90-scenarios/correlated-objects-pattern.yaml index a28f29013..7f2817061 100644 --- a/samples/word/90-scenarios/correlated-objects-pattern.yaml +++ b/samples/word/90-scenarios/correlated-objects-pattern.yaml @@ -163,4 +163,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/90-scenarios/doc-assembly.yaml b/samples/word/90-scenarios/doc-assembly.yaml index 418095bbb..302701358 100644 --- a/samples/word/90-scenarios/doc-assembly.yaml +++ b/samples/word/90-scenarios/doc-assembly.yaml @@ -168,4 +168,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/90-scenarios/multiple-property-set.yaml b/samples/word/90-scenarios/multiple-property-set.yaml index f3a41cecb..144d2021a 100644 --- a/samples/word/90-scenarios/multiple-property-set.yaml +++ b/samples/word/90-scenarios/multiple-property-set.yaml @@ -109,4 +109,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml index 81d9a9ecb..70ace5471 100644 --- a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml +++ b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -1,6 +1,6 @@ id: word-insert-and-change-content-controls name: Content control basics -description: 'Inserts, updates, and retrieves content controls.' +description: Inserts, updates, and retrieves content controls. author: OfficeDev host: WORD api_set: diff --git a/samples/word/99-preview-apis/manage-comments.yaml b/samples/word/99-preview-apis/manage-comments.yaml index c050ead75..bdff83be1 100644 --- a/samples/word/99-preview-apis/manage-comments.yaml +++ b/samples/word/99-preview-apis/manage-comments.yaml @@ -1,6 +1,6 @@ id: word-manage-comments name: Manage comments -description: 'This sample shows how to perform operations on comments (including insert, reply, get, edit, resolve, and delete) and use comment events.' +description: This sample shows how to perform operations on comments (including insert, reply, get, edit, resolve, and delete) and use comment events. host: WORD api_set: WordApi: '1.10' diff --git a/samples/word/default.yaml b/samples/word/default.yaml index 9d45b151a..e7bc04740 100644 --- a/samples/word/default.yaml +++ b/samples/word/default.yaml @@ -54,4 +54,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 331186ec3..ee07a923e 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -1,4 +1,4 @@ -'Excel.AggregationFunction:enum': +Excel.AggregationFunction:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml @@ -16,7 +16,7 @@ await context.sync(); }); } -'Excel.Application#decimalSeparator:member': +Excel.Application#decimalSeparator:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/culture-info.yaml @@ -45,7 +45,7 @@ await context.sync(); }); -'Excel.Application#calculate:member(1)': +Excel.Application#calculate:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/90-scenarios/performance-optimization.yaml @@ -54,7 +54,7 @@ await Excel.run(async (context) => { context.application.calculate(Excel.CalculationType.full); }); -'Excel.Application#suspendScreenUpdatingUntilNextSync:member(1)': +Excel.Application#suspendScreenUpdatingUntilNextSync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/90-scenarios/performance-optimization.yaml @@ -89,7 +89,7 @@ console.log(`Ending. Adding ${ROW_COUNT * COLUMN_COUNT} cells took ${Date.now() - startTime} milliseconds`); }); -'Excel.ArrowheadLength:enum': +Excel.ArrowheadLength:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -108,7 +108,7 @@ await context.sync(); }); -'Excel.ArrowheadStyle:enum': +Excel.ArrowheadStyle:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -127,7 +127,7 @@ await context.sync(); }); -'Excel.ArrowheadWidth:enum': +Excel.ArrowheadWidth:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -146,7 +146,7 @@ await context.sync(); }); -'Excel.AutoFillType:enum': +Excel.AutoFillType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-auto-fill.yaml @@ -161,7 +161,7 @@ sumCell.format.autofitColumns(); await context.sync(); }); -'Excel.AutoFilter#apply:member(1)': +Excel.AutoFilter#apply:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -184,7 +184,7 @@ await context.sync(); }); -'Excel.AutoFilter#clearColumnCriteria:member(1)': +Excel.AutoFilter#clearColumnCriteria:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -200,7 +200,7 @@ sheet.autoFilter.clearColumnCriteria(3); await context.sync(); }); -'Excel.AutoFilter#reapply:member(1)': +Excel.AutoFilter#reapply:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -217,7 +217,7 @@ sheet.autoFilter.reapply(); await context.sync(); }); -'Excel.AutoFilter#remove:member(1)': +Excel.AutoFilter#remove:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -233,7 +233,7 @@ sheet.autoFilter.remove(); await context.sync(); }); -'Excel.Binding#onDataChanged:member': +Excel.Binding#onDataChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/data-changed.yaml @@ -249,7 +249,7 @@ await context.sync(); }); -'Excel.BindingType:enum': +Excel.BindingType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-disable-events.yaml @@ -268,7 +268,7 @@ } await context.sync(); }); -'Excel.BorderLineStyle:enum': +Excel.BorderLineStyle:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -345,7 +345,7 @@ sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.BuiltInStyle:enum': +Excel.BuiltInStyle:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -422,7 +422,7 @@ sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.CalculationMode:enum': +Excel.CalculationMode:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-calculation.yaml @@ -435,7 +435,7 @@ console.log("Current calculation mode: " + context.application.calculationMode); }); -'Excel.CalculationType:enum': +Excel.CalculationType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-calculation.yaml @@ -445,7 +445,7 @@ context.application.calculate(Excel.CalculationType.recalculate); await context.sync(); }); -'Excel.CellControl:type': +Excel.CellControl:type: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -465,7 +465,7 @@ }; await context.sync(); }); -'Excel.CellControlType:enum': +Excel.CellControlType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -485,7 +485,7 @@ }; await context.sync(); }); -'Excel.CellPropertiesFill#color:member': +Excel.CellPropertiesFill#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -562,7 +562,7 @@ sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.CellPropertiesFillLoadOptions#color:member': +Excel.CellPropertiesFillLoadOptions#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -591,7 +591,7 @@ console.log( `Address: ${cellProperties.address}\nStyle: ${cellProperties.style}\nFill Color: ${cellProperties.format.fill.color}\nFont Color: ${cellProperties.format.font.color}`); }); -'Excel.CellPropertiesFont#color:member': +Excel.CellPropertiesFont#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -668,7 +668,7 @@ sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.CellPropertiesFontLoadOptions#color:member': +Excel.CellPropertiesFontLoadOptions#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -697,7 +697,7 @@ console.log( `Address: ${cellProperties.address}\nStyle: ${cellProperties.style}\nFill Color: ${cellProperties.format.fill.color}\nFont Color: ${cellProperties.format.font.color}`); }); -'Excel.CellPropertiesLoadOptions#address:member': +Excel.CellPropertiesLoadOptions#address:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -726,7 +726,7 @@ console.log( `Address: ${cellProperties.address}\nStyle: ${cellProperties.style}\nFill Color: ${cellProperties.format.fill.color}\nFont Color: ${cellProperties.format.font.color}`); }); -'Excel.CellValueConditionalFormat#format:member': +Excel.CellValueConditionalFormat#format:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -742,7 +742,7 @@ await context.sync(); }); -'Excel.CellValueConditionalFormat#rule:member': +Excel.CellValueConditionalFormat#rule:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -758,7 +758,7 @@ await context.sync(); }); -'Excel.CellValueType:enum': +Excel.CellValueType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-error-values.yaml @@ -782,7 +782,7 @@ range.valuesAsJson = [[error]]; await context.sync(); }); -'Excel.Chart#getDataTableOrNullObject:member(1)': +Excel.Chart#getDataTableOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -801,7 +801,7 @@ chartDataTable.visible = true; await context.sync(); }); -'Excel.Chart#onActivated:member': +Excel.Chart#onActivated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-chart-activated.yaml @@ -838,7 +838,7 @@ console.log(`A chart was activated. ID: ${event.chartId}. Chart name: ${activatedChart.name}.`); }); } -'Excel.Chart#onDeactivated:member': +Excel.Chart#onDeactivated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-chart-activated.yaml @@ -867,7 +867,7 @@ console.log("The pie chart is NOT active."); }); } -'Excel.ChartAxis#displayUnit:member': +Excel.ChartAxis#displayUnit:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-axis.yaml @@ -887,7 +887,7 @@ console.log("The vertical axis display unit is: " + valueAxis.displayUnit); }); -'Excel.ChartAxis#showDisplayUnitLabel:member': +Excel.ChartAxis#showDisplayUnitLabel:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-axis.yaml @@ -903,7 +903,7 @@ await context.sync(); }); -'Excel.ChartCollection#onActivated:member': +Excel.ChartCollection#onActivated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-chart-activated.yaml @@ -940,7 +940,7 @@ console.log(`A chart was activated. ID: ${event.chartId}. Chart name: ${activatedChart.name}.`); }); } -'Excel.ChartCollection#onDeactivated:member': +Excel.ChartCollection#onDeactivated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-chart-activated.yaml @@ -969,7 +969,7 @@ console.log("The pie chart is NOT active."); }); } -'Excel.ChartDataLabel:class': +Excel.ChartDataLabel:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml @@ -1012,7 +1012,7 @@ subLabel.font.color = "blue"; await context.sync(); }); -'Excel.ChartDataTable#format:member': +Excel.ChartDataTable#format:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1042,7 +1042,7 @@ chartDataTableFormat.border.color = "blue"; await context.sync(); }); -'Excel.ChartDataTable#showHorizontalBorder:member': +Excel.ChartDataTable#showHorizontalBorder:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1072,7 +1072,7 @@ chartDataTableFormat.border.color = "blue"; await context.sync(); }); -'Excel.ChartDataTable#showLegendKey:member': +Excel.ChartDataTable#showLegendKey:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1102,7 +1102,7 @@ chartDataTableFormat.border.color = "blue"; await context.sync(); }); -'Excel.ChartDataTable#showOutlineBorder:member': +Excel.ChartDataTable#showOutlineBorder:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1132,7 +1132,7 @@ chartDataTableFormat.border.color = "blue"; await context.sync(); }); -'Excel.ChartDataTable#showVerticalBorder:member': +Excel.ChartDataTable#showVerticalBorder:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1162,7 +1162,7 @@ chartDataTableFormat.border.color = "blue"; await context.sync(); }); -'Excel.ChartDataTable#visible:member': +Excel.ChartDataTable#visible:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1181,7 +1181,7 @@ chartDataTable.visible = true; await context.sync(); }); -'Excel.ChartDataTableFormat#border:member': +Excel.ChartDataTableFormat#border:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1211,7 +1211,7 @@ chartDataTableFormat.border.color = "blue"; await context.sync(); }); -'Excel.ChartDataTableFormat#font:member': +Excel.ChartDataTableFormat#font:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-table.yaml @@ -1241,7 +1241,7 @@ chartDataTableFormat.border.color = "blue"; await context.sync(); }); -'Excel.ChartFill#setSolidColor:member(1)': +Excel.ChartFill#setSolidColor:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-point.yaml @@ -1258,7 +1258,7 @@ await context.sync(); }); -'Excel.ChartLeaderLines:class': +Excel.ChartLeaderLines:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml @@ -1281,7 +1281,7 @@ await context.sync(); }); -'Excel.ChartLeaderLinesFormat:class': +Excel.ChartLeaderLinesFormat:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml @@ -1304,7 +1304,7 @@ await context.sync(); }); -'Excel.ChartLegendFormat#font:member': +Excel.ChartLegendFormat#font:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-legend.yaml @@ -1327,7 +1327,7 @@ await context.sync(); }); -'Excel.ChartPoint:class': +Excel.ChartPoint:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml @@ -1369,7 +1369,7 @@ } await context.sync(); }); -'Excel.ChartPointsCollection:class': +Excel.ChartPointsCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-labels.yaml @@ -1411,7 +1411,7 @@ } await context.sync(); }); -'Excel.ChartSeries#getDimensionValues:member(1)': +Excel.ChartSeries#getDimensionValues:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-bubble-chart.yaml @@ -1437,7 +1437,7 @@ // Log the information. console.log(`Series ${category.value} - X:${xValues.value},Y:${yValues.value},Bubble:${bubbleSize.value}`); }); -'Excel.ChartSeries#setBubbleSizes:member(1)': +Excel.ChartSeries#setBubbleSizes:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-bubble-chart.yaml @@ -1487,7 +1487,7 @@ await context.sync(); }); -'Excel.ChartSeries#getDimensionDataSourceString:member(1)': +Excel.ChartSeries#getDimensionDataSourceString:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml @@ -1514,7 +1514,7 @@ console.log(series.name + " data source string: " + dataSourceString.value); console.log(series.name + " data source type: " + dataSourceType.value); }); -'Excel.ChartSeries#getDimensionDataSourceType:member(1)': +Excel.ChartSeries#getDimensionDataSourceType:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml @@ -1541,7 +1541,7 @@ console.log(series.name + " data source string: " + dataSourceString.value); console.log(series.name + " data source type: " + dataSourceType.value); }); -'Excel.ChartSeries:class': +Excel.ChartSeries:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml @@ -1577,7 +1577,7 @@ await context.sync(); }); -'Excel.ChartSeries#hasDataLabels:member': +Excel.ChartSeries#hasDataLabels:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml @@ -1613,7 +1613,7 @@ await context.sync(); }); -'Excel.ChartSeries#points:member': +Excel.ChartSeries#points:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml @@ -1649,7 +1649,7 @@ await context.sync(); }); -'Excel.ChartSeries#showLeaderLines:member': +Excel.ChartSeries#showLeaderLines:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-leader-lines.yaml @@ -1668,7 +1668,7 @@ await context.sync(); }); -'Excel.ChartSeries#delete:member(1)': +Excel.ChartSeries#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series.yaml @@ -1689,7 +1689,7 @@ await context.sync(); }); -'Excel.ChartSeries#setValues:member(1)': +Excel.ChartSeries#setValues:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series.yaml @@ -1709,7 +1709,7 @@ await context.sync(); }); -'Excel.ChartSeries#markerBackgroundColor:member': +Excel.ChartSeries#markerBackgroundColor:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series-markers.yaml @@ -1742,7 +1742,7 @@ await context.sync(); }); -'Excel.ChartSeries#markerForegroundColor:member': +Excel.ChartSeries#markerForegroundColor:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series-markers.yaml @@ -1775,7 +1775,7 @@ await context.sync(); }); -'Excel.ChartSeries#markerSize:member': +Excel.ChartSeries#markerSize:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series-markers.yaml @@ -1808,7 +1808,7 @@ await context.sync(); }); -'Excel.ChartSeries#markerStyle:member': +Excel.ChartSeries#markerStyle:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-series-markers.yaml @@ -1841,7 +1841,7 @@ await context.sync(); }); -'Excel.ChartSeriesBy:enum': +Excel.ChartSeriesBy:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-data-source.yaml @@ -1881,7 +1881,7 @@ await context.sync(); }); -'Excel.ChartSeriesDimension:enum': +Excel.ChartSeriesDimension:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-bubble-chart.yaml @@ -1907,7 +1907,7 @@ // Log the information. console.log(`Series ${category.value} - X:${xValues.value},Y:${yValues.value},Bubble:${bubbleSize.value}`); }); -'Excel.ChartTitle#getSubstring:member(1)': +Excel.ChartTitle#getSubstring:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-title-format.yaml @@ -1921,7 +1921,7 @@ chart.title.getSubstring(0, 7).font.color = "Yellow"; await context.sync(); }); -'Excel.ChartTitle#textOrientation:member': +Excel.ChartTitle#textOrientation:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-title-format.yaml @@ -1934,7 +1934,7 @@ await context.sync(); }); -'Excel.ChartTrendline#type:member': +Excel.ChartTrendline#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-trendlines.yaml @@ -1953,7 +1953,7 @@ console.log("The trendline type is:" + trendline.type); }); -'Excel.ChartTrendlineCollection#add:member(1)': +Excel.ChartTrendlineCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-trendlines.yaml @@ -1969,7 +1969,7 @@ await context.sync(); }); -'Excel.ChartTrendlineFormat#line:member': +Excel.ChartTrendlineFormat#line:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-trendlines.yaml @@ -1989,7 +1989,7 @@ console.log("The trendline color has been set to:" + line.color); }); -'Excel.ChartType:enum': +Excel.ChartType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/10-chart/chart-create-several-charts.yaml @@ -2011,7 +2011,7 @@ await context.sync(); }); -'Excel.CheckboxCellControl:interface': +Excel.CheckboxCellControl:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -2031,7 +2031,7 @@ }; await context.sync(); }); -'Excel.ClearApplyTo:enum': +Excel.ClearApplyTo:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml @@ -2060,7 +2060,7 @@ await context.sync(); }); -'Excel.CloseBehavior:enum': +Excel.CloseBehavior:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-save-and-close.yaml @@ -2069,7 +2069,7 @@ await Excel.run(async (context) => { context.workbook.close(Excel.CloseBehavior.skipSave); }); -'Excel.ColorScaleConditionalFormat#criteria:member': +Excel.ColorScaleConditionalFormat#criteria:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2089,7 +2089,7 @@ await context.sync(); }); -'Excel.Comment#content:member': +Excel.Comment#content:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml @@ -2101,7 +2101,7 @@ comment.content = "PLEASE add headers here."; await context.sync(); }); -'Excel.Comment#delete:member(1)': +Excel.Comment#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml @@ -2111,7 +2111,7 @@ context.workbook.comments.getItemByCell("Comments!A2").delete(); await context.sync(); }); -'Excel.Comment#load:member(2)': +Excel.Comment#load:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml @@ -2125,7 +2125,7 @@ console.log(`${comment.creationDate.toDateString()}: ${comment.authorName} (${comment.authorEmail})`); await context.sync(); }); -'Excel.Comment#resolved:member': +Excel.Comment#resolved:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-resolution.yaml @@ -2136,7 +2136,7 @@ sheet.comments.getItemAt(0).resolved = true; await context.sync(); }); -'Excel.CommentCollection#add:member(1)': +Excel.CommentCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-basics.yaml @@ -2149,7 +2149,7 @@ sheet.comments.add("A2", "TODO: add data."); await context.sync(); }); -'Excel.CommentCollection#onAdded:member': +Excel.CommentCollection#onAdded:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-comment-event-handler.yaml @@ -2191,7 +2191,7 @@ console.log(` Creation date:${addedComment.creationDate}`); }); } -'Excel.CommentCollection#onChanged:member': +Excel.CommentCollection#onChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-comment-event-handler.yaml @@ -2233,7 +2233,7 @@ console.log(` Creation date: ${changedComment.creationDate}`); }); } -'Excel.CommentCollection#onDeleted:member': +Excel.CommentCollection#onDeleted:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-comment-event-handler.yaml @@ -2264,7 +2264,7 @@ console.log(` ID: ${event.commentDetails[0].commentId}`); }); } -'Excel.CommentReply#content:member': +Excel.CommentReply#content:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml @@ -2282,7 +2282,7 @@ reply.content += " Please!"; await context.sync(); }); -'Excel.CommentReply#delete:member(1)': +Excel.CommentReply#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml @@ -2295,7 +2295,7 @@ comment.replies.getItemAt(0).delete(); await context.sync(); }); -'Excel.CommentReplyCollection#add:member(1)': +Excel.CommentReplyCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-replies.yaml @@ -2308,7 +2308,7 @@ comment.replies.add("Add content to this worksheet."); await context.sync(); }); -'Excel.CommentRichContent#mentions:member': +Excel.CommentRichContent#mentions:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml @@ -2333,7 +2333,7 @@ sheet.comments.add("A1", commentBody, Excel.ContentType.mention); await context.sync(); }); -'Excel.ConditionalCellValueRule#formula1:member': +Excel.ConditionalCellValueRule#formula1:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2349,7 +2349,7 @@ await context.sync(); }); -'Excel.ConditionalCellValueRule#operator:member': +Excel.ConditionalCellValueRule#operator:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2365,7 +2365,7 @@ await context.sync(); }); -'Excel.ConditionalDataBarDirection:enum': +Excel.ConditionalDataBarDirection:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2380,7 +2380,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#cellValue:member': +Excel.ConditionalFormat#cellValue:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2396,7 +2396,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#colorScale:member': +Excel.ConditionalFormat#colorScale:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2416,7 +2416,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#custom:member': +Excel.ConditionalFormat#custom:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2431,7 +2431,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#dataBar:member': +Excel.ConditionalFormat#dataBar:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2446,7 +2446,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#getRange:member(1)': +Excel.ConditionalFormat#getRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2477,7 +2477,7 @@ console.log("No conditional formats applied."); } }); -'Excel.ConditionalFormat#iconSet:member': +Excel.ConditionalFormat#iconSet:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2521,7 +2521,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#preset:member': +Excel.ConditionalFormat#preset:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2537,7 +2537,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#textComparison:member': +Excel.ConditionalFormat#textComparison:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2553,7 +2553,7 @@ await context.sync(); }); -'Excel.ConditionalFormat#type:member': +Excel.ConditionalFormat#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2584,7 +2584,7 @@ console.log("No conditional formats applied."); } }); -'Excel.ConditionalFormatCollection#add:member(1)': +Excel.ConditionalFormatCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2604,7 +2604,7 @@ await context.sync(); }); -'Excel.ConditionalFormatCollection#clearAll:member(1)': +Excel.ConditionalFormatCollection#clearAll:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2621,7 +2621,7 @@ element.style.display = "none"; }); }); -'Excel.ConditionalFormatCollection#getItemAt:member(1)': +Excel.ConditionalFormatCollection#getItemAt:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2652,7 +2652,7 @@ console.log("No conditional formats applied."); } }); -'Excel.ConditionalFormatColorCriterionType:enum': +Excel.ConditionalFormatColorCriterionType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2672,7 +2672,7 @@ await context.sync(); }); -'Excel.ConditionalFormatIconRuleType:enum': +Excel.ConditionalFormatIconRuleType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2716,7 +2716,7 @@ await context.sync(); }); -'Excel.ConditionalFormatPresetCriterion:enum': +Excel.ConditionalFormatPresetCriterion:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml @@ -2755,7 +2755,7 @@ await context.sync(); }); -'Excel.ConditionalFormatRule#formula:member': +Excel.ConditionalFormatRule#formula:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2770,7 +2770,7 @@ await context.sync(); }); -'Excel.ConditionalFormatType:enum': +Excel.ConditionalFormatType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml @@ -2809,7 +2809,7 @@ await context.sync(); }); -'Excel.ConditionalIconCriterion#formula:member': +Excel.ConditionalIconCriterion#formula:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2853,7 +2853,7 @@ await context.sync(); }); -'Excel.ConditionalIconCriterion#operator:member': +Excel.ConditionalIconCriterion#operator:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2897,7 +2897,7 @@ await context.sync(); }); -'Excel.ConditionalIconCriterion#type:member': +Excel.ConditionalIconCriterion#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2941,7 +2941,7 @@ await context.sync(); }); -'Excel.ConditionalIconCriterionOperator:enum': +Excel.ConditionalIconCriterionOperator:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -2985,7 +2985,7 @@ await context.sync(); }); -'Excel.ConditionalPresetCriteriaRule#criterion:member': +Excel.ConditionalPresetCriteriaRule#criterion:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -3001,7 +3001,7 @@ await context.sync(); }); -'Excel.ConditionalTextComparisonRule#text:member': +Excel.ConditionalTextComparisonRule#text:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -3017,7 +3017,7 @@ await context.sync(); }); -'Excel.ConditionalTextOperator:enum': +Excel.ConditionalTextOperator:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -3033,7 +3033,7 @@ await context.sync(); }); -'Excel.ConnectorType:enum': +Excel.ConnectorType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -3045,7 +3045,7 @@ line.name = "StraightLine"; await context.sync(); }); -'Excel.ContentType:enum': +Excel.ContentType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/comment-mentions.yaml @@ -3070,7 +3070,7 @@ sheet.comments.add("A1", commentBody, Excel.ContentType.mention); await context.sync(); }); -'Excel.CultureInfo#datetimeFormat:member': +Excel.CultureInfo#datetimeFormat:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/culture-info-date-time.yaml @@ -3111,7 +3111,7 @@ await context.sync(); }); -'Excel.CustomConditionalFormat#format:member': +Excel.CustomConditionalFormat#format:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -3126,7 +3126,7 @@ await context.sync(); }); -'Excel.CustomPropertyCollection#add:member(1)': +Excel.CustomPropertyCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/custom-properties.yaml @@ -3145,7 +3145,7 @@ console.log(`Successfully set custom document property ${userKey}:${userValue}.`); }); -'Excel.CustomXmlPart#delete:member(1)': +Excel.CustomXmlPart#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -3178,7 +3178,7 @@ await context.sync(); } }); -'Excel.CustomXmlPart#getXml:member(1)': +Excel.CustomXmlPart#getXml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -3203,7 +3203,7 @@ await context.sync(); }); -'Excel.CustomXmlPart#id:member': +Excel.CustomXmlPart#id:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -3228,7 +3228,7 @@ await context.sync(); }); -'Excel.CustomXmlPart#setXml:member(1)': +Excel.CustomXmlPart#setXml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -3253,7 +3253,7 @@ await context.sync(); } }); -'Excel.CustomXmlPartCollection#add:member(1)': +Excel.CustomXmlPartCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -3278,7 +3278,7 @@ await context.sync(); }); -'Excel.CustomXmlPartCollection#getItem:member(1)': +Excel.CustomXmlPartCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -3303,7 +3303,7 @@ await context.sync(); } }); -'Excel.CustomXmlPartCollection#getByNamespace:member(1)': +Excel.CustomXmlPartCollection#getByNamespace:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -3336,7 +3336,7 @@ await context.sync(); }); -'Excel.CustomXmlPartScopedCollection#getItemOrNullObject:member(1)': +Excel.CustomXmlPartScopedCollection#getItemOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -3369,7 +3369,7 @@ await context.sync(); } }); -'Excel.CustomXmlPartScopedCollection#getCount:member(1)': +Excel.CustomXmlPartScopedCollection#getCount:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -3402,7 +3402,7 @@ await context.sync(); }); -'Excel.CustomXmlPartScopedCollection#getOnlyItem:member(1)': +Excel.CustomXmlPartScopedCollection#getOnlyItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -3435,7 +3435,7 @@ await context.sync(); }); -'Excel.DataBarConditionalFormat#barDirection:member': +Excel.DataBarConditionalFormat#barDirection:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -3450,7 +3450,7 @@ await context.sync(); }); -'Excel.DataPivotHierarchy#showAs:member': +Excel.DataPivotHierarchy#showAs:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-calculations.yaml @@ -3477,7 +3477,7 @@ wholesaleDataHierarchy.showAs = wholesaleShowAs; await context.sync(); }); -'Excel.DataPivotHierarchy#name:member': +Excel.DataPivotHierarchy#name:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -3492,7 +3492,7 @@ dataHierarchies.items[1].name = "Wholesale"; await context.sync(); }); -'Excel.DataValidation#errorAlert:member': +Excel.DataValidation#errorAlert:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml @@ -3525,7 +3525,7 @@ await context.sync(); }); -'Excel.DataValidation#prompt:member': +Excel.DataValidation#prompt:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml @@ -3562,7 +3562,7 @@ await context.sync(); }); -'Excel.DataValidation#rule:member': +Excel.DataValidation#rule:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml @@ -3589,7 +3589,7 @@ await context.sync(); }); -'Excel.DataValidationOperator:enum': +Excel.DataValidationOperator:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml @@ -3626,7 +3626,7 @@ await context.sync(); }); -'Excel.DataValidationRule#list:member': +Excel.DataValidationRule#list:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml @@ -3653,7 +3653,7 @@ await context.sync(); }); -'Excel.DataValidationRule#wholeNumber:member': +Excel.DataValidationRule#wholeNumber:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml @@ -3690,7 +3690,7 @@ await context.sync(); }); -'Excel.DateFilterCondition:enum': +Excel.DateFilterCondition:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -3723,7 +3723,7 @@ await context.sync(); }); -'Excel.DeleteShiftDirection:enum': +Excel.DeleteShiftDirection:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet.yaml @@ -3737,7 +3737,7 @@ const range = sheet.getRange("A5:F5"); range.delete(Excel.DeleteShiftDirection.up); }); -'Excel.DocumentProperties#custom:member': +Excel.DocumentProperties#custom:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/custom-properties.yaml @@ -3755,7 +3755,7 @@ console.log(`${property.key}:${property.value}`); }); }); -'Excel.DoubleCellValue#numberFormat:member': +Excel.DoubleCellValue#numberFormat:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -3783,7 +3783,7 @@ await context.sync(); }); -'Excel.DoubleCellValue#type:member': +Excel.DoubleCellValue#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -3810,7 +3810,7 @@ ]; await context.sync(); }); -'Excel.DynamicFilterCriteria:enum': +Excel.DynamicFilterCriteria:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/46-table/filter-data.yaml @@ -3835,7 +3835,7 @@ await context.sync(); }); -'Excel.EntityCompactLayoutIcons:enum': +Excel.EntityCompactLayoutIcons:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-icons.yaml @@ -3864,7 +3864,7 @@ }); return entities; } -'Excel.ErrorCellValue:type': +Excel.ErrorCellValue:type: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-error-values.yaml @@ -3888,7 +3888,7 @@ range.valuesAsJson = [[error]]; await context.sync(); }); -'Excel.ErrorCellValueType:enum': +Excel.ErrorCellValueType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-error-values.yaml @@ -3912,7 +3912,7 @@ range.valuesAsJson = [[error]]; await context.sync(); }); -'Excel.FillPattern:enum': +Excel.FillPattern:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -3989,7 +3989,7 @@ sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.FilterCriteria#filterOn:member': +Excel.FilterCriteria#filterOn:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -4012,7 +4012,7 @@ await context.sync(); }); -'Excel.FilterDatetimeSpecificity:enum': +Excel.FilterDatetimeSpecificity:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4045,7 +4045,7 @@ await context.sync(); }); -'Excel.Functions:class': +Excel.Functions:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-built-in-functions.yaml @@ -4062,7 +4062,7 @@ await context.sync(); console.log(" Number of wrenches sold in November = " + unitSoldInNov.value); }); -'Excel.Functions#vlookup:member(1)': +Excel.Functions#vlookup:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-built-in-functions.yaml @@ -4079,7 +4079,7 @@ await context.sync(); console.log(" Number of wrenches sold in November = " + unitSoldInNov.value); }); -'Excel.Functions#sum:member(1)': +Excel.Functions#sum:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-built-in-functions.yaml @@ -4102,7 +4102,7 @@ await context.sync(); console.log(" Number of wrenches sold in November, December, and January = " + sumOfTwoLookups.value); }); -'Excel.GeometricShapeType:enum': +Excel.GeometricShapeType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml @@ -4117,7 +4117,7 @@ shape.width = 200; await context.sync(); }); -'Excel.GroupOption:enum': +Excel.GroupOption:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml @@ -4136,7 +4136,7 @@ sheet.getRange("7:8").group(Excel.GroupOption.byRows); await context.sync(); }); -'Excel.HorizontalAlignment:enum': +Excel.HorizontalAlignment:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-merged-ranges.yaml @@ -4156,7 +4156,7 @@ await context.sync(); }); -'Excel.IconSet:enum': +Excel.IconSet:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -4200,7 +4200,7 @@ await context.sync(); }); -'Excel.IconSetConditionalFormat#criteria:member': +Excel.IconSetConditionalFormat#criteria:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -4244,7 +4244,7 @@ await context.sync(); }); -'Excel.IconSetConditionalFormat#style:member': +Excel.IconSetConditionalFormat#style:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -4288,7 +4288,7 @@ await context.sync(); }); -'Excel.Image#format:member': +Excel.Image#format:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml @@ -4303,7 +4303,7 @@ console.log("The image's format is: " + image.format); await context.sync(); }); -'Excel.InsertShiftDirection:enum': +Excel.InsertShiftDirection:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/insert-delete-clear-range.yaml @@ -4317,7 +4317,7 @@ await context.sync(); }); -'Excel.KeyboardDirection:enum': +Excel.KeyboardDirection:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-get-range-edge.yaml @@ -4343,7 +4343,7 @@ await context.sync(); }); -'Excel.LabelFilterCondition:enum': +Excel.LabelFilterCondition:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4370,7 +4370,7 @@ await context.sync(); }); -'Excel.Line#connectBeginShape:member(1)': +Excel.Line#connectBeginShape:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -4383,7 +4383,7 @@ line.connectEndShape(shapes.getItem("Right"), 0); await context.sync(); }); -'Excel.Line#connectEndShape:member(1)': +Excel.Line#connectEndShape:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -4396,7 +4396,7 @@ line.connectEndShape(shapes.getItem("Right"), 0); await context.sync(); }); -'Excel.Line#disconnectBeginShape:member(1)': +Excel.Line#disconnectBeginShape:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -4409,7 +4409,7 @@ line.disconnectEndShape(); await context.sync(); }); -'Excel.Line#disconnectEndShape:member(1)': +Excel.Line#disconnectEndShape:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -4422,7 +4422,7 @@ line.disconnectEndShape(); await context.sync(); }); -'Excel.NamedItem:class': +Excel.NamedItem:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/34-named-item/create-and-remove-named-item.yaml @@ -4442,7 +4442,7 @@ await context.sync(); }); -'Excel.NamedItem#delete:member(1)': +Excel.NamedItem#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/34-named-item/create-and-remove-named-item.yaml @@ -4465,7 +4465,7 @@ await context.sync(); }); -'Excel.NamedItem#formula:member': +Excel.NamedItem#formula:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/34-named-item/update-named-item.yaml @@ -4490,7 +4490,7 @@ console.log(`Just updated the named item "${myNamedItem.name}" -- it's now located here: ${myNamedItem.formula}`); } }); -'Excel.NamedItemCollection#add:member(1)': +Excel.NamedItemCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/34-named-item/create-and-remove-named-item.yaml @@ -4505,7 +4505,7 @@ await context.sync(); }); -'Excel.Note:class': +Excel.Note:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4520,7 +4520,7 @@ note.width = 400; await context.sync(); }); -'Excel.Note#content:member': +Excel.Note#content:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4534,7 +4534,7 @@ note.content = "Changing the content of the first note."; await context.sync(); }); -'Excel.Note#height:member': +Excel.Note#height:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4549,7 +4549,7 @@ note.width = 400; await context.sync(); }); -'Excel.Note#visible:member': +Excel.Note#visible:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4566,7 +4566,7 @@ firstNote.visible = true; }); -'Excel.Note#width:member': +Excel.Note#width:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4581,7 +4581,7 @@ note.width = 400; await context.sync(); }); -'Excel.Note#delete:member(1)': +Excel.Note#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4596,7 +4596,7 @@ await context.sync(); }); -'Excel.NoteCollection:class': +Excel.NoteCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4611,7 +4611,7 @@ context.workbook.notes.add(selectedRange, "The first note."); await context.sync(); }); -'Excel.NoteCollection#add:member(1)': +Excel.NoteCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4626,7 +4626,7 @@ context.workbook.notes.add(selectedRange, "The first note."); await context.sync(); }); -'Excel.NoteCollection#getItem:member(1)': +Excel.NoteCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4643,7 +4643,7 @@ firstNote.visible = true; }); -'Excel.NoteCollection#getItemAt:member(1)': +Excel.NoteCollection#getItemAt:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -4657,7 +4657,7 @@ note.content = "Changing the content of the first note."; await context.sync(); }); -'Excel.NumberFormatInfo#numberDecimalSeparator:member': +Excel.NumberFormatInfo#numberDecimalSeparator:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/culture-info.yaml @@ -4699,7 +4699,7 @@ await context.sync(); }); -'Excel.NumberFormatInfo#numberGroupSeparator:member': +Excel.NumberFormatInfo#numberGroupSeparator:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/culture-info.yaml @@ -4725,7 +4725,7 @@ resultRange.format.autofitColumns(); await context.sync(); }); -'Excel.PageBreakCollection#add:member(1)': +Excel.PageBreakCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4736,7 +4736,7 @@ farmSheet.horizontalPageBreaks.add("A21:E21"); await context.sync(); }); -'Excel.PageLayout#centerHorizontally:member': +Excel.PageLayout#centerHorizontally:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4748,7 +4748,7 @@ farmSheet.pageLayout.centerVertically = true; await context.sync(); }); -'Excel.PageLayout#centerVertically:member': +Excel.PageLayout#centerVertically:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4760,7 +4760,7 @@ farmSheet.pageLayout.centerVertically = true; await context.sync(); }); -'Excel.PageLayout#orientation:member': +Excel.PageLayout#orientation:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4771,7 +4771,7 @@ farmSheet.pageLayout.orientation = Excel.PageOrientation.landscape; await context.sync(); }); -'Excel.PageLayout#setPrintArea:member(1)': +Excel.PageLayout#setPrintArea:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4782,7 +4782,7 @@ farmSheet.pageLayout.setPrintArea("A1:D41"); await context.sync(); }); -'Excel.PageLayout#setPrintTitleRows:member(1)': +Excel.PageLayout#setPrintTitleRows:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4793,7 +4793,7 @@ farmSheet.pageLayout.setPrintTitleRows("$1:$1"); await context.sync(); }); -'Excel.PageLayout#zoom:member': +Excel.PageLayout#zoom:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4804,7 +4804,7 @@ farmSheet.pageLayout.zoom = { scale: 200 }; await context.sync(); }); -'Excel.PageOrientation:enum': +Excel.PageOrientation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -4815,7 +4815,7 @@ farmSheet.pageLayout.orientation = Excel.PageOrientation.landscape; await context.sync(); }); -'Excel.PictureFormat:enum': +Excel.PictureFormat:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml @@ -4831,7 +4831,7 @@ // Your add-in would save this string as a .png file. console.log("The image's Base64-encoded string: " + imageString); }); -'Excel.PivotField#clearAllFilters:member(1)': +Excel.PivotField#clearAllFilters:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4851,7 +4851,7 @@ }); await context.sync(); }); -'Excel.PivotFilters#dateFilter:member': +Excel.PivotFilters#dateFilter:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4884,7 +4884,7 @@ await context.sync(); }); -'Excel.PivotFilters#labelFilter:member': +Excel.PivotFilters#labelFilter:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4911,7 +4911,7 @@ await context.sync(); }); -'Excel.PivotFilters#manualFilter:member': +Excel.PivotFilters#manualFilter:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4938,7 +4938,7 @@ await context.sync(); }); -'Excel.PivotFilters#valueFilter:member': +Excel.PivotFilters#valueFilter:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4965,7 +4965,7 @@ await context.sync(); }); -'Excel.PivotHierarchy#fields:member': +Excel.PivotHierarchy#fields:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -4992,7 +4992,7 @@ await context.sync(); }); -'Excel.PivotLayout#getDataBodyRange:member(1)': +Excel.PivotLayout#getDataBodyRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml @@ -5014,7 +5014,7 @@ masterTotalRange.formulas = [["All Crates", "=SUM(" + grandTotalRange.address + ")"]]; await context.sync(); }); -'Excel.PivotLayout#altTextDescription:member': +Excel.PivotLayout#altTextDescription:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5031,7 +5031,7 @@ await context.sync(); }); -'Excel.PivotLayout#displayBlankLineAfterEachItem:member(1)': +Excel.PivotLayout#displayBlankLineAfterEachItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5047,7 +5047,7 @@ await context.sync(); }); -'Excel.PivotLayout#emptyCellText:member': +Excel.PivotLayout#emptyCellText:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5064,7 +5064,7 @@ pivotLayout.getDataBodyRange().format.horizontalAlignment = Excel.HorizontalAlignment.right; await context.sync(); }); -'Excel.PivotLayout#fillEmptyCells:member': +Excel.PivotLayout#fillEmptyCells:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5084,7 +5084,7 @@ pivotLayout.fillEmptyCells = fillToSet; await context.sync(); }); -'Excel.PivotLayout#layoutType:member': +Excel.PivotLayout#layoutType:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5108,7 +5108,7 @@ await context.sync(); console.log("Pivot layout is now " + pivotTable.layout.layoutType); }); -'Excel.PivotLayout#preserveFormatting:member': +Excel.PivotLayout#preserveFormatting:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5128,7 +5128,7 @@ pivotLayout.preserveFormatting = preserveFormattingToSet; await context.sync(); }); -'Excel.PivotLayout#repeatAllItemLabels:member(1)': +Excel.PivotLayout#repeatAllItemLabels:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5144,7 +5144,7 @@ await context.sync(); }); -'Excel.PivotLayout#showColumnGrandTotals:member': +Excel.PivotLayout#showColumnGrandTotals:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5168,7 +5168,7 @@ await context.sync(); }); -'Excel.PivotLayout#showFieldHeaders:member': +Excel.PivotLayout#showFieldHeaders:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5186,7 +5186,7 @@ pivotLayout.showFieldHeaders = showHeaders; await context.sync(); }); -'Excel.PivotLayout#showRowGrandTotals:member': +Excel.PivotLayout#showRowGrandTotals:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -5210,7 +5210,7 @@ await context.sync(); }); -'Excel.PivotTable#columnHierarchies:member': +Excel.PivotTable#columnHierarchies:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -5233,7 +5233,7 @@ await context.sync(); }); -'Excel.PivotTable#dataHierarchies:member': +Excel.PivotTable#dataHierarchies:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -5246,7 +5246,7 @@ await context.sync(); }); -'Excel.PivotTable#delete:member(1)': +Excel.PivotTable#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -5257,7 +5257,7 @@ await context.sync(); }); -'Excel.PivotTable#layout:member': +Excel.PivotTable#layout:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -5279,7 +5279,7 @@ await context.sync(); console.log("Pivot layout is now " + pivotTable.layout.layoutType); }); -'Excel.PivotTable#getDataSourceString:member(1)': +Excel.PivotTable#getDataSourceString:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-source-data.yaml @@ -5300,7 +5300,7 @@ console.log("Data source: " + pivotTableDataSourceString.value); console.log("Source type: " + pivotTableDataSourceType.value); }); -'Excel.PivotTable#getDataSourceType:member(1)': +Excel.PivotTable#getDataSourceType:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-source-data.yaml @@ -5321,7 +5321,7 @@ console.log("Data source: " + pivotTableDataSourceString.value); console.log("Source type: " + pivotTableDataSourceType.value); }); -'Excel.PivotTable#filterHierarchies:member': +Excel.PivotTable#filterHierarchies:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml @@ -5342,7 +5342,7 @@ } }); } -'Excel.PivotTable#refresh:member(1)': +Excel.PivotTable#refresh:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-refresh.yaml @@ -5357,7 +5357,7 @@ pivotTable.refresh(); await context.sync(); }); -'Excel.PivotTableCollection#add:member(1)': +Excel.PivotTableCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -5370,7 +5370,7 @@ await context.sync(); }); -'Excel.PivotTableCollection#getItem:member(1)': +Excel.PivotTableCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-refresh.yaml @@ -5385,7 +5385,7 @@ pivotTable.refresh(); await context.sync(); }); -'Excel.PresetCriteriaConditionalFormat#rule:member': +Excel.PresetCriteriaConditionalFormat#rule:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -5401,7 +5401,7 @@ await context.sync(); }); -'Excel.Range#clearOrResetContents:member(1)': +Excel.Range#clearOrResetContents:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -5419,7 +5419,7 @@ range.clearOrResetContents(); await context.sync(); }); -'Excel.Range#control:member': +Excel.Range#control:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -5439,7 +5439,7 @@ }; await context.sync(); }); -'Excel.Range#values:member': +Excel.Range#values:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -5454,7 +5454,7 @@ range.values = [["TRUE"]]; await context.sync(); }); -'Excel.Range#valuesAsJson:member': +Excel.Range#valuesAsJson:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -5481,7 +5481,7 @@ ]; await context.sync(); }); -'Excel.Range#getDirectDependents:member(1)': +Excel.Range#getDirectDependents:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-direct-dependents.yaml @@ -5505,7 +5505,7 @@ } await context.sync(); }); -'Excel.Range#sort:member': +Excel.Range#sort:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml @@ -5535,7 +5535,7 @@ await context.sync(); }); } -'Excel.Range#getMergedAreasOrNullObject:member(1)': +Excel.Range#getMergedAreasOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-merged-ranges.yaml @@ -5562,7 +5562,7 @@ await context.sync(); }); -'Excel.Range#merge:member(1)': +Excel.Range#merge:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-merged-ranges.yaml @@ -5582,7 +5582,7 @@ await context.sync(); }); -'Excel.Range#group:member(1)': +Excel.Range#group:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml @@ -5601,7 +5601,7 @@ sheet.getRange("7:8").group(Excel.GroupOption.byRows); await context.sync(); }); -'Excel.Range#ungroup:member(1)': +Excel.Range#ungroup:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml @@ -5618,7 +5618,7 @@ sheet.getRange("A1:R10").ungroup(Excel.GroupOption.byColumns); await context.sync(); }); -'Excel.Range#getPivotTables:member(1)': +Excel.Range#getPivotTables:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-get-pivottables.yaml @@ -5646,7 +5646,7 @@ console.log(`\t${pivotTable.name}`); }); }); -'Excel.Range#getDirectPrecedents:member(1)': +Excel.Range#getDirectPrecedents:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/precedents.yaml @@ -5671,7 +5671,7 @@ } await context.sync(); }); -'Excel.Range#getPrecedents:member(1)': +Excel.Range#getPrecedents:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/precedents.yaml @@ -5695,7 +5695,7 @@ } await context.sync(); }); -'Excel.Range#getSpecialCells:member(1)': +Excel.Range#getSpecialCells:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml @@ -5712,7 +5712,7 @@ return context.sync(); }); -'Excel.Range#autoFill:member(1)': +Excel.Range#autoFill:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-auto-fill.yaml @@ -5727,7 +5727,7 @@ sumCell.format.autofitColumns(); await context.sync(); }); -'Excel.Range#getCellProperties:member(1)': +Excel.Range#getCellProperties:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -5756,7 +5756,7 @@ console.log( `Address: ${cellProperties.address}\nStyle: ${cellProperties.style}\nFill Color: ${cellProperties.format.fill.color}\nFont Color: ${cellProperties.format.font.color}`); }); -'Excel.Range#setCellProperties:member(1)': +Excel.Range#setCellProperties:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -5833,7 +5833,7 @@ sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.Range#copyFrom:member(1)': +Excel.Range#copyFrom:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-copyfrom.yaml @@ -5849,7 +5849,7 @@ sheet.getRange("G2").copyFrom("A1:E1", Excel.RangeCopyType.formulas); await context.sync(); }); -'Excel.Range#moveTo:member(1)': +Excel.Range#moveTo:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-copyfrom.yaml @@ -5864,7 +5864,7 @@ sheet.getRange("A1:E1").moveTo("G12"); await context.sync(); }); -'Excel.Range#getDependents:member(1)': +Excel.Range#getDependents:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-dependents.yaml @@ -5892,7 +5892,7 @@ } await context.sync(); }); -'Excel.Range#getSpillingToRange:member(1)': +Excel.Range#getSpillingToRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/dynamic-arrays.yaml @@ -5915,7 +5915,7 @@ console.log(`Copying the table headers spilled into ${spillRange.address}.`); }); -'Excel.Range#find:member(1)': +Excel.Range#find:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-find.yaml @@ -5941,7 +5941,7 @@ console.log(foundRange.address); }); -'Excel.Range#findOrNullObject:member(1)': +Excel.Range#findOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-find.yaml @@ -5967,7 +5967,7 @@ console.log(foundRange.address); } }); -'Excel.Range#getExtendedRange:member(1)': +Excel.Range#getExtendedRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-get-range-edge.yaml @@ -5993,7 +5993,7 @@ await context.sync(); }); -'Excel.Range#getRangeEdge:member(1)': +Excel.Range#getRangeEdge:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-get-range-edge.yaml @@ -6019,7 +6019,7 @@ await context.sync(); }); -'Excel.Range#hyperlink:member': +Excel.Range#hyperlink:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml @@ -6049,7 +6049,7 @@ await context.sync(); }); -'Excel.Range#getIntersectionOrNullObject:member(1)': +Excel.Range#getIntersectionOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-relationships.yaml @@ -6109,7 +6109,7 @@ await context.sync(); }); -'Excel.Range#getUsedRange:member(1)': +Excel.Range#getUsedRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-relationships.yaml @@ -6169,7 +6169,7 @@ await context.sync(); }); -'Excel.Range#removeDuplicates:member(1)': +Excel.Range#removeDuplicates:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-remove-duplicates.yaml @@ -6186,7 +6186,7 @@ console.log(deleteResult.removed + " entries with duplicate names removed."); console.log(deleteResult.uniqueRemaining + " entries with unique names remain in the range."); }); -'Excel.Range#style:member': +Excel.Range#style:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -6203,7 +6203,7 @@ await context.sync(); }); -'Excel.Range#getUsedRangeOrNullObject:member(1)': +Excel.Range#getUsedRangeOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/used-range.yaml @@ -6241,7 +6241,7 @@ await context.sync(); }); -'Excel.Range#set:member(2)': +Excel.Range#set:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/90-scenarios/multiple-property-set.yaml @@ -6261,7 +6261,7 @@ targetRange.format.autofitColumns(); await context.sync(); }); -'Excel.RangeAreas#format:member': +Excel.RangeAreas#format:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml @@ -6278,7 +6278,7 @@ await context.sync(); }); -'Excel.RangeCopyType:enum': +Excel.RangeCopyType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-copyfrom.yaml @@ -6294,7 +6294,7 @@ sheet.getRange("G2").copyFrom("A1:E1", Excel.RangeCopyType.formulas); await context.sync(); }); -'Excel.RangeFormat#textOrientation:member': +Excel.RangeFormat#textOrientation:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-text-orientation.yaml @@ -6310,7 +6310,7 @@ await context.sync(); }); -'Excel.RangeHyperlink#address:member': +Excel.RangeHyperlink#address:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml @@ -6340,7 +6340,7 @@ await context.sync(); }); -'Excel.RangeHyperlink#documentReference:member': +Excel.RangeHyperlink#documentReference:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml @@ -6370,7 +6370,7 @@ await context.sync(); }); -'Excel.RangeHyperlink#screenTip:member': +Excel.RangeHyperlink#screenTip:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml @@ -6400,7 +6400,7 @@ await context.sync(); }); -'Excel.RangeHyperlink#textToDisplay:member': +Excel.RangeHyperlink#textToDisplay:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml @@ -6430,7 +6430,7 @@ await context.sync(); }); -'Excel.RangeUnderlineStyle:enum': +Excel.RangeUnderlineStyle:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-hyperlink.yaml @@ -6459,7 +6459,7 @@ await context.sync(); }); -'Excel.ReadingOrder:enum': +Excel.ReadingOrder:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -6480,7 +6480,7 @@ console.log("Shrink to fit: " + style.shrinkToFit); console.log("Style locked: " + style.locked); }); -'Excel.RemoveDuplicatesResult#uniqueRemaining:member': +Excel.RemoveDuplicatesResult#uniqueRemaining:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-remove-duplicates.yaml @@ -6497,7 +6497,7 @@ console.log(deleteResult.removed + " entries with duplicate names removed."); console.log(deleteResult.uniqueRemaining + " entries with unique names remain in the range."); }); -'Excel.Runtime#enableEvents:member': +Excel.Runtime#enableEvents:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-disable-events.yaml @@ -6518,7 +6518,7 @@ await context.sync(); }); -'Excel.SaveBehavior:enum': +Excel.SaveBehavior:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-save-and-close.yaml @@ -6527,7 +6527,7 @@ await Excel.run(async (context) => { context.workbook.save(Excel.SaveBehavior.prompt); }); -'Excel.SearchDirection:enum': +Excel.SearchDirection:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-find.yaml @@ -6538,7 +6538,7 @@ Excel.SearchDirection.forward; console.log("Search direction = " + searchDirectionToggle); -'Excel.SettableCellProperties#style:member': +Excel.SettableCellProperties#style:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml @@ -6615,7 +6615,7 @@ sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); -'Excel.Setting#delete:member(1)': +Excel.Setting#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/create-get-change-delete-settings.yaml @@ -6637,7 +6637,7 @@ await context.sync(); }); -'Excel.SettingCollection#add:member(1)': +Excel.SettingCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -6650,7 +6650,7 @@ await context.sync(); console.log("Settings changed handler registered."); }); -'Excel.SettingCollection#onSettingsChanged:member': +Excel.SettingCollection#onSettingsChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -6663,7 +6663,7 @@ await context.sync(); console.log("Settings changed handler registered."); }); -'Excel.SettingCollection#getItemOrNullObject:member(1)': +Excel.SettingCollection#getItemOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/create-get-change-delete-settings.yaml @@ -6685,7 +6685,7 @@ await context.sync(); }); -'Excel.Shape#delete:member(1)': +Excel.Shape#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml @@ -6704,7 +6704,7 @@ shapes.items.forEach((shape) => shape.delete()); await context.sync(); }); -'Excel.Shape#fill:member': +Excel.Shape#fill:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml @@ -6720,7 +6720,7 @@ shape.fill.foregroundColor = "yellow" await context.sync(); }); -'Excel.Shape#rotation:member': +Excel.Shape#rotation:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml @@ -6737,7 +6737,7 @@ shape.fill.clear(); await context.sync(); }); -'Excel.Shape#group:member': +Excel.Shape#group:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-groups.yaml @@ -6752,7 +6752,7 @@ await context.sync(); }); -'Excel.Shape#getAsImage:member(1)': +Excel.Shape#getAsImage:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml @@ -6768,7 +6768,7 @@ // Your add-in would save this string as a .png file. console.log("The image's Base64-encoded string: " + imageString); }); -'Excel.Shape#incrementRotation:member(1)': +Excel.Shape#incrementRotation:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml @@ -6780,7 +6780,7 @@ shape.incrementRotation(180); await context.sync(); }); -'Excel.Shape#line:member': +Excel.Shape#line:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -6799,7 +6799,7 @@ await context.sync(); }); -'Excel.Shape#incrementLeft:member(1)': +Excel.Shape#incrementLeft:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -6811,7 +6811,7 @@ shape.incrementLeft(-25); await context.sync(); }); -'Excel.Shape#incrementTop:member(1)': +Excel.Shape#incrementTop:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -6823,7 +6823,7 @@ shape.incrementTop(25); await context.sync(); }); -'Excel.Shape#lockAspectRatio:member': +Excel.Shape#lockAspectRatio:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -6836,7 +6836,7 @@ shape.scaleHeight(1.25, Excel.ShapeScaleType.currentSize); await context.sync(); }); -'Excel.Shape#scaleHeight:member(1)': +Excel.Shape#scaleHeight:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -6849,7 +6849,7 @@ shape.scaleHeight(1.25, Excel.ShapeScaleType.currentSize); await context.sync(); }); -'Excel.Shape#setZOrder:member(1)': +Excel.Shape#setZOrder:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -6861,7 +6861,7 @@ shape.setZOrder(Excel.ShapeZOrder.sendBackward); await context.sync(); }); -'Excel.ShapeAutoSize:enum': +Excel.ShapeAutoSize:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-textboxes.yaml @@ -6873,7 +6873,7 @@ textbox.textFrame.autoSizeSetting = Excel.ShapeAutoSize.autoSizeShapeToFitText; await context.sync(); }); -'Excel.ShapeCollection#addGeometricShape:member(1)': +Excel.ShapeCollection#addGeometricShape:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-create-and-delete.yaml @@ -6888,7 +6888,7 @@ shape.width = 200; await context.sync(); }); -'Excel.ShapeCollection#addGroup:member(1)': +Excel.ShapeCollection#addGroup:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-groups.yaml @@ -6906,7 +6906,7 @@ await context.sync(); }); -'Excel.ShapeCollection#addImage:member(1)': +Excel.ShapeCollection#addImage:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-images.yaml @@ -6932,7 +6932,7 @@ // Read in the image file as a data URL. reader.readAsDataURL(myFile.files[0]); -'Excel.ShapeCollection#addLine:member(1)': +Excel.ShapeCollection#addLine:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-lines.yaml @@ -6944,7 +6944,7 @@ line.name = "StraightLine"; await context.sync(); }); -'Excel.ShapeCollection#addTextBox:member(1)': +Excel.ShapeCollection#addTextBox:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-textboxes.yaml @@ -6960,7 +6960,7 @@ textbox.name = "Textbox"; await context.sync(); }); -'Excel.ShapeGroup#ungroup:member(1)': +Excel.ShapeGroup#ungroup:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-groups.yaml @@ -6975,7 +6975,7 @@ await context.sync(); }); -'Excel.ShapeScaleType:enum': +Excel.ShapeScaleType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -6988,7 +6988,7 @@ shape.scaleHeight(1.25, Excel.ShapeScaleType.currentSize); await context.sync(); }); -'Excel.ShapeTextHorizontalAlignment:enum': +Excel.ShapeTextHorizontalAlignment:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-textboxes.yaml @@ -7000,7 +7000,7 @@ textbox.textFrame.horizontalAlignment = Excel.ShapeTextHorizontalAlignment.center; await context.sync(); }); -'Excel.ShapeZOrder:enum': +Excel.ShapeZOrder:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-move-and-order.yaml @@ -7012,7 +7012,7 @@ shape.setZOrder(Excel.ShapeZOrder.sendBackward); await context.sync(); }); -'Excel.SheetVisibility:enum': +Excel.SheetVisibility:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-visibility.yaml @@ -7033,7 +7033,7 @@ console.log("Cannot hide the only visible worksheet"); } }); -'Excel.ShowAsCalculation:enum': +Excel.ShowAsCalculation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-calculations.yaml @@ -7060,7 +7060,7 @@ wholesaleDataHierarchy.showAs = wholesaleShowAs; await context.sync(); }); -'Excel.ShowAsRule#baseItem:member': +Excel.ShowAsRule#baseItem:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-calculations.yaml @@ -7090,7 +7090,7 @@ wholesaleDataHierarchy.showAs = wholesaleShowAs; await context.sync(); }); -'Excel.Slicer#clearFilters:member(1)': +Excel.Slicer#clearFilters:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -7101,7 +7101,7 @@ slicer.clearFilters(); await context.sync(); }); -'Excel.Slicer#delete:member(1)': +Excel.Slicer#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -7112,7 +7112,7 @@ sheet.slicers.getItemAt(0).delete(); await context.sync(); }); -'Excel.Slicer#selectItems:member(1)': +Excel.Slicer#selectItems:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -7123,7 +7123,7 @@ slicer.selectItems(["Lemon", "Lime", "Orange"]); await context.sync(); }); -'Excel.Slicer#style:member': +Excel.Slicer#style:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -7134,7 +7134,7 @@ slicer.style = "SlicerStyleLight6"; await context.sync(); }); -'Excel.SlicerCollection#add:member(1)': +Excel.SlicerCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -7149,7 +7149,7 @@ slicer.name = "Fruit Slicer"; await context.sync(); }); -'Excel.SlicerCollection#getItem:member(1)': +Excel.SlicerCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -7164,7 +7164,7 @@ slicer.width = 150; await context.sync(); }); -'Excel.SortOn:enum': +Excel.SortOn:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml @@ -7194,7 +7194,7 @@ await context.sync(); }); } -'Excel.SortOrientation:enum': +Excel.SortOrientation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml @@ -7224,7 +7224,7 @@ await context.sync(); }); } -'CustomFunctions.StreamingInvocation#setResult:member': +CustomFunctions.StreamingInvocation#setResult:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/16-custom-functions/streaming-function.yaml @@ -7250,7 +7250,7 @@ clearInterval(timer); } } -'Excel.Style#delete:member(1)': +Excel.Style#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7267,7 +7267,7 @@ console.log("Successfully deleted the diagonal orientation style from the Home tab ribbon."); }); -'Excel.Style#font:member': +Excel.Style#font:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7287,7 +7287,7 @@ console.log("Size: " + style.font.size); console.log("Fill color: " + style.fill.color); }); -'Excel.Style#horizontalAlignment:member': +Excel.Style#horizontalAlignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7304,7 +7304,7 @@ await context.sync(); }); -'Excel.Style#load:member(1)': +Excel.Style#load:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7325,7 +7325,7 @@ console.log("Shrink to fit: " + style.shrinkToFit); console.log("Style locked: " + style.locked); }); -'Excel.StyleCollection#add:member(1)': +Excel.StyleCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7351,7 +7351,7 @@ console.log("Successfully added a new style with diagonal orientation to the Home tab ribbon."); }); -'Excel.StyleCollection#getItem:member(1)': +Excel.StyleCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7377,7 +7377,7 @@ console.log("Successfully added a new style with diagonal orientation to the Home tab ribbon."); }); -'Excel.Table#onChanged:member': +Excel.Table#onChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-table-changed.yaml @@ -7390,7 +7390,7 @@ await context.sync(); console.log("A handler has been registered for the onChanged event"); }); -'Excel.Table#onSelectionChanged:member': +Excel.Table#onSelectionChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-table-changed.yaml @@ -7403,7 +7403,7 @@ await context.sync(); console.log("A handler has been registered for table onSelectionChanged event"); }); -'Excel.Table#resize:member(1)': +Excel.Table#resize:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/46-table/resize-table.yaml @@ -7419,7 +7419,7 @@ await context.sync(); }); -'Excel.TableChangedEventArgs#details:member': +Excel.TableChangedEventArgs#details:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/data-change-event-details.yaml @@ -7434,7 +7434,7 @@ + ` now is ${details.valueAfter}(${details.valueTypeAfter})`); }); } -'Excel.TableChangedEventArgs#tableId:member': +Excel.TableChangedEventArgs#tableId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-tablecollection-changed.yaml @@ -7453,7 +7453,7 @@ console.log("Worksheet Id : " + worksheet.name); }); } -'Excel.TableChangedEventArgs#worksheetId:member': +Excel.TableChangedEventArgs#worksheetId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-tablecollection-changed.yaml @@ -7472,7 +7472,7 @@ console.log("Worksheet Id : " + worksheet.name); }); } -'Excel.TableCollection:class': +Excel.TableCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -7492,7 +7492,7 @@ }; await context.sync(); }); -'Excel.TableCollection#getItem:member(1)': +Excel.TableCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -7512,7 +7512,7 @@ }; await context.sync(); }); -'Excel.TableCollection#onChanged:member': +Excel.TableCollection#onChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-tablecollection-changed.yaml @@ -7525,7 +7525,7 @@ await context.sync(); console.log("A handler has been registered for the table collection onChanged event"); }); -'Excel.TableColumn#getDataBodyRange:member(1)': +Excel.TableColumn#getDataBodyRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -7545,7 +7545,7 @@ }; await context.sync(); }); -'Excel.TableColumnCollection:class': +Excel.TableColumnCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -7565,7 +7565,7 @@ }; await context.sync(); }); -'Excel.TableColumnCollection#getItem:member(1)': +Excel.TableColumnCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-cell-control.yaml @@ -7583,7 +7583,7 @@ range.clearOrResetContents(); await context.sync(); }); -'Excel.TableSelectionChangedEventArgs#address:member': +Excel.TableSelectionChangedEventArgs#address:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-table-changed.yaml @@ -7594,7 +7594,7 @@ console.log("Handler for table onSelectionChanged event has been triggered. The new selection is: " + args.address); }); } -'Excel.TextConditionalFormat#format:member': +Excel.TextConditionalFormat#format:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -7610,7 +7610,7 @@ await context.sync(); }); -'Excel.TextConditionalFormat#rule:member': +Excel.TextConditionalFormat#rule:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -7626,7 +7626,7 @@ await context.sync(); }); -'Excel.TextFrame#deleteText:member(1)': +Excel.TextFrame#deleteText:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-textboxes.yaml @@ -7638,7 +7638,7 @@ textbox.textFrame.deleteText(); await context.sync(); }); -'Excel.ValueFilterCondition:enum': +Excel.ValueFilterCondition:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -7665,7 +7665,7 @@ await context.sync(); }); -'Excel.VerticalAlignment:enum': +Excel.VerticalAlignment:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7680,7 +7680,7 @@ await context.sync(); }); -'Excel.WebImageCellValue#address:member': +Excel.WebImageCellValue#address:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-web-image.yaml @@ -7708,7 +7708,7 @@ // Open the image URL in a new browser tab. const tab = window.open(webImageData.address, "_blank"); }); -'Excel.WebImageCellValue#type:member': +Excel.WebImageCellValue#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-web-image.yaml @@ -7744,7 +7744,7 @@ await context.sync(); }); -'Excel.Workbook#properties:member': +Excel.Workbook#properties:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/properties.yaml @@ -7774,7 +7774,7 @@ console.log("Set the following document properties: title, subject, keywords, comments, category, manager, company."); }); -'Excel.Workbook#onActivated:member': +Excel.Workbook#onActivated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-activated.yaml @@ -7800,7 +7800,7 @@ await context.sync(); console.log("Added event handler for workbook activated."); }); -'Excel.Workbook#pivotTables:member': +Excel.Workbook#pivotTables:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-get-pivottables.yaml @@ -7818,7 +7818,7 @@ console.log(`\t${pivotTable.name}`); }); }); -'Excel.Workbook#getSelectedRanges:member(1)': +Excel.Workbook#getSelectedRanges:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml @@ -7831,7 +7831,7 @@ await context.sync(); }) -'Excel.Workbook#styles:member': +Excel.Workbook#styles:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/style.yaml @@ -7857,7 +7857,7 @@ console.log("Successfully added a new style with diagonal orientation to the Home tab ribbon."); }); -'Excel.Workbook#getActiveShapeOrNullObject:member(1)': +Excel.Workbook#getActiveShapeOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/44-shape/shape-get-active.yaml @@ -7885,7 +7885,7 @@ console.log("No active shape"); } }); -'Excel.Workbook#getActiveCell:member(1)': +Excel.Workbook#getActiveCell:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-get-active-cell.yaml @@ -7901,7 +7901,7 @@ console.log("The active cell is " + activeCell.address); }); -'Excel.Workbook#insertWorksheetsFromBase64:member(1)': +Excel.Workbook#insertWorksheetsFromBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml @@ -7945,7 +7945,7 @@ workbook.insertWorksheetsFromBase64(externalWorkbook, options); await context.sync(); }); -'Excel.Workbook#close:member(1)': +Excel.Workbook#close:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-save-and-close.yaml @@ -7954,7 +7954,7 @@ await Excel.run(async (context) => { context.workbook.close(Excel.CloseBehavior.save); }); -'Excel.Workbook#save:member(1)': +Excel.Workbook#save:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-save-and-close.yaml @@ -7963,7 +7963,7 @@ await Excel.run(async (context) => { context.workbook.save(Excel.SaveBehavior.save); }); -'Excel.WorkbookProtection#protect:member(1)': +Excel.WorkbookProtection#protect:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/data-protection.yaml @@ -7983,7 +7983,7 @@ workbook.protection.protect(password); } }); -'Excel.WorkbookProtection#unprotect:member(1)': +Excel.WorkbookProtection#unprotect:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/data-protection.yaml @@ -7997,7 +7997,7 @@ let workbook = context.workbook; workbook.protection.unprotect(password); }); -'Excel.WorkbookRangeAreas#areas:member': +Excel.WorkbookRangeAreas#areas:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/precedents.yaml @@ -8022,7 +8022,7 @@ } await context.sync(); }); -'Excel.Worksheet#customProperties:member': +Excel.Worksheet#customProperties:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/custom-properties.yaml @@ -8040,7 +8040,7 @@ console.log(`${property.key}:${property.value}`); }); }); -'Excel.Worksheet#onColumnSorted:member': +Excel.Worksheet#onColumnSorted:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml @@ -8066,7 +8066,7 @@ }); }); }); -'Excel.Worksheet#onRowSorted:member': +Excel.Worksheet#onRowSorted:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-column-and-row-sort.yaml @@ -8092,7 +8092,7 @@ }); }); }); -'Excel.Worksheet#onSingleClicked:member': +Excel.Worksheet#onSingleClicked:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-worksheet-single-click.yaml @@ -8111,7 +8111,7 @@ await context.sync(); }); -'Excel.Worksheet#onFormulaChanged:member': +Excel.Worksheet#onFormulaChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-formula-changed.yaml @@ -8148,7 +8148,7 @@ ); }); } -'Excel.Worksheet#onChanged:member': +Excel.Worksheet#onChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet.yaml @@ -8161,7 +8161,7 @@ console.log("Added a worksheet-level data-changed event handler."); }); -'Excel.Worksheet#onProtectionChanged:member': +Excel.Worksheet#onProtectionChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet-protection.yaml @@ -8199,7 +8199,7 @@ console.log(" Source of change event: " + source + "."); }); } -'Excel.Worksheet#showOutlineLevels:member(1)': +Excel.Worksheet#showOutlineLevels:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/outline.yaml @@ -8212,7 +8212,7 @@ sheet.showOutlineLevels(3, 3); await context.sync(); }); -'Excel.Worksheet#slicers:member': +Excel.Worksheet#slicers:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -8227,7 +8227,7 @@ slicer.name = "Fruit Slicer"; await context.sync(); }); -'Excel.Worksheet#pivotTables:member': +Excel.Worksheet#pivotTables:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/38-pivottable/pivottable-get-pivottables.yaml @@ -8245,7 +8245,7 @@ console.log(`\t${pivotTable.name}`); }); }); -'Excel.Worksheet#getRanges:member(1)': +Excel.Worksheet#getRanges:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/range-areas.yaml @@ -8259,7 +8259,7 @@ await context.sync(); }) -'Excel.Worksheet#autoFilter:member': +Excel.Worksheet#autoFilter:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -8282,7 +8282,7 @@ await context.sync(); }); -'Excel.Worksheet#copy:member(1)': +Excel.Worksheet#copy:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-copy.yaml @@ -8301,7 +8301,7 @@ console.log("'" + sampleSheet.name + "' was copied to '" + copiedSheet.name + "'") }); -'Excel.Worksheet#findAllOrNullObject:member(1)': +Excel.Worksheet#findAllOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-find-all.yaml @@ -8322,7 +8322,7 @@ foundRanges.format.fill.color = "green" } }); -'Excel.Worksheet#showGridlines:member': +Excel.Worksheet#showGridlines:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/gridlines.yaml @@ -8334,7 +8334,7 @@ await context.sync(); }); -'Excel.Worksheet#getNext:member(1)': +Excel.Worksheet#getNext:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -8364,7 +8364,7 @@ await context.sync(); }); -'Excel.Worksheet#getPrevious:member(1)': +Excel.Worksheet#getPrevious:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -8390,7 +8390,7 @@ await context.sync(); }); -'Excel.Worksheet#tabColor:member': +Excel.Worksheet#tabColor:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/tab-color.yaml @@ -8402,7 +8402,7 @@ await context.sync(); }); -'Excel.WorksheetAddedEventArgs#worksheetId:member': +Excel.WorksheetAddedEventArgs#worksheetId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -8416,7 +8416,7 @@ ); }); } -'Excel.WorksheetChangedEventArgs#changeDirectionState:member': +Excel.WorksheetChangedEventArgs#changeDirectionState:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet.yaml @@ -8460,7 +8460,7 @@ const range = sheet.getRange("A5:F5"); range.delete(Excel.DeleteShiftDirection.up); }); -'Excel.WorksheetChangedEventArgs#triggerSource:member': +Excel.WorksheetChangedEventArgs#triggerSource:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet.yaml @@ -8491,7 +8491,7 @@ } }); } -'Excel.WorksheetCollection#onActivated:member': +Excel.WorksheetCollection#onActivated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -8504,7 +8504,7 @@ await context.sync(); console.log("A handler has been registered for the OnActivate event."); }); -'Excel.WorksheetCollection#onAdded:member': +Excel.WorksheetCollection#onAdded:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -8517,7 +8517,7 @@ await context.sync(); console.log("A handler has been registered for the OnAdded event."); }); -'Excel.WorksheetCollection#onDeactivated:member': +Excel.WorksheetCollection#onDeactivated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -8530,7 +8530,7 @@ await context.sync(); console.log("A handler has been registered for the OnDeactivate event."); }); -'Excel.WorksheetCollection#getFirst:member(1)': +Excel.WorksheetCollection#getFirst:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -8560,7 +8560,7 @@ await context.sync(); }); -'Excel.WorksheetCollection#getLast:member(1)': +Excel.WorksheetCollection#getLast:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -8590,7 +8590,7 @@ await context.sync(); }); -'Excel.WorksheetCustomPropertyCollection#add:member(1)': +Excel.WorksheetCustomPropertyCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/custom-properties.yaml @@ -8609,7 +8609,7 @@ console.log(`Successfully set custom worksheet property ${userKey}:${userValue}.`); }); -'Excel.WorksheetFreezePanes#freezeAt:member(1)': +Excel.WorksheetFreezePanes#freezeAt:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -8623,7 +8623,7 @@ await context.sync(); }); -'Excel.WorksheetFreezePanes#freezeColumns:member(1)': +Excel.WorksheetFreezePanes#freezeColumns:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -8637,7 +8637,7 @@ await context.sync(); }); -'Excel.WorksheetFreezePanes#freezeRows:member(1)': +Excel.WorksheetFreezePanes#freezeRows:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -8651,7 +8651,7 @@ await context.sync(); }); -'Excel.WorksheetFreezePanes#getLocationOrNullObject:member(1)': +Excel.WorksheetFreezePanes#getLocationOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -8670,7 +8670,7 @@ console.log(`The address of the frozen range (cells that are frozen in the top-and-left-most pane) is "${frozenRange.address}"`); } }); -'Excel.WorksheetFreezePanes#unfreeze:member(1)': +Excel.WorksheetFreezePanes#unfreeze:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -8682,7 +8682,7 @@ await context.sync(); }); -'Excel.WorksheetPositionType:enum': +Excel.WorksheetPositionType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml @@ -8703,7 +8703,7 @@ workbook.insertWorksheetsFromBase64(externalWorkbook, options); await context.sync(); }); -'Excel.WorksheetProtection#protect:member(1)': +Excel.WorksheetProtection#protect:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/data-protection.yaml @@ -8723,7 +8723,7 @@ activeSheet.protection.protect(null, password); } }); -'Excel.WorksheetProtection#unprotect:member(1)': +Excel.WorksheetProtection#unprotect:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/50-workbook/data-protection.yaml @@ -8737,7 +8737,7 @@ let activeSheet = context.workbook.worksheets.getActiveWorksheet(); activeSheet.protection.unprotect(password); }); -'Excel.WorksheetProtectionChangedEventArgs#isProtected:member': +Excel.WorksheetProtectionChangedEventArgs#isProtected:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet-protection.yaml @@ -8756,7 +8756,7 @@ console.log(" Source of change event: " + source + "."); }); } -'Excel.WorksheetProtectionChangedEventArgs#source:member': +Excel.WorksheetProtectionChangedEventArgs#source:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet-protection.yaml @@ -8775,7 +8775,7 @@ console.log(" Source of change event: " + source + "."); }); } -'Excel.WorksheetProtectionChangedEventArgs#worksheetId:member': +Excel.WorksheetProtectionChangedEventArgs#worksheetId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-worksheet-protection.yaml @@ -8794,7 +8794,7 @@ console.log(" Source of change event: " + source + "."); }); } -'Excel.WorksheetSingleClickedEventArgs#address:member': +Excel.WorksheetSingleClickedEventArgs#address:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/event-worksheet-single-click.yaml @@ -8813,7 +8813,7 @@ await context.sync(); }); -'Office.AppointmentCompose#addFileAttachmentAsync:member(1)': +Office.AppointmentCompose#addFileAttachmentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -8830,7 +8830,7 @@ console.log(result); } ); -'Office.AppointmentCompose#addFileAttachmentFromBase64Async:member(1)': +Office.AppointmentCompose#addFileAttachmentFromBase64Async:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -8876,7 +8876,7 @@ } } ); -'Office.AppointmentCompose#categories:member': +Office.AppointmentCompose#categories:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml @@ -8950,14 +8950,14 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#close:member(1)': +Office.AppointmentCompose#close:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/25-item-save-and-close/close.yaml Office.context.mailbox.item.close(); -'Office.AppointmentCompose#disableClientSignatureAsync:member(1)': +Office.AppointmentCompose#disableClientSignatureAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -8973,7 +8973,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#end:member': +Office.AppointmentCompose#end:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml @@ -9007,7 +9007,7 @@ console.log(`Successfully set end date and time to ${end}`); }); }); -'Office.AppointmentCompose#enhancedLocation:member': +Office.AppointmentCompose#enhancedLocation:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -9078,7 +9078,7 @@ console.error(`Failed to remove locations. Error message: ${result.error.message}`); } }); -'Office.AppointmentCompose#getAttachmentContentAsync:member(1)': +Office.AppointmentCompose#getAttachmentContentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachment-content.yaml @@ -9103,7 +9103,7 @@ Office.context.mailbox.item.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); } }); -'Office.AppointmentCompose#getAttachmentsAsync:member(1)': +Office.AppointmentCompose#getAttachmentsAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -9151,7 +9151,7 @@ console.log("No attachments on this message."); } }); -'Office.AppointmentCompose#getItemIdAsync:member(2)': +Office.AppointmentCompose#getItemIdAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/item-id-compose.yaml @@ -9165,7 +9165,7 @@ console.log(result.value); }); -'Office.AppointmentCompose#getSelectedDataAsync:member(2)': +Office.AppointmentCompose#getSelectedDataAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/get-selected-data.yaml @@ -9181,7 +9181,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#getSharedPropertiesAsync:member(2)': +Office.AppointmentCompose#getSharedPropertiesAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -9197,7 +9197,7 @@ console.log(`Permissions: ${sharedProperties.delegatePermissions}`); console.log(`Target mailbox: ${sharedProperties.targetMailbox}`); }); -'Office.AppointmentCompose#isAllDayEvent:member': +Office.AppointmentCompose#isAllDayEvent:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml @@ -9223,7 +9223,7 @@ console.log("Appointment set to all-day event."); } }); -'Office.AppointmentCompose#isClientSignatureEnabledAsync:member(1)': +Office.AppointmentCompose#isClientSignatureEnabledAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -9239,7 +9239,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#itemType:member': +Office.AppointmentCompose#itemType:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -9255,7 +9255,7 @@ console.log(`Current item is a ${itemType}. A message could be an email, meeting request, meeting response, or meeting cancellation.`); break; } -'Office.AppointmentCompose#loadCustomPropertiesAsync:member(1)': +Office.AppointmentCompose#loadCustomPropertiesAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -9270,7 +9270,7 @@ customProps = result.value; console.log("Loaded the CustomProperties object."); }); -'Office.AppointmentCompose#location:member': +Office.AppointmentCompose#location:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml @@ -9297,7 +9297,7 @@ } console.log(`Successfully set location to ${location}`); }); -'Office.AppointmentCompose#notificationMessages:member': +Office.AppointmentCompose#notificationMessages:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -9401,7 +9401,7 @@ Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); -'Office.AppointmentCompose#optionalAttendees:member': +Office.AppointmentCompose#optionalAttendees:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml @@ -9443,7 +9443,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#organizer:member': +Office.AppointmentCompose#organizer:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml @@ -9457,7 +9457,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#recurrence:member': +Office.AppointmentCompose#recurrence:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -9526,7 +9526,7 @@ } console.log(`Succeeded in setting recurrence pattern ${JSON.stringify(pattern)}`); }); -'Office.AppointmentCompose#removeAttachmentAsync:member(1)': +Office.AppointmentCompose#removeAttachmentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -9543,7 +9543,7 @@ console.log(`Attachment removed successfully.`); } ); -'Office.AppointmentCompose#requiredAttendees:member': +Office.AppointmentCompose#requiredAttendees:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml @@ -9585,7 +9585,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#saveAsync:member(1)': +Office.AppointmentCompose#saveAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/25-item-save-and-close/save.yaml @@ -9599,7 +9599,7 @@ console.error(`saveAsync failed with message ${result.error.message}`); } }); -'Office.AppointmentCompose#sendAsync:member(2)': +Office.AppointmentCompose#sendAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/send-async.yaml @@ -9613,7 +9613,7 @@ return; } }); -'Office.AppointmentCompose#sensitivity:member': +Office.AppointmentCompose#sensitivity:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml @@ -9641,7 +9641,7 @@ } } ); -'Office.AppointmentCompose#sensitivityLabel:member': +Office.AppointmentCompose#sensitivityLabel:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/60-sensitivity-label/sensitivity-label.yaml @@ -9662,7 +9662,7 @@ console.log("Action failed with error: " + asyncResult.error.message); } }); -'Office.AppointmentCompose#seriesId:member': +Office.AppointmentCompose#seriesId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-series-id.yaml @@ -9678,7 +9678,7 @@ } else { console.log("This is an instance belonging to series with ID " + seriesId); } -'Office.AppointmentCompose#sessionData:member': +Office.AppointmentCompose#sessionData:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -9691,7 +9691,7 @@ console.log("Failed to get all sessionData. Error: " + JSON.stringify(asyncResult.error)); } }); -'Office.AppointmentCompose#setSelectedDataAsync:member(1)': +Office.AppointmentCompose#setSelectedDataAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/set-selected-data.yaml @@ -9705,7 +9705,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentCompose#start:member': +Office.AppointmentCompose#start:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml @@ -9734,7 +9734,7 @@ } console.log(`Successfully set start date and time to ${start}`); }); -'Office.AppointmentCompose#subject:member': +Office.AppointmentCompose#subject:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml @@ -9761,7 +9761,7 @@ } console.log(`Successfully set subject to ${subject}`); }); -'Office.AppointmentRead#attachments:member': +Office.AppointmentRead#attachments:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml @@ -9782,7 +9782,7 @@ } else { console.log("This mail item doesn't contain any attachments."); } -'Office.AppointmentRead#categories:member': +Office.AppointmentRead#categories:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml @@ -9856,7 +9856,7 @@ console.error(asyncResult.error); } }); -'Office.AppointmentRead#dateTimeCreated:member': +Office.AppointmentRead#dateTimeCreated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml @@ -9864,7 +9864,7 @@ console.log(`Creation date and time: ${Office.context.mailbox.item.dateTimeCreated}`); -'Office.AppointmentRead#dateTimeModified:member': +Office.AppointmentRead#dateTimeModified:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml @@ -9872,7 +9872,7 @@ console.log(`Date and time item last modified: ${Office.context.mailbox.item.dateTimeModified}`); -'Office.AppointmentRead#displayReplyAllForm:member(1)': +Office.AppointmentRead#displayReplyAllForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -9924,7 +9924,7 @@ console.log("Created a reply-all form with attachments."); } }); -'Office.AppointmentRead#displayReplyAllFormAsync:member(1)': +Office.AppointmentRead#displayReplyAllFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -9984,7 +9984,7 @@ console.log("Created a reply-all form with attachments."); } ); -'Office.AppointmentRead#displayReplyForm:member(1)': +Office.AppointmentRead#displayReplyForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -10036,7 +10036,7 @@ console.log("Created a reply with attachments."); } }); -'Office.AppointmentRead#displayReplyFormAsync:member(1)': +Office.AppointmentRead#displayReplyFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -10096,14 +10096,14 @@ console.log("Created reply with attachments."); } ); -'Office.AppointmentRead#end:member': +Office.AppointmentRead#end:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-end-read.yaml console.log(`Appointment ends: ${Office.context.mailbox.item.end}`); -'Office.AppointmentRead#enhancedLocation:member': +Office.AppointmentRead#enhancedLocation:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -10126,7 +10126,7 @@ console.log("There are no locations."); } }); -'Office.AppointmentRead#getAttachmentContentAsync:member(1)': +Office.AppointmentRead#getAttachmentContentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachment-content.yaml @@ -10149,7 +10149,7 @@ // Log the attachment type and its contents to the console. item.getAttachmentContentAsync(attachments[i].id, handleAttachmentsCallback); } -'Office.AppointmentRead#getRegExMatches:member(1)': +Office.AppointmentRead#getRegExMatches:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml @@ -10158,7 +10158,7 @@ // This API only works when you click on the highlighted word "ScriptLab". console.log(Office.context.mailbox.item.getRegExMatches()); -'Office.AppointmentRead#getRegExMatchesByName:member(1)': +Office.AppointmentRead#getRegExMatchesByName:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml @@ -10167,7 +10167,7 @@ // This API only works when you click on the highlighted word "ScriptLab". console.log(Office.context.mailbox.item.getRegExMatchesByName("sampleRegexName")); -'Office.AppointmentRead#getSelectedRegExMatches:member(1)': +Office.AppointmentRead#getSelectedRegExMatches:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml @@ -10180,7 +10180,7 @@ } else { console.error("Open add-in by clicking on a highlighted regex match, for this API to return something useful."); } -'Office.AppointmentRead#getSharedPropertiesAsync:member(2)': +Office.AppointmentRead#getSharedPropertiesAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -10196,14 +10196,14 @@ console.log(`Permissions: ${sharedProperties.delegatePermissions}`); console.log(`Target mailbox: ${sharedProperties.targetMailbox}`); }); -'Office.AppointmentRead#itemClass:member': +Office.AppointmentRead#itemClass:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-class-read.yaml console.log(`Item class: ${Office.context.mailbox.item.itemClass}`); -'Office.AppointmentRead#itemType:member': +Office.AppointmentRead#itemType:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -10219,7 +10219,7 @@ console.log(`Current item is a ${itemType}. A message could be an email, meeting request, meeting response, or meeting cancellation.`); break; } -'Office.AppointmentRead#loadCustomPropertiesAsync:member(1)': +Office.AppointmentRead#loadCustomPropertiesAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -10234,7 +10234,7 @@ customProps = result.value; console.log("Loaded the CustomProperties object."); }); -'Office.AppointmentRead#location:member': +Office.AppointmentRead#location:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-location-read.yaml @@ -10242,7 +10242,7 @@ console.log(`Appointment location: ${Office.context.mailbox.item.location}`); -'Office.AppointmentRead#normalizedSubject:member': +Office.AppointmentRead#normalizedSubject:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml @@ -10250,7 +10250,7 @@ console.log(`Normalized subject: ${Office.context.mailbox.item.normalizedSubject}`); -'Office.AppointmentRead#notificationMessages:member': +Office.AppointmentRead#notificationMessages:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -10354,7 +10354,7 @@ Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); -'Office.AppointmentRead#optionalAttendees:member': +Office.AppointmentRead#optionalAttendees:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml @@ -10373,7 +10373,7 @@ apptOptionalAttendees[i].appointmentResponse ); } -'Office.AppointmentRead#organizer:member': +Office.AppointmentRead#organizer:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml @@ -10383,7 +10383,7 @@ console.log("Organizer: " + apptOrganizer.displayName + " (" + apptOrganizer.emailAddress + ")"); -'Office.AppointmentRead#recurrence:member': +Office.AppointmentRead#recurrence:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-recurrence-read.yaml @@ -10399,7 +10399,7 @@ } else { console.log(JSON.stringify(recurrence)); } -'Office.AppointmentRead#requiredAttendees:member': +Office.AppointmentRead#requiredAttendees:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml @@ -10418,7 +10418,7 @@ apptRequiredAttendees[i].appointmentResponse ); } -'Office.AppointmentRead#seriesId:member': +Office.AppointmentRead#seriesId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-series-id.yaml @@ -10434,21 +10434,21 @@ } else { console.log("This is an instance belonging to series with ID " + seriesId); } -'Office.AppointmentRead#start:member': +Office.AppointmentRead#start:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-start-read.yaml console.log(`Appointment starts: ${Office.context.mailbox.item.start}`); -'Office.AppointmentRead#subject:member': +Office.AppointmentRead#subject:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-subject-read.yaml console.log(`Subject: ${Office.context.mailbox.item.subject}`); -'Office.AttachmentDetails:interface': +Office.AttachmentDetails:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml @@ -10469,7 +10469,7 @@ } else { console.log("This mail item doesn't contain any attachments."); } -'Office.AttachmentDetailsCompose:interface': +Office.AttachmentDetailsCompose:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -10517,7 +10517,7 @@ console.log("No attachments on this message."); } }); -'Office.Body:interface': +Office.Body:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/add-inline-base64-image.yaml @@ -10553,7 +10553,7 @@ }); }); }); -'Office.Body#appendOnSendAsync:member(1)': +Office.Body#appendOnSendAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/append-text-on-send.yaml @@ -10585,7 +10585,7 @@ console.log(`"${text}" will be appended to the body once the message or appointment is sent. Send the mail item to test this feature.`); }); }); -'Office.Body#getAsync:member(2)': +Office.Body#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/add-inline-base64-image.yaml @@ -10621,7 +10621,7 @@ }); }); }); -'Office.Body#getTypeAsync:member(1)': +Office.Body#getTypeAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/get-body-format.yaml @@ -10638,7 +10638,7 @@ console.log("Body format: " + asyncResult.value); }); -'Office.Body#prependAsync:member(1)': +Office.Body#prependAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/prepend-text-to-item-body.yaml @@ -10673,7 +10673,7 @@ console.log(`"${text}" prepended to the body.`); }); }); -'Office.Body#prependOnSendAsync:member(1)': +Office.Body#prependOnSendAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/prepend-text-on-send.yaml @@ -10705,7 +10705,7 @@ console.log(`"${text}" will be prepended to the body once the message or appointment is sent. Send the mail item to test this feature.`); }); }); -'Office.Body#setAsync:member(1)': +Office.Body#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/add-inline-base64-image.yaml @@ -10741,7 +10741,7 @@ }); }); }); -'Office.Body#setSelectedDataAsync:member(1)': +Office.Body#setSelectedDataAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/replace-selected-text.yaml @@ -10776,7 +10776,7 @@ console.log(`Replaced selected text with "${text}".`); }); }); -'Office.Body#setSignatureAsync:member(1)': +Office.Body#setSignatureAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -10827,7 +10827,7 @@ console.error(asyncResult.error); } }); -'Office.Categories#addAsync:member(1)': +Office.Categories#addAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml @@ -10858,7 +10858,7 @@ console.error(asyncResult.error); } }); -'Office.Categories#getAsync:member(2)': +Office.Categories#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml @@ -10877,7 +10877,7 @@ console.error(asyncResult.error); } }); -'Office.Categories#removeAsync:member(1)': +Office.Categories#removeAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml @@ -10903,7 +10903,7 @@ console.error(asyncResult.error); } }); -'Office.CustomProperties#get:member(1)': +Office.CustomProperties#get:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -10916,7 +10916,7 @@ console.log(`The value of custom property "${propertyName}" is "${propertyValue}".`); -'Office.CustomProperties#getAll:member(1)': +Office.CustomProperties#getAll:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -10932,7 +10932,7 @@ console.log(allCustomProps); -'Office.CustomProperties#remove:member(1)': +Office.CustomProperties#remove:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -10944,7 +10944,7 @@ customProps.remove(propertyName); console.log(`Custom property "${propertyName}" removed.`); -'Office.CustomProperties#saveAsync:member(1)': +Office.CustomProperties#saveAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -10958,7 +10958,7 @@ console.log(`Custom properties saved with status: ${result.status}`); }); -'Office.CustomProperties#set:member(1)': +Office.CustomProperties#set:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -10974,7 +10974,7 @@ console.log(`Custom property "${propertyName}" set to value "${propertyValue}".`); -'Office.DelayDeliveryTime#getAsync:member(2)': +Office.DelayDeliveryTime#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/delay-message-delivery.yaml @@ -10996,7 +10996,7 @@ console.log(`Message delivery date and time: ${date.toString()}`); } }); -'Office.DelayDeliveryTime#setAsync:member(2)': +Office.DelayDeliveryTime#setAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/delay-message-delivery.yaml @@ -11020,7 +11020,7 @@ } }); } -'Office.Diagnostics:interface': +Office.Diagnostics:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml @@ -11053,7 +11053,7 @@ console.log("Current view (Outlook on the web only): Viewed from a desktop computer"); break; } -'Office.Display#body:member': +Office.Display#body:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -11078,7 +11078,7 @@ console.log("Temporarily set the content displayed in the body."); }); -'Office.Display#subject:member': +Office.Display#subject:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -11103,7 +11103,7 @@ console.log("Temporarily set the content displayed in the subject field."); }); -'Office.DisplayedBody#setAsync:member(2)': +Office.DisplayedBody#setAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -11128,7 +11128,7 @@ console.log("Temporarily set the content displayed in the body."); }); -'Office.DisplayedSubject#setAsync:member(2)': +Office.DisplayedSubject#setAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -11153,7 +11153,7 @@ console.log("Temporarily set the content displayed in the subject field."); }); -'Office.EnhancedLocation#addAsync:member(1)': +Office.EnhancedLocation#addAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -11178,7 +11178,7 @@ console.error(`Failed to add locations. Error message: ${result.error.message}`); } }); -'Office.EnhancedLocation#getAsync:member(1)': +Office.EnhancedLocation#getAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -11201,7 +11201,7 @@ console.log("There are no locations."); } }); -'Office.EnhancedLocation#removeAsync:member(1)': +Office.EnhancedLocation#removeAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -11226,7 +11226,7 @@ console.error(`Failed to remove locations. Error message: ${result.error.message}`); } }); -'Office.From#getAsync:member(1)': +Office.From#getAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml @@ -11240,7 +11240,7 @@ console.error(asyncResult.error); } }); -'Office.InternetHeaders#getAsync:member(1)': +Office.InternetHeaders#getAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -11256,7 +11256,7 @@ } } ); -'Office.InternetHeaders#removeAsync:member(1)': +Office.InternetHeaders#removeAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -11272,7 +11272,7 @@ } } ); -'Office.InternetHeaders#setAsync:member(1)': +Office.InternetHeaders#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -11289,7 +11289,7 @@ } ); -'Office.IsAllDayEvent#getAsync:member(2)': +Office.IsAllDayEvent#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml @@ -11302,7 +11302,7 @@ console.log("Failed to get if this is an all-day event. Error: " + JSON.stringify(asyncResult.error)); } }); -'Office.IsAllDayEvent#setAsync:member(1)': +Office.IsAllDayEvent#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml @@ -11316,7 +11316,7 @@ console.log("Appointment set to all-day event."); } }); -'Office.Item:interface': +Office.Item:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -11332,7 +11332,7 @@ console.log(`Current item is a ${itemType}. A message could be an email, meeting request, meeting response, or meeting cancellation.`); break; } -'Office.Location#getAsync:member(2)': +Office.Location#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml @@ -11345,7 +11345,7 @@ } console.log(`Appointment location: ${result.value}`); }); -'Office.Location#setAsync:member(1)': +Office.Location#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml @@ -11360,7 +11360,7 @@ } console.log(`Successfully set location to ${location}`); }); -'Office.Mailbox#convertToEwsId:member(1)': +Office.Mailbox#convertToEwsId:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml @@ -11389,7 +11389,7 @@ Office.MailboxEnums.RestVersion.v2_0); console.log("EWS ID (from REST ID): " + ewsId2); -'Office.Mailbox#convertToRestId:member(1)': +Office.Mailbox#convertToRestId:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml @@ -11418,7 +11418,7 @@ Office.MailboxEnums.RestVersion.v2_0); console.log("EWS ID (from REST ID): " + ewsId2); -'Office.Mailbox#diagnostics:member': +Office.Mailbox#diagnostics:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml @@ -11451,7 +11451,7 @@ console.log("Current view (Outlook on the web only): Viewed from a desktop computer"); break; } -'Office.Mailbox#displayAppointmentForm:member(1)': +Office.Mailbox#displayAppointmentForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-appointment.yaml @@ -11461,7 +11461,7 @@ HTMLInputElement).value; Office.context.mailbox.displayAppointmentForm(itemId); -'Office.Mailbox#displayAppointmentFormAsync:member(1)': +Office.Mailbox#displayAppointmentFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-appointment.yaml @@ -11479,7 +11479,7 @@ function(asyncResult) { console.log("Result: " + JSON.stringify(asyncResult)); }); -'Office.Mailbox#displayMessageForm:member(1)': +Office.Mailbox#displayMessageForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-message.yaml @@ -11489,7 +11489,7 @@ HTMLInputElement).value; Office.context.mailbox.displayMessageForm(itemId); -'Office.Mailbox#displayMessageFormAsync:member(1)': +Office.Mailbox#displayMessageFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-message.yaml @@ -11507,7 +11507,7 @@ (asyncResult) { console.log("Result: " + JSON.stringify(asyncResult)); }); -'Office.Mailbox#displayNewAppointmentForm:member(1)': +Office.Mailbox#displayNewAppointmentForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-appointment.yaml @@ -11530,7 +11530,7 @@ resources: ["projector@contoso.com"], body: "Hello World!" }); -'Office.Mailbox#displayNewAppointmentFormAsync:member(1)': +Office.Mailbox#displayNewAppointmentFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-appointment.yaml @@ -11562,7 +11562,7 @@ console.log(JSON.stringify(asyncResult)); } ); -'Office.Mailbox#displayNewMessageForm:member(1)': +Office.Mailbox#displayNewMessageForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-message.yaml @@ -11582,7 +11582,7 @@ } ] }); -'Office.Mailbox#displayNewMessageFormAsync:member(1)': +Office.Mailbox#displayNewMessageFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-message.yaml @@ -11611,7 +11611,7 @@ console.log(JSON.stringify(asyncResult)); } ); -'Office.Mailbox#ewsUrl:member': +Office.Mailbox#ewsUrl:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml @@ -11640,7 +11640,7 @@ Office.MailboxEnums.RestVersion.v2_0); console.log("EWS ID (from REST ID): " + ewsId2); -'Office.Mailbox#getCallbackTokenAsync:member(2)': +Office.Mailbox#getCallbackTokenAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml @@ -11654,7 +11654,7 @@ console.log(result.value); }); -'Office.Mailbox#getSelectedItemsAsync:member(2)': +Office.Mailbox#getSelectedItemsAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-message-properties.yaml @@ -11678,7 +11678,7 @@ console.log(`Has attachment: ${message.hasAttachment}`); }); }); -'Office.Mailbox#getUserIdentityTokenAsync:member(1)': +Office.Mailbox#getUserIdentityTokenAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml @@ -11692,7 +11692,7 @@ console.log(result.value); }); -'Office.Mailbox#loadItemByIdAsync:member(1)': +Office.Mailbox#loadItemByIdAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml @@ -11723,7 +11723,7 @@ }); }); } -'Office.Mailbox#makeEwsRequestAsync:member(1)': +Office.Mailbox#makeEwsRequestAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml @@ -11787,7 +11787,7 @@ Office.context.mailbox.makeEwsRequestAsync(request, (result) => { console.log(result); }); -'Office.Mailbox#masterCategories:member': +Office.Mailbox#masterCategories:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-master-categories.yaml @@ -11843,7 +11843,7 @@ console.log("masterCategories.removeAsync call failed with error: " + asyncResult.error.message); } }); -'Office.MailboxEnums.ActionType:enum': +Office.MailboxEnums.ActionType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -11875,7 +11875,7 @@ Office.context.mailbox.item.notificationMessages.addAsync(id, details, handleResult); -'Office.MailboxEnums.AppointmentSensitivityType:enum': +Office.MailboxEnums.AppointmentSensitivityType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml @@ -11891,7 +11891,7 @@ } } ); -'Office.MailboxEnums.AttachmentContentFormat:enum': +Office.MailboxEnums.AttachmentContentFormat:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachment-content.yaml @@ -11922,7 +11922,7 @@ console.log(result.value.content); } -'Office.MailboxEnums.AttachmentType:enum': +Office.MailboxEnums.AttachmentType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -11970,7 +11970,7 @@ console.log("No attachments on this message."); } }); -'Office.MailboxEnums.CategoryColor:enum': +Office.MailboxEnums.CategoryColor:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-master-categories.yaml @@ -11992,7 +11992,7 @@ console.log("masterCategories.addAsync call failed with error: " + asyncResult.error.message); } }); -'Office.MailboxEnums.ComposeType:enum': +Office.MailboxEnums.ComposeType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -12012,7 +12012,7 @@ console.error(asyncResult.error); } }); -'Office.MailboxEnums.Days:enum': +Office.MailboxEnums.Days:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -12064,7 +12064,7 @@ } console.log(`Succeeded in setting recurrence pattern ${JSON.stringify(pattern)}`); }); -'Office.MailboxEnums.ItemNotificationMessageType:enum': +Office.MailboxEnums.ItemNotificationMessageType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -12082,7 +12082,7 @@ }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, handleResult); -'Office.MailboxEnums.ItemType:enum': +Office.MailboxEnums.ItemType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -12098,7 +12098,7 @@ console.log(`Current item is a ${itemType}. A message could be an email, meeting request, meeting response, or meeting cancellation.`); break; } -'Office.MailboxEnums.LocationType:enum': +Office.MailboxEnums.LocationType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -12123,7 +12123,7 @@ console.error(`Failed to add locations. Error message: ${result.error.message}`); } }); -'Office.MailboxEnums.Month:enum': +Office.MailboxEnums.Month:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -12175,7 +12175,7 @@ } console.log(`Succeeded in setting recurrence pattern ${JSON.stringify(pattern)}`); }); -'Office.MailboxEnums.OWAView:enum': +Office.MailboxEnums.OWAView:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml @@ -12208,7 +12208,7 @@ console.log("Current view (Outlook on the web only): Viewed from a desktop computer"); break; } -'Office.MailboxEnums.RecipientType:enum': +Office.MailboxEnums.RecipientType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml @@ -12263,7 +12263,7 @@ console.log("Other Recipients:"); otherRecipients.forEach((recipient) => console.log(`${recipient.displayName}, ${recipient.emailAddress}`)); } -'Office.MailboxEnums.RecurrenceTimeZone:enum': +Office.MailboxEnums.RecurrenceTimeZone:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -12315,7 +12315,7 @@ } console.log(`Succeeded in setting recurrence pattern ${JSON.stringify(pattern)}`); }); -'Office.MailboxEnums.RecurrenceType:enum': +Office.MailboxEnums.RecurrenceType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -12367,7 +12367,7 @@ } console.log(`Succeeded in setting recurrence pattern ${JSON.stringify(pattern)}`); }); -'Office.MailboxEnums.ResponseType:enum': +Office.MailboxEnums.ResponseType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml @@ -12408,7 +12408,7 @@ console.log("No response: "); printAttendees(noResponse); } -'Office.MailboxEnums.RestVersion:enum': +Office.MailboxEnums.RestVersion:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml @@ -12437,7 +12437,7 @@ Office.MailboxEnums.RestVersion.v2_0); console.log("EWS ID (from REST ID): " + ewsId2); -'Office.MailboxEnums.SourceProperty:enum': +Office.MailboxEnums.SourceProperty:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/get-selected-data.yaml @@ -12453,7 +12453,7 @@ console.error(asyncResult.error); } }); -'Office.MailboxEnums.WeekNumber:enum': +Office.MailboxEnums.WeekNumber:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -12505,7 +12505,7 @@ } console.log(`Succeeded in setting recurrence pattern ${JSON.stringify(pattern)}`); }); -'Office.MasterCategories#addAsync:member(1)': +Office.MasterCategories#addAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-master-categories.yaml @@ -12527,7 +12527,7 @@ console.log("masterCategories.addAsync call failed with error: " + asyncResult.error.message); } }); -'Office.MasterCategories#getAsync:member(2)': +Office.MasterCategories#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-master-categories.yaml @@ -12546,7 +12546,7 @@ console.error(asyncResult.error); } }); -'Office.MasterCategories#removeAsync:member(1)': +Office.MasterCategories#removeAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-master-categories.yaml @@ -12563,7 +12563,7 @@ console.log("masterCategories.removeAsync call failed with error: " + asyncResult.error.message); } }); -'Office.MessageCompose:interface': +Office.MessageCompose:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -12580,7 +12580,7 @@ console.log(result); } ); -'Office.MessageCompose#addFileAttachmentAsync:member(1)': +Office.MessageCompose#addFileAttachmentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -12597,7 +12597,7 @@ console.log(result); } ); -'Office.MessageCompose#addFileAttachmentFromBase64Async:member(1)': +Office.MessageCompose#addFileAttachmentFromBase64Async:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -12643,7 +12643,7 @@ } } ); -'Office.MessageCompose#bcc:member': +Office.MessageCompose#bcc:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml @@ -12677,7 +12677,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#categories:member': +Office.MessageCompose#categories:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml @@ -12751,7 +12751,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#cc:member': +Office.MessageCompose#cc:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml @@ -12785,14 +12785,14 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#close:member(1)': +Office.MessageCompose#close:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/25-item-save-and-close/close.yaml Office.context.mailbox.item.close(); -'Office.MessageCompose#closeAsync:member(2)': +Office.MessageCompose#closeAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/25-item-save-and-close/close-async.yaml @@ -12816,7 +12816,7 @@ return; } }); -'Office.MessageCompose#conversationId:member': +Office.MessageCompose#conversationId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml @@ -12824,7 +12824,7 @@ console.log(`Conversation ID: ${Office.context.mailbox.item.conversationId}`); -'Office.MessageCompose#delayDeliveryTime:member': +Office.MessageCompose#delayDeliveryTime:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/delay-message-delivery.yaml @@ -12848,7 +12848,7 @@ } }); } -'Office.MessageCompose#disableClientSignatureAsync:member(1)': +Office.MessageCompose#disableClientSignatureAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -12864,7 +12864,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#from:member': +Office.MessageCompose#from:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml @@ -12878,7 +12878,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#getAttachmentContentAsync:member(1)': +Office.MessageCompose#getAttachmentContentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachment-content.yaml @@ -12903,7 +12903,7 @@ Office.context.mailbox.item.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback); } }); -'Office.MessageCompose#getAttachmentsAsync:member(1)': +Office.MessageCompose#getAttachmentsAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -12951,7 +12951,7 @@ console.log("No attachments on this message."); } }); -'Office.MessageCompose#getComposeTypeAsync:member(2)': +Office.MessageCompose#getComposeTypeAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -12971,7 +12971,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#getConversationIndexAsync:member(2)': +Office.MessageCompose#getConversationIndexAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-conversation-index.yaml @@ -12996,7 +12996,7 @@ console.log("The current message doesn't belong to a conversation thread."); } }); -'Office.MessageCompose#getItemClassAsync:member(2)': +Office.MessageCompose#getItemClassAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-class-async.yaml @@ -13015,7 +13015,7 @@ console.log("Item class of the current message: " + asyncResult.value); }); -'Office.MessageCompose#getItemIdAsync:member(2)': +Office.MessageCompose#getItemIdAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/item-id-compose.yaml @@ -13029,7 +13029,7 @@ console.log(result.value); }); -'Office.MessageCompose#getSelectedDataAsync:member(2)': +Office.MessageCompose#getSelectedDataAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/get-selected-data.yaml @@ -13045,7 +13045,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#getSharedPropertiesAsync:member(2)': +Office.MessageCompose#getSharedPropertiesAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -13061,7 +13061,7 @@ console.log(`Permissions: ${sharedProperties.delegatePermissions}`); console.log(`Target mailbox: ${sharedProperties.targetMailbox}`); }); -'Office.MessageCompose#inReplyTo:member': +Office.MessageCompose#inReplyTo:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-in-reply-to.yaml @@ -13080,7 +13080,7 @@ } else { console.log("No InReplyTo property available for this message"); } -'Office.MessageCompose#internetHeaders:member': +Office.MessageCompose#internetHeaders:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -13096,7 +13096,7 @@ } } ); -'Office.MessageCompose#isClientSignatureEnabledAsync:member(1)': +Office.MessageCompose#isClientSignatureEnabledAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -13112,7 +13112,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#itemType:member': +Office.MessageCompose#itemType:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -13128,7 +13128,7 @@ console.log(`Current item is a ${itemType}. A message could be an email, meeting request, meeting response, or meeting cancellation.`); break; } -'Office.MessageCompose#loadCustomPropertiesAsync:member(1)': +Office.MessageCompose#loadCustomPropertiesAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -13143,7 +13143,7 @@ customProps = result.value; console.log("Loaded the CustomProperties object."); }); -'Office.MessageCompose#notificationMessages:member': +Office.MessageCompose#notificationMessages:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -13247,7 +13247,7 @@ Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); -'Office.MessageCompose#removeAttachmentAsync:member(1)': +Office.MessageCompose#removeAttachmentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/attachments-compose.yaml @@ -13264,7 +13264,7 @@ console.log(`Attachment removed successfully.`); } ); -'Office.MessageCompose#sendAsync:member(2)': +Office.MessageCompose#sendAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/send-async.yaml @@ -13278,7 +13278,7 @@ return; } }); -'Office.MessageCompose#sensitivityLabel:member': +Office.MessageCompose#sensitivityLabel:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/60-sensitivity-label/sensitivity-label.yaml @@ -13299,7 +13299,7 @@ console.log("Action failed with error: " + asyncResult.error.message); } }); -'Office.MessageCompose#seriesId:member': +Office.MessageCompose#seriesId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-series-id.yaml @@ -13315,7 +13315,7 @@ } else { console.log("This is an instance belonging to series with ID " + seriesId); } -'Office.MessageCompose#sessionData:member': +Office.MessageCompose#sessionData:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -13328,7 +13328,7 @@ console.log("Failed to get all sessionData. Error: " + JSON.stringify(asyncResult.error)); } }); -'Office.MessageCompose#setSelectedDataAsync:member(1)': +Office.MessageCompose#setSelectedDataAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/set-selected-data.yaml @@ -13342,7 +13342,7 @@ console.error(asyncResult.error); } }); -'Office.MessageCompose#subject:member': +Office.MessageCompose#subject:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml @@ -13369,7 +13369,7 @@ } console.log(`Successfully set subject to ${subject}`); }); -'Office.MessageCompose#to:member': +Office.MessageCompose#to:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml @@ -13403,7 +13403,7 @@ console.error(asyncResult.error); } }); -'Office.MessageRead:interface': +Office.MessageRead:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml @@ -13424,7 +13424,7 @@ } else { console.log("This mail item doesn't contain any attachments."); } -'Office.MessageRead#attachments:member': +Office.MessageRead#attachments:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachments-read.yaml @@ -13445,7 +13445,7 @@ } else { console.log("This mail item doesn't contain any attachments."); } -'Office.MessageRead#categories:member': +Office.MessageRead#categories:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-categories.yaml @@ -13519,7 +13519,7 @@ console.error(asyncResult.error); } }); -'Office.MessageRead#cc:member': +Office.MessageRead#cc:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml @@ -13532,7 +13532,7 @@ for (let i = 0; i < msgCc.length; i++) { console.log(msgCc[i].displayName + " (" + msgCc[i].emailAddress + ")"); } -'Office.MessageRead#conversationId:member': +Office.MessageRead#conversationId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml @@ -13540,7 +13540,7 @@ console.log(`Conversation ID: ${Office.context.mailbox.item.conversationId}`); -'Office.MessageRead#dateTimeCreated:member': +Office.MessageRead#dateTimeCreated:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml @@ -13548,7 +13548,7 @@ console.log(`Creation date and time: ${Office.context.mailbox.item.dateTimeCreated}`); -'Office.MessageRead#dateTimeModified:member': +Office.MessageRead#dateTimeModified:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml @@ -13556,7 +13556,7 @@ console.log(`Date and time item last modified: ${Office.context.mailbox.item.dateTimeModified}`); -'Office.MessageRead#display:member': +Office.MessageRead#display:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -13581,7 +13581,7 @@ console.log("Temporarily set the content displayed in the body."); }); -'Office.MessageRead#displayReplyAllForm:member(1)': +Office.MessageRead#displayReplyAllForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -13633,7 +13633,7 @@ console.log("Created a reply-all form with attachments."); } }); -'Office.MessageRead#displayReplyAllFormAsync:member(1)': +Office.MessageRead#displayReplyAllFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -13693,7 +13693,7 @@ console.log("Created a reply-all form with attachments."); } ); -'Office.MessageRead#displayReplyForm:member(1)': +Office.MessageRead#displayReplyForm:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -13745,7 +13745,7 @@ console.log("Created a reply with attachments."); } }); -'Office.MessageRead#displayReplyFormAsync:member(1)': +Office.MessageRead#displayReplyFormAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-forms.yaml @@ -13805,14 +13805,14 @@ console.log("Created reply with attachments."); } ); -'Office.MessageRead#end:member': +Office.MessageRead#end:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-end-read.yaml console.log(`Appointment ends: ${Office.context.mailbox.item.end}`); -'Office.MessageRead#from:member': +Office.MessageRead#from:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml @@ -13822,7 +13822,7 @@ console.log("Message received from: " + msgFrom.displayName + " (" + msgFrom.emailAddress + ")"); -'Office.MessageRead#getAllInternetHeadersAsync:member(1)': +Office.MessageRead#getAllInternetHeadersAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml @@ -13848,7 +13848,7 @@ console.log("Error getting internet headers: " + JSON.stringify(asyncResult.error)); } }); -'Office.MessageRead#getAsFileAsync:member(2)': +Office.MessageRead#getAsFileAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-eml-format.yaml @@ -13862,7 +13862,7 @@ console.log(asyncResult.value); }); -'Office.MessageRead#getAttachmentContentAsync:member(1)': +Office.MessageRead#getAttachmentContentAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/40-attachments/get-attachment-content.yaml @@ -13885,7 +13885,7 @@ // Log the attachment type and its contents to the console. item.getAttachmentContentAsync(attachments[i].id, handleAttachmentsCallback); } -'Office.MessageRead#getRegExMatches:member(1)': +Office.MessageRead#getRegExMatches:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml @@ -13894,7 +13894,7 @@ // This API only works when you click on the highlighted word "ScriptLab". console.log(Office.context.mailbox.item.getRegExMatches()); -'Office.MessageRead#getRegExMatchesByName:member(1)': +Office.MessageRead#getRegExMatchesByName:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml @@ -13903,7 +13903,7 @@ // This API only works when you click on the highlighted word "ScriptLab". console.log(Office.context.mailbox.item.getRegExMatchesByName("sampleRegexName")); -'Office.MessageRead#getSelectedRegExMatches:member(1)': +Office.MessageRead#getSelectedRegExMatches:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml @@ -13916,7 +13916,7 @@ } else { console.error("Open add-in by clicking on a highlighted regex match, for this API to return something useful."); } -'Office.MessageRead#getSharedPropertiesAsync:member(2)': +Office.MessageRead#getSharedPropertiesAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -13932,7 +13932,7 @@ console.log(`Permissions: ${sharedProperties.delegatePermissions}`); console.log(`Target mailbox: ${sharedProperties.targetMailbox}`); }); -'Office.MessageRead#internetMessageId:member': +Office.MessageRead#internetMessageId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml @@ -13940,14 +13940,14 @@ console.log(`Internet message ID: ${Office.context.mailbox.item.internetMessageId}`); -'Office.MessageRead#itemClass:member': +Office.MessageRead#itemClass:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-class-read.yaml console.log(`Item class: ${Office.context.mailbox.item.itemClass}`); -'Office.MessageRead#itemType:member': +Office.MessageRead#itemType:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -13963,7 +13963,7 @@ console.log(`Current item is a ${itemType}. A message could be an email, meeting request, meeting response, or meeting cancellation.`); break; } -'Office.MessageRead#loadCustomPropertiesAsync:member(1)': +Office.MessageRead#loadCustomPropertiesAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -13978,7 +13978,7 @@ customProps = result.value; console.log("Loaded the CustomProperties object."); }); -'Office.MessageRead#location:member': +Office.MessageRead#location:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-location-read.yaml @@ -13986,7 +13986,7 @@ console.log(`Appointment location: ${Office.context.mailbox.item.location}`); -'Office.MessageRead#normalizedSubject:member': +Office.MessageRead#normalizedSubject:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml @@ -13994,7 +13994,7 @@ console.log(`Normalized subject: ${Office.context.mailbox.item.normalizedSubject}`); -'Office.MessageRead#notificationMessages:member': +Office.MessageRead#notificationMessages:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -14098,7 +14098,7 @@ Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); -'Office.MessageRead#recurrence:member': +Office.MessageRead#recurrence:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-recurrence-read.yaml @@ -14114,7 +14114,7 @@ } else { console.log(JSON.stringify(recurrence)); } -'Office.MessageRead#sender:member': +Office.MessageRead#sender:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml @@ -14124,7 +14124,7 @@ console.log("Sender: " + msgSender.displayName + " (" + msgSender.emailAddress + ")"); -'Office.MessageRead#seriesId:member': +Office.MessageRead#seriesId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-series-id.yaml @@ -14140,21 +14140,21 @@ } else { console.log("This is an instance belonging to series with ID " + seriesId); } -'Office.MessageRead#start:member': +Office.MessageRead#start:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-start-read.yaml console.log(`Appointment starts: ${Office.context.mailbox.item.start}`); -'Office.MessageRead#subject:member': +Office.MessageRead#subject:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-subject-read.yaml console.log(`Subject: ${Office.context.mailbox.item.subject}`); -'Office.MessageRead#to:member': +Office.MessageRead#to:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml @@ -14209,7 +14209,7 @@ console.log("Other Recipients:"); otherRecipients.forEach((recipient) => console.log(`${recipient.displayName}, ${recipient.emailAddress}`)); } -'Office.NotificationMessageAction:interface': +Office.NotificationMessageAction:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -14241,7 +14241,7 @@ Office.context.mailbox.item.notificationMessages.addAsync(id, details, handleResult); -'Office.NotificationMessageDetails:interface': +Office.NotificationMessageDetails:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -14259,7 +14259,7 @@ console.log(asyncResult.value); }); -'Office.NotificationMessages#addAsync:member(1)': +Office.NotificationMessages#addAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -14332,7 +14332,7 @@ }; Office.context.mailbox.item.notificationMessages.addAsync(id, details, handleResult); -'Office.NotificationMessages#getAllAsync:member(1)': +Office.NotificationMessages#getAllAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -14350,7 +14350,7 @@ console.log(asyncResult.value); }); -'Office.NotificationMessages#removeAsync:member(1)': +Office.NotificationMessages#removeAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -14363,7 +14363,7 @@ Office.context.mailbox.item.notificationMessages.removeAsync(id, handleResult); -'Office.NotificationMessages#replaceAsync:member(1)': +Office.NotificationMessages#replaceAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/35-notifications/add-getall-remove.yaml @@ -14383,7 +14383,7 @@ persistent: false }, handleResult); -'Office.Organizer#getAsync:member(1)': +Office.Organizer#getAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml @@ -14397,7 +14397,7 @@ console.error(asyncResult.error); } }); -'Office.Recipients#getAsync:member(2)': +Office.Recipients#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml @@ -14492,7 +14492,7 @@ console.error(asyncResult.error); } }); -'Office.Recipients#setAsync:member(2)': +Office.Recipients#setAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml @@ -14580,7 +14580,7 @@ console.error(asyncResult.error); } }); -'Office.Recurrence#getAsync:member(1)': +Office.Recurrence#getAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -14598,7 +14598,7 @@ console.error(asyncResult.error); } }); -'Office.Recurrence#setAsync:member(1)': +Office.Recurrence#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -14650,7 +14650,7 @@ } console.log(`Succeeded in setting recurrence pattern ${JSON.stringify(pattern)}`); }); -'Office.ReplyFormAttachment:interface': +Office.ReplyFormAttachment:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml @@ -14699,7 +14699,7 @@ console.log("Created reply with attachments."); } ); -'Office.ReplyFormData:interface': +Office.ReplyFormData:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-reply-with-attachments.yaml @@ -14748,7 +14748,7 @@ console.log("Created reply with attachments."); } ); -'Office.RoamingSettings#get:member(1)': +Office.RoamingSettings#get:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -14763,7 +14763,7 @@ settingValue; console.log(`The value of setting "${settingName}" is "${settingValue}".`); -'Office.RoamingSettings#remove:member(1)': +Office.RoamingSettings#remove:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -14777,7 +14777,7 @@ Office.context.roamingSettings.remove(settingName); console.log(`The "${settingName}" setting has been removed.`); -'Office.RoamingSettings#saveAsync:member(1)': +Office.RoamingSettings#saveAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -14792,7 +14792,7 @@ console.log(`Settings saved with status: ${result.status}`); } }); -'Office.RoamingSettings#set:member(1)': +Office.RoamingSettings#set:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -14807,7 +14807,7 @@ Office.context.roamingSettings.set(settingName, settingValue); console.log(`Setting "${settingName}" set to value "${settingValue}".`); -'Office.SelectedItemDetails:interface': +Office.SelectedItemDetails:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-message-properties.yaml @@ -14831,7 +14831,7 @@ console.log(`Has attachment: ${message.hasAttachment}`); }); }); -'Office.Sensitivity#getAsync:member(2)': +Office.Sensitivity#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml @@ -14844,7 +14844,7 @@ console.log("Failed to get sensitivity: " + JSON.stringify(asyncResult.error)); } }); -'Office.Sensitivity#setAsync:member(1)': +Office.Sensitivity#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml @@ -14860,7 +14860,7 @@ } } ); -'Office.SensitivityLabel#getAsync:member(2)': +Office.SensitivityLabel#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/60-sensitivity-label/sensitivity-label.yaml @@ -14881,7 +14881,7 @@ console.log("Action failed with error: " + asyncResult.error.message); } }); -'Office.SensitivityLabel#setAsync:member(2)': +Office.SensitivityLabel#setAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/60-sensitivity-label/sensitivity-label.yaml @@ -14915,7 +14915,7 @@ console.log("Action failed with error: " + asyncResult.error.message); } }); -'Office.SensitivityLabelsCatalog#getAsync:member(2)': +Office.SensitivityLabelsCatalog#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml @@ -14938,7 +14938,7 @@ console.log("Action failed with error: " + asyncResult.error.message); } }); -'Office.SensitivityLabelsCatalog#getIsEnabledAsync:member(2)': +Office.SensitivityLabelsCatalog#getIsEnabledAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml @@ -14954,7 +14954,7 @@ console.log("Action failed with error: " + asyncResult.error.message); } }); -'Office.SessionData#clearAsync:member(1)': +Office.SessionData#clearAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -14967,7 +14967,7 @@ console.log("Failed to clear sessionData. Error: " + JSON.stringify(asyncResult.error)); } }); -'Office.SessionData#getAllAsync:member(1)': +Office.SessionData#getAllAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -14980,7 +14980,7 @@ console.log("Failed to get all sessionData. Error: " + JSON.stringify(asyncResult.error)); } }); -'Office.SessionData#getAsync:member(1)': +Office.SessionData#getAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -14995,7 +14995,7 @@ console.log("Failed to get sessionData. Error: " + JSON.stringify(asyncResult.error)); } }); -'Office.SessionData#removeAsync:member(1)': +Office.SessionData#removeAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -15011,7 +15011,7 @@ } } ); -'Office.SessionData#setAsync:member(1)': +Office.SessionData#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -15027,7 +15027,7 @@ console.log("Failed to set sessionData. Error: " + JSON.stringify(asyncResult.error)); } }); -'Office.SharedProperties:interface': +Office.SharedProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -15043,7 +15043,7 @@ console.log(`Permissions: ${sharedProperties.delegatePermissions}`); console.log(`Target mailbox: ${sharedProperties.targetMailbox}`); }); -'Office.Time#getAsync:member(2)': +Office.Time#getAsync:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml @@ -15056,7 +15056,7 @@ } console.log(`Appointment starts: ${result.value}`); }); -'Office.Time#setAsync:member(1)': +Office.Time#setAsync:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml @@ -15094,7 +15094,7 @@ console.log(`Successfully set end date and time to ${end}`); }); }); -'PowerPoint.AddSlideOptions:interface': +PowerPoint.AddSlideOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -15116,7 +15116,7 @@ context.presentation.slides.add(newSlideOptions); await context.sync(); }); -'PowerPoint.Binding:class': +PowerPoint.Binding:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -15131,7 +15131,7 @@ return shape; }); } -'PowerPoint.Binding#getShape:member(1)': +PowerPoint.Binding#getShape:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -15146,7 +15146,7 @@ return shape; }); } -'PowerPoint.BindingCollection:class': +PowerPoint.BindingCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -15180,7 +15180,7 @@ populateBindingsDropdown(bindings.items); }); -'PowerPoint.BindingCollection#add:member(1)': +PowerPoint.BindingCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -15216,7 +15216,7 @@ bindingsDropdown.selectedIndex = foundIndex; } }); -'PowerPoint.BindingCollection#getItem:member(1)': +PowerPoint.BindingCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -15231,7 +15231,7 @@ return shape; }); } -'PowerPoint.BindingType:enum': +PowerPoint.BindingType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -15267,7 +15267,7 @@ bindingsDropdown.selectedIndex = foundIndex; } }); -'PowerPoint.BorderProperties:interface': +PowerPoint.BorderProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15296,7 +15296,7 @@ }); await context.sync(); }); -'PowerPoint.BorderProperties#color:member': +PowerPoint.BorderProperties#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15325,7 +15325,7 @@ }); await context.sync(); }); -'PowerPoint.BorderProperties#dashStyle:member': +PowerPoint.BorderProperties#dashStyle:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15354,7 +15354,7 @@ }); await context.sync(); }); -'PowerPoint.BorderProperties#weight:member': +PowerPoint.BorderProperties#weight:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15383,7 +15383,7 @@ }); await context.sync(); }); -'PowerPoint.ConnectorType:enum': +PowerPoint.ConnectorType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -15411,7 +15411,7 @@ await context.sync(); }); -'PowerPoint.FillProperties:interface': +PowerPoint.FillProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15452,7 +15452,7 @@ }); await context.sync(); }); -'PowerPoint.FillProperties#color:member': +PowerPoint.FillProperties#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15493,7 +15493,7 @@ }); await context.sync(); }); -'PowerPoint.FontProperties:interface': +PowerPoint.FontProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15534,7 +15534,7 @@ }); await context.sync(); }); -'PowerPoint.FontProperties#color:member': +PowerPoint.FontProperties#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15575,7 +15575,7 @@ }); await context.sync(); }); -'PowerPoint.FontProperties#doubleStrikethrough:member': +PowerPoint.FontProperties#doubleStrikethrough:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15616,7 +15616,7 @@ }); await context.sync(); }); -'PowerPoint.FontProperties#name:member': +PowerPoint.FontProperties#name:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15657,7 +15657,7 @@ }); await context.sync(); }); -'PowerPoint.FontProperties#strikethrough:member': +PowerPoint.FontProperties#strikethrough:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15698,7 +15698,7 @@ }); await context.sync(); }); -'PowerPoint.FontProperties#subscript:member': +PowerPoint.FontProperties#subscript:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15739,7 +15739,7 @@ }); await context.sync(); }); -'PowerPoint.FontProperties#superscript:member': +PowerPoint.FontProperties#superscript:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15780,7 +15780,7 @@ }); await context.sync(); }); -'PowerPoint.GeometricShapeType:enum': +PowerPoint.GeometricShapeType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -15805,7 +15805,7 @@ await context.sync(); }); -'PowerPoint.Hyperlink:class': +PowerPoint.Hyperlink:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml @@ -15824,7 +15824,7 @@ console.log(`Address: "${link.address}" (Screen tip: "${link.screenTip}")`); } }); -'PowerPoint.HyperlinkCollection:class': +PowerPoint.HyperlinkCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml @@ -15843,7 +15843,7 @@ console.log(`Address: "${link.address}" (Screen tip: "${link.screenTip}")`); } }); -'PowerPoint.InsertSlideFormatting:enum': +PowerPoint.InsertSlideFormatting:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml @@ -15864,7 +15864,7 @@ presentation.insertSlidesFromBase64(chosenFileBase64, insertOptions); await context.sync(); }); -'PowerPoint.InsertSlideOptions:interface': +PowerPoint.InsertSlideOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml @@ -15885,7 +15885,7 @@ presentation.insertSlidesFromBase64(chosenFileBase64, insertOptions); await context.sync(); }); -'PowerPoint.ParagraphHorizontalAlignment:enum': +PowerPoint.ParagraphHorizontalAlignment:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -15910,7 +15910,7 @@ }); await context.sync(); }); -'PowerPoint.Presentation:class': +PowerPoint.Presentation:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml @@ -15931,7 +15931,7 @@ presentation.insertSlidesFromBase64(chosenFileBase64, insertOptions); await context.sync(); }); -'PowerPoint.Presentation#getSelectedShapes:member(1)': +PowerPoint.Presentation#getSelectedShapes:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16011,7 +16011,7 @@ savedShapeSelection.push(shape.id); }); }); -'PowerPoint.Presentation#getSelectedSlides:member(1)': +PowerPoint.Presentation#getSelectedSlides:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-set-slides.yaml @@ -16082,7 +16082,7 @@ outputSpan.innerHTML = "" outputSpan.innerHTML += finalTable; }); -'PowerPoint.Presentation#getSelectedTextRange:member(1)': +PowerPoint.Presentation#getSelectedTextRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml @@ -16138,7 +16138,7 @@ textRange.setSelected(); await context.sync(); }); -'PowerPoint.Presentation#insertSlidesFromBase64:member(1)': +PowerPoint.Presentation#insertSlidesFromBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/insert-slides.yaml @@ -16159,7 +16159,7 @@ presentation.insertSlidesFromBase64(chosenFileBase64, insertOptions); await context.sync(); }); -'PowerPoint.Presentation#setSelectedSlides:member(1)': +PowerPoint.Presentation#setSelectedSlides:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-set-slides.yaml @@ -16197,7 +16197,7 @@ context.presentation.setSelectedSlides([slide2.id, slide4.id, slide5.id]); await context.sync(); }); -'PowerPoint.Presentation#bindings:member': +PowerPoint.Presentation#bindings:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -16231,7 +16231,7 @@ populateBindingsDropdown(bindings.items); }); -'PowerPoint.Shape:class': +PowerPoint.Shape:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -16253,7 +16253,7 @@ }); await context.sync(); }); -'PowerPoint.Shape#delete:member(1)': +PowerPoint.Shape#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -16276,7 +16276,7 @@ await context.sync(); }); -'PowerPoint.Shape#getTable:member(1)': +PowerPoint.Shape#getTable:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -16309,7 +16309,7 @@ } else console.log("Selected shape isn't table."); } else console.log("No shape selected."); }); -'PowerPoint.Shape#setZOrder:member(1)': +PowerPoint.Shape#setZOrder:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -16363,7 +16363,7 @@ } }); } -'PowerPoint.Shape#fill:member': +PowerPoint.Shape#fill:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16381,7 +16381,7 @@ }); await context.sync(); }); -'PowerPoint.Shape#group:member': +PowerPoint.Shape#group:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -16411,7 +16411,7 @@ console.log(`Ungrouped shapes with group ID: ${firstGroupId}`); }); -'PowerPoint.Shape#height:member': +PowerPoint.Shape#height:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16439,7 +16439,7 @@ currentLeft = 0; if (currentTop > slideHeight - 200) currentTop = 0; }); -'PowerPoint.Shape#left:member': +PowerPoint.Shape#left:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16467,7 +16467,7 @@ currentLeft = 0; if (currentTop > slideHeight - 200) currentTop = 0; }); -'PowerPoint.Shape#top:member': +PowerPoint.Shape#top:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16495,7 +16495,7 @@ currentLeft = 0; if (currentTop > slideHeight - 200) currentTop = 0; }); -'PowerPoint.Shape#type:member': +PowerPoint.Shape#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -16517,7 +16517,7 @@ }); await context.sync(); }); -'PowerPoint.Shape#width:member': +PowerPoint.Shape#width:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16545,7 +16545,7 @@ currentLeft = 0; if (currentTop > slideHeight - 200) currentTop = 0; }); -'PowerPoint.Shape#zOrderPosition:member': +PowerPoint.Shape#zOrderPosition:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -16599,7 +16599,7 @@ } }); } -'PowerPoint.ShapeAddOptions:interface': +PowerPoint.ShapeAddOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -16624,7 +16624,7 @@ await context.sync(); }); -'PowerPoint.ShapeCollection:class': +PowerPoint.ShapeCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -16646,7 +16646,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeCollection#addGeometricShape:member(1)': +PowerPoint.ShapeCollection#addGeometricShape:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -16671,7 +16671,7 @@ await context.sync(); }); -'PowerPoint.ShapeCollection#addGroup:member(1)': +PowerPoint.ShapeCollection#addGroup:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -16701,7 +16701,7 @@ console.log(`Grouped shapes. Group ID: ${group.id}`); }); -'PowerPoint.ShapeCollection#addLine:member(1)': +PowerPoint.ShapeCollection#addLine:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -16729,7 +16729,7 @@ await context.sync(); }); -'PowerPoint.ShapeCollection#addTable:member(1)': +PowerPoint.ShapeCollection#addTable:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -16744,7 +16744,7 @@ shapes.addTable(3, 4); await context.sync(); }); -'PowerPoint.ShapeCollection#addTextBox:member(1)': +PowerPoint.ShapeCollection#addTextBox:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -16769,7 +16769,7 @@ return context.sync(); }); -'PowerPoint.ShapeCollection#getCount:member(1)': +PowerPoint.ShapeCollection#getCount:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -16802,7 +16802,7 @@ } else console.log("Selected shape isn't table."); } else console.log("No shape selected."); }); -'PowerPoint.ShapeCollection#getItemAt:member(1)': +PowerPoint.ShapeCollection#getItemAt:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/tags/tags.yaml @@ -16822,7 +16822,7 @@ console.log("Added key " + JSON.stringify(myShapeTag.key) + " with value " + JSON.stringify(myShapeTag.value)); }); -'PowerPoint.ShapeCollection#load:member(2)': +PowerPoint.ShapeCollection#load:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -16844,7 +16844,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeFill:class': +PowerPoint.ShapeFill:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -16866,7 +16866,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeFill#setImage:member(1)': +PowerPoint.ShapeFill#setImage:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -16902,7 +16902,7 @@ bindingsDropdown.selectedIndex = foundIndex; } }); -'PowerPoint.ShapeFill#setSolidColor:member(1)': +PowerPoint.ShapeFill#setSolidColor:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16920,7 +16920,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeFill#foregroundColor:member': +PowerPoint.ShapeFill#foregroundColor:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -16950,7 +16950,7 @@ outputSpan.innerHTML = ""; outputSpan.innerHTML += finalTable; }); -'PowerPoint.ShapeFill#transparency:member': +PowerPoint.ShapeFill#transparency:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -16972,7 +16972,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeFont:class': +PowerPoint.ShapeFont:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml @@ -16985,7 +16985,7 @@ textRange.font.color = "green"; await context.sync(); }); -'PowerPoint.ShapeFont#color:member': +PowerPoint.ShapeFont#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml @@ -16998,7 +16998,7 @@ textRange.font.color = "green"; await context.sync(); }); -'PowerPoint.ShapeGroup:class': +PowerPoint.ShapeGroup:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -17028,7 +17028,7 @@ console.log(`Ungrouped shapes with group ID: ${firstGroupId}`); }); -'PowerPoint.ShapeGroup#ungroup:member(1)': +PowerPoint.ShapeGroup#ungroup:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -17058,7 +17058,7 @@ console.log(`Ungrouped shapes with group ID: ${firstGroupId}`); }); -'PowerPoint.ShapeLineDashStyle:enum': +PowerPoint.ShapeLineDashStyle:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -17080,7 +17080,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeLineFormat:class': +PowerPoint.ShapeLineFormat:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -17102,7 +17102,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeLineFormat#dashStyle:member': +PowerPoint.ShapeLineFormat#dashStyle:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -17124,7 +17124,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeScopedCollection:class': +PowerPoint.ShapeScopedCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -17142,7 +17142,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeScopedCollection#getCount:member(1)': +PowerPoint.ShapeScopedCollection#getCount:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -17169,7 +17169,7 @@ outputSpan.innerHTML = ""; outputSpan.innerHTML += finalTable; }); -'PowerPoint.ShapeType:enum': +PowerPoint.ShapeType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -17191,7 +17191,7 @@ }); await context.sync(); }); -'PowerPoint.ShapeZOrder:enum': +PowerPoint.ShapeZOrder:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -17253,7 +17253,7 @@ } }); } -'PowerPoint.Slide:class': +PowerPoint.Slide:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -17267,7 +17267,7 @@ slide1.setSelectedShapes(savedShapeSelection); await context.sync(); }); -'PowerPoint.Slide#delete:member(1)': +PowerPoint.Slide#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-set-slides.yaml @@ -17286,7 +17286,7 @@ slide.delete(); }); }); -'PowerPoint.Slide#exportAsBase64:member(1)': +PowerPoint.Slide#exportAsBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml @@ -17307,7 +17307,7 @@ console.log("Slide was exported."); }); -'PowerPoint.Slide#getImageAsBase64:member(1)': +PowerPoint.Slide#getImageAsBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml @@ -17328,7 +17328,7 @@ console.log("Slide was exported."); }); -'PowerPoint.Slide#setSelectedShapes:member(1)': +PowerPoint.Slide#setSelectedShapes:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -17367,7 +17367,7 @@ slide1.setSelectedShapes([shape1.id, shape2.id]); await context.sync(); }); -'PowerPoint.SlideCollection:class': +PowerPoint.SlideCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17389,7 +17389,7 @@ context.presentation.slides.add(newSlideOptions); await context.sync(); }); -'PowerPoint.SlideCollection#add:member(1)': +PowerPoint.SlideCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17411,7 +17411,7 @@ context.presentation.slides.add(newSlideOptions); await context.sync(); }); -'PowerPoint.SlideCollection#getItemAt:member(1)': +PowerPoint.SlideCollection#getItemAt:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/get-set-slides.yaml @@ -17438,7 +17438,7 @@ context.presentation.setSelectedSlides([slide2.id, slide4.id, slide5.id]); await context.sync(); }); -'PowerPoint.SlideGetImageOptions:interface': +PowerPoint.SlideGetImageOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/export-import-slide.yaml @@ -17459,7 +17459,7 @@ console.log("Slide was exported."); }); -'PowerPoint.SlideLayout:class': +PowerPoint.SlideLayout:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17482,7 +17482,7 @@ } } }); -'PowerPoint.SlideLayout#id:member': +PowerPoint.SlideLayout#id:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17505,7 +17505,7 @@ } } }); -'PowerPoint.SlideLayoutCollection:class': +PowerPoint.SlideLayoutCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17528,7 +17528,7 @@ } } }); -'PowerPoint.SlideLayoutCollection#load:member(2)': +PowerPoint.SlideLayoutCollection#load:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17551,7 +17551,7 @@ } } }); -'PowerPoint.SlideMaster:class': +PowerPoint.SlideMaster:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17574,7 +17574,7 @@ } } }); -'PowerPoint.SlideMaster#id:member': +PowerPoint.SlideMaster#id:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17597,7 +17597,7 @@ } } }); -'PowerPoint.SlideMasterCollection:class': +PowerPoint.SlideMasterCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17620,7 +17620,7 @@ } } }); -'PowerPoint.SlideMasterCollection#load:member(2)': +PowerPoint.SlideMasterCollection#load:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/slide-management/add-slides.yaml @@ -17643,7 +17643,7 @@ } } }); -'PowerPoint.SlideScopedCollection:class': +PowerPoint.SlideScopedCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/get-set-shapes.yaml @@ -17670,7 +17670,7 @@ savedShapeSelection.push(shape.id); }); }); -'PowerPoint.Table:class': +PowerPoint.Table:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17697,7 +17697,7 @@ await context.sync(); }); -'PowerPoint.Table#getCellOrNullObject:member(1)': +PowerPoint.Table#getCellOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17724,7 +17724,7 @@ await context.sync(); }); -'PowerPoint.TableAddOptions:interface': +PowerPoint.TableAddOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17742,7 +17742,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#columns:member': +PowerPoint.TableAddOptions#columns:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17760,7 +17760,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#height:member': +PowerPoint.TableAddOptions#height:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17778,7 +17778,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#mergedAreas:member': +PowerPoint.TableAddOptions#mergedAreas:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17800,7 +17800,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#rows:member': +PowerPoint.TableAddOptions#rows:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17818,7 +17818,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#specificCellProperties:member': +PowerPoint.TableAddOptions#specificCellProperties:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17859,7 +17859,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#uniformCellProperties:member': +PowerPoint.TableAddOptions#uniformCellProperties:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17888,7 +17888,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#values:member': +PowerPoint.TableAddOptions#values:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17909,7 +17909,7 @@ }); await context.sync(); }); -'PowerPoint.TableAddOptions#width:member': +PowerPoint.TableAddOptions#width:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17927,7 +17927,7 @@ }); await context.sync(); }); -'PowerPoint.TableCell:class': +PowerPoint.TableCell:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17954,7 +17954,7 @@ await context.sync(); }); -'PowerPoint.TableCell#text:member': +PowerPoint.TableCell#text:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -17981,7 +17981,7 @@ await context.sync(); }); -'PowerPoint.TableCellBorders:interface': +PowerPoint.TableCellBorders:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18010,7 +18010,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellBorders#bottom:member': +PowerPoint.TableCellBorders#bottom:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18039,7 +18039,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellBorders#left:member': +PowerPoint.TableCellBorders#left:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18068,7 +18068,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellBorders#right:member': +PowerPoint.TableCellBorders#right:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18097,7 +18097,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellBorders#top:member': +PowerPoint.TableCellBorders#top:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18126,7 +18126,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties:interface': +PowerPoint.TableCellProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18167,7 +18167,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties#borders:member': +PowerPoint.TableCellProperties#borders:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18196,7 +18196,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties#fill:member': +PowerPoint.TableCellProperties#fill:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18237,7 +18237,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties#font:member': +PowerPoint.TableCellProperties#font:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18278,7 +18278,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties#horizontalAlignment:member': +PowerPoint.TableCellProperties#horizontalAlignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18303,7 +18303,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties#indentLevel:member': +PowerPoint.TableCellProperties#indentLevel:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18329,7 +18329,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties#textRuns:member': +PowerPoint.TableCellProperties#textRuns:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18378,7 +18378,7 @@ }); await context.sync(); }); -'PowerPoint.TableCellProperties#verticalAlignment:member': +PowerPoint.TableCellProperties#verticalAlignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18403,7 +18403,7 @@ }); await context.sync(); }); -'PowerPoint.TableColumnProperties:interface': +PowerPoint.TableColumnProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18421,7 +18421,7 @@ }); await context.sync(); }); -'PowerPoint.TableColumnProperties#columnWidth:member': +PowerPoint.TableColumnProperties#columnWidth:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18439,7 +18439,7 @@ }); await context.sync(); }); -'PowerPoint.TableMergedAreaProperties:interface': +PowerPoint.TableMergedAreaProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18461,7 +18461,7 @@ }); await context.sync(); }); -'PowerPoint.TableMergedAreaProperties#columnCount:member': +PowerPoint.TableMergedAreaProperties#columnCount:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18483,7 +18483,7 @@ }); await context.sync(); }); -'PowerPoint.TableMergedAreaProperties#columnIndex:member': +PowerPoint.TableMergedAreaProperties#columnIndex:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18505,7 +18505,7 @@ }); await context.sync(); }); -'PowerPoint.TableMergedAreaProperties#rowCount:member': +PowerPoint.TableMergedAreaProperties#rowCount:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18527,7 +18527,7 @@ }); await context.sync(); }); -'PowerPoint.TableMergedAreaProperties#rowIndex:member': +PowerPoint.TableMergedAreaProperties#rowIndex:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18549,7 +18549,7 @@ }); await context.sync(); }); -'PowerPoint.TableRowProperties:interface': +PowerPoint.TableRowProperties:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18567,7 +18567,7 @@ }); await context.sync(); }); -'PowerPoint.TableRowProperties#rowHeight:member': +PowerPoint.TableRowProperties#rowHeight:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18585,7 +18585,7 @@ }); await context.sync(); }); -'PowerPoint.Tag:class': +PowerPoint.Tag:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/tags/tags.yaml @@ -18604,7 +18604,7 @@ console.log("Added key " + JSON.stringify(tag.key) + " with value " + JSON.stringify(tag.value)); }); -'PowerPoint.TagCollection:class': +PowerPoint.TagCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/tags/tags.yaml @@ -18628,7 +18628,7 @@ console.log("Added key " + JSON.stringify(audienceTag.key) + " with value " + JSON.stringify(audienceTag.value)); }); -'PowerPoint.TagCollection#add:member(1)': +PowerPoint.TagCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/tags/tags.yaml @@ -18650,7 +18650,7 @@ console.log("Added key " + JSON.stringify(slide.tags.items[i].key) + " with value " + JSON.stringify(slide.tags.items[i].value)); } }); -'PowerPoint.TagCollection#delete:member(1)': +PowerPoint.TagCollection#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/tags/tags.yaml @@ -18665,7 +18665,7 @@ console.log(JSON.stringify(presentationTags)); }); -'PowerPoint.TagCollection#getItem:member(1)': +PowerPoint.TagCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/tags/tags.yaml @@ -18689,7 +18689,7 @@ console.log("Added key " + JSON.stringify(audienceTag.key) + " with value " + JSON.stringify(audienceTag.value)); }); -'PowerPoint.TextFrame:class': +PowerPoint.TextFrame:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml @@ -18723,7 +18723,7 @@ textRange10.setSelected(); await context.sync(); }); -'PowerPoint.TextRange:class': +PowerPoint.TextRange:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml @@ -18736,7 +18736,7 @@ textRange.font.color = "green"; await context.sync(); }); -'PowerPoint.TextRange#font:member': +PowerPoint.TextRange#font:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml @@ -18749,7 +18749,7 @@ textRange.font.color = "green"; await context.sync(); }); -'PowerPoint.TextRange#setSelected:member(1)': +PowerPoint.TextRange#setSelected:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/text/get-set-textrange.yaml @@ -18797,7 +18797,7 @@ textRange.setSelected(); await context.sync(); }); -'PowerPoint.TextRun:interface': +PowerPoint.TextRun:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/add-modify-tables.yaml @@ -18846,7 +18846,7 @@ }); await context.sync(); }); -'PowerPoint.TextVerticalAlignment:enum': +PowerPoint.TextVerticalAlignment:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/shapes/shapes.yaml @@ -18875,7 +18875,7 @@ return context.sync(); }); -'Word.Alignment:enum': +Word.Alignment:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml @@ -18897,7 +18897,7 @@ body.paragraphs.getFirst().alignment = "Left"; body.paragraphs.getLast().alignment = Word.Alignment.left; }); -'Word.Annotation:class': +Word.Annotation:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -18924,7 +18924,7 @@ } } }); -'Word.Annotation#delete:member(1)': +Word.Annotation#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -18951,7 +18951,7 @@ console.log("Annotations deleted:", ids); }); -'Word.Annotation#critiqueAnnotation:member': +Word.Annotation#critiqueAnnotation:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -18974,7 +18974,7 @@ console.log(`ID ${annotation.id} - state '${annotation.state}':`, annotation.critiqueAnnotation.critique); } }); -'Word.Annotation#id:member': +Word.Annotation#id:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19001,7 +19001,7 @@ } } }); -'Word.Annotation#state:member': +Word.Annotation#state:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19028,7 +19028,7 @@ } } }); -'Word.AnnotationClickedEventArgs:interface': +Word.AnnotationClickedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19065,7 +19065,7 @@ console.log(`AnnotationClicked: ID ${args.id}:`, annotation.critiqueAnnotation.critique); }); } -'Word.AnnotationCollection:class': +Word.AnnotationCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19088,7 +19088,7 @@ console.log(`ID ${annotation.id} - state '${annotation.state}':`, annotation.critiqueAnnotation.critique); } }); -'Word.AnnotationHoveredEventArgs:interface': +Word.AnnotationHoveredEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19125,7 +19125,7 @@ console.log(`AnnotationHovered: ID ${args.id}:`, annotation.critiqueAnnotation.critique); }); } -'Word.AnnotationInsertedEventArgs:interface': +Word.AnnotationInsertedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19169,7 +19169,7 @@ } }); } -'Word.AnnotationPopupActionEventArgs:interface': +Word.AnnotationPopupActionEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19209,7 +19209,7 @@ console.log(message); }); } -'Word.AnnotationRemovedEventArgs:interface': +Word.AnnotationRemovedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19243,7 +19243,7 @@ } }); } -'Word.AnnotationSet:interface': +Word.AnnotationSet:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19299,7 +19299,7 @@ console.log("Annotations inserted:", annotationIds.value); }); -'Word.AnnotationState:enum': +Word.AnnotationState:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -19326,7 +19326,7 @@ } } }); -'Word.Application:class': +Word.Application:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml @@ -19355,7 +19355,7 @@ currentDocBody.insertText(externalDocBodyText, Word.InsertLocation.start); await context.sync(); }); -'Word.Application#createDocument:member(1)': +Word.Application#createDocument:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml @@ -19384,7 +19384,7 @@ currentDocBody.insertText(externalDocBodyText, Word.InsertLocation.start); await context.sync(); }); -'Word.Application#retrieveStylesFromBase64:member(1)': +Word.Application#retrieveStylesFromBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/get-external-styles.yaml @@ -19399,7 +19399,7 @@ console.log("Styles from the other document:", retrievedStyles.value); }); -'Word.Body#clear:member(1)': +Word.Body#clear:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19424,7 +19424,7 @@ clear the contents of a document. // https://aka.ms/sillystorywordaddin -'Word.Body#getComments:member(1)': +Word.Body#getComments:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -19441,7 +19441,7 @@ console.log("All comments:", comments); }); -'Word.Body#getHtml:member(1)': +Word.Body#getHtml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19463,7 +19463,7 @@ console.log("Body contents (HTML): " + bodyHTML.value); }); -'Word.Body#getOoxml:member(1)': +Word.Body#getOoxml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19485,7 +19485,7 @@ console.log("Body contents (OOXML): " + bodyOOXML.value); }); -'Word.Body#getTrackedChanges:member(1)': +Word.Body#getTrackedChanges:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -19501,7 +19501,7 @@ console.log(trackedChanges); }); -'Word.Body#insertBreak:member(1)': +Word.Body#insertBreak:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19523,7 +19523,7 @@ console.log("Added a page break at the start of the document body."); }); -'Word.Body#insertContentControl:member(1)': +Word.Body#insertContentControl:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19545,7 +19545,7 @@ console.log("Wrapped the body in a content control."); }); -'Word.Body#insertFileFromBase64:member(1)': +Word.Body#insertFileFromBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19568,7 +19568,7 @@ console.log("Added Base64-encoded text to the beginning of the document body."); }); -'Word.Body#insertHtml:member(1)': +Word.Body#insertHtml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19590,7 +19590,7 @@ console.log("HTML added to the beginning of the document body."); }); -'Word.Body#insertInlinePictureFromBase64:member(1)': +Word.Body#insertInlinePictureFromBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19616,7 +19616,7 @@ console.log("Added a Base64-encoded image to the beginning of the document body."); }); -'Word.Body#insertOoxml:member(1)': +Word.Body#insertOoxml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19654,7 +19654,7 @@ assemble a document. // https://github.com/OfficeDev/Word-Add-in-DocumentAssembly -'Word.Body#insertParagraph:member(1)': +Word.Body#insertParagraph:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-formatted-text.yaml @@ -19676,7 +19676,7 @@ await context.sync(); }); -'Word.Body#insertTable:member(1)': +Word.Body#insertTable:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/table-cell-access.yaml @@ -19694,7 +19694,7 @@ await context.sync(); }); -'Word.Body#insertText:member(1)': +Word.Body#insertText:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19716,7 +19716,7 @@ console.log("Text added to the beginning of the document body."); }); -'Word.Body#search:member(1)': +Word.Body#search:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/search.yaml @@ -19759,7 +19759,7 @@ await context.sync(); }); -'Word.Body#select:member(1)': +Word.Body#select:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19779,7 +19779,7 @@ console.log("Selected the document body."); }); -'Word.Body#fields:member': +Word.Body#fields:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -19803,7 +19803,7 @@ } } }); -'Word.Body#font:member': +Word.Body#font:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -19837,7 +19837,7 @@ console.log(results); }); -'Word.Body#footnotes:member': +Word.Body#footnotes:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -19852,7 +19852,7 @@ console.log("Number of footnotes in the document body: " + footnotes.items.length); }); -'Word.Body#inlinePictures:member': +Word.Body#inlinePictures:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -19872,7 +19872,7 @@ await context.sync(); console.log(base64.value); }); -'Word.Body#lists:member': +Word.Body#lists:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -19909,7 +19909,7 @@ console.log(`- Level ${i + 1} (index ${i}): ${levelExistences[i]}`); } }); -'Word.Body#onCommentAdded:member': +Word.Body#onCommentAdded:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -19942,7 +19942,7 @@ console.log(`${event.type} event detected. Event source: ${event.source}. Comment info:`, event.commentDetails); }); } -'Word.Body#onCommentChanged:member': +Word.Body#onCommentChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -19976,7 +19976,7 @@ ); }); } -'Word.Body#onCommentDeleted:member': +Word.Body#onCommentDeleted:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -20009,7 +20009,7 @@ console.log(`${event.type} event detected. Event source: ${event.source}. Comment info:`, event.commentDetails); }); } -'Word.Body#onCommentDeselected:member': +Word.Body#onCommentDeselected:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -20042,7 +20042,7 @@ console.log(`${event.type} event detected. Event source: ${event.source}. Comment info:`, event.commentDetails); }); } -'Word.Body#onCommentSelected:member': +Word.Body#onCommentSelected:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -20075,7 +20075,7 @@ console.log(`${event.type} event detected. Event source: ${event.source}. Comment info:`, event.commentDetails); }); } -'Word.Body#paragraphs:member': +Word.Body#paragraphs:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-word-count.yaml @@ -20129,7 +20129,7 @@ console.log("Search term: " + result.searchTerm + " => Count: " + length); }); }); -'Word.Body#shapes:member': +Word.Body#shapes:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -20151,7 +20151,7 @@ console.log("No shapes found in main document."); } }); -'Word.Body#tables:member': +Word.Body#tables:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/table-cell-access.yaml @@ -20166,7 +20166,7 @@ await context.sync(); console.log("First cell's text is: " + firstCell.text); }); -'Word.Body#text:member': +Word.Body#text:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml @@ -20188,7 +20188,7 @@ console.log("Body contents (text): " + body.text); }); -'Word.Body#type:member': +Word.Body#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -20212,7 +20212,7 @@ console.log(`Body type of note: ${item.body.type}`); }); -'Word.BodyType:enum': +Word.BodyType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -20236,7 +20236,7 @@ console.log(`Body type of note: ${item.body.type}`); }); -'Word.Border:class': +Word.Border:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -20269,7 +20269,7 @@ console.log("Updated outside borders."); } }); -'Word.BorderCollection:class': +Word.BorderCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -20302,7 +20302,7 @@ console.log("Updated outside borders."); } }); -'Word.BorderCollection#outsideBorderColor:member': +Word.BorderCollection#outsideBorderColor:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -20335,7 +20335,7 @@ console.log("Updated outside borders."); } }); -'Word.BorderCollection#outsideBorderType:member': +Word.BorderCollection#outsideBorderType:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -20368,7 +20368,7 @@ console.log("Updated outside borders."); } }); -'Word.BorderCollection#outsideBorderWidth:member': +Word.BorderCollection#outsideBorderWidth:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -20401,7 +20401,7 @@ console.log("Updated outside borders."); } }); -'Word.BorderLocation:enum': +Word.BorderLocation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -20418,7 +20418,7 @@ console.log(`Details about the ${borderLocation} border of the first table:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.BorderType:enum': +Word.BorderType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -20436,7 +20436,7 @@ console.log(`Details about the ${borderLocation} border of the first table's first cell:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.BorderWidth:enum': +Word.BorderWidth:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -20469,7 +20469,7 @@ console.log("Updated outside borders."); } }); -'Word.BreakType:enum': +Word.BreakType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-line-and-page-breaks.yaml @@ -20481,7 +20481,7 @@ await context.sync(); console.log("success"); }); -'Word.BuiltInStyleName:enum': +Word.BuiltInStyleName:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-formatted-text.yaml @@ -20498,7 +20498,7 @@ await context.sync(); }); -'Word.CellPaddingLocation:enum': +Word.CellPaddingLocation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -20516,7 +20516,7 @@ `Cell padding details about the ${cellPaddingLocation} border of the first table: ${cellPadding.value} points` ); }); -'Word.ChangeTrackingMode:enum': +Word.ChangeTrackingMode:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-change-tracking.yaml @@ -20537,7 +20537,7 @@ console.log("No changes are being tracked."); } }); -'Word.ChangeTrackingState:enum': +Word.ChangeTrackingState:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/get-change-tracking-states.yaml @@ -20565,7 +20565,7 @@ console.log(`Number of content controls in Deleted state: ${deletedContentControls.items.length}`); console.log(`Number of content controls in Normal state: ${normalContentControls.items.length}`); }); -'Word.ChangeTrackingVersion:enum': +Word.ChangeTrackingVersion:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-change-tracking.yaml @@ -20582,7 +20582,7 @@ console.log("Reviewed text (before):", before.value, "Reviewed text (after):", after.value); }); -'Word.CheckboxContentControl:class': +Word.CheckboxContentControl:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -20636,7 +20636,7 @@ ); } }); -'Word.CloseBehavior:enum': +Word.CloseBehavior:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/save-close.yaml @@ -20647,7 +20647,7 @@ await Word.run(async (context) => { context.document.close(Word.CloseBehavior.save); }); -'Word.ComboBoxContentControl:class': +Word.ComboBoxContentControl:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -20662,7 +20662,7 @@ console.log("Combo box content control inserted at the end of the selection."); }); -'Word.ComboBoxContentControl#addListItem:member(1)': +Word.ComboBoxContentControl#addListItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -20700,7 +20700,7 @@ console.log(`List item added to control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.ComboBoxContentControl#deleteAllListItems:member(1)': +Word.ComboBoxContentControl#deleteAllListItems:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -20738,7 +20738,7 @@ console.log("Deleted the list from the combo box content control."); }); -'Word.ComboBoxContentControl#listItems:member': +Word.ComboBoxContentControl#listItems:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -20787,7 +20787,7 @@ console.log(`List item deleted from control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.Comment:class': +Word.Comment:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20805,7 +20805,7 @@ console.log("Comment inserted:", comment); }); -'Word.Comment#delete:member(1)': +Word.Comment#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20825,7 +20825,7 @@ console.log("Comment deleted."); }); -'Word.Comment#getRange:member(1)': +Word.Comment#getRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20849,7 +20849,7 @@ const contentRange: Word.CommentContentRange = comment.contentRange; console.log("Comment content range:", contentRange); }); -'Word.Comment#reply:member(1)': +Word.Comment#reply:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20871,7 +20871,7 @@ console.warn("No active comment was found in the selection, so couldn't reply."); } }); -'Word.Comment#content:member': +Word.Comment#content:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20899,7 +20899,7 @@ console.log("Comment content changed:", firstActiveComment); }); -'Word.Comment#contentRange:member': +Word.Comment#contentRange:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20923,7 +20923,7 @@ const contentRange: Word.CommentContentRange = comment.contentRange; console.log("Comment content range:", contentRange); }); -'Word.Comment#replies:member': +Word.Comment#replies:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20944,7 +20944,7 @@ const replies: Word.CommentReplyCollection = comment.replies; console.log("Replies to the first comment:", replies); }); -'Word.Comment#resolved:member': +Word.Comment#resolved:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -20976,7 +20976,7 @@ console.log(`Comment Resolved status (after): ${comment.resolved}`); }); -'Word.CommentChangeType:enum': +Word.CommentChangeType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -21010,7 +21010,7 @@ ); }); } -'Word.CommentCollection:class': +Word.CommentCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -21032,7 +21032,7 @@ console.warn("No active comment was found in the selection, so couldn't reply."); } }); -'Word.CommentCollection#getFirstOrNullObject:member(1)': +Word.CommentCollection#getFirstOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -21056,7 +21056,7 @@ const contentRange: Word.CommentContentRange = comment.contentRange; console.log("Comment content range:", contentRange); }); -'Word.CommentCollection#items:member': +Word.CommentCollection#items:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -21078,7 +21078,7 @@ console.warn("No active comment was found in the selection, so couldn't reply."); } }); -'Word.CommentContentRange:class': +Word.CommentContentRange:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -21102,7 +21102,7 @@ const contentRange: Word.CommentContentRange = comment.contentRange; console.log("Comment content range:", contentRange); }); -'Word.CommentDetail:interface': +Word.CommentDetail:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -21135,7 +21135,7 @@ console.log(`${event.type} event detected. Event source: ${event.source}. Comment info:`, event.commentDetails); }); } -'Word.CommentEventArgs:interface': +Word.CommentEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -21169,7 +21169,7 @@ ); }); } -'Word.CommentReply:class': +Word.CommentReply:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -21191,7 +21191,7 @@ console.warn("No active comment was found in the selection, so couldn't reply."); } }); -'Word.CommentReplyCollection:class': +Word.CommentReplyCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -21212,7 +21212,7 @@ const replies: Word.CommentReplyCollection = comment.replies; console.log("Replies to the first comment:", replies); }); -'Word.CompareTarget:enum': +Word.CompareTarget:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/compare-documents.yaml @@ -21235,7 +21235,7 @@ console.log("Differences shown in the current document."); }); -'Word.ContentControl#delete:member(1)': +Word.ContentControl#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -21254,7 +21254,7 @@ await context.sync(); } }); -'Word.ContentControl#resetState:member(1)': +Word.ContentControl#resetState:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -21277,7 +21277,7 @@ console.log(`Reset state of first content control with ID: ${firstContentControl.id}`); }); -'Word.ContentControl#set:member(1)': +Word.ContentControl#set:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -21317,7 +21317,7 @@ await context.sync(); }); -'Word.ContentControl#setState:member(1)': +Word.ContentControl#setState:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -21342,7 +21342,7 @@ console.log(`Set state of first content control with ID ${firstContentControl.id} to ${state}.`); }); -'Word.ContentControl#checkboxContentControl:member': +Word.ContentControl#checkboxContentControl:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -21386,7 +21386,7 @@ `id: ${selectedContentControl.id} ... isChecked: ${selectedContentControl.checkboxContentControl.isChecked}` ); }); -'Word.ContentControl#comboBoxContentControl:member': +Word.ContentControl#comboBoxContentControl:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -21424,7 +21424,7 @@ console.log(`List item added to control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.ContentControl#dropDownListContentControl:member': +Word.ContentControl#dropDownListContentControl:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -21462,7 +21462,7 @@ console.log(`List item added to control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.ContentControl#onDataChanged:member': +Word.ContentControl#onDataChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-ondatachanged-event.yaml @@ -21498,7 +21498,7 @@ console.log(`${event.eventType} event detected. IDs of content controls where data was changed:`, event.ids); }); } -'Word.ContentControl#onDeleted:member': +Word.ContentControl#onDeleted:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -21534,7 +21534,7 @@ console.log(`${event.eventType} event detected. IDs of content controls that were deleted:`, event.ids); }); } -'Word.ContentControl#onEntered:member': +Word.ContentControl#onEntered:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onentered-event.yaml @@ -21570,7 +21570,7 @@ console.log(`${event.eventType} event detected. ID of content control that was entered: ${event.ids[0]}`); }); } -'Word.ContentControl#onExited:member': +Word.ContentControl#onExited:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onexited-event.yaml @@ -21606,7 +21606,7 @@ console.log(`${event.eventType} event detected. ID of content control that was exited: ${event.ids[0]}`); }); } -'Word.ContentControl#onSelectionChanged:member': +Word.ContentControl#onSelectionChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml @@ -21641,7 +21641,7 @@ console.log(`${event.eventType} event detected. IDs of content controls where selection was changed:`, event.ids); }); } -'Word.ContentControl#tag:member': +Word.ContentControl#tag:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -21669,7 +21669,7 @@ await context.sync(); }); -'Word.ContentControlAddedEventArgs:interface': +Word.ContentControlAddedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onadded-event.yaml @@ -21694,7 +21694,7 @@ console.log(`${event.eventType} event detected. IDs of content controls that were added:`, event.ids); }); } -'Word.ContentControlAppearance:enum': +Word.ContentControlAppearance:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -21734,7 +21734,7 @@ await context.sync(); }); -'Word.ContentControlCollection:class': +Word.ContentControlCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml @@ -21752,7 +21752,7 @@ await context.sync(); }); -'Word.ContentControlCollection#getByTag:member(1)': +Word.ContentControlCollection#getByTag:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml @@ -21770,7 +21770,7 @@ await context.sync(); }); -'Word.ContentControlCollection#getFirstOrNullObject:member(1)': +Word.ContentControlCollection#getFirstOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -21814,7 +21814,7 @@ `id: ${selectedContentControl.id} ... isChecked: ${selectedContentControl.checkboxContentControl.isChecked}` ); }); -'Word.ContentControlDataChangedEventArgs:interface': +Word.ContentControlDataChangedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-ondatachanged-event.yaml @@ -21850,7 +21850,7 @@ console.log(`${event.eventType} event detected. IDs of content controls where data was changed:`, event.ids); }); } -'Word.ContentControlDeletedEventArgs:interface': +Word.ContentControlDeletedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -21886,7 +21886,7 @@ console.log(`${event.eventType} event detected. IDs of content controls that were deleted:`, event.ids); }); } -'Word.ContentControlEnteredEventArgs:interface': +Word.ContentControlEnteredEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onentered-event.yaml @@ -21922,7 +21922,7 @@ console.log(`${event.eventType} event detected. ID of content control that was entered: ${event.ids[0]}`); }); } -'Word.ContentControlExitedEventArgs:interface': +Word.ContentControlExitedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onexited-event.yaml @@ -21958,7 +21958,7 @@ console.log(`${event.eventType} event detected. ID of content control that was exited: ${event.ids[0]}`); }); } -'Word.ContentControlListItem:class': +Word.ContentControlListItem:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -22007,7 +22007,7 @@ console.log(`List item deleted from control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.ContentControlListItem#delete:member(1)': +Word.ContentControlListItem#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -22056,7 +22056,7 @@ console.log(`List item deleted from control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.ContentControlListItem#displayText:member': +Word.ContentControlListItem#displayText:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -22105,7 +22105,7 @@ console.log(`List item deleted from control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.ContentControlListItemCollection:class': +Word.ContentControlListItemCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -22144,7 +22144,7 @@ const currentItems: Word.ContentControlListItemCollection = selectedComboBox.listItems; console.log(`The list from the combo box content control with ID ${selectedContentControl.id}:`, currentItems); }); -'Word.ContentControlOptions:interface': +Word.ContentControlOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -22188,7 +22188,7 @@ `id: ${selectedContentControl.id} ... isChecked: ${selectedContentControl.checkboxContentControl.isChecked}` ); }); -'Word.ContentControlSelectionChangedEventArgs:interface': +Word.ContentControlSelectionChangedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml @@ -22223,7 +22223,7 @@ console.log(`${event.eventType} event detected. IDs of content controls where selection was changed:`, event.ids); }); } -'Word.ContentControlState:enum': +Word.ContentControlState:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -22248,7 +22248,7 @@ console.log(`Set state of first content control with ID ${firstContentControl.id} to ${state}.`); }); -'Word.ContentControlType:enum': +Word.ContentControlType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -22272,7 +22272,7 @@ await context.sync(); }); -'Word.Critique:interface': +Word.Critique:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -22328,7 +22328,7 @@ console.log("Annotations inserted:", annotationIds.value); }); -'Word.CritiqueAnnotation:class': +Word.CritiqueAnnotation:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -22351,7 +22351,7 @@ console.log(`ID ${annotation.id} - state '${annotation.state}':`, annotation.critiqueAnnotation.critique); } }); -'Word.CritiqueAnnotation#accept:member(1)': +Word.CritiqueAnnotation#accept:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -22378,7 +22378,7 @@ } } }); -'Word.CritiqueAnnotation#reject:member(1)': +Word.CritiqueAnnotation#reject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -22405,7 +22405,7 @@ } } }); -'Word.CritiqueAnnotation#critique:member': +Word.CritiqueAnnotation#critique:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -22428,7 +22428,7 @@ console.log(`ID ${annotation.id} - state '${annotation.state}':`, annotation.critiqueAnnotation.critique); } }); -'Word.CritiqueColorScheme:enum': +Word.CritiqueColorScheme:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -22484,7 +22484,7 @@ console.log("Annotations inserted:", annotationIds.value); }); -'Word.CritiquePopupOptions:interface': +Word.CritiquePopupOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -22540,7 +22540,7 @@ console.log("Annotations inserted:", annotationIds.value); }); -'Word.CustomProperty:class': +Word.CustomProperty:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -22554,7 +22554,7 @@ for (let i = 0; i < properties.items.length; i++) console.log("Property Name:" + properties.items[i].key + "; Type=" + properties.items[i].type + "; Property Value=" + properties.items[i].value); }); -'Word.CustomPropertyCollection:class': +Word.CustomPropertyCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -22568,7 +22568,7 @@ for (let i = 0; i < properties.items.length; i++) console.log("Property Name:" + properties.items[i].key + "; Type=" + properties.items[i].type + "; Property Value=" + properties.items[i].value); }); -'Word.CustomPropertyCollection#add:member(1)': +Word.CustomPropertyCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -22591,7 +22591,7 @@ await context.sync(); console.log("Property added"); }); -'Word.CustomPropertyCollection#items:member': +Word.CustomPropertyCollection#items:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -22605,7 +22605,7 @@ for (let i = 0; i < properties.items.length; i++) console.log("Property Name:" + properties.items[i].key + "; Type=" + properties.items[i].type + "; Property Value=" + properties.items[i].value); }); -'Word.CustomXmlPart:class': +Word.CustomXmlPart:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml @@ -22631,7 +22631,7 @@ await context.sync(); }); -'Word.CustomXmlPart#delete:member(1)': +Word.CustomXmlPart#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml @@ -22713,7 +22713,7 @@ console.warn("Didn't find custom XML part to delete."); } }); -'Word.CustomXmlPart#getXml:member(1)': +Word.CustomXmlPart#getXml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -22767,7 +22767,7 @@ await context.sync(); }); -'Word.CustomXmlPart#insertAttribute:member(1)': +Word.CustomXmlPart#insertAttribute:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -22833,7 +22833,7 @@ console.warn("Didn't find custom XML part to insert attribute into."); } }); -'Word.CustomXmlPart#insertElement:member(1)': +Word.CustomXmlPart#insertElement:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -22904,7 +22904,7 @@ console.warn("Didn't find custom XML part to insert element into."); } }); -'Word.CustomXmlPart#query:member(1)': +Word.CustomXmlPart#query:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -22973,7 +22973,7 @@ console.warn("Didn't find custom XML part to query."); } }); -'Word.CustomXmlPart#setXml:member(1)': +Word.CustomXmlPart#setXml:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -23011,7 +23011,7 @@ console.warn("Didn't find custom XML part to replace."); } }); -'Word.CustomXmlPart#id:member': +Word.CustomXmlPart#id:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml @@ -23037,7 +23037,7 @@ await context.sync(); }); -'Word.CustomXmlPart#namespaceUri:member': +Word.CustomXmlPart#namespaceUri:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -23066,7 +23066,7 @@ console.warn("Didn't find custom XML part."); } }); -'Word.CustomXmlPartCollection#add:member(1)': +Word.CustomXmlPartCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -23120,7 +23120,7 @@ await context.sync(); }); -'Word.CustomXmlPartCollection#getByNamespace:member(1)': +Word.CustomXmlPartCollection#getByNamespace:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -23142,7 +23142,7 @@ console.log(`Number of custom XML parts found with this namespace: ${!scopedCustomXmlParts.items ? 0 : scopedCustomXmlParts.items.length}`); }); -'Word.CustomXmlPartCollection#getItem:member(1)': +Word.CustomXmlPartCollection#getItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -23211,7 +23211,7 @@ console.warn("Didn't find custom XML part to query."); } }); -'Word.CustomXmlPartScopedCollection:class': +Word.CustomXmlPartScopedCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -23233,7 +23233,7 @@ console.log(`Number of custom XML parts found with this namespace: ${!scopedCustomXmlParts.items ? 0 : scopedCustomXmlParts.items.length}`); }); -'Word.Document:class': +Word.Document:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-change-tracking.yaml @@ -23254,7 +23254,7 @@ console.log("No changes are being tracked."); } }); -'Word.Document#addStyle:member(1)': +Word.Document#addStyle:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -23286,7 +23286,7 @@ console.log(newStyleName + " has been added to the style list."); }); -'Word.Document#close:member(1)': +Word.Document#close:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/save-close.yaml @@ -23299,7 +23299,7 @@ await Word.run(async (context) => { context.document.close(); }); -'Word.Document#compare:member(1)': +Word.Document#compare:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/compare-documents.yaml @@ -23322,7 +23322,7 @@ console.log("Differences shown in the current document."); }); -'Word.Document#getContentControls:member(1)': +Word.Document#getContentControls:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -23376,7 +23376,7 @@ ); } }); -'Word.Document#getParagraphByUniqueLocalId:member(1)': +Word.Document#getParagraphByUniqueLocalId:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/onadded-event.yaml @@ -23390,7 +23390,7 @@ console.log(paragraph); }); -'Word.Document#getStyles:member(1)': +Word.Document#getStyles:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -23405,7 +23405,7 @@ console.log(`Number of styles: ${count.value}`); }); -'Word.Document#importStylesFromJson:member(1)': +Word.Document#importStylesFromJson:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml @@ -23424,7 +23424,7 @@ await context.sync(); console.log("Styles imported from JSON:", styles); }); -'Word.Document#insertFileFromBase64:member(1)': +Word.Document#insertFileFromBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml @@ -23447,7 +23447,7 @@ }); await context.sync(); }); -'Word.Document#save:member(1)': +Word.Document#save:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/save-close.yaml @@ -23461,7 +23461,7 @@ context.document.save(); await context.sync(); }); -'Word.Document#activeWindow:member': +Word.Document#activeWindow:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -23511,7 +23511,7 @@ console.log("First paragraph's text:", pagesFirstParagraphText[i].text); } }); -'Word.Document#changeTrackingMode:member': +Word.Document#changeTrackingMode:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-change-tracking.yaml @@ -23532,7 +23532,7 @@ console.log("No changes are being tracked."); } }); -'Word.Document#onAnnotationClicked:member': +Word.Document#onAnnotationClicked:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -23569,7 +23569,7 @@ console.log(`AnnotationClicked: ID ${args.id}:`, annotation.critiqueAnnotation.critique); }); } -'Word.Document#onAnnotationHovered:member': +Word.Document#onAnnotationHovered:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -23606,7 +23606,7 @@ console.log(`AnnotationHovered: ID ${args.id}:`, annotation.critiqueAnnotation.critique); }); } -'Word.Document#onAnnotationInserted:member': +Word.Document#onAnnotationInserted:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -23650,7 +23650,7 @@ } }); } -'Word.Document#onAnnotationPopupAction:member': +Word.Document#onAnnotationPopupAction:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -23690,7 +23690,7 @@ console.log(message); }); } -'Word.Document#onAnnotationRemoved:member': +Word.Document#onAnnotationRemoved:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -23724,7 +23724,7 @@ } }); } -'Word.Document#onContentControlAdded:member': +Word.Document#onContentControlAdded:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-onadded-event.yaml @@ -23749,7 +23749,7 @@ console.log(`${event.eventType} event detected. IDs of content controls that were added:`, event.ids); }); } -'Word.Document#onParagraphAdded:member': +Word.Document#onParagraphAdded:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/onadded-event.yaml @@ -23773,7 +23773,7 @@ console.log(`${event.type} event detected. IDs of paragraphs that were added:`, event.uniqueLocalIds); }); } -'Word.Document#onParagraphChanged:member': +Word.Document#onParagraphChanged:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/onchanged-event.yaml @@ -23797,7 +23797,7 @@ console.log(`${event.type} event detected. IDs of paragraphs where content was changed:`, event.uniqueLocalIds); }); } -'Word.Document#onParagraphDeleted:member': +Word.Document#onParagraphDeleted:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/ondeleted-event.yaml @@ -23821,7 +23821,7 @@ console.log(`${event.type} event detected. IDs of paragraphs that were deleted:`, event.uniqueLocalIds); }); } -'Word.Document#properties:member': +Word.Document#properties:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/30-properties/get-built-in-properties.yaml @@ -23834,7 +23834,7 @@ await context.sync(); console.log(JSON.stringify(builtInProperties, null, 4)); }); -'Word.Document#settings:member': +Word.Document#settings:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-settings.yaml @@ -23856,7 +23856,7 @@ } } }); -'Word.DocumentCompareOptions:interface': +Word.DocumentCompareOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/compare-documents.yaml @@ -23879,7 +23879,7 @@ console.log("Differences shown in the current document."); }); -'Word.DocumentCreated:class': +Word.DocumentCreated:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml @@ -23908,7 +23908,7 @@ currentDocBody.insertText(externalDocBodyText, Word.InsertLocation.start); await context.sync(); }); -'Word.DocumentProperties:class': +Word.DocumentProperties:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/30-properties/get-built-in-properties.yaml @@ -23921,7 +23921,7 @@ await context.sync(); console.log(JSON.stringify(builtInProperties, null, 4)); }); -'Word.DocumentPropertyType:enum': +Word.DocumentPropertyType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -23935,7 +23935,7 @@ for (let i = 0; i < properties.items.length; i++) console.log("Property Name:" + properties.items[i].key + "; Type=" + properties.items[i].type + "; Property Value=" + properties.items[i].value); }); -'Word.DropDownListContentControl:class': +Word.DropDownListContentControl:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -23950,7 +23950,7 @@ console.log("Dropdown list content control inserted at the end of the selection."); }); -'Word.DropDownListContentControl#addListItem:member(1)': +Word.DropDownListContentControl#addListItem:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -23988,7 +23988,7 @@ console.log(`List item added to control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.DropDownListContentControl#deleteAllListItems:member(1)': +Word.DropDownListContentControl#deleteAllListItems:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -24028,7 +24028,7 @@ console.log("Deleted the list from the dropdown list content control."); }); -'Word.DropDownListContentControl#listItems:member': +Word.DropDownListContentControl#listItems:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -24077,7 +24077,7 @@ console.log(`List item deleted from control with ID ${selectedContentControl.id}: ${listItemText}`); }); -'Word.ErrorCodes:enum': +Word.ErrorCodes:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -24095,7 +24095,7 @@ } } } -'Word.EventSource:enum': +Word.EventSource:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml @@ -24128,7 +24128,7 @@ console.log(`${event.type} event detected. Event source: ${event.source}. Comment info:`, event.commentDetails); }); } -'Word.EventType:enum': +Word.EventType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -24140,7 +24140,7 @@ console.log(`${event.eventType} event detected. IDs of content controls that were deleted:`, event.ids); }); } -'Word.Field:class': +Word.Field:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24160,7 +24160,7 @@ console.log("Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result), "Type of first field: " + field.type, "Is the first field locked? " + field.locked, "Kind of the first field: " + field.kind); } }); -'Word.Field#delete:member(1)': +Word.Field#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24183,7 +24183,7 @@ console.log("The first field in the document was deleted."); } }); -'Word.Field#select:member(1)': +Word.Field#select:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24212,7 +24212,7 @@ console.log("After updating:", "Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result)); } }); -'Word.Field#updateResult:member(1)': +Word.Field#updateResult:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24241,7 +24241,7 @@ console.log("After updating:", "Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result)); } }); -'Word.Field#code:member': +Word.Field#code:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24261,7 +24261,7 @@ console.log("Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result), "Type of first field: " + field.type, "Is the first field locked? " + field.locked, "Kind of the first field: " + field.kind); } }); -'Word.Field#kind:member': +Word.Field#kind:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24281,7 +24281,7 @@ console.log("Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result), "Type of first field: " + field.type, "Is the first field locked? " + field.locked, "Kind of the first field: " + field.kind); } }); -'Word.Field#locked:member': +Word.Field#locked:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24305,7 +24305,7 @@ console.log(`The first field in the selection is now ${field.locked ? "locked" : "unlocked"}.`); } }); -'Word.Field#parentBody:member': +Word.Field#parentBody:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24326,7 +24326,7 @@ console.log("Text of first field's parent body: " + JSON.stringify(parentBody.text)); } }); -'Word.Field#result:member': +Word.Field#result:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24346,7 +24346,7 @@ console.log("Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result), "Type of first field: " + field.type, "Is the first field locked? " + field.locked, "Kind of the first field: " + field.kind); } }); -'Word.Field#type:member': +Word.Field#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24366,7 +24366,7 @@ console.log("Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result), "Type of first field: " + field.type, "Is the first field locked? " + field.locked, "Kind of the first field: " + field.kind); } }); -'Word.FieldCollection:class': +Word.FieldCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24390,7 +24390,7 @@ } } }); -'Word.FieldCollection#getFirstOrNullObject:member(1)': +Word.FieldCollection#getFirstOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24410,7 +24410,7 @@ console.log("Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result), "Type of first field: " + field.type, "Is the first field locked? " + field.locked, "Kind of the first field: " + field.kind); } }); -'Word.FieldCollection#items:member': +Word.FieldCollection#items:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24434,7 +24434,7 @@ } } }); -'Word.FieldKind:enum': +Word.FieldKind:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24454,7 +24454,7 @@ console.log("Code of first field: " + field.code, "Result of first field: " + JSON.stringify(field.result), "Type of first field: " + field.type, "Is the first field locked? " + field.locked, "Kind of the first field: " + field.kind); } }); -'Word.FieldType:enum': +Word.FieldType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -24476,7 +24476,7 @@ console.log("Code of the field: " + field.code, "Result of the field: " + JSON.stringify(field.result)); } }); -'Word.GetTextOptions:interface': +Word.GetTextOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-text.yaml @@ -24493,7 +24493,7 @@ console.log("Text:- " + text.value, "Including hidden text:- " + textIncludingHidden.value, "Including text marked as deleted:- " + textIncludingDeleted.value); }); -'Word.HeaderFooterType:enum': +Word.HeaderFooterType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-header-and-footer.yaml @@ -24507,7 +24507,7 @@ await context.sync(); }); -'Word.ImageFormat:enum': +Word.ImageFormat:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -24527,7 +24527,7 @@ await context.sync(); console.log(base64.value); }); -'Word.ImportedStylesConflictBehavior:enum': +Word.ImportedStylesConflictBehavior:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml @@ -24546,7 +24546,7 @@ await context.sync(); console.log("Styles imported from JSON:", styles); }); -'Word.InlinePicture#getBase64ImageSrc:member(1)': +Word.InlinePicture#getBase64ImageSrc:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -24566,7 +24566,7 @@ await context.sync(); console.log(base64.value); }); -'Word.InlinePicture:class': +Word.InlinePicture:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -24582,7 +24582,7 @@ await context.sync(); }); -'Word.InlinePicture#imageFormat:member': +Word.InlinePicture#imageFormat:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -24602,7 +24602,7 @@ await context.sync(); console.log(base64.value); }); -'Word.InlinePictureCollection:class': +Word.InlinePictureCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -24622,7 +24622,7 @@ await context.sync(); console.log(base64.value); }); -'Word.InsertFileOptions:interface': +Word.InsertFileOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml @@ -24645,7 +24645,7 @@ }); await context.sync(); }); -'Word.InsertLocation:enum': +Word.InsertLocation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-section-breaks.yaml @@ -24661,7 +24661,7 @@ console.log("Inserted section without an associated page break."); }); -'Word.InsertShapeOptions:interface': +Word.InsertShapeOptions:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -24682,7 +24682,7 @@ console.log("Inserted a text box at the beginning of the current selection."); }); -'Word.List:class': +Word.List:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/insert-list.yaml @@ -24714,7 +24714,7 @@ await context.sync(); }); -'Word.List#insertParagraph:member(1)': +Word.List#insertParagraph:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/insert-list.yaml @@ -24746,7 +24746,7 @@ await context.sync(); }); -'Word.List#setLevelBullet:member(1)': +Word.List#setLevelBullet:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -24784,7 +24784,7 @@ await context.sync(); }); -'Word.List#setLevelNumbering:member(1)': +Word.List#setLevelNumbering:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -24822,7 +24822,7 @@ await context.sync(); }); -'Word.List#levelExistences:member': +Word.List#levelExistences:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -24859,7 +24859,7 @@ console.log(`- Level ${i + 1} (index ${i}): ${levelExistences[i]}`); } }); -'Word.List#levelTypes:member': +Word.List#levelTypes:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -24896,7 +24896,7 @@ console.log(`- Level ${i + 1} (index ${i}): ${levelExistences[i]}`); } }); -'Word.ListBuiltInNumberStyle:enum': +Word.ListBuiltInNumberStyle:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/manage-list-styles.yaml @@ -24932,7 +24932,7 @@ console.log(`List levels of the '${styleName}' style:`, listLevels); } }); -'Word.ListBullet:enum': +Word.ListBullet:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -24970,7 +24970,7 @@ await context.sync(); }); -'Word.ListCollection:class': +Word.ListCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -25007,7 +25007,7 @@ console.log(`- Level ${i + 1} (index ${i}): ${levelExistences[i]}`); } }); -'Word.ListItem:class': +Word.ListItem:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/insert-list.yaml @@ -25039,7 +25039,7 @@ await context.sync(); }); -'Word.ListItem#level:member': +Word.ListItem#level:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/insert-list.yaml @@ -25071,7 +25071,7 @@ await context.sync(); }); -'Word.ListLevel:class': +Word.ListLevel:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/manage-list-styles.yaml @@ -25107,7 +25107,7 @@ console.log(`List levels of the '${styleName}' style:`, listLevels); } }); -'Word.ListLevelCollection:class': +Word.ListLevelCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/manage-list-styles.yaml @@ -25143,7 +25143,7 @@ console.log(`List levels of the '${styleName}' style:`, listLevels); } }); -'Word.ListLevelType:enum': +Word.ListLevelType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -25180,7 +25180,7 @@ console.log(`- Level ${i + 1} (index ${i}): ${levelExistences[i]}`); } }); -'Word.ListNumbering:enum': +Word.ListNumbering:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/organize-list.yaml @@ -25218,7 +25218,7 @@ await context.sync(); }); -'Word.ListTemplate:class': +Word.ListTemplate:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/manage-list-styles.yaml @@ -25254,7 +25254,7 @@ console.log(`List levels of the '${styleName}' style:`, listLevels); } }); -'Word.LocationRelation:enum': +Word.LocationRelation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/compare-location.yaml @@ -25278,7 +25278,7 @@ const locationValue: Word.LocationRelation = comparedLocation.value; console.log(`Location of the first paragraph in relation to the second paragraph: ${locationValue}`); }); -'Word.NoteItem:class': +Word.NoteItem:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25299,7 +25299,7 @@ console.log(`Text of footnote ${referenceNumber}: ${footnoteBody.text}`); }); -'Word.NoteItem#delete:member(1)': +Word.NoteItem#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25319,7 +25319,7 @@ console.log("Footnote deleted."); }); -'Word.NoteItem#getNext:member(1)': +Word.NoteItem#getNext:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25338,7 +25338,7 @@ reference.select(); console.log("Selected is the next footnote: " + (mark + 2)); }); -'Word.NoteItem#body:member': +Word.NoteItem#body:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25359,7 +25359,7 @@ console.log(`Text of footnote ${referenceNumber}: ${footnoteBody.text}`); }); -'Word.NoteItem#reference:member': +Word.NoteItem#reference:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25381,7 +25381,7 @@ console.log(`Reference ${referenceNumber} is selected.`); }); -'Word.NoteItem#type:member': +Word.NoteItem#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25405,7 +25405,7 @@ console.log(`Body type of note: ${item.body.type}`); }); -'Word.NoteItemCollection:class': +Word.NoteItemCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25419,7 +25419,7 @@ reference.select(); console.log("The first footnote is selected."); }); -'Word.NoteItemCollection#getFirst:member(1)': +Word.NoteItemCollection#getFirst:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25433,7 +25433,7 @@ reference.select(); console.log("The first footnote is selected."); }); -'Word.NoteItemType:enum': +Word.NoteItemType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -25457,7 +25457,7 @@ console.log(`Body type of note: ${item.body.type}`); }); -'Word.OutlineLevel:enum': +Word.OutlineLevel:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml @@ -25476,7 +25476,7 @@ await context.sync(); console.log("Styles imported from JSON:", styles); }); -'Word.Page:class': +Word.Page:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -25509,7 +25509,7 @@ console.log("Text of that page in the selection:", pagesText[i].text); } }); -'Word.Page#getRange:member(1)': +Word.Page#getRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -25542,7 +25542,7 @@ console.log("Text of that page in the selection:", pagesText[i].text); } }); -'Word.Page#index:member': +Word.Page#index:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -25581,7 +25581,7 @@ console.log("Text of that page:", pagesText[i].text); } }); -'Word.PageCollection:class': +Word.PageCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -25614,7 +25614,7 @@ console.log("Text of that page in the selection:", pagesText[i].text); } }); -'Word.Pane:class': +Word.Pane:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -25664,7 +25664,7 @@ console.log("First paragraph's text:", pagesFirstParagraphText[i].text); } }); -'Word.Pane#pages:member': +Word.Pane#pages:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -25714,7 +25714,7 @@ console.log("First paragraph's text:", pagesFirstParagraphText[i].text); } }); -'Word.Pane#pagesEnclosingViewport:member': +Word.Pane#pagesEnclosingViewport:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -25755,7 +25755,7 @@ console.log(`Page index: ${pagesIndexes[i].index}`); } }); -'Word.Paragraph:class': +Word.Paragraph:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -25769,7 +25769,7 @@ await context.sync(); console.log(paragraph.text); }); -'Word.Paragraph#getRange:member(1)': +Word.Paragraph#getRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -25800,7 +25800,7 @@ console.log(sentencesToTheEndOfParagraph.items[i].text); } }); -'Word.Paragraph#insertAnnotations:member(1)': +Word.Paragraph#insertAnnotations:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -25856,7 +25856,7 @@ console.log("Annotations inserted:", annotationIds.value); }); -'Word.Paragraph#insertBreak:member(1)': +Word.Paragraph#insertBreak:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-line-and-page-breaks.yaml @@ -25868,7 +25868,7 @@ await context.sync(); console.log("success"); }); -'Word.Paragraph#insertContentControl:member(1)': +Word.Paragraph#insertContentControl:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -25896,7 +25896,7 @@ await context.sync(); }); -'Word.Paragraph#insertText:member(1)': +Word.Paragraph#insertText:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-in-different-locations.yaml @@ -25910,7 +25910,7 @@ await context.sync(); }); -'Word.Paragraph#insertTextBox:member(1)': +Word.Paragraph#insertTextBox:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -25933,7 +25933,7 @@ console.log("Inserted a text box at the beginning of the first paragraph in the header."); }); -'Word.Paragraph#select:member(1)': +Word.Paragraph#select:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/scroll-to-range.yaml @@ -25956,7 +25956,7 @@ await context.sync(); }); -'Word.Paragraph#set:member(1)': +Word.Paragraph#set:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/multiple-property-set.yaml @@ -25990,7 +25990,7 @@ await context.sync(); }); -'Word.Paragraph#split:member(1)': +Word.Paragraph#split:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/split-words-of-first-paragraph.yaml @@ -26013,7 +26013,7 @@ await pause(200); } }); -'Word.Paragraph#startNewList:member(1)': +Word.Paragraph#startNewList:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/insert-list.yaml @@ -26045,7 +26045,7 @@ await context.sync(); }); -'Word.Paragraph#alignment:member': +Word.Paragraph#alignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml @@ -26057,7 +26057,7 @@ await context.sync(); }); -'Word.Paragraph#leftIndent:member': +Word.Paragraph#leftIndent:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml @@ -26069,7 +26069,7 @@ return context.sync(); }); -'Word.Paragraph#lineSpacing:member': +Word.Paragraph#lineSpacing:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml @@ -26081,7 +26081,7 @@ await context.sync(); }); -'Word.Paragraph#lineUnitAfter:member': +Word.Paragraph#lineUnitAfter:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml @@ -26093,7 +26093,7 @@ await context.sync(); }); -'Word.Paragraph#lineUnitBefore:member': +Word.Paragraph#lineUnitBefore:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml @@ -26105,7 +26105,7 @@ await context.sync(); }); -'Word.Paragraph#spaceAfter:member': +Word.Paragraph#spaceAfter:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/paragraph-properties.yaml @@ -26117,7 +26117,7 @@ await context.sync(); }); -'Word.Paragraph#style:member': +Word.Paragraph#style:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -26152,7 +26152,7 @@ console.log(`'${styleName}' style applied to first paragraph.`); } }); -'Word.Paragraph#styleBuiltIn:member': +Word.Paragraph#styleBuiltIn:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml @@ -26187,7 +26187,7 @@ await context.sync(); }); -'Word.Paragraph#text:member': +Word.Paragraph#text:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -26201,7 +26201,7 @@ await context.sync(); console.log(paragraph.text); }); -'Word.Paragraph#uniqueLocalId:member': +Word.Paragraph#uniqueLocalId:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -26245,7 +26245,7 @@ } }); } -'Word.ParagraphAddedEventArgs:interface': +Word.ParagraphAddedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/onadded-event.yaml @@ -26269,7 +26269,7 @@ console.log(`${event.type} event detected. IDs of paragraphs that were added:`, event.uniqueLocalIds); }); } -'Word.ParagraphChangedEventArgs:interface': +Word.ParagraphChangedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/onchanged-event.yaml @@ -26293,7 +26293,7 @@ console.log(`${event.type} event detected. IDs of paragraphs where content was changed:`, event.uniqueLocalIds); }); } -'Word.ParagraphCollection:class': +Word.ParagraphCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -26309,7 +26309,7 @@ await context.sync(); }); -'Word.ParagraphCollection#getFirst:member(1)': +Word.ParagraphCollection#getFirst:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml @@ -26332,7 +26332,7 @@ console.log(`ID ${annotation.id} - state '${annotation.state}':`, annotation.critiqueAnnotation.critique); } }); -'Word.ParagraphCollection#getLast:member(1)': +Word.ParagraphCollection#getLast:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/15-images/insert-and-get-pictures.yaml @@ -26348,7 +26348,7 @@ await context.sync(); }); -'Word.ParagraphCollection#items:member': +Word.ParagraphCollection#items:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/insert-list.yaml @@ -26380,7 +26380,7 @@ await context.sync(); }); -'Word.ParagraphDeletedEventArgs:interface': +Word.ParagraphDeletedEventArgs:interface: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/ondeleted-event.yaml @@ -26404,7 +26404,7 @@ console.log(`${event.type} event detected. IDs of paragraphs that were deleted:`, event.uniqueLocalIds); }); } -'Word.ParagraphFormat:class': +Word.ParagraphFormat:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -26432,7 +26432,7 @@ console.log(`Successfully the paragraph format of the '${styleName}' style.`); } }); -'Word.ParagraphFormat#alignment:member': +Word.ParagraphFormat#alignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -26460,7 +26460,7 @@ console.log(`Successfully the paragraph format of the '${styleName}' style.`); } }); -'Word.ParagraphFormat#leftIndent:member': +Word.ParagraphFormat#leftIndent:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -26488,7 +26488,7 @@ console.log(`Successfully the paragraph format of the '${styleName}' style.`); } }); -'Word.Range:class': +Word.Range:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -26512,7 +26512,7 @@ const contentRange: Word.CommentContentRange = comment.contentRange; console.log("Comment content range:", contentRange); }); -'Word.Range#compareLocationWith:member(1)': +Word.Range#compareLocationWith:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/compare-location.yaml @@ -26536,7 +26536,7 @@ const locationValue: Word.LocationRelation = comparedLocation.value; console.log(`Location of the first paragraph in relation to the second paragraph: ${locationValue}`); }); -'Word.Range#expandTo:member(1)': +Word.Range#expandTo:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -26567,7 +26567,7 @@ console.log(sentencesToTheEndOfParagraph.items[i].text); } }); -'Word.Range#getComments:member(1)': +Word.Range#getComments:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -26584,7 +26584,7 @@ console.log("Comments:", comments); }); -'Word.Range#getContentControls:member(1)': +Word.Range#getContentControls:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -26622,7 +26622,7 @@ console.log("Deleted checkbox content control."); }); -'Word.Range#getRange:member(1)': +Word.Range#getRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -26637,7 +26637,7 @@ console.log("Dropdown list content control inserted at the end of the selection."); }); -'Word.Range#getReviewedText:member(1)': +Word.Range#getReviewedText:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-change-tracking.yaml @@ -26654,7 +26654,7 @@ console.log("Reviewed text (before):", before.value, "Reviewed text (after):", after.value); }); -'Word.Range#getTextRanges:member(1)': +Word.Range#getTextRanges:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -26685,7 +26685,7 @@ console.log(sentencesToTheEndOfParagraph.items[i].text); } }); -'Word.Range#insertComment:member(1)': +Word.Range#insertComment:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-comments.yaml @@ -26703,7 +26703,7 @@ console.log("Comment inserted:", comment); }); -'Word.Range#insertContentControl:member(1)': +Word.Range#insertContentControl:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml @@ -26737,7 +26737,7 @@ } await context.sync(); }); -'Word.Range#insertField:member(1)': +Word.Range#insertField:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-fields.yaml @@ -26759,7 +26759,7 @@ console.log("Code of the field: " + field.code, "Result of the field: " + JSON.stringify(field.result)); } }); -'Word.Range#insertFootnote:member(1)': +Word.Range#insertFootnote:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -26774,7 +26774,7 @@ console.log("Inserted footnote."); }); -'Word.Range#insertInlinePictureFromBase64:member(1)': +Word.Range#insertInlinePictureFromBase64:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -26810,7 +26810,7 @@ "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"; return pictureBase64; -'Word.Range#insertTextBox:member(1)': +Word.Range#insertTextBox:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -26831,7 +26831,7 @@ console.log("Inserted a text box at the beginning of the current selection."); }); -'Word.Range#footnotes:member': +Word.Range#footnotes:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-footnotes.yaml @@ -26846,7 +26846,7 @@ console.log("Number of footnotes in the selected range: " + footnotes.items.length); }); -'Word.Range#parentContentControl:member': +Word.Range#parentContentControl:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -26890,7 +26890,7 @@ `id: ${selectedContentControl.id} ... isChecked: ${selectedContentControl.checkboxContentControl.isChecked}` ); }); -'Word.Range#styleBuiltIn:member': +Word.Range#styleBuiltIn:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml @@ -26903,7 +26903,7 @@ await context.sync(); }); -'Word.RangeCollection:class': +Word.RangeCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/search.yaml @@ -26924,7 +26924,7 @@ await context.sync(); }); -'Word.RangeLocation:enum': +Word.RangeLocation:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -26955,7 +26955,7 @@ console.log(sentencesToTheEndOfParagraph.items[i].text); } }); -'Word.SaveBehavior:enum': +Word.SaveBehavior:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/save-close.yaml @@ -26969,7 +26969,7 @@ context.document.save(Word.SaveBehavior.prompt); await context.sync(); }); -'Word.Section#getFooter:member(2)': +Word.Section#getFooter:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-header-and-footer.yaml @@ -26983,7 +26983,7 @@ await context.sync(); }); -'Word.Section#getHeader:member(1)': +Word.Section#getHeader:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/25-paragraph/insert-header-and-footer.yaml @@ -26997,7 +26997,7 @@ await context.sync(); }); -'Word.Section:class': +Word.Section:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-section-breaks.yaml @@ -27013,7 +27013,7 @@ console.log("Inserted section break on next page."); }); -'Word.SectionCollection:class': +Word.SectionCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-section-breaks.yaml @@ -27029,7 +27029,7 @@ console.log("Inserted section break on next even page."); }); -'Word.SelectionMode:enum': +Word.SelectionMode:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/scroll-to-range.yaml @@ -27041,7 +27041,7 @@ await context.sync(); }); -'Word.Setting:class': +Word.Setting:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-settings.yaml @@ -27066,7 +27066,7 @@ console.log("Setting added or edited:", setting); }); -'Word.Setting#key:member': +Word.Setting#key:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-settings.yaml @@ -27091,7 +27091,7 @@ console.log("Setting added or edited:", setting); }); -'Word.Setting#value:member': +Word.Setting#value:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-settings.yaml @@ -27116,7 +27116,7 @@ console.log("Setting added or edited:", setting); }); -'Word.SettingCollection:class': +Word.SettingCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-settings.yaml @@ -27130,7 +27130,7 @@ await context.sync(); console.log("All settings deleted."); }); -'Word.SettingCollection#add:member(1)': +Word.SettingCollection#add:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-settings.yaml @@ -27155,7 +27155,7 @@ console.log("Setting added or edited:", setting); }); -'Word.SettingCollection#items:member': +Word.SettingCollection#items:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-settings.yaml @@ -27177,7 +27177,7 @@ } } }); -'Word.Shading:class': +Word.Shading:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27211,7 +27211,7 @@ console.log("Updated shading."); } }); -'Word.ShadingTextureType:enum': +Word.ShadingTextureType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27245,7 +27245,7 @@ console.log("Updated shading."); } }); -'Word.Shape:class': +Word.Shape:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -27264,7 +27264,7 @@ console.log("The first text box's properties were updated:", firstShapeWithTextBox); }); -'Word.Shape#delete:member(1)': +Word.Shape#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -27280,7 +27280,7 @@ console.log("The first text box in document was deleted."); }); -'Word.Shape#type:member': +Word.Shape#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -27302,7 +27302,7 @@ console.log("No shapes found in main document."); } }); -'Word.ShapeCollection:class': +Word.ShapeCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -27324,7 +27324,7 @@ console.log("No shapes found in main document."); } }); -'Word.ShapeCollection#getByTypes:member(1)': +Word.ShapeCollection#getByTypes:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -27343,7 +27343,7 @@ console.log("The first text box's properties were updated:", firstShapeWithTextBox); }); -'Word.ShapeCollection#getFirst:member(1)': +Word.ShapeCollection#getFirst:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -27364,7 +27364,7 @@ console.log("New content control properties:", newControl); }); -'Word.ShapeType:enum': +Word.ShapeType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -27386,7 +27386,7 @@ console.log("No shapes found in main document."); } }); -'Word.Style:class': +Word.Style:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27421,7 +27421,7 @@ console.log(`'${styleName}' style applied to first paragraph.`); } }); -'Word.Style#delete:member(1)': +Word.Style#delete:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27447,7 +27447,7 @@ console.log(`Successfully deleted custom style '${styleName}'.`); } }); -'Word.Style#borders:member': +Word.Style#borders:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27480,7 +27480,7 @@ console.log("Updated outside borders."); } }); -'Word.Style#font:member': +Word.Style#font:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27508,7 +27508,7 @@ console.log(`Successfully updated font properties of the '${styleName}' style.`); } }); -'Word.Style#listTemplate:member': +Word.Style#listTemplate:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/manage-list-styles.yaml @@ -27544,7 +27544,7 @@ console.log(`List levels of the '${styleName}' style:`, listLevels); } }); -'Word.Style#nameLocal:member': +Word.Style#nameLocal:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27579,7 +27579,7 @@ console.log(`'${styleName}' style applied to first paragraph.`); } }); -'Word.Style#paragraphFormat:member': +Word.Style#paragraphFormat:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27607,7 +27607,7 @@ console.log(`Successfully the paragraph format of the '${styleName}' style.`); } }); -'Word.Style#shading:member': +Word.Style#shading:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27641,7 +27641,7 @@ console.log("Updated shading."); } }); -'Word.StyleCollection:class': +Word.StyleCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27656,7 +27656,7 @@ console.log(`Number of styles: ${count.value}`); }); -'Word.StyleCollection#getByNameOrNullObject:member(1)': +Word.StyleCollection#getByNameOrNullObject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27688,7 +27688,7 @@ console.log(newStyleName + " has been added to the style list."); }); -'Word.StyleCollection#getCount:member(1)': +Word.StyleCollection#getCount:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27703,7 +27703,7 @@ console.log(`Number of styles: ${count.value}`); }); -'Word.StyleType:enum': +Word.StyleType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-styles.yaml @@ -27738,7 +27738,7 @@ console.log(`'${styleName}' style applied to first paragraph.`); } }); -'Word.Table#getBorder:member(1)': +Word.Table#getBorder:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27755,7 +27755,7 @@ console.log(`Details about the ${borderLocation} border of the first table:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.Table#getCell:member(1)': +Word.Table#getCell:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/table-cell-access.yaml @@ -27770,7 +27770,7 @@ await context.sync(); console.log("First cell's text is: " + firstCell.text); }); -'Word.Table#getCellPadding:member(1)': +Word.Table#getCellPadding:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27788,7 +27788,7 @@ `Cell padding details about the ${cellPaddingLocation} border of the first table: ${cellPadding.value} points` ); }); -'Word.Table#alignment:member': +Word.Table#alignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27803,7 +27803,7 @@ console.log(`Details about the alignment of the first table:`, `- Alignment of the table within the containing page column: ${firstTable.alignment}`, `- Horizontal alignment of every cell in the table: ${firstTable.horizontalAlignment}`, `- Vertical alignment of every cell in the table: ${firstTable.verticalAlignment}`); }); -'Word.Table#horizontalAlignment:member': +Word.Table#horizontalAlignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27818,7 +27818,7 @@ console.log(`Details about the alignment of the first table:`, `- Alignment of the table within the containing page column: ${firstTable.alignment}`, `- Horizontal alignment of every cell in the table: ${firstTable.horizontalAlignment}`, `- Vertical alignment of every cell in the table: ${firstTable.verticalAlignment}`); }); -'Word.Table#rows:member': +Word.Table#rows:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27835,7 +27835,7 @@ console.log(`Details about the alignment of the first table's first row:`, `- Horizontal alignment of every cell in the row: ${firstTableRow.horizontalAlignment}`, `- Vertical alignment of every cell in the row: ${firstTableRow.verticalAlignment}`); }); -'Word.Table#verticalAlignment:member': +Word.Table#verticalAlignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27850,7 +27850,7 @@ console.log(`Details about the alignment of the first table:`, `- Alignment of the table within the containing page column: ${firstTable.alignment}`, `- Horizontal alignment of every cell in the table: ${firstTable.horizontalAlignment}`, `- Vertical alignment of every cell in the table: ${firstTable.verticalAlignment}`); }); -'Word.Table:class': +Word.Table:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/table-cell-access.yaml @@ -27868,7 +27868,7 @@ await context.sync(); }); -'Word.TableBorder:class': +Word.TableBorder:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27885,7 +27885,7 @@ console.log(`Details about the ${borderLocation} border of the first table:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.TableBorder#color:member': +Word.TableBorder#color:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27902,7 +27902,7 @@ console.log(`Details about the ${borderLocation} border of the first table:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.TableBorder#type:member': +Word.TableBorder#type:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27919,7 +27919,7 @@ console.log(`Details about the ${borderLocation} border of the first table:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.TableBorder#width:member': +Word.TableBorder#width:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27936,7 +27936,7 @@ console.log(`Details about the ${borderLocation} border of the first table:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.TableCell:class': +Word.TableCell:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27954,7 +27954,7 @@ console.log(`Details about the alignment of the first table's first cell:`, `- Horizontal alignment of the cell's content: ${firstCell.horizontalAlignment}`, `- Vertical alignment of the cell's content: ${firstCell.verticalAlignment}`); }); -'Word.TableCell#getBorder:member(2)': +Word.TableCell#getBorder:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27972,7 +27972,7 @@ console.log(`Details about the ${borderLocation} border of the first table's first cell:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.TableCell#getCellPadding:member(2)': +Word.TableCell#getCellPadding:member(2): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -27992,7 +27992,7 @@ `Cell padding details about the ${cellPaddingLocation} border of the first table's first cell: ${cellPadding.value} points` ); }); -'Word.TableCell#horizontalAlignment:member': +Word.TableCell#horizontalAlignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28010,7 +28010,7 @@ console.log(`Details about the alignment of the first table's first cell:`, `- Horizontal alignment of the cell's content: ${firstCell.horizontalAlignment}`, `- Vertical alignment of the cell's content: ${firstCell.verticalAlignment}`); }); -'Word.TableCell#verticalAlignment:member': +Word.TableCell#verticalAlignment:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28028,7 +28028,7 @@ console.log(`Details about the alignment of the first table's first cell:`, `- Horizontal alignment of the cell's content: ${firstCell.horizontalAlignment}`, `- Vertical alignment of the cell's content: ${firstCell.verticalAlignment}`); }); -'Word.TableCellCollection:class': +Word.TableCellCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28046,7 +28046,7 @@ console.log(`Details about the alignment of the first table's first cell:`, `- Horizontal alignment of the cell's content: ${firstCell.horizontalAlignment}`, `- Vertical alignment of the cell's content: ${firstCell.verticalAlignment}`); }); -'Word.TableCollection:class': +Word.TableCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28061,7 +28061,7 @@ console.log(`Details about the alignment of the first table:`, `- Alignment of the table within the containing page column: ${firstTable.alignment}`, `- Horizontal alignment of every cell in the table: ${firstTable.horizontalAlignment}`, `- Vertical alignment of every cell in the table: ${firstTable.verticalAlignment}`); }); -'Word.TableCollection#getFirst:member(1)': +Word.TableCollection#getFirst:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/table-cell-access.yaml @@ -28076,7 +28076,7 @@ await context.sync(); console.log("First cell's text is: " + firstCell.text); }); -'Word.TableRow:class': +Word.TableRow:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28094,7 +28094,7 @@ console.log(`Details about the alignment of the first table's first cell:`, `- Horizontal alignment of the cell's content: ${firstCell.horizontalAlignment}`, `- Vertical alignment of the cell's content: ${firstCell.verticalAlignment}`); }); -'Word.TableRow#getBorder:member(1)': +Word.TableRow#getBorder:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28113,7 +28113,7 @@ console.log(`Details about the ${borderLocation} border of the first table's first row:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.TableRow#getCellPadding:member(1)': +Word.TableRow#getCellPadding:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28133,7 +28133,7 @@ `Cell padding details about the ${cellPaddingLocation} border of the first table's first row: ${cellPadding.value} points` ); }); -'Word.TableRow#cells:member': +Word.TableRow#cells:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28151,7 +28151,7 @@ console.log(`Details about the alignment of the first table's first cell:`, `- Horizontal alignment of the cell's content: ${firstCell.horizontalAlignment}`, `- Vertical alignment of the cell's content: ${firstCell.verticalAlignment}`); }); -'Word.TableRowCollection:class': +Word.TableRowCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28168,7 +28168,7 @@ console.log(`Details about the alignment of the first table's first row:`, `- Horizontal alignment of every cell in the row: ${firstTableRow.horizontalAlignment}`, `- Vertical alignment of every cell in the row: ${firstTableRow.verticalAlignment}`); }); -'Word.TableRowCollection#getFirst:member(1)': +Word.TableRowCollection#getFirst:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28187,7 +28187,7 @@ console.log(`Details about the ${borderLocation} border of the first table's first row:`, `- Color: ${border.color}`, `- Type: ${border.type}`, `- Width: ${border.width} points`); }); -'Word.TableStyle:class': +Word.TableStyle:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml @@ -28223,7 +28223,7 @@ (document.getElementById("right-cell-margin") as HTMLInputElement).value = tableStyle.rightCellMargin; (document.getElementById("cell-spacing") as HTMLInputElement).value = tableStyle.cellSpacing; }); -'Word.TrackedChange:class': +Word.TrackedChange:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28247,7 +28247,7 @@ console.log(nextTrackedChange); }); -'Word.TrackedChange#accept:member(1)': +Word.TrackedChange#accept:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28266,7 +28266,7 @@ trackedChange.accept(); console.log("Accepted the first tracked change."); }); -'Word.TrackedChange#getNext:member(1)': +Word.TrackedChange#getNext:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28290,7 +28290,7 @@ console.log(nextTrackedChange); }); -'Word.TrackedChange#getRange:member(1)': +Word.TrackedChange#getRange:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28310,7 +28310,7 @@ console.log("range.text: " + range.text); }); -'Word.TrackedChange#reject:member(1)': +Word.TrackedChange#reject:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28329,7 +28329,7 @@ trackedChange.reject(); console.log("Rejected the first tracked change."); }); -'Word.TrackedChangeCollection:class': +Word.TrackedChangeCollection:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28349,7 +28349,7 @@ console.log("range.text: " + range.text); }); -'Word.TrackedChangeCollection#acceptAll:member(1)': +Word.TrackedChangeCollection#acceptAll:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28363,7 +28363,7 @@ trackedChanges.acceptAll(); console.log("Accepted all tracked changes."); }); -'Word.TrackedChangeCollection#getFirst:member(1)': +Word.TrackedChangeCollection#getFirst:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28383,7 +28383,7 @@ console.log("range.text: " + range.text); }); -'Word.TrackedChangeCollection#rejectAll:member(1)': +Word.TrackedChangeCollection#rejectAll:member(1): - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28397,7 +28397,7 @@ trackedChanges.rejectAll(); console.log("Rejected all tracked changes."); }); -'Word.TrackedChangeType:enum': +Word.TrackedChangeType:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-tracked-changes.yaml @@ -28421,7 +28421,7 @@ console.log(nextTrackedChange); }); -'Word.TrailingCharacter:enum': +Word.TrailingCharacter:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/20-lists/manage-list-styles.yaml @@ -28457,7 +28457,7 @@ console.log(`List levels of the '${styleName}' style:`, listLevels); } }); -'Word.VerticalAlignment:enum': +Word.VerticalAlignment:enum: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml @@ -28474,7 +28474,7 @@ console.log(`Details about the alignment of the first table's first row:`, `- Horizontal alignment of every cell in the row: ${firstTableRow.horizontalAlignment}`, `- Vertical alignment of every cell in the row: ${firstTableRow.verticalAlignment}`); }); -'Word.Window:class': +Word.Window:class: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml @@ -28524,7 +28524,7 @@ console.log("First paragraph's text:", pagesFirstParagraphText[i].text); } }); -'Word.Window#activePane:member': +Word.Window#activePane:member: - >- // Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml diff --git a/tsconfig.json b/tsconfig.json index 0fd566d63..a3ff66e69 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,13 @@ { "compilerOptions": { - "target": "es6", + "target": "es2018", "module": "commonjs", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, + "esModuleInterop": true, "removeComments": false, "noImplicitAny": false, "noEmitOnError": true, @@ -17,8 +18,10 @@ "rootDir": "config", "lib": [ "dom", - "es2015" + "es2018" ], - "pretty": true + "pretty": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 2f5433b0c..000000000 --- a/yarn.lock +++ /dev/null @@ -1,1016 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.15.8" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz" - integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/helper-validator-identifier@^7.14.5": - version "7.15.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@fast-csv/format@4.3.5": - version "4.3.5" - resolved "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz" - integrity sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A== - dependencies: - "@types/node" "^14.0.1" - lodash.escaperegexp "^4.1.2" - lodash.isboolean "^3.0.3" - lodash.isequal "^4.5.0" - lodash.isfunction "^3.0.9" - lodash.isnil "^4.0.0" - -"@fast-csv/parse@4.3.6": - version "4.3.6" - resolved "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz" - integrity sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA== - dependencies: - "@types/node" "^14.0.1" - lodash.escaperegexp "^4.1.2" - lodash.groupby "^4.6.0" - lodash.isfunction "^3.0.9" - lodash.isnil "^4.0.0" - lodash.isundefined "^3.0.1" - lodash.uniq "^4.5.0" - -"@types/chalk@0.4.31": - version "0.4.31" - resolved "https://registry.npmjs.org/@types/chalk/-/chalk-0.4.31.tgz" - integrity sha1-ox10JBprHtu5c8822XooloNKUfk= sha512-nF0fisEPYMIyfrFgabFimsz9Lnuu9MwkNrrlATm2E4E46afKDyeelT+8bXfw1VSc7sLBxMxRgT7PxTC2JcqN4Q== - -"@types/fs-extra@3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-3.0.1.tgz" - integrity sha1-eCk6aKrT2GZ1Ho/P1k19ydARdHY= sha512-99ywH5BUw32J7pX3Nqo5xDw7KtvWUogKXLNGAlfSKvMGnCLq6/5Ufk+EuPNEMsKmSYJW1VityGHA9Lo+NEgCKg== - dependencies: - "@types/node" "*" - -"@types/glob@*": - version "7.1.4" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/js-yaml@^3.12.0": - version "3.12.7" - resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.7.tgz" - integrity sha512-S6+8JAYTE1qdsc9HMVsfY7+SgSuUU/Tp6TYTmITW0PZxiyIMvol3Gy//y69Wkhs0ti4py5qgR3uZH6uz/DNzJQ== - -"@types/lodash@^4.14.175": - version "4.14.175" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz" - integrity sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/node@*", "@types/node@^11.10.5": - version "11.15.54" - resolved "https://registry.npmjs.org/@types/node/-/node-11.15.54.tgz" - integrity sha512-1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g== - -"@types/node@^14.0.1": - version "14.17.21" - resolved "https://registry.npmjs.org/@types/node/-/node-14.17.21.tgz" - integrity sha512-zv8ukKci1mrILYiQOwGSV4FpkZhyxQtuFWGya2GujWg+zVAeRQ4qbaMmWp9vb9889CFA8JECH7lkwCL6Ygg8kA== - -"@types/shelljs@^0.8.3": - version "0.8.9" - resolved "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.9.tgz" - integrity sha512-flVe1dvlrCyQJN/SGrnBxqHG+RzXrVKsmjD8WS/qYHpq5UPjfq7UWFBENP0ZuOl0g6OpAlL6iBoLSvKYUUmyQw== - dependencies: - "@types/glob" "*" - "@types/node" "*" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver@^5.0.0: - version "5.3.0" - resolved "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz" - integrity sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg== - dependencies: - archiver-utils "^2.1.0" - async "^3.2.0" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" - readdir-glob "^1.0.0" - tar-stream "^2.2.0" - zip-stream "^4.1.0" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -async@^3.2.0: - version "3.2.4" - resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -big-integer@^1.6.17: - version "1.6.49" - resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.49.tgz" - integrity sha512-KJ7VhqH+f/BOt9a3yMwJNmcZjG53ijWMTjSAGMveQWyLwqIiwkjNP5PFgDob3Snnx86SjDj6I89fIbv0dkQeNw== - -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz" - integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" - integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-indexof-polyfill@~1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz" - integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" - integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== - -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== - -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz" - integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== - dependencies: - traverse ">=0.3.0 <0.4" - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^2.3.0: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -charm@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/charm/-/charm-1.0.1.tgz" - integrity sha1-aFZqelU9T+kXlwMN0YUtDdbvqC0= sha512-mBB1orFlZvYF8PcQNtO446LbWmgZEIOvq6n0CY68csh9JN0Rk1rrqWPQpfLImQO7EhpibXUVDF2PTTaYIfTeRA== - dependencies: - inherits "^2.0.1" - -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A== - dependencies: - restore-cursor "^1.0.1" - -cli-spinners@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.2.0.tgz" - integrity sha1-hQeHN5E7iA9uyf/ntl6D7Hd2KE8= sha512-1sdlgy47mFLr4OfiKC/raeqJ4Jt6oZskLs51esqe/rFqcR23DNF++CbsDpv3hsvwGWHA/+lnxf4xdDtZZtkPBA== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -colors@1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w== - -commander@^2.12.1: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -compress-commons@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz" - integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== - dependencies: - exit-on-epipe "~1.0.1" - printj "~1.1.0" - -crc32-stream@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz" - integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== - dependencies: - crc-32 "^1.2.0" - readable-stream "^3.4.0" - -dayjs@^1.8.34: - version "1.10.7" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz" - integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== - dependencies: - readable-stream "^2.0.2" - -end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -escape-string-regexp@^1.0.2: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -exceljs@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/exceljs/-/exceljs-4.3.0.tgz" - integrity sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w== - dependencies: - archiver "^5.0.0" - dayjs "^1.8.34" - fast-csv "^4.3.1" - jszip "^3.5.0" - readable-stream "^3.6.0" - saxes "^5.0.1" - tmp "^0.2.0" - unzipper "^0.10.11" - uuid "^8.3.0" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg== - -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz" - integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== - -fast-csv@^4.3.1: - version "4.3.6" - resolved "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz" - integrity sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw== - dependencies: - "@fast-csv/format" "4.3.5" - "@fast-csv/parse" "4.3.6" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz" - integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: - version "7.2.0" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: - version "4.2.8" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3, inherits@2: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-core-module@^2.2.0: - version "2.7.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz" - integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== - dependencies: - has "^1.0.3" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz" - integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w== - optionalDependencies: - graceful-fs "^4.1.6" - -jszip@^3.5.0: - version "3.10.1" - resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= sha512-/330KFbmC/zKdtZoVDRwvkJ8snrJyBPfoZ39zsJl2O24HOE1CTNiEbeZmHXmjBVxTSSv7JlJEXPYhU83DhA2yg== - dependencies: - readable-stream "^2.0.5" - -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz" - integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== - -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" - integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== - -lodash.groupby@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz" - integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E= sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.isfunction@^3.0.9: - version "3.0.9" - resolved "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz" - integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== - -lodash.isnil@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz" - integrity sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw= sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isundefined@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz" - integrity sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g= sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA== - -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -mkdirp@^0.5.3, "mkdirp@>=0.5 0": - version "0.5.5" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -node-status@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-status/-/node-status-1.0.0.tgz" - integrity sha1-eQanxHplh9A0lr907GNKuqA/joA= sha512-vYKQTNACHKZRIV64kLuZ3mO2rrwoHUL7GMgEOmUFm4fSntm+guwAlFAhzlNdcMVtyppyR4MnHhaLqTNTHnFawg== - dependencies: - charm "1.0.1" - cli-cursor "^1.0.2" - cli-spinners "0.2.0" - colors "1.1.2" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -once@^1.3.0, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A== - -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -readable-stream@^2.0.0: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^2.0.5: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdir-glob@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz" - integrity sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA== - dependencies: - minimatch "^3.0.4" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -resolve@^1.1.6, resolve@^1.3.2: - version "1.20.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw== - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@2: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -semver@^5.3.0: - version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -setimmediate@^1.0.5, setimmediate@~1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -tar-stream@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tmp@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" - integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== - -tslib@^1.13.0, tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslint@^6.1.0: - version "6.1.3" - resolved "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz" - integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.3" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.13.0" - tsutils "^2.29.0" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - -typescript@^3.3.3333, "typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev", "typescript@>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev": - version "3.9.10" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unzipper@^0.10.11: - version "0.10.11" - resolved "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz" - integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "^1.0.12" - graceful-fs "^4.2.2" - listenercount "~1.0.1" - readable-stream "~2.3.6" - setimmediate "~1.0.4" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -yarn@^1.22.19: - version "1.22.19" - resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz" - integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== - -zip-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz" - integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== - dependencies: - archiver-utils "^2.1.0" - compress-commons "^4.1.0" - readable-stream "^3.6.0" From 70bec7afef72b9dc58e4613aade90af3b2b128bd Mon Sep 17 00:00:00 2001 From: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> Date: Thu, 25 Sep 2025 10:34:10 -0700 Subject: [PATCH 51/71] Remove garbage characters in the terminal (#999) --- config/helpers.ts | 1 - config/status.ts | 51 ++++++++++++++++++++++++++++------------------- package.json | 1 - 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/config/helpers.ts b/config/helpers.ts index 69dff82e0..d0798f6bb 100644 --- a/config/helpers.ts +++ b/config/helpers.ts @@ -3,7 +3,6 @@ import * as fs from 'fs'; import * as os from 'os'; import chalk from 'chalk'; import * as jsyaml from 'js-yaml'; -import { console } from './status'; import { rimraf } from 'rimraf'; import { isObject, isNil, isString, isEmpty } from 'lodash'; diff --git a/config/status.ts b/config/status.ts index 692b788ac..2f953ee73 100644 --- a/config/status.ts +++ b/config/status.ts @@ -1,6 +1,5 @@ -import * as nodeStatus from 'node-status'; import chalk from 'chalk'; -import { isString, find, isNil, isArray } from 'lodash'; +import { isString, isNil, isArray } from 'lodash'; interface IStage { steps: any[]; @@ -13,16 +12,29 @@ export class Status { steps: { [step: string]: boolean } = {}; get console() { - return nodeStatus.console(); + // Return the global console object methods + return { + log: global.console.log.bind(global.console), + error: global.console.error.bind(global.console), + warn: global.console.warn.bind(global.console), + info: global.console.info.bind(global.console) + }; } constructor() { - /* Initialize the status library */ - this.stages = nodeStatus.addItem('stages', { - steps: [] - }); + /* Initialize the simple status system */ + this.stages = { + steps: [], + count: 0, + doneStep: this.doneStep.bind(this) + }; + } - nodeStatus.start(); + private doneStep(completed: boolean, message?: string): void { + const symbol = completed ? chalk.green('✓') : chalk.red('✗'); + if (message) { + global.console.log(`${symbol} ${message}`); + } } /** @@ -37,22 +49,18 @@ export class Status { success = success && additionalDetails.findIndex(item => item instanceof Error) < 0; const messageArray = getDetailsArray(); + const symbol = success ? chalk.green('✓') : chalk.red('✗'); - if (messageArray.length === 0) { - this.stages.doneStep(success); - } else { - // Add a newline before - messageArray.splice(0, 0, ''); - this.stages.doneStep(success, messageArray.join('\n * ') + '\n'); - //FIXME `${chalk.bold.red('WARNING: one of the messages above was an error')}`) - } - - this.steps[stage] = false; + // Log the completion with symbol + global.console.log(`${symbol} ${stage}`); - if (!find(this.steps as any, (item) => item === true)) { - nodeStatus.stop(); + if (messageArray.length > 0) { + messageArray.forEach(msg => { + global.console.log(` * ${msg}`); + }); } + this.steps[stage] = false; // Helper: function getDetailsArray() { @@ -82,12 +90,13 @@ export class Status { } /** - * Add a new stage and complete the previous stage. + * Add a new stage and mark it as started. * @param stage Name of the stage. */ add(stage: string) { this.stages.steps.push(stage); this.steps[stage] = true; + global.console.log(chalk.cyan(`○ ${stage}`)); } } diff --git a/package.json b/package.json index 40974d9bf..457b9471d 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ "fs-extra": "11.3.2", "js-yaml": "^4.1.0", "lodash": "^4.17.21", - "node-status": "^1.0.0", "rimraf": "^6.0.1", "shelljs": "^0.10.0" }, From 88b7fe2de1e3b3f7effa5b0837318458271c80f6 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Tue, 30 Sep 2025 10:12:52 -0700 Subject: [PATCH 52/71] [Outlook] (drag and drop) Create code snippet and map it to drag-and-drop APIs (#1001) --- playlists-prod/outlook.yaml | 11 ++ playlists/outlook.yaml | 11 ++ samples/outlook/80-events/drag-drop-item.yaml | 72 ++++++++++ snippet-extractor-metadata/outlook.xlsx | Bin 24557 -> 24926 bytes snippet-extractor-output/snippets.yaml | 135 ++++++++++++++++++ view-prod/outlook.json | 1 + view/outlook.json | 1 + 7 files changed, 231 insertions(+) create mode 100644 samples/outlook/80-events/drag-drop-item.yaml diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index d675b90a6..cdb4674f5 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -455,6 +455,17 @@ group: Regex Matches api_set: Mailbox: '1.6' +- id: outlook-events-drag-drop-item + name: Drag and drop an item into the task pane + fileName: drag-drop-item.yaml + description: >- + Handles the drag-and-drop event when a user drags and drops messages and + file attachments into the add-in task pane. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + group: Events + api_set: + Mailbox: '1.5' - id: outlook-tokens-and-service-calls-ids-and-urls name: Endpoint URLs and item IDs fileName: ids-and-urls.yaml diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index ca772433b..66855bc23 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -455,6 +455,17 @@ group: Regex Matches api_set: Mailbox: '1.6' +- id: outlook-events-drag-drop-item + name: Drag and drop an item into the task pane + fileName: drag-drop-item.yaml + description: >- + Handles the drag-and-drop event when a user drags and drops messages and + file attachments into the add-in task pane. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/80-events/drag-drop-item.yaml + group: Events + api_set: + Mailbox: '1.5' - id: outlook-tokens-and-service-calls-ids-and-urls name: Endpoint URLs and item IDs fileName: ids-and-urls.yaml diff --git a/samples/outlook/80-events/drag-drop-item.yaml b/samples/outlook/80-events/drag-drop-item.yaml new file mode 100644 index 000000000..7fb596045 --- /dev/null +++ b/samples/outlook/80-events/drag-drop-item.yaml @@ -0,0 +1,72 @@ +id: outlook-events-drag-drop-item +name: Drag and drop an item into the task pane +description: Handles the drag-and-drop event when a user drags and drops messages and file attachments into the add-in task pane. +host: OUTLOOK +api_set: + Mailbox: '1.5' +script: + content: | + Office.onReady(() => { + dragAndDropEventHandler(event); + }); + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } + language: typescript +template: + content: |- + +
      +

      Try it out

      +
        +
      1. Drag a message or file attachment from your mailbox to the task pane. As you drag the item across the task pane, the event name and the coordinates of your mouse pointer are displayed in the console.
      2. +
      3. Drop the message or file attachment into the task pane. The properties + of the dropped item are displayed in the console.
      4. +
      +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index d3bcea07da6e2dafcc5810793c747628bf50777e..ef99fbe2699190fd28de29aa670d30cf50b8d3c4 100644 GIT binary patch delta 14927 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 UP(uM|N$sRwLuz<)z5mMmf3!~PZ~y=R delta 14526 zcmZ9zWmFtZ*9D48aED+axVu~M;0eKPaCi5{2|jBe&jx~o*&KxswO$fr-~v( z-}u($Zai3b^5CIfn#GAL!g?M1t$GA`GKT{0HZ1cGlS2!<9Qwr^)nkaqT_FN2{Q)!V zQ+dMTxk_EJij)kQBUXnVRd=6$H7UTpI8uf>iXD~y*bpcrE9$B=;f3n$un6(X6#G4= zHnbzbiq~c@b{qZ8x@ZFj_$%7Q);yxP;pMJI%Rnu&xX$ z+!@^~l>&N9x$3!?dKVU>2R!9{(-cy|ye=a$+*y#t_28Hk!CsWb!)m7sGY=|A)0|`O zbD3!#i&c(ihd2e(&L1#)vE^6VsX$1SFv;h=EzNPrFpTEdTm!Z;Q0^6)`9*zbCZ8m+i#02@RK^@-*JSqwsLVODs{Kd_;7$V>N+hhGnj{4t|{BJMonC29{ z1XG(QDXb;OKZeV9KX{`!z=L_`h`kE%veb+DyoePDULii1x8tsTZV_P{CfGNOQ3O8s zbz{#}h8HhvP6`_90CFcOD9`B6{At?0b&DQFTCd&L-#6`q?Sztc=4ZU$kI;%Eh3_n$ zA|k@jzPUL{Dq_(=zUky7F%@tXdLqRcLvEqx_2VNKSfbip6pcPsLO7}SXqB#DVODk* z5BKuduZ;+sLr=3RXvQbA7}%SNM^Xv3#+|B-Y~d|=X3}Gm0Rvth!Fwfu>_$i@9{Wq| zy$9*mLX+d>_vILWgMZ$Y84oQwlhuO}38}a#v}_NeWH59z;_*AS+)TU*2RePFG9JId zmo%o7v$Oh`=PxNXa(TGkG_ln5id;1rg#q?6?bjAxFUzxc7_}(D4+g~2<36dJ!u0pT zP}5fe?8cteoMcgBYYv06X?IKysS_`CqAz7pyxE;Qw010KN-N2}Ev+4?*4v`+e9r!3 zd`Tg7`8!+W@rGP@b&DT3VbK4wW&6U=KtUOjK|>Kj#mDM>1k&Sm?3dVZ{nu$vL?!)b z-LV6a@IrFcmLwWZFKyCss=scH^1!Q~fX^0?>wgr`mr3$PJCD1c)}{T><5&KKN1&(# z1EEFdQowCr-2Jxx@DX{!8DaREX&q?RR`F3yUhU--22DKz6p666M)0*LxX(U)& z;v|KF=0_h=4wUq3wA`pN2H?*ZSGG^y;Zzm2Q;-@mgt19#IUz81p>uP!27N6q?!TXl zZaNe%Tg22=+SriZdQFrjth!tnYF#3eso4`*S4#v#d-|AljU#L3M zgkTrA{XTYO2P=wRam3Uz9@xGHv56hadTbR2uoj>D0u=DujEp`3QfI-`8p-rY>0}JY2j5k>mPS4^Q3FUudqhx@vl87-hs$;-%R1WL|?k zu2M3x&q$&V=N6}2u8{E9(Dtc6MH5X%VS49z#At|c=q&j=``Oftsmny%awd2otA&tZ zllTpD0YD()?8uO`1+!J2f%}(jHTphQ3meS&B;<)NZ|bL?NL^F{|%RJ;{J(}TXfPVq&mg?g)vV(f}pZ5zx4 zPRCh;QqrGkGYsM)4e=NmQt)0zvff??$N@dSr=uni@Gt)GW%7WnOg9C&#tni0L(%kq2KxtqELMfVSgzIZ;r0dGrB zSFECMcU9o$=O=>4DtuwAr|Jdb8ek;3JAJU@%)Rm6Fps!KdGsLq#b>h3`4}%+#<=IA z&#~UZ+m(v>e(Uc@a<2jZt6Ovr23)J?1nu7e5CZB1UZ~7=aE??+4m@b}BdDM1b12Vw zAE#th3>b}2M2(Ov3MUjFFBBg))EFB}BJ$y|N+t5)wwdSeMN9XEMY=*SyJvDSi7*-9w{i zVpULSNFPOl7&I}T9~Wl!bcRfosFq}~mReVSCeJ(9$N#}q7@=RtS*S*O-$(g$KaGPs(AN*N<1Oss3v=c)PWB zjecT$HrU@5V`l}Pm2-HwQaCC(-?Llz(xp=*I+O&1`*dKT~AnKFq@?|ia7w@ZsBbs>Bv>;E_X~Cj2ruQ zOb1z+N92D~J&e8jPO2$+lsYJ8Ura^VZDQg0F7raJ``@WEE)Bw5(cei;T!})#^de-| z9*Da?Xt{?jKN`G_K947ferI~|HJ7=F%F~O*6N*t-jw}nEu*(Nc%zZ-SMw)A|<0fvL zsG_cn6PV*ivQyk&4IY1ChJ%)yK))qvH@S&xC92@`vSdN*Lh<5ty~;Lk`{9M}i%fRE z7ne&^f#c=R-7t|50qS^XgK{!s67~^$#d|L<^S?nQnPSzIYw5@bi>C>hQlLQEo|b&G zcZ&2&%`n@u-35JHLFq`}ya<`TLZ!>Ym;v?U`vouvUFI!3)IiYf$xv256c63RtlZ;H z`Vqljud_vi0@?%O+rsN?%go%4f_$Cv7CY$jXPfhQV2-@T=QO8@_Dz-cWATx*Y{UC^ z)t5phNO3^vA!2)0ldfT zR$?JmO?Sxu`&?n!tvqarkY`C;{&FXMo79k9&#Q-NtWj_5)eL3v*cbTH z>ymtH=_4EV8E1MpUTV5-1Zb4NN!g;G2C@r6JKYG?m7fCFP2r^$9k{OaUB>nW?;QiK zu$e8>igcHu)B}0$$23l(G~GjTJC3>WeKA}Pe#kDp^K_FUM-12Gz6jVzE<4m~0IBvpt(xSutWPHwBz8CLeN;BYp5#UFw+?gfYp2u+idqh;|yFK8-SwU z-=&xn5WCWiW6N`O^A+zNycrVuCG_#1Dso-}f#+oocz^1f3d=-`)B9ROEO5LmD4^sM zYB!sp&60I-$Zi73F__gW&0|+PP&4T6DSQ?_H0roU@UfdpLZX(vij)8NcNp)3ls=k_ zLv!V^*8ChAKqB-RBzO7F`aB*?|9T#h-S7>Kz52Qc`z_Vchk}`)r<;O&*Z0&Ir|G)q za?f7rtdywQgQsd(tS33a1@y>SNxJt?^Nb4!j5BHHS}Y8>i7X74d}anJ%;DKdx^U3y zr3qg}Is^i@)9`9qOTR<@X=6*WwtRvq*Ud3l3poN5v6vz6NF~0=-G0CiY#G)TzIQC; z^#TKerQq0mnqM2^P*0TDJ0;H&4aF#G20VwMQ7&8<`-{$PT3~_W_`HVtuncz0g9^@p z-u@U4>jk6r+hTz1=KB$a8W{ew4nmEu1FM zB2N6^965r74#5*w!hJrOOvHVn>ZElg5cr-H9Z?G-CsuE?uPgTCe%nPHjMo?*rooOZJQbvb z?vvYIR!dfJo+}f5HbfWt-Hrmr!%{8Qapez$L6NJB>q%=_=&1P=CjW02RcT1`-Q)Z? z>5-qld=Lyr(28q{JN%zunm+vWy5}&5@j}A%k_;-%Xo{QsPc0RID?S-QxTC|dl-SG@ zr2{RlQX+uS@_j|+CGGmY3nuM=_PbiTRTrB*S5TS%r=zKdV&{RG>DClq4i>v|Q!kq0 zg8#F0(1jmJa4p&W>C1s(^`K^czQLLkJgjCDJ~5Nj9OWMjgln^3g;lh}l0kcGI+h6>6?W*q(t#8IQ_GqlmJ4NJIQg-Qbfm?_waAWX$dd2g z*Q1Jjt@kKMRfDVRif2p5!(&O8o?rzP`V#ObCyVkm*PQxbG|vQynW&8^=U3e=&SH+( z)Kxid^|6`qTx;F@LrA~V_oi@mZM8sUIZ~1w1B_?XeH_~6&nkU^1{LoJg{aHjKS<1r z)U#aNj&Kr_|AfeeJJESN)Y$qUs6ccw47V66ilk7E;~k`j71OZ=? zVcpj$5l!T+zfQL7ydINF?tq-gx>`j5B-40<5x$Qvz)Vu>k2s zxd`Ej=zi;HiR2K7;0WUzDG6>wM^eH&2fss{zSrXOs1s=LX7R@tcW1#Kb#Fb>>n_Aa zdrr8b8noz&z7OSWLFF5LZPi@VVz1d}1mDG#zyGp^gp^N(NY%gDopBUl>-R<897rgQ zs+x-Jv?r;KzgymcjvKl1WqSk`X)||K#cK%{X=6n7AirxSO7gvyEHWplD>Z6+CPd=- zF3z>x@kYob@T`SabBroKgPeYqm1_^)(JN|skw=+?4tnV`>RN7d-GZ< z-%k=o=(eg}@e-P}U}mO}F33J0cAR_}*R$;hn(~{M=#zAN z34ADqT+%vs{>=MemHPyB4mItUv~#KzqScnO8h+Px*V&;4A)tW%PMzp9XpVC#M^z5W zK|&dq%NYh;D{LToZG9E=6&X7m7X$^?4RIo|r`(xcvkjc5i=!<_V77%a z94r2a?&xl$?<`F-lAi6mnA18HRHdRbmF&4Us-P?Kxf7i?Q$VZRvC&KDVf^(4vQ5#H zn!nV-fpZr=8MEuaKHsUsNo?#wHJsns>rOD8xzZr%hxwaYfqtit$a*{njv99rBFpzV6um z%f{4%pMuP8cVY%P9#5+TD;*_lgXZpWeQZY+U*6qd0C)~H&;06|2>yl=M64gS+(|m6 zt^K^uA94SoQnoxw$0d)VzLOIQq}#=#LtQ%U3b35rjYkRGBbTHCF3W^paqNea(PzA% z*A?@VCO~`2%n1RAuBa7e^ulT8Nvt+`FI5IUY|n#Y59@9%%W_r7+t=Sk&Wz5c=pDvP zT5WX;! eC?8NyOhX6uq{j=EfTF=JiSCAkxqkOnXb`6K_<>%ue-Sbd=$Sva(20Z$ zpdT{4)b&`iLoFsghgU8uUAqzQOw_AjHGzBjK!r}qVy&oR`}`lKM_0;gzs=SYf3zSC zW(2v|RTBLgOqFt7_E5zEu{9ph_@b}dmO@Y>4P=iDtTtgF*jmIBhtfJ$?pft-0WA!zr3)Z)J6ee!Pe7O+X1WotVnq(^19XL z9_hmy8?QRW%IItBxst~Ye^`o#q8M+#&zPQ`z?;&2a&*kv9O@XckkvFicZjk+D2zd;*FbP;5DL2Dl zK$_i@nro&-I^Bj@tw?ZKkcvK_WRMR$yb?_O7ZkR&amjm7>ItQzQvtBsGNBC)XtMs7x!9Gu z-i@Y$`EUi-!w#r9l^d<$V$rVmX3Tfv6_y>SdNp9Zq;DgpdOWUIG(S2+DT*4nJwE*% z$wgM!w9XIC*iDhkh377-y5{BL8|Ht+ic)u8cwgO;49v|Pc7lFAz88Ayfy5ss2*A7O zC8j)D?t62+z+^w@>0V6lDcAXyB?#xOpW4!UD$Bm;%uUshZKVu_!+yJb^=DahT2ISN zT3>06ha4~VR##PKy``yM^D@t6XyvkzursOM1X|wy06Ev$=@gOI*ta%Yk_O>Qjem-z z{{)fYVxHrOWssZRQcV^;EP2D^b01HWGC1o5Olw|rfQ9p278TBMJK{Z?u&j{9RZ>Ay z=`3QTx~F@rFKuFvpn+xuAF$Z;t+sWwf0&v%x6X0nMc-|+$#lA%xQfpvfFaAf#5R}Ey%s>=-I3HA%!f|5#La2&Y_e=2*T3|8QYB0N$)w) z7%N2s99{l>+NA_FMavrZg>uBwjg`$pbdDVM(2+zOYpKaw|DfwxP)1n5q zGn&nfKN|ZB8GCbvx3yZ>E&++Ta>9#y?al2fG>fsYm5eD&cN5*UOV^ z+<>2)hUBt>K0V6t=KHsB4u`$_ulH(@MRm!e0_!LJ@~RL;{2*=DWKjau`~K!uEXYkm zpjj7hMX1?&YEn*&tA!-TOCE~GwKRY>b*N3W>@Y@In&O(r-`J@S&C3tpRLN~x&t5Om z*)d#YjKZpUSc9!tO~B-MjN2(W?^Chdzp%7fn~ao1PL@7ZnH*%caM;pCmZxeow$^I< zTtQmNWNT&Kr4p04AKqawWL!|pRb=M;PAUXlBUPQ2*x?g`%5~xwWmWZn` zbAQ+O0k-QN^;AB=ID#pDB7DIa$|t54-;LdZ1mbUFH;?z!5AC&)&9(KLkFCPA+nQS| zmR)fk9%J)P!o*KU(z=$~4^)@?cK#g+GRNBguvV*s+?!H~-If;&1$7t2g&wkA+DFfu zhkpfm*IXPRV8oAbM;!OO0XEL0uo}a~e=qEa5qHwWIohx#@~4qFKZxd+dYU#xX*KpF z(nuykDiOz)4gcf}VHU^=J;E8MssW%ETbnv!#~oz68R{IDrg8oC8caO~56dN669V_G z)I_&s4@*H^I!fIb!db;M(o$@bu&LJh=lbRTZ_Ar<*x0g{^X~E|z)tP7s173;AMcgK zg`JkQ6d!TKiL@?}1ao*~vyMX*(XxT>kG{!Gbnc2OFtBI$-1P1;qFp)3{3Hp>{mD{m zdUX6|9Ny38@S~7j5vN(Q~Meokrym{RC$=1x#Z!(yCp{y zrvFNC$igY4PPh*|`(WoBpVPT(avs_d7ukg|nx_AGU|0>R9pjhvBMi!F=qK=SX=Hz| zbCYhQRi;#RkU3X?2^6s1&Ik@42!A+7qO&1&H_F(ZveL(~dbeuWIKWo14%@6gUElEB zqpH$0i>Glls+q&=c4!mPSWz@*pzgVwQ${EaB-L*>XAStR)_GnsoHJpl&X4#v5^-dcJAt{fad}Mb*W6Q{)zPs#C7f22;8o0ceSL$Y~&r}a!e@V$|-%Ozjo!g=>EI_hH|nJYc0fxI5{JC zAKj(b1AdYfM3BVI=INVntK-3c^#a47+e6}h9`@7=nx>E~vFidZc3TP&oRYt|Nl8fN zZc=YWVh#yAjXY-*?-Jl8@R=O_?wUPTC<|S_K*A{8hB?MW*?sy{E|pQWs_S8; z!BC4uRX0u4o9_c9Ili9B&yzjWkGk@lcGgn>D1Y#y{g7%gs*ZH>DSlre*0MdehRFAG1Ty-xI3gTg=<&;!epC#Q*5bork}cpRq`ReZT4Hb0Kw6oQlhN)zU>e$n7=PmjAm-Hwdjo@U-ySe)SN+8spjhpwR({aYFdAip!?G3)zm{lb}^6dm(aoIGM z>bPgJ^%E)2>tbD-4Q=4k#p3Ic$%?kP%7b!7G$M)@s@6OlwnCXk%yhj~$qbv0R;fs? z{B0n0*`M42xiOkHdz)I)Q!qzb^&76dA7?_w;8`Aav=a?C=P^3?pzjjv4)8NT1rkYb zPeWcjC?vvAqSduSNUW#Lje*s0#)0~;mePVd5~8;BDqH?j%DC65dp9$h%}+4Oo+4YB=^ zlCI^}H^s)ewz`HER;hMXA=*us$sl8k%i$bK9sYiFnRI&x z&-AaG&@JcTCi=mxI2x%;ba5s_NOyvm64z@~WILms)|l;6wxo}@?{L0Npts7;dr?35_} zTDl}mxj40dDOt`Gn9XI%Q&Wp!Y&nD}ciN0 z%2T?c59RVc-cGT*h?lkWysxpzi9>-xI2EFrGY`Az2f90}hoP<*a+4VK7Mf}v^>?;Z z3MJ!A=8$5n5hgvaq%ILnugTVixqYPo&VxSJjJ*m>zx(~iAG-%-W5LlVQ_Lv2jQLtK zs>E-HO1cF2FoT3~z8$1d4n;f`+RXUoB~X5zIWMb*HxSnFI$D7D5ffm^t&`w=!-ZKF{OTRNGK><)VPcCZRkm4QBl_hTDi@8 zyc1sME_+5v*xNmdvaat~*P?t~X)C#Y7jhIxgYNcMS05e80?9BS(!d3FOk-|pqU*Y* zmY}YsxR7PT=DV6G66el^CQmwFQ&psByQiujIrpV#Kixt7jd)yW+iTELNU#}kMDp^9 zw#o=oa}mR{JFXCP)RX_3-=__%IeiN)K+`HO2m$2=OO743+Lu?p7ceC{`5*32gKagJ zV&UagU1X$KxMz-(ejN4Tr7=>psl+Ck}e@W`QouYDk8? z@bZ~wQZPAxbe1#?-M5CPf8oEii6s%8%#sOk{m}&Bx%v0(nU1|5E71jNNLi?`Ua1&8 z??(Mr5`RuU3Up7+)b7Tt^1d#hYrMZ!LjUdM%;BSH^yQ71D2s%Z>866;^e*bhdtE{W z{uckQd-dxw6SV{tk(|bf1G9CQ6Y=u#yU0v`Rw1}@qcgYQko<+nX5<5!SCJw{Jb6dN z2fk`etb&%SC4&>t4S@DRg*IjPqqB&csFeS9GuH|0$?fR8r|qNK@g4hhLGeG&`n9nw zwhLFopVq586nsF4zx45EJEmTl-3?`m({{ z-blrH`;?g1Zflre(@S{0qczEgh{*?91{^ePP4-?ZxHThW9m9j#maPJ*ZuWN^RQ>WdfmzC zdA~k08;-cr78#?>1-zk79aYgbl8E2cnz>+rOz40wpDh803Gw#n;;OH_^=sG@dcQg% zGhq>}6_VYS@bGv~;9aV#`?{t(4v4+cG7H{VrzRh;j_j$Ubsz9?a)50sYjtauwzf+o zby?CcubC4^>2FG(9>%B;B)0dAhqvpbbcwWnD2R%3FFLvnWXD!$b<`>-u#TkUe&It8 z3On=WmO1Nmyr$`FF14II0gU!Iwzu;f37B<~dSI`H^{?(S$2eQ01nu-pw@}6#)ph?Y zN{s;49X)w<{i%!Y>&d=2pbAcxslYmBbCvO*^Cu(xK{9*9+#f2l+Tu_`nu6@tAwq83|R+0nV zH|*`=9~`P}mP#1;f?`0n*IOvYVJU;DtRBGneIO19v%hQAD5~NIA~gVM84oJ369iF;~d{!G)K5LnSL(@k#1^UfL=T0b5s>Pyq?^VcKKO?#n9g+Ip{V_)%C8b&ccQtA6L5kqzMZ z2kpttC(PyHb-b+x`mFx&&kZ$G){jD-jY@kh&^0L@it_Raj2zARUMn-D|yaOh{p2lVH@SW zPaFy7`8KU$Al1L>fy$LKo`L$o?_GfH)4eMOs8vc=ttVYc^X{a*J(2UUTbW`{`;XQ3 z&1$&!jhoG&=O2cf$J-2fyj)@->>lo>GbQq+lYS+0h4HsHLbdyk9dWZC^Z{slJY!!J7iTPtF0x zS4uzBD&2QR*Miy}bnD(S$Ku=3E_#YqPYhVrtT#qn1*Xt)^A-X4IrvEX9b5JYM@Y1=4`zS~QVynN@^c8gmiMuvQ^Ia9-o^LzsJAn@i%AM5OTuVwgB^#w=K;RQ5>p7qA|quVxB_;Mk+|w@jv9Y}Rxh`HFE9;UgUJ{-jJ% zZS!$Xd9S@!YEk+J#lq{`m1sLnu{xSfe|I@W0=--6UrX%7?;_ z*jE`kjVqqDm8xZ-3EL)zhvO<^u?#&wDJQ5gnSot zDr)wYK2dL2YfupP+~YHF^PE%%e%(>E=7iNR5gq02w|R2~oN}+ws*?SR8g;t|^GX@b zHXvTUxlP>WA!`nHrI-Jn?#=*#lH}Mct;&y9yF~ty320CbTGvnY?Zl%tVJHFw%+)wx|Z{e!jRLQd)BFX&4>A&Xkyqm zICQPB_-|44iC)8211ViX%+}`tsq-ysLo4K(Tua4=&S(+3#9gqI0#V)P3?s~rjVC3X zE)?3o18P!ed^E1)Ldb;I?Gj@Px2Bm?8>m+z0)3Z(LF7ou)$UAGh`4oQsNz?vmMymg zqhRFKi@3c|f}~M4mAg!5GSwPqJB!6yn0p^@p_<-)-yn5esEp|kaK<&A^BtZW3}%?0 zINDBDCyWV;_0D4vi7`kVvHYkH@S&XnbPtwB7`NYz_?*VgOneYG(o3PTl}9teif4YI z`O;s&Seeq0RKLEHl08%M>cCsL&#+SiH|DCA=bGaCah?5qlOV`~1JhGgFG6R^ET}34 z7dU^k4Ru{v%(;CgpY39nQO?-~^XBgMHSvSvo!YPLi>|GOVC=8jjTJLL5`*dBrLhEe zMD9H%hqxImdm1>lzW+m279;Ko@{Yih;xGY5exo9hNd-^@B~k}}IP8XjX{Lm5_u>Gl zZ1r(0{Ix|+R?nO?<{vBZ0v)s<44MLL$L&l*i_H|EZ(~i=Bm6^C(IHHH)^V`AVc~?w z?tkph`;{K?0%he9^hsYtv1!HlHbZ@V3BR%??~1+<)=flVKiRWs%d{I7Wn_L7Xek0T z>5$z~PlBd=j05bCu@zGK!9Q}yc=$nOsb5F^y|G9mV>V2Rh0cG4Uy5}+x=Fm+dt~6c zbBl3sqr2PwfPBk`^SrioF~OD6*7x4V$Q>jGIlKI0Sa8I$j26Oy?uZJgFBZ4p^KSdD z@`yEDxL{{d!l_W{I{(rSq7eEb#?}eE`XDpg62Ekc$)r(8{R3Sk*{A;c$BH-#Q{V3S zxtKyYOy_5);IKpm#t9$X!gj{b8kZ!){g^+B*B=D?2@H9*p)gmeV;8G7i`z&v>0fzk-=HDji4Ufa&8a9uz|Za7+#Ak>J;0 z55I8g6}x*FeK`9fLHjqbI45>pc@IbqQvUABLW;e0EH$T`(jlq$=R+6kAEqFp3zB&? zpNot9!)B#bp=X41!(&x?s21zA2eDA9rHGZ9*dc3k_@S_S&`eGoDyzQ$^Sg38m(ggcEBw znRq>on00HQCB~ zo}chn!bp}rE;`m97ts2tpzw{Hu1N+(Wvf3HI*O6U<)j>16d{(7_*bu77ggcDA zVoh~pQN9s&qYGp)x-_Ecp|!KrT3trfTjZSiX#Q_QT6~;A2@t;>pD36+J}F2~+-#lF zw{JT#%NssISfq8^Ou zuV(xH$z_s|4%tS@t`1tV&wxMo3D&1d7g8AVc!X=VVTuH1!f4M?VAE6CNe{s#Bkq~# z3)ScObs_O>W`OzbL+l?#l`D<$tV&`Z%6O`_ABq`Q__e5Zje}%q*VvUk(3P_~)ZEH= zWU?MGg5ka(VI)cBXxEyy9VO*y3|`O#fcLzU%v6DC!;I&Gb*X^bA-gr)a*Ry>iT9VJ z>-TcCvpffwJHUJG`a5}0tLeASH7f!!jtUr8o(qJ48udQc_E*y9aGTn!;6g+ zo>R@QbZg)pm6Gj5>Tws^NW)qqW+8tv3YSn$esN-nd}b&xQ`pG7ve}2>MbWNegR!ux z6zhbEf(^GjNJ(G%Cfkv0Me8^#aOz1{8|&>9?itzrKzsXFzWGmfeAPVTYG4a{QuO6+ zd3}2GZ=hAR^$Cs}TaFUGtTevFH_ zs+~9q8VpgmYi&1rkGwD4Wa@$IOo({JOB7!-N?`J5q|kIo>5Y#in*RNEQ{Ig8B?5mW zpB!3oBji}^dYdxKVa=_;KNb{6!G83!Y>T*fu?1QSIb2X}U84Qts%u#E_EHH{?{Z16 z@p8Tz#oXq8_L!k4%{55${cAw}Gr!d&dFQgUer%Bq52ArMdSq4j zr$~S>q7$`AP5=f?OTocp+7m@+x{LN4Jt}y>s%oew%G;DYL=vCD;nB$VBLy=DCU9dG z!HSH8D?;)KG+JTwd1<~r1VUTH**!ay-2nXdsqEv#Qg1_nis~oBYnJo17QwJh`LLvrt zJ5H8=x2tj2MA&)%N(wU_{If+~pVDDj^3^hnFm}Z5jx<}Lll@lk;kR^?!&84I6}pxw z752u6UnBxS+aM>(6CYewGRvmD-0)Ryw!U8BEwPn9ioF0PVj}|4Ir6jC=wjCUdGB}= zF6?*@eat#nIT3hxy(yF^r1)lKDPp=<7bD6+fYp*Qx}z=ZGw*?Hddi&{*_kLwe>~wg z3V*&54EM)K=58qhHW`1b!H-iv{u z$xX`=zYBWr{r%jqJfz+}_0u80kKjP&3I||#kYe)ca%wf%Gdp3su{t9M7idXws9=7> z`3g18_~Ekj%O`6(3a#imxPtW_gRMO4Q^&X~rgG#UrBu(20kD2z!$L(5Oob*)hPS$w zNHQ=B8PNB2B@+zuHV>JsR3&%Q8Bp#X6JFQp`)3e>ZZ`pv{Y87+NGq%*Cf%`U}KaQL3 z&%ubjhiXVwz#VGp$i8F0=C{k*jRSxYgo$2Yan)V_;Bvz-#h~~bY6qeIKyrvTMf%Ze z^^+xg?r&7n;!PW0$U5cEDz%>4K&g*EV&_a@*#cjYIWT!G6-NlC3ylZ@5!poqdwl)v zEaL7g2D#D1rBcj;0~0o|4UU^@+snTsnxX{|Jk!W5n4Z${Wd%Bx;E7PmJ z@9)?bK4S9<=eg6z>p&V!e(v-aECWYZ$*Qj(w7XR3K!~U_?C4w}L1?#qz0o}L%O!;R z=Ti`b^&0MMcc0=DOjhKrbGkr6)Agof!xt&+_~qDGwid1T9wxg3liMjX{}}~!tis(&+Cc8^b5oj=#!KDzZ+mEDBS;h^uG&9k@y%<{CEp}2AI9C@c|&5 z_#%B?7+kskU0&%6!i31jV<}R{tAQ9`vJ~F$s=*X0#xH>QN&Y8X?>#JV2>*YZ+)D9X z%J}j1`k3)Q3_ilxe~-5}VEo^Nh|e^@hlx{(Z!{2wAyA9IF%W{8(}?FZq(->b{x6#U E2SE{?AOHXW diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index ee07a923e..e4de5bfb1 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -11153,6 +11153,141 @@ Office.DisplayedSubject#setAsync:member(2): console.log("Temporarily set the content displayed in the subject field."); }); +Office.DragAndDropEventArgs:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DragoverEventData:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DropEventData:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DroppedItems:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DroppedItemDetails:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } Office.EnhancedLocation#addAsync:member(1): - >- // Link to full sample: diff --git a/view-prod/outlook.json b/view-prod/outlook.json index d9564fc71..9b861d008 100644 --- a/view-prod/outlook.json +++ b/view-prod/outlook.json @@ -47,6 +47,7 @@ "outlook-mime-headers-get-internet-headers-message-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml", "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml", + "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml", "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml", "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml", "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml", diff --git a/view/outlook.json b/view/outlook.json index bdd41f2b7..7d57d08cb 100644 --- a/view/outlook.json +++ b/view/outlook.json @@ -47,6 +47,7 @@ "outlook-mime-headers-get-internet-headers-message-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml", "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/75-regex-matches/contextual.yaml", + "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/80-events/drag-drop-item.yaml", "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml", "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml", "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml", From 6e50798c0aa40ca4ed0776f0f01aad0f6f54ef52 Mon Sep 17 00:00:00 2001 From: Alison McKay Date: Thu, 2 Oct 2025 12:27:49 -0700 Subject: [PATCH 53/71] [Excel] Map existing snippets to ref docs (#1000) * [Excel] Map existing snippets to ref docs * Map CardLayoutSection to different snippet * Map EntityPropertyType and EntityViewLayouts to shorter snippet * Add explicit types as comments --- .../data-types-entity-attribution.yaml | 8 +- snippet-extractor-metadata/excel.xlsx | Bin 29305 -> 29716 bytes snippet-extractor-output/snippets.yaml | 346 ++++++++++++++++++ 3 files changed, 350 insertions(+), 4 deletions(-) diff --git a/samples/excel/20-data-types/data-types-entity-attribution.yaml b/samples/excel/20-data-types/data-types-entity-attribution.yaml index 93ceb5e26..984bb7ab7 100644 --- a/samples/excel/20-data-types/data-types-entity-attribution.yaml +++ b/samples/excel/20-data-types/data-types-entity-attribution.yaml @@ -50,7 +50,7 @@ script: const entity: Excel.EntityCellValue = { type: Excel.CellValueType.entity, text: productName, - properties: { + properties: { /* Excel.EntityPropertyType */ "Product ID": { type: Excel.CellValueType.string, basicValue: productID.toString() || "" @@ -70,10 +70,10 @@ script: numberFormat: "$* #,##0.00" } }, - layouts: { - card: { + layouts: { /* Excel.EntityViewLayouts */ + card: { /* Excel.EntityCardLayout */ title: { property: "Product Name" }, - sections: [ + sections: [ /* Excel.CardLayoutSection */ { layout: "List", properties: ["Product ID"] diff --git a/snippet-extractor-metadata/excel.xlsx b/snippet-extractor-metadata/excel.xlsx index ab89b7460a3921f4fdf8d7f326b0467ec25cc7ac..60920aee9bfe58d34f918f9d4850ad3d39f0759d 100644 GIT binary patch delta 20507 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 eVRi$2gH`bgJ%HL^6+9- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-attribution.yaml + + + function makeProductEntity(productID: number, productName: string, product?: + any) { + const entity: Excel.EntityCellValue = { + type: Excel.CellValueType.entity, + text: productName, + properties: { /* Excel.EntityPropertyType */ + "Product ID": { + type: Excel.CellValueType.string, + basicValue: productID.toString() || "" + }, + "Product Name": { + type: Excel.CellValueType.string, + basicValue: productName || "" + }, + "Quantity Per Unit": { + type: Excel.CellValueType.string, + basicValue: product.quantityPerUnit || "" + }, + // Add Unit Price as a formatted number. + "Unit Price": { + type: Excel.CellValueType.formattedNumber, + basicValue: product.unitPrice, + numberFormat: "$* #,##0.00" + } + }, + layouts: { /* Excel.EntityViewLayouts */ + card: { /* Excel.EntityCardLayout */ + title: { property: "Product Name" }, + sections: [ /* Excel.CardLayoutSection */ + { + layout: "List", + properties: ["Product ID"] + }, + { + layout: "List", + title: "Quantity and price", + collapsible: true, + collapsed: false, + properties: ["Quantity Per Unit", "Unit Price"] + } + ] + } + }, + provider: { + description: product.providerName, // Name of the data provider. Displays as a tooltip when hovering over the logo. Also displays as a fallback if the source address for the image is broken. + logoSourceAddress: product.sourceAddress, // Source URL of the logo to display. + logoTargetAddress: product.targetAddress // Destination URL that the logo navigates to when clicked. + } + }; + + return entity; + } +Excel.CellBorder:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/42-range/cell-properties.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getActiveWorksheet(); + + // Creating the SettableCellProperties objects to use for the range. + // In your add-in, these should be created once, outside the function. + const topHeaderProps: Excel.SettableCellProperties = { + // The style property takes a string matching the name of an Excel style. + // Built-in style names are listed in the `BuiltInStyle` enum. + // Note that a style will overwrite any formatting, + // so do not use the format property with the style property. + style: "Heading1" + }; + + const headerProps: Excel.SettableCellProperties = { + // Any subproperties of format that are not set will not be changed when these cell properties are set. + format: { + fill: { + color: "Blue" + }, + font: { + color: "White", + bold: true + } + } + }; + + const nonApplicableProps: Excel.SettableCellProperties = { + format: { + fill: { + pattern: Excel.FillPattern.gray25 + }, + font: { + color: "Gray", + italic: true + } + } + }; + + const matchupScoreProps: Excel.SettableCellProperties = { + format: { + borders: { + bottom: { + style: Excel.BorderLineStyle.continuous + }, + left: { + style: Excel.BorderLineStyle.continuous + }, + right: { + style: Excel.BorderLineStyle.continuous + }, + top: { + style: Excel.BorderLineStyle.continuous + } + } + } + }; + + const range = sheet.getRange("A1:E5"); + + // You can use empty JSON objects to avoid changing a cell's properties. + range.setCellProperties([ + [topHeaderProps, {}, {}, {}, {}], + [{}, {}, headerProps, headerProps, headerProps], + [{}, headerProps, nonApplicableProps, matchupScoreProps, matchupScoreProps], + [{}, headerProps, matchupScoreProps, nonApplicableProps, matchupScoreProps], + [{}, headerProps, matchupScoreProps, matchupScoreProps, nonApplicableProps] + ]); + + sheet.getUsedRange().format.autofitColumns(); + await context.sync(); + }); Excel.CellControl:type: - >- // Link to full sample: @@ -3490,6 +3625,43 @@ Excel.DataPivotHierarchy#name:member: dataHierarchies.items[0].name = "Farm Sales"; dataHierarchies.items[1].name = "Wholesale"; + await context.sync(); + }); +Excel.DataValidationErrorAlert:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/22-data-validation/data-validation.yaml + + + await Excel.run(async (context) => { + const sheet = context.workbook.worksheets.getItem("Decision"); + const rankingRange = sheet.tables.getItem("NameOptionsTable").columns.getItem("Ranking").getDataBodyRange(); + + // When you are developing, it is a good practice to + // clear the dataValidation object with each run of your code. + rankingRange.dataValidation.clear(); + + let greaterThanZeroRule = { + wholeNumber: { + formula1: 0, + operator: Excel.DataValidationOperator.greaterThan + } + }; + rankingRange.dataValidation.rule = greaterThanZeroRule; + + rankingRange.dataValidation.prompt = { + message: "Please enter a positive number.", + showPrompt: true, + title: "Positive numbers only." + }; + + rankingRange.dataValidation.errorAlert = { + message: "Sorry, only positive numbers are allowed", + showAlert: true, + style: "Stop", + title: "Negative Number Entered" + }; + await context.sync(); }); Excel.DataValidation#errorAlert:member: @@ -3835,6 +4007,64 @@ Excel.DynamicFilterCriteria:enum: await context.sync(); }); +Excel.EntityCardLayout:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-attribution.yaml + + + function makeProductEntity(productID: number, productName: string, product?: + any) { + const entity: Excel.EntityCellValue = { + type: Excel.CellValueType.entity, + text: productName, + properties: { /* Excel.EntityPropertyType */ + "Product ID": { + type: Excel.CellValueType.string, + basicValue: productID.toString() || "" + }, + "Product Name": { + type: Excel.CellValueType.string, + basicValue: productName || "" + }, + "Quantity Per Unit": { + type: Excel.CellValueType.string, + basicValue: product.quantityPerUnit || "" + }, + // Add Unit Price as a formatted number. + "Unit Price": { + type: Excel.CellValueType.formattedNumber, + basicValue: product.unitPrice, + numberFormat: "$* #,##0.00" + } + }, + layouts: { /* Excel.EntityViewLayouts */ + card: { /* Excel.EntityCardLayout */ + title: { property: "Product Name" }, + sections: [ /* Excel.CardLayoutSection */ + { + layout: "List", + properties: ["Product ID"] + }, + { + layout: "List", + title: "Quantity and price", + collapsible: true, + collapsed: false, + properties: ["Quantity Per Unit", "Unit Price"] + } + ] + } + }, + provider: { + description: product.providerName, // Name of the data provider. Displays as a tooltip when hovering over the logo. Also displays as a fallback if the source address for the image is broken. + logoSourceAddress: product.sourceAddress, // Source URL of the logo to display. + logoTargetAddress: product.targetAddress // Destination URL that the logo navigates to when clicked. + } + }; + + return entity; + } Excel.EntityCompactLayoutIcons:enum: - >- // Link to full sample: @@ -3864,6 +4094,122 @@ Excel.EntityCompactLayoutIcons:enum: }); return entities; } +Excel.EntityPropertyType:type: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-attribution.yaml + + + function makeProductEntity(productID: number, productName: string, product?: + any) { + const entity: Excel.EntityCellValue = { + type: Excel.CellValueType.entity, + text: productName, + properties: { /* Excel.EntityPropertyType */ + "Product ID": { + type: Excel.CellValueType.string, + basicValue: productID.toString() || "" + }, + "Product Name": { + type: Excel.CellValueType.string, + basicValue: productName || "" + }, + "Quantity Per Unit": { + type: Excel.CellValueType.string, + basicValue: product.quantityPerUnit || "" + }, + // Add Unit Price as a formatted number. + "Unit Price": { + type: Excel.CellValueType.formattedNumber, + basicValue: product.unitPrice, + numberFormat: "$* #,##0.00" + } + }, + layouts: { /* Excel.EntityViewLayouts */ + card: { /* Excel.EntityCardLayout */ + title: { property: "Product Name" }, + sections: [ /* Excel.CardLayoutSection */ + { + layout: "List", + properties: ["Product ID"] + }, + { + layout: "List", + title: "Quantity and price", + collapsible: true, + collapsed: false, + properties: ["Quantity Per Unit", "Unit Price"] + } + ] + } + }, + provider: { + description: product.providerName, // Name of the data provider. Displays as a tooltip when hovering over the logo. Also displays as a fallback if the source address for the image is broken. + logoSourceAddress: product.sourceAddress, // Source URL of the logo to display. + logoTargetAddress: product.targetAddress // Destination URL that the logo navigates to when clicked. + } + }; + + return entity; + } +Excel.EntityViewLayouts:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/20-data-types/data-types-entity-attribution.yaml + + + function makeProductEntity(productID: number, productName: string, product?: + any) { + const entity: Excel.EntityCellValue = { + type: Excel.CellValueType.entity, + text: productName, + properties: { /* Excel.EntityPropertyType */ + "Product ID": { + type: Excel.CellValueType.string, + basicValue: productID.toString() || "" + }, + "Product Name": { + type: Excel.CellValueType.string, + basicValue: productName || "" + }, + "Quantity Per Unit": { + type: Excel.CellValueType.string, + basicValue: product.quantityPerUnit || "" + }, + // Add Unit Price as a formatted number. + "Unit Price": { + type: Excel.CellValueType.formattedNumber, + basicValue: product.unitPrice, + numberFormat: "$* #,##0.00" + } + }, + layouts: { /* Excel.EntityViewLayouts */ + card: { /* Excel.EntityCardLayout */ + title: { property: "Product Name" }, + sections: [ /* Excel.CardLayoutSection */ + { + layout: "List", + properties: ["Product ID"] + }, + { + layout: "List", + title: "Quantity and price", + collapsible: true, + collapsed: false, + properties: ["Quantity Per Unit", "Unit Price"] + } + ] + } + }, + provider: { + description: product.providerName, // Name of the data provider. Displays as a tooltip when hovering over the logo. Also displays as a fallback if the source address for the image is broken. + logoSourceAddress: product.sourceAddress, // Source URL of the logo to display. + logoTargetAddress: product.targetAddress // Destination URL that the logo navigates to when clicked. + } + }; + + return entity; + } Excel.ErrorCellValue:type: - >- // Link to full sample: From f20c2c8ee5757f5238ca3c88483fa5da5a526c97 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 8 Oct 2025 16:56:29 -0700 Subject: [PATCH 54/71] [Word] (windows, panes) Add how to access collections (#1003) --- samples/word/35-ranges/get-pages.yaml | 59 +++++++++++++++---- snippet-extractor-metadata/word.xlsx | Bin 28680 -> 28768 bytes snippet-extractor-output/snippets.yaml | 77 ++++++++++++++++++------- 3 files changed, 104 insertions(+), 32 deletions(-) diff --git a/samples/word/35-ranges/get-pages.yaml b/samples/word/35-ranges/get-pages.yaml index ac6000b3d..c4b6584a3 100644 --- a/samples/word/35-ranges/get-pages.yaml +++ b/samples/word/35-ranges/get-pages.yaml @@ -9,9 +9,15 @@ api_set: script: content: | document.getElementById("get-pages-selected-range").addEventListener("click", () => tryCatch(getPagesOfSelectedRange)); - document.getElementById("get-pages-third-paragraph").addEventListener("click", () => tryCatch(getPagesOfThirdParagraph)); - document.getElementById("get-pages-enclosing-viewport").addEventListener("click", () => tryCatch(getPagesEnclosingViewport)); + document + .getElementById("get-pages-third-paragraph") + .addEventListener("click", () => tryCatch(getPagesOfThirdParagraph)); + document + .getElementById("get-pages-enclosing-viewport") + .addEventListener("click", () => tryCatch(getPagesEnclosingViewport)); document.getElementById("get-all-pages").addEventListener("click", () => tryCatch(getAllPages)); + document.getElementById("get-all-panes").addEventListener("click", () => tryCatch(getAllPanes)); + document.getElementById("get-all-windows").addEventListener("click", () => tryCatch(getAllWindows)); document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function getPagesOfSelectedRange() { @@ -27,11 +33,11 @@ script: const pagesText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const range = page.getRange(); - range.load('text'); + range.load("text"); pagesText.push(range); } @@ -63,11 +69,11 @@ script: const pagesText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const range = page.getRange(); - range.load('text'); + range.load("text"); pagesText.push(range); } @@ -106,7 +112,7 @@ script: const pagesIndexes = []; for (let i = 0; i < pageCount; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); } @@ -143,15 +149,15 @@ script: const pagesFirstParagraphText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const paragraphs = page.getRange().paragraphs; - paragraphs.load('items/length'); + paragraphs.load("items/length"); pagesNumberOfParagraphs.push(paragraphs); const firstParagraph = paragraphs.getFirst(); - firstParagraph.load('text'); + firstParagraph.load("text"); pagesFirstParagraphText.push(firstParagraph); } @@ -165,6 +171,33 @@ script: }); } + async function getAllPanes() { + await Word.run(async (context) => { + // Gets all the panes in the active document window. + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load("panes/items/length"); + + await context.sync(); + + const panes: Word.PaneCollection = activeWindow.panes; + console.log(`Number of panes in the current document window: ${panes.items.length}`); + }); + } + + async function getAllWindows() { + await Word.run(async (context) => { + // Gets the document windows. + const windows: Word.WindowCollection = context.document.windows; + windows.load("windows/items/length"); + + await context.sync(); + + console.log(`Number of windows for this document: ${windows.items.length}`); + }); + } + async function setup() { await Word.run(async (context) => { const body: Word.Body = context.document.body; @@ -226,6 +259,12 @@ template: + +
      +

      Drag and drop messages and file attachments into the add-in task pane.

      +

      To learn more about the drag-and-drop feature, see Drag and drop messages and + attachments into the task pane of an Outlook add-in.

      +

      Required mode: Compose or Read

      +

      Supported Outlook clients: Outlook on the web and the new Outlook on Windows

      +
      language: html style: diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index a3ceb2436882c3cfa68823042b63a7257a648485..129c0726370e26a4531d7a84fdeb4900947e4371 100644 GIT binary patch delta 19498 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%0D5%e9LRzwi&yj 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 KjI7;%d;bEEQ!V8H delta 19425 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 A2LJ#7 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 33f3fdacd..d95f50678 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -23972,15 +23972,15 @@ Word.Document#activeWindow:member: const pagesFirstParagraphText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const paragraphs = page.getRange().paragraphs; - paragraphs.load('items/length'); + paragraphs.load("items/length"); pagesNumberOfParagraphs.push(paragraphs); const firstParagraph = paragraphs.getFirst(); - firstParagraph.load('text'); + firstParagraph.load("text"); pagesFirstParagraphText.push(firstParagraph); } @@ -25975,11 +25975,11 @@ Word.Page:class: const pagesText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const range = page.getRange(); - range.load('text'); + range.load("text"); pagesText.push(range); } @@ -26008,11 +26008,11 @@ Word.Page#getRange:member(1): const pagesText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const range = page.getRange(); - range.load('text'); + range.load("text"); pagesText.push(range); } @@ -26047,11 +26047,11 @@ Word.Page#index:member: const pagesText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const range = page.getRange(); - range.load('text'); + range.load("text"); pagesText.push(range); } @@ -26080,11 +26080,11 @@ Word.PageCollection:class: const pagesText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const range = page.getRange(); - range.load('text'); + range.load("text"); pagesText.push(range); } @@ -26125,15 +26125,15 @@ Word.Pane:class: const pagesFirstParagraphText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const paragraphs = page.getRange().paragraphs; - paragraphs.load('items/length'); + paragraphs.load("items/length"); pagesNumberOfParagraphs.push(paragraphs); const firstParagraph = paragraphs.getFirst(); - firstParagraph.load('text'); + firstParagraph.load("text"); pagesFirstParagraphText.push(firstParagraph); } @@ -26175,15 +26175,15 @@ Word.Pane#pages:member: const pagesFirstParagraphText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const paragraphs = page.getRange().paragraphs; - paragraphs.load('items/length'); + paragraphs.load("items/length"); pagesNumberOfParagraphs.push(paragraphs); const firstParagraph = paragraphs.getFirst(); - firstParagraph.load('text'); + firstParagraph.load("text"); pagesFirstParagraphText.push(firstParagraph); } @@ -26226,7 +26226,7 @@ Word.Pane#pagesEnclosingViewport:member: const pagesIndexes = []; for (let i = 0; i < pageCount; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); } @@ -26236,6 +26236,24 @@ Word.Pane#pagesEnclosingViewport:member: console.log(`Page index: ${pagesIndexes[i].index}`); } }); +Word.PaneCollection:class: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets all the panes in the active document window. + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load("panes/items/length"); + + await context.sync(); + + const panes: Word.PaneCollection = activeWindow.panes; + console.log(`Number of panes in the current document window: ${panes.items.length}`); + }); Word.Paragraph:class: - >- // Link to full sample: @@ -28985,15 +29003,15 @@ Word.Window:class: const pagesFirstParagraphText = []; for (let i = 0; i < pages.items.length; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); const paragraphs = page.getRange().paragraphs; - paragraphs.load('items/length'); + paragraphs.load("items/length"); pagesNumberOfParagraphs.push(paragraphs); const firstParagraph = paragraphs.getFirst(); - firstParagraph.load('text'); + firstParagraph.load("text"); pagesFirstParagraphText.push(firstParagraph); } @@ -29036,7 +29054,7 @@ Word.Window#activePane:member: const pagesIndexes = []; for (let i = 0; i < pageCount; i++) { const page = pages.items[i]; - page.load('index'); + page.load("index"); pagesIndexes.push(page); } @@ -29046,3 +29064,18 @@ Word.Window#activePane:member: console.log(`Page index: ${pagesIndexes[i].index}`); } }); +Word.WindowCollection:class: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the document windows. + const windows: Word.WindowCollection = context.document.windows; + windows.load("windows/items/length"); + + await context.sync(); + + console.log(`Number of windows for this document: ${windows.items.length}`); + }); From db645c7d7098eb38ca468b7a289772c43911365e Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 10 Oct 2025 07:41:27 -0700 Subject: [PATCH 55/71] [Word] (Windows, panes) Map to properties (#1004) --- snippet-extractor-metadata/word.xlsx | Bin 28768 -> 28813 bytes snippet-extractor-output/snippets.yaml | 33 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 129c0726370e26a4531d7a84fdeb4900947e4371..d6ce531b43aa2f2996e5f69b8f255e20493024d5 100644 GIT binary patch delta 19908 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ƼTBYx)2FW`so=DqI_ba)d8bsSgqc-&@Hv5h1SILK$9rDAi$%MP)wv#x__(fo+C>rhOHM>qIC2&xNzn?5OdOgL~JP~L^$xaAXeQkBG z7rkbr(ao*A1teAM7Q_Dy-_xdF>{r;|HH&__N{$9n2YPw(Unn2;Iro zay1D{0V?q%jHoo1=0;3fQTJm*I)f^LG^s+mL@ek0Du2mSjm}ccjL~eN_Y%KRFE=3`uz1!|13JOJEr(5(w4D8wA*h-ECV-n3d$A91WK9k)y{7r)NC%7&3Q znG(A9sGzmyteB!BZ$E=D>My@U(f)z%#MjF9GPQ84v}`f2EvPU^>tfdJXk=nYC17~P z`qi`nko^6}DO^vt=6;GHyDHzU+%M_|fFQC5VG9QTDB)&RGazG$+;jNbP?o1x`DVU{ zn2eu`)CW3_8s+I4f@X=|N+5|;g@ z_7+m=Bd1e5snL6^w$Z~+{#fTdcDtQ&GQL=(R}^$n*ctijnzA_CIs^@UUfD5JM+^8u zjt)!gO#HL#P)(>5&n7MjYRS2l#>j=`5c-TvS4PWK5h)?hwY^4yi3kM?Ce`|cEg1d8 zUnkc!Rh|6cRF(R*Ka)IAZyZfGKgK`ZIrNOlbxw?U;!GrlW3@ZhdzUnM#(v7?W+32B zSg-TSMX5t8#&`|I##n3tiNc+XYZ;GJq0EV|H%Y1;y@*kcfnX)@;m%+GO1y~Ll!8e& zw>U;;aC5f8K$zLLFb1vURQr#D&c-Cvk}T@D=8cr(O^YI481LMSz}e1gymj{v%LiEg z_>YH!8R<($h1LsvN^ytfoNIzjVJ?^#T@^D+-dR5bD^ckP#f^vW<>lWzYm!#H#2)^f zdon_oskOY>K0K~Ru_DqRRDHYk*xXN2^#Wg4F?EyB1auE14sE0@uri&A5$W+|Q{R%f zm>q);0kwc{1W(P8&(A;Q20J%PZPQt~j7e92U9p=>olux-v|m3^T9!Z2Zt-MyYPF6k z6?ip$)Z{);%E8c^@nckfQbFr0P~16Wb-U7!xi#UfM_nct!2CXk?<*V)6XZ^_%VFdQ z#XF|H0+7q})k&+Sq#AArBvD z85tusro+UWepKAh!=lK8g~D1;O6eEm;7Ac)F$P2CH3lQJAtM>MxSx^XMQX%G9DU|7 zuG1joLKH+O1B;QYk~-$3#$KlGHAW-gu(3d$dw2iq!6g5w~4eh#5Ek{RJ&`N#wis8LVs#f*5@G~_y=^Ar6 zH!96I*+R$gHX5bx94f4x+_yw^gJ19D74fnwqi!V~=XJ}GWo6xf=+AO&tx#82IMI|{ zk*K;iSvKQt`>|i#Bi=QWuDku-_Avas%r>%sld6JKuZ3a7&j8@0%gkem`Eo)25BtHH zdeT=PVwk`r5$TIg)i8U0FkoarxgM`FGCh_g-2CD`p~7zG zcYZSFS89zv?P^`$^WLH9#Z>k!lE;Y(W!_@!6aa||S#IdPv^jK;(F}d^K*z@Hx-k|M zdu{s2^p-0^2s&I)(%t}ZThyAlV^rw8^fZ1^6-M<~7(Uy#Olk z4hmtObU_FR*wmn*n%mI^^)U**nG1d%>SY<$9jQbG{bE|c@}k4D zW_7as;$Vuj=RAB0E&e@!V{PLmH#9r$$TuUkzL)rjpvD&8>yAdF3uQBr0sW4LiBkR3 zmr^bZhTTzDd}EgAWh9|r(80cMc{AD{^1X2w&^)I4r@z&)j+SKqlQ`RSGbZ7Mfj~HA z*mazxJ3aev=_oLW^%r;hZRWTLcXjX)uFoC8{{KY%cUBmV%7dHz|LNWDxFSx&Lm8rD zgOj)6!&P_)fgNzu9&+set}_S-6iE7C-1ocS7$@eb41qktd3y@~I}o@W&ub7qdt8I( VJ#Y!`_?LIaNqQm3qTK!|`VW)+Y2E+; delta 19924 zcmX_n1yEc~6YXNbVIjB$XK{kNyDsh!2<}0HF0#10`{EkhA&}q@f;+)2KyZi0_rF)K zZq=>2b!K{ctWWptnb=LZKY!rrwUCi$9nov*ll74)AlV$ifc&Ocxcgl5_oVP>6&Lmf zC61Nzwf@ycF2VSH!x_->qt_lT#>0*-t+k>bac4VcJ)Mt!$z!!FIk{7@TH3+GNV0L| z8mS|8$pxmZrmG)aNd~H72rF?>1tZ=WtBOIg{-&;rGBtYu3hZ!GNHvG@7GUilZ?{4_ z^&smSi2Dd8+4Z2k9qZTm9m$M_e||9tbvq4`a!|cqWT~13PJE@*mXh*u9O>v_(t?eh z2B&vToc`EGBiAi8Yg(y1;=-enSyI?hIh?U|ys6Vq-vXP2`g2qV_yRwCufLO`b;%87 zvaHlDp5KEn=%zVrd_uiJ@zxAJ?Rs}6Rg^~{1hMt~YF-k8-GHX5_nn#O`)iD>xIwp$ zIcOdE_hMvrd}(qs%a1kn4y?N44_!^UObMF*2CF%3rPB(4adzzMMDB*a4D|ySKEx|T zbR8;8E-b_8(OfmB3FT4zQK4jbZ@*5kM*tH+MDztpi#B=*kz?=n@-7Fx>W(>!Z-$)( z0wJ*6?t^PI>ZIRNsYe;Y!uJ?;Ho);!nZR_mT$%A)O)}i9xN5poeA^h51 zJoieq1cDNHxI%9J`)hxw_?;|o6t_`({fs(an=yKt;?JPm$Tnui|RPd8!y758QC=s z8rB{Hpoov%h|< z>Jd>>M-G;keGVSO>LfU~D@d69G(oJHKYM+4vkef&j1yU&K@b$59*d$PR4I;7{C0y)m%R%HGved;DSrou<`pY_Z!~)l=bcXw{3dMf>jK#m~IJx#d zRKD7XFzVuDm$rz3h==V&A&Cv7zvHI%=1Uhyihl^|mE;xN#M2cWvwkr6;ZZhP;U^3z z#eVh_(3#6GtmgtL{RJY6C=#`9;pct)Sgd4OlcW;Xi3lP1fN$^|JX+y0LE?{jy|F_u zZJujq9w11_fc~;H@YP*E|A}R_#Cx7LJlIj`QRYN6NUw(U_cy|AE8em%86WmO@tYuU z?|YD{7^M#PnNlN}SmzX4_!4?ix7r)gnGj)gJVTS{h&uUC5jIG;ABrbX<6&t*#cmie z46=Xe6jphaUJ-(m$Pu@3f<>pB7O=^8Wqt9Em_Ft$7blS-@k{Ckp6ey7I=4Vr2EVeL zZYgwhYxb;Mi6u{9i6BU8;5K4ne};#=?q*1I^YKf%+#qLyx=c)`ZlcBdUG^|~jw1mE z6g`DjU>;@pcb|O0uOg?|4F!Wa{BlI9a2p*J7}h4j10!jI(oPWY$@i`{?`u+t*vQXu z969hk9-72)ZTFe1xlWVOV_w2DyGihuwiLVEe?)=|*5x982`3%H0l%8Q&%cKZlpy7e zyz{~KJ6LPZKYPBX@A^=)Y7E7nps7X?e_0E#8s{u(_4kS zXvWf?VKty$>D+svf5GRbPtMENJKT5kDSW~>&%l4hRExM-RaS3CIO#onf}n%^Otkx{ zuIJ)9-PycJ&!F(J3sh!;h6N2GepFAT&c5)e(Z8Ag{UYqdc&onKkB9UP*M3t0?LSyL zn)Y~O$;>zX_&`7k z6Ba!Ponx_QJ#>ZyOmLdv6J!GS3j89-*oBJrKo7wRYf>Mq$Y7)Z+*A$>!ueImhC7(Jq2 zp$7PdycEkBW)QkbHH9+rD}zfdXD8g(bT2c?->op5DjTP`|3Nq|!YkemA^Btw+Xj;~dIN%fJ zuf}ADeoKAYZ!YE>fDY*GUXNyv7lLQZzU4Sw|8LH=1qj@`MSbr)Qd$eB*x!QJELzQ1 zs>Jz>t$7sdu|ILIKj$X^C>e8Z8SkZD&Ili8gaRwe7BT5@2wJmJ(qjO74KdF*RIk)562zF5S9o8Wu0``}=CnPhR!ai&Ys;eH)svGLJ7{XgH@1E1LCkrq!(oCV}Z z@N_@4Ll%r)Y<5Z(P$roEth8FBpLNM)C1$Pr)qaLdJ`Kb_()ZL|vg@*JJelzHHO>E= zM_FL{V_0{Rm3M1UF)jEA9eT-Gw(oY#Gh)6Ib*>`yJa&}hpBGG88ZEFR|M`f??Eist zkfPw&@$HF@kwmkrEvmtB((Y?LTd4*3^ahbYDmIW0E)1O!dXE|E*ke=HNvJfD{EojF z<6coP6B>y64O&A~*ZQw{|LIAb@R3ug9}l~lzw;#2uwi4|wT{!t1V`xxTcb3Of~BeC85 zM>o6pL*8>DBGc$}5$dk$Kxf0R>FFo*4w~2KV+;p&o8tS>{GFA_h}I2vXrjo2KD(QK zPt5q7SMTQ~6Azm2t=-G=pG2u?nL~u~W%e36G&Y_x$P!;T`NaIPULY&RPQY?Gs5t&V zM@_O}1xqPiJ<-)qkCtqYAvha1b~JS_5kMGx&$T_}LJDSXz`e2j-WD~Zw6C|F-*T6% z4H$0YK2_p`YR2gKpIrR-oPy}Y$wVx{9SIfxTQ_m4pYE&sxePn93dl$r)8`r=PUF+8 zai}jlK86N#po>>+KsK+(3&ywv*sR!o)x8L<7@4e-tPq>h7?lJ%o03$|bU(%@w9LBI z^kCEy3(mT;N-CPj$)g4moGn|wGhPGJv$+u)ae46>NB@h{HRhi|LIDKXhvjrVdb6y& z?dFB?HI)Tw#BC4ST?9&(iJj1$Cx@2bZWF6(Z<6>;JQOe>>m-3YiaQebACUZnVnB}>gs&gdS+9*6|Nh|ece^!Wr8jsJy5m7Bg;4O*`X!(E zfBN}P&;}V`Ua>06&bw(CpWaPh+7~uMp^;oe^ZA2U5o5zTr`HVYj z?fuE~59IE^Cl7MiEejaQL*$-aw7w!RV?y#ZN_3hqksCHfKY~HlPwKRAx^0{ws@lbQy?)<~rZ}4W&FqxY5tBO!oCKDYhZr@S4 zZF%MUo%Ie{FjNNh^?XMO@vh1YnGC+U_}gmI2^o8_XEXJ*r2B&jZ{x&5+bct)47brE zQ6dnne7U3%u5pIViK=xH()2PXpWh|3_y%@VI9OeeBw4r2+LzbU?zW=(zX|7_t@w8R zz}oMCb~mqL$$LBip|n)$Zbdx?Kk&j`+4ybs$mso#&$Q%MpT^Tv`4*0LE<~BmA!*0Y z_j}J3xAhj+Hrf^uz{1lw=W>* z)(YovVjs(kl+TIcSXY~@Dwbe=0)@}#!^jr!;3qq^HMor7jF)9t(-dAC8C;!><8-yY zFMHGAbuwd=hRSICbI)E=Y^$;zBFxj!e}|%y4NG~Ta~X=IM6#eBq_JR*;jH%t zc`YV)UN&T}TkcNn-R*i-d$nrjSYA$m{`N!9-!)7xQEDiCh|npX;f+VF>(|lcgkKhJ z`d(P=ourR?V${NPA-<}%8pt_E?5vq`ftsGl%Ae^UBkGedP6aI4#>$er4a3mAmej^? zE@p|w#i;+%g!rE7G5tv+g@~T4HTa~l&7@eKC7oKb@iFYhqdX7)$xBZ&jYz+?G+o>s zTh?)|KA9Jao{EW2oTCNQREbq3N|2j(tsG#V4$3}y$Pf(<4QJs7>h#XsXG)ZX80ZWe zg>4Sh$68f%qpaK!>1)CR+jJV=xlAOWE!m}f_~L)t(t-$)=9h!pfPBFM)VRiph4?s6 zOrd&A)XFzoHT?fdRyv`u1l<<(Zh~H;J+{`$@owqzA+0H|vskcws`$p(J1fInxDvgJ z+DFt$W9JE%86{|#!+|eyP~7llt$EdP!6q{&>Eh#pU1q`K;gQR%>+0 zLz-0+Apyj;jy-^Rs5)nugYyk?sZ2ilFQJsf7z3=?RcW!fgOj0%hG*8cUR!gx8Ntnii-kQ zhxCm`HWu%qlq{Y=13GF`Y9s5>11G!`3<*2{j1Gb_hCQ~8I3%H)r(=T}Sedue;SD8G zVW(M*00Xi0hLUQS(<|JvZ_dknfJPR^A>iXx7A-O=^%-i~i7umZu95bfzFb~pj35fZvaI`EcV2L4RjS`1eaOV#8aiJ|)rhWf9kr=F z1z&62hT6A|IpQ_aqY00%(P>%Ui6JLLixyl{Y2D@5e+)6sxeaLy}qN|sE6Pzmz;O^=bWRQM2 z98BIM!-F&vmw|(3(Nmws@oSdEA~@}KSi@|7>DAbY2c>&ZM|NqgOPUxk$EMacC2~rh zIt1C~(iJE+KOp0mJ`+B;JsMxf{i!=v)6SZ(UINaV-xglX&48cnBqw^v?)O6lZ-r)J z!Akj~I=+fe{)?QA>X%aNT5CQeOwKBxsQ$#cN=OkPl5Of{5j-zuO1XE3Lom1Kk)>K3 z{_tHzhuN?*jA$uKCr<}cB0%%x#{RE6%p3DE;b@>Qpe@Dc*MP+cUfw$rwVzdM*0y$Q zLurRc-A8Ok3TfbY(qq1xQ~SR-Hnwq2g|K-Qq+>?YTe_WDZ$KpNuq|q%z~fvt2Z+W# z972^cH@aKpn=h!fZZH5i4r~|}&MoD~%Bl;7PC5Nl&33eGA60h&WVz)Ct9+{z@8 z%%gd3PP=vc8(fPD{5uP6b3q@Pdu*5*kfPe#_>va? z?@r!T z7D^%f+Kh={XRmzHAlm;_m=%qT>NLlx`ekogR2 zl(_IG39YDdr(X7zjAq$`8bjA~Mzqln74@y9%AQ(l1b+>SpfI=Q@)+yso?;v;GmM;eH#@Uca|YQF8OrFL%G^*6Pdw&q`9BA1vKoHh7#LHP(Cc&`LFe zW!sw`6>PqFmnYpLmTSjpnv~nUXh2#0INWSxla~9#NJzP)eomAX9_>L5bX#@qybEhV zf!@Pn;+Sp`{c$8Qk`d}ybAtIOC71h=l|_KgNB6zJhJ9^wvkfn}f<4bM@cAWUu`hG7 z9Tg?y4i=1i_@`@H+*Ff6J9^_@;LbuH7`1rzdZU9q#4ujm?pW9S|4I?!GwQ0gaBVP-(i@ecq}E}m&Tr# zZ!jFR6$mCWtWC>Jx9j_EZVNG$W=}C{?8o zhyw@BAbk4w+;N=yl0LzE(*KPj^gN1bfg?OwT17Vva6S19CBcZnPZb5JJxH!a!)XT0(hP|6sg#sqy zJ^ETbmrQnx_Hl~pOBm`~0sh5pIfg~EGMx79}JB5Dbkk~U=)k`{OPpnh~;$b@BOAO z(xl?AAUsR> zo(!~yfGzM5iUfEHO@be+El0H6-u|lbzH*PZB*A1s4gjQc2TC9}W2fQy3(H zc+&rA1Pqio>T7$|Siv&U&WlExM)QtuPD>s{9a z9y6rTqP>95VP>r;gSw3crk z^dLl10f^G11^;t}a4S?$sQ;XSt6L#B7VLH`|Boz5Xld$JVv3d)Q9=R_aT7Y^+=dR% zF?7T=+YBAgmF*lbLex49;pjshnWY}(BdoMT?L)1SL@}(qZu{+-HJHI+O_w4L{6u9i z2!T%QO)S6#fl&HU<4IMN0x1D*Ii#k@Zu07uQX8#MI92&l0#lQ1@50J7Ku&$uS$rA* zb?7DoxCy;vGo9X87Y7l&PkFBagubVkcU1a!FD1*vn=(mNk{WypE}mF+lmj2_dHp00 z+pCJ1ye>Pk$X?;TQYomMPbbBqsdk}&B-77NY z6lLg3lO@91l)eoYJMI)|XJgGZnzytTIgSSD$IxlnfAqvssB$=X+ysI?X%pXk5<{KC zkrK+YEalagFw>&>z!6TX#d}rLNLxs)O%YX-*H}s?OOV}m0c ztyT52m}ZW2gZtIloRbe|529!ZJ0TztyP^O6$Sgk=UQMxy?ju|w15eV9n|#;XU?L;p z1^|J(HdQHBVtM@Ad(p>sVw8}7FuS~F2TIrtCw4_Q&@MDk9P1Zhs66YAxUu`6CrvRl zi=HJGYD40EDitEhn#MY>DaCST>7|WhNVo|kK?dgePJ3B5#!V?h;0&S$&A*VCKunTmO<1X^5 z_I*z+p!z)Py;6PGi6{7pTC`0dk1N6;mR|MmV*5-ddY}_ zTyBTx^8pir6ljNqM3tF+FS}Q2l#VLV!{|kxl_ik}IVv?qEr|^Tr%HEND!&yFDE7?_ zv~VG~Hq{MJZVNp_EX%@lMVRUcDitsH)I>=fVxgSD48`r&%HI&Y7dYeOrgvmvIYcxT zfjgzS4N`A0lmrn9(7JLV*yZkYy2@p~0A|&CnIXSOI}sznC$d252q|hluE^E9B9RJ4 zGU3yQ4$;@yiHY}UvPgO%wRTGF>QqhdL}*=;RTqb;;^){?%RqO2TbBO@E z#ou3eP|Np*H08J7hV1k!;Ax6El;IW|UY94h(4EF+`R-(5BmMd~U1xvG=sgOnREQ3y z3&cY5-V%m~(A%Gr)dz0C0SBP6{1jJd=CzrWA+yS$!aQ7Z;60JM8TfFf{BcT)1~eyL zi39eTKjSp@s5sIpv`3}N%aAeecm@y@tgYs+mO%@FP=p_d5-Q@K1NWQeDJ6q>FB1wd z3$0KG8I{~(Q46#XQ02sJQHHe|8KFB45RKHDpwIr$U?PBJirrIq#X~3RtOMmcyKVt` zXp@5mYJ4FOFq%JgFYGYKjjCl=P7cC^5`oIeLx9?38V#9n&0kR$@Ipceb^IkNsHZ|M z2kl*^xq8#@v+TI>%r!;ohHu?uZwF;GI=tJ~kVYVMkp-#|L`Wkjw*HdBf!4B&E4$iADcQ%%V(rDXD5Jp*Ep;*88lkx|CxP`ryxH?A4g!b6JuizKHxy7b0 zCfz2e(o*>|ak8K~ewaQNLR1l?@UXY(-M;q>BRHfBb;o{swAwV4Myu-Gj1kN#%=Rk5 zZ^CM3+6E2fpAf`i+k4Tj8M~nn4o-`Ul8P?dTYe-A3ajeCuD&J-IG7| zyNc~ZyuN=191}c|!8({gCUJF5 zuxr*$kV|Nw0L-?r&{_9bV##XmR~5Ns7CZ|xb1J{{+iw>PbQi_aH7d#WA!D6AD`R-D z?Qw1s(u7E`9j4zWI7J8}Vvs>TfegG=mzcO6&O0RPR1yR|iTRntGHDea34rO<_2;B4 zC*nNJSEoTrX{PWLM=S9flVBRmn5;nIS1rt#Dbf_W>Av#vn?9ngBq>*3t^%Dp&cxsX zVtL%WAj&>o*$i^LIV?#KoB+&>3xUZ|G!f@}odkmpplYmx6A1#!BA?aC20@|r(>T|O zzZ}I&R8&OK%5uheMAYRq23A+w8@hcGQJi^!e|8={WQvY_RoH$=5x0 zv8DVYF<}MViq=OhB}G;dmn7qs;P1XGioRqMoIyie)Z+nO!RFDl<=yGE#o8mG7cvou zv}C4TR+8RY%LLjGh2*aoZEAal_Xi0-lq*NRY`+Xnzu9VZ7t@N>@D>C$hThQuCGm%D zKsDc6Vh&`*nC`?rH4*ctOM`#yr&rXVktrIC2BD7P4fczmv~o^CcwTcIjVGCkkv-D1?T|kFs+4L7Xwp-bAF!mDcA-k)f7A!3 zH&Txz)VbY;ejW!RO7esNi(F}|i)`7a9fKg})uo}>VoClJl)ogM$q3?BiaqyuxBb0A zL&z5_$KlyV8m7GC*jcR&Y_4hG2|iNAy`Vlc+B>*w@M)&{S`UVRkj-HI%Sz>=NI16+ z@0BCPhZMaZOS9?rCb$1Q&NaEhR>}CQ%B>PF+smV4_&)FITv_4EOwJ3Ro^R=VOm2jX z7M2q;AE}c+w_G~QQ&>_Y$q9h3Z|?`JWks=Px2uJ(Ss+Kv4nRS;S1&CQTH!3l^aQd| zhbGxSJjq5;WLS$59;3TYnysHhJWS87I-jIpsphHEsZ>(l=xPUd7VKX9-X=v^P%0mk zQ?@AqL{{A5xp1OlP4SjTM^azL`vfV=XaAYi@iS=4=3x1oPGh%&QJqUg-p;$wDbYR_ z=4nU5tcVa#xNrdr!Xd^_{XyXOCc5+<*k4ucqp%eU#wnd7X%HPqX06~1U!j*dM|5Nu zJexm1X>tH&r^GU)9vG0;9N&w-aAPDeyCGX>?(>V2z2hll_M!~ZaIA7Mrjdp`HoQ~d z!^lbssfAOXu>VoQPX>xZSW0j#qRhOoN#n(gEQHZ)@+D3^kx2&=m_J+fX^uk?3hDh& z%V*jD2-I-4QVG2EwG$J55q5)K5ahb`kixaeQI3j&@Oxqqj|5j*VORCRjPg4kD#BsO z-QZjD7_Go_>sHk-ed7p4y9&YzMO4?QiO8nxGkcF2ytiyo%73lQk75TG42ZYQ?Z;*; z8Yf;m#(`xNse>DC6O8*iO9qeTyssa4Uiek*(EsJkueTPFb3PGg{$Atg!;-)ZnH~vG zDA$~U8X{yQsHjm!Pp=A5Xvk!8b&!VPu(dPi&SEOv#^e{+6CEF8C9pT^o<&5%g|^ zf{#*HF4c5r5H^Bhc;)(l3W%BS?_4NTWW{aQsgppLPNPt9XDBf68f|wuz~n&SCAQOi*7YSK=@k8R(E z$(G{zj6{IIdu2RIq~3!~M#=TytD8r7gaNk>qV9~S?8rDoRFcR1&&@UqB%ml&2Ev$T zLMwv-4pS$uce2NGzm*6>#xrFZzSBh)x}%7<2k_y%3CV=CvxlH--q%)*CF#R&&40bH(WEsI56Sdob9diV>w5 z>aNCn^$diRFG)r9e_x!;?GE>DEJG*)>`|d9qNJx$&uVbX4z9q%kP2Brc8RVVE6K4B zL)T>ihLo3r_#lSAO`#|Z%G3u4q%Wv4>ijl_a|D4S5{6SBzD3Z_p3^9I+Qp-1%EY#Y ziZUBT!J>{o7Qwj{j7I=0R6SLV_;hS>LMk8$hHFp5g%g6j;#TmWK~5 z7y}8c0fbQ(G*`Z#@&G}pyT2C?I-ox^(K`54lG@Oq@RQyVX*V}x7mMEu!K50{T~2lN zY@LsJbhL#UQ)}{|++x{6#%{%7hZVy1XO70T$A_8SjGP2%@aN_)sElQJ?hD=pZUJR` z`!^6}A%Prt#yDnvvJt(OyiJhY)5tS`-ognEOAe&SN2wDUZ zznQ9|A}g(&U3v@g677L~K0+voPi7hdXe?q&Ff<~G0h!v4&CSpYDQr6mMN z9bMp6q%eyFeu4fCs;HO_$fm+lOa<(e0kbPAK@)Fj`SQpg}|S2_luO zM4LJ-&&EJC1Lk;$p2%+Qf&#*!5$(+~=o zC#%FfZv7X_O-(eRE{vQs+pJq*5XI9XIuGP&adB6T`JC2`R3Tzyc%3x=?qNI>acwnM zR%+KLTJ@Q1foMF}s2!Y)k&I0fn00k|#xzUd|ym70I*QB`v)B#_B~cDr~0 zOyIh}cNmXj$LKhA13PN^@qG$bQb`LlY8xl9-R3%5RT`NF#&@oj3|XjYvl~{2OH+=WGBx_^tFmSt=`EH0eEHQEDf+_FAR+-OBq+O(RJ;g;pFv)z$Jcmd+jpFDNBOQv^-j zNYGR@1Cpe-Wh3Q3jUCxRgf9ck5)v|o&g2yJ-tR^=+52Nue?F&3EDl#o{KiJBh2v-2F(L13kzi6j`9wNQtsrEl9D2=4jvCJk=($O{)nME0XT z3a(x?BB)45%+wF^VQ-@Ba@IUVrp%%XbG81v@ipv}!4>!w&Nf9G_lyCg=2Ke*NksjP z*1ylqd&W*>n-YBLfs~;7n*%5>nyLz%e5Q@x3Y$5b;OTUqOHwwFJOUxDVTQPJqYS`x z2qIL}+B}e}H)zAnYL-?uFO7)7Vj3*m7yK=)W{$@A2$>}6z^8- zPLx5oGy@?LvR=>O7KLJY7wzQ~qt|7lU07iS;nZ@=!&-Fud+P!8ZrkhF>S9yU3f81g zJ|T8REajfm=nc?HJ0~X|#^3Yy$DRDJ$RrCp*?DR>8Fhds=qGVJ!#s0CfhVT~9%aa4 zoFpie9|nnRc*`7#qYw2b$_VTpb2uZ@EtpR`hz}WLIZ`#TiNK4}&%Uj?_!|ZiHtlv^6k+ zQodvgJJN_ZaUaZd^p@385=V^9cIX#SKvBUB-QlNaLOd#M&Iy>NidIy{DK~mJTd7k0 zAoKzdrTEj8d|yRsKb$)0tQuf$wN)MBt}s}ZKox~b&4@iAQz<_xNzM3hkNGBvb8ONE z$2?7ni4na5cE@C9OD)o7%3}Z^pZ$fYp#Z0WWJr^39q|TNl&+vO)28CZ!VhO0Nc#lW zJ15{q4TgYgq^_0Z+21?@Raik~657r~6UJ!X@Qa+f_Pt=h56lt7OQqDGkQOdmc@9fr zTxBXe842Ruza_c(;Wb%m33zBtNE{oL6g^NxP2MYiLokz~dZ2OiSyC;bN9ruWfo!HI z+}!k}zGMR<>4PXr)&z_abgNX7@%(VYnBZD76Jmwt=Ydlxq8wJfTWjGeRSA$$4-_sj z^;aa9)cy8L%mZ5mSm|v8p{C7f_?txMr9KrKfrnHQT6KCPD5Fu?0zg$IA{h2#CVfAx zqL22_BWIK6dUK5arrZO%AD{C@y&@SvMnqDkBWJ@7fa zC&SIN=4!C7K3M~q3U9gwBj>l{RRPnAqoK=h667- z+b}07$;pg9T;7MnEKc_wNv%W`GbQ>{GD}o|6#(r4wJ?iI4u^->iJ%j4R7DIfMc44& zNM1z-Cd7uC?1_ zX#B(cH97Mu)jOBGQiZxGo6$S)$0i~ySGFnozLY$EAr)J} zOSvp5Jn*-ovTMG~e>s3a87Gvt?>+S_>N(DJT$@Bgi0WR_Q}jDHu=;(X^ZnGypwynd*rW?aOMOc1Va0(uYq)Tn5JOB zMdj3tKuSz2AD06%*7{K0gcL@b{4rVelc&({Ds$recocps8dS&Zjp*z3&g;aKTQOtR zC|jSWuGh-?`lsgVpLVcx=WnsiY4%C%x?Ro+o*8hfhV7RcqHC?Vi&V z7QVdlmN$Tt!`weNudUG!OKq`^C45CMqC|;QhG>6I{X3=jYl{*?ooC7+GrRL%s)$ud z)+@WC9V;&TI4`fXM_775KDK0SR*HFu&y^**8w;zn%oy&XnpuEf`Ws;GaEvOd89jaV z+OkCNc;F-j!lv_0<{l{m2F?#fG=6jpBk=PIO%}2aau9rPa}_UXf>Mpt<}I&vHGdn5Ri zu5&zS*3d+jn$m&*ic}^ySUNM?^1D^p%$umHAEuHVuUZ)7%zSjIn< zfEd%Z0LG*!pAjPJR2!0=Hq;!40EMci8QbriI%Xs zB~@9z;MQm5@D%bF_|YAvrAi=PqTITno}j+QXK1SX`{p9$@}*??+n;w;z}sbfh|KAF zwQHSwmNA)fd2Pt`wN}VL`s#S^u4}#B!{m41#QOk4`W`WS;Y~+2dwENXH@w_Ik?e`3rBZz! zBC&t`WMxkvtFmn5oU3Xo^*~Mfu>QqTXQ$0fRZ{q(aq;{?)OFRwxd(DS48LQ5D1S<> zJ17&kFwU4;l1~3Crs^roNwd|HG+M=8Ugkg9wa1an{8mKi4r7eJjs$Ip^nHDzIBGrQ zDWPEd=61hFJy5y5$vb3w+2*LQrtaQmZ7)_y;_Z<0VY^MMnVvoG-)Xiw=-!Ks!1BfcXZ0 zbzpaM_ja&!WBcmp@I%MYd4(4*;6wc@u-epHBMp|B0uRYT$v|Bh z4YR17{saz}%DHZI<9AG%ZQvpdBpsJXvYY-%R>_!&LiOYJ6$Ze4 zsuEt`b*;S^_ji6;?v2g8vZsF_tg%7xY?o3~JufIk5DLTZj zy0-TG4JmDqc;myV_&Kpe^78eb7_)}*`g-6-Asg7F7;8AMN}ccj+zMB0p90Q29h{XQ zEJq*0b`v)~cHrcEz2ijAy{kAW598G_!Stgu!I!$-1;bv$xjy)syw`5Wazwb=a#@=G zs(z542iUzh!t=|$Zjbz;jo~4LGel!c7A;(FTq6F#ah9lQ@f$d#qih^}9>W4?Bv+Np zhJ;Xm!a5mIIH}nB>)}mj$iGEM9TCh`J-8b7>X&}D-P5_XKCCYD86pElj%&Do zU{M`gbi3`pCCaPOBz;g3i4hjz*`RO}rvA~msI@IMpI*sFO!UgKN{zw9x%L}9!S^+r zU#rpYHz0kv7g0vbf`P7_H=)}kci&_sk|3;yF2Bat&OZmKZksA7`C>U*8C{e5Ck#s9 z9dN&Va!$5z+6Jh<6l@ZNZxrY@i9^<^H(2VNE4ht+9Lw-`((1R3&o7wqb{d$P>W=Zp z*1hC)HJY4{y8ee#26MOeg&d?j--- zR~)vzbbUQb1s{?88s`S4Y?oh?ez8B*lkU87>GEqZc5CY?W_q&?s1!J!qu&3fdjI=y z!uaiW!P|8efG-OG;QhbNYh&hWX`$)vYU^bEzda0lW037O%z!iHS1Ee6 zlMpuFg`3iurM2uI*(V(;yqSx>zW!RYf;zec+EJ=okJm`ziY+MOH_d9936vDS=40OWaLC$>%z|KY`r0y4Zv}h6*UP=3 zXcZHlee2LQ-j}s|Z0CTdmnVl6t=FY2eVd1|{2npLYfII7@Aa9r$GV3z`_p49A!HFq z;v8$ba77)Wv*rL*O>SA!k%e*E8mBzEOjJR{(yCs1$rz+?_JAG zUXh)N_uKQt`O^|JCoMPHhNO54{HB?w_PYyS@vpo{G`D-H&CLUCDfj-T7YymG$4%QK zcNIOMw!#k0W>Ga+ShPlHk^nh}Qivt`fa0IwwDmot#iUsWHr;jp(!CBJyXnE@>Zh*6 zy9Mpf1Q%oiuFEK#0yFd8-+8fg_%?R@qza#z&c@>*rR$;08i#wBieF6e1CD8H^ZRb@ zB?;>i}tgA2&Q+ zr0xB*?NGBgp8?v{s6N-5Xvu9Qt>s;fUE{PS;Mo&s^k6+Ej60XJM;bsFbd_67q(S%n zRy!V5|Meld>R101#;P@e&QJO2pK4Wummbc2x^2As6Mgl&!dyQTBFJbuziYhS~=(Tr444l@Mctmr`t9C=B+sg#6-3k%A*C^z!9 z8SqkJemM~7V9D^?bCks_qPv3GbP!{ma(0gDq#nOn7=sdpn}si7D+%5FQ{p-azeY#f z$TI_M%amQT<5wzg{&2=&9n&4Jp|6YXd^P~<+(aydRcD#0JP!klzu#DBjN?Gbtdh@y zpdgEg%KvJM1~kXIvOby$&$jQx(lDz_y~g*dNhb8)d^j>wR}R*hJV0Tv>`apM;5CVQWCZ|A^mBeiwl$=Tg-~ ze_0Hf-}kC<7q|*$FY6RaQO8(T(j@IUovO4gG0iyrsV;J$jOeUNU)@-v^p4#rY>?R=g{HV zL2nV459fB1|NYzT2AdCGU_Eo|q9Sv9RHOC(+BZDCn3s1orIBM3^!R z@cl?uN+;Z)lx=G+ac8r_Q~W^X!|^NC`(sJU`O+RjE=H-gbsptA&eI2CvV8^=7yCZo zSHPDH3{X!0i}FzS(89;kI{^U6cvcpxn-mbTD%AL|b6MOR0xZT?z^@ve75`rEFCH zF!jsaJ&f&8An$$vS9o*7#Ni@U7Snyf!4ah6sAuhw-_%C&Z_s~P%{iQ;k^g%^OR*x) zKTzu1q`ZOeV$2PEs^NWfX_d!{^NZ)c7U7qH8@@-w2@ve;dffU#pkT%z&Zj0!uCpA{ zije*djAH(HB@t-&aT>MoC*mco`fB8(tU^qhyM`pe6U0K0=lf?@U5|(a#>n2V?zJ7^ zKoTmaj!H?-r?Jwozsc73WlNIdhk&WUl!Pzew$d;9`fqmO) z;iZL-9lRPl??4@&BTY;}R^)fpk!G9UmXf~WI zv3}J@?2v_d?cQL*G5b`+b#Xs!WuQ^eEr+U`RyRtJB7dr@oSFR?<-hdGD~w{9m}81+ z%ruB{7=ngGLZpec>05~A{`kpMYwa2_ITNf#%UpDZKOwDs#BpvS&>t24sB0|V>sy|E zIFev48G_3Z;W#}~HPMK}p$`c;38azSVp|j>hr|HP`o|2`wR*FZkw2bMN751+8FSC! zBPKpgpveu3(DFUNTQT#?;*$y4ijKry(PRFfF0M1E2}aq55+T%30)!%=Nr%XXNbkLd zUIalv5F|m0(a?f`(rb_wM0yh`QdOh}rAd)qrARLUX@bD>yYJ2T=I*bZ*|UFkc6MgZ z?i_kdL|fE^f5a9niOhuNjTLX&LPGV_zHC`>4wA2$*4N;7scW^ z%0E}rQ|QJ<31HpW1sO^f_wXQ~jq}Gttmg7m85cAfN9uFJ+W zFwQ?~uk_@UdN0a8NR899P!K?!ZB9`DSE zr(fv@FS~>qBUEh}#x=Lhm(B~6mABv8gaeAa6d!@^+~C{H`lM1Le{8DXRSd>kzb?_ zH*18ghTG@X2<85y$))b|PDmMr-ivinvO(tGctAv{dOB7rWLw@Ta|*E2^WMcKA!K@c z{E4NpRbW3q`469Ay z?KrEj?r`j7=*#^=G;E{RZP+*=)g6F?Diuk3g{G;u163T3AI+LKlzRq(S7=r5L)A#A8 zfjVS9zO?rdRO5?URtHnh)Fqo@x#I>!S?+XyrNEvtMoxT5ROT^lZXdnkIe<(bxXUNbv?3jC2{pjc96M0g7K&N+0*1i&qr<3L9_@_uDvY?&L5Fn+A>h4G$2#%iSw-_#wF z#};k{iV&&}?}1H4ie2!*VwkpME!{|Hg}sQ@U6I|C4CU@M)|$k&&R~q_upvut2X&!M zU;Jl=0B3>CefH5#^NKwq5|h<_=g8Z?qBmce?w4nvM~^-1PxUOMblc{ah=mjpPNlPb zLZZ&g_g*C)_qG^w7k~}2wW)2G)5yhkupTQKV>XTkxrHf{@v5^P_B?Qfd$s~?W!&4; z5uerp^x+w!UsbXVp*Uo&q{)(EDRqe~Cd%q5L*3NYrhnS3L&Wb@+DYMfSM0%8!jR5z$j2_=2z_#xA>~-i=ZsSQztlN(QcDb zAQ3We_ma!!p6++cf2NXVc^BprnG@akS~YYW@LDfcGD*ts=XA#j&;V~7;Hw>pl2G6& zQh3P|py{t}@#L|X34gJAR%Vb$Hdcb}P5qIBKyeKxRn^VkL=%1aWa^+7BWsS%hoRCN z+etMU6Lrbe*ri5$YvZf@pQ3RMk{u7)qV!-b<1h386eP;w$+pj1&a)FYwVF|IZxW3Q zXp5Jch43pg3$|O=x!8YS%Lsg<*27CPy9hX?V(;fh`fR$h!bUjP*Z9px*fsVMm8OYA*sByG#`knMst#)`R01MExn?g# zn+BTGGz*eVc6nb3lO)mz(ydJnsXqQLC-L3gVg8Es-<24bg#y=l+{Kds3)$^Xr*I%A zQ7ozTP8h?L0Mv&nD-}RCpf$WA@xj$qo<$^@RI5=YrscfIYa$vaCh-BMz4XiNYd`Vq zTjfI>_jqFb)*8T(Cuy<;{iYb39gf`-%?Nj;DR#^pKSI+Tqsd>R=376~t>)G1Db6MO zRfFzj6m8ged%1Uu-kwwru~k^e1Up{1VCCuNv&NcgWc-o(U`7x3tm~W*H-`(Xru=fN zH-*hd6g&^}VEV>3y&Y_0bLybxNl33J9a?z`bEXrt<{16NXlHJHd{HE(2=xi&c`l;U zZ|04a#@#Y8JCv;NvK3t&tH_@){WjR}ZMjO!T5&B!V}K#D0zt~6@0^hy_OsauD@T~} zPC6`(CCnWSz$f8hu48c;509^!DFZ*|kVU&gI?4Ilf!`7w=LSEOA zA43d18+ST6qoQQv`fr9jQZ=L-!s38728J<;;l66ju2IxNz=B85K*Dvs?-9Sf+F8x9 zw-aULoxaSUN(!2@#67@y8KT|d7B_<)W?WOi<9O5lhF!nXzP+V2| zwCq|PLf1{R&0bRf3p^_a0o2R%sDbIGmdlf&kdsZ8XM~SD7oIb&n@hk%Y%^hb5EJ83 z4j)65iv^_JBmYS%YI9)Nr7gaaZ#MXJPQz>0OpyBnS%9Ja!mdh-R;Jb3Y-X5MU5C`M z5*@(R-m2QEDbz0Qd7&=2qN{JwzA`O%a?<G=$=0bDTj5pj9^1v%Kq3 z>k-UBs+*t6+HD86S!)DdxZAj>K{&CSvNdK zBwh@f5YIO^ia2hGS$-6yEB!)Vg1-6%oP|KIvtIVo!maUl*{E8FV{97_`W8}QyNP#O zbw-$)@dc5gltEI{gFaUCBaxqv7$JIwZah5qd>f6;vijFuFNfXUH!a-Q;W#)XwsyHP zrpU&XJd`T&*v{iyf)1^<{N^G^{-?A}ZnoF{Pu`3LX-2|_^FWGo{MCyh0kHjH+5Vap zt_G<^+M|JE(1hShET9d9+#F=t$kwhC_a5E2X6N-U;(q{M8pdh> diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index d95f50678..bd882ccb4 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -24337,6 +24337,21 @@ Word.Document#settings:member: } } }); +Word.Document#windows:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets the document windows. + const windows: Word.WindowCollection = context.document.windows; + windows.load("windows/items/length"); + + await context.sync(); + + console.log(`Number of windows for this document: ${windows.items.length}`); + }); Word.DocumentCompareOptions:interface: - >- // Link to full sample: @@ -29064,6 +29079,24 @@ Word.Window#activePane:member: console.log(`Page index: ${pagesIndexes[i].index}`); } }); +Word.Window#panes:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/35-ranges/get-pages.yaml + + + await Word.run(async (context) => { + // Gets all the panes in the active document window. + + // Get the active window. + const activeWindow: Word.Window = context.document.activeWindow; + activeWindow.load("panes/items/length"); + + await context.sync(); + + const panes: Word.PaneCollection = activeWindow.panes; + console.log(`Number of panes in the current document window: ${panes.items.length}`); + }); Word.WindowCollection:class: - >- // Link to full sample: From cbf886844c0bab369929ec720449ae537593b375 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Thu, 16 Oct 2025 09:34:00 -0700 Subject: [PATCH 56/71] [PowerPoint] Fix typo (#1006) --- playlists-prod/powerpoint.yaml | 2 +- playlists/powerpoint.yaml | 2 +- samples/powerpoint/document/create-presentation.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/playlists-prod/powerpoint.yaml b/playlists-prod/powerpoint.yaml index 40ca88e0d..910edb0af 100644 --- a/playlists-prod/powerpoint.yaml +++ b/playlists-prod/powerpoint.yaml @@ -37,7 +37,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/powerpoint/document/create-presentation.yaml group: Document api_set: - PowerPoint: '1.1' + PowerPointApi: '1.1' - id: powerpoint-hyperlinks-manage-hyperlinks name: Get hyperlinks fileName: manage-hyperlinks.yaml diff --git a/playlists/powerpoint.yaml b/playlists/powerpoint.yaml index 6d8cc0135..810bc5be0 100644 --- a/playlists/powerpoint.yaml +++ b/playlists/powerpoint.yaml @@ -37,7 +37,7 @@ https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/powerpoint/document/create-presentation.yaml group: Document api_set: - PowerPoint: '1.1' + PowerPointApi: '1.1' - id: powerpoint-hyperlinks-manage-hyperlinks name: Get hyperlinks fileName: manage-hyperlinks.yaml diff --git a/samples/powerpoint/document/create-presentation.yaml b/samples/powerpoint/document/create-presentation.yaml index debc2bff0..a2c0b605f 100644 --- a/samples/powerpoint/document/create-presentation.yaml +++ b/samples/powerpoint/document/create-presentation.yaml @@ -4,7 +4,7 @@ description: Creates a new, empty presentation and creates a new presentation by author: OfficeDev host: POWERPOINT api_set: - PowerPoint: '1.1' + PowerPointApi: '1.1' script: content: |- document.getElementById("create-new-blank-presentation").addEventListener("click", () => tryCatch(createBlankPresentation)); From 79ddaa20eb0d3bf26befc2008ad2a989fae5d66e Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:14:52 -0700 Subject: [PATCH 57/71] [Outlook] (legacy tokens) Update section and snippet names (#1005) --- config/build.ts | 14 +++- playlists-prod/outlook.yaml | 70 +++++++++++-------- playlists/outlook.yaml | 70 +++++++++++-------- .../get-icaluid-as-attendee.yaml | 4 +- .../get-icaluid-as-organizer.yaml | 4 +- .../ids-and-urls.yaml | 4 +- .../make-ews-request-async.yaml | 6 +- ...-message-using-make-ews-request-async.yaml | 4 +- .../user-callback-token.yaml | 4 +- .../user-identity-token.yaml | 4 +- snippet-extractor-output/snippets.yaml | 16 ++--- view-prod/outlook.json | 14 ++-- view/outlook.json | 14 ++-- 13 files changed, 127 insertions(+), 101 deletions(-) rename samples/outlook/{85-tokens-and-service-calls => 85-tokens-and-service-calls-for-exchange-on-premises-environments}/get-icaluid-as-attendee.yaml (93%) rename samples/outlook/{85-tokens-and-service-calls => 85-tokens-and-service-calls-for-exchange-on-premises-environments}/get-icaluid-as-organizer.yaml (93%) rename samples/outlook/{85-tokens-and-service-calls => 85-tokens-and-service-calls-for-exchange-on-premises-environments}/ids-and-urls.yaml (92%) rename samples/outlook/{85-tokens-and-service-calls => 85-tokens-and-service-calls-for-exchange-on-premises-environments}/make-ews-request-async.yaml (92%) rename samples/outlook/{85-tokens-and-service-calls => 85-tokens-and-service-calls-for-exchange-on-premises-environments}/send-message-using-make-ews-request-async.yaml (94%) rename samples/outlook/{85-tokens-and-service-calls => 85-tokens-and-service-calls-for-exchange-on-premises-environments}/user-callback-token.yaml (94%) rename samples/outlook/{85-tokens-and-service-calls => 85-tokens-and-service-calls-for-exchange-on-premises-environments}/user-identity-token.yaml (92%) diff --git a/config/build.ts b/config/build.ts index 5d718ccc7..fcd9e231c 100644 --- a/config/build.ts +++ b/config/build.ts @@ -134,11 +134,12 @@ async function processSnippets(processedSnippets: Dictionary dictionary[item] || item); return parts.join(' '); } diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index cdb4674f5..2b064ff8c 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -467,76 +467,84 @@ api_set: Mailbox: '1.5' - id: outlook-tokens-and-service-calls-ids-and-urls - name: Endpoint URLs and item IDs + name: Endpoint URLs and item IDs in Exchange on-premises environments fileName: ids-and-urls.yaml description: >- - Retrieves and displays the Exchange Web Services (EWS) endpoint URL and item - IDs, and converts item IDs for different protocols. + Retrieves the Exchange Web Services (EWS) endpoint URL and item IDs and + converts item IDs for different protocols. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.5' - id: outlook-tokens-and-service-calls-user-identity-token - name: Get a user identity token + name: Get a user identity token in Exchange on-premises environments fileName: user-identity-token.yaml description: >- - Gets a user identity token to use for authentication flows in an Exchange + Gets a user identity token for authentication flows in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-user-callback-token - name: Get a callback token + name: Get a callback token in Exchange on-premises environments fileName: user-callback-token.yaml description: >- Gets a callback token to call Outlook services from an add-in's backend - service. + service in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-make-ews-request-async - name: Get a message using Exchange Web Services (EWS) + name: >- + Get a message using Exchange Web Services (EWS) in Exchange on-premises + environments fileName: make-ews-request-async.yaml - description: Gets a message using EWS without any back-end code. + description: >- + Uses EWS in an Exchange on-premises environment to get a message without any + backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-send-message-using-make-ews-request-async - name: Send a message using Exchange Web Services (EWS) + name: >- + Send a message using Exchange Web Services (EWS) in Exchange on-premises + environments fileName: send-message-using-make-ews-request-async.yaml - description: Sends a message using EWS without any back-end code. + description: >- + Uses EWS in an Exchange on-premises environment to send a message without + any backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-get-icaluid-as-organizer - name: Get an appointment's iCalUId as the organizer + name: Get an appointment's iCalUId as the organizer (Exchange on-premises only) fileName: get-icaluid-as-organizer.yaml description: >- - Uses Exchange Web Services (EWS) to get an appointment's iCalUId value where - the user is the organizer. + Uses Exchange Web Services (EWS) in an Exchange on-premises environment to + get an appointment's iCalUId value where the user is the organizer. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.3' - id: outlook-tokens-and-service-calls-get-icaluid-as-attendee - name: Get an appointment's iCalUId as an attendee + name: Get an appointment's iCalUId as an attendee (Exchange on-premises only) fileName: get-icaluid-as-attendee.yaml description: >- - Uses Exchange Web Services (EWS) to get an appointment's iCalUId value where - the user is an attendee. + Uses Exchange Web Services (EWS) in an Exchange on-premises environment to + get an appointment's iCalUId value where the user is an attendee. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-other-item-apis-get-subject-read diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index 66855bc23..085249207 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -467,76 +467,84 @@ api_set: Mailbox: '1.5' - id: outlook-tokens-and-service-calls-ids-and-urls - name: Endpoint URLs and item IDs + name: Endpoint URLs and item IDs in Exchange on-premises environments fileName: ids-and-urls.yaml description: >- - Retrieves and displays the Exchange Web Services (EWS) endpoint URL and item - IDs, and converts item IDs for different protocols. + Retrieves the Exchange Web Services (EWS) endpoint URL and item IDs and + converts item IDs for different protocols. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.5' - id: outlook-tokens-and-service-calls-user-identity-token - name: Get a user identity token + name: Get a user identity token in Exchange on-premises environments fileName: user-identity-token.yaml description: >- - Gets a user identity token to use for authentication flows in an Exchange + Gets a user identity token for authentication flows in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-user-callback-token - name: Get a callback token + name: Get a callback token in Exchange on-premises environments fileName: user-callback-token.yaml description: >- Gets a callback token to call Outlook services from an add-in's backend - service. + service in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-make-ews-request-async - name: Get a message using Exchange Web Services (EWS) + name: >- + Get a message using Exchange Web Services (EWS) in Exchange on-premises + environments fileName: make-ews-request-async.yaml - description: Gets a message using EWS without any back-end code. + description: >- + Uses EWS in an Exchange on-premises environment to get a message without any + backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-send-message-using-make-ews-request-async - name: Send a message using Exchange Web Services (EWS) + name: >- + Send a message using Exchange Web Services (EWS) in Exchange on-premises + environments fileName: send-message-using-make-ews-request-async.yaml - description: Sends a message using EWS without any back-end code. + description: >- + Uses EWS in an Exchange on-premises environment to send a message without + any backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-get-icaluid-as-organizer - name: Get an appointment's iCalUId as the organizer + name: Get an appointment's iCalUId as the organizer (Exchange on-premises only) fileName: get-icaluid-as-organizer.yaml description: >- - Uses Exchange Web Services (EWS) to get an appointment's iCalUId value where - the user is the organizer. + Uses Exchange Web Services (EWS) in an Exchange on-premises environment to + get an appointment's iCalUId value where the user is the organizer. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.3' - id: outlook-tokens-and-service-calls-get-icaluid-as-attendee - name: Get an appointment's iCalUId as an attendee + name: Get an appointment's iCalUId as an attendee (Exchange on-premises only) fileName: get-icaluid-as-attendee.yaml description: >- - Uses Exchange Web Services (EWS) to get an appointment's iCalUId value where - the user is an attendee. + Uses Exchange Web Services (EWS) in an Exchange on-premises environment to + get an appointment's iCalUId value where the user is an attendee. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml - group: Tokens And Service Calls + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml + group: Tokens And Service Calls For Exchange On-Premises Environments api_set: Mailbox: '1.1' - id: outlook-other-item-apis-get-subject-read diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml similarity index 93% rename from samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml rename to samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml index 07a5a11d6..00fc8499a 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml +++ b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml @@ -1,7 +1,7 @@ order: 9 id: outlook-tokens-and-service-calls-get-icaluid-as-attendee -name: Get an appointment's iCalUId as an attendee -description: Uses Exchange Web Services (EWS) to get an appointment's iCalUId value where the user is an attendee. +name: Get an appointment's iCalUId as an attendee (Exchange on-premises only) +description: Uses Exchange Web Services (EWS) in an Exchange on-premises environment to get an appointment's iCalUId value where the user is an attendee. host: OUTLOOK api_set: Mailbox: '1.1' diff --git a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml similarity index 93% rename from samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml rename to samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml index 57259939d..c782dc0a6 100644 --- a/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml +++ b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml @@ -1,7 +1,7 @@ order: 8 id: outlook-tokens-and-service-calls-get-icaluid-as-organizer -name: Get an appointment's iCalUId as the organizer -description: Uses Exchange Web Services (EWS) to get an appointment's iCalUId value where the user is the organizer. +name: Get an appointment's iCalUId as the organizer (Exchange on-premises only) +description: Uses Exchange Web Services (EWS) in an Exchange on-premises environment to get an appointment's iCalUId value where the user is the organizer. host: OUTLOOK api_set: Mailbox: '1.3' diff --git a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml similarity index 92% rename from samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml rename to samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml index 90a24f5f7..e31656ee1 100644 --- a/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml +++ b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml @@ -1,7 +1,7 @@ order: 1 id: outlook-tokens-and-service-calls-ids-and-urls -name: Endpoint URLs and item IDs -description: Retrieves and displays the Exchange Web Services (EWS) endpoint URL and item IDs, and converts item IDs for different protocols. +name: Endpoint URLs and item IDs in Exchange on-premises environments +description: Retrieves the Exchange Web Services (EWS) endpoint URL and item IDs and converts item IDs for different protocols. host: OUTLOOK api_set: Mailbox: '1.5' diff --git a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml similarity index 92% rename from samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml rename to samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml index a4fd49450..c15444a51 100644 --- a/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml @@ -1,7 +1,7 @@ order: 6 id: outlook-tokens-and-service-calls-make-ews-request-async -name: Get a message using Exchange Web Services (EWS) -description: Gets a message using EWS without any back-end code. +name: Get a message using Exchange Web Services (EWS) in Exchange on-premises environments +description: Uses EWS in an Exchange on-premises environment to get a message without any backend code. host: OUTLOOK api_set: Mailbox: '1.1' @@ -33,7 +33,7 @@ script: template: content: |-
      -

      This sample shows how to get a message using EWS, without any back-end code.

      +

      This sample shows how to get a message using EWS, without any backend code.

      Important: This API is only supported in Exchange on-premises environments. In Exchange Online environments, use nested app authentication (NAA) to get an access token. Then, use Microsoft Graph to get the message. diff --git a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml similarity index 94% rename from samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml rename to samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml index 90feb4ccb..c2cd39c56 100644 --- a/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml @@ -1,7 +1,7 @@ order: 7 id: outlook-tokens-and-service-calls-send-message-using-make-ews-request-async -name: Send a message using Exchange Web Services (EWS) -description: Sends a message using EWS without any back-end code. +name: Send a message using Exchange Web Services (EWS) in Exchange on-premises environments +description: Uses EWS in an Exchange on-premises environment to send a message without any backend code. host: OUTLOOK api_set: Mailbox: '1.1' diff --git a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml similarity index 94% rename from samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml rename to samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml index 986a3bcbc..82cf1e8db 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml @@ -1,7 +1,7 @@ order: 4 id: outlook-tokens-and-service-calls-user-callback-token -name: Get a callback token -description: Gets a callback token to call Outlook services from an add-in's backend service. +name: Get a callback token in Exchange on-premises environments +description: Gets a callback token to call Outlook services from an add-in's backend service in an Exchange on-premises environment. host: OUTLOOK api_set: Mailbox: '1.1' diff --git a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml similarity index 92% rename from samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml rename to samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml index b37f4f878..07e604373 100644 --- a/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml +++ b/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml @@ -1,7 +1,7 @@ order: 3 id: outlook-tokens-and-service-calls-user-identity-token -name: Get a user identity token -description: Gets a user identity token to use for authentication flows in an Exchange on-premises environment. +name: Get a user identity token in Exchange on-premises environments +description: Gets a user identity token for authentication flows in an Exchange on-premises environment. host: OUTLOOK api_set: Mailbox: '1.1' diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index bd882ccb4..ca7f8c873 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -11844,7 +11844,7 @@ Office.Location#setAsync:member(1): Office.Mailbox#convertToEwsId:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml // Get the EWS URL and EWS item ID. @@ -11873,7 +11873,7 @@ Office.Mailbox#convertToEwsId:member(1): Office.Mailbox#convertToRestId:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml // Get the EWS URL and EWS item ID. @@ -12095,7 +12095,7 @@ Office.Mailbox#displayNewMessageFormAsync:member(1): Office.Mailbox#ewsUrl:member: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml // Get the EWS URL and EWS item ID. @@ -12124,7 +12124,7 @@ Office.Mailbox#ewsUrl:member: Office.Mailbox#getCallbackTokenAsync:member(2): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml Office.context.mailbox.getCallbackTokenAsync((result) => { @@ -12162,7 +12162,7 @@ Office.Mailbox#getSelectedItemsAsync:member(2): Office.Mailbox#getUserIdentityTokenAsync:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml Office.context.mailbox.getUserIdentityTokenAsync((result) => { @@ -12207,7 +12207,7 @@ Office.Mailbox#loadItemByIdAsync:member(1): Office.Mailbox#makeEwsRequestAsync:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml const ewsId = Office.context.mailbox.item.itemId; @@ -12240,7 +12240,7 @@ Office.Mailbox#makeEwsRequestAsync:member(1): }); - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml const request = '- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml // Get the EWS URL and EWS item ID. diff --git a/view-prod/outlook.json b/view-prod/outlook.json index 9b861d008..f8825fcac 100644 --- a/view-prod/outlook.json +++ b/view-prod/outlook.json @@ -48,13 +48,13 @@ "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml", "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml", - "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml", - "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml", - "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml", - "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml", + "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml", + "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml", + "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml", + "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml", "outlook-other-item-apis-get-subject-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-subject-read.yaml", "outlook-other-item-apis-get-set-subject-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml", "outlook-item-body-set-selected-data": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/set-selected-data.yaml", diff --git a/view/outlook.json b/view/outlook.json index 7d57d08cb..3a5582021 100644 --- a/view/outlook.json +++ b/view/outlook.json @@ -48,13 +48,13 @@ "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/75-regex-matches/contextual.yaml", "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/80-events/drag-drop-item.yaml", - "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml", - "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml", - "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml", - "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/send-message-using-make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-organizer.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml", + "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml", + "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml", + "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml", + "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml", "outlook-other-item-apis-get-subject-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-subject-read.yaml", "outlook-other-item-apis-get-set-subject-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml", "outlook-item-body-set-selected-data": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/set-selected-data.yaml", From 0fa3b03c8dce60ab318f471363a65b0580df16bb Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Thu, 16 Oct 2025 13:34:35 -0700 Subject: [PATCH 58/71] [Word] (Window) Add snippet for close method (#1007) --- playlists-prod/word.yaml | 9 +++ playlists/word.yaml | 9 +++ .../close-document-window.yaml | 61 ++++++++++++++++++ snippet-extractor-metadata/word.xlsx | Bin 28813 -> 28975 bytes snippet-extractor-output/snippets.yaml | 39 +++++++++++ view-prod/word.json | 1 + view/word.json | 1 + 7 files changed, 120 insertions(+) create mode 100644 samples/word/99-preview-apis/close-document-window.yaml diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index 644cc25a5..fb94dce48 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -580,6 +580,15 @@ group: Scenarios api_set: WordApi: '1.4' +- id: word-close-document-window + name: Close document window + fileName: close-document-window.yaml + description: Shows how to close document window. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/close-document-window.yaml + group: Preview APIs + api_set: + WordApi: '1.10' - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index 8773282f5..db9076c31 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -580,6 +580,15 @@ group: Scenarios api_set: WordApi: '1.4' +- id: word-close-document-window + name: Close document window + fileName: close-document-window.yaml + description: Shows how to close document window. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/close-document-window.yaml + group: Preview APIs + api_set: + WordApi: '1.10' - id: word-insert-and-change-content-controls name: Content control basics fileName: insert-and-change-content-controls.yaml diff --git a/samples/word/99-preview-apis/close-document-window.yaml b/samples/word/99-preview-apis/close-document-window.yaml new file mode 100644 index 000000000..a32de186a --- /dev/null +++ b/samples/word/99-preview-apis/close-document-window.yaml @@ -0,0 +1,61 @@ +id: word-close-document-window +name: Close document window +description: Shows how to close document window. +host: WORD +api_set: + WordApi: '1.10' +script: + content: | + document.getElementById("close-with-save-prompt").addEventListener("click", () => tryCatch(closeWithSavePrompt)); + + async function closeWithSavePrompt() { + await Word.run(async (context) => { + // Closes the document window, prompting to save if this is a new document. + const window: Word.Window = context.document.activeWindow; + const closeOptions: Word.WindowCloseOptions = { saveChanges: Word.SaveConfiguration.promptToSaveChanges }; + console.log("About to close the document window..."); + window.close(closeOptions); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +

      + This sample demonstrates how to close the document window. +
      +
      +

      Try it out

      + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/beta/hosted/office.js + https://appsforoffice.microsoft.com/lib/beta/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index d6ce531b43aa2f2996e5f69b8f255e20493024d5..781a1c0bd7750c91417125b4cb83389b8063ac58 100644 GIT binary patch delta 20059 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 Ai~s-t diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index ca7f8c873..2dfd57dfa 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -27483,6 +27483,19 @@ Word.SaveBehavior:enum: context.document.save(Word.SaveBehavior.prompt); await context.sync(); }); +Word.SaveConfiguration:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/close-document-window.yaml + + + await Word.run(async (context) => { + // Closes the document window, prompting to save if this is a new document. + const window: Word.Window = context.document.activeWindow; + const closeOptions: Word.WindowCloseOptions = { saveChanges: Word.SaveConfiguration.promptToSaveChanges }; + console.log("About to close the document window..."); + window.close(closeOptions); + }); Word.Section#getFooter:member(2): - >- // Link to full sample: @@ -29038,6 +29051,19 @@ Word.Window:class: console.log("First paragraph's text:", pagesFirstParagraphText[i].text); } }); +Word.Window#close:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/close-document-window.yaml + + + await Word.run(async (context) => { + // Closes the document window, prompting to save if this is a new document. + const window: Word.Window = context.document.activeWindow; + const closeOptions: Word.WindowCloseOptions = { saveChanges: Word.SaveConfiguration.promptToSaveChanges }; + console.log("About to close the document window..."); + window.close(closeOptions); + }); Word.Window#activePane:member: - >- // Link to full sample: @@ -29097,6 +29123,19 @@ Word.Window#panes:member: const panes: Word.PaneCollection = activeWindow.panes; console.log(`Number of panes in the current document window: ${panes.items.length}`); }); +Word.WindowCloseOptions:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/close-document-window.yaml + + + await Word.run(async (context) => { + // Closes the document window, prompting to save if this is a new document. + const window: Word.Window = context.document.activeWindow; + const closeOptions: Word.WindowCloseOptions = { saveChanges: Word.SaveConfiguration.promptToSaveChanges }; + console.log("About to close the document window..."); + window.close(closeOptions); + }); Word.WindowCollection:class: - >- // Link to full sample: diff --git a/view-prod/word.json b/view-prod/word.json index a6f3f7244..87a70604a 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -58,6 +58,7 @@ "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/multiple-property-set.yaml", "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/correlated-objects-pattern.yaml", + "word-close-document-window": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/close-document-window.yaml", "word-insert-and-change-content-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/insert-and-change-content-controls.yaml", "word-manage-comments": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/99-preview-apis/manage-comments.yaml" } \ No newline at end of file diff --git a/view/word.json b/view/word.json index 1e2ed094d..9189eca77 100644 --- a/view/word.json +++ b/view/word.json @@ -58,6 +58,7 @@ "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/multiple-property-set.yaml", "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/correlated-objects-pattern.yaml", + "word-close-document-window": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/close-document-window.yaml", "word-insert-and-change-content-controls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/insert-and-change-content-controls.yaml", "word-manage-comments": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/99-preview-apis/manage-comments.yaml" } \ No newline at end of file From 505a8643bbc00cd841f78c404335beea313964e8 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Thu, 16 Oct 2025 15:01:05 -0700 Subject: [PATCH 59/71] [Word] (shapes) How to get text from text box (#1009) * [Word] (shapes) How to get text from text box * Remove setup section per review feedback --- .../50-document/manage-shapes-text-boxes.yaml | 63 ++++++++---------- snippet-extractor-metadata/word.xlsx | Bin 28975 -> 29026 bytes snippet-extractor-output/snippets.yaml | 56 +++++++++++++--- 3 files changed, 74 insertions(+), 45 deletions(-) diff --git a/samples/word/50-document/manage-shapes-text-boxes.yaml b/samples/word/50-document/manage-shapes-text-boxes.yaml index 6d8d0d900..024f6e6fe 100644 --- a/samples/word/50-document/manage-shapes-text-boxes.yaml +++ b/samples/word/50-document/manage-shapes-text-boxes.yaml @@ -11,6 +11,9 @@ script: document .getElementById("insert-text-box-into-current-selection") .addEventListener("click", () => tryCatch(insertTextBoxIntoCurrentSelection)); + document + .getElementById("get-text-from-text-box-in-main-doc") + .addEventListener("click", () => tryCatch(getTextFromTextBoxInMainDoc)); document.getElementById("get-text-boxes-in-main-doc").addEventListener("click", () => tryCatch(getTextBoxesInMainDoc)); document.getElementById("set-text-box-properties").addEventListener("click", () => tryCatch(setTextBoxProperties)); document @@ -27,7 +30,6 @@ script: .getElementById("insert-text-box-in-header-at-first-paragraph") .addEventListener("click", () => tryCatch(insertTextBoxInHeaderAtFirstParagraph)); document.getElementById("get-text-box-in-header").addEventListener("click", () => tryCatch(getTextBoxInHeader)); - document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertTextBoxIntoCurrentSelection() { await Word.run(async (context) => { @@ -47,6 +49,21 @@ script: }); } + async function getTextFromTextBoxInMainDoc() { + await Word.run(async (context) => { + // Gets text from first text box in main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("body/text"); + await context.sync(); + + console.log( + shape.isNullObject + ? "No shapes with text boxes found in main document." + : `Text in first text box: ${shape.body.text}`, + ); + }); + } + async function getTextBoxesInMainDoc() { await Word.run(async (context) => { // Gets text boxes in main document. @@ -55,7 +72,7 @@ script: await context.sync(); if (shapes.items.length > 0) { - shapes.items.forEach(function(shape, index) { + shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); } @@ -141,10 +158,7 @@ script: async function deleteFirstTextBox() { await Word.run(async (context) => { // Deletes the first text box. - context.document.body.shapes - .getByTypes([Word.ShapeType.textBox]) - .getFirst() - .delete(); + context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirst().delete(); await context.sync(); console.log("The first text box in document was deleted."); @@ -174,13 +188,14 @@ script: async function getTextBoxInHeader() { await Word.run(async (context) => { // Gets text boxes in header. - const shapes: Word.ShapeCollection = context.document.sections.getFirst().getHeader(Word.HeaderFooterType.primary) - .shapes; + const shapes: Word.ShapeCollection = context.document.sections + .getFirst() + .getHeader(Word.HeaderFooterType.primary).shapes; shapes.load(); await context.sync(); if (shapes.items.length > 0) { - shapes.items.forEach(function(shape, index) { + shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in header has a text box. Properties:`, shape); } @@ -191,27 +206,10 @@ script: }); } - async function setup() { - await Word.run(async (context) => { - const body: Word.Body = context.document.body; - body.clear(); - body.insertParagraph( - "Do you want to create a solution that extends the functionality of Word? You can use the Office Add-ins platform to extend Word clients running on the web, on a Windows desktop, or on a Mac.", - "Start" - ); - body.paragraphs - .getLast() - .insertText( - "Use add-in commands to extend the Word UI and launch task panes that run JavaScript that interacts with the content in a Word document. Any code that you can run in a browser can run in a Word add-in. Add-ins that interact with content in a Word document create requests to act on Word objects and synchronize object state.", - "Replace" - ); - }); - } - function getPictureBase64(): string { // Returns Base64-encoded image data for a sample picture. const pictureBase64 = - "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"; + "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"; return pictureBase64; } @@ -230,18 +228,15 @@ template:
      This sample demonstrates how to work with shapes and text boxes.
      -
      -

      Set up

      - -

      Try it out

      Main document

      + @@ -287,4 +282,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 781a1c0bd7750c91417125b4cb83389b8063ac58..3d29ce38785b60ec83e2e9893b1348f64ea7e873 100644 GIT binary patch delta 17299 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 2dfd57dfa..d1907e430 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -20623,7 +20623,7 @@ Word.Body#shapes:member: await context.sync(); if (shapes.items.length > 0) { - shapes.items.forEach(function(shape, index) { + shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); } @@ -27320,9 +27320,7 @@ Word.Range#insertInlinePictureFromBase64:member(1): // Returns Base64-encoded image data for a sample picture. const pictureBase64 = - - "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"; - + "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"; return pictureBase64; Word.Range#insertTextBox:member(1): - >- @@ -27799,14 +27797,32 @@ Word.Shape#delete:member(1): await Word.run(async (context) => { // Deletes the first text box. - context.document.body.shapes - .getByTypes([Word.ShapeType.textBox]) - .getFirst() - .delete(); + context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirst().delete(); await context.sync(); console.log("The first text box in document was deleted."); }); +Word.Shape#body:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Inserts a content control into the first paragraph in the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirst(); + firstShapeWithTextBox.load("type/body"); + await context.sync(); + + const firstParagraphInTextBox: Word.Paragraph = firstShapeWithTextBox.body.paragraphs.getFirst(); + const newControl: Word.ContentControl = firstParagraphInTextBox.insertContentControl(); + newControl.load(); + await context.sync(); + + console.log("New content control properties:", newControl); + }); Word.Shape#type:member: - >- // Link to full sample: @@ -27820,7 +27836,7 @@ Word.Shape#type:member: await context.sync(); if (shapes.items.length > 0) { - shapes.items.forEach(function(shape, index) { + shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); } @@ -27842,7 +27858,7 @@ Word.ShapeCollection:class: await context.sync(); if (shapes.items.length > 0) { - shapes.items.forEach(function(shape, index) { + shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); } @@ -27891,6 +27907,24 @@ Word.ShapeCollection#getFirst:member(1): console.log("New content control properties:", newControl); }); +Word.ShapeCollection#getFirstOrNullObject:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets text from first text box in main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("body/text"); + await context.sync(); + + console.log( + shape.isNullObject + ? "No shapes with text boxes found in main document." + : `Text in first text box: ${shape.body.text}`, + ); + }); Word.ShapeType:enum: - >- // Link to full sample: @@ -27904,7 +27938,7 @@ Word.ShapeType:enum: await context.sync(); if (shapes.items.length > 0) { - shapes.items.forEach(function(shape, index) { + shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); } From 107fb5406ecc06f77cbb5e454a2476b3b47cd344 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Fri, 17 Oct 2025 15:16:58 -0700 Subject: [PATCH 60/71] [Outlook] (legacy tokens) Shorten section name (#1011) --- playlists-prod/outlook.yaml | 28 +++++++++---------- playlists/outlook.yaml | 28 +++++++++---------- .../get-icaluid-as-attendee.yaml | 0 .../get-icaluid-as-organizer.yaml | 0 .../ids-and-urls.yaml | 0 .../make-ews-request-async.yaml | 0 ...-message-using-make-ews-request-async.yaml | 0 .../user-callback-token.yaml | 0 .../user-identity-token.yaml | 0 snippet-extractor-output/snippets.yaml | 16 +++++------ view-prod/outlook.json | 14 +++++----- view/outlook.json | 14 +++++----- 12 files changed, 50 insertions(+), 50 deletions(-) rename samples/outlook/{85-tokens-and-service-calls-for-exchange-on-premises-environments => 85-tokens-for-exchange-on-premises}/get-icaluid-as-attendee.yaml (100%) rename samples/outlook/{85-tokens-and-service-calls-for-exchange-on-premises-environments => 85-tokens-for-exchange-on-premises}/get-icaluid-as-organizer.yaml (100%) rename samples/outlook/{85-tokens-and-service-calls-for-exchange-on-premises-environments => 85-tokens-for-exchange-on-premises}/ids-and-urls.yaml (100%) rename samples/outlook/{85-tokens-and-service-calls-for-exchange-on-premises-environments => 85-tokens-for-exchange-on-premises}/make-ews-request-async.yaml (100%) rename samples/outlook/{85-tokens-and-service-calls-for-exchange-on-premises-environments => 85-tokens-for-exchange-on-premises}/send-message-using-make-ews-request-async.yaml (100%) rename samples/outlook/{85-tokens-and-service-calls-for-exchange-on-premises-environments => 85-tokens-for-exchange-on-premises}/user-callback-token.yaml (100%) rename samples/outlook/{85-tokens-and-service-calls-for-exchange-on-premises-environments => 85-tokens-for-exchange-on-premises}/user-identity-token.yaml (100%) diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index 2b064ff8c..9a1b827bc 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -473,8 +473,8 @@ Retrieves the Exchange Web Services (EWS) endpoint URL and item IDs and converts item IDs for different protocols. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.5' - id: outlook-tokens-and-service-calls-user-identity-token @@ -484,8 +484,8 @@ Gets a user identity token for authentication flows in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-user-callback-token @@ -495,8 +495,8 @@ Gets a callback token to call Outlook services from an add-in's backend service in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-make-ews-request-async @@ -508,8 +508,8 @@ Uses EWS in an Exchange on-premises environment to get a message without any backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-send-message-using-make-ews-request-async @@ -521,8 +521,8 @@ Uses EWS in an Exchange on-premises environment to send a message without any backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-get-icaluid-as-organizer @@ -532,8 +532,8 @@ Uses Exchange Web Services (EWS) in an Exchange on-premises environment to get an appointment's iCalUId value where the user is the organizer. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.3' - id: outlook-tokens-and-service-calls-get-icaluid-as-attendee @@ -543,8 +543,8 @@ Uses Exchange Web Services (EWS) in an Exchange on-premises environment to get an appointment's iCalUId value where the user is an attendee. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-other-item-apis-get-subject-read diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index 085249207..557b89f9a 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -473,8 +473,8 @@ Retrieves the Exchange Web Services (EWS) endpoint URL and item IDs and converts item IDs for different protocols. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.5' - id: outlook-tokens-and-service-calls-user-identity-token @@ -484,8 +484,8 @@ Gets a user identity token for authentication flows in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-user-callback-token @@ -495,8 +495,8 @@ Gets a callback token to call Outlook services from an add-in's backend service in an Exchange on-premises environment. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-make-ews-request-async @@ -508,8 +508,8 @@ Uses EWS in an Exchange on-premises environment to get a message without any backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-send-message-using-make-ews-request-async @@ -521,8 +521,8 @@ Uses EWS in an Exchange on-premises environment to send a message without any backend code. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-tokens-and-service-calls-get-icaluid-as-organizer @@ -532,8 +532,8 @@ Uses Exchange Web Services (EWS) in an Exchange on-premises environment to get an appointment's iCalUId value where the user is the organizer. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.3' - id: outlook-tokens-and-service-calls-get-icaluid-as-attendee @@ -543,8 +543,8 @@ Uses Exchange Web Services (EWS) in an Exchange on-premises environment to get an appointment's iCalUId value where the user is an attendee. rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml - group: Tokens And Service Calls For Exchange On-Premises Environments + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml + group: Tokens For Exchange On-Premises api_set: Mailbox: '1.1' - id: outlook-other-item-apis-get-subject-read diff --git a/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml similarity index 100% rename from samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml rename to samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml diff --git a/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml similarity index 100% rename from samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml rename to samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml diff --git a/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml similarity index 100% rename from samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml rename to samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml diff --git a/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml similarity index 100% rename from samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml rename to samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml diff --git a/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml similarity index 100% rename from samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml rename to samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml diff --git a/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml similarity index 100% rename from samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml rename to samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml diff --git a/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml similarity index 100% rename from samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml rename to samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index d1907e430..69f9fe20e 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -11844,7 +11844,7 @@ Office.Location#setAsync:member(1): Office.Mailbox#convertToEwsId:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml // Get the EWS URL and EWS item ID. @@ -11873,7 +11873,7 @@ Office.Mailbox#convertToEwsId:member(1): Office.Mailbox#convertToRestId:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml // Get the EWS URL and EWS item ID. @@ -12095,7 +12095,7 @@ Office.Mailbox#displayNewMessageFormAsync:member(1): Office.Mailbox#ewsUrl:member: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml // Get the EWS URL and EWS item ID. @@ -12124,7 +12124,7 @@ Office.Mailbox#ewsUrl:member: Office.Mailbox#getCallbackTokenAsync:member(2): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml Office.context.mailbox.getCallbackTokenAsync((result) => { @@ -12162,7 +12162,7 @@ Office.Mailbox#getSelectedItemsAsync:member(2): Office.Mailbox#getUserIdentityTokenAsync:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml Office.context.mailbox.getUserIdentityTokenAsync((result) => { @@ -12207,7 +12207,7 @@ Office.Mailbox#loadItemByIdAsync:member(1): Office.Mailbox#makeEwsRequestAsync:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml const ewsId = Office.context.mailbox.item.itemId; @@ -12240,7 +12240,7 @@ Office.Mailbox#makeEwsRequestAsync:member(1): }); - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml const request = '- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml // Get the EWS URL and EWS item ID. diff --git a/view-prod/outlook.json b/view-prod/outlook.json index f8825fcac..3eeda67db 100644 --- a/view-prod/outlook.json +++ b/view-prod/outlook.json @@ -48,13 +48,13 @@ "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml", "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml", - "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml", - "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml", - "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml", - "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml", + "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml", + "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml", + "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml", + "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml", "outlook-other-item-apis-get-subject-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-subject-read.yaml", "outlook-other-item-apis-get-set-subject-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml", "outlook-item-body-set-selected-data": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/set-selected-data.yaml", diff --git a/view/outlook.json b/view/outlook.json index 3a5582021..6e7f14ee6 100644 --- a/view/outlook.json +++ b/view/outlook.json @@ -48,13 +48,13 @@ "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/75-regex-matches/contextual.yaml", "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/80-events/drag-drop-item.yaml", - "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/ids-and-urls.yaml", - "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-identity-token.yaml", - "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/user-callback-token.yaml", - "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/send-message-using-make-ews-request-async.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-organizer.yaml", - "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls-for-exchange-on-premises-environments/get-icaluid-as-attendee.yaml", + "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml", + "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml", + "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml", + "outlook-tokens-and-service-calls-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-send-message-using-make-ews-request-async": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-organizer": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml", + "outlook-tokens-and-service-calls-get-icaluid-as-attendee": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml", "outlook-other-item-apis-get-subject-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-subject-read.yaml", "outlook-other-item-apis-get-set-subject-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml", "outlook-item-body-set-selected-data": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/90-other-item-apis/set-selected-data.yaml", From 3cfec3223ad53dfe84ed20ba083990d3c526f669 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Thu, 23 Oct 2025 13:17:53 -0700 Subject: [PATCH 61/71] [Word] (shapes) Create section (#1012) --- playlists-prod/word.yaml | 18 +++++------ playlists/word.yaml | 18 +++++------ .../manage-shapes-text-boxes.yaml | 4 +-- snippet-extractor-metadata/word.xlsx | Bin 29026 -> 28985 bytes snippet-extractor-output/snippets.yaml | 30 +++++++++--------- view-prod/word.json | 2 +- view/word.json | 2 +- 7 files changed, 37 insertions(+), 37 deletions(-) rename samples/word/{50-document => 45-shapes}/manage-shapes-text-boxes.yaml (99%) diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index fb94dce48..72fdf9972 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -377,6 +377,15 @@ group: Tables api_set: WordApiDesktop: '1.1' +- id: word-shapes-manage-shapes-text-boxes + name: Work with shapes and text boxes + fileName: manage-shapes-text-boxes.yaml + description: Shows how to work with shapes and text boxes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + group: Shapes + api_set: + WordApiDesktop: '1.2' - id: word-document-manage-body name: Manage body fileName: manage-body.yaml @@ -544,15 +553,6 @@ group: Document api_set: WordApiDesktop: '1.1' -- id: word-document-manage-shapes-text-boxes - name: Work with shapes and text boxes - fileName: manage-shapes-text-boxes.yaml - description: Shows how to work with shapes and text boxes. - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml - group: Document - api_set: - WordApiDesktop: '1.2' - id: word-scenarios-doc-assembly name: Document assembly fileName: doc-assembly.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index db9076c31..1d848fb05 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -377,6 +377,15 @@ group: Tables api_set: WordApiDesktop: '1.1' +- id: word-shapes-manage-shapes-text-boxes + name: Work with shapes and text boxes + fileName: manage-shapes-text-boxes.yaml + description: Shows how to work with shapes and text boxes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/manage-shapes-text-boxes.yaml + group: Shapes + api_set: + WordApiDesktop: '1.2' - id: word-document-manage-body name: Manage body fileName: manage-body.yaml @@ -544,15 +553,6 @@ group: Document api_set: WordApiDesktop: '1.1' -- id: word-document-manage-shapes-text-boxes - name: Work with shapes and text boxes - fileName: manage-shapes-text-boxes.yaml - description: Shows how to work with shapes and text boxes. - rawUrl: >- - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-shapes-text-boxes.yaml - group: Document - api_set: - WordApiDesktop: '1.2' - id: word-scenarios-doc-assembly name: Document assembly fileName: doc-assembly.yaml diff --git a/samples/word/50-document/manage-shapes-text-boxes.yaml b/samples/word/45-shapes/manage-shapes-text-boxes.yaml similarity index 99% rename from samples/word/50-document/manage-shapes-text-boxes.yaml rename to samples/word/45-shapes/manage-shapes-text-boxes.yaml index 024f6e6fe..42902ad03 100644 --- a/samples/word/50-document/manage-shapes-text-boxes.yaml +++ b/samples/word/45-shapes/manage-shapes-text-boxes.yaml @@ -1,5 +1,5 @@ -order: 17 -id: word-document-manage-shapes-text-boxes +order: 1 +id: word-shapes-manage-shapes-text-boxes name: Work with shapes and text boxes description: Shows how to work with shapes and text boxes. author: yilin4 diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 3d29ce38785b60ec83e2e9893b1348f64ea7e873..0785001fae8e2ee5a84a0fd38e0dfb20bb0da124 100644 GIT binary patch delta 16695 zcmZ9!byS-{(>I);f#On%6Wra36Py+Z?pCC@Q=H(mP~6?!-K9|6-KDq`EAB7%{XWlo z&iCbyi9FW!+nWt{1;RXwzFHmb??r+xVIj+n51$m3V4>rdY` z!!%V>S*g?jwe}p2Wz`>*=7wE*r_GB(&Yc{9>=+Kl1S_hMSPwaCN;daT#FORC#Xkb_ zv~+9nXwFEJiX&8fhkK|stst2?dZKdR z!A`5>aW-fIT#Pan-oVpy9tr7G60;6EBih|Aa(M!yFkv>mTR#)UT+K_(TQ*~>W)a17 zWv0Krn5^{N>4P3FKX{`JH6W~UX7u7R{ei_MzsW&8)DDtwIrqz$gkimDy~Eg`10}D0^$1z4DYy9?VqXmm3FX4Z5oF>q|3n zd{jAfR798y}#w;D`aRl?oNkS|<4v9ScqJ<+gP`Ir?XBi;D zCL8M?bB$bJ>5?^$%jWO^m02geRQzs|kh}i!mFK zOc|NEHcrkd;t(HuG;CU3o;rSZ3cUHwE~32RV*W25Aa2S8uZ{(k3l1^6=^OxvGee_+ z+1f9&V-0L5ExT1eWePuT#d6Y3Bi3=<0Eh0J|K@9@JZZef({7&>gKDifFgQB%&URbVxEh>h0Kaersrs`)Tv z17sG5*gCZ~G^X5j{?UydbuaZNdSys}C5~L}P#JP6&qT6MEwHO; zqhh@4bHlM(5$9GL{qk(iMC6<+=Zmh$`CM;}q&I|wZLN&rq$VJF5I2y|~x#x$?f7HV$$)H`LZVQBe5=csF( zG{2WM520qSNcE2hGypb#?&&jK=ajT39tS7iSoW8o;T7Raoo#qz#|O;1jD9&sJ-xRSc9DFnan38M{kzbvEMnDBW# zM$bm9UB`TRtu~I5uYk?4#4_>@Rc5{1J=%9Y-#_h682Y{(-ojoU*}7h@Lk~l{o-RbY zp0=Z|3}5dbdJSLPbYS<_qOXsynO)Bp$M&yxmsO(ePXqsYCq$o9b6yjw57}V(udfRe zGsjmmQLhj8MdYxxs+Wq+hc8t=se&gBUwuxV#|)lI*~V{{-C#bpAFG~|Nd!C6;MZwv zb~C&dH%8||FV8G1$Ir%pJTbjINJMzJA$8(&3ReP%vl9K32zA#T2e|r}k3+p=P@J{3 zH1{{mb8hS}upekg%?9|Jkw``t1(EToFnno84>v=tgC<<9FUF6@Y&NWWxDAe}HeLJI zJt{t23m7X_CBZ_i{~4wQcLoMoUiEReqD65NdhKU_nf(>ivV4+eJ@-Gf`jsZX!2hL` ztZ(-6OpQS{#CzKRSv-(Au$!EbsEuxQF-`=vkmz*;{-?jNls#$OXApmKjT;7|H0kH$ z$p1d}^XPb}CDbWO@(V@u-lz0~C5Ao%M7WACpBHVfIwYan!ir#xxL-|nj20dpnFe=L zT%wJatRq#mLSkKU04v@F28ccC-TYWY=m*hRh0EN0rBlpSk2HDr#D)H50jUp4z>QXv z^!>RAmI<4ZTV5HhsG2F?DC~Z&2q+nV<;Y0E^Sw_L6#|{;0qV5%b}t7^YES{V(J5ZQ zcTCwE`G@al6ZC7SYmcZ^hdh!2V)rKMjkIYrX1|FZiIx6jt%$s^yCr+miw)+R0kr`q z{~e{cAzeSbwc_Ai_F;$E6=Hvbr*NpAu>VHPXHrsg;du@Bh(xtxPGrmn&>{2POBV0o z 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 K#uk$cQUCyi6ua&K diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 69f9fe20e..48d3b1c4b 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -20613,7 +20613,7 @@ Word.Body#paragraphs:member: Word.Body#shapes:member: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -25160,7 +25160,7 @@ Word.InsertLocation:enum: Word.InsertShapeOptions:interface: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -26427,7 +26427,7 @@ Word.Paragraph#insertText:member(1): Word.Paragraph#insertTextBox:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27291,7 +27291,7 @@ Word.Range#insertFootnote:member(1): Word.Range#insertInlinePictureFromBase64:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27314,7 +27314,7 @@ Word.Range#insertInlinePictureFromBase64:member(1): }); - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml // Returns Base64-encoded image data for a sample picture. @@ -27325,7 +27325,7 @@ Word.Range#insertInlinePictureFromBase64:member(1): Word.Range#insertTextBox:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27773,7 +27773,7 @@ Word.ShadingTextureType:enum: Word.Shape:class: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27792,7 +27792,7 @@ Word.Shape:class: Word.Shape#delete:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27805,7 +27805,7 @@ Word.Shape#delete:member(1): Word.Shape#body:member: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27826,7 +27826,7 @@ Word.Shape#body:member: Word.Shape#type:member: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27848,7 +27848,7 @@ Word.Shape#type:member: Word.ShapeCollection:class: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27870,7 +27870,7 @@ Word.ShapeCollection:class: Word.ShapeCollection#getByTypes:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27889,7 +27889,7 @@ Word.ShapeCollection#getByTypes:member(1): Word.ShapeCollection#getFirst:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27910,7 +27910,7 @@ Word.ShapeCollection#getFirst:member(1): Word.ShapeCollection#getFirstOrNullObject:member(1): - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { @@ -27928,7 +27928,7 @@ Word.ShapeCollection#getFirstOrNullObject:member(1): Word.ShapeType:enum: - >- // Link to full sample: - https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml await Word.run(async (context) => { diff --git a/view-prod/word.json b/view-prod/word.json index 87a70604a..f91bdf5ba 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -38,6 +38,7 @@ "word-tables-table-cell-access": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/table-cell-access.yaml", "word-tables-manage-formatting": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml", "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml", + "word-shapes-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml", "word-document-manage-body": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml", "word-document-insert-section-breaks": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-section-breaks.yaml", "word-document-insert-external-document": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml", @@ -54,7 +55,6 @@ "word-document-save-close": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/save-close.yaml", "word-document-manage-annotations": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-annotations.yaml", "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/compare-documents.yaml", - "word-document-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-shapes-text-boxes.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/multiple-property-set.yaml", "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/90-scenarios/correlated-objects-pattern.yaml", diff --git a/view/word.json b/view/word.json index 9189eca77..ebef6fc8f 100644 --- a/view/word.json +++ b/view/word.json @@ -38,6 +38,7 @@ "word-tables-table-cell-access": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/table-cell-access.yaml", "word-tables-manage-formatting": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/manage-formatting.yaml", "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/manage-custom-style.yaml", + "word-shapes-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/manage-shapes-text-boxes.yaml", "word-document-manage-body": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-body.yaml", "word-document-insert-section-breaks": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/insert-section-breaks.yaml", "word-document-insert-external-document": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/insert-external-document.yaml", @@ -54,7 +55,6 @@ "word-document-save-close": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/save-close.yaml", "word-document-manage-annotations": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-annotations.yaml", "word-document-compare-documents": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/compare-documents.yaml", - "word-document-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-shapes-text-boxes.yaml", "word-scenarios-doc-assembly": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/doc-assembly.yaml", "word-scenarios-multiple-property-set": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/multiple-property-set.yaml", "word-scenarios-correlated-objects-pattern": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/90-scenarios/correlated-objects-pattern.yaml", From ade8447197e2f43837ac2e74b7c3280c6ab4fd07 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Thu, 23 Oct 2025 13:43:46 -0700 Subject: [PATCH 62/71] [Outlook] Map code snippet (#1013) --- snippet-extractor-metadata/outlook.xlsx | Bin 24926 -> 24911 bytes snippet-extractor-output/snippets.yaml | 32 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index ef99fbe2699190fd28de29aa670d30cf50b8d3c4..e7f1f77f9fe9522c869744307241f6df58739e6f 100644 GIT binary patch delta 14899 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 delta 14931 zcmZ9zbx>T*6E?cIOK=Zv!GaSUf(H-o?(Vucf#8cf!GpUji@UpKarXrG%lo_a-LLAN zKTe&Rp6;2RdFB~AJ=F`d-V0Nki3H5cLG8zZ0|2;@001li0N`!U?&aiaXX@l+$L8%| zU#X$0yvBhYnAiA*y(dhowA~oRSY|^~g+mFCPLU{=y=aRg6E{ad_4+iaq;C98eIO#* zU}Gh(>*CyBSa?IDxUS%rMMrM>VgF|gT`M808&}iU4uz^Zo5rMh0VW?s2H-xI!^Bm? z#fDOgeq|oN5h*~W1=o$v0(ZqTtIAqx6?c7_L1w`y$+z0e7>?ij__=_J|wjcV;VOlu8KbbYD*cDu?LEetWCx}*^+3|kTn z0@hR>!rgNC6~VCBoFHYu8*n(dhujf%skDMQ6=nUOL@uBa3VJR2D8MW6QKI&VEOaNq zUvC;iT|lT7r-x7n0jY8m16|-PCL+Jlz3MA=2m7xrIKCwzK~`Fy0**X10d5hoN zu}O`txm{D^Kcl|I&@w4+cacrkKAb;O!0s|V6XvkWxwhcE6y;VNj05sHMy`E^F(p2 z;Vm~_bT*(g;?E}Ii%$}5T$}?B%v>N&qzA-B+rP%-HXr+gkzMl=&EI#l+HSwI2Wu{t zJ9Gf2?{I61J7{Di=!ZDI8n_`A8?O<32?&$5E*pGah`2lcYPUk9udp}QoX0V9`$PM0 z#7Ss4PN~JpOFM2-HOV{#%XBmw((m;n?+|bB+~}*V07xQA7c6@lCtx(H44E%H{nkD& zii+Ex8)oH5avy@ak*3BW+|Wy?eXXSJ8j%5X9kCy)$bQa!vLShB*(*ZsTcOQOX#xFW z+#Z>j5R#1s|2wzLe5KO*8EqCB%Pb?21EL;IRmJ{rVQb$KgX<_=zi(NdrY3QiYIA=imA92e%@RY3f}lLsY|zsnJk-Bo5oBQczt6E;J}SviT_4V%wdf*&f*zrgA-S?ZZDQEd?Y7**WG~e zf(8J*y}eWN+gnkNUEC+Wr0^C~Zy2*griDTiQld1+v%X8BLnGnX<{7SrCpn;6FV7zFGo4*S(!M zv2OtHy7rz=oPbX?Z{XM0A*ZglovFM|(U+k;*IwYk1@QH6%l=~?_~P}a=(uji}=@j2wD70Net2`l@&xTz(^5eyU7SXbk66UFq1RP{4#~)O;z&iq0!W5lKlw6JK^r5QZ_UjcU4<8x0ivq4l3(Q`ym=0+%OdB;_}Aj! z5(6@%AEcLtfTZQ3ba{=wtz77p{dnk>XU+-5AfX)^G~CT={9O(~NrPZ z_zca)RhI7WN`L+kpr&HQ>_1Uh6dz2?lLf9@zR66t`7tWNP&c0x7&afa9ZGA}%%w46 zc}+8U#D-f=brV>ve+K{S7@r2Mh#w2-KYA*y<@)Viiv+IvP`B84qvR?;1C_+L3)zJQ zWWaiM{xoXqi|dp7>X6W180n^2dsUHNc+%>qN{C`ec(A(`z|WL&>_ffa`GGa;fY>qEpzho3U!r}tU^G> zS~3pd0A=;*aqDx^R=%}rItX)xv+=h8@Li&daG;1-zuSKKU8>WW

      ZHHp-lx}`QDKr*t` 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 + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/append-text-on-send.yaml + + + // This snippet appends text to the end of the message or appointment's body + once it's sent. + + const text = (document.getElementById("text-field") as + HTMLInputElement).value; + + + // It's recommended to call getTypeAsync and pass its returned value to the + options.coercionType parameter of the appendOnSendAsync call. + + Office.context.mailbox.item.body.getTypeAsync((asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log("Action failed with error: " + asyncResult.error.message); + return; + } + + const bodyFormat = asyncResult.value; + Office.context.mailbox.item.body.appendOnSendAsync(text, { coercionType: bodyFormat }, (asyncResult) => { + if (asyncResult.status === Office.AsyncResultStatus.Failed) { + console.log("Action failed with error: " + asyncResult.error.message); + return; + } + + console.log(`"${text}" will be appended to the body once the message or appointment is sent. Send the mail item to test this feature.`); + }); + }); Office.CustomProperties#get:member(1): - >- // Link to full sample: From 2306604c55c6a0abc75aae0ca540ad54d91fd92b Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 24 Oct 2025 07:38:17 -0700 Subject: [PATCH 63/71] [Word] (Shape) Add snippets for textFrame and textWrap (#1015) * [Word] (TextFrame) Add snippet * Add samples for text wrap --- .../45-shapes/manage-shapes-text-boxes.yaml | 129 ++++++++++-- snippet-extractor-metadata/word.xlsx | Bin 28985 -> 29303 bytes snippet-extractor-output/snippets.yaml | 194 +++++++++++++++++- 3 files changed, 300 insertions(+), 23 deletions(-) diff --git a/samples/word/45-shapes/manage-shapes-text-boxes.yaml b/samples/word/45-shapes/manage-shapes-text-boxes.yaml index 42902ad03..8e143f438 100644 --- a/samples/word/45-shapes/manage-shapes-text-boxes.yaml +++ b/samples/word/45-shapes/manage-shapes-text-boxes.yaml @@ -11,9 +11,18 @@ script: document .getElementById("insert-text-box-into-current-selection") .addEventListener("click", () => tryCatch(insertTextBoxIntoCurrentSelection)); + document + .getElementById("get-text-wrap-of-text-box-in-main-doc") + .addEventListener("click", () => tryCatch(getTextWrapOfTextBoxInMainDoc)); + document + .getElementById("set-text-wrap-of-text-box-in-main-doc") + .addEventListener("click", () => tryCatch(setTextWrapPropertiesOfTextBoxInMainDoc)); document .getElementById("get-text-from-text-box-in-main-doc") .addEventListener("click", () => tryCatch(getTextFromTextBoxInMainDoc)); + document + .getElementById("get-text-frame-of-text-box-in-main-doc") + .addEventListener("click", () => tryCatch(getTextFrameOfTextBoxInMainDoc)); document.getElementById("get-text-boxes-in-main-doc").addEventListener("click", () => tryCatch(getTextBoxesInMainDoc)); document.getElementById("set-text-box-properties").addEventListener("click", () => tryCatch(setTextBoxProperties)); document @@ -30,6 +39,7 @@ script: .getElementById("insert-text-box-in-header-at-first-paragraph") .addEventListener("click", () => tryCatch(insertTextBoxInHeaderAtFirstParagraph)); document.getElementById("get-text-box-in-header").addEventListener("click", () => tryCatch(getTextBoxInHeader)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertTextBoxIntoCurrentSelection() { await Word.run(async (context) => { @@ -49,9 +59,48 @@ script: }); } + async function getTextWrapOfTextBoxInMainDoc() { + await Word.run(async (context) => { + // Gets text wrap properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textWrap"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + console.log("Text wrap properties of first text box:", shape.textWrap); + }); + } + + async function setTextWrapPropertiesOfTextBoxInMainDoc() { + await Word.run(async (context) => { + // Sets the text wrap properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirstOrNullObject(); + firstShapeWithTextBox.load("textWrap"); + await context.sync(); + + if (firstShapeWithTextBox.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; + + textWrap.type = Word.ShapeTextWrapType.square; + textWrap.side = Word.ShapeTextWrapSide.both; + + console.log("The first text box's text wrap properties were updated:", textWrap); + }); + } + async function getTextFromTextBoxInMainDoc() { await Word.run(async (context) => { - // Gets text from first text box in main document. + // Gets text from the first text box in the main document. const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); shape.load("body/text"); await context.sync(); @@ -59,14 +108,30 @@ script: console.log( shape.isNullObject ? "No shapes with text boxes found in main document." - : `Text in first text box: ${shape.body.text}`, + : `Text in first text box: ${shape.body.text}` ); }); } + async function getTextFrameOfTextBoxInMainDoc() { + await Word.run(async (context) => { + // Gets the text frame of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + console.log("Text frame of first text box:", shape.textFrame); + }); + } + async function getTextBoxesInMainDoc() { await Word.run(async (context) => { - // Gets text boxes in main document. + // Gets text boxes in the main document. const shapes: Word.ShapeCollection = context.document.body.shapes; shapes.load(); await context.sync(); @@ -167,7 +232,7 @@ script: async function insertTextBoxInHeaderAtFirstParagraph() { await Word.run(async (context) => { - // Inserts a text box at the beginning of the first paragraph in header. + // Inserts a text box at the beginning of the first paragraph in the header. const headerFooterBody: Word.Body = context.document.sections.getFirst().getHeader(Word.HeaderFooterType.primary); headerFooterBody.load("paragraphs"); const firstParagraph: Word.Paragraph = headerFooterBody.paragraphs.getFirst(); @@ -187,7 +252,7 @@ script: async function getTextBoxInHeader() { await Word.run(async (context) => { - // Gets text boxes in header. + // Gets text boxes in the header. const shapes: Word.ShapeCollection = context.document.sections .getFirst() .getHeader(Word.HeaderFooterType.primary).shapes; @@ -206,6 +271,23 @@ script: }); } + async function setup() { + await Word.run(async (context) => { + const body: Word.Body = context.document.body; + body.clear(); + body.insertParagraph( + "Do you want to create a solution that extends the functionality of Word? You can use the Office Add-ins platform to extend Word clients running on the web, on a Windows desktop, or on a Mac.", + "Start", + ); + body.paragraphs + .getLast() + .insertText( + "Use add-in commands to extend the Word UI and launch task panes that run JavaScript that interacts with the content in a Word document. Any code that you can run in a browser can run in a Word add-in. Add-ins that interact with content in a Word document create requests to act on Word objects and synchronize object state.", + "Replace", + ); + }); + } + function getPictureBase64(): string { // Returns Base64-encoded image data for a sample picture. const pictureBase64 = @@ -228,39 +310,54 @@ template:

      This sample demonstrates how to work with shapes and text boxes.
      +
      +

      Set up

      + +

      Try it out

      Main document

      + Insert text box into current selection + + + +

      Header

      language: html diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 0785001fae8e2ee5a84a0fd38e0dfb20bb0da124..d08224f9c5452620cd2f37637d9a906ce8e42643 100644 GIT binary patch delta 19521 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
      &>T)679#F53`z(C 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 delta 19162 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 H00000F#dVf diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index de9e20842..e55ae8e35 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -20649,7 +20649,7 @@ Word.Body#shapes:member: await Word.run(async (context) => { - // Gets text boxes in main document. + // Gets text boxes in the main document. const shapes: Word.ShapeCollection = context.document.body.shapes; shapes.load(); await context.sync(); @@ -26463,7 +26463,7 @@ Word.Paragraph#insertTextBox:member(1): await Word.run(async (context) => { - // Inserts a text box at the beginning of the first paragraph in header. + // Inserts a text box at the beginning of the first paragraph in the header. const headerFooterBody: Word.Body = context.document.sections.getFirst().getHeader(Word.HeaderFooterType.primary); headerFooterBody.load("paragraphs"); const firstParagraph: Word.Paragraph = headerFooterBody.paragraphs.getFirst(); @@ -27855,6 +27855,44 @@ Word.Shape#body:member: console.log("New content control properties:", newControl); }); +Word.Shape#textFrame:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets the text frame of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + console.log("Text frame of first text box:", shape.textFrame); + }); +Word.Shape#textWrap:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets text wrap properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textWrap"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + console.log("Text wrap properties of first text box:", shape.textWrap); + }); Word.Shape#type:member: - >- // Link to full sample: @@ -27862,7 +27900,7 @@ Word.Shape#type:member: await Word.run(async (context) => { - // Gets text boxes in main document. + // Gets text boxes in the main document. const shapes: Word.ShapeCollection = context.document.body.shapes; shapes.load(); await context.sync(); @@ -27884,7 +27922,7 @@ Word.ShapeCollection:class: await Word.run(async (context) => { - // Gets text boxes in main document. + // Gets text boxes in the main document. const shapes: Word.ShapeCollection = context.document.body.shapes; shapes.load(); await context.sync(); @@ -27946,7 +27984,7 @@ Word.ShapeCollection#getFirstOrNullObject:member(1): await Word.run(async (context) => { - // Gets text from first text box in main document. + // Gets text from the first text box in the main document. const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); shape.load("body/text"); await context.sync(); @@ -27954,9 +27992,132 @@ Word.ShapeCollection#getFirstOrNullObject:member(1): console.log( shape.isNullObject ? "No shapes with text boxes found in main document." - : `Text in first text box: ${shape.body.text}`, + : `Text in first text box: ${shape.body.text}` ); }); +Word.ShapeTextWrap:class: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets text wrap properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textWrap"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + console.log("Text wrap properties of first text box:", shape.textWrap); + }); +Word.ShapeTextWrap#side:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets the text wrap properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirstOrNullObject(); + firstShapeWithTextBox.load("textWrap"); + await context.sync(); + + if (firstShapeWithTextBox.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; + + textWrap.type = Word.ShapeTextWrapType.square; + textWrap.side = Word.ShapeTextWrapSide.both; + + console.log("The first text box's text wrap properties were updated:", textWrap); + }); +Word.ShapeTextWrap#type:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets the text wrap properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirstOrNullObject(); + firstShapeWithTextBox.load("textWrap"); + await context.sync(); + + if (firstShapeWithTextBox.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; + + textWrap.type = Word.ShapeTextWrapType.square; + textWrap.side = Word.ShapeTextWrapSide.both; + + console.log("The first text box's text wrap properties were updated:", textWrap); + }); +Word.ShapeTextWrapSide:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets the text wrap properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirstOrNullObject(); + firstShapeWithTextBox.load("textWrap"); + await context.sync(); + + if (firstShapeWithTextBox.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; + + textWrap.type = Word.ShapeTextWrapType.square; + textWrap.side = Word.ShapeTextWrapSide.both; + + console.log("The first text box's text wrap properties were updated:", textWrap); + }); +Word.ShapeTextWrapType:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets the text wrap properties of the first text box. + const firstShapeWithTextBox: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.textBox]) + .getFirstOrNullObject(); + firstShapeWithTextBox.load("textWrap"); + await context.sync(); + + if (firstShapeWithTextBox.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; + + textWrap.type = Word.ShapeTextWrapType.square; + textWrap.side = Word.ShapeTextWrapSide.both; + + console.log("The first text box's text wrap properties were updated:", textWrap); + }); Word.ShapeType:enum: - >- // Link to full sample: @@ -27964,7 +28125,7 @@ Word.ShapeType:enum: await Word.run(async (context) => { - // Gets text boxes in main document. + // Gets text boxes in the main document. const shapes: Word.ShapeCollection = context.document.body.shapes; shapes.load(); await context.sync(); @@ -28816,6 +28977,25 @@ Word.TableStyle:class: (document.getElementById("right-cell-margin") as HTMLInputElement).value = tableStyle.rightCellMargin; (document.getElementById("cell-spacing") as HTMLInputElement).value = tableStyle.cellSpacing; }); +Word.TextFrame:class: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Gets the text frame of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + console.log("Text frame of first text box:", shape.textFrame); + }); Word.TrackedChange:class: - >- // Link to full sample: From 8e37f6611bfb2215c3e78746e8805a4a83d5395b Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 24 Oct 2025 14:13:16 -0700 Subject: [PATCH 64/71] [Word] (TextFrame) Add snippet using properties (#1016) --- .../45-shapes/manage-shapes-text-boxes.yaml | 133 ++++++++------ snippet-extractor-metadata/word.xlsx | Bin 29303 -> 29543 bytes snippet-extractor-output/snippets.yaml | 168 +++++++++++++++++- 3 files changed, 243 insertions(+), 58 deletions(-) diff --git a/samples/word/45-shapes/manage-shapes-text-boxes.yaml b/samples/word/45-shapes/manage-shapes-text-boxes.yaml index 8e143f438..52c4599ee 100644 --- a/samples/word/45-shapes/manage-shapes-text-boxes.yaml +++ b/samples/word/45-shapes/manage-shapes-text-boxes.yaml @@ -11,20 +11,23 @@ script: document .getElementById("insert-text-box-into-current-selection") .addEventListener("click", () => tryCatch(insertTextBoxIntoCurrentSelection)); + document.getElementById("get-text-boxes-in-main-doc").addEventListener("click", () => tryCatch(getTextBoxesInMainDoc)); document .getElementById("get-text-wrap-of-text-box-in-main-doc") .addEventListener("click", () => tryCatch(getTextWrapOfTextBoxInMainDoc)); document .getElementById("set-text-wrap-of-text-box-in-main-doc") .addEventListener("click", () => tryCatch(setTextWrapPropertiesOfTextBoxInMainDoc)); - document - .getElementById("get-text-from-text-box-in-main-doc") - .addEventListener("click", () => tryCatch(getTextFromTextBoxInMainDoc)); document .getElementById("get-text-frame-of-text-box-in-main-doc") .addEventListener("click", () => tryCatch(getTextFrameOfTextBoxInMainDoc)); - document.getElementById("get-text-boxes-in-main-doc").addEventListener("click", () => tryCatch(getTextBoxesInMainDoc)); + document + .getElementById("set-text-frame-of-text-box-in-main-doc") + .addEventListener("click", () => tryCatch(setTextFramePropertiesOfTextBoxInMainDoc)); document.getElementById("set-text-box-properties").addEventListener("click", () => tryCatch(setTextBoxProperties)); + document + .getElementById("get-text-from-text-box-in-main-doc") + .addEventListener("click", () => tryCatch(getTextFromTextBoxInMainDoc)); document .getElementById("insert-content-control-into-text-box") .addEventListener("click", () => tryCatch(insertContentControlIntoTextBox)); @@ -38,7 +41,7 @@ script: document .getElementById("insert-text-box-in-header-at-first-paragraph") .addEventListener("click", () => tryCatch(insertTextBoxInHeaderAtFirstParagraph)); - document.getElementById("get-text-box-in-header").addEventListener("click", () => tryCatch(getTextBoxInHeader)); + document.getElementById("get-text-boxes-in-header").addEventListener("click", () => tryCatch(getTextBoxesInHeader)); document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); async function insertTextBoxIntoCurrentSelection() { @@ -59,6 +62,28 @@ script: }); } + async function getTextBoxesInMainDoc() { + await Word.run(async (context) => { + // Gets text boxes in the main document. + const shapes: Word.ShapeCollection = context.document.body.shapes; + shapes.load(); + await context.sync(); + + if (shapes.items.length > 0) { + console.log(`Number of shapes found in the main document: ${shapes.items.length}`); + shapes.items.forEach(function (shape, index) { + if (shape.type === Word.ShapeType.textBox) { + console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } else { + console.log(`Shape ${index} in the main document doesn't have a text box.`); + } + }); + } else { + console.log("No shapes found in main document."); + } + }); + } + async function getTextWrapOfTextBoxInMainDoc() { await Word.run(async (context) => { // Gets text wrap properties of the first text box in the main document. @@ -77,7 +102,7 @@ script: async function setTextWrapPropertiesOfTextBoxInMainDoc() { await Word.run(async (context) => { - // Sets the text wrap properties of the first text box. + // Sets text wrap properties of the first text box. const firstShapeWithTextBox: Word.Shape = context.document.body.shapes .getByTypes([Word.ShapeType.textBox]) .getFirstOrNullObject(); @@ -90,7 +115,6 @@ script: } const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; - textWrap.type = Word.ShapeTextWrapType.square; textWrap.side = Word.ShapeTextWrapSide.both; @@ -98,21 +122,6 @@ script: }); } - async function getTextFromTextBoxInMainDoc() { - await Word.run(async (context) => { - // Gets text from the first text box in the main document. - const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); - shape.load("body/text"); - await context.sync(); - - console.log( - shape.isNullObject - ? "No shapes with text boxes found in main document." - : `Text in first text box: ${shape.body.text}` - ); - }); - } - async function getTextFrameOfTextBoxInMainDoc() { await Word.run(async (context) => { // Gets the text frame of the first text box in the main document. @@ -129,22 +138,24 @@ script: }); } - async function getTextBoxesInMainDoc() { + async function setTextFramePropertiesOfTextBoxInMainDoc() { await Word.run(async (context) => { - // Gets text boxes in the main document. - const shapes: Word.ShapeCollection = context.document.body.shapes; - shapes.load(); + // Sets text frame properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); await context.sync(); - if (shapes.items.length > 0) { - shapes.items.forEach(function (shape, index) { - if (shape.type === Word.ShapeType.textBox) { - console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); - } - }); - } else { - console.log("No shapes found in main document."); + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; } + + const textFrame: Word.TextFrame = shape.textFrame; + textFrame.verticalAlignment = Word.ShapeTextVerticalAlignment.bottom; + textFrame.orientation = Word.ShapeTextOrientation.vertical270; + textFrame.autoSizeSetting = Word.ShapeAutoSize.shapeToFitText; + + console.log("The first text box's text frame properties were updated:", textFrame); }); } @@ -164,6 +175,21 @@ script: }); } + async function getTextFromTextBoxInMainDoc() { + await Word.run(async (context) => { + // Gets text from the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("body/text"); + await context.sync(); + + console.log( + shape.isNullObject + ? "No shapes with text boxes found in main document." + : `Text in first text box: ${shape.body.text}` + ); + }); + } + async function insertContentControlIntoTextBox() { await Word.run(async (context) => { // Inserts a content control into the first paragraph in the first text box. @@ -195,7 +221,7 @@ script: contentControlsInTextBox.load(); await context.sync(); - console.log(`There are ${contentControlsInTextBox.items.length} content controls in total.`); + console.log(`Number of content controls: ${contentControlsInTextBox.items.length}`); }); } @@ -250,7 +276,7 @@ script: }); } - async function getTextBoxInHeader() { + async function getTextBoxesInHeader() { await Word.run(async (context) => { // Gets text boxes in the header. const shapes: Word.ShapeCollection = context.document.sections @@ -260,9 +286,12 @@ script: await context.sync(); if (shapes.items.length > 0) { + console.log(`Number of shapes found in the header: ${shapes.items.length}`); shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { - console.log(`Shape ${index} in header has a text box. Properties:`, shape); + console.log(`Shape ${index} in the header has a text box. Properties:`, shape); + } else { + console.log(`Shape ${index} in the header doesn't have a text box.`); } }); } else { @@ -322,41 +351,45 @@ template: + +

      The following buttons act on the first text box in the main document.

      - - +

      Header

      -
      diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index d08224f9c5452620cd2f37637d9a906ce8e42643..488e758f71e85ec4ab9e7b10ee247f284350b98a 100644 GIT binary patch delta 21434 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index e55ae8e35..88c2f8671 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -20655,9 +20655,12 @@ Word.Body#shapes:member: await context.sync(); if (shapes.items.length > 0) { + console.log(`Number of shapes found in the main document: ${shapes.items.length}`); shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } else { + console.log(`Shape ${index} in the main document doesn't have a text box.`); } }); } else { @@ -27906,15 +27909,42 @@ Word.Shape#type:member: await context.sync(); if (shapes.items.length > 0) { + console.log(`Number of shapes found in the main document: ${shapes.items.length}`); shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } else { + console.log(`Shape ${index} in the main document doesn't have a text box.`); } }); } else { console.log("No shapes found in main document."); } }); +Word.ShapeAutoSize:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets text frame properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textFrame: Word.TextFrame = shape.textFrame; + textFrame.verticalAlignment = Word.ShapeTextVerticalAlignment.bottom; + textFrame.orientation = Word.ShapeTextOrientation.vertical270; + textFrame.autoSizeSetting = Word.ShapeAutoSize.shapeToFitText; + + console.log("The first text box's text frame properties were updated:", textFrame); + }); Word.ShapeCollection:class: - >- // Link to full sample: @@ -27928,9 +27958,12 @@ Word.ShapeCollection:class: await context.sync(); if (shapes.items.length > 0) { + console.log(`Number of shapes found in the main document: ${shapes.items.length}`); shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } else { + console.log(`Shape ${index} in the main document doesn't have a text box.`); } }); } else { @@ -27995,6 +28028,54 @@ Word.ShapeCollection#getFirstOrNullObject:member(1): : `Text in first text box: ${shape.body.text}` ); }); +Word.ShapeTextOrientation:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets text frame properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textFrame: Word.TextFrame = shape.textFrame; + textFrame.verticalAlignment = Word.ShapeTextVerticalAlignment.bottom; + textFrame.orientation = Word.ShapeTextOrientation.vertical270; + textFrame.autoSizeSetting = Word.ShapeAutoSize.shapeToFitText; + + console.log("The first text box's text frame properties were updated:", textFrame); + }); +Word.ShapeTextVerticalAlignment:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets text frame properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textFrame: Word.TextFrame = shape.textFrame; + textFrame.verticalAlignment = Word.ShapeTextVerticalAlignment.bottom; + textFrame.orientation = Word.ShapeTextOrientation.vertical270; + textFrame.autoSizeSetting = Word.ShapeAutoSize.shapeToFitText; + + console.log("The first text box's text frame properties were updated:", textFrame); + }); Word.ShapeTextWrap:class: - >- // Link to full sample: @@ -28021,7 +28102,7 @@ Word.ShapeTextWrap#side:member: await Word.run(async (context) => { - // Sets the text wrap properties of the first text box. + // Sets text wrap properties of the first text box. const firstShapeWithTextBox: Word.Shape = context.document.body.shapes .getByTypes([Word.ShapeType.textBox]) .getFirstOrNullObject(); @@ -28034,7 +28115,6 @@ Word.ShapeTextWrap#side:member: } const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; - textWrap.type = Word.ShapeTextWrapType.square; textWrap.side = Word.ShapeTextWrapSide.both; @@ -28047,7 +28127,7 @@ Word.ShapeTextWrap#type:member: await Word.run(async (context) => { - // Sets the text wrap properties of the first text box. + // Sets text wrap properties of the first text box. const firstShapeWithTextBox: Word.Shape = context.document.body.shapes .getByTypes([Word.ShapeType.textBox]) .getFirstOrNullObject(); @@ -28060,7 +28140,6 @@ Word.ShapeTextWrap#type:member: } const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; - textWrap.type = Word.ShapeTextWrapType.square; textWrap.side = Word.ShapeTextWrapSide.both; @@ -28073,7 +28152,7 @@ Word.ShapeTextWrapSide:enum: await Word.run(async (context) => { - // Sets the text wrap properties of the first text box. + // Sets text wrap properties of the first text box. const firstShapeWithTextBox: Word.Shape = context.document.body.shapes .getByTypes([Word.ShapeType.textBox]) .getFirstOrNullObject(); @@ -28086,7 +28165,6 @@ Word.ShapeTextWrapSide:enum: } const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; - textWrap.type = Word.ShapeTextWrapType.square; textWrap.side = Word.ShapeTextWrapSide.both; @@ -28099,7 +28177,7 @@ Word.ShapeTextWrapType:enum: await Word.run(async (context) => { - // Sets the text wrap properties of the first text box. + // Sets text wrap properties of the first text box. const firstShapeWithTextBox: Word.Shape = context.document.body.shapes .getByTypes([Word.ShapeType.textBox]) .getFirstOrNullObject(); @@ -28112,7 +28190,6 @@ Word.ShapeTextWrapType:enum: } const textWrap: Word.ShapeTextWrap = firstShapeWithTextBox.textWrap; - textWrap.type = Word.ShapeTextWrapType.square; textWrap.side = Word.ShapeTextWrapSide.both; @@ -28131,9 +28208,12 @@ Word.ShapeType:enum: await context.sync(); if (shapes.items.length > 0) { + console.log(`Number of shapes found in the main document: ${shapes.items.length}`); shapes.items.forEach(function (shape, index) { if (shape.type === Word.ShapeType.textBox) { console.log(`Shape ${index} in the main document has a text box. Properties:`, shape); + } else { + console.log(`Shape ${index} in the main document doesn't have a text box.`); } }); } else { @@ -28996,6 +29076,78 @@ Word.TextFrame:class: console.log("Text frame of first text box:", shape.textFrame); }); +Word.TextFrame#autoSizeSetting:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets text frame properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textFrame: Word.TextFrame = shape.textFrame; + textFrame.verticalAlignment = Word.ShapeTextVerticalAlignment.bottom; + textFrame.orientation = Word.ShapeTextOrientation.vertical270; + textFrame.autoSizeSetting = Word.ShapeAutoSize.shapeToFitText; + + console.log("The first text box's text frame properties were updated:", textFrame); + }); +Word.TextFrame#orientation:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets text frame properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textFrame: Word.TextFrame = shape.textFrame; + textFrame.verticalAlignment = Word.ShapeTextVerticalAlignment.bottom; + textFrame.orientation = Word.ShapeTextOrientation.vertical270; + textFrame.autoSizeSetting = Word.ShapeAutoSize.shapeToFitText; + + console.log("The first text box's text frame properties were updated:", textFrame); + }); +Word.TextFrame#verticalAlignment:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml + + + await Word.run(async (context) => { + // Sets text frame properties of the first text box in the main document. + const shape: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.textBox]).getFirstOrNullObject(); + shape.load("textFrame"); + await context.sync(); + + if (shape.isNullObject) { + console.log("No shapes with text boxes found in main document."); + return; + } + + const textFrame: Word.TextFrame = shape.textFrame; + textFrame.verticalAlignment = Word.ShapeTextVerticalAlignment.bottom; + textFrame.orientation = Word.ShapeTextOrientation.vertical270; + textFrame.autoSizeSetting = Word.ShapeAutoSize.shapeToFitText; + + console.log("The first text box's text frame properties were updated:", textFrame); + }); Word.TrackedChange:class: - >- // Link to full sample: From e2c8bab6917bb29861bb2a445f000e0c8869dd0d Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Mon, 27 Oct 2025 11:32:12 -0700 Subject: [PATCH 65/71] [Outlook] Update and map appointment date snippets (#1018) [Outlook] Update and map appointment date snippets --- .../90-other-item-apis/get-end-read.yaml | 21 +++-- .../get-set-end-appointment-organizer.yaml | 33 ++++++-- .../get-set-start-appointment-organizer.yaml | 31 ++++++-- .../90-other-item-apis/get-start-read.yaml | 23 ++++-- snippet-extractor-metadata/outlook.xlsx | Bin 24911 -> 24859 bytes snippet-extractor-output/snippets.yaml | 73 ++++++++++++++++-- 6 files changed, 150 insertions(+), 31 deletions(-) diff --git a/samples/outlook/90-other-item-apis/get-end-read.yaml b/samples/outlook/90-other-item-apis/get-end-read.yaml index e66f3af01..6375abab8 100644 --- a/samples/outlook/90-other-item-apis/get-end-read.yaml +++ b/samples/outlook/90-other-item-apis/get-end-read.yaml @@ -7,10 +7,18 @@ api_set: Mailbox: '1.1' script: content: |- - document.getElementById("get").addEventListener("click", get); + document.getElementById("get-utc").addEventListener("click", getUtc); + document.getElementById("get-local").addEventListener("click", getLocal); - function get() { - console.log(`Appointment ends: ${Office.context.mailbox.item.end}`); + function getUtc() { + const time = Office.context.mailbox.item.end; + console.log(`Appointment ends (UTC): ${time.toUTCString()}`); + } + + function getLocal() { + const time = Office.context.mailbox.item.end; + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + console.log(`Appointment ends (local): ${localTime.month + 1}/${localTime.date}/${localTime.year}, ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); } language: typescript template: @@ -22,8 +30,11 @@ template:

      Try it out

      +
      Get end date and time (UTC)
      + +
      language: html style: diff --git a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml index 22f02f686..4e8340ca6 100644 --- a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml @@ -7,16 +7,32 @@ api_set: Mailbox: '1.1' script: content: |- - document.getElementById("get").addEventListener("click", get); + document.getElementById("get-utc").addEventListener("click", getUtc); + document.getElementById("get-local").addEventListener("click", getLocal); document.getElementById("set").addEventListener("click", set); - function get() { + function getUtc() { Office.context.mailbox.item.end.getAsync((result) => { if (result.status !== Office.AsyncResultStatus.Succeeded) { console.error(`Action failed with message ${result.error.message}`); return; } - console.log(`Appointment ends: ${result.value}`); + + const time = result.value; + console.log(`Appointment ends (UTC): ${time.toUTCString()}`); + }); + } + + function getLocal() { + Office.context.mailbox.item.end.getAsync((result) => { + if (result.status !== Office.AsyncResultStatus.Succeeded) { + console.error(`Action failed with message ${result.error.message}`); + return; + } + + const time = result.value; + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + console.log(`Appointment ends (local): ${localTime.month + 1}/${localTime.date}/${localTime.year}, ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); }); } @@ -50,9 +66,12 @@ template: - + +
      language: html style: @@ -73,4 +92,4 @@ libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css - https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml index d58d33125..ef459d16c 100644 --- a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml @@ -7,16 +7,32 @@ api_set: Mailbox: '1.1' script: content: |- - document.getElementById("get").addEventListener("click", get); + document.getElementById("get-utc").addEventListener("click", getUtc); + document.getElementById("get-local").addEventListener("click", getLocal); document.getElementById("set").addEventListener("click", set); - function get() { + function getUtc() { Office.context.mailbox.item.start.getAsync((result) => { if (result.status !== Office.AsyncResultStatus.Succeeded) { console.error(`Action failed with message ${result.error.message}`); return; } - console.log(`Appointment starts: ${result.value}`); + + const time = result.value; + console.log(`Appointment starts (UTC): ${time.toUTCString()}`); + }); + } + + function getLocal() { + Office.context.mailbox.item.start.getAsync((result) => { + if (result.status !== Office.AsyncResultStatus.Succeeded) { + console.error(`Action failed with message ${result.error.message}`); + return; + } + + const time = result.value; + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + console.log(`Appointment starts (local): ${localTime.month + 1}/${localTime.date}/${localTime.year}, ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); }); } @@ -43,9 +59,12 @@ template: - + +
      language: html style: diff --git a/samples/outlook/90-other-item-apis/get-start-read.yaml b/samples/outlook/90-other-item-apis/get-start-read.yaml index bc2cd169c..541f6c56e 100644 --- a/samples/outlook/90-other-item-apis/get-start-read.yaml +++ b/samples/outlook/90-other-item-apis/get-start-read.yaml @@ -7,10 +7,18 @@ api_set: Mailbox: '1.1' script: content: |- - document.getElementById("get").addEventListener("click", get); + document.getElementById("get-utc").addEventListener("click", getUtc); + document.getElementById("get-local").addEventListener("click", getLocal); - function get() { - console.log(`Appointment starts: ${Office.context.mailbox.item.start}`); + function getUtc() { + const time = Office.context.mailbox.item.start; + console.log(`Appointment starts (UTC): ${time.toUTCString()}`); + } + + function getLocal() { + const time = Office.context.mailbox.item.start; + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + console.log(`Appointment starts (local): ${localTime.month + 1}/${localTime.date}/${localTime.year}, ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); } language: typescript template: @@ -21,9 +29,12 @@ template:

      Try it out

      - + +
      language: html style: diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index e7f1f77f9fe9522c869744307241f6df58739e6f..1a249f8e395347a59c6ebb66082a4e9759f92f9f 100644 GIT binary patch delta 14713 zcmZ9zWl&sA7cC6IgC#(a;O;Jiy99T4cXvI3Ab}vkffWkv zeoRf(p1r$!^*U>J_vt;}1)bIfU73miSh`~&e1d_3;y{3cLWhEa^0H(0bab&badfn0 z^0K!pRo7QsV!`sys(t(PAkd?*SsPAMX#Eux>C*@Jm;nm3x^J5U&Q|n2z?%CamR3QL ziCAy>SzXL{6Y=TAK`~t!PPq>05fYgcu6FB~8Pj0_(xZ3UqN!P3>MRev`6#s&Fske3 zbNRA#p;EjjMVrM4Rk(ztW3?h4J#B$(P<8u_s})|6RK1sjVK#o6E25@V->JN0%9#}{ zJtF+8{Ulaxez9nj4`w7X81$LqOLW`2{t<4?bEq`kb<5m6a?L}z1nO{Rv z^@BFQUh#Y&+BD+CJ2m&pOU4hB4i*_v`(z&H?o%~u^Ot%6!PvJPx&A9ZtW?Ipnsw{u zNtXTYT4?8;#ddNz7}IY73`q4dl+Cskx;6#>HHPF2=%Cx8Q!x3iwGG^u1hsaMR~nl> zb@onwKy2}nlSiU~d`kNZ(U!CR79V@^l#TpooE(Q&rO$gS9Pmv_bpky&9X;}K4<`Ah zM*WVqy+~r(3AJraS3V(|PutPC)aqb@s*1T?R^I zbL#*x3>>vbL}7&j+YjDbWEXPYbK_9lW#vR-LpQn>%7mt&6wTQ%=VZWbVjvXHPfgd*^P|>5MCxKp5XlWbmChpOt__NqM&f#9oZp(Tt};zGxT9CVB3^Cj2%S&Y*Oz66jx_w8{xys8&SI#Je@ zMuwTSL!K7{PWJ@2aHeeEa#)Nv>Af&KV6v1amjH^8X=Hkz&|b&jJe*{GCeF2A)qmS9 zL^At3Pi(3q|JlWvl`IXqG|5qcKs7A-t7WGS`45ghbu@6NmF^N)YH<3YSMCJ)GwnK! znAh?hBJH@C-CXEOFre@HqB6(OE8iZhFoibNzK=xL2`iuzI@AoaRzJZeHib0T6LzIz z^Z`*`LB4Vf`;uSD@zXY#0y~Rj2D2u3zm%uUS{4D+cfW~R&@gK&0B)R9XvTXSbmo3b zAzM%D(=W8yCQplgf5Om7>iOt>B4n+{H(UA3gk4)L-Tb6t%igbzH?kH&x`={Zd;>r3j|YBk2~N5l*g;z z8$+rx%J&pZL#vZA^eqDKW||myd$|*0Zhw6^8W(ywYJb~fetTR(KM8Apz8E)ryXb!~ z1pHq&nBSI&fR~esw;Ld7?d|^L4tRcOASQav5qdelQf!Z^fAi)Nd^?D_dV70uJyR5V zxj)MS9xocs_L;H$Np2mg08Nu5))1ap-8DzMi&06C332i?>eEH8=hi$u!FXTjR?U{x zA2lkZd@^<*$Z)6l9@X=L_uO z6?g5ZxPltEnNgUb*k3}iu|iETK8r;@Y*wg5KKQhAbzBs6UD%~N0kwrrwd=py75XXQ z`-$7v=GG==b8KG&!KcW`27BPk8-ZQB^z-V%^Xk9nU*n;e-6&gst~T&~@-6zrhfm$Z zK-a@S)6+*GjG~Xk`tR-qwa0+IXRHs2_18yM@NXOExx7teGFuwxPV$c=C$uK$b`Yfx3H3+3^Vn6NP*Z(yzv+;q!4-kHQRyOm7wzk zVzU`?*ekRkWeIwf`Ca(wd4{Dyf7+cI)*k48B(tYnVbifZN}|Jo1udBD$~6WYkF5nA zGkfJW#M$7Lu?G}6h@1zl6}UAq6SrUnOt1&i*iw$ZyF9A^vq9@{?TQ;Nd;O=u#Ov#% zlQKT$wPW{r5pbQ%ck=$=KYF|3|Dv$6%Z8(VS_??%T1$7;>UBfSWx&(*$=|V=bX&sn zVkeFo=lE7rSnHHqL(wbK#8Sx#xsUoSTr&rA-JVww<8uFoD$8}2JUTvhG+aKA?#?*ouEW_$12$liSq!uE4b*)ow5nno3 z!ztX-vd-j6W!wc1^NXLj%9C;72YyY`^|)0AqeU?Qd|J-b+dXBo>?--PA}~1nk-HgR z_OW2^5utK5YNVo((4(iX2^8GiK7tU6Y9KZSYfakD`i^z-Aqi{)PLl)3Qas7KRk}Rq``=^6@t3Tlf8w{p+ za@;)t_k3Q2&N8Gn#cWq!WRdSvH9rL4n6=w-9o`3JkUH`{Z>t5(P17|iv;w~b5zwD= za;+qff{BbqPsAn%4o6eg@d8hSi6-{eSNUXoENaL0^L*etn|)lVaxGg_eX#w}GEta10P< z^-fTaA}f(fnnRx0ea27OKE+YSIgGUwhS7Rps5##Wc%f!c^YBmiJCdFW(y-forcYTh zln-n=)JKR~`_Nx}T*(@d7SbkMo&E|E%Rc^(ypM35qwRR3;o=b5es}b7^uL`Jk6IXP zIqrSzU)T@@Q`;5x8Zq8(lA*CF&MXCLIvru!k*mOIyd$Lk2XVPw-{D>mA zIE7RFapibrHNA4%2ow zPqLC;;@@3_uf(YBtN^SraMTRs4^Kt9o1R?NX+_%dz(KTb{*+GP0=3r(;FC)Krz}u2){a(7(w&^5yRx> zrWL3ip^U0ZcfYrFgM>;Bp~j@WwEAsI89A4^GZ^;zPfAR>nSW;ruCkmsVc34yj*Y2^#6tJ-sO?jdCTLO9$?t zZg=zXYM|Uls&Yn9rMUhBP7+5ecO{e-#q^C+=RAa)xcPkv!_Q0JqK6Y zsq!dfvh{?~B_s33Q&#Z(P*$2CYHm>F19q{vfB3oi7==$Y$*t8X?;B#v?p-9M^ED9n zi@am#%jQ6qnVzImWBI;!C+A_Rp6up6C63hhMEcz6A3z{pC#z;5u|A~G)`c-VCrOV0 zTBBTz`&HNscCGPoi|_V%T?m?lV5OYW{W`9MyhG*-#@?Wiq!bG=i@hMC)U!<7 zK4p^l_e5g1UszEwM*T6+f+hWvWB~vr-gVqCNyiYnisb2#99)&DVHPaMqgyLQpn(e# ztd_URhe3BbjGrqHmZu0CR)n%2_bD}n-{V|~ft&4MTaFT-tH=E)g|1apgmc`fkV({@ zpQwWBYF)=*KcYjcEJ|~Hi*Nm-_OA95Fbu;|Gu`j`V?ylv1o_vQlh!}MW5B!onP&E< zbdhLjI*tWj+j+{2|5Kj5x0PP{Pcu0#eyqa@@IXZW6J`nZtqMvWb{)&>DLwQcoa=2P zWN4XjG;H;#_CFN=(^19xPpyBcG2o$P(0@p*l2O84rPAYeG}p}=(UuTZ`LX;3sdD)X zs8D_7zccusRAB=#;a}TpwA3Ps_rx2k{))$MO_Z4xopaVFlQUyzO3&g?3&qN21s z*RtD$D!R3lC+BsgDD4Y$zQG z>0gUf`}bq!dG0lt|Ju2~7#V2C7^#AXnGS20Yd1!uRfhiBB$wzmq+6~EMZA)AiSD(k zMoT$>-h`GN{Lh>&Jib9M9m-)<>5^?-fEvY^NDmT4EJncSg%8kM$4&CK-2aBZC|$)n zX4RDTPWC#foLfR53hO9DTL&TM&ENx4$b!muUNb7uh24&of08sluf1k)M>> zq6f`o(eZy%XXdT4jp1_^84%Ym?SZ&s0<;}_IBjoSDaC>8ITZIXAoL3xVTyPP{H=dh z_FeWc(C@Zyl~nj^yod0}B$%vl&SbSJYQoE{aE^zQg!qYa^A^RVVMljq&2t^F6T*Gv zoih|h@V?3^4DqyJr>xe8#mS_Os*WkKB9HYX)(B*~+_~#o=CD{``!d2y70k5^ zV0vGUUMC*uKEV6OJ5JJjTmF&rHQkWaA`$_$Z0|g>Y28cu^MN_-;Xqrb@#yUw&4l!Z z-w%;4mCZS<*)i>u z`0KVb`R1`imTHsT!Ce{%?Ch9b%6$-qiEw3k7`f#o+`iotTG5m%4&*0F7p(iYb~)yh()iJ2-QGD& z2bI#Gr`%It&#ZFfuG~ShxTrAWj?KA!I#ZLiS_^qhLyFeYs7E%=Xk^^Wuc0oh+ul>}5n%G%v4ER04hRm0*o=BV za7>M}M|Q-Btr|Pr4m~tq5GXc%Mu(J9{p8XZM!k2wcRTNC*wZLa>TTBEi7(Zaf3UOr zgMTh|_d6}g1?-@)L4fSg)9qeD8O1d>WSP07S0kT=*TJdC<)7IN!Gbgy6ni*b$yc`^ z+csO8)-R_E0M%yjfhBIlPU(1V8T6*PQ9)PRT=FsPugJmpZ#xSs@@1uS^B+m%6IK|K zlb9{XRKjGV9OBUZ6FfEA0(g6?yE^5`E&B!al$Gr6EOS|m zp&2S!C`iZ2fW-DVEoWXCxM4uFTK!EP1`W<$4jj$_?p>Q1jjKb`4!k40e_dbv(S*FN zWxsJw?_G`3L&7_jg4obz)MA!PvmnDLsFXs@T?=*lQqqf+x=gLPj-`JsJ?}s^53lch z(YTuiU~~fh{mALjbdoo**ZaHVNpCse@;1+1v1PmC-u^PMzjKx4RQFAK)y^Gg78-=X zo&E)YDtA#=xOOLc(x~+J(HYTm(?qT>lgd9Wx7N*t;q$9#bGGc)U;Ls1o1l=^Hrm$c z(5$s=2eY>9_mo?Zu5b}e^}JM&W@vJ>CT5EQJ*c!6)?W& z5}&uoQ>yaj2@_B1nLgq08aNXs@2*ze>_R}lCe;DI!g^DNU?WUuvUTMAel&b{>QWhm z5Hr`ZEAZa6=^mV5(x0oj{D&68_5mgsq>q;!cp*~IoM#91tXWjxb?b^9P*aSt5F;=v zg8MY8x#zO)q;1<&9QEb~1O7YgL+NP2(H(y@FUfrW&((EQNgVQAxYYMM^**RdUZChU zH6CdVjkVsh>2ZBx^d{axfT3K*b4fQrF*cEP`nS5oUYI#3q{MVjUpsgUp z-qcNA4{y3@u^?b9%a^G4oIls%Cmr4TWb@o{`BLB6`#>l$w00X%06}2JC&4OYfnd*( z@$6fNSXbTkY#&q$wBe_|*z9NA9u!4Hb{!SUzVHh9oxDmXw}mCxezY~s^ncZJc;x;^ zSpUp6j-og>@3H!RY%((G`>oN#rqOx&eKfWst^)d7YQ~fLOYJ;aw$ER}IR(m)Jy|1K z>-@gFE+Tg+8M!Q1z%NCGt~|nFAw;TZamJj~vo279jgV&Z7=*@=&Y1777Yr)R5}(>+ z!Ef?Ej=D@XgB_}pxnEt+_RmoN%)hp7%wT8P3{3<}>P%1oL}eDE<}LPi^@OiY;$@uISSfrcE&EC|#Et zeruQM{~(fNf33ml+zC=L#Fn?Pdb*=b6+NKXt#MzP$-tM?z0E0yOe0egYb3VEzc0D*ARLPUP+`UsSBY)dz7$aGP+Vb zAQ+_FCDWZ+;l6~c>#JAo0=hbMo3&Cc^Zcq`{v)O>-}4%Bv)$L%{8?yw`^Z8)gMEo0 zv`P7&O7p=N{q_2yDUbR&vPZ|c86FT{#QawfiiurZ)0Lv-{)ZZQ{aE&@KS?ubpWVk$ z9)Psoo1c&W_I*mNW230uT^m(DCxxG7S#zWru!t2?nrNt!;e!rq8hhs=to2_;op}w} zZ#PjjpJ|j8%#*osu(tccA4_9dm(fNsMmOqph5QRRM^X9B{&PD!xT2<3+Ms6s2lLi- z^V7g>5-M!OW={zpahM_VJ6^&R_$2qt*L@@QGi~d- zdN%FuZ4am7VLfZ!dm4=#-_0|5 zwvcVpGx5=3M%=PGVl~s_3s}5Y%j)gE{g>p~W*yO1RxClC>Q6%8-=M}`D0mbNT(u-N z`mICXYbV^L%Xw{g8S$V~6I_$)_E3$v4N!ar9{X;qvQLiAl7|E-TkXi;;1)>4VsB`JFgrhdbpJtwN5S zs**YSqXQJ0W{)c@ua0p;U*~1w*G7DiiQPMPzwb4G0${qn@BTn^5az@Lj_aK}JsPXG zAy-|OS2TyDCC;ndrl3uk=^^@9DbUt&-jq3nECx!-F>ku>@d$si zkNxS{dF8rDbpGxB#yqrNT_f_=WUCvMh$_i8VA0;R@We^qD1p?sAwT}IK$H!KO)NJR zh5e%WHSfeJ&l*ryzFWM>Evo)WUOb)9ol|;MTh64{ndX9@s!y+2h-<2K`SO#W zbIRdZ4~|*BHR{+!SB){TmUY^pCy~uX*rmtGb(#x@g-ra+q*V!Vj=y%PPkd=Z1_ML- za?X`)!xz6#aK&=_;p4-t8!^G~qOIU!jW-!N!6_bQz(oN)WDpRK#A9$Q4$dJghVa)~ zUL`OKrFm*#q6n37r~hjlqoT9+_%WPuRVXNjpQxu=qO z=8JyG+-8w2kXDco8#7gsN<90NQ+H%%G8B0$ni9`964TL)-<05Th>u_&MsKcmdQZ19 zjDjxlg-!l<$ZTq_LzAxY&6=Z$(aspzn;$HddTddKDH*KN?-NvpTWSpjh^qTvjUAuSE>;*HIa`SQ1OI@J|ndfMmxB8Z#GF|h2$#}<&mBd0c#GcBaaS9CX4 zz7lHz6ijW+2bsJ5W_wWXAmymqm9PZTy$5poM&V}hes+`A>SYW?X$d=f+AA-lKZtM` zoC9#$c4tegp8CEnZ46-y=JtM}f1ti?G_v-M41jM!ha6TU(TwgM_@~HHc$pnJ!Wmj_ zoysn41?7e07>b>8h8-{Po2Lwu;aXK_6*Gte13{Ei+MS+7Z5A=_Gsxho3=16LOn!7_ zGdB6qnVS6f%448`Dw=C<{(Z@ptpO&ueCb1p*%9Cs+UC!M2H&mRF*(D zS776}BV$Ev)%0mkB6B+;raj=g1U@3a_R=xF2jOl`;*VTczc!;RbK81u%3yww4sbUK zeM-Y3MNY*=|A;b9OjoSmnnr-JQV%3j&O~pII9M!NFvj9sX7Og+(fFWf|0(|S*eCK1 z@YE3A1MLjnNm87;bR5^el6u-F&zSM4aJ{v83%+GQ2xM%y#2Ao!EFM6f?v%h@)MR=W z#aG|`vUe8TmbPE?F;`(wV!z%dPrawgB5VcZ@s3k8ViH*%-U*YkxK%6$fDlPH<}(WI z%QemcO<0|nH%p8BC+k+^?gXB&T&voSPX^&#`6`6?xbh(xjZ?L}<|3*Q3G*8fR0)b| z&U3bskQ(pi)Zbh(nEfV~=Zy<`X|v+N={cQRe01DLoR&um{FLEtv2nr6v7#AAb~L63 zE{tCo(v`hX1W^l+lNc0%_T|hw*#hMHDKqETx5jsrP=AuTY=8f3n#$Q$b5Zw>FV)Pi z8S+sl#dy-oQ;C|RZ>@79rB8h$iyJbSNaXT=Miv@>{UP;n#6Slvrfx21X?boAVXhS& z1RB{GkB*IJ@!eHWatv^_scz58z5DgN`{5PnAP*g+;K2(4z=<9W`vDdq=3HdSQ(xoa zhG@#%bSidg4U%CMURepj?U;JGw&q=wdtG-To7rekHK&f-m4DgL$)_6oP!WSMzV~#ryaE$jnD%!)>sp+!yz0r>_p+KC$fa zofenpMRN%Pa~X|np?@&QkMJ^;B(FCmqkTLR`UmGA?z4Tv&6t`)pQMq8>gl8%&BU2C z@bD;AzirY$IOh6B{%4cByjVl={E94)c}n?O1CoP?*nU{`q09YmdpmO#gxKCTa`OoP7J$oGj3Sq)_#Wt503(H zWb`h-v{bRtwhbGLf!itclxm`?12vDl z=9QWRkeWP6%U40B7*%aNTN7&*!Fi5?3uL02aFl|eq|+beyOeM6?`E&Mu?V~>WYcG zXiu@gkK+w{6L@DrOmW~Jh6hI*6}+A?1#1lh!?QG4H% z9<#N}pA-a%f;0T}Pkp9o_d(3Lzb;>}_-w&Vr=2rhcd^zX`dVvIr-4_uLCkb@iD%y= zL&87bmL1tXp{>b<26~9pI6gP>ox>R-e%(o<3VJ^qs{{P;(H##LQ)NBZ8r?7r&+8T? z*(r)-8{UuG{+;b-ljk@+#2Ep3|Z>F8;;?{5o?W4@Zr?#f#DFQlj7EmY(TAsMP9CpUfr_R~}R zEr-p~H{kb*^n7tKoUv{l1%e!+2D_05kv7rYMxFlrKhWGt4WH}smiWuy{NZ1?E!MPg z%Q!a4Lur1E1#hiO1NO61{40me63%+>EI3o$n%v0PP#?FJMFa#83$ZNc)hU?u?EMhL zE^jKRYF2v)mzK8dsB?QHDLC5s6X0v+iSRcd^CMBiGNqr7>{y+`hj7-gev(%l;O~+%5p|!*(!jqDtKdl%Zjbijd zcs=Aw@kAKT&v*=CzklvD$qMh8-}o#tir4Cx-Wkq}s45tKG@LG<{HbG|zOVjnKcs3G zc@+d+?}7;5ff~-z@waD!(t0r+I0Yoo zPkYf&2FbBuYWF?v=JE<&*D%}K0|%tEmDgrsrkz?UG3^h#Hu_FVh{rP!UA|%9gYM4E zP2xI-K>JG zPx^PfNmdYd{ioTeW)HhCgNMsaqHZ>R^Il#%QTe=WdE`^YZXqW5!8Po~0N%=gqi(l-Rfn zV!!z9N-OJbw+tpcon7L)=mpp;wdvNHn8mKWNJ3*$*Y4~x4HgPf43#AFt*b_~Gl!y> z#+-@J4X&e&H}w~aO1&m!78h1t98GLUD;_L1f0>VAsDoXzy3f7NGd&$(IENl$*N>U< zBE4vtniQy4J8{d>!^1pX546r_z-b5=6wz;=L#`YoTOl1u;bD6pnE)NXYrnJ3wDAWQ z72Q2O;M zikF$8^Gsx?<(1uZsPp{;zG%5j;)M&DPlmi49SBwxi_wuuoOB+aTEH4o+BI(IyXLeDaefW)>^u9yDLIKg#{G+i(tYOnJ@EBM$+1DK z2tNR}`^49II$s94b5w0bPpE2ZyNh`xCRO|1E>k5mPDg2#ri>@!zI=z;2Milm^NUE5 zbL)J1(#!RQY_Qg7gk8WJE^|5@kKD(3oGfH#^&WWMI%|JJeBIlD2mvn-HP!4j$Vkg5 zrO0C+p`eE29fXJg$K}S)0Q1C|(Xr~&Uv7vky2!@8Q3c`hhbqGPF*r}hTJf{$KLY}B z)ophNd}1;>j6As>8MnRRy$}7QJn0Xp{+Cy_s>A}W_Q7$)mO`z*LVTOmYKgyxV`?hy zvLeuH$W2p9waO^oxR;#RpB}C&03OypBIpVZVoQ2k$eSP_$h8vz8fjIvWisAYJ_yym zS7(kH)p6BG`Lb7E6!UiR`l8s6is|B^R;-~j@l=5>G!m^t`)c*D{C>r#AH8N8lUzaZ z_@LFIFP&g%I^OjCHRY;wm4RzZA@)@Hy`!aOmQZ+Vn40EtxtjavSMcvU`c>8twa}&W zcn9b93J@iXB2gtL^woG_^uE*U`M}Y`c*) zKsxM&QCwH2q8M_U4mUDgB}rUposkm7&>iS)TWSNg(lWD$i;3Ll{5YKU&#kA|=P%Pl zh?N9%A9m<@#%@%EfKR;vJ*jXlMRtwEA9MzA#$dEY&3vhYi z>h?J`G4y>!KV1KlQ}FkJxNM^JQE=~01@d|wWY|Q%WWicS9u>a zNs}x|jbWGa9Z$J7>wuuJEowunqFamNQg!6dV9#iK-Mzf>c%J1z^iscOO+~%@pAHX~ zmp2jGP>6-a?)-k>Y`SgbFA4Fzh9jE#1@WIolJCvqO(F zb%L;*X|4%=e?Q09SZ|BoUbw2;ezB0ZH1XPTl>YfUDj(sB)Llf4?3?NygDwjBHH!=c z)0#-BHxJ5hBtI_RM+z=L2ROs;gh|Kwi>>M|`1>6l2&jT(}CWC|kx@F448a2d#A~U>^Z+n&CP1zVr^#b?Q z+YKQo;(Ud~55IL=M$p+PCiS;7L*xv6>Awl~yz#E~NJG^o+78+$Spj+RMlu28{ORz@ zv0NrZvL;VFTLRUQgn_wokw3%kC&O!DG2H~Ojp>6>9CgwAc_b_2!nO^11cJ@vgXXT` zrqP7|U@=!YtHKayt`LGL8%Da($dA;LH1H4x3F;gCM0a^eU1h1Roa!ePT_+TbsGCsX zS@@Y5&av|>sUVm|NmeeE$g$&s?1M(>FTWoNtADYoQf#a-Srw2$U!K&R+3c{^ zibWoJubM4%v?h6HVeUFNnS94qE4o;gA)VOU@}K;b9r;nfg(n;12p)!W8*WKYFy7k2 zf@K&f>1^!2%^^n#ku&782EUk$qI$r=WXtsgx8VzX$f4+*=p`Tl(^jizBTJD7OB5#~ z6Z?LNdV9dc%p}N1u?a@!Hzp_)#Y(R#&(;#=p7ndryb^`R$J+t@R1)^>MPHslJOkh> z8?5g4uf*eJHowB<}muMe4BmT;WT0z5C-fCEVwWHJ4)DQh9di1^}74{ ztD|?5=J(pt>eP1USGSc-{1k?T3>)`Bz5%x81q@%iDcMFe-^QuZL=JvUFS8A#V+u6? z8=6n<+;b1Re|!bBg_iyJp488i#Hwp$D)ZDPBxsPUPUJB($9jdoK{rWL6vwcYPkbc; zH@@8~&}0K2m02J6#kdez_a(cUMnLurhy1d}5A;Tu7)0$oMK@YDL!RV;zi~e%ZDFC8 zL$na-Ac3BaR<^eoOCL`P+fu&Ap^|3{5N-&_SuW0$hqU-#{4n@gfdzrNZNSVW=m`=J zzNScIK8F_oPPz%DfhQacDme*9ES38TAK<9sU30! z6HkRiqJpOodw+az;maN2HG(HC8oq*uSuqofQ=-qdKXpLz`t<&$BJ0Ax70ae+{r6xu zI&|9~d9>BS-%j5X*FpUvaK#RYDwf4i2ky$<3Q}XZcN2`hxi6}Xc7{}?eGU6&2fQdD z2ODpISq%%;q&o5`VKxksSi9Rw@AYfFzbYPYC=)NWu=KnZ4%l^+zSwsXH8etrqDl%u z8L8EpSY5huNWjPmUED>VZN$Y}wdMUPu5H)8`PNtPwpP}ZY4Pt0O&Y}f3Z?3k`SP#w z?Ja~$PSDKp;>$yBy+h>u*GNf5AWpiA6s$yGpfOCgl3sIi$C+@i$WlSBFq}jV_ZK*_ zK}PU{eNFQI!1fikSMCqRb%C!)F|!6WVfc4LOdrD;)YegYLpelw%}8DjN52?ie4_E= z76vEl=8C(OStC>^Dp&>=#f#Y9kv;tDW&f=4gbWqcNA!sU^{CkdUx8FF{v`aO_anwX zp!^l8RcU-`aAfhMf!mu7=M7ejj znr{ub+4mcSAEtVKHYpllIxUI69%SPF9zMM#{41Buddl|@E7{=ml%GlAP%|V>(UJ6m zi#i4hx5PemMigXi3vQ<^8ZVCUaZg!tbS#8sYCRApSV$fC&di~kIe7Tt^|Z6I#gg~c zHfoi`lXsmJr?LaR&O;h-b4K_8I1k9Eq2(CtN7)o4@Z$WCDC*?&1V?XCYt2Pb{;@7^ zWNJz4zKbpT_<1AAimxf=mGDF26RNI|v?mG>>Go&{^0ezDi%q+x7#s0rkGUg86C?JE?V}SY7jr}C z7LJZ`n7yw?6B2O#9UACvVkc1{)r1x^6-vz2{^oJk_k(S zvf!r9-kQ%?Xw;#hQ*q-y!#o?Uen&56T|CTaxiX4fJy9cHvl6FZyZn_Zb%puyjSRcR z$Xmborsg);qArWLozhxbHC0tf`5W}0416`46iFFgp0%V(WZaoCOGGE=j=R`8ZY)#; zC^??_wPjc_BzZb#9IZh>jt#HC_g({W4e3_^Zisxt_#8txz-ojZy5ox7qiyqiqv~h5 zNDkwM;&a}ER&cEA>R(`jtWjKsScT2iH93FL(rum@*ETgQHcC;a>;2x87^Gz=5p!I; z#|cXom*mu^PygArol-DkT9WR$KcfB@P-pc#Q5VO-OLNtdT{#PzgpXQ{aUf)iar$`C z6mZ!SGrVWPnzzeO`%w;h%Y9Rx6c@`nx{Wnw3kF8eq~>=DM#Xy18eDQ0O3#R zStJO~8EU0JNlRn{NWFe{*MR)cCQwlWVnPk3NfL0hW$?by&_a=B(vL=9Bv|XHCW}fo zp?Am4hgj&s0Vq@M&2@o9Pg_}_^b6ngD>OrtL6&|3Z-hogG7^qG5^@?CbpuPDPzFg# z-!{r6558uF*EAu&>jUr!MqB?kyK=l?iZS+7k?(9{0;c+bks=>hvZd3NBe+8~^~cIa zYnG!GGxX-J^QF8#?y3tPVfP-qlN~QWxH9hLe}8k z#0GuS^4%3gmjZ_}2@o}~)=XR))YCX9QdVButXpQ$LLHm#(*1bu;_RxD+|Ob9G@^z+ zhnrx1-;64pp^~cDVQUo&beBWY0DW|EgZhQtd!ydRxf2y=Ic>#K{sG@Bt~%j}z&>Ld z%XGMbBqgd<%-eYdcQ74b9)-8~?0)`E{v2YOywE;|lW`?BjDFg-Snr z5&=WU)>*XT9{}ws5n2!;v}VdBY+so=@<{_E2J0q2zbJpcdz delta 14813 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
      9d%q3Z3q0z0=erbX~I|RcHM?ynd@R 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 88c2f8671..e855c62cc 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -9330,7 +9330,10 @@ Office.AppointmentCompose#end:member: console.error(`Action failed with message ${result.error.message}`); return; } - console.log(`Appointment ends: ${result.value}`); + + const time = result.value; + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + console.log(`Appointment ends (local): ${localTime.month + 1}/${localTime.date}/${localTime.year}, ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); }); - >- // Link to full sample: @@ -10062,7 +10065,10 @@ Office.AppointmentCompose#start:member: console.error(`Action failed with message ${result.error.message}`); return; } - console.log(`Appointment starts: ${result.value}`); + + const time = result.value; + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + console.log(`Appointment starts (local): ${localTime.month + 1}/${localTime.date}/${localTime.year}, ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); }); - >- // Link to full sample: @@ -10448,7 +10454,13 @@ Office.AppointmentRead#end:member: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-end-read.yaml - console.log(`Appointment ends: ${Office.context.mailbox.item.end}`); + const time = Office.context.mailbox.item.end; + + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + + console.log(`Appointment ends (local): ${localTime.month + + 1}/${localTime.date}/${localTime.year}, + ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); Office.AppointmentRead#enhancedLocation:member: - >- // Link to full sample: @@ -10786,7 +10798,13 @@ Office.AppointmentRead#start:member: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-start-read.yaml - console.log(`Appointment starts: ${Office.context.mailbox.item.start}`); + const time = Office.context.mailbox.item.start; + + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + + console.log(`Appointment starts (local): ${localTime.month + + 1}/${localTime.date}/${localTime.year}, + ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); Office.AppointmentRead#subject:member: - >- // Link to full sample: @@ -11845,6 +11863,19 @@ Office.Item:interface: console.log(`Current item is a ${itemType}. A message could be an email, meeting request, meeting response, or meeting cancellation.`); break; } +Office.LocalClientTime:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-start-read.yaml + + + const time = Office.context.mailbox.item.start; + + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + + console.log(`Appointment starts (local): ${localTime.month + + 1}/${localTime.date}/${localTime.year}, + ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); Office.Location#getAsync:member(2): - >- // Link to full sample: @@ -11902,6 +11933,19 @@ Office.Mailbox#convertToEwsId:member(1): Office.MailboxEnums.RestVersion.v2_0); console.log("EWS ID (from REST ID): " + ewsId2); +Office.Mailbox#convertToLocalClientTime:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-start-read.yaml + + + const time = Office.context.mailbox.item.start; + + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + + console.log(`Appointment starts (local): ${localTime.month + + 1}/${localTime.date}/${localTime.year}, + ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); Office.Mailbox#convertToRestId:member(1): - >- // Link to full sample: @@ -14324,7 +14368,13 @@ Office.MessageRead#end:member: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-end-read.yaml - console.log(`Appointment ends: ${Office.context.mailbox.item.end}`); + const time = Office.context.mailbox.item.end; + + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + + console.log(`Appointment ends (local): ${localTime.month + + 1}/${localTime.date}/${localTime.year}, + ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); Office.MessageRead#from:member: - >- // Link to full sample: @@ -14659,7 +14709,13 @@ Office.MessageRead#start:member: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-start-read.yaml - console.log(`Appointment starts: ${Office.context.mailbox.item.start}`); + const time = Office.context.mailbox.item.start; + + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + + console.log(`Appointment starts (local): ${localTime.month + + 1}/${localTime.date}/${localTime.year}, + ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); Office.MessageRead#subject:member: - >- // Link to full sample: @@ -15567,7 +15623,10 @@ Office.Time#getAsync:member(2): console.error(`Action failed with message ${result.error.message}`); return; } - console.log(`Appointment starts: ${result.value}`); + + const time = result.value; + const localTime = Office.context.mailbox.convertToLocalClientTime(time); + console.log(`Appointment starts (local): ${localTime.month + 1}/${localTime.date}/${localTime.year}, ${localTime.hours}:${localTime.minutes}:${localTime.seconds}`); }); Office.Time#setAsync:member(1): - >- From 14b4a0247e2d262555053eeb5b9308dd3883d6d3 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Wed, 29 Oct 2025 14:05:39 -0700 Subject: [PATCH 66/71] [Outlook] Map snippet to AppointmentForm interface (#1019) --- snippet-extractor-metadata/outlook.xlsx | Bin 24859 -> 24845 bytes snippet-extractor-output/snippets.yaml | 32 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index 1a249f8e395347a59c6ebb66082a4e9759f92f9f..769da162aae388b15b9d6d4b7caa5e163413bdca 100644 GIT binary patch delta 13546 zcmZ8|WmFtZyDjccf;++89TI|jAi)QBcZVjplQ1{~gb*YIcPF?*aCc|0;Le@*{qFhB zx_5re>eah( zM{Z0e{)4(yCPuFSqLR`=BFW2*|8U>*(oVIHwN*>I^TVa@D)q|2T{CMu1DJ#Oie!V3 zoV0XIW(=CfbMKp*NpDdbGb_R&JKAT{t?vg_cmnkFd!ZySF~*1tDsQxB zhWxIEGL6QZuN3s9@h~t^T<3zvEs(f7q6|1j-QsemIhv>cuKZRsbDpG4&0JbK38`=| zJmJ8UgwZEPH8O75C*(bW3Zn!q6fyt#4$kVyVLEW=)NYku<=yFxHl^jh8tH+-wroNj zv%PTo1aIgY=udU|C`YDgv3Y$^eMxS-nj1}&gg?Q2p7kPMTKXy)T7vi-Pm$5)hyuW^ zY{fHyK8b5`DU}1y%%Jjp!*Ygw?_-I-VhwU@e?w`ME#~XG*GK_UN%4cs^&rZDS4EK->^RfVhXr{YS~x+>tmoXmZtn#%TcX0ML`6-u^QO*l?^ zk6&M|39f#=PoiuR2^4nQy1YMpE~&tam%^yLhl5seVcIJUFL1$u;gMc}4-9c?b}$$a zaDsA;J9-)6;G`Jg;Yi@Xsvt4|lI-Zb$c@*(roQN1`IsaAo`$Z>hDE=it$0?VRd5Ws zl+o2H3*p!GinkYnWeLA!O0YYmWo>26+bSrqnC%=(33Fka{}Msz+eS6sC}YuDd%2vJ zQmv_KC+osnwZv}+S2O*%7i}Na{V+|?2*|Rh%6J@iA2OZutQNr>{I`Wba)}iR^-SMf z8G?4>x90PFn)F)%LhNI-46?2-mMp^T3~Mug(s90jGed#S8B81!mhHZG5zta^@#?W$ zp)=!PHBG=#QXH*$P^Euupi}&S#~23=?NSe0yG`yp?il=tS^gun;P00sZ-I^!sS9h# zE$c~xr%-OwO*S8*`p*@`zCfui4i)C#S*<3)hC$7Si#csb9XdmEGE}KWOZF;9LC?R{04CcoSZNej6E=Mw>$A zi-XC3v(qwoy`9sP)a&JUC&+$j~?Xqbyswp`|`@gq3t znDs*TMC$XrgX4_3xUyKBo~vQVt`DY07I8dB$}k50t+JhI1)my^m`4#UMosUhb%qJy z?1+8!*>9sIQt0hd#lV&P=}e6%hFVDew-xVGLZlaZIOG<%T4H#_8dF?D?nO!Agf@OG zD_7B0i%So@S_z97z+sW%_*35|>MZX8kBz@drjIFs%JbIcWX|X7AJ)8$sO|Rq)NpWc zFE9UoC1c+DF1W>3Dp|b}!!e?aZzZQT_3UjZU;|7H~rAOX$#hvWH z5Jle1Po>2c+WTqLz{^&mRK?oM<1>`&<^J^LZn)$5TI=qBOX~UViCXIVn%p1Kd}=ymSC%SLegyFV9zLxxkAw zKt4eTR3+m3(|b8;?GuXJ2U*8Dn|sh+M~hI-kBha1nvc3HljBktWA)>6R77l}wUeAJ zGEV5$cVuszVSnBozd%3xn+D&_(e2_)!A^{ zrVqXw|8)dCGuF}@@d%QO8KVM{i(^;E;4Ox3z}1<;h2p~ojCw8V2)3aBo}0@$@_yCW zK1a7xVPYCRw4Xmx)d=DE#225Dz1x^!gg4q(^1%;u@T9rUq^%diiHa}ABY#Ib%Ls3_ zuM~wJc;rlTo%+9kKW)8;j}Uo8?b0Ax&YpVM4OT~+>u+b7aO&T7RQ7X#AZ8*hO3E?P zlT%_mNvy6KX=<70Tf)jS{^CI1%Zzn00r(lo>Ha~7Ecb^Lh)l0!Rruj zZ1xNOT$)rh+GSAweJhyi)UpWfL!=U{qM;rss5P3hvpQ*E=o5Y7iNb0vM z1;gfd^Vw&iIj%B#ingi1KS;^HNceClbqiroaCW4O;z7zk_gRUMIwS?Jp7q_13I7Ue zhNZF!(G`0Bt)EN|W2uUOFBQZ77?*KU*V{af<-yLH)$MmpSSi()>?Qvjbu(r zm3acS>3PrZT$<8HR_eyXbl93(24*nkTgbKUi~8q@id+RNYyC3U* z>c}E7r7wReEfH!0YLg_KByZ93qrcx2C#_G;glWhxFZ115*y_{mL8CDKw@dDHFaS5N ziBMRVupf?q(wViQcQ4cEvw!T6X#Qs<_*{ddz_?zw18&ye8B5zQsom6B2{&{1=$M0L zrMkBnx$>Mmbo}~LNAG!4bSG@r@w+$FiJizZ003 zG)oHp5mcm(rtL?k|EHZ&0x|33vBxy4_xNMV6zABP>pEkq4yJLW zas^*eQG|}~#-A*jjY^>L)DGrJG`sigi7*)JLro~*F(tl9SEwTi(fSkmp?FR2i4?%@ zM;R9z;~5@heaMaS&UQ1rID14obST_Q{sL1%PTrSyXWB=ei`H&Tc7S^n<7_)u6R2kL zO@ZB5RSA6Q9Q((itkJZ3lU4A(lNkED>%HPhccnSlvdkj(G|@PfG{UeE7?JY8YE+%c zl_LFJD3#?jA#0Y%vI{P?8*Tfk6GCTO2zv~flY)D?OK{pD=4V+PEA~~p7_$Bg_Hvgi z69s$8wYFvXP`+eA0FCpsdLgQQ!=~bzf8ug)+BaM45M~dwh{K3Z?ab@wMs@5sd%oYW zjw(}AXis+qZWj8=uD5;M$e^-GgOo<+5Uu4kb6Rq{ZCPjv5<5~fMyDhp8U>*VI)c|E zUs`hOzgBO3=OVHc4@(M{e^y*vfF*^6+zSFv#lg&302by$WU$1b7!(0NdYr>g8eWneJZhps;(vOh-UIM6!g zMi(ilmX2mMgD%X&k_&yK1+YzaFrvR30!u1}<#BafWF$UptC7Skffoc&^4~+R59N)* z3@XQ8S25}7RM?l>D;>4=n4wm>$!5wntxgHnsJG2uD9(Bw`Tbgb%A6GCs+xr_HSAya z_CK37d$J6VnzZ!v+bt;!8&_rzfMc8D(al&5ANTl>SM2dY-iI88aV8nfFIpDQ1Sn97 zwg3-u%o~5|IV|x5f$f#>+Im9JD&4|Ee2L4wW%)rmJ%`PkZ+?j$l%^#M+m+=zc@Av`@%q%3*ID$ZT&ukVzn4Q6-E}`jN$@^ow)n2~}85gPF`W6DpNb+1+0& zC5pDbP1tM-epeZb)|=$A@p2B$Kr;=sHunXHN_w99t_4#{e7UXGtR2XtbZ?|Eei~fck z;YUJBF#u-tRsNX+OSGsUb7c0AI+X@kl=Ph>Q)v__9B?prz*I^F=IMh+?IiT`&U61r zOaJyDKGc`t+?mDkpH!Q^SalhE*y}qd2uskxljI*NWS%(~tYI`GpYrha!NZlEkEXU?{ux~Da@}64rb13Z(8RTN?pDB|pr&Vh3t)H?e99)3(@MIdPZP74- z^HdfFwN-Oh1fWs(X2d>p4#M4Yw%+XcNMgn|wsh;S1pcRrMDj;jUUk|$H2@PGbutjkzn`$(<1wum?X-L&aSOp&1q}5J-eFE6uQJjOsXecg-FBx?7DEnJNKP7 z253Hxm07z2Rn?(pW~+0trz}q}rC?${eaDQod5{1$VMDjYklJ5_LFQ?^;!=#2#*?+! zZK9x?nYXb%e09$&J9QJ<0S3z#9HIpu)oe#Y85kwEur{g}MobfNh0Q&hK8rNB2&8E# z-Cpj}T1VkGm8-UvS+tGzwN$EBax6U8HiENRi;{^BN8b+(OsFsuHcV~`Qs(mgNGEx5 z@dA4J?m3E*bz$fj9v|UYPs)XlhGh&~d&UG4Wa5E_W0WYBKx^mKFP6;;!EvSedt#6n z#qx;4@c=oq7?;tEvq(Xhwlh`vIddIjoV@OIzawwXzacu zosAx_36tqOs689xZB?CzwqOrI3KFF8E%AsaP9jq=zY)Hs_a86)Q!kk;)a zqQrl#oyfFiW&D@pB!C^1X%Dz=Huz}o4)-{!-Q?rmq}Tbi-yG0fIKFpKP3z5mG*{H; zs%TA%R*%{gR*~drSMA3OmrnZrjf(g281laODNdx}yK7R3w@@7GsW`uN&T?LU#H84( ze05>M8zP~-PD3Kb5tIh8W7NOjA-MFrKjVevb;eL`W<{)r4T;)EdKv(`;c&5ban{PV zc|^Qe|APz&{e@E{we?1@bGLe0fZiQ-{qRP@uu+K{xpft`RBKm};@IaVcJ}mW=d9Ll z3c+C>A*wwVq0N)#9i)k_peDFA!9g@?s$rgn4+{=pPx=$LVV2zRo%0+_s`3TL>PT^S zervxBmu}`~febBS%obqB3@d3T1K#k$0{i;HqR_qVV}J5=Y)hudN{x#NXJ3dOX=IUy zgt$pu?Uw*`3l#5!6y-5+lTacr+a+jLhSWth`D&q&%ev4VWM0fxgjK%nkm-N%g=ZYP zJ;!J|Q(9piC@8sA<^Jhn-~XZ~V63r;9g>9|loU($SLv49IR~&J7jA4ETIiH`oy_OX zi78|qs?MCKNZnR~`+iTvl44Gk8IihO=6mn}sd!p=cTFc#a)wsY56#>Je~|kny0t0YbGK&>@{tMnV@N)}VH z>$gI`AL{+aRyIH}x;53D@4}1I(BmT)BG*wKrt2M6%NEp|tXXAvJjvzN3&xmYX}FLF zeER}wU)`3v#@3C+IYc1er(#XSc)yxEg3*Y-LE72oPOnFj{N?0FdJ=>t{)Yrl%0&z( zW{u4zU*8`wa28)lKy@3NB?X*l#?#3Rq)~v_mSJ9Qi5l=*6f&{lkjM~&;|F)82NIa43IyAqFBA zc|Ca)Ak|bWwR<1e?J=mQaW2^*2Vj(Heb8E>`-NQuo-)t z+-aQbyk)6stjs-Gp(MT!` z$Mg#6J;L^*Ww5RYaM)JQJQjtR%T3kIME*&4Ck$xs)lJcICl=P(tgZaD+EGdROhMTE zMF&jDmaMZM(3O_mf(a3;H@MX%UMK9!m-b8R&gpLQYnP?hH6r7#ZTKxh2(5OhVl4Nt zRd)1Vcxr%jPrAu;U>Z*~!7yWJHFrIuq-osYo2;1y(gsm>JM1kZju?!_mhvXQqVP6P z0AA8GdU^V63hQQVzn!h*;2rx)c_gl3d(b{fqq1;XhCYcAOmY`9a@tz`{zi~hOz4t& zkd%l|;Kli&$Q-n~vW-zP4-5HC$LM5tpl^8RjXwTE=2;y6_4864i)USB*U1X|ih%{ThR-6LU?W4d%H0?9KM0dK4eK}1fAJt>S`DZ3j*Pu~=?00)ptsQ<48 zief@*I!yZGCu@Yifz7Q=Hya~qxYtHceMUW1y;z$~Y{^dAPmkfvXQL-85}Kbvb#Bsl zMO&*PCo|9mlKBq~D6Oh|rQ$zjzIa$I(74s^=SnVWH-MbG%hKZ4wiS1K<2D`hSK>vh zoS18JToB6(>>}?xTb<0gfOGn<;U`P0r1I|NW2K9mOCt9czY?I`WjgW3gM(V1y_TMX zGQdKZTTp33@n%sc^({tka*w#63kBdfZ+=)D(@n|B)B}XY+3$!Agpen!Y~SdK#I!u^ zy&3MBZ6+}!n2GfC45)|~wWxkdJo~*=s>k_Ib5_IIQ^#D}VqI|x2-x6C+y)H|_<19# zJJMsaL04DKOu*AK8#Uo}KAkS31tAiT?Swh2Q-X;P&cN z4SMni-6|HrflSYNx8PDAhwm_*RBoc1n=i(jWOn5n;WCk34~fq3uTfJ;N_TR3{H@K9 zcPR80Cv+gm3MK~4`7n2t{5Mvq?f1qMhivqXo!tqQCp}8mRvsnDQ9iV zK>>HdJIwMmyyfzl9ACH`Ogs@$AwcAhk4n+SSpy-^yHx^+Lk)1x5~Mn@lq}qe^86N? zrraVXEjO4|m#sFX(4ay%kwur6Vet{unVdYgTN&MZ@5aoV*;NXo)kzY&-p5+uW*r>p zVM&xQ#Z5Hbqz^QyorZV(Wf3_;Hx0n&Izb5Jb;`*ppCRlLUKDMKbN`tVPUuO?dFr=v zy?9h<1|0y@_#c9K3>~v;zO4egfmO-Bcb2fjaH&H8%i(*A$AY*Tj-#aq8kRjp5K-YY zicWhz|JOB#!-;2K%)XpbuKVk1AhLD1 z(r@o7i>T8_U+OC(P_Y~A58ou=(is*33GvVOzUYIMG|XfQWGBP;@dMDOQ^=iu(n`mZfy7$?+KZ zf!1U<#GwVlwD55lkwGesIQ53Bmx>$@1ya@1H2sB*kKbKj4D%G`{Wf$K}l z2$1p}g~@4IE%_&@3L>KN`S8Z-0eWiP`+HsA!`13y19~dHYIX0uZ+SV5vvf7%afuh(fw}ZE%HqM5ryv$^x zR(pMN@Jd%w?hibVM?=-4u$&YLQrGO-RQvqZEzg`X&2uWOj)u)$*zHI4EP$I`TJxaS z&OsrO8x_|cJA$OSJd$$_iB#9eflUVP*YmJ0lvt4oWV#*L6L}y=ehSs*Yg}&X@lH(i zEvel-s)98eya|7jc}?!fHU!CYdGkHLMvL90WxDsDz#4AT_UMhQC)!!4qoCwY)y1(z zc=cLK(^suXJ5SRDM;DMK07+e7UCBOQIkRCbnZIKcXz!tXt>?Z9liS!QjI7lqUcy&_ z(lB_dJVGeAPy*i)pta}hX&Ue7vJ*={?f>ZnQ+$@+fa$GQyTKx+`Q=IRU}jC<$!PcM z2n?;h5lPYjYxV=CgvM+K&xqb^aCTLw?WPy$HlnfOUmG(LD>9`=0ii}Xs#nHfqlj#%JV#ch~7A>lPep9jaRc!+lL za>kW={M1gJRvkJo&q^RRxE3}Qx!!;3ay=HDMo)D$)jU0Mm1R>7f-hu0W%58A=CSB< z3u~hmEf;x#u8OyEb-x#hfL6e-S(%>BNx~USjmcHH~)aN1=TU2@Xd_sLT|}_#=w3eOx#8#N()1p`eei}{ zV)^MZJ=^)5vb?vAVJyRFF8lx%PQ030vn^YT-J^&R^ozN=cl`A2KKGK=!60Ikc@&+T z{NG=V0m74sR7ScHr?wgj(^GImrhC`PX#PWr+JX{6rb3Vx%%@J;jwTqXy)%y{S%fQA z3h(cj4!T~qcoT~&k~&?iHw-pD5QNGu5_;Y3o-1J%9Vr>kr5J}r*E?@qAIc7V*>BG_ zbd?d}T6QcU9B#%_;GfaX#8WsAC3tYAXHg9URBRF&wM=xgYOXE>mfL)Nzzf{a^XgKKz^tN|csrV%Pel{Q7zNzUCv!Tph*ENLaxkJ(-!hZnfQDVCfIFZC1k~ zYyP}1M>p;g%d=j}b*rI{&A1kT^=?(}Qq!l&J{ zIUBjg7_%FzZ5F~+qyznUlLz{tu_s6lxR3J65Tx@rUK7-hVv4#Ca&F^bm!~k+#tI+L zNs_+@)6O3LjHCd3bY^y1OQBuEi|a~+hq8xX{Tf%SN$F0F)Jb*cAfG**sf=m|&{$M| zXR;sE@cbIYYZHoYA$L^!``g>^yH6CGdO(p^5@P3{`sT??{c#lR=lyKkJcz3&03y*L zH)Njj(`Sk7n>h-2`RnDMDr0ce+1IBrW}6@G>d8=^>}pkLoA;+NGn*J>iPb*0Bg!Bu z0zFj9x4CngUsocnwvzVke?sKPk~FYPjqz9i28s0qHR_TZvLq7hfpFeP6Wd=)7+4g! zyXzI%wL-i4VQcVt^`5ZHk=F^>L^B^xB~h{${>l$4kNM$=FoAKjaXkagk*LY|5=~#* zRo~mMgHmM3FQfKj3QQ> z*o3_Iu`H)Q{Q|!KSg6&MLm4DOJ4rrO{CUTkIKek$bQX_zTkXlxFzZWU0Br=*!Y1Ax~oAkd65*FgPm)iqpnrxnwK?rqWEgVef#h=mj2hXxS zkA2u5#tn9%jmmsXB}6DN)?`>Q8O5Lzb^4VHeaSwc&p~BPF)=#sS+u{m)7MoGQ)H&F z&eXZ?Rhd;H_*^$`e`;i>jHrDE#*|rA5-JoV1s;S&&4JYIOWzKmPq+MBXZ1IU_epD~l<}nzeB$ivVO?saCtxM10Pl^KE`xa7CXZ(5zbaF}s2{wXm?QmhC4N@y%*}LS~%LB#B z*L(8uz)Y%%Pw6l0fXj|g+l#2aU^@rN_Hw3T@Ut!A=-~AwFK21&%+woZn24368>KOd ze=F1&6l4y%wbj`K&L3hZjdeo4r=iys@vDugw@eQDxgjPbb+^9&+=hlhVn-dq=11tp zSjU01*%$NWn2C;?gzaBA&uMQreoLq>n!&Kkg_Zj=FLfxXFNOcO=`i6aJ z1-sS$kZQNAk00Z zoQWeEjv!hobl!<=ZyT{{7zqmM&?oWGSucqBh``BsB(V(8(E7M2KlxeHAH6QziEDv& zHD>u#NdXo&?*gQKO7#h*NU_STejhE@h?k2%Pgcd3t6i)FO~p3}`!>FkwYJOzCWGCT zSKW749=OmWwP$;*?Zx|GzX1f4oBI^rXOB`|40fWX_ZNy>oHTQvGD@0@+vTBedCl$- z1)7|F_mub@$%T%+W%zfpYoKM)+u!XIz44orDGmU(vt%y%B#sm6FO~bzJ!chG0;#tQ z9lA&wpT1^89Yvq%`1B=b!aKcPkJ;RD);u@PR0G^VQ(p{3sHxVb{NM;VDy~p&s0Kw^ zPMa$qU|X|s7SmxDD`);=q!Z17q^HiO;Zl1~AmY`v9&5-~*-RHI%uI{nzI`zE$olFp zGhht8l@szidR#bv*QU$2)JAhGF10_o3j3!0>{xqwe0VgR!w31kLBb14{o)xK_Jfj@z&cL=d*43%v?`Sa$P^L0QX8|AE?|i-jksvsoAM zyha%qzyd4GMr+fFD=uPHgdAfh>wS*)hBw)0ZVCkCkqKn#uWaKDz)V|N-LujD4`7oY7 zn#kone6-w)xdy)w>+hZT0Dy{x9ez(EcX^Rl>WauIL7@!ZatUmI&HDOeb@Zos zCuojK&`|;6t))=S#kX08vMM5v8p^02aOrS5mNou7s%)1{Y_;Cj(q9ggLGZb(LmL(v zvjkCfhWHVwgDygv>8(-PIYxd*pGsYrD+xwJ3sRhxRmytd#H;du#G^>ILfQDE$IFaK`&8=F)rtw@=+^QNy|EOR>fo0A^>-$S{Bj`4j)(RIDK0UoVj;Tu zdI?8MV$(Ru1lXU5h5cgk@*=V0(Y=PAe@tM&!5xCx zq^JNbiY9zO{Zl()o%&!m2~%1lr%pPXuFHxxsSCX1+>Yu<6eyh3R(%rAKUZ>Pa^$FV zdh%#<8#(L4i% z?9Getk_+F%-Q_qS%F{;$U%^jp&1OF*MJY+0<h38-)xMBs8?i**moT}qHHI2 zAr^KNCyUzl%$ncD?*&D8W9TR=TK+bCA0S_I@z|zYbVaw#X~n~Di~U?%tVAO0pY=iW z9zY)|oOaqT##AX+op|XprWJqtj=TL?8lBRS_^JK9d>Spow(&*UX=cnem;VStZL2R` zF|AajK~x0!(EDuM6=9_L?(C>44=s~@^;FeM4F5i2Q=KiiFUt&H7PvNwA1LNZNi3+p z)kPSrGBvLhIqJ#DbcyxXmtAPi4N{!^Mg_DbSAH>ZYRNPN_}=;Tvcn;LoDrpxT+?`c zUW_p`xXHEqt6VFn%EoN(Re7%LU@SqYkc-*Voc7#T--4vzgn56@J82n&N_%)~*LQn3 z*#4WpBS=Yv?(Dg3$qRMgyG@aa?=sg1|CAna3&E5_-j`HhU}(UrfFQcuVaUrJg;oG> z>x$P=2))2YTTjW+YB*(B-@SFR!mS1*&V@?+nlpwjrW)+wp$Ru$HZj~6WYB)Gs^pRS zOk<^MjrU&a9PeU;U-{uEyuHO{J2R3$Kf2RD52`8T<7qu_cq20)Hx+vKrJ05m|Hn`F zRE`LIKav7yG(T?frY4-EmDZqQTRs9HRdy4<4nKye5&Kh=dI0T}c?BJ+fJ*Y`LAqBy zH^qp@9(k)<(ITyg*x7KHNfFXPQrR!2IFhn6Ego5T#9T^JuTKcB^jMKPK2~E{{czVc z{#(#rQ!*v0`fx@ajH^|o1V2y)+C?Qz+UIl|mu9SJd;Nxb6QFe7d;_;QRJUCZDA!IZ zax-*TQ>ld(E0FUfGE_Z5{!;1nCA`&SlsXrdeKQI)Ya29&gS(472iEFjK z!rfgjde@zkEYiwdi91(2n5+)Bj-y{R8uGlwESdIkD!|*n_}jkUt05Oo)dbOq_6+?@ zb{^u$nLEhO$CthnHtcQvXw>k5IV`gajV*_^poq2Oav$Vp1E~lKmG-2y2WaoUe>T$R ztYb*hM8H*KC{PfUMsTy>;pKVPRBxQT4EYzHxd~{r znCj2U`urcJ1oa+k3u-0G4Zz)fdx^6)(??WEG!E$8?}n_JB$J;tTi_J2?_+<&ei}5| zXLRp_hWYuUhXq48XpgkFV{%r00;KoT$tN;}|g32iNrbV7H7&Q_~gzRfQ#B$4Z}f8Hdv($GwQS*W@4#qwX7BduQ8HDN zr_`0Qg%yX7HQ+~kBrL-d#!uD+>Ei3Mb9liW7`WPd!qOKQTOP6&QScWx4ey*Uujc|! z8qJ7`@2`IYQ?H{wp#&tCY0DiSWh2H;J24sjm80+aN@V=QcvQW3o49HpdH5hHd#SE_ z`d1t9m}>QUP~qKMRT_BV3g&@d2%k&y!Yo9_2$F+vLxJc-r^bH8v6@OoEK%Ft&(tq| zpJvS(a4>7l%Gt0=s{^=SiYpS^?hnPiaBjvh@<2Z&kLnY0!?OI_8)61KF({X>jb#L7 zWfidre;p>QSPs^ma7%@K07B zi#hooy#f4llvJ~8$MX1eqO}Wh7k@@^@(S)%YTL~xg3G5cfe6(pFKjbIPU^i6?4grzIbj`M2JE>{;}2Z{vg6XGjv&(v1}2<(ZN z!KV75SXyWh{gRHUfVEvL> zJ@E@bgi8%-b}o`R<=M3FV~vl6Y~y`{@bu45(-h%_B7ynG(BH9t*3r73c;sxD(&9?x zYs-Rhr~Wh5J;2AA`lke-1Mv!f7ZYf-#UVYkq0c!y~=5uguXpvGHLcwHK2I(Z^7PGh;nYbfdon16dr8S46mccaj>S) z67({|^|E~^c8oBZ8+M66fTk0amcFvsM0hA7VosFPtw?9g zpfP4ffd9DXY4W4ZFYgnInqFi6HDC57&O(T{*{S6GccEEN%9(t@h;j9^hr@#cN&)td zHEcM{>c~Z2FL%hxJ1kU0&m-8}IvHyFm>m;IdJX5pYp-Zd5{)`0eJ3cTN zB!v|r1_$Tkz~%1Y>tG3{F?vn$-_DXB4(`=|IsaTBNrAbgh`lG2VPXg!}?!dhw8u2JgAbuKvsl4HSnn#3%K1FkK*4Hi3l4O z<^LD-NgW)dPLyQA3ZDpOGhrwH$8*$R?XMjI931}t4h_4i2D_O^!V7_`Oe7GlbirpP M3@EP*|9Rs70Kkc`g8%>k delta 13514 zcmY+rWl$Ym6EzCKgC#h@-CYh&@Nj?-+}+(>CJ-b93l5= zzWVO`n3}4d?mc_;n$^9h_C$BVr+2|urJ*2MdElYEOUOnc1q_rIIPn6q>t5d7iS~S6 zuZv*(WAgzM?cE#X*a2Fs`cLZvF4inPz>3E_o_0~OsZ?*pNqy{CGsW@QUI}wKVTCT$ z0UEU&kxtvFIs1MQ+PzQuyqS4@+O!~x1(d-Ws^{)|{|VtJ1=*dHfX%@THUH$`j_g03>@mzzZK|PaK5z+O3<6$wz+>Qduy{I+lJ zAIGc_!KIZ+sKGZfye%8sxd|JRiI0wIEd+LH3Yw{kNdwF}r8~|4M6!RsXWfbixc^i{ z2&)9cFax+HM+Yl1Die{a(n?wA47D4=vOa2#qR%AV6M+4i-W^K3YnjS0D7Hp@Nzx?n z7grb!>H;wR;3X-AS7r`~7eBRy3#q;L@g_4{FRZ1k{>D_;pnN(IWA@|7CoTWN8|)9t zfJls}zq5$<@U5P<{mn3dV&YeU-ta*LQ7&^}#inijDBEFsC9Lztax+Cb>~W8fz_wSU+l8Q4+xI|wOPwHh}}9mO(}&Y0~hdP<2o!W!m| zDprDfTw&jcS$ICxq~5!SAhzbrb!y$WO+VRtfZ-(8H}+7&A<;YJwAL7i{g9n`9&wi) zcV0kwn~M*P8{7C&JPV$YPBL%Jf{&F@aZj(e#>zXk(&v3G0kbU)>TMt`$)rn^DDFUF zK7ATd3Dc=VT0S{hoH>8dp0Ey0$E_)DOy)DMRg2oG9bEo{hk2j7-4bzRv`Koga;1)Y z=H*hY;8SBX=r?2&#qskA)}labTT}b4-3C_dn+&nPmWRV##1pRP=n3$McnJ&oShYKE z>E2+;_R7w{=;7d;=-}aq;1a|QJ^&es22S&wcwr|DN8;KLh80@GIL$gdhY9u)4+>bH zAbhEO#$4gw!lxTD;ULcvUW=r!8v;8bI{{Cf>-V!$n`nsyHEh8KjBvVPoQsdd0JavMc?ZCK;sofz*$EJN%B%8bz|sboFIX;pQE%$N9kH z9kC6<3A>j(PLp*OZyZmAY!zU9fi`p!oy9k-*D0icFvWnKZzZzkcZa1!R)6P_ZB10J zeY|<;!k}xjB0UIH%W1G&e(YFy=j2<@h;&@#A%mxmWDs`YL0UM~q1%Lesq|N(g9x{q zANvae=&OMw_z-^S)15W0_`3Snk(m0ApRvgtYlpdN9uSk7Lt7fix-tNqzG&}YKSkDE z*$*@%>1*skoyFk6?0-V|6{*u!#Q?+2Px4kQ+`39YfbbZe?UoRmqu)y0&dcT)pDD-m zVc!2&I5uU2FpKXG1)H(;Hj(m=Zf%Ix(8xkfoMb-g(`4SRWlNEs!�nMktnCP_p!- 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 diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index e855c62cc..9d7465e64 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -10113,6 +10113,38 @@ Office.AppointmentCompose#subject:member: } console.log(`Successfully set subject to ${subject}`); }); +Office.AppointmentForm:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-appointment.yaml + + + const start = new Date(); + + const end = new Date(); + + end.setHours(start.getHours() + 1); + + + // The async version is only available starting with requirement set 1.9, + + // and provides a callback when the new appointment form has been created. + + Office.context.mailbox.displayNewAppointmentFormAsync( + { + requiredAttendees: ["bob@contoso.com"], + optionalAttendees: ["sam@contoso.com"], + start: start, + end: end, + location: "Home", + subject: "meeting", + resources: ["projector@contoso.com"], + body: "Hello World!" + }, + function(asyncResult) { + console.log(JSON.stringify(asyncResult)); + } + ); Office.AppointmentRead#attachments:member: - >- // Link to full sample: From 0679d3aa9bb6eb7a2aea6899448281ed8d4c57a6 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Fri, 31 Oct 2025 13:55:57 -0700 Subject: [PATCH 67/71] [Word] (shapes) Add snippet for geometric shapes (#1020) * [Word] (shapes) Add snippet for geometric shapes * Updates based on feedback --- playlists-prod/word.yaml | 9 + playlists/word.yaml | 9 + .../45-shapes/manage-geometric-shapes.yaml | 168 ++++++++++++++++++ snippet-extractor-metadata/word.xlsx | Bin 29543 -> 29772 bytes snippet-extractor-output/snippets.yaml | 77 ++++++++ view-prod/word.json | 1 + view/word.json | 1 + 7 files changed, 265 insertions(+) create mode 100644 samples/word/45-shapes/manage-geometric-shapes.yaml diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index 72fdf9972..e5cd4eddd 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -386,6 +386,15 @@ group: Shapes api_set: WordApiDesktop: '1.2' +- id: word-shapes-manage-geometric-shapes + name: Manage geometric shapes + fileName: manage-geometric-shapes.yaml + description: Shows how to work with geometric shapes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + group: Shapes + api_set: + WordApiDesktop: '1.2' - id: word-document-manage-body name: Manage body fileName: manage-body.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index 1d848fb05..9f74b63c2 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -386,6 +386,15 @@ group: Shapes api_set: WordApiDesktop: '1.2' +- id: word-shapes-manage-geometric-shapes + name: Manage geometric shapes + fileName: manage-geometric-shapes.yaml + description: Shows how to work with geometric shapes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/manage-geometric-shapes.yaml + group: Shapes + api_set: + WordApiDesktop: '1.2' - id: word-document-manage-body name: Manage body fileName: manage-body.yaml diff --git a/samples/word/45-shapes/manage-geometric-shapes.yaml b/samples/word/45-shapes/manage-geometric-shapes.yaml new file mode 100644 index 000000000..10849e122 --- /dev/null +++ b/samples/word/45-shapes/manage-geometric-shapes.yaml @@ -0,0 +1,168 @@ +order: 2 +id: word-shapes-manage-geometric-shapes +name: Manage geometric shapes +description: Shows how to work with geometric shapes. +host: WORD +api_set: + WordApiDesktop: '1.2' +script: + content: | + document.getElementById("insert-heptagon").addEventListener("click", () => tryCatch(insertGeometricShape_Heptagon)); + document.getElementById("insert-moon").addEventListener("click", () => tryCatch(insertGeometricShape_Moon)); + document.getElementById("get-geometric-shapes").addEventListener("click", () => tryCatch(getGeometricShapes)); + document.getElementById("get-moons").addEventListener("click", () => tryCatch(getMoonGeometricShapes)); + document.getElementById("get-first-geometric-shape").addEventListener("click", () => tryCatch(getFirstGeometricShape)); + document.getElementById("get-first-heptagon").addEventListener("click", () => tryCatch(getFirstHeptagon)); + + async function insertGeometricShape_Heptagon() { + await Word.run(async (context) => { + // Inserts a heptagon geometric shape at the beginning of the selection. + const selection: Word.Range = context.document.getSelection(); + const shapeOptions: Word.InsertShapeOptions = { + height: 120, + width: 120, + }; + selection.insertGeometricShape(Word.GeometricShapeType.heptagon, shapeOptions); + await context.sync(); + + console.log("Inserted a heptagon."); + }); + } + + async function insertGeometricShape_Moon() { + await Word.run(async (context) => { + // Inserts a moon geometric shape at the beginning of the selection. + const selection: Word.Range = context.document.getSelection(); + const shapeOptions: Word.InsertShapeOptions = { + height: 120, + width: 120, + left: 120, + }; + selection.insertGeometricShape(Word.GeometricShapeType.moon, shapeOptions); + await context.sync(); + + console.log("Inserted a heptagon."); + }); + } + + async function getGeometricShapes() { + await Word.run(async (context) => { + // Gets the geometric shapes from the document body. + const geometricShapes: Word.ShapeCollection = context.document.body.shapes.getByTypes([ + Word.ShapeType.geometricShape, + ]); + geometricShapes.load(); + await context.sync(); + + console.log("Geometric shapes found in the document body:", geometricShapes); + }); + } + + async function getMoonGeometricShapes() { + await Word.run(async (context) => { + // Gets the moon geometric shapes from the document body. + const moons: Word.ShapeCollection = context.document.body.shapes.getByGeometricTypes([ + Word.GeometricShapeType.moon, + ]); + moons.load(); + await context.sync(); + + console.log("Moons found in the document body:", moons); + }); + } + + async function getFirstGeometricShape() { + await Word.run(async (context) => { + // Gets the first geometric shape found in the document body. + const geometricShape: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.geometricShape]) + .getFirstOrNullObject(); + geometricShape.load(); + await context.sync(); + + if (geometricShape.isNullObject) { + console.log("No geometric shapes found in the document body."); + return; + } + + console.log( + `First geometric shape found in the document body is of type ${geometricShape.geometricShapeType}:`, + geometricShape, + ); + }); + } + + async function getFirstHeptagon() { + await Word.run(async (context) => { + // Gets the first heptagon found in the document body. + const heptagon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.heptagon]) + .getFirstOrNullObject(); + heptagon.load(); + await context.sync(); + + if (heptagon.isNullObject) { + console.log("No heptagons found in the document body."); + return; + } + + console.log("First heptagon found in the document body:", heptagon); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +
      + This sample demonstrates how to work with geometric shapes. +
      +
      +

      Try it out

      + + + + + + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 488e758f71e85ec4ab9e7b10ee247f284350b98a..a957c35e13d5fa9dbb3535253393fd0bdf593c62 100644 GIT binary patch delta 21456 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 delta 21170 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 bmj$R3qTJAH0jh*ro@m}cK@ta_|0($w^K44> diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 9d7465e64..605c240b1 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -25098,6 +25098,24 @@ Word.FieldType:enum: console.log("Code of the field: " + field.code, "Result of the field: " + JSON.stringify(field.result)); } }); +Word.GeometricShapeType:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Inserts a heptagon geometric shape at the beginning of the selection. + const selection: Word.Range = context.document.getSelection(); + const shapeOptions: Word.InsertShapeOptions = { + height: 120, + width: 120, + }; + selection.insertGeometricShape(Word.GeometricShapeType.heptagon, shapeOptions); + await context.sync(); + + console.log("Inserted a heptagon."); + }); Word.GetTextOptions:interface: - >- // Link to full sample: @@ -27448,6 +27466,25 @@ Word.Range#insertInlinePictureFromBase64:member(1): const pictureBase64 = "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"; return pictureBase64; +Word.Range#insertGeometricShape:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Inserts a moon geometric shape at the beginning of the selection. + const selection: Word.Range = context.document.getSelection(); + const shapeOptions: Word.InsertShapeOptions = { + height: 120, + width: 120, + left: 120, + }; + selection.insertGeometricShape(Word.GeometricShapeType.moon, shapeOptions); + await context.sync(); + + console.log("Inserted a heptagon."); + }); Word.Range#insertTextBox:member(1): - >- // Link to full sample: @@ -27949,6 +27986,30 @@ Word.Shape#body:member: console.log("New content control properties:", newControl); }); +Word.Shape#geometricShapeType:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Gets the first geometric shape found in the document body. + const geometricShape: Word.Shape = context.document.body.shapes + .getByTypes([Word.ShapeType.geometricShape]) + .getFirstOrNullObject(); + geometricShape.load(); + await context.sync(); + + if (geometricShape.isNullObject) { + console.log("No geometric shapes found in the document body."); + return; + } + + console.log( + `First geometric shape found in the document body is of type ${geometricShape.geometricShapeType}:`, + geometricShape, + ); + }); Word.Shape#textFrame:member: - >- // Link to full sample: @@ -28061,6 +28122,22 @@ Word.ShapeCollection:class: console.log("No shapes found in main document."); } }); +Word.ShapeCollection#getByGeometricTypes:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Gets the moon geometric shapes from the document body. + const moons: Word.ShapeCollection = context.document.body.shapes.getByGeometricTypes([ + Word.GeometricShapeType.moon, + ]); + moons.load(); + await context.sync(); + + console.log("Moons found in the document body:", moons); + }); Word.ShapeCollection#getByTypes:member(1): - >- // Link to full sample: diff --git a/view-prod/word.json b/view-prod/word.json index f91bdf5ba..f59473227 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -39,6 +39,7 @@ "word-tables-manage-formatting": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-formatting.yaml", "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml", "word-shapes-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml", + "word-shapes-manage-geometric-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml", "word-document-manage-body": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml", "word-document-insert-section-breaks": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-section-breaks.yaml", "word-document-insert-external-document": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml", diff --git a/view/word.json b/view/word.json index ebef6fc8f..4bbdae6fd 100644 --- a/view/word.json +++ b/view/word.json @@ -39,6 +39,7 @@ "word-tables-manage-formatting": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/manage-formatting.yaml", "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/manage-custom-style.yaml", "word-shapes-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/manage-shapes-text-boxes.yaml", + "word-shapes-manage-geometric-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/manage-geometric-shapes.yaml", "word-document-manage-body": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-body.yaml", "word-document-insert-section-breaks": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/insert-section-breaks.yaml", "word-document-insert-external-document": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/insert-external-document.yaml", From 34f77c8ce1dc65293b38d97d7b71da1807790023 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 5 Nov 2025 13:01:55 -0800 Subject: [PATCH 68/71] [Word] (ShapeFill) Add snippet (#1021) * [Word] (ShapeFill) Add snippet * Fix typo --- .../45-shapes/manage-geometric-shapes.yaml | 31 ++++++- snippet-extractor-metadata/word.xlsx | Bin 29772 -> 29925 bytes snippet-extractor-output/snippets.yaml | 86 +++++++++++++++++- 3 files changed, 115 insertions(+), 2 deletions(-) diff --git a/samples/word/45-shapes/manage-geometric-shapes.yaml b/samples/word/45-shapes/manage-geometric-shapes.yaml index 10849e122..d94102664 100644 --- a/samples/word/45-shapes/manage-geometric-shapes.yaml +++ b/samples/word/45-shapes/manage-geometric-shapes.yaml @@ -13,6 +13,7 @@ script: document.getElementById("get-moons").addEventListener("click", () => tryCatch(getMoonGeometricShapes)); document.getElementById("get-first-geometric-shape").addEventListener("click", () => tryCatch(getFirstGeometricShape)); document.getElementById("get-first-heptagon").addEventListener("click", () => tryCatch(getFirstHeptagon)); + document.getElementById("get-first-moon-fill").addEventListener("click", () => tryCatch(getFirstMoonColorFill)); async function insertGeometricShape_Heptagon() { await Word.run(async (context) => { @@ -41,7 +42,7 @@ script: selection.insertGeometricShape(Word.GeometricShapeType.moon, shapeOptions); await context.sync(); - console.log("Inserted a heptagon."); + console.log("Inserted a moon."); }); } @@ -110,6 +111,31 @@ script: }); } + async function getFirstMoonColorFill() { + await Word.run(async (context) => { + // Gets the color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + const moonFillType = moonFill.type as Word.ShapeFillType; + + console.log("Color fill properties of the first moon found in the document body:"); + console.log(`\tForeground color: ${moonFill.foregroundColor}`); + console.log(`\tBackground color: ${moonFill.backgroundColor}`); + console.log(`\tTransparency: ${moonFill.transparency}`); + console.log(`\tFill type: ${moonFillType}`); + }); + } + // Default helper for invoking an action and handling errors. async function tryCatch(callback) { try { @@ -145,6 +171,9 @@ template: +
      language: html style: diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index a957c35e13d5fa9dbb3535253393fd0bdf593c62..549f9dd01b616dc581faae3a17edbd14e9bc01b3 100644 GIT binary patch delta 21190 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 J3&{V0{0EVUL<#@^ delta 21044 zcmX`S1yCJL6E1vkhl2*^;4Z=42@>SsZo!>Ea9KP^aEIXT4#6P=hv4q+5FkMC%lrNR zy|qE8_dY3HZ6Ko7ZZ{ z8o$a_FES(4dP46D&+EgU3;piCZg?~d$c-dlvW%{_l9yRWW(94kmYAEFlDT}7VL@v} z?!$Gn381K1w71x7rJ1yF7!DqaH3^@Kv|_>6)vnVclb~TPgMD!5&2*QpsE_T@)NpJY z7?Yj@{o-P8UB=2CDy=tZtqv`mp#8CC_USJUIo8W!SU(YK;PIG7KNq83o!UE)1DSlz zeXIl8jtAx8gxR0>Gz$s#qi&cgm4$cmTI(pIJ^)6pZ-oHNz6J8muUV7ddU{j$eK1a7W+QKTjn>7c-Y z#|vOw+=8SVZ#DU$RInuP9Tb*FJG7Kf;Q7{#XNci_${a$428Mu0P+kikg_z==6h z0Igi9l5)#DFYX4PFIobT3J-KARn2A?VCg!Jb|S{8be5^VDu56^Bt&GmheULR<&CI0 z>o9dCLRT>J^F9&WWL8;^MbO>z@DKl;sU~u!C6TU_p*@|FV2t;5=`KsQJVEuN_!;uq zW%6Itp9mF))u#$&HRq~tOjTdayJw!3Ulu7Izval+JR66i;2QTeSo8e}id?5>1QaJK z4`HJ=P)M>(&s>g%mGK0gvk-PZld_})>*7Tt4qLYpj#)OCbL3cUIlH%XWR~oR{k7CX zUfr6fW6)CPt$4k4?+EbaEhZgO+MMArsA+IqKq(PuYH zK0fhVVwT{+>V|!go}Ssmker(_*SvkiU-eN1!n>m7xJ~=x+nK<3yg^#Rm^Ux=`W&@a zE{XVp%lL7ds{5K7%R&+(DeF}rg6ft`sB)${OoGtY1u`>^GjejDeP?zWWhN};RFiZ; z@XQVZfnHz#cT38$i9z6t38|U>12d33T4Axt%VAh^Odd8U{(4Nl_~CBsOjga2Y9~?c z$+WNfo4F`wle8MnP6;6P^0MLthywT5sX4&IbI$9_=mqd>`mn_gJWa5_{-b_g0J>iO zq`qd&8~Z;`yuNfFH~~)&D`GECCs^#Sbx(h;Rk|$?0b2WqQHrD2*PH9Vg3o_$_cN>3`4s>ETuOscWc4r3BEC(Nai>j;|D^1ckrwv0<=nT!<1%eR)|sRPp0lN>%m+lLo&gI^4y=GsErL zPG269H!`3(PF?vwx^xuH$;OhYPwL72#(nQXPc1hNi))Al{-3iD1bLbTORR-o61@7hfMUcpvxhnYWqj?4Y z;OH5V=ouFv@V1C%h49}c@AtK}Tu!(B^Kw^yZF~st1W+cT3d>6HOx``8=MF+Wk zDc^@l-l&z{5zq?sE>X`AJ$!v$^5ryB+TSYjC1ii~t~Hz-abDLkW|caUk#(plnS%kJ zml>+>z+6UXxn*K>aMDJS`p%&kVVw4cUpQGGHI03l&F{jCocY6!*NnnxOn;L}V93SB z>O!<15h6K~l5r~zGQpT=NVNZHp-WTe{D}k97IL@WrQYQM=l<=$VvP3Z6z7ix7{o8_ejJ3HHs_j#EA?{m?r}yapuA)egASXZ zB_k>I8)(1&+w-mEEA7>u{iA(Edwbny^Jr)zY*%IvOks99X^c~h@sjjc-?q`{*eIT# z{cqzz&up_v3dYAT{By#2Iv-jW3|_2vix!Z_nKoBi%u_EqWHaJ3)_tqZ0O0piU+g1Y zSIsrMHp|A75l>I!eE&T10@J2`%~?kFonG0r;A6<(%lBowPKRs*=6|A26(sH_4zm37 zf(c6_xwd5ej~L8;6r2O(xhD>9SJXF2RNLzODr`s1o|cQ1YLIt#AaU6S(&3f96I}NR zeGPkb(mFAv`dh%LGsO7|kTbv26ZIXi0+iQ&-thj>kvQWcqf|W^a`}YlrpNz>FW-Ppvb_AZw?~#T1kw`zAV7$x%sis z0Bu8Q^fe zyKV@F{Vbp*p(hDjOw5jtuE%^z|C3&E68t$rPHp#%X!cS^cj;JcFXz$KHui}3l913i zDpiE4qcXrr-!nD!jLu&D25pr7&~{7wAS7pZ<#%|?#+Q(Ikq2FNSKY2}V{;zeW=lqH z)V(d8%VKgSqEs}@!9qDQ`}J*V8&7|9m)Tvf%`O>NR`$RDUVqooYB=7?(tQV+CWvmDsioubda z)nHev^|Y{K%pa}$4bbQxw`v(9E})aywh>U$)=(G1i${5!aRpa9GT^4R0_fH0?U~gw zo`V%^-;ZG71A2I*l-CU<51CiqTzX+_O=*D&e#ebw4-Voyz8kvxWZyjHI=;I0g;kQ@ z$W0!7oj723(V}^l1Twy7`_5EX?Wx&ATb}Y-^_AF^0>M}48^dGTyVv)rtTzS?r@y%T zT<;86>Ga-o?z)8pfUGZp^j9my8-ogVDPu0YqB+P06)8=y5c;Cgt-*y2`zVW{e}u@) z%|4$nTybm8G3!qm&L0Qq^>It=5`HO2mPj$N)d%;f>vr&Qr}E-b(S9GCu#44tJf6Yg z4ZgNk(2}}yUUWG`V$k@UZ23{56ZU*UZ|8y?+bGl5PJNPUI@Mxe4(LtJvD3ff=IcUR zr>ZOpaN5XK%WPtbtUV(gPVsgEbJF|Y4d1=kDZ1wqBcGCd<49}C5IAJ9W}omsX=*?1 z-oLWY)`DG!1ndt;Ug?MQ;=P47jf{pN?i^M(hMN~iqWGMs+=+4Y-(mfbalAiOnIo3- z!!?4IA3MWPKdJ%#nUnu1m&zj6ui2m)D-Lj4)39t1eL_-ep7qJB#Vm5d6^|XDKi3c0 z`%hRQ^w;=={m~cKDrL5d0vxB-^&F@59B-_TTCrL(VaV9t6ar_6kQ>opwu?OugEqw# zPxl$W3lxnxTn@8KpAeQe_iIN2dpZ%sult@mw|oY6_UrsL`|FmiP1n9T7u?0OU~P(1Fe!V3l-(=%Flkrx94F( z6xfo9y<{GdtdD})0>Ty!Lss>zl|o-v*P;QxN($`kgkF&n?lL&#o79vs>K?{+`Qo~+ zdu&r$qE*)sgA^5dpBD6Y=k+;hXM1Ju(*Ws3S;V{5I*lGb6#wORiyIchV#d*R+O<&w zN98dJ?1%VX5q8#YF#E}9SM6wOQ`Nf8N|gse9uWm~g*-@48_=Q-7X0PeGDWc(9Sz)` zL~?wKjpv~SRr!}(a|J6SHC4v7qW66@B^g)q!EU~MUtbIlajvq&*vz2Bub*QO+kQBA za6owpcaDMW+93t$?U4eAH|rUBxW^fW@wVgU|4(MT5>=kE#=gLt)xUMj&`~qpCjuH< zmV2>Ik~hy3*p-Sg)+`9XDb%SM-r;_4U(eVoPDRF8n!Lk=C5!Jf?AKb5=+idmt-Y(6 z;|#q&{%%B-WG=NKRC=G(@AU5D4ePiyJIl0@@sn1rlTYVz&gN5;bJ9_firT50O1bEn z#c=%Y=r6TX2d)lEZSU!rUxYa z;^%h{u8)Q{F`G3fDw-MNR!iX7Pj`7&b2HFqTS;KNi}d~=RPat{CK~!NXGF_K;mL22 zvqAM*id|#Po0!Q-i6Qc5{9JiHD1vSBb`d%+W(?W?hfOfI=$4^e@b#frNsC#(J&bTE zLn~VgL&9JE?AGq|OQ9FWb=+}ZkN=M(?}>%-J7vjlI5`>#<&SCOOEv2u5=6Q}=y{b|Y{qMk zvw2tZ#E3dbNizFK-2I;?eer3&xRcPOPAMKHDa`G3nle-%%+*+l@f0h6UMv?3%_yOy zD9!ZWyx2dpvOIz7PO2e~{R!1WQ~0Eghp7)};>`-nz?70n2SQmH6QIeb!x}Bc@v7HG z4XKciRXy|-I5Sfu!vMsut-5Z7_#-%^+)|~Oljk26enamou3IO-(sYKVl{DDyN*5=- z=n!3mtuS@6WyGN&>jOJ`S~M!ku7Qs*o-e_?IKELxakzk}=l~Y}GY!s2~LiNyZW^J4%$(vrq#oH(*hdIe}idimhcFryTEa3#d zjUL*fZTM$V)eUdHg+LY=|1kS@dI@+oEC|t~L{%Vj+k5qea1J&kcqB7T7WI%>>`d|N z2<{QD27Y!47a+)VRE6J$LCaT@c6;<&nr}jH&g2^-)a$qOuhk4u1E8*%4~Ug+58fFJgwT+XqjFlq4QmF(6e(CCMR{gB*f}DqNRj(MOEmFTxchc1yEmb+zi@K z6B?1uyJy8O-xQH}b_j>fwPYuH@LFmckY|BmW5F45l{)?+8$F)hDt!Cz2XwM!37M7OKrTK=|UL}b7ktcDnP``A@lZuP_ z=R$zqQ~ClPf<^q7f|wYnBB^wpM^c33N0=|D_+%TCcMdQvQC%F~kwNuxOt#frv~vUt z7v*FY`I9*N3Qd0`3wDOK0>_J^=U`Q#`lD1UXcOfJa@2PfmeU~t_JB$~jE$c`h;3qt z0E{HR zn+(jD)C-JlniQVR2SDuxR8=WYH-jVyU;*9E&5@RIVwbJ z`gK9ahc(qEA8cVWVhYQTH#>@{d%X~vvL?RU^V8auXZF$KC&?ilBqKg#2$t!s8XcpQ zgk2xs&_Pfi(&z%25QYW|CdKFkC6>N~2hrj3pdy7830Z z=WR(L*Z^P6+N;8P0)M3_s1cd(g2jou7;^leLDOp0Z*_Q(CcfvY7?XbZKu~HCHTqKE@Mt|iElu{-wnHT($P=XEdv`F)u1^ZqTbK`Eu(fqhgF5`P zDdiW==Z2VngmcN~fIMnGo?F06XxPD{B&Xzr*^W}9!or@amZuvx^FzKIO6d)~R5&c^ zQEV0YKXEh>GRfx@6KDBDAOS%EqzsthYVw5YcN<&)VH|jel*wES8x=PHXna`P4={R@ zA7MJs)DO=;rq^B8w4IA>iOVCU!yo<{5WtE&6u2G0&|63#SvsGfUFIxC4%TU!U)$Eu zqkx5N_PuoZydK5) zFnm3Ws{;#>;egVR5mW;(($!>+>NRCd!xPTM@?+)<{IHgfXlU>`&WawKcxS-JYiHcA zH2MkC{H&%Epe+!gki1du@T3&*06SyU`^rWt&BH?)IqghJi1~F|HBDdMEtf1t@i0vG zH|1Jj1awj`DW=+J{KRYN?c>RcZu3grY|cc`Q1BGnMSBb%A^Bxz!O(;!!JHu&qWpqF z+esP{O5NbXT9E`4YP?2pegSbD8ySKH+%c!LtiE}{5au_JbV|Xtk3_)inYE#L?0!U> zTCg+q=@fhs{4xEAgwQih5`+xrV;ZQ4q*fV)-c_!O5@Vlp z%bFk5_>Wj~Vl?rLhF0aXvE>9-H3%4z5k!-_dj27f}WI|p38bq#%z1zvOdf&rb)9^YB z-&?a${2?!WO7^3i6Ka_z-WR9L>1uw}*o{q58s#GQ+uOcV8^~$pY(SbVc=s*bzu*O|HxtDh~P&7 zPx}=Nk5JV{?kQS}3JaD*hNWRzF_R4E#T*WP`^^xLLkNVllnFT_u<%^mYb31lO5?9+ zSU2srdZckQYL=;yVBqlhfKftCpn5Ep^lS3zT;1%Usyp5b^2z2v@%g-f>cS<|mE=Jg2So)C? zj(tdmzHHDz-0E;x7gi7*B_%RyJ_MOw*uT#Z93Y^TlUGe^e$Ks2wojGoLJ*y2mIm?r(oYH^+utY%Z!sxzT! z=yhBpYTo8^p8!d$Le{3ZW>$dXEFrl3QiZf3SeZ$f)KC?!kmDe$0ge(rbTXdFS38c}!xzKvv)R^dTh z<49On7OuFSMfJ$eIo_mo#bHX;j;^JDss+slo&+jaIem+_O0Gh~DOv4Zzn1LFxu@1y zB?~1^DIhQw3a_VAo%yHtQFOlC)spBWd#5*|3aF zNu$bzB|i&6&Ck{Sz*tbHBxQm?m^go?w%*EJr7Z0U*C912G=r8G9VX&2YK-)vMO{IU{N@` zzW)`a9P|xC#+1v6F7~#TXoTy(CzxgmNxUTd-!6YmMS1MX8K9`DNJyL;BXyy_9QVJS zt0CuRZi>|o95?P{`!CbFDjElnn6f~wl~A#%68JdzxJu_HbwIwVw$bFx-(H=m|EcWj zn@Py+TO#rhA0mWIYt0E6KC~|04mpCT<3h}3{ zp4^8EpkSILURX&@!ON8Q`0vxUP$&!9UznK{lkcBBezA$0*+;-H`{u`y#9<(ZR%_8$ zVXPMkel2uFZ6iU|DG7rz98_q@-fcOjmcJJ<4QI~go8Q2R{-om?9|RCNp^RKu^9LC0 z(rhHRBP%`2xV@CU5d5``TTyAYjpHT;B+| zLClAT(8QyS(7aj-77!D`vRMTmZ{b!lqKf9E(ZMe3lsdq~lz39^I@RA;w3fa)KTIP^6$@}fjLnqK zv5H7w_B`53cyo)(sS~QHL-@Dja>o@J0AW!c7$x2y4Gfw$hIg>)=qBBtn74=%8q&Y+ z+9ThjWep4+1eSl52A2mCf)rx?jP`5fi@i>{=Eft@5sB8!03;gog7XtC$&J*Um5UKq z$TSVKacV%ko^O00j%e8ebIMCqGp=R)Ac@hTby+@Z*2OJh>D zydgm^ph}exB20B2!&M-7>F4Ih5~Djq)|Mtf4F4}GPcUV@ToB(&trjsZCa-oA9K^HD z7fX$I64L}||J1-7QcA@*e)xe^oYiQYuYYsXMH4+~y^NvH&Fnd{vk^BhW3c-mE>20p zV^C&@R&+HbXtz5-8d{j=1yfqM(DAQpOk2uRhIY*aOcf#3#>16M{;jWa>Q z{z@)NnU$a0Os;;i^PWbF3oBv{%yd@!XE;RNwfHy@fsF>XH8YW!jTBXy(ustB{G`qUNaD>tT}|5)o8VjQ+s3`F!yy zItQamw7Gy|Y06*p5)EPbpkY~dfh&QF=40KzPwIU4$fZr?=4~Zz4_}7&`LF3dgn2` zlrbn`w90AVqLpf%M+A4QN)`aLTsz58S|Fa`66S(#z(=W{Di*#;EQWm7T)wp)?j57N zPYgPbXH1ZdzXl7H{;tacj&DEJo}aAxJ7Km;;j$_lhKPq9?0h>H#99H(c`c5W%v_d1 zgAzH1%EU=GB`}m?zvxlduVK%AEbTuj1F!8Mj8I3hkNsKoH*&?|cp?R=KKU;FFfx6n z;e!pCw{CEeYcT}H&ba5{jcD7+2l9)rvdo4o;3}-aWzS?xNHNhL{d*j0!^`6)tesFn z{#|DGvlohM1kaBECq6EU^T|b5zHo((`vS2O4#%uMaBr4ni=!09umXN5(H1N8gqSiW zwMn|obn=NL1jafYnQ|N`u}2w%u|Ld)#)*1y--UlIR8dok^{0^|mU%!ZP0(o5e3X4c z`6(WNVtjMl{j#elj-N~(N{MZnBIY0eplow682`0$QqzY*ixRgH!@y-@%XDiT z-zJ9*A^jl|x1HG#%;59A8AGGL-w7g6ZF0x>h#B_0iPOg!%Kc#Zvzx=dm4Z_^SFer)I+?2p$h95p`C$^E8P7Ra}(I!fJGt*nDeLEoG zL=3vN4g?$ zm}}O(d*N~*-jf`SyG6F?ng~fq`J4B43bb%oC1zQ@*fI4zeSUE(cz-R*rc;t2vFLeh~-S2=eA_eVaNdX@V1I zl)iofJz_qGgY@XiY+EPtvKaK_1^uIsZe0iyRI3;{3%@2*yV-9%2 zsfY5cT_U*E0lne9d^}EJHOntfUGPMB7;vm|A6;52g6dDTmHd}yqMW2PN&F1yhtVB{ z!Ou7QNx$Q@3Id^HYGhVRy!i$xKYSQ245Y&<`Ua=e$T3Nz0^=h|%8Dl3EH$QIgBrnff#b!?mISj|~=5u^bxc`w_wEA8&3W~2Yc5`%0(%BvVv zDxGM!5PoWIP;Vs92Oc46k^y~a?ntF~gN5PEmFe*x-1qj6XCk6oBwEAx1*(BROZK?O z6q8ucLY%e_yi{#9cZ-|n2?8gRs(sW26)EM>6;;eq@V{*)GVU(8O8o6n*R1Tp0#NcK zVfeN4B4jWe)9ixX+JBeXt94o}wlVA?$bbS|GOu)+4M%DLhB8OrDGi!F4jQk%E zB4;6q7mhw+4GLn6RVbK=d7xxXqAh3_k&w@rKrZ=^OX_gbe#Z{o7ysSQ&Pge#`tSQZ z`9K``TNGL2V2}ys0LgWIS5d+*45EqH9>|(yG?1up@hBm8u({ZY;( zKCQYyCm$!%C_X)M-i6!A;3AU!O@Silo4nT=Bf+4weP>S8iy+Y0NIp z3=DNQaS1WQV6;1tOgMl&l&Po*vt32bxa{q~+8e3?C79%+bOC*w0V6EhFoX)k($DKJ zt5_tp3AO1IeFkfFWvU{V3P<8)A{t+#X_)yhd3_d9nt3K4o9QcHHmbAcp9l1Hc`6&dpJu`ZPQdEOIuq zVDdomtQuSJij&4Op;=iHY1*0L^K6!HiM{+Bmq`>=BZ_3xek2td=Q^E9LB8W1qGpoj zaWY%Ehs$%>BQ}NtU2Q6wrfP;N@*c)lcohQis>py3ON{oHb{X) zc@2l0ZVtX54mz%AhK)iLJ2)vS3l_`soQ$kvnaZJ}o8vFzQ^Nzz;lSxdZV!3lg(XBo z07+G7+ua}e)`Q!}(=I2lyw~9aYQEl%x!fy_<{7amkQfle5FkD*b^V+E*cQ#RATz!@ zHpf;gJtN{EAD45LAPgQ#Ag+q{SLa$vU70HJ$}O$s#RhN4*RDoE4rD=uBTo4Ssp)2G z2#P7rM^nI`pEHeVE(`mxLgL*TJF>S$ed9|@1QXl8dZ~K zh=!}HnH-MAQjwe^CN^v&ENmk* zoZ(cVkOdMi2}9|)q*sM3U&w;s*B*(%0N7IYu)b?q&T1PA+-BpF=29V9D1Fk=W6X%N zRw#eRAzf>7XQqi(NwYmIcN{xHb3r*(N|7IsZwbTFERYj2t4;uw4UETwVi|j#UDs+( zlo!V4tAg;}pwTl1b6#FWE(yBOe30y0u9|y8-;j(Nj^i>$+|1VILoI`?JoO1jG=n5ZPb(5j$nz@JAS19RdI3SFB6%52qmg4H zZ??yo1X+8tJ;YL?l{JkWuAL6=XfPhuqPwo9kgK}ozTVCyAys_tIUsonO=;;GZ5>@p zN#`^jHqhq!O;V%7I_J(v5*l|p3LC^Go&!Qq1@)#B>g+BEsm$_NO-B|l9*4nstM~@TI`?oPIcP&2iuqXHc^n_3cvrXPr0F3GOE?1tl0lpZYb!<= zL7c=W0IYo51H36j9J)_w#fCil@PLjo!qOf$s&oLtgO_SZYmiei!rHZF82$d2o4j;l zj5TkVwvgp*L2c*`N5zHz@<*rqAG~XrFw)KQCt~BZS&cxOqm@?hw&_s}6q-%nQl=|IQxe|hcUU_*b>HVjM}y`i!0Gq9lW#OR#H;N9y`e)>6YP5Gt*+(np_>c zFUW6Q?K7WDN}8t=a?DSdr(>t;-Fh*qP^Z;xaja{v>7IQg+sOeV_`Oyl7Ou{8F7?Uaky#LWW~zI#Vk?D`L&b=`j_ZwwDP=#ab$AG-U) zRG11JUsbzv3vbc z&Z@Qf5(8CWlF(_IS{5&%`kOCY{0}txh7!1FSR359QAhWQ~!}C9`DjkihFH~;cHtma0>c+Uq zr36DOQX2q*+5R81y-$_b563sS-Dl5LXIFM|R%TMbMwfV8Z`wPXbfUSN34;ZLw$|>f zIAliaN(8@)+~QPnh3}QbU+v`?Cfba0#Xcq(<;t_RxaU_^DrRePbdYgd&_JKHV4 zA5N-{>g43naq}s?B571}OVXZC<1DeH!cG2^)y$A^GZraWxIP-aUdDF6-mc_K7{5I2 z9lRnnjDFxk2B@MkPCem3AbV602;=Q2m8U(s>lZJ33s*Kz2m1~!eWw*(Jb#MGSI8g3 zDcTe(l7vXXn74e&0U@f@R>-%f>L8>^9wB)h&U4n z;}n(QAt+RT!UInYr9?UezI4?5L_lrq&F@!4Rm+6~rVicik5dgY;ix@?Bo#qm$#>RP zWB&LuZEx`DP4X%(41JacDam5FL*ZTIrj|bS?|kl<1MEQ!NNnx)H~_PyBl7pLHr_WD zql&R$f3p_alR4L36^FWjUWz%4&et0^rb&!`>=}{h?~YXxouKEw|5g($xiwPe%ou(c zMdkynXvDkF8He-v{k9)-*`zaMB8Am5MK$)b@ID|#pN29{@_?HtbwrTwB{Xi4IfZSL zTVI4cf1%T$M2>XCE0*_&A46P}sW|A3b`ZJrm~H0-#~6h?KieX(trU=#fPI+1v0zQ? z&-nPGms`~|y9Jgrxl@ep?4=5*aQ~1b5<&oYo8H4qq)Q1rZd6(kFs);u4rC2te{VrL6ItzvZf9?FVCf?^?bK-imZR%p_cRZ)+p)2FQ+qUp2oVfxgN$#!}ni| zF=f01x!C@IkL5*k%&(JDdw3-S{aXssdNl~mNM=PW!Xm9WQPR$wtD^;Iux}?-s|7__ zafG&<%+a(vXoDDj^reJy{X5d~|NAcx2=JjE{1r=m#Q8$raBIfi{CjFxk3@!I0Q(S= zgi(*`uZA?Dl(f+MgiccpMa{pMEmwWgMRzAV40W`7$Kz3Ul@T(|QvcFbMK7O)zV*J_ zot}qDN~{A$9QVK5;vp)26kO$U1q4|py`D*IY$o!!K2(Vv7I0(ciyz$h2!Rq?foM4C z`_3>i@_!iKGH8D%&K?%__L~*@WIBvO8tf86N9{XN8kWYr8_H5X6L0u_7sfF9!{N+M zWc|myc^W+%%l3;q4d9W2Z(V=+*RT(C#&~BT7`tIEPpY->8Rz%DCpO#ug07B*d|Ud& ze2Z?f(hsY5qL6I{`6u;X2@_gjE(F>-Dn}bCMR7EX{{0b$X%UA{iY%`P{~eb_>BO0` zZN>tD!Vy`#;q!I*8y)*f(|dn)W53t4mYQl_uQ>xFJoklvd~ZPLU0=m$l%e`_8`liS-xh74 z)%UTjYQ5{$sl;u)xu)i6WkH)CjOY|?ymEECzH~MhT*fZCN0Rt+EYr4~$6xC=aX0U4 z#_GCnDPW6;&$0EO+n|&AgP}h;)k5%Z93OL76_03WaNdgHS%rf`oWYK-#WH)c@rKCD zARhW^<~!czvxTCe3)j>dgD%4oT;`p@{r%!g=ee-=&9-{E&Xiyn!p~_jtSrnh)Itxu z?BXefrd+z-JA|1hwsVESO}Y=d)LS(b17mw4F2JuwY-<-w{R4z{e*QK4#A~$B%aabC zniquzSM9>tapJ=5E~cm7@;YKcr`N&1xArBD)XW1P`2zkBf7!1P7U3*1x;IR;Wh zHc7ZLn6rp)SIc(j=UHf8MPuS@V$dXi<=1Df=YdzK!?V+&o)0W6<2}BXTN>yzB2WBw!eV!b_BSp- zP+K#|#nv$;PS!rjWP@*PxvFB0Si|Qepx>Eb+t z;b6NyzPlDnbgQk6PIQ9ky<0U_jb5S!iB+Sm-l8u;^e72Y5~4;4L3E-d+UkN3Ru}cn zbH6k1J@0dUIy2XA&Zjfy!*AyNQ3B}Q;uhn%_2p#IwwT>nAYomEyNOBPPQTBae6}v6 z++O8egoWqG=2s6E_4XF2>jF)Dwu?KGT>&hzJ+|Vm7!&_J$uvSTy(%sbk<-_W@lPtonB@ZC)}!z8gv|3UAj5< zQelSgdIBSwXN$TcucUB#B#+r4o#z6kx%ARy@5`$|ci3yvuz9W?*N$d0R6>;dD`HfV z_1w%}WueoHH6{(u?#dC&Jn9Xpd9dZcuY{^_-`z#h?RFD~GFmJ&>lx zjAMI5@i9>m;gL~}GZMj2=&_jQBwQn1A3@*We5P+Jsh}KYp+Xu?Nbz+bEP`iYEMOt% z0j-kGFCAt6W{il%+3_z62O^);S z;hz>y&e|Nh)|lH1cku)^RmLzN9#hsY0TxsH-D@_j^2Z zJyq0zM7qr{gKQ(rB(fj2Z*uj?^O!UXO^sB}&fZ1hM)47!$j}c0LB5i4?L~_jo{Fa? z^X+E>>EZ12>>eTH>JPcsgTo;TSgVeZhxuv-%|y#132(j(2E6yP75Pc52xm40;}R(K zAOh;C_u^Nr+awV7A4@S*b+-2=t1D!=^o_sLh;SbKaC<5tMP5WeBav^+Ds%G~sd73{ ze|6-@`qRf?ybqm`YNvF<62tRJbzhtSR1Twkvp|B7IWPbPEF6rB>2%g6L0gn)upfHB zjcMID;E6QfH@ksK+IM5@#gx-%$C9^M+nTfX8{9Blb`|loqa8&&sD5EIzP}T0q5Mp`Ec-uUQ7X8HXjK$;G6;ccyP8^juEPcrz zebF;dcv*E=gGWCSCC!pUiLK)1;zeF2kq=YqEnM210IhX#oEp2t$J(M<6>V6+bf;5}%)`s;wV%u1aZQ=R~7ua72O3vUy8CfvHM^kvP^4Bq5mewIZoMIPz;O9`OLF3{kW0x{1uZCuP4#> z=!M8Dlkp#__PdBIBf%14&QN7pn2y!{w~t9QVat_7x(EqUM1gjc`ej0LdM}T5Tsd;; zdMGLn{B!xw>8fB)KGb4g$PyW7CJ*rq~gOjzN!HD>Svasvm z*gVyEY3aTTG@(mbjr4U^t!2Yo%fG1{pE?&?#z;ZsaVc)IY}*FJw7dMz#Yu03Vw+M~2mf@# z7v=a1Np?8PFiEBG8}5=rJu}wWbT*A{b$=?P`=oZsR&~0D@qD6W=OQXTJK4`r_L4H{ zaIotwLlPhTu?u_-S!?iPjPGMKIyQD(HK6@g$12~7Q1L=6 zvB3K7DM3uXYW}*>jE32gexf(5hMqY}T_19nrB5KbV8l9APi?Ym)8T9%jWuyUfMk_x z$9>=~GTyqU>#!1Hx`l;eX4(jyBj}m&e8NC;3GeScTB2HFJ~>(O>}3MGJYEaeZWgIn z4V?imHRd?W>+H0mq9R`A+P7FJ41OasPyj{>)2UO9qs0Sz!}RqLMucf~)tFwNyvld>aKS0u+LHu&oM~>g?+r!y zP00rKn^m#Nf{@Whhvu|*oX(djrd)fvyXW#keq~6?cqb>)Qzud5Jrf(ofb!)fux&iA z4$n?(IbL$kNtv9KKgri`4I_KO7MbOQYhxsM5S}FlK%9G0+4lo znwElbc$Kw9@hw=i)Z$BF+mv$yCS9JbB46*T^Z0E!&h1-h`r)U1jTcJ$tUMzgH$4=j zBY4V=Y91DzF19hl(3uv}6z<*!NL3$?zpl7930%#R=pD`vpEOawX&05RHFIaU$Gof! zUu0J}k5c_W;Bb*Ha{LB2n;yY4&@g_C7#TM+AFmdW>n}rJ_BElusg}NXnd^2IjjeSy z%sv}6mxx{zaI$He*Y_S%*aa4IIEahs>u4o^qW*~=TtpzCFn1>UxzHdO{@hOrqTnE{fjLfts>qqoj zP)&Y4zhXm=K0LsUFCv6XlIn0Eo>Nqbbhpl~svI^lu&Vb03&lB(ax|hb%-f3$Vzmjb z8Xl%!`t&2xUx0T7$R5ZUK`uty6YJO-nMVJ()czi7hDDpL%9_1Zv(x_ET|l_#pXA#P zM)1Z@n#IYG^MRe5;qRhQzho{+?1W&S*I2kRkI??kDt(TO%R}|TXS>}3qt>q)z(F%fR5S^ zIS=+R(+)@((rvjEe{&}Vf{Bea2jTnQ^pupJk~G9c`O(Q;mwjeo48e~YG{x^?c_i`- z+Kql$5we-6N*JBm+Ppj$J^NV>_nLH~d_>N$iSg;8+2%}mpRx(Xp0McQDK)?Vwk+y; zfN!YoY2Anm>FO@eEy({?oHI14xjm{DM@yMRablG}NKI6c>cmw@{3iB`r^mGkk*j;G zvP2B?jh5Cu`|vS?)+_BqCJHX>T@l)&bTYKz??Rlw_sq%8tt-&G-}UcdZau0L3QxXp z1JuICY#oj4_T)F;NmDIJWH*Hs-H_Nc+8Xm<4ISx83oK!~1aX&sZ5fFXWcTr|4x{q- z;Ob|;VhxpKS0gfv=3LwAMRpzM%)Re)Rsy@kCiP3Rh#+>fO-Sp`l`laRzsW5vO0Cd8 zZUiNzPbKG@Nac~gHvajRaWK>h&0hS(gQ|mnr;vidwh*nk>1 zc1Hm=x&Pv>c>ZujC5dvE?ANEd3-zlbBp|&&!$bXo z>{l>X879BUdrOmcHL^gzlaZ&UEs~bjW$7goHjp;oy?un;7ePlH%wF_cNliDUkmQPq z=y(G9ni8t|Y+9f{!UZMtLgC|N3C+mCGn2-lw5rdLjXN$^SH8h-Y*Deow>OZni9d+T z%va#^?+N7MlCn{$BsrsNwD~R(WB8sPfWL?C_@nL z$cMUHa!6#!U8nXs>Fx-{QdRYiZ(It7?6DjAoLz{6FWXk}em_8fldud5fzmival0xR z+=%KDV85<1#rVN>ajtc4*E8GK3boy%Rht!x^{>)pbt6byj|zXE#U@=d1;J(7;;V%P zW2QXY6N9rBvA;at`_AL9rSDvBa`3TAAydO1@sM!a(L+qA!%8cSdhe^;xe^`OOD;jP zdNlneEEMyTiF!WBzA7y8^}GuxFQuqQ%fd+^_yQh>pB1Lu7rvYkhTq+6RA*~hSC3!l zb7ZWLyA?)uVFV6|4!!?}4umkKD5iL;&CkYWT2urFJ)*&X4WA}{EvoD{r%&4n=nnz} zo8wt(a-)WoifL(zAbR)A@GLhHgoM%SnN?$9LDb@YnIR~@VfkFaoYsKeFZ%~Goce}p z9Bjmp9E~v)Sm_}f5pUMf%-d+Qsl$jL3cWuCjSo%HikCfP*qi+`?#W+yGRX8-Q<^;; zUx9#(cvuEBQ!&003PvSzpyl$0rcn^aBeex|qKdB-U0{l4?XSTP+~!0;Ub`J>Dn5J! z84pXwMzbTyG`Qo?3-we=)^pfZrY0|n`u-<+1vIQL_Wk~9LxWuP_qF3oN$~ziCHB-S zBzWOftFJtq@a(+;aO3Vl=1#jk*Ec)RBMo&w-M@&_~LO;P{cnHq?{ zzZ^KJSD)r`4~W+P!UBz6(!C-l-4}?Kme88#bUR(AqIMSRU|sN-&Z4sQyF8olduLU5 z-q*f~^V%cb4z|hcBB!^Q;#J{DcnCmD)fwcHwAawCkl=s!;(Tt-*FO&Af3^9;v|?Om zil9KZx~m!FzN|GUQY`w>S5GvtdPcd|WBu;ni=8>6g+J&C_xC?nbDshxB|Ca)Bn4a6 zn(<=-SzfanCIBn^%Xa~Ww%o;_4Sp`lF0?gac^#dQ&tShf&0f*9&evv#MrgZa^I0Q( zqVA-s?nE!{4^gO%e7jFcOthOnCt#xjI=m;}sn{&ryVhM84cv2^yrZ%r@d&k(75Zlf zw0_;SL#GjF=;M7%ks7YwcOj)WXmN;ZepHm#=Ln;sn#iTmrO&S$*ew}B`E}~fNmQhRsaauJ6cM+1^tsnNAbj*0RMl}6Ft2QfvlJ=F9Gpev z{a+dW?=vF7JSBl)9-}BQVkj8sSRG@4;$-}9dHydSj!8waF#eyxLjVBKe?R|L9GD@L z5|9K#>TLkz!dQDt!~aQcPiw_rp`m_Ha{{tyP=d}O; diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index 605c240b1..a2f49f4a4 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -27483,7 +27483,7 @@ Word.Range#insertGeometricShape:member(1): selection.insertGeometricShape(Word.GeometricShapeType.moon, shapeOptions); await context.sync(); - console.log("Inserted a heptagon."); + console.log("Inserted a moon."); }); Word.Range#insertTextBox:member(1): - >- @@ -27986,6 +27986,34 @@ Word.Shape#body:member: console.log("New content control properties:", newControl); }); +Word.Shape#fill:member: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Gets the color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + const moonFillType = moonFill.type as Word.ShapeFillType; + + console.log("Color fill properties of the first moon found in the document body:"); + console.log(`\tForeground color: ${moonFill.foregroundColor}`); + console.log(`\tBackground color: ${moonFill.backgroundColor}`); + console.log(`\tTransparency: ${moonFill.transparency}`); + console.log(`\tFill type: ${moonFillType}`); + }); Word.Shape#geometricShapeType:member: - >- // Link to full sample: @@ -28196,6 +28224,62 @@ Word.ShapeCollection#getFirstOrNullObject:member(1): : `Text in first text box: ${shape.body.text}` ); }); +Word.ShapeFill:class: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Gets the color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + const moonFillType = moonFill.type as Word.ShapeFillType; + + console.log("Color fill properties of the first moon found in the document body:"); + console.log(`\tForeground color: ${moonFill.foregroundColor}`); + console.log(`\tBackground color: ${moonFill.backgroundColor}`); + console.log(`\tTransparency: ${moonFill.transparency}`); + console.log(`\tFill type: ${moonFillType}`); + }); +Word.ShapeFillType:enum: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Gets the color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + const moonFillType = moonFill.type as Word.ShapeFillType; + + console.log("Color fill properties of the first moon found in the document body:"); + console.log(`\tForeground color: ${moonFill.foregroundColor}`); + console.log(`\tBackground color: ${moonFill.backgroundColor}`); + console.log(`\tTransparency: ${moonFill.transparency}`); + console.log(`\tFill type: ${moonFillType}`); + }); Word.ShapeTextOrientation:enum: - >- // Link to full sample: From 706a2d6bc0aad8c43ed26199e44c5c8a69f0532e Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 5 Nov 2025 13:40:32 -0800 Subject: [PATCH 69/71] [Word] (ShapeFill) Add snippet for clear and set (#1022) --- .../45-shapes/manage-geometric-shapes.yaml | 61 +++++++++++++++++- snippet-extractor-metadata/word.xlsx | Bin 29925 -> 30018 bytes snippet-extractor-output/snippets.yaml | 56 ++++++++++++++++ 3 files changed, 116 insertions(+), 1 deletion(-) diff --git a/samples/word/45-shapes/manage-geometric-shapes.yaml b/samples/word/45-shapes/manage-geometric-shapes.yaml index d94102664..20b86ab84 100644 --- a/samples/word/45-shapes/manage-geometric-shapes.yaml +++ b/samples/word/45-shapes/manage-geometric-shapes.yaml @@ -14,6 +14,8 @@ script: document.getElementById("get-first-geometric-shape").addEventListener("click", () => tryCatch(getFirstGeometricShape)); document.getElementById("get-first-heptagon").addEventListener("click", () => tryCatch(getFirstHeptagon)); document.getElementById("get-first-moon-fill").addEventListener("click", () => tryCatch(getFirstMoonColorFill)); + document.getElementById("clear-first-moon-fill").addEventListener("click", () => tryCatch(clearFirstMoonColorFill)); + document.getElementById("set-first-moon-fill").addEventListener("click", () => tryCatch(setFirstMoonColorFill)); async function insertGeometricShape_Heptagon() { await Word.run(async (context) => { @@ -136,6 +138,56 @@ script: }); } + async function clearFirstMoonColorFill() { + await Word.run(async (context) => { + // Clears the color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + console.log("Current fill properties of the first moon found in the document body:", moonFill); + + moonFill.clear(); + moonFill.load(); + await context.sync(); + + console.log("Cleared the color fill properties of the first moon found in the document body:", moonFill); + }); + } + + async function setFirstMoonColorFill() { + await Word.run(async (context) => { + // Sets color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + console.log("Current fill properties of the first moon found in the document body:", moonFill); + + moonFill.setSolidColor("green"); + moonFill.load(); + await context.sync(); + + console.log("Updated color fill properties of the first moon found in the document body:", moonFill); + }); + } + // Default helper for invoking an action and handling errors. async function tryCatch(callback) { try { @@ -171,8 +223,15 @@ template: +

      Work with color fill properties of the first moon

      + +
      language: html diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 549f9dd01b616dc581faae3a17edbd14e9bc01b3..996db188d4a630c7a7574c23037f39f9ae042498 100644 GIT binary patch delta 20028 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 YYC-Yfy+BPmAs?_cP#ms7{14*)0CWlsVE_OC delta 19851 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 + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Sets color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + console.log("Current fill properties of the first moon found in the document body:", moonFill); + + moonFill.setSolidColor("green"); + moonFill.load(); + await context.sync(); + + console.log("Updated color fill properties of the first moon found in the document body:", moonFill); + }); +Word.ShapeFill#setSolidColor:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml + + + await Word.run(async (context) => { + // Sets color fill properties of the first moon found in the document body. + const moon: Word.Shape = context.document.body.shapes + .getByGeometricTypes([Word.GeometricShapeType.moon]) + .getFirstOrNullObject(); + moon.load("fill"); + await context.sync(); + + if (moon.isNullObject) { + console.log("No moons found in the document body."); + return; + } + + const moonFill: Word.ShapeFill = moon.fill; + console.log("Current fill properties of the first moon found in the document body:", moonFill); + + moonFill.setSolidColor("green"); + moonFill.load(); + await context.sync(); + + console.log("Updated color fill properties of the first moon found in the document body:", moonFill); + }); Word.ShapeFillType:enum: - >- // Link to full sample: From 7f9d7938f688867b379bd8d5245346b26891b404 Mon Sep 17 00:00:00 2001 From: Elizabeth Samuel Date: Wed, 5 Nov 2025 15:49:55 -0800 Subject: [PATCH 70/71] [Word] (ShapeGroup) Add snippet (#1023) * [Word] (ShapeGroup) Add snippet * Remove unneeded function * Additional mapping --- playlists-prod/word.yaml | 9 ++ playlists/word.yaml | 9 ++ samples/word/45-shapes/group-ungroup.yaml | 136 ++++++++++++++++++++ snippet-extractor-metadata/word.xlsx | Bin 30018 -> 30177 bytes snippet-extractor-output/snippets.yaml | 144 ++++++++++++++++++++++ view-prod/word.json | 1 + view/word.json | 1 + 7 files changed, 300 insertions(+) create mode 100644 samples/word/45-shapes/group-ungroup.yaml diff --git a/playlists-prod/word.yaml b/playlists-prod/word.yaml index e5cd4eddd..f4da6c600 100644 --- a/playlists-prod/word.yaml +++ b/playlists-prod/word.yaml @@ -395,6 +395,15 @@ group: Shapes api_set: WordApiDesktop: '1.2' +- id: word-shapes-group-ungroup + name: Group and ungroup shapes + fileName: group-ungroup.yaml + description: Shows how to group and ungroup shapes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/group-ungroup.yaml + group: Shapes + api_set: + WordApiDesktop: '1.2' - id: word-document-manage-body name: Manage body fileName: manage-body.yaml diff --git a/playlists/word.yaml b/playlists/word.yaml index 9f74b63c2..8964fdc82 100644 --- a/playlists/word.yaml +++ b/playlists/word.yaml @@ -395,6 +395,15 @@ group: Shapes api_set: WordApiDesktop: '1.2' +- id: word-shapes-group-ungroup + name: Group and ungroup shapes + fileName: group-ungroup.yaml + description: Shows how to group and ungroup shapes. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/group-ungroup.yaml + group: Shapes + api_set: + WordApiDesktop: '1.2' - id: word-document-manage-body name: Manage body fileName: manage-body.yaml diff --git a/samples/word/45-shapes/group-ungroup.yaml b/samples/word/45-shapes/group-ungroup.yaml new file mode 100644 index 000000000..e8e177aef --- /dev/null +++ b/samples/word/45-shapes/group-ungroup.yaml @@ -0,0 +1,136 @@ +order: 3 +id: word-shapes-group-ungroup +name: Group and ungroup shapes +description: Shows how to group and ungroup shapes. +host: WORD +api_set: + WordApiDesktop: '1.2' +script: + content: | + document.getElementById("group-shapes").addEventListener("click", () => tryCatch(groupShapes)); + document.getElementById("ungroup-shapes").addEventListener("click", () => tryCatch(ungroupShapes)); + document.getElementById("setup").addEventListener("click", () => tryCatch(setup)); + + async function groupShapes() { + await Word.run(async (context) => { + // Groups the shapes (including text boxes) found in the document body. + const shapes: Word.ShapeCollection = context.document.body.shapes.getByTypes([ + Word.ShapeType.geometricShape, + Word.ShapeType.textBox, + ]); + shapes.load("items"); + await context.sync(); + + const numShapes = shapes.items.length; + if (numShapes === 0) { + console.log("No shapes found in document body."); + return; + } + + console.log(`Number of shapes to group: ${numShapes}`); + + const groupedShape: Word.Shape = shapes.group(); + groupedShape.load("shapeGroup/shapes"); + await context.sync(); + + const shapeGroup: Word.ShapeGroup = groupedShape.shapeGroup; + console.log("Shapes grouped:", shapeGroup.shapes); + groupedShape.select(); + }); + } + + async function ungroupShapes() { + await Word.run(async (context) => { + // Ungroups the first set of grouped shapes (including text boxes) found in the document body. + const firstShapeGroup: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.group]).getFirstOrNullObject(); + firstShapeGroup.load("shapeGroup/shapes"); + await context.sync(); + + if (firstShapeGroup.isNullObject) { + console.log("No shape groups found in the document body."); + return; + } + + let shapeGroup: Word.ShapeGroup = firstShapeGroup.shapeGroup; + console.log("About to ungroup first shape group found in document body:", shapeGroup.shapes); + shapeGroup.ungroup(); + + console.log("Ungrouped first shape group."); + }); + } + + async function setup() { + await Word.run(async (context) => { + const body: Word.Body = context.document.body; + body.clear(); + + // Inserts a text box. + const textBoxOptions: Word.InsertShapeOptions = { + top: 0, + left: 0, + height: 100, + width: 100, + }; + body.paragraphs.getLast().insertTextBox("placeholder text", textBoxOptions); + + // Inserts a geometric shape. + const geometricShapeOptions: Word.InsertShapeOptions = { + height: 120, + width: 120, + left: 120, + }; + body.paragraphs.getLast().insertGeometricShape(Word.GeometricShapeType.star24, geometricShapeOptions); + await context.sync(); + }); + } + + // Default helper for invoking an action and handling errors. + async function tryCatch(callback) { + try { + await callback(); + } catch (error) { + // Note: In a production add-in, you'd want to notify the user through your add-in's UI. + console.error(error); + } + } + language: typescript +template: + content: |- +

      + This sample demonstrates how to group and ungroup shapes. +
      +
      +

      Set up

      + +
      +
      +

      Try it out

      + + +
      + language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/word.xlsx b/snippet-extractor-metadata/word.xlsx index 996db188d4a630c7a7574c23037f39f9ae042498..34a032ed5e7df889faf62124f7a2baa74d08a25f 100644 GIT binary patch delta 22172 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 QcETwA*fCeV{!8)y0BC6_4FCWD delta 22042 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 k!61- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/group-ungroup.yaml + + + await Word.run(async (context) => { + const body: Word.Body = context.document.body; + body.clear(); + + // Inserts a text box. + const textBoxOptions: Word.InsertShapeOptions = { + top: 0, + left: 0, + height: 100, + width: 100, + }; + body.paragraphs.getLast().insertTextBox("placeholder text", textBoxOptions); + + // Inserts a geometric shape. + const geometricShapeOptions: Word.InsertShapeOptions = { + height: 120, + width: 120, + left: 120, + }; + body.paragraphs.getLast().insertGeometricShape(Word.GeometricShapeType.star24, geometricShapeOptions); await context.sync(); }); Word.Paragraph#insertText:member(1): @@ -27965,6 +27993,37 @@ Word.Shape#delete:member(1): console.log("The first text box in document was deleted."); }); +Word.Shape#select:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/group-ungroup.yaml + + + await Word.run(async (context) => { + // Groups the shapes (including text boxes) found in the document body. + const shapes: Word.ShapeCollection = context.document.body.shapes.getByTypes([ + Word.ShapeType.geometricShape, + Word.ShapeType.textBox, + ]); + shapes.load("items"); + await context.sync(); + + const numShapes = shapes.items.length; + if (numShapes === 0) { + console.log("No shapes found in document body."); + return; + } + + console.log(`Number of shapes to group: ${numShapes}`); + + const groupedShape: Word.Shape = shapes.group(); + groupedShape.load("shapeGroup/shapes"); + await context.sync(); + + const shapeGroup: Word.ShapeGroup = groupedShape.shapeGroup; + console.log("Shapes grouped:", shapeGroup.shapes); + groupedShape.select(); + }); Word.Shape#body:member: - >- // Link to full sample: @@ -28224,6 +28283,37 @@ Word.ShapeCollection#getFirstOrNullObject:member(1): : `Text in first text box: ${shape.body.text}` ); }); +Word.ShapeCollection#group:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/group-ungroup.yaml + + + await Word.run(async (context) => { + // Groups the shapes (including text boxes) found in the document body. + const shapes: Word.ShapeCollection = context.document.body.shapes.getByTypes([ + Word.ShapeType.geometricShape, + Word.ShapeType.textBox, + ]); + shapes.load("items"); + await context.sync(); + + const numShapes = shapes.items.length; + if (numShapes === 0) { + console.log("No shapes found in document body."); + return; + } + + console.log(`Number of shapes to group: ${numShapes}`); + + const groupedShape: Word.Shape = shapes.group(); + groupedShape.load("shapeGroup/shapes"); + await context.sync(); + + const shapeGroup: Word.ShapeGroup = groupedShape.shapeGroup; + console.log("Shapes grouped:", shapeGroup.shapes); + groupedShape.select(); + }); Word.ShapeFill:class: - >- // Link to full sample: @@ -28336,6 +28426,60 @@ Word.ShapeFillType:enum: console.log(`\tTransparency: ${moonFill.transparency}`); console.log(`\tFill type: ${moonFillType}`); }); +Word.ShapeGroup:class: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/group-ungroup.yaml + + + await Word.run(async (context) => { + // Groups the shapes (including text boxes) found in the document body. + const shapes: Word.ShapeCollection = context.document.body.shapes.getByTypes([ + Word.ShapeType.geometricShape, + Word.ShapeType.textBox, + ]); + shapes.load("items"); + await context.sync(); + + const numShapes = shapes.items.length; + if (numShapes === 0) { + console.log("No shapes found in document body."); + return; + } + + console.log(`Number of shapes to group: ${numShapes}`); + + const groupedShape: Word.Shape = shapes.group(); + groupedShape.load("shapeGroup/shapes"); + await context.sync(); + + const shapeGroup: Word.ShapeGroup = groupedShape.shapeGroup; + console.log("Shapes grouped:", shapeGroup.shapes); + groupedShape.select(); + }); +Word.ShapeGroup#ungroup:member(1): + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/group-ungroup.yaml + + + await Word.run(async (context) => { + // Ungroups the first set of grouped shapes (including text boxes) found in the document body. + const firstShapeGroup: Word.Shape = context.document.body.shapes.getByTypes([Word.ShapeType.group]).getFirstOrNullObject(); + firstShapeGroup.load("shapeGroup/shapes"); + await context.sync(); + + if (firstShapeGroup.isNullObject) { + console.log("No shape groups found in the document body."); + return; + } + + let shapeGroup: Word.ShapeGroup = firstShapeGroup.shapeGroup; + console.log("About to ungroup first shape group found in document body:", shapeGroup.shapes); + shapeGroup.ungroup(); + + console.log("Ungrouped first shape group."); + }); Word.ShapeTextOrientation:enum: - >- // Link to full sample: diff --git a/view-prod/word.json b/view-prod/word.json index f59473227..dd9bcf337 100644 --- a/view-prod/word.json +++ b/view-prod/word.json @@ -40,6 +40,7 @@ "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/40-tables/manage-custom-style.yaml", "word-shapes-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-shapes-text-boxes.yaml", "word-shapes-manage-geometric-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/manage-geometric-shapes.yaml", + "word-shapes-group-ungroup": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/45-shapes/group-ungroup.yaml", "word-document-manage-body": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-body.yaml", "word-document-insert-section-breaks": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-section-breaks.yaml", "word-document-insert-external-document": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/insert-external-document.yaml", diff --git a/view/word.json b/view/word.json index 4bbdae6fd..6a953065a 100644 --- a/view/word.json +++ b/view/word.json @@ -40,6 +40,7 @@ "word-tables-manage-custom-style": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/40-tables/manage-custom-style.yaml", "word-shapes-manage-shapes-text-boxes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/manage-shapes-text-boxes.yaml", "word-shapes-manage-geometric-shapes": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/manage-geometric-shapes.yaml", + "word-shapes-group-ungroup": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/45-shapes/group-ungroup.yaml", "word-document-manage-body": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/manage-body.yaml", "word-document-insert-section-breaks": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/insert-section-breaks.yaml", "word-document-insert-external-document": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/word/50-document/insert-external-document.yaml", From 395bfa402b866959668c7abea104875d22a9e2ea Mon Sep 17 00:00:00 2001 From: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> Date: Thu, 6 Nov 2025 13:47:58 -0800 Subject: [PATCH 71/71] [all hosts] Reference DefinitelyTyped instead on the office CDN for types (#1024) * Reference DefinitelyTyped instead on the office CDN for types * Correct URL to point to DT --- config/build.ts | 14 ++++++-------- private-samples/excel/20-chart/chart-title-ts.yaml | 2 +- samples/excel/01-basics/basic-api-call-es5.yaml | 2 +- samples/excel/01-basics/basic-api-call.yaml | 2 +- samples/excel/01-basics/basic-common-api-call.yaml | 2 +- samples/excel/10-chart/chart-axis-formatting.yaml | 2 +- samples/excel/10-chart/chart-axis.yaml | 2 +- samples/excel/10-chart/chart-bubble-chart.yaml | 2 +- .../10-chart/chart-create-several-charts.yaml | 2 +- samples/excel/10-chart/chart-data-labels.yaml | 2 +- samples/excel/10-chart/chart-data-source.yaml | 2 +- samples/excel/10-chart/chart-data-table.yaml | 2 +- samples/excel/10-chart/chart-formatting.yaml | 2 +- samples/excel/10-chart/chart-leader-lines.yaml | 2 +- samples/excel/10-chart/chart-legend.yaml | 2 +- samples/excel/10-chart/chart-point.yaml | 2 +- samples/excel/10-chart/chart-series-markers.yaml | 2 +- samples/excel/10-chart/chart-series-plotorder.yaml | 2 +- samples/excel/10-chart/chart-series.yaml | 2 +- samples/excel/10-chart/chart-title-format.yaml | 2 +- samples/excel/10-chart/chart-trendlines.yaml | 2 +- samples/excel/10-chart/create-doughnut-chart.yaml | 2 +- .../12-comments-and-notes/comment-basics.yaml | 2 +- .../12-comments-and-notes/comment-mentions.yaml | 2 +- .../12-comments-and-notes/comment-replies.yaml | 2 +- .../12-comments-and-notes/comment-resolution.yaml | 2 +- .../12-comments-and-notes/excel-note-basics.yaml | 2 +- .../conditional-formatting-advanced.yaml | 2 +- .../conditional-formatting-basic.yaml | 2 +- .../excel/16-custom-functions/basic-function.yaml | 2 +- samples/excel/16-custom-functions/custom-enum.yaml | 2 +- .../custom-functions-errors.yaml | 2 +- .../data-types-custom-functions.yaml | 2 +- .../16-custom-functions/streaming-function.yaml | 2 +- .../16-custom-functions/volatile-function.yaml | 2 +- .../16-custom-functions/web-call-function.yaml | 2 +- ...create-set-get-and-delete-custom-xml-parts.yaml | 2 +- .../test-xml-for-unique-namespace.yaml | 2 +- .../20-data-types/data-types-basic-types.yaml | 2 +- .../data-types-entity-attribution.yaml | 2 +- .../20-data-types/data-types-entity-icons.yaml | 2 +- .../20-data-types/data-types-entity-values.yaml | 2 +- .../20-data-types/data-types-error-values.yaml | 2 +- .../20-data-types/data-types-formatted-number.yaml | 2 +- .../excel/20-data-types/data-types-references.yaml | 2 +- .../excel/20-data-types/data-types-web-image.yaml | 2 +- .../excel/22-data-validation/data-validation.yaml | 2 +- samples/excel/26-document/custom-properties.yaml | 2 +- .../26-document/get-file-in-slices-async.yaml | 2 +- samples/excel/26-document/properties.yaml | 2 +- .../excel/30-events/data-change-event-details.yaml | 2 +- samples/excel/30-events/data-changed.yaml | 2 +- .../excel/30-events/event-column-and-row-sort.yaml | 2 +- .../30-events/event-worksheet-single-click.yaml | 2 +- .../excel/30-events/events-chart-activated.yaml | 2 +- .../events-chartcollection-added-activated.yaml | 2 +- .../30-events/events-comment-event-handler.yaml | 2 +- samples/excel/30-events/events-disable-events.yaml | 2 +- .../excel/30-events/events-formula-changed.yaml | 2 +- samples/excel/30-events/events-table-changed.yaml | 2 +- .../30-events/events-tablecollection-changed.yaml | 2 +- .../excel/30-events/events-workbook-activated.yaml | 2 +- .../events-workbook-and-worksheet-collection.yaml | 2 +- .../30-events/events-worksheet-protection.yaml | 2 +- samples/excel/30-events/events-worksheet.yaml | 2 +- .../excel/30-events/selection-changed-events.yaml | 2 +- .../create-and-remove-named-item.yaml | 2 +- samples/excel/34-named-item/update-named-item.yaml | 2 +- .../38-pivottable/pivottable-calculations.yaml | 2 +- .../pivottable-create-and-modify.yaml | 2 +- .../pivottable-filters-and-summaries.yaml | 2 +- .../38-pivottable/pivottable-get-pivottables.yaml | 2 +- .../38-pivottable/pivottable-pivotfilters.yaml | 2 +- .../38-pivottable/pivottable-pivotlayout.yaml | 2 +- .../excel/38-pivottable/pivottable-refresh.yaml | 2 +- samples/excel/38-pivottable/pivottable-slicer.yaml | 2 +- .../38-pivottable/pivottable-source-data.yaml | 2 +- samples/excel/42-range/cell-properties.yaml | 2 +- samples/excel/42-range/dynamic-arrays.yaml | 2 +- samples/excel/42-range/formatting.yaml | 2 +- .../excel/42-range/insert-delete-clear-range.yaml | 2 +- samples/excel/42-range/outline.yaml | 2 +- samples/excel/42-range/precedents.yaml | 2 +- samples/excel/42-range/range-areas.yaml | 2 +- samples/excel/42-range/range-auto-fill.yaml | 2 +- samples/excel/42-range/range-cell-control.yaml | 2 +- samples/excel/42-range/range-copyfrom.yaml | 2 +- samples/excel/42-range/range-dependents.yaml | 2 +- .../excel/42-range/range-direct-dependents.yaml | 2 +- samples/excel/42-range/range-find.yaml | 2 +- samples/excel/42-range/range-get-range-edge.yaml | 2 +- samples/excel/42-range/range-hyperlink.yaml | 2 +- samples/excel/42-range/range-merged-ranges.yaml | 2 +- samples/excel/42-range/range-relationships.yaml | 2 +- .../excel/42-range/range-remove-duplicates.yaml | 2 +- samples/excel/42-range/range-text-orientation.yaml | 2 +- samples/excel/42-range/selected-range.yaml | 2 +- samples/excel/42-range/set-get-values.yaml | 2 +- samples/excel/42-range/style.yaml | 2 +- samples/excel/42-range/used-range.yaml | 2 +- .../excel/44-shape/shape-create-and-delete.yaml | 2 +- samples/excel/44-shape/shape-get-active.yaml | 2 +- samples/excel/44-shape/shape-groups.yaml | 2 +- samples/excel/44-shape/shape-images.yaml | 2 +- samples/excel/44-shape/shape-lines.yaml | 2 +- samples/excel/44-shape/shape-move-and-order.yaml | 2 +- samples/excel/44-shape/shape-textboxes.yaml | 2 +- .../46-table/add-rows-and-columns-to-a-table.yaml | 2 +- samples/excel/46-table/convert-range-to-table.yaml | 2 +- samples/excel/46-table/create-table.yaml | 2 +- samples/excel/46-table/filter-data.yaml | 2 +- samples/excel/46-table/formatting.yaml | 2 +- samples/excel/46-table/get-data-from-table.yaml | 2 +- .../get-visible-range-of-a-filtered-table.yaml | 2 +- samples/excel/46-table/import-json-data.yaml | 2 +- samples/excel/46-table/resize-table.yaml | 2 +- samples/excel/46-table/sort-data.yaml | 2 +- .../create-get-change-delete-settings.yaml | 2 +- samples/excel/50-workbook/create-workbook.yaml | 2 +- .../excel/50-workbook/culture-info-date-time.yaml | 2 +- samples/excel/50-workbook/culture-info.yaml | 2 +- samples/excel/50-workbook/data-protection.yaml | 2 +- .../50-workbook/workbook-built-in-functions.yaml | 2 +- .../excel/50-workbook/workbook-calculation.yaml | 2 +- .../50-workbook/workbook-get-active-cell.yaml | 2 +- .../workbook-insert-external-worksheets.yaml | 2 +- .../excel/50-workbook/workbook-save-and-close.yaml | 2 +- samples/excel/54-worksheet/active-worksheet.yaml | 2 +- .../add-delete-rename-move-worksheet.yaml | 2 +- samples/excel/54-worksheet/gridlines.yaml | 2 +- samples/excel/54-worksheet/list-worksheets.yaml | 2 +- .../reference-worksheets-by-relative-position.yaml | 2 +- samples/excel/54-worksheet/tab-color.yaml | 2 +- .../excel/54-worksheet/worksheet-auto-filter.yaml | 2 +- samples/excel/54-worksheet/worksheet-copy.yaml | 2 +- samples/excel/54-worksheet/worksheet-find-all.yaml | 2 +- .../excel/54-worksheet/worksheet-freeze-panes.yaml | 2 +- .../excel/54-worksheet/worksheet-page-layout.yaml | 2 +- .../excel/54-worksheet/worksheet-range-cell.yaml | 2 +- .../excel/54-worksheet/worksheet-visibility.yaml | 2 +- samples/excel/90-scenarios/currency-converter.yaml | 2 +- .../excel/90-scenarios/multiple-property-set.yaml | 2 +- .../90-scenarios/performance-optimization.yaml | 2 +- samples/excel/90-scenarios/report-generation.yaml | 2 +- samples/excel/90-scenarios/working-with-dates.yaml | 2 +- samples/excel/99-just-for-fun/color-wheel.yaml | 2 +- samples/excel/99-just-for-fun/gradient.yaml | 2 +- .../excel/99-just-for-fun/path-finder-game.yaml | 2 +- samples/excel/99-just-for-fun/patterns.yaml | 2 +- samples/excel/99-just-for-fun/tetrominos.yaml | 2 +- samples/excel/default.yaml | 2 +- samples/onenote/default.yaml | 2 +- .../10-roaming-settings/roaming-settings.yaml | 2 +- .../load-set-get-save.yaml | 2 +- .../20-item-body/add-inline-base64-image.yaml | 2 +- .../outlook/20-item-body/append-text-on-send.yaml | 2 +- samples/outlook/20-item-body/get-body-format.yaml | 2 +- .../outlook/20-item-body/get-selected-data.yaml | 2 +- .../outlook/20-item-body/prepend-text-on-send.yaml | 2 +- .../20-item-body/prepend-text-to-item-body.yaml | 2 +- .../20-item-body/replace-selected-text.yaml | 2 +- .../25-item-save-and-close/close-async.yaml | 2 +- samples/outlook/25-item-save-and-close/close.yaml | 2 +- samples/outlook/25-item-save-and-close/save.yaml | 2 +- .../get-all-attendees.yaml | 2 +- .../get-cc-message-read.yaml | 2 +- .../get-from-message-compose.yaml | 2 +- .../get-from-message-read.yaml | 2 +- ...et-optional-attendees-appointment-attendee.yaml | 2 +- .../get-organizer-appointment-attendee.yaml | 2 +- .../get-organizer-appointment-organizer.yaml | 2 +- ...et-required-attendees-appointment-attendee.yaml | 2 +- .../get-sender-message-read.yaml | 2 +- .../get-set-bcc-message-compose.yaml | 2 +- .../get-set-cc-message-compose.yaml | 2 +- ...t-optional-attendees-appointment-organizer.yaml | 2 +- ...t-required-attendees-appointment-organizer.yaml | 2 +- .../get-set-to-message-compose.yaml | 2 +- .../get-to-message-read.yaml | 2 +- .../35-notifications/add-getall-remove.yaml | 2 +- .../40-attachments/attachments-compose.yaml | 2 +- .../40-attachments/get-attachment-content.yaml | 2 +- .../40-attachments/get-attachments-read.yaml | 2 +- .../45-categories/work-with-categories.yaml | 2 +- .../45-categories/work-with-master-categories.yaml | 2 +- .../outlook/50-recurrence/get-recurrence-read.yaml | 2 +- samples/outlook/50-recurrence/get-series-id.yaml | 2 +- .../get-set-recurrence-appointment-organizer.yaml | 2 +- .../display-existing-appointment.yaml | 2 +- .../55-display-items/display-existing-message.yaml | 2 +- .../55-display-items/display-new-appointment.yaml | 2 +- .../55-display-items/display-new-message.yaml | 2 +- .../55-display-items/display-reply-forms.yaml | 2 +- .../display-reply-with-attachments.yaml | 2 +- .../60-sensitivity-label/sensitivity-label.yaml | 2 +- .../sensitivity-labels-catalog.yaml | 2 +- .../get-shared-properties.yaml | 2 +- .../get-internet-headers-message-read.yaml | 2 +- ...ge-custom-internet-headers-message-compose.yaml | 2 +- samples/outlook/75-regex-matches/contextual.yaml | 2 +- samples/outlook/80-events/drag-drop-item.yaml | 2 +- .../get-icaluid-as-attendee.yaml | 2 +- .../get-icaluid-as-organizer.yaml | 2 +- .../ids-and-urls.yaml | 2 +- .../make-ews-request-async.yaml | 2 +- .../send-message-using-make-ews-request-async.yaml | 2 +- .../user-callback-token.yaml | 2 +- .../user-identity-token.yaml | 2 +- .../90-other-item-apis/delay-message-delivery.yaml | 2 +- ...et-add-remove-enhancedlocation-appointment.yaml | 2 +- .../get-conversation-id-message.yaml | 2 +- .../90-other-item-apis/get-conversation-index.yaml | 2 +- .../get-date-time-created-read.yaml | 2 +- .../get-date-time-modified-read.yaml | 2 +- .../get-diagnostic-information.yaml | 2 +- .../outlook/90-other-item-apis/get-eml-format.yaml | 2 +- .../outlook/90-other-item-apis/get-end-read.yaml | 2 +- .../90-other-item-apis/get-in-reply-to.yaml | 2 +- .../get-internet-message-id-read.yaml | 2 +- .../90-other-item-apis/get-item-class-async.yaml | 2 +- .../90-other-item-apis/get-item-class-read.yaml | 2 +- .../outlook/90-other-item-apis/get-item-type.yaml | 2 +- .../get-loaded-message-properties.yaml | 2 +- .../90-other-item-apis/get-location-read.yaml | 2 +- .../90-other-item-apis/get-message-properties.yaml | 2 +- .../get-normalized-subject-read.yaml | 2 +- .../get-set-end-appointment-organizer.yaml | 2 +- .../get-set-location-appointment-organizer.yaml | 2 +- .../get-set-sensitivity-level.yaml | 2 +- .../get-set-start-appointment-organizer.yaml | 2 +- .../get-set-subject-compose.yaml | 2 +- .../outlook/90-other-item-apis/get-start-read.yaml | 2 +- .../90-other-item-apis/get-subject-read.yaml | 2 +- .../90-other-item-apis/item-id-compose.yaml | 2 +- samples/outlook/90-other-item-apis/send-async.yaml | 2 +- .../90-other-item-apis/session-data-apis.yaml | 2 +- .../90-other-item-apis/set-selected-data.yaml | 2 +- .../work-with-client-signatures.yaml | 2 +- .../99-preview-apis/get-set-isalldayevent.yaml | 2 +- .../set-displayed-body-subject.yaml | 2 +- samples/outlook/default.yaml | 2 +- samples/powerpoint/basics/basic-api-call-js.yaml | 2 +- samples/powerpoint/basics/basic-api-call-ts.yaml | 2 +- .../powerpoint/basics/basic-common-api-call.yaml | 2 +- samples/powerpoint/default.yaml | 2 +- .../powerpoint/document/create-presentation.yaml | 2 +- .../powerpoint/hyperlinks/manage-hyperlinks.yaml | 2 +- samples/powerpoint/images/insert-image.yaml | 2 +- samples/powerpoint/images/insert-svg.yaml | 2 +- .../scenarios/searches-wikipedia-api.yaml | 2 +- samples/powerpoint/shapes/add-modify-tables.yaml | 2 +- samples/powerpoint/shapes/binding-to-shapes.yaml | 2 +- samples/powerpoint/shapes/get-set-shapes.yaml | 2 +- samples/powerpoint/shapes/get-shapes-by-type.yaml | 2 +- .../powerpoint/shapes/group-ungroup-shapes.yaml | 2 +- samples/powerpoint/shapes/shapes.yaml | 2 +- .../powerpoint/slide-management/add-slides.yaml | 2 +- .../slide-management/export-import-slide.yaml | 2 +- .../slide-management/get-set-slides.yaml | 2 +- .../slide-management/get-slide-metadata.yaml | 2 +- .../powerpoint/slide-management/insert-slides.yaml | 2 +- samples/powerpoint/tags/tags.yaml | 2 +- samples/powerpoint/text/get-set-textrange.yaml | 2 +- samples/project/basics/basic-common-api-call.yaml | 2 +- samples/project/default.yaml | 2 +- samples/word/01-basics/basic-api-call-es5.yaml | 2 +- samples/word/01-basics/basic-api-call.yaml | 2 +- samples/word/01-basics/basic-common-api-call.yaml | 2 +- .../content-control-onadded-event.yaml | 2 +- .../content-control-ondatachanged-event.yaml | 2 +- .../content-control-ondeleted-event.yaml | 2 +- .../content-control-onentered-event.yaml | 2 +- .../content-control-onexited-event.yaml | 2 +- .../content-control-onselectionchanged-event.yaml | 2 +- .../get-change-tracking-states.yaml | 2 +- ...insert-and-change-checkbox-content-control.yaml | 2 +- ...nsert-and-change-combo-box-content-control.yaml | 2 +- .../insert-and-change-content-controls.yaml | 2 +- ...t-and-change-dropdown-list-content-control.yaml | 2 +- .../word/15-images/insert-and-get-pictures.yaml | 2 +- samples/word/20-lists/insert-list.yaml | 2 +- samples/word/20-lists/manage-list-styles.yaml | 2 +- samples/word/20-lists/organize-list.yaml | 2 +- .../get-paragraph-on-insertion-point.yaml | 2 +- samples/word/25-paragraph/get-text.yaml | 2 +- samples/word/25-paragraph/get-word-count.yaml | 2 +- .../word/25-paragraph/insert-formatted-text.yaml | 2 +- .../25-paragraph/insert-header-and-footer.yaml | 2 +- .../insert-in-different-locations.yaml | 2 +- .../25-paragraph/insert-line-and-page-breaks.yaml | 2 +- samples/word/25-paragraph/onadded-event.yaml | 2 +- samples/word/25-paragraph/onchanged-event.yaml | 2 +- samples/word/25-paragraph/ondeleted-event.yaml | 2 +- .../word/25-paragraph/paragraph-properties.yaml | 2 +- samples/word/25-paragraph/search.yaml | 2 +- .../30-properties/get-built-in-properties.yaml | 2 +- .../read-write-custom-document-properties.yaml | 2 +- samples/word/35-ranges/compare-location.yaml | 2 +- samples/word/35-ranges/get-pages.yaml | 2 +- samples/word/35-ranges/scroll-to-range.yaml | 2 +- .../35-ranges/split-words-of-first-paragraph.yaml | 2 +- samples/word/40-tables/manage-custom-style.yaml | 2 +- samples/word/40-tables/manage-formatting.yaml | 2 +- samples/word/40-tables/table-cell-access.yaml | 2 +- samples/word/45-shapes/group-ungroup.yaml | 2 +- .../word/45-shapes/manage-geometric-shapes.yaml | 2 +- .../word/45-shapes/manage-shapes-text-boxes.yaml | 2 +- samples/word/50-document/compare-documents.yaml | 2 +- samples/word/50-document/get-external-styles.yaml | 2 +- .../word/50-document/insert-external-document.yaml | 2 +- .../word/50-document/insert-section-breaks.yaml | 2 +- samples/word/50-document/manage-annotations.yaml | 2 +- samples/word/50-document/manage-body.yaml | 2 +- .../word/50-document/manage-change-tracking.yaml | 2 +- samples/word/50-document/manage-comments.yaml | 2 +- .../50-document/manage-custom-xml-part-ns.yaml | 2 +- .../word/50-document/manage-custom-xml-part.yaml | 2 +- samples/word/50-document/manage-fields.yaml | 2 +- samples/word/50-document/manage-footnotes.yaml | 2 +- samples/word/50-document/manage-settings.yaml | 2 +- samples/word/50-document/manage-styles.yaml | 2 +- .../word/50-document/manage-tracked-changes.yaml | 2 +- samples/word/50-document/save-close.yaml | 2 +- .../90-scenarios/correlated-objects-pattern.yaml | 2 +- samples/word/90-scenarios/doc-assembly.yaml | 2 +- .../word/90-scenarios/multiple-property-set.yaml | 2 +- .../99-preview-apis/close-document-window.yaml | 2 +- .../insert-and-change-content-controls.yaml | 2 +- samples/word/99-preview-apis/manage-comments.yaml | 2 +- samples/word/default.yaml | 2 +- 330 files changed, 335 insertions(+), 337 deletions(-) diff --git a/config/build.ts b/config/build.ts index fcd9e231c..042846a8e 100644 --- a/config/build.ts +++ b/config/build.ts @@ -236,8 +236,8 @@ async function processSnippets(processedSnippets: Dictionary= 0; const canonicalOfficeJsReference = 'https://appsforoffice.microsoft.com/lib/1/hosted/office.js'; const betaOfficeJsReference = 'https://appsforoffice.microsoft.com/lib/beta/hosted/office.js'; - const officeDTS = '@types/office-js'; - const betaOfficeDTS = '@types/office-js-preview'; + const officeDTS = 'https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts'; + const betaOfficeDTS = 'https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js-preview/index.d.ts'; const officeJsReferences = snippet.libraries.split('\n') @@ -247,14 +247,12 @@ async function processSnippets(processedSnippets: Dictionary reference.trim()) - .filter(reference => reference.match(/.*((@types\/office-js(-preview)?)|(office\.d\.ts))$/gi)); + .filter(reference => reference.match(/.*((@types\/office-js(-preview)?)|((index|office)\.d\.ts))$/gi)); /* Note: regex matches: - - @types/office-js - - @types/office-js-preview - - https://unpkg.com/etc/office.d.ts + - https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts + - https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js-preview/index.d.ts But not: - - @types/office-jsfake - - https://unpkg.com/etc/office.d.ts.ish + - https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.tsfake - office.d.ts.unrelated */ diff --git a/private-samples/excel/20-chart/chart-title-ts.yaml b/private-samples/excel/20-chart/chart-title-ts.yaml index 40d3be036..4c046d4e0 100644 --- a/private-samples/excel/20-chart/chart-title-ts.yaml +++ b/private-samples/excel/20-chart/chart-title-ts.yaml @@ -141,6 +141,6 @@ libraries: | jquery@3.1.1 // IntelliSense: @types/library or node_modules paths or URL to d.ts files - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts @types/core-js @types/jquery@3.3.1 diff --git a/samples/excel/01-basics/basic-api-call-es5.yaml b/samples/excel/01-basics/basic-api-call-es5.yaml index b25de1525..6c5480712 100644 --- a/samples/excel/01-basics/basic-api-call-es5.yaml +++ b/samples/excel/01-basics/basic-api-call-es5.yaml @@ -60,7 +60,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/01-basics/basic-api-call.yaml b/samples/excel/01-basics/basic-api-call.yaml index 144e6d260..3c2d0ae06 100644 --- a/samples/excel/01-basics/basic-api-call.yaml +++ b/samples/excel/01-basics/basic-api-call.yaml @@ -61,7 +61,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/01-basics/basic-common-api-call.yaml b/samples/excel/01-basics/basic-common-api-call.yaml index 86b1df00e..cbb1a8992 100644 --- a/samples/excel/01-basics/basic-common-api-call.yaml +++ b/samples/excel/01-basics/basic-common-api-call.yaml @@ -52,7 +52,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-axis-formatting.yaml b/samples/excel/10-chart/chart-axis-formatting.yaml index b6f3b5d56..d6cec75ad 100644 --- a/samples/excel/10-chart/chart-axis-formatting.yaml +++ b/samples/excel/10-chart/chart-axis-formatting.yaml @@ -154,7 +154,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-axis.yaml b/samples/excel/10-chart/chart-axis.yaml index 103105274..788450358 100644 --- a/samples/excel/10-chart/chart-axis.yaml +++ b/samples/excel/10-chart/chart-axis.yaml @@ -221,7 +221,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-bubble-chart.yaml b/samples/excel/10-chart/chart-bubble-chart.yaml index 84a38133e..9a80e9d81 100644 --- a/samples/excel/10-chart/chart-bubble-chart.yaml +++ b/samples/excel/10-chart/chart-bubble-chart.yaml @@ -154,7 +154,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-create-several-charts.yaml b/samples/excel/10-chart/chart-create-several-charts.yaml index 078f6b308..f76ef24c9 100644 --- a/samples/excel/10-chart/chart-create-several-charts.yaml +++ b/samples/excel/10-chart/chart-create-several-charts.yaml @@ -313,7 +313,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/chart-data-labels.yaml b/samples/excel/10-chart/chart-data-labels.yaml index e70e8eac5..5e3113b8c 100644 --- a/samples/excel/10-chart/chart-data-labels.yaml +++ b/samples/excel/10-chart/chart-data-labels.yaml @@ -272,7 +272,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-data-source.yaml b/samples/excel/10-chart/chart-data-source.yaml index 417b3e253..59e74e3f5 100644 --- a/samples/excel/10-chart/chart-data-source.yaml +++ b/samples/excel/10-chart/chart-data-source.yaml @@ -113,7 +113,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-data-table.yaml b/samples/excel/10-chart/chart-data-table.yaml index 8e47b80eb..423e060b2 100644 --- a/samples/excel/10-chart/chart-data-table.yaml +++ b/samples/excel/10-chart/chart-data-table.yaml @@ -152,6 +152,6 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-formatting.yaml b/samples/excel/10-chart/chart-formatting.yaml index 6a6f00563..79a031e34 100644 --- a/samples/excel/10-chart/chart-formatting.yaml +++ b/samples/excel/10-chart/chart-formatting.yaml @@ -211,7 +211,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-leader-lines.yaml b/samples/excel/10-chart/chart-leader-lines.yaml index dd096f4b5..c49f07acb 100644 --- a/samples/excel/10-chart/chart-leader-lines.yaml +++ b/samples/excel/10-chart/chart-leader-lines.yaml @@ -179,7 +179,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-legend.yaml b/samples/excel/10-chart/chart-legend.yaml index b62f39f8a..5e2cabac5 100644 --- a/samples/excel/10-chart/chart-legend.yaml +++ b/samples/excel/10-chart/chart-legend.yaml @@ -131,7 +131,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-point.yaml b/samples/excel/10-chart/chart-point.yaml index 5eaef4fd7..627984a03 100644 --- a/samples/excel/10-chart/chart-point.yaml +++ b/samples/excel/10-chart/chart-point.yaml @@ -113,7 +113,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-series-markers.yaml b/samples/excel/10-chart/chart-series-markers.yaml index 5ad48cfad..6d319a862 100644 --- a/samples/excel/10-chart/chart-series-markers.yaml +++ b/samples/excel/10-chart/chart-series-markers.yaml @@ -112,7 +112,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-series-plotorder.yaml b/samples/excel/10-chart/chart-series-plotorder.yaml index 5aac92606..69ce579ef 100644 --- a/samples/excel/10-chart/chart-series-plotorder.yaml +++ b/samples/excel/10-chart/chart-series-plotorder.yaml @@ -123,7 +123,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-series.yaml b/samples/excel/10-chart/chart-series.yaml index 2010d02e3..afec9522f 100644 --- a/samples/excel/10-chart/chart-series.yaml +++ b/samples/excel/10-chart/chart-series.yaml @@ -139,7 +139,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-title-format.yaml b/samples/excel/10-chart/chart-title-format.yaml index 31090e70c..b080b8b5f 100644 --- a/samples/excel/10-chart/chart-title-format.yaml +++ b/samples/excel/10-chart/chart-title-format.yaml @@ -147,7 +147,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/10-chart/chart-trendlines.yaml b/samples/excel/10-chart/chart-trendlines.yaml index c8755bb33..ee4b19ffe 100644 --- a/samples/excel/10-chart/chart-trendlines.yaml +++ b/samples/excel/10-chart/chart-trendlines.yaml @@ -183,7 +183,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/10-chart/create-doughnut-chart.yaml b/samples/excel/10-chart/create-doughnut-chart.yaml index 2728bf4fe..a9df8e856 100644 --- a/samples/excel/10-chart/create-doughnut-chart.yaml +++ b/samples/excel/10-chart/create-doughnut-chart.yaml @@ -138,7 +138,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/12-comments-and-notes/comment-basics.yaml b/samples/excel/12-comments-and-notes/comment-basics.yaml index ea27365f6..2739d6a08 100644 --- a/samples/excel/12-comments-and-notes/comment-basics.yaml +++ b/samples/excel/12-comments-and-notes/comment-basics.yaml @@ -131,7 +131,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/12-comments-and-notes/comment-mentions.yaml b/samples/excel/12-comments-and-notes/comment-mentions.yaml index 7b6a09088..7c4755829 100644 --- a/samples/excel/12-comments-and-notes/comment-mentions.yaml +++ b/samples/excel/12-comments-and-notes/comment-mentions.yaml @@ -90,7 +90,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/12-comments-and-notes/comment-replies.yaml b/samples/excel/12-comments-and-notes/comment-replies.yaml index e3f10b0b7..ae02603bd 100644 --- a/samples/excel/12-comments-and-notes/comment-replies.yaml +++ b/samples/excel/12-comments-and-notes/comment-replies.yaml @@ -152,7 +152,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/12-comments-and-notes/comment-resolution.yaml b/samples/excel/12-comments-and-notes/comment-resolution.yaml index 2b7039fc3..bfb60392a 100644 --- a/samples/excel/12-comments-and-notes/comment-resolution.yaml +++ b/samples/excel/12-comments-and-notes/comment-resolution.yaml @@ -101,7 +101,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/12-comments-and-notes/excel-note-basics.yaml b/samples/excel/12-comments-and-notes/excel-note-basics.yaml index fc74c8521..582c5d52c 100644 --- a/samples/excel/12-comments-and-notes/excel-note-basics.yaml +++ b/samples/excel/12-comments-and-notes/excel-note-basics.yaml @@ -156,7 +156,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml index bae922ff7..7e207e842 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-advanced.yaml @@ -224,7 +224,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml index 5ea7fceef..5c6d0b0e3 100644 --- a/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml +++ b/samples/excel/14-conditional-formatting/conditional-formatting-basic.yaml @@ -343,7 +343,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/16-custom-functions/basic-function.yaml b/samples/excel/16-custom-functions/basic-function.yaml index 377ee85cb..918cd2354 100644 --- a/samples/excel/16-custom-functions/basic-function.yaml +++ b/samples/excel/16-custom-functions/basic-function.yaml @@ -19,5 +19,5 @@ script: language: typescript libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/custom-enum.yaml b/samples/excel/16-custom-functions/custom-enum.yaml index f2e3cbb4e..5eb140f97 100644 --- a/samples/excel/16-custom-functions/custom-enum.yaml +++ b/samples/excel/16-custom-functions/custom-enum.yaml @@ -78,7 +78,7 @@ script: language: typescript libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts office-ui-fabric-core@11.1.0/dist/css/fabric.min.css office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/16-custom-functions/custom-functions-errors.yaml b/samples/excel/16-custom-functions/custom-functions-errors.yaml index 98c38b020..bfca8594a 100644 --- a/samples/excel/16-custom-functions/custom-functions-errors.yaml +++ b/samples/excel/16-custom-functions/custom-functions-errors.yaml @@ -34,5 +34,5 @@ script: language: typescript libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/data-types-custom-functions.yaml b/samples/excel/16-custom-functions/data-types-custom-functions.yaml index 34796ff56..3a32c08ee 100644 --- a/samples/excel/16-custom-functions/data-types-custom-functions.yaml +++ b/samples/excel/16-custom-functions/data-types-custom-functions.yaml @@ -328,7 +328,7 @@ script: language: typescript libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts core-js@2.4.1/client/core.min.js @types/core-js diff --git a/samples/excel/16-custom-functions/streaming-function.yaml b/samples/excel/16-custom-functions/streaming-function.yaml index 1e9740051..8959a13e4 100644 --- a/samples/excel/16-custom-functions/streaming-function.yaml +++ b/samples/excel/16-custom-functions/streaming-function.yaml @@ -29,5 +29,5 @@ script: language: typescript libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/volatile-function.yaml b/samples/excel/16-custom-functions/volatile-function.yaml index 68438aefc..810a61631 100644 --- a/samples/excel/16-custom-functions/volatile-function.yaml +++ b/samples/excel/16-custom-functions/volatile-function.yaml @@ -18,5 +18,5 @@ script: language: typescript libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts core-js@2.4.1/client/core.min.js diff --git a/samples/excel/16-custom-functions/web-call-function.yaml b/samples/excel/16-custom-functions/web-call-function.yaml index 6d25d23c8..930651c9a 100644 --- a/samples/excel/16-custom-functions/web-call-function.yaml +++ b/samples/excel/16-custom-functions/web-call-function.yaml @@ -29,5 +29,5 @@ script: language: typescript libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts core-js@2.4.1/client/core.min.js diff --git a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml index 94f01a2ff..a3bd21c84 100644 --- a/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml +++ b/samples/excel/18-custom-xml-parts/create-set-get-and-delete-custom-xml-parts.yaml @@ -144,7 +144,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml index 9df023ebf..0ffaf7ac0 100644 --- a/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml +++ b/samples/excel/18-custom-xml-parts/test-xml-for-unique-namespace.yaml @@ -130,7 +130,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-basic-types.yaml b/samples/excel/20-data-types/data-types-basic-types.yaml index b72203a60..523da4b44 100644 --- a/samples/excel/20-data-types/data-types-basic-types.yaml +++ b/samples/excel/20-data-types/data-types-basic-types.yaml @@ -356,7 +356,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-entity-attribution.yaml b/samples/excel/20-data-types/data-types-entity-attribution.yaml index 984bb7ab7..497c603ec 100644 --- a/samples/excel/20-data-types/data-types-entity-attribution.yaml +++ b/samples/excel/20-data-types/data-types-entity-attribution.yaml @@ -222,7 +222,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-entity-icons.yaml b/samples/excel/20-data-types/data-types-entity-icons.yaml index 704894f33..b9bac49e6 100644 --- a/samples/excel/20-data-types/data-types-entity-icons.yaml +++ b/samples/excel/20-data-types/data-types-entity-icons.yaml @@ -108,7 +108,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-entity-values.yaml b/samples/excel/20-data-types/data-types-entity-values.yaml index 793b288d0..577b39f18 100644 --- a/samples/excel/20-data-types/data-types-entity-values.yaml +++ b/samples/excel/20-data-types/data-types-entity-values.yaml @@ -595,7 +595,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-error-values.yaml b/samples/excel/20-data-types/data-types-error-values.yaml index c5dfce56c..26fe44110 100644 --- a/samples/excel/20-data-types/data-types-error-values.yaml +++ b/samples/excel/20-data-types/data-types-error-values.yaml @@ -107,7 +107,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-formatted-number.yaml b/samples/excel/20-data-types/data-types-formatted-number.yaml index 9c5e243aa..e072889de 100644 --- a/samples/excel/20-data-types/data-types-formatted-number.yaml +++ b/samples/excel/20-data-types/data-types-formatted-number.yaml @@ -145,7 +145,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/20-data-types/data-types-references.yaml b/samples/excel/20-data-types/data-types-references.yaml index 266750743..e139b4da9 100644 --- a/samples/excel/20-data-types/data-types-references.yaml +++ b/samples/excel/20-data-types/data-types-references.yaml @@ -333,7 +333,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/20-data-types/data-types-web-image.yaml b/samples/excel/20-data-types/data-types-web-image.yaml index fb64e6d37..d42de34d6 100644 --- a/samples/excel/20-data-types/data-types-web-image.yaml +++ b/samples/excel/20-data-types/data-types-web-image.yaml @@ -183,7 +183,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/22-data-validation/data-validation.yaml b/samples/excel/22-data-validation/data-validation.yaml index 4d344d30b..d808941a2 100644 --- a/samples/excel/22-data-validation/data-validation.yaml +++ b/samples/excel/22-data-validation/data-validation.yaml @@ -178,7 +178,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/26-document/custom-properties.yaml b/samples/excel/26-document/custom-properties.yaml index 0901f91c1..4ca88f810 100644 --- a/samples/excel/26-document/custom-properties.yaml +++ b/samples/excel/26-document/custom-properties.yaml @@ -130,7 +130,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/26-document/get-file-in-slices-async.yaml b/samples/excel/26-document/get-file-in-slices-async.yaml index defcd7050..9c1cff8ca 100644 --- a/samples/excel/26-document/get-file-in-slices-async.yaml +++ b/samples/excel/26-document/get-file-in-slices-async.yaml @@ -205,7 +205,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/26-document/properties.yaml b/samples/excel/26-document/properties.yaml index da1c1a4f3..e6de99c1a 100644 --- a/samples/excel/26-document/properties.yaml +++ b/samples/excel/26-document/properties.yaml @@ -169,7 +169,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/data-change-event-details.yaml b/samples/excel/30-events/data-change-event-details.yaml index 931b58c9b..83fb96270 100644 --- a/samples/excel/30-events/data-change-event-details.yaml +++ b/samples/excel/30-events/data-change-event-details.yaml @@ -103,7 +103,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/data-changed.yaml b/samples/excel/30-events/data-changed.yaml index 468506f12..4418efaff 100644 --- a/samples/excel/30-events/data-changed.yaml +++ b/samples/excel/30-events/data-changed.yaml @@ -106,7 +106,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/event-column-and-row-sort.yaml b/samples/excel/30-events/event-column-and-row-sort.yaml index 046886aff..8fe197053 100644 --- a/samples/excel/30-events/event-column-and-row-sort.yaml +++ b/samples/excel/30-events/event-column-and-row-sort.yaml @@ -194,7 +194,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/event-worksheet-single-click.yaml b/samples/excel/30-events/event-worksheet-single-click.yaml index 19f110f30..613db7ddb 100644 --- a/samples/excel/30-events/event-worksheet-single-click.yaml +++ b/samples/excel/30-events/event-worksheet-single-click.yaml @@ -64,7 +64,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-chart-activated.yaml b/samples/excel/30-events/events-chart-activated.yaml index a9378e940..a3e824e2b 100644 --- a/samples/excel/30-events/events-chart-activated.yaml +++ b/samples/excel/30-events/events-chart-activated.yaml @@ -168,7 +168,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-chartcollection-added-activated.yaml b/samples/excel/30-events/events-chartcollection-added-activated.yaml index 1c0c78280..09ea40ada 100644 --- a/samples/excel/30-events/events-chartcollection-added-activated.yaml +++ b/samples/excel/30-events/events-chartcollection-added-activated.yaml @@ -149,7 +149,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-comment-event-handler.yaml b/samples/excel/30-events/events-comment-event-handler.yaml index 89be09ffb..451e5852c 100644 --- a/samples/excel/30-events/events-comment-event-handler.yaml +++ b/samples/excel/30-events/events-comment-event-handler.yaml @@ -169,7 +169,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-disable-events.yaml b/samples/excel/30-events/events-disable-events.yaml index 681294088..80390cd6a 100644 --- a/samples/excel/30-events/events-disable-events.yaml +++ b/samples/excel/30-events/events-disable-events.yaml @@ -175,7 +175,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-formula-changed.yaml b/samples/excel/30-events/events-formula-changed.yaml index e7c81a18d..fddc2c4a5 100644 --- a/samples/excel/30-events/events-formula-changed.yaml +++ b/samples/excel/30-events/events-formula-changed.yaml @@ -119,7 +119,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-table-changed.yaml b/samples/excel/30-events/events-table-changed.yaml index e7896c2a1..e5dfb7b9f 100644 --- a/samples/excel/30-events/events-table-changed.yaml +++ b/samples/excel/30-events/events-table-changed.yaml @@ -155,7 +155,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-tablecollection-changed.yaml b/samples/excel/30-events/events-tablecollection-changed.yaml index 786274970..4e1d575b3 100644 --- a/samples/excel/30-events/events-tablecollection-changed.yaml +++ b/samples/excel/30-events/events-tablecollection-changed.yaml @@ -151,7 +151,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-workbook-activated.yaml b/samples/excel/30-events/events-workbook-activated.yaml index 8f1f6ea6a..40f11633c 100644 --- a/samples/excel/30-events/events-workbook-activated.yaml +++ b/samples/excel/30-events/events-workbook-activated.yaml @@ -67,7 +67,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml b/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml index bf85695b0..166a02278 100644 --- a/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml +++ b/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml @@ -222,7 +222,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/events-worksheet-protection.yaml b/samples/excel/30-events/events-worksheet-protection.yaml index 636bc2b52..8b83fc7cc 100644 --- a/samples/excel/30-events/events-worksheet-protection.yaml +++ b/samples/excel/30-events/events-worksheet-protection.yaml @@ -99,7 +99,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/30-events/events-worksheet.yaml b/samples/excel/30-events/events-worksheet.yaml index ed4c09408..77b2aee9b 100644 --- a/samples/excel/30-events/events-worksheet.yaml +++ b/samples/excel/30-events/events-worksheet.yaml @@ -219,7 +219,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/30-events/selection-changed-events.yaml b/samples/excel/30-events/selection-changed-events.yaml index ab7203010..cce99d599 100644 --- a/samples/excel/30-events/selection-changed-events.yaml +++ b/samples/excel/30-events/selection-changed-events.yaml @@ -143,7 +143,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/34-named-item/create-and-remove-named-item.yaml b/samples/excel/34-named-item/create-and-remove-named-item.yaml index eadc487fa..05d26ce65 100644 --- a/samples/excel/34-named-item/create-and-remove-named-item.yaml +++ b/samples/excel/34-named-item/create-and-remove-named-item.yaml @@ -225,7 +225,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/34-named-item/update-named-item.yaml b/samples/excel/34-named-item/update-named-item.yaml index 331a88f32..a82b5408c 100644 --- a/samples/excel/34-named-item/update-named-item.yaml +++ b/samples/excel/34-named-item/update-named-item.yaml @@ -123,7 +123,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-calculations.yaml b/samples/excel/38-pivottable/pivottable-calculations.yaml index d66f74eb9..602a9788e 100644 --- a/samples/excel/38-pivottable/pivottable-calculations.yaml +++ b/samples/excel/38-pivottable/pivottable-calculations.yaml @@ -198,7 +198,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-create-and-modify.yaml b/samples/excel/38-pivottable/pivottable-create-and-modify.yaml index ba7020057..a69c70a56 100644 --- a/samples/excel/38-pivottable/pivottable-create-and-modify.yaml +++ b/samples/excel/38-pivottable/pivottable-create-and-modify.yaml @@ -262,7 +262,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml b/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml index 5948578ce..7dd446c5d 100644 --- a/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml +++ b/samples/excel/38-pivottable/pivottable-filters-and-summaries.yaml @@ -217,7 +217,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-get-pivottables.yaml b/samples/excel/38-pivottable/pivottable-get-pivottables.yaml index 5748fce28..2f65a1dbb 100644 --- a/samples/excel/38-pivottable/pivottable-get-pivottables.yaml +++ b/samples/excel/38-pivottable/pivottable-get-pivottables.yaml @@ -184,7 +184,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-pivotfilters.yaml b/samples/excel/38-pivottable/pivottable-pivotfilters.yaml index bb857275b..1d2bcef68 100644 --- a/samples/excel/38-pivottable/pivottable-pivotfilters.yaml +++ b/samples/excel/38-pivottable/pivottable-pivotfilters.yaml @@ -312,7 +312,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-pivotlayout.yaml b/samples/excel/38-pivottable/pivottable-pivotlayout.yaml index 703c6bcc4..28b07c491 100644 --- a/samples/excel/38-pivottable/pivottable-pivotlayout.yaml +++ b/samples/excel/38-pivottable/pivottable-pivotlayout.yaml @@ -310,7 +310,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-refresh.yaml b/samples/excel/38-pivottable/pivottable-refresh.yaml index 13f6fb0b5..e2975ff72 100644 --- a/samples/excel/38-pivottable/pivottable-refresh.yaml +++ b/samples/excel/38-pivottable/pivottable-refresh.yaml @@ -127,7 +127,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-slicer.yaml b/samples/excel/38-pivottable/pivottable-slicer.yaml index 1b057f748..15c781177 100644 --- a/samples/excel/38-pivottable/pivottable-slicer.yaml +++ b/samples/excel/38-pivottable/pivottable-slicer.yaml @@ -201,7 +201,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/38-pivottable/pivottable-source-data.yaml b/samples/excel/38-pivottable/pivottable-source-data.yaml index 238b79392..75014fedb 100644 --- a/samples/excel/38-pivottable/pivottable-source-data.yaml +++ b/samples/excel/38-pivottable/pivottable-source-data.yaml @@ -121,7 +121,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/cell-properties.yaml b/samples/excel/42-range/cell-properties.yaml index bdf6baafb..acf10f685 100644 --- a/samples/excel/42-range/cell-properties.yaml +++ b/samples/excel/42-range/cell-properties.yaml @@ -180,7 +180,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/dynamic-arrays.yaml b/samples/excel/42-range/dynamic-arrays.yaml index 3d98c24ec..f2ab8a567 100644 --- a/samples/excel/42-range/dynamic-arrays.yaml +++ b/samples/excel/42-range/dynamic-arrays.yaml @@ -171,7 +171,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/formatting.yaml b/samples/excel/42-range/formatting.yaml index f4f5a4a91..3e526ce4a 100644 --- a/samples/excel/42-range/formatting.yaml +++ b/samples/excel/42-range/formatting.yaml @@ -110,7 +110,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/insert-delete-clear-range.yaml b/samples/excel/42-range/insert-delete-clear-range.yaml index 2507db642..a762879be 100644 --- a/samples/excel/42-range/insert-delete-clear-range.yaml +++ b/samples/excel/42-range/insert-delete-clear-range.yaml @@ -123,7 +123,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/outline.yaml b/samples/excel/42-range/outline.yaml index e4d261065..f3c53898c 100644 --- a/samples/excel/42-range/outline.yaml +++ b/samples/excel/42-range/outline.yaml @@ -226,7 +226,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/precedents.yaml b/samples/excel/42-range/precedents.yaml index 0f694b5e1..d461dea31 100644 --- a/samples/excel/42-range/precedents.yaml +++ b/samples/excel/42-range/precedents.yaml @@ -203,7 +203,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-areas.yaml b/samples/excel/42-range/range-areas.yaml index 1b3297ce9..23f24ddf6 100644 --- a/samples/excel/42-range/range-areas.yaml +++ b/samples/excel/42-range/range-areas.yaml @@ -171,7 +171,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-auto-fill.yaml b/samples/excel/42-range/range-auto-fill.yaml index b0c331649..3130ca6f8 100644 --- a/samples/excel/42-range/range-auto-fill.yaml +++ b/samples/excel/42-range/range-auto-fill.yaml @@ -142,7 +142,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-cell-control.yaml b/samples/excel/42-range/range-cell-control.yaml index ef4ee5a4d..430300414 100644 --- a/samples/excel/42-range/range-cell-control.yaml +++ b/samples/excel/42-range/range-cell-control.yaml @@ -158,7 +158,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-copyfrom.yaml b/samples/excel/42-range/range-copyfrom.yaml index 391b6ef7a..c48034c2c 100644 --- a/samples/excel/42-range/range-copyfrom.yaml +++ b/samples/excel/42-range/range-copyfrom.yaml @@ -213,7 +213,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-dependents.yaml b/samples/excel/42-range/range-dependents.yaml index f798dd5e6..3a7e6ccd5 100644 --- a/samples/excel/42-range/range-dependents.yaml +++ b/samples/excel/42-range/range-dependents.yaml @@ -162,7 +162,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-direct-dependents.yaml b/samples/excel/42-range/range-direct-dependents.yaml index 8942430fe..a4843dd2b 100644 --- a/samples/excel/42-range/range-direct-dependents.yaml +++ b/samples/excel/42-range/range-direct-dependents.yaml @@ -155,7 +155,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-find.yaml b/samples/excel/42-range/range-find.yaml index 1fde3e616..a72156601 100644 --- a/samples/excel/42-range/range-find.yaml +++ b/samples/excel/42-range/range-find.yaml @@ -161,7 +161,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-get-range-edge.yaml b/samples/excel/42-range/range-get-range-edge.yaml index d4f020020..9d5a21ffe 100644 --- a/samples/excel/42-range/range-get-range-edge.yaml +++ b/samples/excel/42-range/range-get-range-edge.yaml @@ -219,7 +219,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-hyperlink.yaml b/samples/excel/42-range/range-hyperlink.yaml index 035a8cb50..1b83b866e 100644 --- a/samples/excel/42-range/range-hyperlink.yaml +++ b/samples/excel/42-range/range-hyperlink.yaml @@ -313,7 +313,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-merged-ranges.yaml b/samples/excel/42-range/range-merged-ranges.yaml index 62db7860f..d6e4d7fe7 100644 --- a/samples/excel/42-range/range-merged-ranges.yaml +++ b/samples/excel/42-range/range-merged-ranges.yaml @@ -125,7 +125,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-relationships.yaml b/samples/excel/42-range/range-relationships.yaml index 24dcea2e1..9f6343134 100644 --- a/samples/excel/42-range/range-relationships.yaml +++ b/samples/excel/42-range/range-relationships.yaml @@ -248,7 +248,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/range-remove-duplicates.yaml b/samples/excel/42-range/range-remove-duplicates.yaml index c6fd18196..b3227be4f 100644 --- a/samples/excel/42-range/range-remove-duplicates.yaml +++ b/samples/excel/42-range/range-remove-duplicates.yaml @@ -119,7 +119,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/range-text-orientation.yaml b/samples/excel/42-range/range-text-orientation.yaml index a24409415..60ef84009 100644 --- a/samples/excel/42-range/range-text-orientation.yaml +++ b/samples/excel/42-range/range-text-orientation.yaml @@ -113,7 +113,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/selected-range.yaml b/samples/excel/42-range/selected-range.yaml index 5b3dda01b..cc469f680 100644 --- a/samples/excel/42-range/selected-range.yaml +++ b/samples/excel/42-range/selected-range.yaml @@ -74,7 +74,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/set-get-values.yaml b/samples/excel/42-range/set-get-values.yaml index 78c79eefd..373aa4107 100644 --- a/samples/excel/42-range/set-get-values.yaml +++ b/samples/excel/42-range/set-get-values.yaml @@ -227,7 +227,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/42-range/style.yaml b/samples/excel/42-range/style.yaml index 3254d3bb1..8ae288cd7 100644 --- a/samples/excel/42-range/style.yaml +++ b/samples/excel/42-range/style.yaml @@ -213,7 +213,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/42-range/used-range.yaml b/samples/excel/42-range/used-range.yaml index 643156e10..78b4cb8cf 100644 --- a/samples/excel/42-range/used-range.yaml +++ b/samples/excel/42-range/used-range.yaml @@ -135,7 +135,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-create-and-delete.yaml b/samples/excel/44-shape/shape-create-and-delete.yaml index 13f4500fb..4a07c2b60 100644 --- a/samples/excel/44-shape/shape-create-and-delete.yaml +++ b/samples/excel/44-shape/shape-create-and-delete.yaml @@ -130,7 +130,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-get-active.yaml b/samples/excel/44-shape/shape-get-active.yaml index 8b6ff0cd6..e97abfc29 100644 --- a/samples/excel/44-shape/shape-get-active.yaml +++ b/samples/excel/44-shape/shape-get-active.yaml @@ -169,7 +169,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-groups.yaml b/samples/excel/44-shape/shape-groups.yaml index 6fd30d1ad..27d563fc6 100644 --- a/samples/excel/44-shape/shape-groups.yaml +++ b/samples/excel/44-shape/shape-groups.yaml @@ -145,7 +145,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-images.yaml b/samples/excel/44-shape/shape-images.yaml index a880febde..f0dbed161 100644 --- a/samples/excel/44-shape/shape-images.yaml +++ b/samples/excel/44-shape/shape-images.yaml @@ -129,7 +129,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-lines.yaml b/samples/excel/44-shape/shape-lines.yaml index 58577bab0..521fcaa91 100644 --- a/samples/excel/44-shape/shape-lines.yaml +++ b/samples/excel/44-shape/shape-lines.yaml @@ -219,7 +219,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-move-and-order.yaml b/samples/excel/44-shape/shape-move-and-order.yaml index bab2c6c3b..fc9b2373d 100644 --- a/samples/excel/44-shape/shape-move-and-order.yaml +++ b/samples/excel/44-shape/shape-move-and-order.yaml @@ -160,7 +160,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/44-shape/shape-textboxes.yaml b/samples/excel/44-shape/shape-textboxes.yaml index 3193d3338..62d2ab023 100644 --- a/samples/excel/44-shape/shape-textboxes.yaml +++ b/samples/excel/44-shape/shape-textboxes.yaml @@ -135,7 +135,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml index c8a21f8e0..a50c23cf2 100644 --- a/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml +++ b/samples/excel/46-table/add-rows-and-columns-to-a-table.yaml @@ -165,7 +165,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/convert-range-to-table.yaml b/samples/excel/46-table/convert-range-to-table.yaml index 2476e7886..41472f1c0 100644 --- a/samples/excel/46-table/convert-range-to-table.yaml +++ b/samples/excel/46-table/convert-range-to-table.yaml @@ -91,7 +91,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/create-table.yaml b/samples/excel/46-table/create-table.yaml index bca2b65b2..fefc4246e 100644 --- a/samples/excel/46-table/create-table.yaml +++ b/samples/excel/46-table/create-table.yaml @@ -77,7 +77,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/filter-data.yaml b/samples/excel/46-table/filter-data.yaml index d0efc48ee..6ed0d3812 100644 --- a/samples/excel/46-table/filter-data.yaml +++ b/samples/excel/46-table/filter-data.yaml @@ -122,7 +122,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/formatting.yaml b/samples/excel/46-table/formatting.yaml index 1e40a5350..7fdd568d8 100644 --- a/samples/excel/46-table/formatting.yaml +++ b/samples/excel/46-table/formatting.yaml @@ -98,7 +98,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/get-data-from-table.yaml b/samples/excel/46-table/get-data-from-table.yaml index 591ba0d07..04533610a 100644 --- a/samples/excel/46-table/get-data-from-table.yaml +++ b/samples/excel/46-table/get-data-from-table.yaml @@ -111,7 +111,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml index 23eb4f02c..64d67cb9e 100644 --- a/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml +++ b/samples/excel/46-table/get-visible-range-of-a-filtered-table.yaml @@ -134,7 +134,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/import-json-data.yaml b/samples/excel/46-table/import-json-data.yaml index 70d69c39f..3c6f80d16 100644 --- a/samples/excel/46-table/import-json-data.yaml +++ b/samples/excel/46-table/import-json-data.yaml @@ -139,7 +139,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/resize-table.yaml b/samples/excel/46-table/resize-table.yaml index 2b15b90cd..5b41656d6 100644 --- a/samples/excel/46-table/resize-table.yaml +++ b/samples/excel/46-table/resize-table.yaml @@ -94,7 +94,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/46-table/sort-data.yaml b/samples/excel/46-table/sort-data.yaml index 43b994cf8..85780b33f 100644 --- a/samples/excel/46-table/sort-data.yaml +++ b/samples/excel/46-table/sort-data.yaml @@ -105,7 +105,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/create-get-change-delete-settings.yaml b/samples/excel/50-workbook/create-get-change-delete-settings.yaml index 3797bcda7..43fd23536 100644 --- a/samples/excel/50-workbook/create-get-change-delete-settings.yaml +++ b/samples/excel/50-workbook/create-get-change-delete-settings.yaml @@ -108,7 +108,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/create-workbook.yaml b/samples/excel/50-workbook/create-workbook.yaml index bd56088c4..6516a6b05 100644 --- a/samples/excel/50-workbook/create-workbook.yaml +++ b/samples/excel/50-workbook/create-workbook.yaml @@ -79,7 +79,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/50-workbook/culture-info-date-time.yaml b/samples/excel/50-workbook/culture-info-date-time.yaml index 036894f16..03a3df575 100644 --- a/samples/excel/50-workbook/culture-info-date-time.yaml +++ b/samples/excel/50-workbook/culture-info-date-time.yaml @@ -133,7 +133,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/culture-info.yaml b/samples/excel/50-workbook/culture-info.yaml index 1ba143d4a..602c6e658 100644 --- a/samples/excel/50-workbook/culture-info.yaml +++ b/samples/excel/50-workbook/culture-info.yaml @@ -145,7 +145,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/data-protection.yaml b/samples/excel/50-workbook/data-protection.yaml index a87a43384..3597277aa 100644 --- a/samples/excel/50-workbook/data-protection.yaml +++ b/samples/excel/50-workbook/data-protection.yaml @@ -251,7 +251,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-built-in-functions.yaml b/samples/excel/50-workbook/workbook-built-in-functions.yaml index 48e46b992..407a00492 100644 --- a/samples/excel/50-workbook/workbook-built-in-functions.yaml +++ b/samples/excel/50-workbook/workbook-built-in-functions.yaml @@ -114,7 +114,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-calculation.yaml b/samples/excel/50-workbook/workbook-calculation.yaml index 02235ae2e..83e0dfb71 100644 --- a/samples/excel/50-workbook/workbook-calculation.yaml +++ b/samples/excel/50-workbook/workbook-calculation.yaml @@ -185,7 +185,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-get-active-cell.yaml b/samples/excel/50-workbook/workbook-get-active-cell.yaml index 10e5df770..a0d0c7f07 100644 --- a/samples/excel/50-workbook/workbook-get-active-cell.yaml +++ b/samples/excel/50-workbook/workbook-get-active-cell.yaml @@ -60,7 +60,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml index 561a7d875..00559fc11 100644 --- a/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml +++ b/samples/excel/50-workbook/workbook-insert-external-worksheets.yaml @@ -88,7 +88,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/50-workbook/workbook-save-and-close.yaml b/samples/excel/50-workbook/workbook-save-and-close.yaml index 817908238..bccaac16a 100644 --- a/samples/excel/50-workbook/workbook-save-and-close.yaml +++ b/samples/excel/50-workbook/workbook-save-and-close.yaml @@ -82,7 +82,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/active-worksheet.yaml b/samples/excel/54-worksheet/active-worksheet.yaml index 3159d203c..ad537a483 100644 --- a/samples/excel/54-worksheet/active-worksheet.yaml +++ b/samples/excel/54-worksheet/active-worksheet.yaml @@ -118,7 +118,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml index 1425fe93d..4f31e4fcf 100644 --- a/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml +++ b/samples/excel/54-worksheet/add-delete-rename-move-worksheet.yaml @@ -138,7 +138,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/gridlines.yaml b/samples/excel/54-worksheet/gridlines.yaml index 7a25135b1..b82a15470 100644 --- a/samples/excel/54-worksheet/gridlines.yaml +++ b/samples/excel/54-worksheet/gridlines.yaml @@ -72,7 +72,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/list-worksheets.yaml b/samples/excel/54-worksheet/list-worksheets.yaml index 180475d1d..6bda99375 100644 --- a/samples/excel/54-worksheet/list-worksheets.yaml +++ b/samples/excel/54-worksheet/list-worksheets.yaml @@ -66,7 +66,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml index fc9fca872..b1eb24c61 100644 --- a/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml +++ b/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml @@ -156,7 +156,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/tab-color.yaml b/samples/excel/54-worksheet/tab-color.yaml index ab336da87..eee99f9b4 100644 --- a/samples/excel/54-worksheet/tab-color.yaml +++ b/samples/excel/54-worksheet/tab-color.yaml @@ -102,7 +102,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-auto-filter.yaml b/samples/excel/54-worksheet/worksheet-auto-filter.yaml index 8434addeb..1450908f8 100644 --- a/samples/excel/54-worksheet/worksheet-auto-filter.yaml +++ b/samples/excel/54-worksheet/worksheet-auto-filter.yaml @@ -206,7 +206,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-copy.yaml b/samples/excel/54-worksheet/worksheet-copy.yaml index 7053c450a..5a3cc6818 100644 --- a/samples/excel/54-worksheet/worksheet-copy.yaml +++ b/samples/excel/54-worksheet/worksheet-copy.yaml @@ -97,7 +97,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-find-all.yaml b/samples/excel/54-worksheet/worksheet-find-all.yaml index 6278ab9f6..5b0af2ad4 100644 --- a/samples/excel/54-worksheet/worksheet-find-all.yaml +++ b/samples/excel/54-worksheet/worksheet-find-all.yaml @@ -141,7 +141,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-freeze-panes.yaml b/samples/excel/54-worksheet/worksheet-freeze-panes.yaml index d1c4f5dcb..de0f26ae5 100644 --- a/samples/excel/54-worksheet/worksheet-freeze-panes.yaml +++ b/samples/excel/54-worksheet/worksheet-freeze-panes.yaml @@ -171,7 +171,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/worksheet-page-layout.yaml b/samples/excel/54-worksheet/worksheet-page-layout.yaml index 46beed753..f94c050d7 100644 --- a/samples/excel/54-worksheet/worksheet-page-layout.yaml +++ b/samples/excel/54-worksheet/worksheet-page-layout.yaml @@ -204,7 +204,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/54-worksheet/worksheet-range-cell.yaml b/samples/excel/54-worksheet/worksheet-range-cell.yaml index 95f7ff500..5e6e7340d 100644 --- a/samples/excel/54-worksheet/worksheet-range-cell.yaml +++ b/samples/excel/54-worksheet/worksheet-range-cell.yaml @@ -142,7 +142,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/54-worksheet/worksheet-visibility.yaml b/samples/excel/54-worksheet/worksheet-visibility.yaml index aeff5bbe7..15dd5af96 100644 --- a/samples/excel/54-worksheet/worksheet-visibility.yaml +++ b/samples/excel/54-worksheet/worksheet-visibility.yaml @@ -117,7 +117,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/90-scenarios/currency-converter.yaml b/samples/excel/90-scenarios/currency-converter.yaml index 1510dc666..70f09cc0f 100644 --- a/samples/excel/90-scenarios/currency-converter.yaml +++ b/samples/excel/90-scenarios/currency-converter.yaml @@ -180,7 +180,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css moment@2.18.1 diff --git a/samples/excel/90-scenarios/multiple-property-set.yaml b/samples/excel/90-scenarios/multiple-property-set.yaml index 9a48bb487..56c6c6e30 100644 --- a/samples/excel/90-scenarios/multiple-property-set.yaml +++ b/samples/excel/90-scenarios/multiple-property-set.yaml @@ -129,7 +129,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/90-scenarios/performance-optimization.yaml b/samples/excel/90-scenarios/performance-optimization.yaml index f7af6e94a..feb4400b0 100644 --- a/samples/excel/90-scenarios/performance-optimization.yaml +++ b/samples/excel/90-scenarios/performance-optimization.yaml @@ -184,7 +184,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/90-scenarios/report-generation.yaml b/samples/excel/90-scenarios/report-generation.yaml index 88a83e495..749d8b54e 100644 --- a/samples/excel/90-scenarios/report-generation.yaml +++ b/samples/excel/90-scenarios/report-generation.yaml @@ -145,7 +145,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/excel/90-scenarios/working-with-dates.yaml b/samples/excel/90-scenarios/working-with-dates.yaml index 531ca8299..d2a901c9f 100644 --- a/samples/excel/90-scenarios/working-with-dates.yaml +++ b/samples/excel/90-scenarios/working-with-dates.yaml @@ -129,7 +129,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/color-wheel.yaml b/samples/excel/99-just-for-fun/color-wheel.yaml index f4a2d1692..2e6b62749 100644 --- a/samples/excel/99-just-for-fun/color-wheel.yaml +++ b/samples/excel/99-just-for-fun/color-wheel.yaml @@ -145,7 +145,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/gradient.yaml b/samples/excel/99-just-for-fun/gradient.yaml index cf94c9c6d..619402144 100644 --- a/samples/excel/99-just-for-fun/gradient.yaml +++ b/samples/excel/99-just-for-fun/gradient.yaml @@ -228,7 +228,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/path-finder-game.yaml b/samples/excel/99-just-for-fun/path-finder-game.yaml index 3388e0af9..812b2fdfd 100644 --- a/samples/excel/99-just-for-fun/path-finder-game.yaml +++ b/samples/excel/99-just-for-fun/path-finder-game.yaml @@ -221,7 +221,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/patterns.yaml b/samples/excel/99-just-for-fun/patterns.yaml index 723400183..76399f6c7 100644 --- a/samples/excel/99-just-for-fun/patterns.yaml +++ b/samples/excel/99-just-for-fun/patterns.yaml @@ -186,7 +186,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/99-just-for-fun/tetrominos.yaml b/samples/excel/99-just-for-fun/tetrominos.yaml index 2ca35b401..57441e125 100644 --- a/samples/excel/99-just-for-fun/tetrominos.yaml +++ b/samples/excel/99-just-for-fun/tetrominos.yaml @@ -786,7 +786,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/excel/default.yaml b/samples/excel/default.yaml index 3198ff5da..c303f62eb 100644 --- a/samples/excel/default.yaml +++ b/samples/excel/default.yaml @@ -51,7 +51,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/onenote/default.yaml b/samples/onenote/default.yaml index 0b94d1a3f..16f59bda5 100644 --- a/samples/onenote/default.yaml +++ b/samples/onenote/default.yaml @@ -49,7 +49,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/10-roaming-settings/roaming-settings.yaml b/samples/outlook/10-roaming-settings/roaming-settings.yaml index 0933e6d36..a24b5e596 100644 --- a/samples/outlook/10-roaming-settings/roaming-settings.yaml +++ b/samples/outlook/10-roaming-settings/roaming-settings.yaml @@ -87,7 +87,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml index b928ad2fa..cd2502b98 100644 --- a/samples/outlook/15-item-custom-properties/load-set-get-save.yaml +++ b/samples/outlook/15-item-custom-properties/load-set-get-save.yaml @@ -128,7 +128,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/20-item-body/add-inline-base64-image.yaml b/samples/outlook/20-item-body/add-inline-base64-image.yaml index f2703f677..e97523983 100644 --- a/samples/outlook/20-item-body/add-inline-base64-image.yaml +++ b/samples/outlook/20-item-body/add-inline-base64-image.yaml @@ -94,7 +94,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/append-text-on-send.yaml b/samples/outlook/20-item-body/append-text-on-send.yaml index 5c025a7ef..b283f7abd 100644 --- a/samples/outlook/20-item-body/append-text-on-send.yaml +++ b/samples/outlook/20-item-body/append-text-on-send.yaml @@ -66,7 +66,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/get-body-format.yaml b/samples/outlook/20-item-body/get-body-format.yaml index 47d4cf236..b077f1147 100644 --- a/samples/outlook/20-item-body/get-body-format.yaml +++ b/samples/outlook/20-item-body/get-body-format.yaml @@ -49,7 +49,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/get-selected-data.yaml b/samples/outlook/20-item-body/get-selected-data.yaml index 1a0e40c01..90a1a202e 100644 --- a/samples/outlook/20-item-body/get-selected-data.yaml +++ b/samples/outlook/20-item-body/get-selected-data.yaml @@ -50,7 +50,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/prepend-text-on-send.yaml b/samples/outlook/20-item-body/prepend-text-on-send.yaml index 3d282886b..1b363be09 100644 --- a/samples/outlook/20-item-body/prepend-text-on-send.yaml +++ b/samples/outlook/20-item-body/prepend-text-on-send.yaml @@ -66,7 +66,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml index d06c16a6d..e9b2a5b1c 100644 --- a/samples/outlook/20-item-body/prepend-text-to-item-body.yaml +++ b/samples/outlook/20-item-body/prepend-text-to-item-body.yaml @@ -68,7 +68,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/20-item-body/replace-selected-text.yaml b/samples/outlook/20-item-body/replace-selected-text.yaml index 34d024049..425dcee0b 100644 --- a/samples/outlook/20-item-body/replace-selected-text.yaml +++ b/samples/outlook/20-item-body/replace-selected-text.yaml @@ -72,7 +72,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/25-item-save-and-close/close-async.yaml b/samples/outlook/25-item-save-and-close/close-async.yaml index 3fe6ed8c0..59b23949a 100644 --- a/samples/outlook/25-item-save-and-close/close-async.yaml +++ b/samples/outlook/25-item-save-and-close/close-async.yaml @@ -51,7 +51,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/25-item-save-and-close/close.yaml b/samples/outlook/25-item-save-and-close/close.yaml index f1d570d82..ffc78cc69 100644 --- a/samples/outlook/25-item-save-and-close/close.yaml +++ b/samples/outlook/25-item-save-and-close/close.yaml @@ -40,7 +40,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/25-item-save-and-close/save.yaml b/samples/outlook/25-item-save-and-close/save.yaml index 46ee419e8..b6c26f24b 100644 --- a/samples/outlook/25-item-save-and-close/save.yaml +++ b/samples/outlook/25-item-save-and-close/save.yaml @@ -47,7 +47,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml index 389395766..1f967c9d6 100644 --- a/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-all-attendees.yaml @@ -118,7 +118,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml index 3a740a408..a0982310c 100644 --- a/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-cc-message-read.yaml @@ -45,7 +45,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml index 42763337a..7e9748c8a 100644 --- a/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-from-message-compose.yaml @@ -48,7 +48,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml index 518027c02..ce60520d5 100644 --- a/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-from-message-read.yaml @@ -43,7 +43,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml index 4bbed2e4b..5ce5b87d5 100644 --- a/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-optional-attendees-appointment-attendee.yaml @@ -51,7 +51,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml index 1dd835d97..072d05ed5 100644 --- a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-attendee.yaml @@ -42,7 +42,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml index 26113821c..9ddcf7cff 100644 --- a/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-organizer-appointment-organizer.yaml @@ -48,7 +48,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml b/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml index 3292f062d..ae9a35cde 100644 --- a/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-required-attendees-appointment-attendee.yaml @@ -51,7 +51,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml index 4fe385b64..6fa0dd908 100644 --- a/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-sender-message-read.yaml @@ -42,7 +42,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml index 4b32e4907..62ca0621e 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-bcc-message-compose.yaml @@ -71,7 +71,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml index b55dea048..04fdaf781 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-cc-message-compose.yaml @@ -71,7 +71,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml index bc9aba7ac..aa1180826 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-optional-attendees-appointment-organizer.yaml @@ -77,7 +77,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml index 8257b8c87..cc3bf3fde 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-required-attendees-appointment-organizer.yaml @@ -77,7 +77,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml index c390cf2ac..39a3128ca 100644 --- a/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-set-to-message-compose.yaml @@ -71,7 +71,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml index dbb6417e7..cfa4204e8 100644 --- a/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml +++ b/samples/outlook/30-recipients-and-attendees/get-to-message-read.yaml @@ -80,7 +80,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/35-notifications/add-getall-remove.yaml b/samples/outlook/35-notifications/add-getall-remove.yaml index 0748aa395..a864ce4d1 100644 --- a/samples/outlook/35-notifications/add-getall-remove.yaml +++ b/samples/outlook/35-notifications/add-getall-remove.yaml @@ -192,7 +192,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/40-attachments/attachments-compose.yaml b/samples/outlook/40-attachments/attachments-compose.yaml index cb2133d03..6d26d5131 100644 --- a/samples/outlook/40-attachments/attachments-compose.yaml +++ b/samples/outlook/40-attachments/attachments-compose.yaml @@ -154,7 +154,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/40-attachments/get-attachment-content.yaml b/samples/outlook/40-attachments/get-attachment-content.yaml index 1e1cc2b27..b4c3f5fde 100644 --- a/samples/outlook/40-attachments/get-attachment-content.yaml +++ b/samples/outlook/40-attachments/get-attachment-content.yaml @@ -101,7 +101,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/40-attachments/get-attachments-read.yaml b/samples/outlook/40-attachments/get-attachments-read.yaml index 005ae16ed..1177cb2b2 100644 --- a/samples/outlook/40-attachments/get-attachments-read.yaml +++ b/samples/outlook/40-attachments/get-attachments-read.yaml @@ -53,7 +53,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/45-categories/work-with-categories.yaml b/samples/outlook/45-categories/work-with-categories.yaml index 5c8e29fc7..c547ef97a 100644 --- a/samples/outlook/45-categories/work-with-categories.yaml +++ b/samples/outlook/45-categories/work-with-categories.yaml @@ -109,7 +109,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/45-categories/work-with-master-categories.yaml b/samples/outlook/45-categories/work-with-master-categories.yaml index 3fd458afd..2e83b3645 100644 --- a/samples/outlook/45-categories/work-with-master-categories.yaml +++ b/samples/outlook/45-categories/work-with-master-categories.yaml @@ -89,7 +89,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/50-recurrence/get-recurrence-read.yaml b/samples/outlook/50-recurrence/get-recurrence-read.yaml index ea91e9dc3..0d37bbe0a 100644 --- a/samples/outlook/50-recurrence/get-recurrence-read.yaml +++ b/samples/outlook/50-recurrence/get-recurrence-read.yaml @@ -49,7 +49,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/50-recurrence/get-series-id.yaml b/samples/outlook/50-recurrence/get-series-id.yaml index f702e3b58..e78ac2628 100644 --- a/samples/outlook/50-recurrence/get-series-id.yaml +++ b/samples/outlook/50-recurrence/get-series-id.yaml @@ -48,7 +48,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml b/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml index f8a417a86..d9eb6f01a 100644 --- a/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml +++ b/samples/outlook/50-recurrence/get-set-recurrence-appointment-organizer.yaml @@ -93,7 +93,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-existing-appointment.yaml b/samples/outlook/55-display-items/display-existing-appointment.yaml index 0539b19ec..aaa259233 100644 --- a/samples/outlook/55-display-items/display-existing-appointment.yaml +++ b/samples/outlook/55-display-items/display-existing-appointment.yaml @@ -62,7 +62,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-existing-message.yaml b/samples/outlook/55-display-items/display-existing-message.yaml index 7fb9f46e1..4509b080b 100644 --- a/samples/outlook/55-display-items/display-existing-message.yaml +++ b/samples/outlook/55-display-items/display-existing-message.yaml @@ -62,7 +62,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-new-appointment.yaml b/samples/outlook/55-display-items/display-new-appointment.yaml index 770c12e9a..f562ea6c9 100644 --- a/samples/outlook/55-display-items/display-new-appointment.yaml +++ b/samples/outlook/55-display-items/display-new-appointment.yaml @@ -82,7 +82,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-new-message.yaml b/samples/outlook/55-display-items/display-new-message.yaml index 5aca34788..0302dc756 100644 --- a/samples/outlook/55-display-items/display-new-message.yaml +++ b/samples/outlook/55-display-items/display-new-message.yaml @@ -81,7 +81,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/55-display-items/display-reply-forms.yaml b/samples/outlook/55-display-items/display-reply-forms.yaml index 1c8d46bfb..3759106b0 100644 --- a/samples/outlook/55-display-items/display-reply-forms.yaml +++ b/samples/outlook/55-display-items/display-reply-forms.yaml @@ -74,7 +74,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/55-display-items/display-reply-with-attachments.yaml b/samples/outlook/55-display-items/display-reply-with-attachments.yaml index a8c28a08d..bb2dbd573 100644 --- a/samples/outlook/55-display-items/display-reply-with-attachments.yaml +++ b/samples/outlook/55-display-items/display-reply-with-attachments.yaml @@ -203,7 +203,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/60-sensitivity-label/sensitivity-label.yaml b/samples/outlook/60-sensitivity-label/sensitivity-label.yaml index 8b0db6aaa..6bda2298e 100644 --- a/samples/outlook/60-sensitivity-label/sensitivity-label.yaml +++ b/samples/outlook/60-sensitivity-label/sensitivity-label.yaml @@ -88,7 +88,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml b/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml index beb6aef86..4467e3f77 100644 --- a/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml +++ b/samples/outlook/60-sensitivity-label/sensitivity-labels-catalog.yaml @@ -71,7 +71,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml index a38fcc94e..2a937c32d 100644 --- a/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml +++ b/samples/outlook/65-delegates-and-shared-folders/get-shared-properties.yaml @@ -54,7 +54,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml index 12d2e2a8a..efdf1f74d 100644 --- a/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml +++ b/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml @@ -63,7 +63,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml index 9869ae0e5..78c540b7a 100644 --- a/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml +++ b/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml @@ -94,7 +94,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/75-regex-matches/contextual.yaml b/samples/outlook/75-regex-matches/contextual.yaml index 4be7a3f0a..c601055e2 100644 --- a/samples/outlook/75-regex-matches/contextual.yaml +++ b/samples/outlook/75-regex-matches/contextual.yaml @@ -79,7 +79,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/80-events/drag-drop-item.yaml b/samples/outlook/80-events/drag-drop-item.yaml index 7fb596045..8496c37ad 100644 --- a/samples/outlook/80-events/drag-drop-item.yaml +++ b/samples/outlook/80-events/drag-drop-item.yaml @@ -66,7 +66,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml index 00fc8499a..e8c65bb22 100644 --- a/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml +++ b/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-attendee.yaml @@ -72,7 +72,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml index c782dc0a6..2ac46bca0 100644 --- a/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml +++ b/samples/outlook/85-tokens-for-exchange-on-premises/get-icaluid-as-organizer.yaml @@ -76,7 +76,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml index e31656ee1..d87c66aff 100644 --- a/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml +++ b/samples/outlook/85-tokens-for-exchange-on-premises/ids-and-urls.yaml @@ -55,7 +55,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml index c15444a51..b56e7e86d 100644 --- a/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-for-exchange-on-premises/make-ews-request-async.yaml @@ -61,7 +61,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml index c2cd39c56..a9d4582cf 100644 --- a/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml +++ b/samples/outlook/85-tokens-for-exchange-on-premises/send-message-using-make-ews-request-async.yaml @@ -64,7 +64,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml index 82cf1e8db..c60954ab4 100644 --- a/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml +++ b/samples/outlook/85-tokens-for-exchange-on-premises/user-callback-token.yaml @@ -52,7 +52,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml b/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml index 07e604373..35efaf934 100644 --- a/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml +++ b/samples/outlook/85-tokens-for-exchange-on-premises/user-identity-token.yaml @@ -51,7 +51,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml index c5861ddc6..016265921 100644 --- a/samples/outlook/90-other-item-apis/delay-message-delivery.yaml +++ b/samples/outlook/90-other-item-apis/delay-message-delivery.yaml @@ -109,7 +109,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml index 31a6bfe6b..6366043dc 100644 --- a/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml +++ b/samples/outlook/90-other-item-apis/get-add-remove-enhancedlocation-appointment.yaml @@ -108,7 +108,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml index 7b5fee263..b95c68138 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-id-message.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-conversation-index.yaml b/samples/outlook/90-other-item-apis/get-conversation-index.yaml index 033a58ce8..9966ed3f1 100644 --- a/samples/outlook/90-other-item-apis/get-conversation-index.yaml +++ b/samples/outlook/90-other-item-apis/get-conversation-index.yaml @@ -55,7 +55,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml b/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml index da459a365..172ec5713 100644 --- a/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml +++ b/samples/outlook/90-other-item-apis/get-date-time-created-read.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml b/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml index dd97e6de5..0ec907837 100644 --- a/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml +++ b/samples/outlook/90-other-item-apis/get-date-time-modified-read.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml b/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml index dea58a0d0..0d9622fa0 100644 --- a/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml +++ b/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml @@ -62,7 +62,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-eml-format.yaml b/samples/outlook/90-other-item-apis/get-eml-format.yaml index 6d06770a7..03c7207ed 100644 --- a/samples/outlook/90-other-item-apis/get-eml-format.yaml +++ b/samples/outlook/90-other-item-apis/get-eml-format.yaml @@ -48,7 +48,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-end-read.yaml b/samples/outlook/90-other-item-apis/get-end-read.yaml index 6375abab8..2a94acc22 100644 --- a/samples/outlook/90-other-item-apis/get-end-read.yaml +++ b/samples/outlook/90-other-item-apis/get-end-read.yaml @@ -52,7 +52,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-in-reply-to.yaml b/samples/outlook/90-other-item-apis/get-in-reply-to.yaml index 02a3b9d8a..70f961e5e 100644 --- a/samples/outlook/90-other-item-apis/get-in-reply-to.yaml +++ b/samples/outlook/90-other-item-apis/get-in-reply-to.yaml @@ -48,7 +48,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml b/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml index 37a258bd1..aa5c12ad2 100644 --- a/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml +++ b/samples/outlook/90-other-item-apis/get-internet-message-id-read.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-class-async.yaml b/samples/outlook/90-other-item-apis/get-item-class-async.yaml index 7c221cfce..a812e22ca 100644 --- a/samples/outlook/90-other-item-apis/get-item-class-async.yaml +++ b/samples/outlook/90-other-item-apis/get-item-class-async.yaml @@ -50,7 +50,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-class-read.yaml b/samples/outlook/90-other-item-apis/get-item-class-read.yaml index 70e0759ba..fb319fb09 100644 --- a/samples/outlook/90-other-item-apis/get-item-class-read.yaml +++ b/samples/outlook/90-other-item-apis/get-item-class-read.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-item-type.yaml b/samples/outlook/90-other-item-apis/get-item-type.yaml index 806a76a70..93713bd74 100644 --- a/samples/outlook/90-other-item-apis/get-item-type.yaml +++ b/samples/outlook/90-other-item-apis/get-item-type.yaml @@ -48,7 +48,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml b/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml index a568ae296..eaf183cf9 100644 --- a/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml +++ b/samples/outlook/90-other-item-apis/get-loaded-message-properties.yaml @@ -142,7 +142,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-location-read.yaml b/samples/outlook/90-other-item-apis/get-location-read.yaml index 8647470b2..e476e5644 100644 --- a/samples/outlook/90-other-item-apis/get-location-read.yaml +++ b/samples/outlook/90-other-item-apis/get-location-read.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-message-properties.yaml b/samples/outlook/90-other-item-apis/get-message-properties.yaml index 652c9e01b..bae101012 100644 --- a/samples/outlook/90-other-item-apis/get-message-properties.yaml +++ b/samples/outlook/90-other-item-apis/get-message-properties.yaml @@ -70,7 +70,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml b/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml index 38c75c1e6..cb2e43aa0 100644 --- a/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml +++ b/samples/outlook/90-other-item-apis/get-normalized-subject-read.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml index 4e8340ca6..3b63f5e14 100644 --- a/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-end-appointment-organizer.yaml @@ -89,7 +89,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml index 10abec6e5..0602dd47c 100644 --- a/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-location-appointment-organizer.yaml @@ -62,7 +62,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml b/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml index bccf5570f..532504b1a 100644 --- a/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml +++ b/samples/outlook/90-other-item-apis/get-set-sensitivity-level.yaml @@ -66,7 +66,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml index ef459d16c..b956d94e0 100644 --- a/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml +++ b/samples/outlook/90-other-item-apis/get-set-start-appointment-organizer.yaml @@ -82,7 +82,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml b/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml index 1a00f3831..7a78c2b10 100644 --- a/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml +++ b/samples/outlook/90-other-item-apis/get-set-subject-compose.yaml @@ -62,7 +62,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-start-read.yaml b/samples/outlook/90-other-item-apis/get-start-read.yaml index 541f6c56e..076caa4ba 100644 --- a/samples/outlook/90-other-item-apis/get-start-read.yaml +++ b/samples/outlook/90-other-item-apis/get-start-read.yaml @@ -52,7 +52,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/get-subject-read.yaml b/samples/outlook/90-other-item-apis/get-subject-read.yaml index 08f83b678..446e6fc0a 100644 --- a/samples/outlook/90-other-item-apis/get-subject-read.yaml +++ b/samples/outlook/90-other-item-apis/get-subject-read.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/item-id-compose.yaml b/samples/outlook/90-other-item-apis/item-id-compose.yaml index b2407b014..f277cc15d 100644 --- a/samples/outlook/90-other-item-apis/item-id-compose.yaml +++ b/samples/outlook/90-other-item-apis/item-id-compose.yaml @@ -49,7 +49,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/send-async.yaml b/samples/outlook/90-other-item-apis/send-async.yaml index 41ef2e0a8..84360408c 100644 --- a/samples/outlook/90-other-item-apis/send-async.yaml +++ b/samples/outlook/90-other-item-apis/send-async.yaml @@ -47,7 +47,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/session-data-apis.yaml b/samples/outlook/90-other-item-apis/session-data-apis.yaml index d89b45d0c..1a38250ca 100644 --- a/samples/outlook/90-other-item-apis/session-data-apis.yaml +++ b/samples/outlook/90-other-item-apis/session-data-apis.yaml @@ -108,6 +108,6 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/90-other-item-apis/set-selected-data.yaml b/samples/outlook/90-other-item-apis/set-selected-data.yaml index 7d2be55ff..8336180c8 100644 --- a/samples/outlook/90-other-item-apis/set-selected-data.yaml +++ b/samples/outlook/90-other-item-apis/set-selected-data.yaml @@ -48,7 +48,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml index 63cfa93df..f11357527 100644 --- a/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml +++ b/samples/outlook/90-other-item-apis/work-with-client-signatures.yaml @@ -137,7 +137,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml b/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml index d9d8c44aa..275967e00 100644 --- a/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml +++ b/samples/outlook/99-preview-apis/get-set-isalldayevent.yaml @@ -63,7 +63,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - @types/office-js-preview + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js-preview/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml b/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml index fcb27dd05..3763ab1c4 100644 --- a/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml +++ b/samples/outlook/99-preview-apis/set-displayed-body-subject.yaml @@ -80,7 +80,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - @types/office-js-preview + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js-preview/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/outlook/default.yaml b/samples/outlook/default.yaml index 7d8729c82..7ccf69f33 100644 --- a/samples/outlook/default.yaml +++ b/samples/outlook/default.yaml @@ -34,7 +34,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/basics/basic-api-call-js.yaml b/samples/powerpoint/basics/basic-api-call-js.yaml index 903944372..5f421f9bb 100644 --- a/samples/powerpoint/basics/basic-api-call-js.yaml +++ b/samples/powerpoint/basics/basic-api-call-js.yaml @@ -61,7 +61,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/basics/basic-api-call-ts.yaml b/samples/powerpoint/basics/basic-api-call-ts.yaml index 9fce2f953..0761647c6 100644 --- a/samples/powerpoint/basics/basic-api-call-ts.yaml +++ b/samples/powerpoint/basics/basic-api-call-ts.yaml @@ -61,7 +61,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/basics/basic-common-api-call.yaml b/samples/powerpoint/basics/basic-common-api-call.yaml index 304c0f1d5..0f9d08860 100644 --- a/samples/powerpoint/basics/basic-common-api-call.yaml +++ b/samples/powerpoint/basics/basic-common-api-call.yaml @@ -41,7 +41,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/default.yaml b/samples/powerpoint/default.yaml index cbf9fc811..556474193 100644 --- a/samples/powerpoint/default.yaml +++ b/samples/powerpoint/default.yaml @@ -39,7 +39,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/document/create-presentation.yaml b/samples/powerpoint/document/create-presentation.yaml index a2c0b605f..fedd25925 100644 --- a/samples/powerpoint/document/create-presentation.yaml +++ b/samples/powerpoint/document/create-presentation.yaml @@ -73,7 +73,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml index d10d316b4..d5125be3a 100644 --- a/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml +++ b/samples/powerpoint/hyperlinks/manage-hyperlinks.yaml @@ -61,7 +61,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/images/insert-image.yaml b/samples/powerpoint/images/insert-image.yaml index bc432ec35..a1debdc9e 100644 --- a/samples/powerpoint/images/insert-image.yaml +++ b/samples/powerpoint/images/insert-image.yaml @@ -54,7 +54,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/images/insert-svg.yaml b/samples/powerpoint/images/insert-svg.yaml index d3d66522e..563929e69 100644 --- a/samples/powerpoint/images/insert-svg.yaml +++ b/samples/powerpoint/images/insert-svg.yaml @@ -58,7 +58,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml index 79139a157..41e403296 100644 --- a/samples/powerpoint/scenarios/searches-wikipedia-api.yaml +++ b/samples/powerpoint/scenarios/searches-wikipedia-api.yaml @@ -243,7 +243,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/shapes/add-modify-tables.yaml b/samples/powerpoint/shapes/add-modify-tables.yaml index df292f525..c9da7247f 100644 --- a/samples/powerpoint/shapes/add-modify-tables.yaml +++ b/samples/powerpoint/shapes/add-modify-tables.yaml @@ -408,7 +408,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts office-ui-fabric-js@1.4.0/dist/css/fabric.min.css office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/shapes/binding-to-shapes.yaml b/samples/powerpoint/shapes/binding-to-shapes.yaml index 6059ca2ba..7eec3ed7b 100644 --- a/samples/powerpoint/shapes/binding-to-shapes.yaml +++ b/samples/powerpoint/shapes/binding-to-shapes.yaml @@ -361,7 +361,7 @@ style: language: css libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts office-ui-fabric-js@1.4.0/dist/css/fabric.min.css office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/shapes/get-set-shapes.yaml b/samples/powerpoint/shapes/get-set-shapes.yaml index 4e24db0c5..521242f6e 100644 --- a/samples/powerpoint/shapes/get-set-shapes.yaml +++ b/samples/powerpoint/shapes/get-set-shapes.yaml @@ -221,7 +221,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/shapes/get-shapes-by-type.yaml b/samples/powerpoint/shapes/get-shapes-by-type.yaml index 747202762..8e64c0bad 100644 --- a/samples/powerpoint/shapes/get-shapes-by-type.yaml +++ b/samples/powerpoint/shapes/get-shapes-by-type.yaml @@ -134,7 +134,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/shapes/group-ungroup-shapes.yaml b/samples/powerpoint/shapes/group-ungroup-shapes.yaml index 6d8e8f3fe..4021254cc 100644 --- a/samples/powerpoint/shapes/group-ungroup-shapes.yaml +++ b/samples/powerpoint/shapes/group-ungroup-shapes.yaml @@ -187,7 +187,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/shapes/shapes.yaml b/samples/powerpoint/shapes/shapes.yaml index da2850890..68c8d5c32 100644 --- a/samples/powerpoint/shapes/shapes.yaml +++ b/samples/powerpoint/shapes/shapes.yaml @@ -210,7 +210,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/slide-management/add-slides.yaml b/samples/powerpoint/slide-management/add-slides.yaml index ab7faeaa3..e7e5e89cb 100644 --- a/samples/powerpoint/slide-management/add-slides.yaml +++ b/samples/powerpoint/slide-management/add-slides.yaml @@ -98,7 +98,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/slide-management/export-import-slide.yaml b/samples/powerpoint/slide-management/export-import-slide.yaml index 20ba32a3a..391895002 100644 --- a/samples/powerpoint/slide-management/export-import-slide.yaml +++ b/samples/powerpoint/slide-management/export-import-slide.yaml @@ -297,7 +297,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - @types/office-js + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts office-ui-fabric-js@1.4.0/dist/css/fabric.min.css office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/slide-management/get-set-slides.yaml b/samples/powerpoint/slide-management/get-set-slides.yaml index 9010a097e..cbb58a752 100644 --- a/samples/powerpoint/slide-management/get-set-slides.yaml +++ b/samples/powerpoint/slide-management/get-set-slides.yaml @@ -169,7 +169,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/slide-management/get-slide-metadata.yaml b/samples/powerpoint/slide-management/get-slide-metadata.yaml index 9a83ed396..35f71e6be 100644 --- a/samples/powerpoint/slide-management/get-slide-metadata.yaml +++ b/samples/powerpoint/slide-management/get-slide-metadata.yaml @@ -46,7 +46,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/powerpoint/slide-management/insert-slides.yaml b/samples/powerpoint/slide-management/insert-slides.yaml index 399523abf..9429814d2 100644 --- a/samples/powerpoint/slide-management/insert-slides.yaml +++ b/samples/powerpoint/slide-management/insert-slides.yaml @@ -110,7 +110,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/tags/tags.yaml b/samples/powerpoint/tags/tags.yaml index 45aa7828a..b2816d55d 100644 --- a/samples/powerpoint/tags/tags.yaml +++ b/samples/powerpoint/tags/tags.yaml @@ -198,7 +198,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/powerpoint/text/get-set-textrange.yaml b/samples/powerpoint/text/get-set-textrange.yaml index fa6cb92f2..f18a6beab 100644 --- a/samples/powerpoint/text/get-set-textrange.yaml +++ b/samples/powerpoint/text/get-set-textrange.yaml @@ -185,7 +185,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/project/basics/basic-common-api-call.yaml b/samples/project/basics/basic-common-api-call.yaml index 9a1b68aa0..95a440ed7 100644 --- a/samples/project/basics/basic-common-api-call.yaml +++ b/samples/project/basics/basic-common-api-call.yaml @@ -31,7 +31,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/project/default.yaml b/samples/project/default.yaml index 11f70dd5e..27aae8d65 100644 --- a/samples/project/default.yaml +++ b/samples/project/default.yaml @@ -39,7 +39,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/01-basics/basic-api-call-es5.yaml b/samples/word/01-basics/basic-api-call-es5.yaml index 29b33f94a..cf3ab1b5b 100644 --- a/samples/word/01-basics/basic-api-call-es5.yaml +++ b/samples/word/01-basics/basic-api-call-es5.yaml @@ -57,7 +57,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/01-basics/basic-api-call.yaml b/samples/word/01-basics/basic-api-call.yaml index d399bdfd1..468f154e1 100644 --- a/samples/word/01-basics/basic-api-call.yaml +++ b/samples/word/01-basics/basic-api-call.yaml @@ -58,7 +58,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/01-basics/basic-common-api-call.yaml b/samples/word/01-basics/basic-common-api-call.yaml index 02de4d908..a94c13e3b 100644 --- a/samples/word/01-basics/basic-common-api-call.yaml +++ b/samples/word/01-basics/basic-common-api-call.yaml @@ -44,7 +44,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/10-content-controls/content-control-onadded-event.yaml b/samples/word/10-content-controls/content-control-onadded-event.yaml index 26ab14665..a21f0fbf7 100644 --- a/samples/word/10-content-controls/content-control-onadded-event.yaml +++ b/samples/word/10-content-controls/content-control-onadded-event.yaml @@ -130,7 +130,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml index fbead0ddb..9ca1c8006 100644 --- a/samples/word/10-content-controls/content-control-ondatachanged-event.yaml +++ b/samples/word/10-content-controls/content-control-ondatachanged-event.yaml @@ -148,7 +148,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-ondeleted-event.yaml b/samples/word/10-content-controls/content-control-ondeleted-event.yaml index 1736cc338..cdbf945ff 100644 --- a/samples/word/10-content-controls/content-control-ondeleted-event.yaml +++ b/samples/word/10-content-controls/content-control-ondeleted-event.yaml @@ -168,7 +168,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-onentered-event.yaml b/samples/word/10-content-controls/content-control-onentered-event.yaml index 09874c1db..cba1483af 100644 --- a/samples/word/10-content-controls/content-control-onentered-event.yaml +++ b/samples/word/10-content-controls/content-control-onentered-event.yaml @@ -148,7 +148,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-onexited-event.yaml b/samples/word/10-content-controls/content-control-onexited-event.yaml index c12456e21..36950eef7 100644 --- a/samples/word/10-content-controls/content-control-onexited-event.yaml +++ b/samples/word/10-content-controls/content-control-onexited-event.yaml @@ -149,7 +149,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml index 531e7a23a..377dc3061 100644 --- a/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml +++ b/samples/word/10-content-controls/content-control-onselectionchanged-event.yaml @@ -147,7 +147,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/get-change-tracking-states.yaml b/samples/word/10-content-controls/get-change-tracking-states.yaml index b874d6b6d..6e7804c55 100644 --- a/samples/word/10-content-controls/get-change-tracking-states.yaml +++ b/samples/word/10-content-controls/get-change-tracking-states.yaml @@ -161,7 +161,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml b/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml index 2904ffa23..de1450052 100644 --- a/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-checkbox-content-control.yaml @@ -234,7 +234,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml index 5dca81e43..75d803917 100644 --- a/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-combo-box-content-control.yaml @@ -310,7 +310,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/insert-and-change-content-controls.yaml b/samples/word/10-content-controls/insert-and-change-content-controls.yaml index 00f9ac93e..0221fc952 100644 --- a/samples/word/10-content-controls/insert-and-change-content-controls.yaml +++ b/samples/word/10-content-controls/insert-and-change-content-controls.yaml @@ -137,7 +137,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml index ff1ef0479..c91d99dd9 100644 --- a/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml +++ b/samples/word/10-content-controls/insert-and-change-dropdown-list-content-control.yaml @@ -312,7 +312,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/15-images/insert-and-get-pictures.yaml b/samples/word/15-images/insert-and-get-pictures.yaml index a24cb7b69..1857f2392 100644 --- a/samples/word/15-images/insert-and-get-pictures.yaml +++ b/samples/word/15-images/insert-and-get-pictures.yaml @@ -106,7 +106,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/20-lists/insert-list.yaml b/samples/word/20-lists/insert-list.yaml index 6444834ce..801e8ef30 100644 --- a/samples/word/20-lists/insert-list.yaml +++ b/samples/word/20-lists/insert-list.yaml @@ -107,7 +107,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/20-lists/manage-list-styles.yaml b/samples/word/20-lists/manage-list-styles.yaml index 1fbd489f5..b382c43d4 100644 --- a/samples/word/20-lists/manage-list-styles.yaml +++ b/samples/word/20-lists/manage-list-styles.yaml @@ -105,6 +105,6 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/20-lists/organize-list.yaml b/samples/word/20-lists/organize-list.yaml index 5007a602d..9733c5a65 100644 --- a/samples/word/20-lists/organize-list.yaml +++ b/samples/word/20-lists/organize-list.yaml @@ -135,7 +135,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml b/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml index 536f169e4..ad67db11b 100644 --- a/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml +++ b/samples/word/25-paragraph/get-paragraph-on-insertion-point.yaml @@ -115,7 +115,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/get-text.yaml b/samples/word/25-paragraph/get-text.yaml index 8190d75ae..af1de9577 100644 --- a/samples/word/25-paragraph/get-text.yaml +++ b/samples/word/25-paragraph/get-text.yaml @@ -95,7 +95,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/25-paragraph/get-word-count.yaml b/samples/word/25-paragraph/get-word-count.yaml index 7ab14f35c..95ea7e97d 100644 --- a/samples/word/25-paragraph/get-word-count.yaml +++ b/samples/word/25-paragraph/get-word-count.yaml @@ -122,7 +122,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-formatted-text.yaml b/samples/word/25-paragraph/insert-formatted-text.yaml index 77dec94c7..073882a0e 100644 --- a/samples/word/25-paragraph/insert-formatted-text.yaml +++ b/samples/word/25-paragraph/insert-formatted-text.yaml @@ -107,7 +107,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-header-and-footer.yaml b/samples/word/25-paragraph/insert-header-and-footer.yaml index 61c5ce6bf..7e820b803 100644 --- a/samples/word/25-paragraph/insert-header-and-footer.yaml +++ b/samples/word/25-paragraph/insert-header-and-footer.yaml @@ -184,7 +184,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-in-different-locations.yaml b/samples/word/25-paragraph/insert-in-different-locations.yaml index 962ff5897..ad6572d46 100644 --- a/samples/word/25-paragraph/insert-in-different-locations.yaml +++ b/samples/word/25-paragraph/insert-in-different-locations.yaml @@ -150,7 +150,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/insert-line-and-page-breaks.yaml b/samples/word/25-paragraph/insert-line-and-page-breaks.yaml index 2bb69dff1..140084bfa 100644 --- a/samples/word/25-paragraph/insert-line-and-page-breaks.yaml +++ b/samples/word/25-paragraph/insert-line-and-page-breaks.yaml @@ -94,7 +94,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/25-paragraph/onadded-event.yaml b/samples/word/25-paragraph/onadded-event.yaml index b5989162c..9469153a3 100644 --- a/samples/word/25-paragraph/onadded-event.yaml +++ b/samples/word/25-paragraph/onadded-event.yaml @@ -114,7 +114,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/25-paragraph/onchanged-event.yaml b/samples/word/25-paragraph/onchanged-event.yaml index 833138a41..1653214ae 100644 --- a/samples/word/25-paragraph/onchanged-event.yaml +++ b/samples/word/25-paragraph/onchanged-event.yaml @@ -115,7 +115,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/25-paragraph/ondeleted-event.yaml b/samples/word/25-paragraph/ondeleted-event.yaml index 28643099d..248a6de4c 100644 --- a/samples/word/25-paragraph/ondeleted-event.yaml +++ b/samples/word/25-paragraph/ondeleted-event.yaml @@ -115,7 +115,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/25-paragraph/paragraph-properties.yaml b/samples/word/25-paragraph/paragraph-properties.yaml index 43493a296..b0cb4b0af 100644 --- a/samples/word/25-paragraph/paragraph-properties.yaml +++ b/samples/word/25-paragraph/paragraph-properties.yaml @@ -149,7 +149,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/25-paragraph/search.yaml b/samples/word/25-paragraph/search.yaml index ea8337044..0dc258279 100644 --- a/samples/word/25-paragraph/search.yaml +++ b/samples/word/25-paragraph/search.yaml @@ -112,7 +112,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/30-properties/get-built-in-properties.yaml b/samples/word/30-properties/get-built-in-properties.yaml index 5eeb51d8d..0fe8a3dbd 100644 --- a/samples/word/30-properties/get-built-in-properties.yaml +++ b/samples/word/30-properties/get-built-in-properties.yaml @@ -58,7 +58,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/30-properties/read-write-custom-document-properties.yaml b/samples/word/30-properties/read-write-custom-document-properties.yaml index 600c31687..b09a55f54 100644 --- a/samples/word/30-properties/read-write-custom-document-properties.yaml +++ b/samples/word/30-properties/read-write-custom-document-properties.yaml @@ -85,7 +85,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/35-ranges/compare-location.yaml b/samples/word/35-ranges/compare-location.yaml index c93592309..ca1a6bcb4 100644 --- a/samples/word/35-ranges/compare-location.yaml +++ b/samples/word/35-ranges/compare-location.yaml @@ -119,7 +119,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/35-ranges/get-pages.yaml b/samples/word/35-ranges/get-pages.yaml index c4b6584a3..15f5ca0e4 100644 --- a/samples/word/35-ranges/get-pages.yaml +++ b/samples/word/35-ranges/get-pages.yaml @@ -282,7 +282,7 @@ style: language: css libraries: | https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/35-ranges/scroll-to-range.yaml b/samples/word/35-ranges/scroll-to-range.yaml index 0bea961dd..b7fd13481 100644 --- a/samples/word/35-ranges/scroll-to-range.yaml +++ b/samples/word/35-ranges/scroll-to-range.yaml @@ -94,7 +94,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/35-ranges/split-words-of-first-paragraph.yaml b/samples/word/35-ranges/split-words-of-first-paragraph.yaml index 8e23f4118..b0db6d9a3 100644 --- a/samples/word/35-ranges/split-words-of-first-paragraph.yaml +++ b/samples/word/35-ranges/split-words-of-first-paragraph.yaml @@ -94,7 +94,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/40-tables/manage-custom-style.yaml b/samples/word/40-tables/manage-custom-style.yaml index 9c6ab8360..cfd5c0258 100644 --- a/samples/word/40-tables/manage-custom-style.yaml +++ b/samples/word/40-tables/manage-custom-style.yaml @@ -429,7 +429,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/40-tables/manage-formatting.yaml b/samples/word/40-tables/manage-formatting.yaml index 4031cf690..9929afcd4 100644 --- a/samples/word/40-tables/manage-formatting.yaml +++ b/samples/word/40-tables/manage-formatting.yaml @@ -232,7 +232,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/40-tables/table-cell-access.yaml b/samples/word/40-tables/table-cell-access.yaml index 283c41753..c4389b9d7 100644 --- a/samples/word/40-tables/table-cell-access.yaml +++ b/samples/word/40-tables/table-cell-access.yaml @@ -80,7 +80,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/45-shapes/group-ungroup.yaml b/samples/word/45-shapes/group-ungroup.yaml index e8e177aef..5e0ba2fc7 100644 --- a/samples/word/45-shapes/group-ungroup.yaml +++ b/samples/word/45-shapes/group-ungroup.yaml @@ -130,7 +130,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/45-shapes/manage-geometric-shapes.yaml b/samples/word/45-shapes/manage-geometric-shapes.yaml index 20b86ab84..85f037a1e 100644 --- a/samples/word/45-shapes/manage-geometric-shapes.yaml +++ b/samples/word/45-shapes/manage-geometric-shapes.yaml @@ -250,7 +250,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/45-shapes/manage-shapes-text-boxes.yaml b/samples/word/45-shapes/manage-shapes-text-boxes.yaml index 52c4599ee..d3ea00ddf 100644 --- a/samples/word/45-shapes/manage-shapes-text-boxes.yaml +++ b/samples/word/45-shapes/manage-shapes-text-boxes.yaml @@ -409,7 +409,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/compare-documents.yaml b/samples/word/50-document/compare-documents.yaml index 368c7dc05..70ee0b554 100644 --- a/samples/word/50-document/compare-documents.yaml +++ b/samples/word/50-document/compare-documents.yaml @@ -68,7 +68,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/get-external-styles.yaml b/samples/word/50-document/get-external-styles.yaml index 86aa2117b..3f7c74914 100644 --- a/samples/word/50-document/get-external-styles.yaml +++ b/samples/word/50-document/get-external-styles.yaml @@ -80,6 +80,6 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/insert-external-document.yaml b/samples/word/50-document/insert-external-document.yaml index 126961451..005d12d69 100644 --- a/samples/word/50-document/insert-external-document.yaml +++ b/samples/word/50-document/insert-external-document.yaml @@ -118,7 +118,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/insert-section-breaks.yaml b/samples/word/50-document/insert-section-breaks.yaml index b870d7865..1ca46f47b 100644 --- a/samples/word/50-document/insert-section-breaks.yaml +++ b/samples/word/50-document/insert-section-breaks.yaml @@ -131,7 +131,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-annotations.yaml b/samples/word/50-document/manage-annotations.yaml index 7fd3a5dab..344bbc495 100644 --- a/samples/word/50-document/manage-annotations.yaml +++ b/samples/word/50-document/manage-annotations.yaml @@ -355,7 +355,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-body.yaml b/samples/word/50-document/manage-body.yaml index c92791dab..0051442b5 100644 --- a/samples/word/50-document/manage-body.yaml +++ b/samples/word/50-document/manage-body.yaml @@ -409,7 +409,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-change-tracking.yaml b/samples/word/50-document/manage-change-tracking.yaml index fa7f17120..e5b647f12 100644 --- a/samples/word/50-document/manage-change-tracking.yaml +++ b/samples/word/50-document/manage-change-tracking.yaml @@ -140,7 +140,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-comments.yaml b/samples/word/50-document/manage-comments.yaml index 3fb2d2b1d..75a4ba5aa 100644 --- a/samples/word/50-document/manage-comments.yaml +++ b/samples/word/50-document/manage-comments.yaml @@ -291,7 +291,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-custom-xml-part-ns.yaml b/samples/word/50-document/manage-custom-xml-part-ns.yaml index 4f9b9c5f4..c40fe12a7 100644 --- a/samples/word/50-document/manage-custom-xml-part-ns.yaml +++ b/samples/word/50-document/manage-custom-xml-part-ns.yaml @@ -300,7 +300,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-custom-xml-part.yaml b/samples/word/50-document/manage-custom-xml-part.yaml index 12f1de659..630a7587d 100644 --- a/samples/word/50-document/manage-custom-xml-part.yaml +++ b/samples/word/50-document/manage-custom-xml-part.yaml @@ -208,7 +208,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-fields.yaml b/samples/word/50-document/manage-fields.yaml index 49a583f69..b60163bee 100644 --- a/samples/word/50-document/manage-fields.yaml +++ b/samples/word/50-document/manage-fields.yaml @@ -236,7 +236,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-footnotes.yaml b/samples/word/50-document/manage-footnotes.yaml index 32007812f..20115c5a3 100644 --- a/samples/word/50-document/manage-footnotes.yaml +++ b/samples/word/50-document/manage-footnotes.yaml @@ -236,7 +236,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-settings.yaml b/samples/word/50-document/manage-settings.yaml index 5c5b6a95d..a14fe7961 100644 --- a/samples/word/50-document/manage-settings.yaml +++ b/samples/word/50-document/manage-settings.yaml @@ -115,7 +115,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/manage-styles.yaml b/samples/word/50-document/manage-styles.yaml index 4c0347195..0398d69e9 100644 --- a/samples/word/50-document/manage-styles.yaml +++ b/samples/word/50-document/manage-styles.yaml @@ -337,6 +337,6 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/50-document/manage-tracked-changes.yaml b/samples/word/50-document/manage-tracked-changes.yaml index 3099bf706..30307f735 100644 --- a/samples/word/50-document/manage-tracked-changes.yaml +++ b/samples/word/50-document/manage-tracked-changes.yaml @@ -204,7 +204,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/50-document/save-close.yaml b/samples/word/50-document/save-close.yaml index 67ec5b4c8..5f8f691dc 100644 --- a/samples/word/50-document/save-close.yaml +++ b/samples/word/50-document/save-close.yaml @@ -131,7 +131,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/90-scenarios/correlated-objects-pattern.yaml b/samples/word/90-scenarios/correlated-objects-pattern.yaml index 7f2817061..32b972033 100644 --- a/samples/word/90-scenarios/correlated-objects-pattern.yaml +++ b/samples/word/90-scenarios/correlated-objects-pattern.yaml @@ -160,7 +160,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/90-scenarios/doc-assembly.yaml b/samples/word/90-scenarios/doc-assembly.yaml index 302701358..186206ba1 100644 --- a/samples/word/90-scenarios/doc-assembly.yaml +++ b/samples/word/90-scenarios/doc-assembly.yaml @@ -165,7 +165,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/90-scenarios/multiple-property-set.yaml b/samples/word/90-scenarios/multiple-property-set.yaml index 144d2021a..bbd154569 100644 --- a/samples/word/90-scenarios/multiple-property-set.yaml +++ b/samples/word/90-scenarios/multiple-property-set.yaml @@ -106,7 +106,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css diff --git a/samples/word/99-preview-apis/close-document-window.yaml b/samples/word/99-preview-apis/close-document-window.yaml index a32de186a..7908cc0e5 100644 --- a/samples/word/99-preview-apis/close-document-window.yaml +++ b/samples/word/99-preview-apis/close-document-window.yaml @@ -55,7 +55,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - https://appsforoffice.microsoft.com/lib/beta/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js-preview/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml index 70ace5471..c4f5761e8 100644 --- a/samples/word/99-preview-apis/insert-and-change-content-controls.yaml +++ b/samples/word/99-preview-apis/insert-and-change-content-controls.yaml @@ -195,7 +195,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - @types/office-js-preview + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js-preview/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/99-preview-apis/manage-comments.yaml b/samples/word/99-preview-apis/manage-comments.yaml index bdff83be1..8935b24d3 100644 --- a/samples/word/99-preview-apis/manage-comments.yaml +++ b/samples/word/99-preview-apis/manage-comments.yaml @@ -356,7 +356,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/beta/hosted/office.js - @types/office-js-preview + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js-preview/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/samples/word/default.yaml b/samples/word/default.yaml index e7bc04740..d6e45d828 100644 --- a/samples/word/default.yaml +++ b/samples/word/default.yaml @@ -51,7 +51,7 @@ style: language: css libraries: |- https://appsforoffice.microsoft.com/lib/1/hosted/office.js - https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/office-js/index.d.ts https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css