@fluentui-copilot/react-chat-input-plugins 0.4.10-hotfix.1 → 0.4.10-hotfix.2

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.
Files changed (108) hide show
  1. package/CHANGELOG.json +4 -4
  2. package/CHANGELOG.md +5 -5
  3. package/lib/BasicFunctionality.js +1 -0
  4. package/lib/ChatInputEntity.js +1 -0
  5. package/lib/ChatInputToken.js +1 -0
  6. package/lib/GhostText.js +1 -0
  7. package/lib/ImperativeControl.js +1 -0
  8. package/lib/PasteUnfurling.js +1 -0
  9. package/lib/components/ChatInputEntity/ChatInputEntity.js +5 -4
  10. package/lib/components/ChatInputEntity/ChatInputEntity.types.js +3 -2
  11. package/lib/components/ChatInputEntity/index.js +1 -0
  12. package/lib/components/ChatInputEntity/renderChatInputEntity.js +8 -9
  13. package/lib/components/ChatInputEntity/useChatInputEntity.js +44 -40
  14. package/lib/components/ChatInputEntity/useChatInputEntityStyles.styles.raw.js +35 -31
  15. package/lib/components/ChatInputToken/ChatInputToken.js +5 -4
  16. package/lib/components/ChatInputToken/ChatInputToken.node.js +50 -49
  17. package/lib/components/ChatInputToken/ChatInputToken.types.js +2 -1
  18. package/lib/components/ChatInputToken/index.js +1 -0
  19. package/lib/components/ChatInputToken/renderChatInputToken.js +6 -4
  20. package/lib/components/ChatInputToken/useChatInputToken.js +14 -12
  21. package/lib/components/ChatInputToken/useChatInputTokenStyles.styles.raw.js +19 -15
  22. package/lib/components/GhostText/GhostText.js +5 -4
  23. package/lib/components/GhostText/GhostText.types.js +3 -2
  24. package/lib/components/GhostText/index.js +1 -0
  25. package/lib/components/GhostText/renderGhostText.js +8 -9
  26. package/lib/components/GhostText/useGhostText.js +39 -36
  27. package/lib/components/GhostText/useGhostTextStyles.styles.raw.js +29 -25
  28. package/lib/index.js +1 -0
  29. package/lib/plugins/BasicFunctionality/BasicFunctionality.js +53 -67
  30. package/lib/plugins/BasicFunctionality/index.js +1 -0
  31. package/lib/plugins/ChatInputEntity/ChatInputEntity.node.js +68 -67
  32. package/lib/plugins/ChatInputEntity/ChatInputEntityPlugin.js +38 -37
  33. package/lib/plugins/ChatInputEntity/ChatInputEntityPlugin.types.js +2 -1
  34. package/lib/plugins/ChatInputEntity/index.js +1 -0
  35. package/lib/plugins/GhostText/GhostText.js +37 -43
  36. package/lib/plugins/GhostText/GhostText.node.js +57 -56
  37. package/lib/plugins/GhostText/index.js +1 -0
  38. package/lib/plugins/ImperativeControl/ImperativeControl.js +5 -6
  39. package/lib/plugins/ImperativeControl/index.js +1 -0
  40. package/lib/plugins/ManualGhostText/ManualGhostText.js +8 -8
  41. package/lib/plugins/ManualGhostText/index.js +1 -0
  42. package/lib/plugins/PasteUnfurling/PasteUnfurling.js +14 -14
  43. package/lib/plugins/PasteUnfurling/index.js +1 -0
  44. package/lib-commonjs/BasicFunctionality.js +1 -0
  45. package/lib-commonjs/ChatInputEntity.js +1 -0
  46. package/lib-commonjs/ChatInputToken.js +1 -0
  47. package/lib-commonjs/GhostText.js +1 -0
  48. package/lib-commonjs/ImperativeControl.js +1 -0
  49. package/lib-commonjs/PasteUnfurling.js +1 -0
  50. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.js +1 -1
  51. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.js.map +1 -1
  52. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.types.js +1 -0
  53. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.types.js.map +1 -1
  54. package/lib-commonjs/components/ChatInputEntity/index.js +1 -0
  55. package/lib-commonjs/components/ChatInputEntity/renderChatInputEntity.js +1 -1
  56. package/lib-commonjs/components/ChatInputEntity/renderChatInputEntity.js.map +1 -1
  57. package/lib-commonjs/components/ChatInputEntity/useChatInputEntity.js +1 -1
  58. package/lib-commonjs/components/ChatInputEntity/useChatInputEntity.js.map +1 -1
  59. package/lib-commonjs/components/ChatInputEntity/useChatInputEntityStyles.styles.raw.js +1 -1
  60. package/lib-commonjs/components/ChatInputEntity/useChatInputEntityStyles.styles.raw.js.map +1 -1
  61. package/lib-commonjs/components/ChatInputToken/ChatInputToken.js +1 -1
  62. package/lib-commonjs/components/ChatInputToken/ChatInputToken.js.map +1 -1
  63. package/lib-commonjs/components/ChatInputToken/ChatInputToken.node.js +1 -1
  64. package/lib-commonjs/components/ChatInputToken/ChatInputToken.node.js.map +1 -1
  65. package/lib-commonjs/components/ChatInputToken/ChatInputToken.types.js +1 -0
  66. package/lib-commonjs/components/ChatInputToken/index.js +1 -0
  67. package/lib-commonjs/components/ChatInputToken/renderChatInputToken.js +1 -1
  68. package/lib-commonjs/components/ChatInputToken/renderChatInputToken.js.map +1 -1
  69. package/lib-commonjs/components/ChatInputToken/useChatInputToken.js +1 -1
  70. package/lib-commonjs/components/ChatInputToken/useChatInputToken.js.map +1 -1
  71. package/lib-commonjs/components/ChatInputToken/useChatInputTokenStyles.styles.raw.js +1 -1
  72. package/lib-commonjs/components/ChatInputToken/useChatInputTokenStyles.styles.raw.js.map +1 -1
  73. package/lib-commonjs/components/GhostText/GhostText.js +1 -1
  74. package/lib-commonjs/components/GhostText/GhostText.js.map +1 -1
  75. package/lib-commonjs/components/GhostText/GhostText.types.js +1 -0
  76. package/lib-commonjs/components/GhostText/GhostText.types.js.map +1 -1
  77. package/lib-commonjs/components/GhostText/index.js +1 -0
  78. package/lib-commonjs/components/GhostText/renderGhostText.js +1 -1
  79. package/lib-commonjs/components/GhostText/renderGhostText.js.map +1 -1
  80. package/lib-commonjs/components/GhostText/useGhostText.js +1 -1
  81. package/lib-commonjs/components/GhostText/useGhostText.js.map +1 -1
  82. package/lib-commonjs/components/GhostText/useGhostTextStyles.styles.raw.js +1 -1
  83. package/lib-commonjs/components/GhostText/useGhostTextStyles.styles.raw.js.map +1 -1
  84. package/lib-commonjs/index.js +1 -0
  85. package/lib-commonjs/plugins/BasicFunctionality/BasicFunctionality.js +1 -1
  86. package/lib-commonjs/plugins/BasicFunctionality/BasicFunctionality.js.map +1 -1
  87. package/lib-commonjs/plugins/BasicFunctionality/index.js +1 -0
  88. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntity.node.js +1 -1
  89. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntity.node.js.map +1 -1
  90. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntityPlugin.js +1 -1
  91. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntityPlugin.js.map +1 -1
  92. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntityPlugin.types.js +1 -0
  93. package/lib-commonjs/plugins/ChatInputEntity/index.js +1 -0
  94. package/lib-commonjs/plugins/GhostText/GhostText.js +3 -2
  95. package/lib-commonjs/plugins/GhostText/GhostText.js.map +1 -1
  96. package/lib-commonjs/plugins/GhostText/GhostText.node.js +1 -1
  97. package/lib-commonjs/plugins/GhostText/GhostText.node.js.map +1 -1
  98. package/lib-commonjs/plugins/GhostText/index.js +1 -0
  99. package/lib-commonjs/plugins/ImperativeControl/ImperativeControl.js +1 -1
  100. package/lib-commonjs/plugins/ImperativeControl/ImperativeControl.js.map +1 -1
  101. package/lib-commonjs/plugins/ImperativeControl/index.js +1 -0
  102. package/lib-commonjs/plugins/ManualGhostText/ManualGhostText.js +1 -1
  103. package/lib-commonjs/plugins/ManualGhostText/ManualGhostText.js.map +1 -1
  104. package/lib-commonjs/plugins/ManualGhostText/index.js +1 -0
  105. package/lib-commonjs/plugins/PasteUnfurling/PasteUnfurling.js +1 -1
  106. package/lib-commonjs/plugins/PasteUnfurling/PasteUnfurling.js.map +1 -1
  107. package/lib-commonjs/plugins/PasteUnfurling/index.js +1 -0
  108. package/package.json +5 -5
