@fluentui-copilot/chat-input-plugins 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.json CHANGED
@@ -2,7 +2,22 @@
2
2
  "name": "@fluentui-copilot/chat-input-plugins",
3
3
  "entries": [
4
4
  {
5
- "date": "Wed, 22 Oct 2025 17:50:53 GMT",
5
+ "date": "Thu, 12 Mar 2026 17:20:18 GMT",
6
+ "tag": "@fluentui-copilot/chat-input-plugins_v0.5.4",
7
+ "version": "0.5.4",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "twatanabe@microsoft.com",
12
+ "package": "@fluentui-copilot/chat-input-plugins",
13
+ "commit": "d0b3b5b550052d89ff3ef10926b487acbb621a5f",
14
+ "comment": "chore: bump lexical to ^0.39."
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Wed, 22 Oct 2025 17:51:31 GMT",
6
21
  "tag": "@fluentui-copilot/chat-input-plugins_v0.5.3",
7
22
  "version": "0.5.3",
8
23
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,9 +1,18 @@
1
1
  # Change Log - @fluentui-copilot/chat-input-plugins
2
2
 
3
- This log was last generated on Tue, 14 Oct 2025 00:04:52 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 12 Mar 2026 17:20:18 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [0.5.4](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/chat-input-plugins_v0.5.4)
8
+
9
+ Thu, 12 Mar 2026 17:20:18 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentai/compare/@fluentui-copilot/chat-input-plugins_v0.5.3..@fluentui-copilot/chat-input-plugins_v0.5.4)
11
+
12
+ ### Patches
13
+
14
+ - chore: bump lexical to ^0.39. ([PR #3471](https://github.com/microsoft/fluentai/pull/3471) by twatanabe@microsoft.com)
15
+
7
16
  ## [0.5.2](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/chat-input-plugins_v0.5.2)
8
17
 
9
18
  Tue, 14 Oct 2025 00:04:52 GMT
@@ -26,10 +26,28 @@ export class MockEntityNode extends TextNode {
26
26
  static getType() {
27
27
  return 'mockEntity';
28
28
  }
29
- constructor(text, url){
30
- super(text);
31
- _define_property(this, "url", void 0);
32
- this.url = url;
29
+ static clone(node) {
30
+ return new MockEntityNode(node.__text, node.__url, node.__key);
31
+ }
32
+ static importJSON(serializedNode) {
33
+ return $createMockEntityNode(serializedNode.text, serializedNode.url);
34
+ }
35
+ get url() {
36
+ const self = this.getLatest();
37
+ return self.__url;
38
+ }
39
+ exportJSON() {
40
+ return {
41
+ ...super.exportJSON(),
42
+ type: 'mockEntity',
43
+ url: this.__url,
44
+ version: 1
45
+ };
46
+ }
47
+ constructor(text, url, key){
48
+ super(text, key);
49
+ _define_property(this, "__url", void 0);
50
+ this.__url = url;
33
51
  }
34
52
  }
35
53
  export function $createMockEntityNode(text, url) {
@@ -1 +1 @@
1
- {"version":3,"sources":["PasteUnfurlingTestUtils.ts"],"sourcesContent":["import type { LexicalNode } from '@fluentui-copilot/text-editor';\nimport { TextNode } from '@fluentui-copilot/text-editor';\nimport type { PasteUnfurlingTransformedPart, PasteUnfurlingTransformResult } from '..';\n\nexport class MockClipboardEvent extends Event implements ClipboardEvent {\n clipboardData: DataTransfer | null = null;\n}\n\nexport function createPasteEvent(data: { mimeType: string; value: string }[]): MockClipboardEvent {\n const event = new MockClipboardEvent('paste');\n\n event.clipboardData = {\n types: [data.map(({ mimeType }) => mimeType)],\n getData: (format: string) => {\n const item = data.find(({ mimeType }) => mimeType === format);\n if (item) {\n return item.value;\n }\n return '';\n },\n } as unknown as DataTransfer;\n\n return event;\n}\n\nexport class MockEntityNode extends TextNode {\n url: string;\n\n constructor(text: string, url: string) {\n super(text);\n this.url = url;\n }\n\n static getType(): string {\n return 'mockEntity';\n }\n}\n\nexport type ExtraDataType = { url: string };\n\nexport function $createMockEntityNode(text: string, url: string): MockEntityNode {\n return new MockEntityNode(text, url);\n}\n\nexport function $isMockEntityNode(node: LexicalNode | null | undefined): node is MockEntityNode {\n return node instanceof MockEntityNode;\n}\n\nexport const parseLinkPreview = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n let previewData;\n try {\n const previewDataString = event.clipboardData?.getData('text/link-preview');\n if (previewDataString === undefined || previewDataString === '') {\n return { handled: false };\n }\n\n previewData = JSON.parse(previewDataString);\n } catch (e) {\n return { handled: false };\n }\n\n const title: string | undefined = previewData.title;\n const url: string | undefined = previewData.url;\n if (!title || !url) {\n return { handled: false };\n }\n\n return {\n handled: true,\n transformedParts: [{ type: 'entity', value: { text: title, data: { url } } }],\n };\n};\nconst urlRegex = /(\\b(?:https?):\\/\\/[^\\s]+)/gi;\n\nexport const parseLink = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n const parts = text.split(urlRegex);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n\n// A transform can be async in case it needs to fetch data from a server.\nexport const parseEntity = async (event: ClipboardEvent): Promise<PasteUnfurlingTransformResult<ExtraDataType, {}>> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n // Assume entities come in the syntax <entity>title</entity>\n const re = /<entity[^>]*>([^<]*)<\\/entity>/g;\n const parts = text.split(re);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n\n // Even elements are text, odd elements are entities\n // [\"\", entity, \"\", entity, \"\", ...]\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n"],"names":["TextNode","MockClipboardEvent","Event","clipboardData","createPasteEvent","data","event","types","map","mimeType","getData","format","item","find","value","MockEntityNode","getType","constructor","text","url","$createMockEntityNode","$isMockEntityNode","node","parseLinkPreview","previewData","previewDataString","undefined","handled","JSON","parse","e","title","transformedParts","type","urlRegex","parseLink","parts","split","length","str","i","filter","parseEntity","re"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["PasteUnfurlingTestUtils.ts"],"sourcesContent":["import type { LexicalNode, NodeKey, SerializedTextNode } from '@fluentui-copilot/text-editor';\nimport { TextNode } from '@fluentui-copilot/text-editor';\nimport type { PasteUnfurlingTransformedPart, PasteUnfurlingTransformResult } from '..';\n\nexport class MockClipboardEvent extends Event implements ClipboardEvent {\n clipboardData: DataTransfer | null = null;\n}\n\nexport function createPasteEvent(data: { mimeType: string; value: string }[]): MockClipboardEvent {\n const event = new MockClipboardEvent('paste');\n\n event.clipboardData = {\n types: [data.map(({ mimeType }) => mimeType)],\n getData: (format: string) => {\n const item = data.find(({ mimeType }) => mimeType === format);\n if (item) {\n return item.value;\n }\n return '';\n },\n } as unknown as DataTransfer;\n\n return event;\n}\n\nexport interface SerializedMockEntityNode extends SerializedTextNode {\n url: string;\n}\n\nexport class MockEntityNode extends TextNode {\n __url: string;\n\n constructor(text: string, url: string, key?: NodeKey) {\n super(text, key);\n this.__url = url;\n }\n\n static getType(): string {\n return 'mockEntity';\n }\n\n static clone(node: MockEntityNode): MockEntityNode {\n return new MockEntityNode(node.__text, node.__url, node.__key);\n }\n\n static importJSON(serializedNode: SerializedMockEntityNode): MockEntityNode {\n return $createMockEntityNode(serializedNode.text, serializedNode.url);\n }\n\n get url(): string {\n const self = this.getLatest();\n return self.__url;\n }\n\n exportJSON(): SerializedMockEntityNode {\n return {\n ...super.exportJSON(),\n type: 'mockEntity',\n url: this.__url,\n version: 1,\n };\n }\n}\n\nexport type ExtraDataType = { url: string };\n\nexport function $createMockEntityNode(text: string, url: string): MockEntityNode {\n return new MockEntityNode(text, url);\n}\n\nexport function $isMockEntityNode(node: LexicalNode | null | undefined): node is MockEntityNode {\n return node instanceof MockEntityNode;\n}\n\nexport const parseLinkPreview = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n let previewData;\n try {\n const previewDataString = event.clipboardData?.getData('text/link-preview');\n if (previewDataString === undefined || previewDataString === '') {\n return { handled: false };\n }\n\n previewData = JSON.parse(previewDataString);\n } catch (e) {\n return { handled: false };\n }\n\n const title: string | undefined = previewData.title;\n const url: string | undefined = previewData.url;\n if (!title || !url) {\n return { handled: false };\n }\n\n return {\n handled: true,\n transformedParts: [{ type: 'entity', value: { text: title, data: { url } } }],\n };\n};\nconst urlRegex = /(\\b(?:https?):\\/\\/[^\\s]+)/gi;\n\nexport const parseLink = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n const parts = text.split(urlRegex);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n\n// A transform can be async in case it needs to fetch data from a server.\nexport const parseEntity = async (event: ClipboardEvent): Promise<PasteUnfurlingTransformResult<ExtraDataType, {}>> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n // Assume entities come in the syntax <entity>title</entity>\n const re = /<entity[^>]*>([^<]*)<\\/entity>/g;\n const parts = text.split(re);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n\n // Even elements are text, odd elements are entities\n // [\"\", entity, \"\", entity, \"\", ...]\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n"],"names":["TextNode","MockClipboardEvent","Event","clipboardData","createPasteEvent","data","event","types","map","mimeType","getData","format","item","find","value","MockEntityNode","getType","clone","node","__text","__url","__key","importJSON","serializedNode","$createMockEntityNode","text","url","self","getLatest","exportJSON","type","version","constructor","key","$isMockEntityNode","parseLinkPreview","previewData","previewDataString","undefined","handled","JSON","parse","e","title","transformedParts","urlRegex","parseLink","parts","split","length","str","i","filter","parseEntity","re"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -62,10 +62,28 @@ class MockEntityNode extends _texteditor.TextNode {
62
62
  static getType() {
63
63
  return 'mockEntity';
64
64
  }
65
- constructor(text, url){
66
- super(text);
67
- (0, _define_property._)(this, "url", void 0);
68
- this.url = url;
65
+ static clone(node) {
66
+ return new MockEntityNode(node.__text, node.__url, node.__key);
67
+ }
68
+ static importJSON(serializedNode) {
69
+ return $createMockEntityNode(serializedNode.text, serializedNode.url);
70
+ }
71
+ get url() {
72
+ const self = this.getLatest();
73
+ return self.__url;
74
+ }
75
+ exportJSON() {
76
+ return {
77
+ ...super.exportJSON(),
78
+ type: 'mockEntity',
79
+ url: this.__url,
80
+ version: 1
81
+ };
82
+ }
83
+ constructor(text, url, key){
84
+ super(text, key);
85
+ (0, _define_property._)(this, "__url", void 0);
86
+ this.__url = url;
69
87
  }
70
88
  }
71
89
  function $createMockEntityNode(text, url) {
@@ -1 +1 @@
1
- {"version":3,"sources":["PasteUnfurlingTestUtils.ts"],"sourcesContent":["import type { LexicalNode } from '@fluentui-copilot/text-editor';\nimport { TextNode } from '@fluentui-copilot/text-editor';\nimport type { PasteUnfurlingTransformedPart, PasteUnfurlingTransformResult } from '..';\n\nexport class MockClipboardEvent extends Event implements ClipboardEvent {\n clipboardData: DataTransfer | null = null;\n}\n\nexport function createPasteEvent(data: { mimeType: string; value: string }[]): MockClipboardEvent {\n const event = new MockClipboardEvent('paste');\n\n event.clipboardData = {\n types: [data.map(({ mimeType }) => mimeType)],\n getData: (format: string) => {\n const item = data.find(({ mimeType }) => mimeType === format);\n if (item) {\n return item.value;\n }\n return '';\n },\n } as unknown as DataTransfer;\n\n return event;\n}\n\nexport class MockEntityNode extends TextNode {\n url: string;\n\n constructor(text: string, url: string) {\n super(text);\n this.url = url;\n }\n\n static getType(): string {\n return 'mockEntity';\n }\n}\n\nexport type ExtraDataType = { url: string };\n\nexport function $createMockEntityNode(text: string, url: string): MockEntityNode {\n return new MockEntityNode(text, url);\n}\n\nexport function $isMockEntityNode(node: LexicalNode | null | undefined): node is MockEntityNode {\n return node instanceof MockEntityNode;\n}\n\nexport const parseLinkPreview = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n let previewData;\n try {\n const previewDataString = event.clipboardData?.getData('text/link-preview');\n if (previewDataString === undefined || previewDataString === '') {\n return { handled: false };\n }\n\n previewData = JSON.parse(previewDataString);\n } catch (e) {\n return { handled: false };\n }\n\n const title: string | undefined = previewData.title;\n const url: string | undefined = previewData.url;\n if (!title || !url) {\n return { handled: false };\n }\n\n return {\n handled: true,\n transformedParts: [{ type: 'entity', value: { text: title, data: { url } } }],\n };\n};\nconst urlRegex = /(\\b(?:https?):\\/\\/[^\\s]+)/gi;\n\nexport const parseLink = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n const parts = text.split(urlRegex);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n\n// A transform can be async in case it needs to fetch data from a server.\nexport const parseEntity = async (event: ClipboardEvent): Promise<PasteUnfurlingTransformResult<ExtraDataType, {}>> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n // Assume entities come in the syntax <entity>title</entity>\n const re = /<entity[^>]*>([^<]*)<\\/entity>/g;\n const parts = text.split(re);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n\n // Even elements are text, odd elements are entities\n // [\"\", entity, \"\", entity, \"\", ...]\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n"],"names":["$createMockEntityNode","$isMockEntityNode","MockClipboardEvent","MockEntityNode","createPasteEvent","parseEntity","parseLink","parseLinkPreview","Event","clipboardData","data","event","types","map","mimeType","getData","format","item","find","value","TextNode","getType","constructor","text","url","node","previewData","previewDataString","undefined","handled","JSON","parse","e","title","transformedParts","type","urlRegex","parts","split","length","str","i","filter","re"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["PasteUnfurlingTestUtils.ts"],"sourcesContent":["import type { LexicalNode, NodeKey, SerializedTextNode } from '@fluentui-copilot/text-editor';\nimport { TextNode } from '@fluentui-copilot/text-editor';\nimport type { PasteUnfurlingTransformedPart, PasteUnfurlingTransformResult } from '..';\n\nexport class MockClipboardEvent extends Event implements ClipboardEvent {\n clipboardData: DataTransfer | null = null;\n}\n\nexport function createPasteEvent(data: { mimeType: string; value: string }[]): MockClipboardEvent {\n const event = new MockClipboardEvent('paste');\n\n event.clipboardData = {\n types: [data.map(({ mimeType }) => mimeType)],\n getData: (format: string) => {\n const item = data.find(({ mimeType }) => mimeType === format);\n if (item) {\n return item.value;\n }\n return '';\n },\n } as unknown as DataTransfer;\n\n return event;\n}\n\nexport interface SerializedMockEntityNode extends SerializedTextNode {\n url: string;\n}\n\nexport class MockEntityNode extends TextNode {\n __url: string;\n\n constructor(text: string, url: string, key?: NodeKey) {\n super(text, key);\n this.__url = url;\n }\n\n static getType(): string {\n return 'mockEntity';\n }\n\n static clone(node: MockEntityNode): MockEntityNode {\n return new MockEntityNode(node.__text, node.__url, node.__key);\n }\n\n static importJSON(serializedNode: SerializedMockEntityNode): MockEntityNode {\n return $createMockEntityNode(serializedNode.text, serializedNode.url);\n }\n\n get url(): string {\n const self = this.getLatest();\n return self.__url;\n }\n\n exportJSON(): SerializedMockEntityNode {\n return {\n ...super.exportJSON(),\n type: 'mockEntity',\n url: this.__url,\n version: 1,\n };\n }\n}\n\nexport type ExtraDataType = { url: string };\n\nexport function $createMockEntityNode(text: string, url: string): MockEntityNode {\n return new MockEntityNode(text, url);\n}\n\nexport function $isMockEntityNode(node: LexicalNode | null | undefined): node is MockEntityNode {\n return node instanceof MockEntityNode;\n}\n\nexport const parseLinkPreview = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n let previewData;\n try {\n const previewDataString = event.clipboardData?.getData('text/link-preview');\n if (previewDataString === undefined || previewDataString === '') {\n return { handled: false };\n }\n\n previewData = JSON.parse(previewDataString);\n } catch (e) {\n return { handled: false };\n }\n\n const title: string | undefined = previewData.title;\n const url: string | undefined = previewData.url;\n if (!title || !url) {\n return { handled: false };\n }\n\n return {\n handled: true,\n transformedParts: [{ type: 'entity', value: { text: title, data: { url } } }],\n };\n};\nconst urlRegex = /(\\b(?:https?):\\/\\/[^\\s]+)/gi;\n\nexport const parseLink = (event: ClipboardEvent): PasteUnfurlingTransformResult<ExtraDataType, {}> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n const parts = text.split(urlRegex);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n\n// A transform can be async in case it needs to fetch data from a server.\nexport const parseEntity = async (event: ClipboardEvent): Promise<PasteUnfurlingTransformResult<ExtraDataType, {}>> => {\n const text = event.clipboardData?.getData('text/plain');\n if (!text) {\n return {\n handled: false,\n };\n }\n\n // Assume entities come in the syntax <entity>title</entity>\n const re = /<entity[^>]*>([^<]*)<\\/entity>/g;\n const parts = text.split(re);\n // If an entity was found, parts will be at least 3 elements long\n if (parts.length < 3) {\n return { handled: false };\n }\n\n // Even elements are text, odd elements are entities\n // [\"\", entity, \"\", entity, \"\", ...]\n const transformedParts = parts\n .map((str, i) => {\n if (i % 2 === 0) {\n return { type: 'text', value: str };\n } else {\n return {\n type: 'entity',\n value: { text: str, data: { url: str } },\n };\n }\n })\n // Filter out all the nulls for empty strings\n .filter(node => node !== null) as PasteUnfurlingTransformedPart<ExtraDataType, {}>[];\n\n return { handled: true, transformedParts };\n};\n"],"names":["$createMockEntityNode","$isMockEntityNode","MockClipboardEvent","MockEntityNode","createPasteEvent","parseEntity","parseLink","parseLinkPreview","Event","clipboardData","data","event","types","map","mimeType","getData","format","item","find","value","TextNode","getType","clone","node","__text","__url","__key","importJSON","serializedNode","text","url","self","getLatest","exportJSON","type","version","constructor","key","previewData","previewDataString","undefined","handled","JSON","parse","e","title","transformedParts","urlRegex","parts","split","length","str","i","filter","re"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-copilot/chat-input-plugins",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
4
4
  "description": "A Fluent AI package for non-react specific chat input plugins.",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@fluentui-copilot/text-editor": "^0.3.3",
15
+ "@fluentui-copilot/text-editor": "^0.3.4",
16
16
  "@swc/helpers": "^0.5.1"
17
17
  },
18
18
  "beachball": {