@fluentui-copilot/react-chat-input-plugins 0.5.1 → 0.5.3

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 (111) hide show
  1. package/CHANGELOG.json +37 -1
  2. package/CHANGELOG.md +21 -2
  3. package/lib/BasicFunctionality.js +0 -1
  4. package/lib/ChatInputEntity.js +0 -1
  5. package/lib/ChatInputToken.js +0 -1
  6. package/lib/GhostText.js +0 -1
  7. package/lib/ImperativeControl.js +0 -1
  8. package/lib/PasteUnfurling.js +0 -1
  9. package/lib/components/ChatInputEntity/ChatInputEntity.js +4 -5
  10. package/lib/components/ChatInputEntity/ChatInputEntity.types.js +2 -3
  11. package/lib/components/ChatInputEntity/index.js +0 -1
  12. package/lib/components/ChatInputEntity/renderChatInputEntity.js +9 -8
  13. package/lib/components/ChatInputEntity/useChatInputEntity.js +40 -44
  14. package/lib/components/ChatInputEntity/useChatInputEntityStyles.styles.raw.js +43 -0
  15. package/lib/components/ChatInputEntity/useChatInputEntityStyles.styles.raw.js.map +1 -0
  16. package/lib/components/ChatInputToken/ChatInputToken.js +4 -5
  17. package/lib/components/ChatInputToken/ChatInputToken.node.js +49 -50
  18. package/lib/components/ChatInputToken/ChatInputToken.types.js +1 -2
  19. package/lib/components/ChatInputToken/index.js +0 -1
  20. package/lib/components/ChatInputToken/renderChatInputToken.js +4 -6
  21. package/lib/components/ChatInputToken/useChatInputToken.js +12 -14
  22. package/lib/components/ChatInputToken/useChatInputTokenStyles.styles.raw.js +25 -0
  23. package/lib/components/ChatInputToken/useChatInputTokenStyles.styles.raw.js.map +1 -0
  24. package/lib/components/GhostText/GhostText.js +4 -5
  25. package/lib/components/GhostText/GhostText.types.js +2 -3
  26. package/lib/components/GhostText/index.js +0 -1
  27. package/lib/components/GhostText/renderGhostText.js +9 -8
  28. package/lib/components/GhostText/useGhostText.js +36 -39
  29. package/lib/components/GhostText/useGhostTextStyles.styles.raw.js +35 -0
  30. package/lib/components/GhostText/useGhostTextStyles.styles.raw.js.map +1 -0
  31. package/lib/index.js +0 -1
  32. package/lib/plugins/BasicFunctionality/BasicFunctionality.js +53 -42
  33. package/lib/plugins/BasicFunctionality/index.js +0 -1
  34. package/lib/plugins/ChatInputEntity/ChatInputEntity.node.js +67 -68
  35. package/lib/plugins/ChatInputEntity/ChatInputEntityPlugin.js +37 -38
  36. package/lib/plugins/ChatInputEntity/ChatInputEntityPlugin.types.js +1 -2
  37. package/lib/plugins/ChatInputEntity/index.js +0 -1
  38. package/lib/plugins/GhostText/GhostText.js +43 -37
  39. package/lib/plugins/GhostText/GhostText.node.js +56 -57
  40. package/lib/plugins/GhostText/index.js +0 -1
  41. package/lib/plugins/ImperativeControl/ImperativeControl.js +6 -5
  42. package/lib/plugins/ImperativeControl/index.js +0 -1
  43. package/lib/plugins/ManualGhostText/ManualGhostText.js +8 -8
  44. package/lib/plugins/ManualGhostText/index.js +0 -1
  45. package/lib/plugins/PasteUnfurling/PasteUnfurling.js +14 -14
  46. package/lib/plugins/PasteUnfurling/index.js +0 -1
  47. package/lib-commonjs/BasicFunctionality.js +0 -1
  48. package/lib-commonjs/ChatInputEntity.js +0 -1
  49. package/lib-commonjs/ChatInputToken.js +0 -1
  50. package/lib-commonjs/GhostText.js +0 -1
  51. package/lib-commonjs/ImperativeControl.js +0 -1
  52. package/lib-commonjs/PasteUnfurling.js +0 -1
  53. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.js +1 -1
  54. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.js.map +1 -1
  55. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.types.js +0 -1
  56. package/lib-commonjs/components/ChatInputEntity/ChatInputEntity.types.js.map +1 -1
  57. package/lib-commonjs/components/ChatInputEntity/index.js +0 -1
  58. package/lib-commonjs/components/ChatInputEntity/renderChatInputEntity.js +1 -1
  59. package/lib-commonjs/components/ChatInputEntity/renderChatInputEntity.js.map +1 -1
  60. package/lib-commonjs/components/ChatInputEntity/useChatInputEntity.js +1 -1
  61. package/lib-commonjs/components/ChatInputEntity/useChatInputEntity.js.map +1 -1
  62. package/lib-commonjs/components/ChatInputEntity/useChatInputEntityStyles.styles.raw.js +59 -0
  63. package/lib-commonjs/components/ChatInputEntity/useChatInputEntityStyles.styles.raw.js.map +1 -0
  64. package/lib-commonjs/components/ChatInputToken/ChatInputToken.js +1 -1
  65. package/lib-commonjs/components/ChatInputToken/ChatInputToken.js.map +1 -1
  66. package/lib-commonjs/components/ChatInputToken/ChatInputToken.node.js +1 -1
  67. package/lib-commonjs/components/ChatInputToken/ChatInputToken.node.js.map +1 -1
  68. package/lib-commonjs/components/ChatInputToken/ChatInputToken.types.js +0 -1
  69. package/lib-commonjs/components/ChatInputToken/index.js +0 -1
  70. package/lib-commonjs/components/ChatInputToken/renderChatInputToken.js +1 -1
  71. package/lib-commonjs/components/ChatInputToken/renderChatInputToken.js.map +1 -1
  72. package/lib-commonjs/components/ChatInputToken/useChatInputToken.js +1 -1
  73. package/lib-commonjs/components/ChatInputToken/useChatInputToken.js.map +1 -1
  74. package/lib-commonjs/components/ChatInputToken/useChatInputTokenStyles.styles.raw.js +41 -0
  75. package/lib-commonjs/components/ChatInputToken/useChatInputTokenStyles.styles.raw.js.map +1 -0
  76. package/lib-commonjs/components/GhostText/GhostText.js +1 -1
  77. package/lib-commonjs/components/GhostText/GhostText.js.map +1 -1
  78. package/lib-commonjs/components/GhostText/GhostText.types.js +0 -1
  79. package/lib-commonjs/components/GhostText/GhostText.types.js.map +1 -1
  80. package/lib-commonjs/components/GhostText/index.js +0 -1
  81. package/lib-commonjs/components/GhostText/renderGhostText.js +1 -1
  82. package/lib-commonjs/components/GhostText/renderGhostText.js.map +1 -1
  83. package/lib-commonjs/components/GhostText/useGhostText.js +1 -1
  84. package/lib-commonjs/components/GhostText/useGhostText.js.map +1 -1
  85. package/lib-commonjs/components/GhostText/useGhostTextStyles.styles.raw.js +51 -0
  86. package/lib-commonjs/components/GhostText/useGhostTextStyles.styles.raw.js.map +1 -0
  87. package/lib-commonjs/index.js +0 -1
  88. package/lib-commonjs/plugins/BasicFunctionality/BasicFunctionality.js +1 -1
  89. package/lib-commonjs/plugins/BasicFunctionality/BasicFunctionality.js.map +1 -1
  90. package/lib-commonjs/plugins/BasicFunctionality/index.js +0 -1
  91. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntity.node.js +1 -1
  92. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntity.node.js.map +1 -1
  93. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntityPlugin.js +1 -1
  94. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntityPlugin.js.map +1 -1
  95. package/lib-commonjs/plugins/ChatInputEntity/ChatInputEntityPlugin.types.js +0 -1
  96. package/lib-commonjs/plugins/ChatInputEntity/index.js +0 -1
  97. package/lib-commonjs/plugins/GhostText/GhostText.js +2 -3
  98. package/lib-commonjs/plugins/GhostText/GhostText.js.map +1 -1
  99. package/lib-commonjs/plugins/GhostText/GhostText.node.js +1 -1
  100. package/lib-commonjs/plugins/GhostText/GhostText.node.js.map +1 -1
  101. package/lib-commonjs/plugins/GhostText/index.js +0 -1
  102. package/lib-commonjs/plugins/ImperativeControl/ImperativeControl.js +1 -1
  103. package/lib-commonjs/plugins/ImperativeControl/ImperativeControl.js.map +1 -1
  104. package/lib-commonjs/plugins/ImperativeControl/index.js +0 -1
  105. package/lib-commonjs/plugins/ManualGhostText/ManualGhostText.js +1 -1
  106. package/lib-commonjs/plugins/ManualGhostText/ManualGhostText.js.map +1 -1
  107. package/lib-commonjs/plugins/ManualGhostText/index.js +0 -1
  108. package/lib-commonjs/plugins/PasteUnfurling/PasteUnfurling.js +1 -1
  109. package/lib-commonjs/plugins/PasteUnfurling/PasteUnfurling.js.map +1 -1
  110. package/lib-commonjs/plugins/PasteUnfurling/index.js +0 -1
  111. package/package.json +8 -8