@@ -10,40 +10,43 @@ import { $getNodeByKey, useLexicalComposerContext } from '@fluentui-copilot/reac
10
10
  *
11
11
  * @param props - props from this instance of GhostText
12
12
  * @param ref - reference to root HTMLElement of GhostText
13
- */ export const useGhostText_unstable = (props, ref)=>{
14
- const { nodeKey, onClick, ...rest } = props;
15
- const [editor] = useLexicalComposerContext();
16
- const handleClick = React.useCallback((_ev)=>{
17
- if (!nodeKey) {
18
- return;
19
- }
20
- editor.update(()=>{
21
- var _node_getPreviousSibling;
22
- const node = $getNodeByKey(nodeKey);
23
- node === null || node === void 0 ? void 0 : (_node_getPreviousSibling = node.getPreviousSibling()) === null || _node_getPreviousSibling === void 0 ? void 0 : _node_getPreviousSibling.selectEnd();
24
- }, {
25
- tag: 'historic'
26
- });
27
- }, [
28
- editor,
29
- nodeKey
30
- ]);
31
- const mergedOnClick = mergeCallbacks(handleClick, onClick);
32
- const state = {
33
- components: {
34
- root: 'span',
35
- indicator: 'span'
36
- },
37
- root: slot.always(getIntrinsicElementProps('span', {
38
- ref,
39
- onClick: mergedOnClick,
40
- ...rest
41
- }), {
42
- elementType: 'span'
43
- }),
44
- indicator: slot.optional(props.indicator, {
45
- elementType: 'span'
46
- })
47
- };
48
- return state;
13
+ */
14
+ export const useGhostText_unstable = (props, ref) => {
15
+ const {
16
+ nodeKey,
17
+ onClick,
18
+ ...rest
19
+ } = props;
20
+ const [editor] = useLexicalComposerContext();
21
+ const handleClick = React.useCallback(_ev => {
22
+ if (!nodeKey) {
23
+ return;
24
+ }
25
+ editor.update(() => {
26
+ var _node_getPreviousSibling;
27
+ const node = $getNodeByKey(nodeKey);
28
+ node === null || node === void 0 ? void 0 : (_node_getPreviousSibling = node.getPreviousSibling()) === null || _node_getPreviousSibling === void 0 ? void 0 : _node_getPreviousSibling.selectEnd();
29
+ }, {
30
+ tag: 'historic'
31
+ });
32
+ }, [editor, nodeKey]);
33
+ const mergedOnClick = mergeCallbacks(handleClick, onClick);
34
+ const state = {
35
+ components: {
36
+ root: 'span',
37
+ indicator: 'span'
38
+ },
39
+ root: slot.always(getIntrinsicElementProps('span', {
40
+ ref,
41
+ onClick: mergedOnClick,
42
+ ...rest
43
+ }), {
44
+ elementType: 'span'
45
+ }),
46
+ indicator: slot.optional(props.indicator, {
47
+ elementType: 'span'
48
+ })
49
+ };
50
+ return state;
49
51
  };
52
+ //# sourceMappingURL=useGhostText.js.map
@@ -1,35 +1,39 @@
1
1
  import { makeStyles, mergeClasses, typographyStyles } from '@fluentui/react-components';
2
2
  import { tokens } from '@fluentui-copilot/tokens';
3
3
  export const ghostTextClassNames = {
4
- root: 'fai-GhostText',
5
- indicator: 'fai-GhostText__indicator'
4
+ root: 'fai-GhostText',
5
+ indicator: 'fai-GhostText__indicator'
6
6
  };
7
7
  /**
8
8
  * Styles for the root slot
9
- */ const useStyles = makeStyles({
10
- root: {
11
- color: tokens.colorNeutralForeground4,
12
- whiteSpace: 'pre-wrap',
13
- gap: tokens.spacingHorizontalXS
14
- },
15
- indicator: {
16
- ...typographyStyles.caption2Strong,
17
- color: tokens.colorNeutralForeground3,
18
- backgroundColor: tokens.colorNeutralBackground5,
19
- padding: `${tokens.spacingVerticalNone} ${tokens.spacingHorizontalSNudge}`,
20
- borderRadius: tokens.borderRadiusSmall,
21
- marginLeft: tokens.spacingHorizontalXS,
22
- merginRight: tokens.spacingHorizontalXS
23
- }
9
+ */
10
+ const useStyles = makeStyles({
11
+ root: {
12
+ color: tokens.colorNeutralForeground4,
13
+ whiteSpace: 'pre-wrap',
14
+ gap: tokens.spacingHorizontalXS
15
+ },
16
+ indicator: {
17
+ ...typographyStyles.caption2Strong,
18
+ color: tokens.colorNeutralForeground3,
19
+ backgroundColor: tokens.colorNeutralBackground5,
20
+ padding: `${tokens.spacingVerticalNone} ${tokens.spacingHorizontalSNudge}`,
21
+ borderRadius: tokens.borderRadiusSmall,
22
+ marginLeft: tokens.spacingHorizontalXS,
23
+ merginRight: tokens.spacingHorizontalXS
24
+ }
24
25
  });
25
26
  /**
26
27
  * Apply styling to the GhostText slots based on the state
27
- */ export const useGhostTextStyles_unstable = (state)=>{
28
- 'use no memo';
29
- const styles = useStyles();
30
- state.root.className = mergeClasses(ghostTextClassNames.root, styles.root, state.root.className);
31
- if (state.indicator) {
32
- state.indicator.className = mergeClasses(ghostTextClassNames.indicator, styles.indicator, state.indicator.className);
33
- }
34
- return state;
28
+ */
29
+ export const useGhostTextStyles_unstable = state => {
30
+ 'use no memo';
31
+
32
+ const styles = useStyles();
33
+ state.root.className = mergeClasses(ghostTextClassNames.root, styles.root, state.root.className);
34
+ if (state.indicator) {
35
+ state.indicator.className = mergeClasses(ghostTextClassNames.indicator, styles.indicator, state.indicator.className);
36
+ }
37
+ return state;
35
38
  };
39
+ //# sourceMappingURL=useGhostTextStyles.styles.raw.js.map
package/lib/index.js CHANGED
@@ -4,3 +4,4 @@ export { ChatInputToken, ChatInputTokenNode, chatInputTokenClassNames, renderCha
4
4
  export { BasicFunctionalityPlugin } from './BasicFunctionality';
5
5
  export { ImperativeControlPlugin } from './ImperativeControl';
6
6
  export { PasteUnfurlingPlugin } from './PasteUnfurling';
7
+ //# sourceMappingURL=index.js.map
@@ -2,71 +2,57 @@ import * as React from 'react';
2
2
  import { useLexicalComposerContext } from '@fluentui-copilot/react-text-editor';
3
3
  import { useIsomorphicLayoutEffect } from '@fluentui/react-components';
4
4
  import { BasicFunctionalityBase } from '@fluentui-copilot/chat-input-plugins';
5
- export const BasicFunctionalityPlugin = React.forwardRef((props, ref)=>{
6
- const { defaultValue, trimWhitespace, onCountChanged, onContentChange, onPaste, isSentinelNodeEnabled } = props;
7
- const [editor] = useLexicalComposerContext();
8
- const [basicFunctionalityImpl, setBasicFunctionalityImpl] = React.useState(null);
9
- useIsomorphicLayoutEffect(()=>{
10
- setBasicFunctionalityImpl(new BasicFunctionalityBase(editor, isSentinelNodeEnabled));
11
- return ()=>{
12
- setBasicFunctionalityImpl((prev)=>{
13
- prev === null || prev === void 0 ? void 0 : prev.cleanup();
14
- return null;
15
- });
16
- };
17
- }, [
18
- editor,
19
- isSentinelNodeEnabled
20
- ]);
21
- React.useImperativeHandle(ref, ()=>({
22
- setIsDisabled (isDisabled) {
23
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.setIsDisabled(isDisabled);
24
- }
25
- }), [
26
- basicFunctionalityImpl
27
- ]);
28
- const setDefaultValue = React.useRef(false);
29
- // useIsomorphicLayoutEffect is used to avoid flickering on first render
30
- useIsomorphicLayoutEffect(()=>{
31
- if (basicFunctionalityImpl && !setDefaultValue.current) {
32
- if (defaultValue) {
33
- basicFunctionalityImpl.insertDefaultValue(defaultValue);
34
- }
35
- setDefaultValue.current = true;
36
- }
37
- }, [
38
- basicFunctionalityImpl,
39
- defaultValue,
40
- editor
41
- ]);
42
- React.useEffect(()=>{
43
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateContentCallbacks(onContentChange, onCountChanged);
44
- return ()=>basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateContentCallbacks();
45
- }, [
46
- basicFunctionalityImpl,
47
- editor,
48
- onContentChange,
49
- onCountChanged
50
- ]);
51
- React.useEffect(()=>{
52
- if (onPaste) {
53
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activatePasteCallback(onPaste);
54
- }
55
- return ()=>basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivatePasteCallback();
56
- }, [
57
- basicFunctionalityImpl,
58
- editor,
59
- onPaste
60
- ]);
61
- React.useEffect(()=>{
62
- if (trimWhitespace) {
63
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateTrimWhitespace();
64
- }
65
- return ()=>basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateTrimWhitespace();
66
- }, [
67
- basicFunctionalityImpl,
68
- editor,
69
- trimWhitespace
70
- ]);
71
- return null;
5
+ export const BasicFunctionalityPlugin = React.forwardRef((props, ref) => {
6
+ const {
7
+ defaultValue,
8
+ trimWhitespace,
9
+ onCountChanged,
10
+ onContentChange,
11
+ onPaste,
12
+ isSentinelNodeEnabled
13
+ } = props;
14
+ const [editor] = useLexicalComposerContext();
15
+ const [basicFunctionalityImpl, setBasicFunctionalityImpl] = React.useState(null);
16
+ useIsomorphicLayoutEffect(() => {
17
+ setBasicFunctionalityImpl(new BasicFunctionalityBase(editor, isSentinelNodeEnabled));
18
+ return () => {
19
+ setBasicFunctionalityImpl(prev => {
20
+ prev === null || prev === void 0 ? void 0 : prev.cleanup();
21
+ return null;
22
+ });
23
+ };
24
+ }, [editor, isSentinelNodeEnabled]);
25
+ React.useImperativeHandle(ref, () => ({
26
+ setIsDisabled(isDisabled) {
27
+ basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.setIsDisabled(isDisabled);
28
+ }
29
+ }), [basicFunctionalityImpl]);
30
+ const setDefaultValue = React.useRef(false);
31
+ // useIsomorphicLayoutEffect is used to avoid flickering on first render
32
+ useIsomorphicLayoutEffect(() => {
33
+ if (basicFunctionalityImpl && !setDefaultValue.current) {
34
+ if (defaultValue) {
35
+ basicFunctionalityImpl.insertDefaultValue(defaultValue);
36
+ }
37
+ setDefaultValue.current = true;
38
+ }
39
+ }, [basicFunctionalityImpl, defaultValue, editor]);
40
+ React.useEffect(() => {
41
+ basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateContentCallbacks(onContentChange, onCountChanged);
42
+ return () => basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateContentCallbacks();
43
+ }, [basicFunctionalityImpl, editor, onContentChange, onCountChanged]);
44
+ React.useEffect(() => {
45
+ if (onPaste) {
46
+ basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activatePasteCallback(onPaste);
47
+ }
48
+ return () => basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivatePasteCallback();
49
+ }, [basicFunctionalityImpl, editor, onPaste]);
50
+ React.useEffect(() => {
51
+ if (trimWhitespace) {
52
+ basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateTrimWhitespace();
53
+ }
54
+ return () => basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateTrimWhitespace();
55
+ }, [basicFunctionalityImpl, editor, trimWhitespace]);
56
+ return null;
72
57
  });
58
+ //# sourceMappingURL=BasicFunctionality.js.map
@@ -1 +1,2 @@
1
1
  export { BasicFunctionalityPlugin } from './BasicFunctionality';
2
+ //# sourceMappingURL=index.js.map
@@ -3,76 +3,77 @@ import * as React from 'react';
3
3
  import { DecoratorNode } from '@fluentui-copilot/text-editor';
4
4
  import { ChatInputEntity } from '../../ChatInputEntity';
5
5
  export class ChatInputEntityNode extends DecoratorNode {
6
- static getType() {
7
- return 'entity';
8
- }
9
- static clone(node) {
10
- return new ChatInputEntityNode(node.__pluginId, node.__text, node.__data, node.__entityProps, node.__key);
11
- }
12
- static importJSON(serializedNode) {
13
- return $createChatInputEntityNode(serializedNode.pluginId, serializedNode.text, serializedNode.data, serializedNode.entityProps);
14
- }
15
- isIsolated() {
16
- return true;
17
- }
18
- isInline() {
19
- return true;
20
- }
21
- getTextContent() {
22
- return this.__text;
23
- }
24
- exportJSON() {
25
- return {
26
- pluginId: this.__pluginId,
27
- text: this.__text,
28
- data: this.__data,
29
- entityProps: this.__entityProps,
30
- type: ChatInputEntityNode.getType(),
31
- version: 1
32
- };
33
- }
34
- createDOM() {
35
- // eslint-disable-next-line no-restricted-globals
36
- return document.createElement('span');
37
- }
38
- updateDOM() {
39
- return false;
40
- }
41
- decorate(_editor, config) {
42
- var _this___entityProps;
43
- if ((_this___entityProps = this.__entityProps) === null || _this___entityProps === void 0 ? void 0 : _this___entityProps.children) {
44
- return /*#__PURE__*/ React.createElement(ChatInputEntity, this.__entityProps);
45
- }
46
- return /*#__PURE__*/ React.createElement(ChatInputEntity, this.__entityProps, this.__text);
47
- }
48
- getEntityData() {
49
- return {
50
- text: this.__text,
51
- data: this.__data,
52
- entityProps: this.__entityProps
53
- };
54
- }
55
- updateEntityData(data) {
56
- const writable = this.getWritable();
57
- writable.__text = data.text;
58
- writable.__data = data.data;
59
- writable.__entityProps = data.entityProps;
60
- }
61
- constructor(pluginId, text, data, entityProps, key){
62
- super(key);
63
- _define_property(this, "__pluginId", void 0);
64
- _define_property(this, "__text", void 0);
65
- _define_property(this, "__entityProps", void 0);
66
- _define_property(this, "__data", void 0);
67
- this.__pluginId = pluginId;
68
- this.__text = text;
69
- this.__data = data;
70
- this.__entityProps = entityProps;
6
+ static getType() {
7
+ return 'entity';
8
+ }
9
+ static clone(node) {
10
+ return new ChatInputEntityNode(node.__pluginId, node.__text, node.__data, node.__entityProps, node.__key);
11
+ }
12
+ static importJSON(serializedNode) {
13
+ return $createChatInputEntityNode(serializedNode.pluginId, serializedNode.text, serializedNode.data, serializedNode.entityProps);
14
+ }
15
+ isIsolated() {
16
+ return true;
17
+ }
18
+ isInline() {
19
+ return true;
20
+ }
21
+ getTextContent() {
22
+ return this.__text;
23
+ }
24
+ exportJSON() {
25
+ return {
26
+ pluginId: this.__pluginId,
27
+ text: this.__text,
28
+ data: this.__data,
29
+ entityProps: this.__entityProps,
30
+ type: ChatInputEntityNode.getType(),
31
+ version: 1
32
+ };
33
+ }
34
+ createDOM() {
35
+ // eslint-disable-next-line no-restricted-globals
36
+ return document.createElement('span');
37
+ }
38
+ updateDOM() {
39
+ return false;
40
+ }
41
+ decorate(_editor, config) {
42
+ var _this___entityProps;
43
+ if ((_this___entityProps = this.__entityProps) === null || _this___entityProps === void 0 ? void 0 : _this___entityProps.children) {
44
+ return /*#__PURE__*/React.createElement(ChatInputEntity, this.__entityProps);
71
45
  }
46
+ return /*#__PURE__*/React.createElement(ChatInputEntity, this.__entityProps, this.__text);
47
+ }
48
+ getEntityData() {
49
+ return {
50
+ text: this.__text,
51
+ data: this.__data,
52
+ entityProps: this.__entityProps
53
+ };
54
+ }
55
+ updateEntityData(data) {
56
+ const writable = this.getWritable();
57
+ writable.__text = data.text;
58
+ writable.__data = data.data;
59
+ writable.__entityProps = data.entityProps;
60
+ }
61
+ constructor(pluginId, text, data, entityProps, key) {
62
+ super(key);
63
+ _define_property(this, "__pluginId", void 0);
64
+ _define_property(this, "__text", void 0);
65
+ _define_property(this, "__entityProps", void 0);
66
+ _define_property(this, "__data", void 0);
67
+ this.__pluginId = pluginId;
68
+ this.__text = text;
69
+ this.__data = data;
70
+ this.__entityProps = entityProps;
71
+ }
72
72
  }
73
73
  export function $createChatInputEntityNode(pluginId, text, data, entityProps, key) {
74
- return new ChatInputEntityNode(pluginId, text, data, entityProps, key);
74
+ return new ChatInputEntityNode(pluginId, text, data, entityProps, key);
75
75
  }
76
76
  export function $isChatInputEntityNode(node) {
77
- return node instanceof ChatInputEntityNode;
77
+ return node instanceof ChatInputEntityNode;
78
78
  }
79
+ //# sourceMappingURL=ChatInputEntity.node.js.map
@@ -2,41 +2,42 @@ import { useLexicalComposerContext } from '@fluentui-copilot/react-text-editor';
2
2
  import * as React from 'react';
3
3
  import { $createChatInputEntityNode, $isChatInputEntityNode, ChatInputEntityNode } from './ChatInputEntity.node';
4
4
  import { ChatInputEntityPluginBase } from '@fluentui-copilot/chat-input-plugins';
5
- export const ChatInputEntityPlugin = (props)=>{
6
- const { id, controlRef, onChatInputEntityAdded, onChatInputEntityDeleted, skipInitialization } = props;
7
- const [editor] = useLexicalComposerContext();
8
- const chatInputEntityPluginBase = React.useRef(null);
9
- React.useEffect(()=>{
10
- chatInputEntityPluginBase.current = new ChatInputEntityPluginBase(editor, id, ChatInputEntityNode, $createChatInputEntityNode, $isChatInputEntityNode, onChatInputEntityAdded, onChatInputEntityDeleted);
11
- return ()=>{
12
- var _chatInputEntityPluginBase_current;
13
- return (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.cleanup();
14
- };
15
- }, [
16
- editor,
17
- id,
18
- onChatInputEntityAdded,
19
- onChatInputEntityDeleted,
20
- skipInitialization
21
- ]);
22
- React.useImperativeHandle(controlRef, ()=>({
23
- insertChatInputEntity (props) {
24
- var _chatInputEntityPluginBase_current;
25
- return (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.insertChatInputEntity(props);
26
- },
27
- getActiveEntities () {
28
- var _chatInputEntityPluginBase_current;
29
- var _chatInputEntityPluginBase_current_getActiveEntities;
30
- return (_chatInputEntityPluginBase_current_getActiveEntities = (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.getActiveEntities()) !== null && _chatInputEntityPluginBase_current_getActiveEntities !== void 0 ? _chatInputEntityPluginBase_current_getActiveEntities : [];
31
- },
32
- removeChatInputEntity (keyOrPredicate) {
33
- var _chatInputEntityPluginBase_current;
34
- (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.removeChatInputEntity(keyOrPredicate);
35
- },
36
- updateChatInputEntityProps (keyOrPredicate, props) {
37
- var _chatInputEntityPluginBase_current;
38
- (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.updateChatInputEntityProps(keyOrPredicate, props);
39
- }
40
- }), []);
41
- return null;
5
+ export const ChatInputEntityPlugin = props => {
6
+ const {
7
+ id,
8
+ controlRef,
9
+ onChatInputEntityAdded,
10
+ onChatInputEntityDeleted,
11
+ skipInitialization
12
+ } = props;
13
+ const [editor] = useLexicalComposerContext();
14
+ const chatInputEntityPluginBase = React.useRef(null);
15
+ React.useEffect(() => {
16
+ chatInputEntityPluginBase.current = new ChatInputEntityPluginBase(editor, id, ChatInputEntityNode, $createChatInputEntityNode, $isChatInputEntityNode, onChatInputEntityAdded, onChatInputEntityDeleted);
17
+ return () => {
18
+ var _chatInputEntityPluginBase_current;
19
+ return (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.cleanup();
20
+ };
21
+ }, [editor, id, onChatInputEntityAdded, onChatInputEntityDeleted, skipInitialization]);
22
+ React.useImperativeHandle(controlRef, () => ({
23
+ insertChatInputEntity(props) {
24
+ var _chatInputEntityPluginBase_current;
25
+ return (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.insertChatInputEntity(props);
26
+ },
27
+ getActiveEntities() {
28
+ var _chatInputEntityPluginBase_current;
29
+ var _chatInputEntityPluginBase_current_getActiveEntities;
30
+ return (_chatInputEntityPluginBase_current_getActiveEntities = (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.getActiveEntities()) !== null && _chatInputEntityPluginBase_current_getActiveEntities !== void 0 ? _chatInputEntityPluginBase_current_getActiveEntities : [];
31
+ },
32
+ removeChatInputEntity(keyOrPredicate) {
33
+ var _chatInputEntityPluginBase_current;
34
+ (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.removeChatInputEntity(keyOrPredicate);
35
+ },
36
+ updateChatInputEntityProps(keyOrPredicate, props) {
37
+ var _chatInputEntityPluginBase_current;
38
+ (_chatInputEntityPluginBase_current = chatInputEntityPluginBase.current) === null || _chatInputEntityPluginBase_current === void 0 ? void 0 : _chatInputEntityPluginBase_current.updateChatInputEntityProps(keyOrPredicate, props);
39
+ }
40
+ }), []);
41
+ return null;
42
42
  };
43
+ //# sourceMappingURL=ChatInputEntityPlugin.js.map
@@ -1 +1,2 @@
1
- export { };
1
+ export {};
2
+ //# sourceMappingURL=ChatInputEntityPlugin.types.js.map
@@ -1,2 +1,3 @@
1
1
  export { $createChatInputEntityNode, $isChatInputEntityNode, ChatInputEntityNode } from './ChatInputEntity.node';
2
2
  export { ChatInputEntityPlugin } from './ChatInputEntityPlugin';
3
+ //# sourceMappingURL=index.js.map
@@ -4,47 +4,41 @@ import { $createGhostTextNode } from '../../GhostText';
4
4
  import { GhostTextNode } from './GhostText.node';
5
5
  import { GhostTextPluginBase } from '@fluentui-copilot/chat-input-plugins';
6
6
  export function GhostTextPlugin(props) {
7
- 'use no memo';
8
- const { $getGhostText, id, ghostTextProps, exposeText, allowCompletion } = props;
9
- const [editor] = useLexicalComposerContext();
10
- const [ghostTextBase, setGhostTextBase] = React.useState(null);
11
- React.useEffect(()=>{
12
- setGhostTextBase(new GhostTextPluginBase(editor, id, $getGhostText, GhostTextNode, $createGhostTextNode, ghostTextProps, exposeText, allowCompletion));
13
- return ()=>{
14
- setGhostTextBase((prev)=>{
15
- prev === null || prev === void 0 ? void 0 : prev.cleanup();
16
- return null;
17
- });
18
- };
19
- }, // We can update $getGhostText, $createGhostTextNode, ghostTextProps, exposeText, and allowCompletion without remounting
20
- // eslint-disable-next-line react-hooks/exhaustive-deps
21
- [
22
- editor,
23
- id
24
- ]);
25
- React.useEffect(()=>{
26
- ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setAllowCompletion(allowCompletion);
27
- }, [
28
- allowCompletion,
29
- ghostTextBase
30
- ]);
31
- React.useEffect(()=>{
32
- ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setComponentProps(ghostTextProps);
33
- }, [
34
- ghostTextBase,
35
- ghostTextProps
36
- ]);
37
- React.useEffect(()=>{
38
- ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setExposeText(exposeText);
39
- }, [
40
- exposeText,
41
- ghostTextBase
42
- ]);
43
- React.useEffect(()=>{
44
- ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setGetGhostText($getGhostText);
45
- }, [
46
- $getGhostText,
47
- ghostTextBase
48
- ]);
49
- return null;
7
+ 'use no memo';
8
+
9
+ const {
10
+ $getGhostText,
11
+ id,
12
+ ghostTextProps,
13
+ exposeText,
14
+ allowCompletion
15
+ } = props;
16
+ const [editor] = useLexicalComposerContext();
17
+ const [ghostTextBase, setGhostTextBase] = React.useState(null);
18
+ React.useEffect(() => {
19
+ setGhostTextBase(new GhostTextPluginBase(editor, id, $getGhostText, GhostTextNode, $createGhostTextNode, ghostTextProps, exposeText, allowCompletion));
20
+ return () => {
21
+ setGhostTextBase(prev => {
22
+ prev === null || prev === void 0 ? void 0 : prev.cleanup();
23
+ return null;
24
+ });
25
+ };
26
+ },
27
+ // We can update $getGhostText, $createGhostTextNode, ghostTextProps, exposeText, and allowCompletion without remounting
28
+ // eslint-disable-next-line react-hooks/exhaustive-deps
29
+ [editor, id]);
30
+ React.useEffect(() => {
31
+ ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setAllowCompletion(allowCompletion);
32
+ }, [allowCompletion, ghostTextBase]);
33
+ React.useEffect(() => {
34
+ ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setComponentProps(ghostTextProps);
35
+ }, [ghostTextBase, ghostTextProps]);
36
+ React.useEffect(() => {
37
+ ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setExposeText(exposeText);
38
+ }, [exposeText, ghostTextBase]);
39
+ React.useEffect(() => {
40
+ ghostTextBase === null || ghostTextBase === void 0 ? void 0 : ghostTextBase.setGetGhostText($getGhostText);
41
+ }, [$getGhostText, ghostTextBase]);
42
+ return null;
50
43
  }
44
+ //# sourceMappingURL=GhostText.js.map