@@ -10,43 +10,40 @@ 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
- */
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;
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;
51
49
  };
52
- //# sourceMappingURL=useGhostText.js.map
@@ -0,0 +1,35 @@
1
+ import { makeStyles, mergeClasses } from '@fluentui/react-components';
2
+ import { tokens, typographyStyles } from '@fluentui-copilot/tokens';
3
+ export const ghostTextClassNames = {
4
+ root: 'fai-GhostText',
5
+ indicator: 'fai-GhostText__indicator'
6
+ };
7
+ /**
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
+ }
24
+ });
25
+ /**
26
+ * 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;
35
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useGhostTextStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses } from '@fluentui/react-components';\nimport { tokens, typographyStyles } from '@fluentui-copilot/tokens';\nimport type { GhostTextSlots, GhostTextState } from './GhostText.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\n\nexport const ghostTextClassNames: SlotClassNames<GhostTextSlots> = {\n root: 'fai-GhostText',\n indicator: 'fai-GhostText__indicator',\n};\n\n/**\n * Styles for the root slot\n */\nconst useStyles = makeStyles({\n root: {\n color: tokens.colorNeutralForeground4,\n whiteSpace: 'pre-wrap',\n gap: tokens.spacingHorizontalXS,\n },\n\n indicator: {\n ...typographyStyles.caption2Strong,\n color: tokens.colorNeutralForeground3,\n backgroundColor: tokens.colorNeutralBackground5,\n padding: `${tokens.spacingVerticalNone} ${tokens.spacingHorizontalSNudge}`,\n borderRadius: tokens.borderRadiusSmall,\n marginLeft: tokens.spacingHorizontalXS,\n merginRight: tokens.spacingHorizontalXS,\n },\n});\n\n/**\n * Apply styling to the GhostText slots based on the state\n */\nexport const useGhostTextStyles_unstable = (state: GhostTextState): GhostTextState => {\n 'use no memo';\n\n const styles = useStyles();\n state.root.className = mergeClasses(ghostTextClassNames.root, styles.root, state.root.className);\n\n if (state.indicator) {\n state.indicator.className = mergeClasses(\n ghostTextClassNames.indicator,\n styles.indicator,\n state.indicator.className,\n );\n }\n\n return state;\n};\n"],"names":["makeStyles","mergeClasses","tokens","typographyStyles","ghostTextClassNames","root","indicator","useStyles","color","colorNeutralForeground4","whiteSpace","gap","spacingHorizontalXS","caption2Strong","colorNeutralForeground3","backgroundColor","colorNeutralBackground5","padding","spacingVerticalNone","spacingHorizontalSNudge","borderRadius","borderRadiusSmall","marginLeft","merginRight","useGhostTextStyles_unstable","state","styles","className"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,UAAU,EAAEC,YAAY,QAAQ,6BAA6B;AACtE,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,2BAA2B;AAIpE,OAAO,MAAMC,sBAAsD;IACjEC,MAAM;IACNC,WAAW;AACb,EAAE;AAEF;;CAEC,GACD,MAAMC,YAAYP,WAAW;IAC3BK,MAAM;QACJG,OAAON,OAAOO,uBAAuB;QACrCC,YAAY;QACZC,KAAKT,OAAOU,mBAAmB;IACjC;IAEAN,WAAW;QACT,GAAGH,iBAAiBU,cAAc;QAClCL,OAAON,OAAOY,uBAAuB;QACrCC,iBAAiBb,OAAOc,uBAAuB;QAC/CC,SAAS,CAAC,EAAEf,OAAOgB,mBAAmB,CAAC,CAAC,EAAEhB,OAAOiB,uBAAuB,CAAC,CAAC;QAC1EC,cAAclB,OAAOmB,iBAAiB;QACtCC,YAAYpB,OAAOU,mBAAmB;QACtCW,aAAarB,OAAOU,mBAAmB;IACzC;AACF;AAEA;;CAEC,GACD,OAAO,MAAMY,8BAA8B,CAACC;IAC1C;IAEA,MAAMC,SAASnB;IACfkB,MAAMpB,IAAI,CAACsB,SAAS,GAAG1B,aAAaG,oBAAoBC,IAAI,EAAEqB,OAAOrB,IAAI,EAAEoB,MAAMpB,IAAI,CAACsB,SAAS;IAE/F,IAAIF,MAAMnB,SAAS,EAAE;QACnBmB,MAAMnB,SAAS,CAACqB,SAAS,GAAG1B,aAC1BG,oBAAoBE,SAAS,EAC7BoB,OAAOpB,SAAS,EAChBmB,MAAMnB,SAAS,CAACqB,SAAS;IAE7B;IAEA,OAAOF;AACT,EAAE"}
package/lib/index.js CHANGED
@@ -4,4 +4,3 @@ 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,46 +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 {
7
- trimWhitespace,
8
- onCountChanged,
9
- onContentChange,
10
- onPaste,
11
- isSentinelNodeEnabled
12
- } = props;
13
- const [editor] = useLexicalComposerContext();
14
- const [basicFunctionalityImpl, setBasicFunctionalityImpl] = React.useState(null);
15
- useIsomorphicLayoutEffect(() => {
16
- setBasicFunctionalityImpl(new BasicFunctionalityBase(editor, isSentinelNodeEnabled));
17
- return () => {
18
- setBasicFunctionalityImpl(prev => {
19
- prev === null || prev === void 0 ? void 0 : prev.cleanup();
20
- return null;
21
- });
22
- };
23
- }, [editor, isSentinelNodeEnabled]);
24
- React.useImperativeHandle(ref, () => ({
25
- setIsDisabled(isDisabled) {
26
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.setIsDisabled(isDisabled);
27
- }
28
- }), [basicFunctionalityImpl]);
29
- React.useEffect(() => {
30
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateContentCallbacks(onContentChange, onCountChanged);
31
- return () => basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateContentCallbacks();
32
- }, [basicFunctionalityImpl, editor, onContentChange, onCountChanged]);
33
- React.useEffect(() => {
34
- if (onPaste) {
35
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activatePasteCallback(onPaste);
36
- }
37
- return () => basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivatePasteCallback();
38
- }, [basicFunctionalityImpl, editor, onPaste]);
39
- React.useEffect(() => {
40
- if (trimWhitespace) {
41
- basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateTrimWhitespace();
42
- }
43
- return () => basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateTrimWhitespace();
44
- }, [basicFunctionalityImpl, editor, trimWhitespace]);
45
- return null;
5
+ export const BasicFunctionalityPlugin = React.forwardRef((props, ref)=>{
6
+ const { 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
+ React.useEffect(()=>{
29
+ basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateContentCallbacks(onContentChange, onCountChanged);
30
+ return ()=>basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateContentCallbacks();
31
+ }, [
32
+ basicFunctionalityImpl,
33
+ editor,
34
+ onContentChange,
35
+ onCountChanged
36
+ ]);
37
+ React.useEffect(()=>{
38
+ if (onPaste) {
39
+ basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activatePasteCallback(onPaste);
40
+ }
41
+ return ()=>basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivatePasteCallback();
42
+ }, [
43
+ basicFunctionalityImpl,
44
+ editor,
45
+ onPaste
46
+ ]);
47
+ React.useEffect(()=>{
48
+ if (trimWhitespace) {
49
+ basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.activateTrimWhitespace();
50
+ }
51
+ return ()=>basicFunctionalityImpl === null || basicFunctionalityImpl === void 0 ? void 0 : basicFunctionalityImpl.deactivateTrimWhitespace();
52
+ }, [
53
+ basicFunctionalityImpl,
54
+ editor,
55
+ trimWhitespace
56
+ ]);
57
+ return null;
46
58
  });
47
- //# sourceMappingURL=BasicFunctionality.js.map
@@ -1,2 +1 @@
1
1
  export { BasicFunctionalityPlugin } from './BasicFunctionality';
2
- //# sourceMappingURL=index.js.map
@@ -3,77 +3,76 @@ 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);
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;
45
71
  }
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,42 +2,41 @@ 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 {
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;
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;
42
42
  };
43
- //# sourceMappingURL=ChatInputEntityPlugin.js.map
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=ChatInputEntityPlugin.types.js.map
1
+ export { };
@@ -1,3 +1,2 @@
1
1
  export { $createChatInputEntityNode, $isChatInputEntityNode, ChatInputEntityNode } from './ChatInputEntity.node';
2
2
  export { ChatInputEntityPlugin } from './ChatInputEntityPlugin';
3
- //# sourceMappingURL=index.js.map
@@ -4,41 +4,47 @@ 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
-
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;
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;
43
50
  }
44
- //# sourceMappingURL=GhostText.js.map