@hh.ru/magritte-ui-chat-bubble 3.0.6 → 3.0.7

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 (51) hide show
  1. package/Call.d.ts +2 -2
  2. package/Call.js +41 -9
  3. package/Call.js.map +1 -1
  4. package/ChatBubble.d.ts +10 -10
  5. package/ChatBubble.js +92 -16
  6. package/ChatBubble.js.map +1 -1
  7. package/ErrorAction.js +8 -9
  8. package/ErrorAction.js.map +1 -1
  9. package/File.d.ts +2 -2
  10. package/File.js +59 -15
  11. package/File.js.map +1 -1
  12. package/Label.js +4 -7
  13. package/Label.js.map +1 -1
  14. package/Media.d.ts +2 -2
  15. package/Media.js +15 -8
  16. package/Media.js.map +1 -1
  17. package/Message.d.ts +2 -2
  18. package/Message.js +11 -9
  19. package/Message.js.map +1 -1
  20. package/Meta.d.ts +1 -1
  21. package/Meta.js +12 -10
  22. package/Meta.js.map +1 -1
  23. package/Reply.js +31 -8
  24. package/Reply.js.map +1 -1
  25. package/Snippet.js +21 -8
  26. package/Snippet.js.map +1 -1
  27. package/Status.js +28 -19
  28. package/Status.js.map +1 -1
  29. package/Tail.js +20 -5
  30. package/Tail.js.map +1 -1
  31. package/chat-bubble-BOBGge0h.js +5 -0
  32. package/chat-bubble-BOBGge0h.js.map +1 -0
  33. package/index.css +114 -114
  34. package/index.d.ts +11 -11
  35. package/index.js +1 -1
  36. package/index.mock.d.ts +10 -10
  37. package/index.mock.js +19 -19
  38. package/index.mock.js.map +1 -1
  39. package/internal/colors.d.ts +1 -1
  40. package/internal/colors.js +36 -37
  41. package/internal/colors.js.map +1 -1
  42. package/internal/errorMenu.js +1 -1
  43. package/internal/errorMenu.js.map +1 -1
  44. package/internal/mode.d.ts +1 -1
  45. package/internal/mode.js +1 -2
  46. package/internal/mode.js.map +1 -1
  47. package/internal/utils.js +10 -10
  48. package/internal/utils.js.map +1 -1
  49. package/package.json +11 -11
  50. package/chat-bubble-C5CrJD5o.js +0 -5
  51. package/chat-bubble-C5CrJD5o.js.map +0 -1
@@ -3,45 +3,44 @@ import { useChatBubbleMode } from './mode.js';
3
3
  import 'react';
4
4
 
5
5
  const COLORS = {
6
- incoming: {
7
- text: 'primary',
8
- secondaryText: 'secondary',
9
- accentText: 'accent',
10
- replyTitle: 'accent',
11
- statusIcon: 'secondary',
12
- button: { mode: 'secondary', style: 'neutral' },
13
- link: { style: 'accent' },
14
- secondaryIcon: 'secondary',
15
- fileIcon: 'constant',
16
- fileIconBackground: 'accent',
17
- },
18
- outgoing: {
19
- text: 'constant',
20
- secondaryText: 'constant',
21
- accentText: 'constant',
22
- replyTitle: 'constant',
23
- statusIcon: 'constant',
24
- button: { mode: 'primary', style: 'accent' },
25
- link: { style: 'constant', mode: 'secondary' },
26
- secondaryIcon: 'constant',
27
- fileIcon: 'accent',
28
- fileIconBackground: 'accent-secondary',
29
- },
30
- bot: {
31
- text: 'primary',
32
- secondaryText: 'secondary',
33
- accentText: 'special',
34
- replyTitle: 'accent',
35
- statusIcon: 'special',
36
- button: { mode: 'secondary', style: 'special' },
37
- link: { style: 'accent' },
38
- secondaryIcon: 'secondary',
39
- fileIcon: 'constant',
40
- fileIconBackground: 'special',
41
- },
6
+ incoming: {
7
+ text: "primary",
8
+ secondaryText: "secondary",
9
+ accentText: "accent",
10
+ replyTitle: "accent",
11
+ statusIcon: "secondary",
12
+ button: { mode: "secondary", style: "neutral" },
13
+ link: { style: "accent" },
14
+ secondaryIcon: "secondary",
15
+ fileIcon: "constant",
16
+ fileIconBackground: "accent"
17
+ },
18
+ outgoing: {
19
+ text: "constant",
20
+ secondaryText: "constant",
21
+ accentText: "constant",
22
+ replyTitle: "constant",
23
+ statusIcon: "constant",
24
+ button: { mode: "primary", style: "accent" },
25
+ link: { style: "constant", mode: "secondary" },
26
+ secondaryIcon: "constant",
27
+ fileIcon: "accent",
28
+ fileIconBackground: "accent-secondary"
29
+ },
30
+ bot: {
31
+ text: "primary",
32
+ secondaryText: "secondary",
33
+ accentText: "special",
34
+ replyTitle: "accent",
35
+ statusIcon: "special",
36
+ button: { mode: "secondary", style: "special" },
37
+ link: { style: "accent" },
38
+ secondaryIcon: "secondary",
39
+ fileIcon: "constant",
40
+ fileIconBackground: "special"
41
+ }
42
42
  };
43
43
  const getColors = (mode) => COLORS[mode];
44
- // Для подкомпонентов, которые сидят под mode провайдером
45
44
  const useChatBubbleColors = () => COLORS[useChatBubbleMode()];
46
45
 
47
46
  export { getColors, useChatBubbleColors };
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sources":["src/internal/colors.ts"],"sourcesContent":["import type { TokenColorBackground } from '@hh.ru/magritte-design-tokens/types';\nimport type { ButtonProps } from '@hh.ru/magritte-ui-button';\nimport { useChatBubbleMode } from '@hh.ru/magritte-ui-chat-bubble/internal/mode';\nimport type { ChatBubbleMode } from '@hh.ru/magritte-ui-chat-bubble/types';\nimport type { IconColor } from '@hh.ru/magritte-ui-icon';\nimport type { LinkProps } from '@hh.ru/magritte-ui-link';\nimport type { TextStyle } from '@hh.ru/magritte-ui-typography';\n\nexport interface ChatBubbleColors {\n /** Основной текст сообщения, названия файла, текст сниппета */\n text: TextStyle;\n /** Второстепенный текст: время, размер файла */\n secondaryText: TextStyle;\n /** Акцентный текст: имя отправителя */\n accentText: TextStyle;\n /** Автор цитируемого сообщения (у бота акцентный, потому отдельно от accentText) */\n replyTitle: TextStyle;\n /** Иконка статуса, лежит на фоне баббла */\n statusIcon: IconColor;\n /** Кнопки под бабблом */\n button: Pick<ButtonProps, 'mode' | 'style'>;\n /** Ссылка-действие: «Открыть», «Загрузить» */\n link: Pick<LinkProps, 'style' | 'mode'>;\n /** Иконка рядом со второстепенным текстом: лоадер загрузки файла */\n secondaryIcon: IconColor;\n /** Иконка файла */\n fileIcon: IconColor;\n /** Подложка под иконкой файла */\n fileIconBackground: TokenColorBackground;\n}\n\nconst COLORS: Record<ChatBubbleMode, ChatBubbleColors> = {\n incoming: {\n text: 'primary',\n secondaryText: 'secondary',\n accentText: 'accent',\n replyTitle: 'accent',\n statusIcon: 'secondary',\n button: { mode: 'secondary', style: 'neutral' },\n link: { style: 'accent' },\n secondaryIcon: 'secondary',\n fileIcon: 'constant',\n fileIconBackground: 'accent',\n },\n outgoing: {\n text: 'constant',\n secondaryText: 'constant',\n accentText: 'constant',\n replyTitle: 'constant',\n statusIcon: 'constant',\n button: { mode: 'primary', style: 'accent' },\n link: { style: 'constant', mode: 'secondary' },\n secondaryIcon: 'constant',\n fileIcon: 'accent',\n fileIconBackground: 'accent-secondary',\n },\n bot: {\n text: 'primary',\n secondaryText: 'secondary',\n accentText: 'special',\n replyTitle: 'accent',\n statusIcon: 'special',\n button: { mode: 'secondary', style: 'special' },\n link: { style: 'accent' },\n secondaryIcon: 'secondary',\n fileIcon: 'constant',\n fileIconBackground: 'special',\n },\n};\n\nexport const getColors = (mode: ChatBubbleMode): ChatBubbleColors => COLORS[mode];\n\n// Для подкомпонентов, которые сидят под mode провайдером\nexport const useChatBubbleColors = (): ChatBubbleColors => COLORS[useChatBubbleMode()];\n"],"names":[],"mappings":";;;AA+BA,MAAM,MAAM,GAA6C;AACrD,IAAA,QAAQ,EAAE;AACN,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,aAAa,EAAE,WAAW;AAC1B,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;AAC/C,QAAA,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;AACzB,QAAA,aAAa,EAAE,WAAW;AAC1B,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,kBAAkB,EAAE,QAAQ;AAC/B,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE,UAAU;QACtB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;AAC9C,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,kBAAkB,EAAE,kBAAkB;AACzC,KAAA;AACD,IAAA,GAAG,EAAE;AACD,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,aAAa,EAAE,WAAW;AAC1B,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;AAC/C,QAAA,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;AACzB,QAAA,aAAa,EAAE,WAAW;AAC1B,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,kBAAkB,EAAE,SAAS;AAChC,KAAA;CACJ,CAAC;AAEK,MAAM,SAAS,GAAG,CAAC,IAAoB,KAAuB,MAAM,CAAC,IAAI,EAAE;AAElF;AACO,MAAM,mBAAmB,GAAG,MAAwB,MAAM,CAAC,iBAAiB,EAAE;;;;"}
1
+ {"version":3,"file":"colors.js","sources":["src/internal/colors.ts"],"sourcesContent":["import type { TokenColorBackground } from '@hh.ru/magritte-design-tokens/types';\nimport type { ButtonProps } from '@hh.ru/magritte-ui-button';\nimport { useChatBubbleMode } from '@hh.ru/magritte-ui-chat-bubble/internal/mode';\nimport type { ChatBubbleMode } from '@hh.ru/magritte-ui-chat-bubble/types';\nimport type { IconColor } from '@hh.ru/magritte-ui-icon';\nimport type { LinkProps } from '@hh.ru/magritte-ui-link';\nimport type { TextStyle } from '@hh.ru/magritte-ui-typography';\n\nexport interface ChatBubbleColors {\n /** Основной текст сообщения, названия файла, текст сниппета */\n text: TextStyle;\n /** Второстепенный текст: время, размер файла */\n secondaryText: TextStyle;\n /** Акцентный текст: имя отправителя */\n accentText: TextStyle;\n /** Автор цитируемого сообщения (у бота акцентный, потому отдельно от accentText) */\n replyTitle: TextStyle;\n /** Иконка статуса, лежит на фоне баббла */\n statusIcon: IconColor;\n /** Кнопки под бабблом */\n button: Pick<ButtonProps, 'mode' | 'style'>;\n /** Ссылка-действие: «Открыть», «Загрузить» */\n link: Pick<LinkProps, 'style' | 'mode'>;\n /** Иконка рядом со второстепенным текстом: лоадер загрузки файла */\n secondaryIcon: IconColor;\n /** Иконка файла */\n fileIcon: IconColor;\n /** Подложка под иконкой файла */\n fileIconBackground: TokenColorBackground;\n}\n\nconst COLORS: Record<ChatBubbleMode, ChatBubbleColors> = {\n incoming: {\n text: 'primary',\n secondaryText: 'secondary',\n accentText: 'accent',\n replyTitle: 'accent',\n statusIcon: 'secondary',\n button: { mode: 'secondary', style: 'neutral' },\n link: { style: 'accent' },\n secondaryIcon: 'secondary',\n fileIcon: 'constant',\n fileIconBackground: 'accent',\n },\n outgoing: {\n text: 'constant',\n secondaryText: 'constant',\n accentText: 'constant',\n replyTitle: 'constant',\n statusIcon: 'constant',\n button: { mode: 'primary', style: 'accent' },\n link: { style: 'constant', mode: 'secondary' },\n secondaryIcon: 'constant',\n fileIcon: 'accent',\n fileIconBackground: 'accent-secondary',\n },\n bot: {\n text: 'primary',\n secondaryText: 'secondary',\n accentText: 'special',\n replyTitle: 'accent',\n statusIcon: 'special',\n button: { mode: 'secondary', style: 'special' },\n link: { style: 'accent' },\n secondaryIcon: 'secondary',\n fileIcon: 'constant',\n fileIconBackground: 'special',\n },\n};\n\nexport const getColors = (mode: ChatBubbleMode): ChatBubbleColors => COLORS[mode];\n\n// Для подкомпонентов, которые сидят под mode провайдером\nexport const useChatBubbleColors = (): ChatBubbleColors => COLORS[useChatBubbleMode()];\n"],"names":[],"mappings":";;;AA+BA,MAAM,MAAmD,GAAA;AAAA,EACrD,QAAU,EAAA;AAAA,IACN,IAAM,EAAA,SAAA;AAAA,IACN,aAAe,EAAA,WAAA;AAAA,IACf,UAAY,EAAA,QAAA;AAAA,IACZ,UAAY,EAAA,QAAA;AAAA,IACZ,UAAY,EAAA,WAAA;AAAA,IACZ,MAAQ,EAAA,EAAE,IAAM,EAAA,WAAA,EAAa,OAAO,SAAU,EAAA;AAAA,IAC9C,IAAA,EAAM,EAAE,KAAA,EAAO,QAAS,EAAA;AAAA,IACxB,aAAe,EAAA,WAAA;AAAA,IACf,QAAU,EAAA,UAAA;AAAA,IACV,kBAAoB,EAAA,QAAA;AAAA,GACxB;AAAA,EACA,QAAU,EAAA;AAAA,IACN,IAAM,EAAA,UAAA;AAAA,IACN,aAAe,EAAA,UAAA;AAAA,IACf,UAAY,EAAA,UAAA;AAAA,IACZ,UAAY,EAAA,UAAA;AAAA,IACZ,UAAY,EAAA,UAAA;AAAA,IACZ,MAAQ,EAAA,EAAE,IAAM,EAAA,SAAA,EAAW,OAAO,QAAS,EAAA;AAAA,IAC3C,IAAM,EAAA,EAAE,KAAO,EAAA,UAAA,EAAY,MAAM,WAAY,EAAA;AAAA,IAC7C,aAAe,EAAA,UAAA;AAAA,IACf,QAAU,EAAA,QAAA;AAAA,IACV,kBAAoB,EAAA,kBAAA;AAAA,GACxB;AAAA,EACA,GAAK,EAAA;AAAA,IACD,IAAM,EAAA,SAAA;AAAA,IACN,aAAe,EAAA,WAAA;AAAA,IACf,UAAY,EAAA,SAAA;AAAA,IACZ,UAAY,EAAA,QAAA;AAAA,IACZ,UAAY,EAAA,SAAA;AAAA,IACZ,MAAQ,EAAA,EAAE,IAAM,EAAA,WAAA,EAAa,OAAO,SAAU,EAAA;AAAA,IAC9C,IAAA,EAAM,EAAE,KAAA,EAAO,QAAS,EAAA;AAAA,IACxB,aAAe,EAAA,WAAA;AAAA,IACf,QAAU,EAAA,UAAA;AAAA,IACV,kBAAoB,EAAA,SAAA;AAAA,GACxB;AACJ,CAAA,CAAA;AAEO,MAAM,SAAY,GAAA,CAAC,IAA2C,KAAA,MAAA,CAAO,IAAI,EAAA;AAGzE,MAAM,mBAAsB,GAAA,MAAwB,MAAO,CAAA,iBAAA,EAAmB;;;;"}
@@ -1,7 +1,7 @@
1
1
  import './../index.css';
2
2
  import { createContext, useContext } from 'react';
3
3
 
4
- const noop = () => undefined;
4
+ const noop = () => void 0;
5
5
  const ChatBubbleErrorMenuContext = createContext(noop);
6
6
  const ChatBubbleErrorMenuProvider = ChatBubbleErrorMenuContext.Provider;
7
7
  const useChatBubbleErrorMenuClose = () => useContext(ChatBubbleErrorMenuContext);
@@ -1 +1 @@
1
- {"version":3,"file":"errorMenu.js","sources":["src/internal/errorMenu.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nconst noop = () => undefined;\n\nconst ChatBubbleErrorMenuContext = createContext<VoidFunction>(noop);\n\nexport const ChatBubbleErrorMenuProvider = ChatBubbleErrorMenuContext.Provider;\n\nexport const useChatBubbleErrorMenuClose = (): VoidFunction => useContext(ChatBubbleErrorMenuContext);\n"],"names":[],"mappings":";;AAEA,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC;AAE7B,MAAM,0BAA0B,GAAG,aAAa,CAAe,IAAI,CAAC,CAAC;AAExD,MAAA,2BAA2B,GAAG,0BAA0B,CAAC,SAAS;AAElE,MAAA,2BAA2B,GAAG,MAAoB,UAAU,CAAC,0BAA0B;;;;"}
1
+ {"version":3,"file":"errorMenu.js","sources":["src/internal/errorMenu.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nconst noop = () => undefined;\n\nconst ChatBubbleErrorMenuContext = createContext<VoidFunction>(noop);\n\nexport const ChatBubbleErrorMenuProvider = ChatBubbleErrorMenuContext.Provider;\n\nexport const useChatBubbleErrorMenuClose = (): VoidFunction => useContext(ChatBubbleErrorMenuContext);\n"],"names":[],"mappings":";;AAEA,MAAM,OAAO,MAAM,KAAA,CAAA,CAAA;AAEnB,MAAM,0BAAA,GAA6B,cAA4B,IAAI,CAAA,CAAA;AAE5D,MAAM,8BAA8B,0BAA2B,CAAA,SAAA;AAEzD,MAAA,2BAAA,GAA8B,MAAoB,UAAA,CAAW,0BAA0B;;;;"}
@@ -1,4 +1,4 @@
1
- import type { ChatBubbleMode } from '@hh.ru/magritte-ui-chat-bubble/types';
1
+ import type { ChatBubbleMode } from '../types';
2
2
  /** Прокидывает режим баббла в подкомпоненты: от него зависят цвета текста и иконок. */
3
3
  export declare const ChatBubbleModeProvider: import("react").Provider<ChatBubbleMode>;
4
4
  export declare const useChatBubbleMode: () => ChatBubbleMode;
package/internal/mode.js CHANGED
@@ -1,8 +1,7 @@
1
1
  import './../index.css';
2
2
  import { createContext, useContext } from 'react';
3
3
 
4
- const ChatBubbleModeContext = createContext('incoming');
5
- /** Прокидывает режим баббла в подкомпоненты: от него зависят цвета текста и иконок. */
4
+ const ChatBubbleModeContext = createContext("incoming");
6
5
  const ChatBubbleModeProvider = ChatBubbleModeContext.Provider;
7
6
  const useChatBubbleMode = () => useContext(ChatBubbleModeContext);
8
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"mode.js","sources":["src/internal/mode.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { ChatBubbleMode } from '@hh.ru/magritte-ui-chat-bubble/types';\n\nconst ChatBubbleModeContext = createContext<ChatBubbleMode>('incoming');\n\n/** Прокидывает режим баббла в подкомпоненты: от него зависят цвета текста и иконок. */\nexport const ChatBubbleModeProvider = ChatBubbleModeContext.Provider;\n\nexport const useChatBubbleMode = (): ChatBubbleMode => useContext(ChatBubbleModeContext);\n"],"names":[],"mappings":";;AAIA,MAAM,qBAAqB,GAAG,aAAa,CAAiB,UAAU,CAAC,CAAC;AAExE;AACa,MAAA,sBAAsB,GAAG,qBAAqB,CAAC,SAAS;AAExD,MAAA,iBAAiB,GAAG,MAAsB,UAAU,CAAC,qBAAqB;;;;"}
1
+ {"version":3,"file":"mode.js","sources":["src/internal/mode.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { ChatBubbleMode } from '@hh.ru/magritte-ui-chat-bubble/types';\n\nconst ChatBubbleModeContext = createContext<ChatBubbleMode>('incoming');\n\n/** Прокидывает режим баббла в подкомпоненты: от него зависят цвета текста и иконок. */\nexport const ChatBubbleModeProvider = ChatBubbleModeContext.Provider;\n\nexport const useChatBubbleMode = (): ChatBubbleMode => useContext(ChatBubbleModeContext);\n"],"names":[],"mappings":";;AAIA,MAAM,qBAAA,GAAwB,cAA8B,UAAU,CAAA,CAAA;AAG/D,MAAM,yBAAyB,qBAAsB,CAAA,SAAA;AAE/C,MAAA,iBAAA,GAAoB,MAAsB,UAAA,CAAW,qBAAqB;;;;"}
package/internal/utils.js CHANGED
@@ -2,16 +2,16 @@ import './../index.css';
2
2
  import { isValidElement, Children, Fragment, cloneElement } from 'react';
3
3
 
4
4
  const markMetaHost = (component) => Object.assign(component, { hostsMeta: true });
5
- const isMetaHost = (node) => isValidElement(node) && typeof node.type === 'object' && 'hostsMeta' in node.type;
6
- const flattenFragments = (children, keyPrefix = '') => Children.toArray(children).flatMap((child) => {
7
- if (!isValidElement(child)) {
8
- return child;
9
- }
10
- const key = `${keyPrefix}${String(child.key)}`;
11
- if (child.type === Fragment) {
12
- return flattenFragments(child.props.children, key);
13
- }
14
- return keyPrefix ? cloneElement(child, { key }) : child;
5
+ const isMetaHost = (node) => isValidElement(node) && typeof node.type === "object" && "hostsMeta" in node.type;
6
+ const flattenFragments = (children, keyPrefix = "") => Children.toArray(children).flatMap((child) => {
7
+ if (!isValidElement(child)) {
8
+ return child;
9
+ }
10
+ const key = `${keyPrefix}${String(child.key)}`;
11
+ if (child.type === Fragment) {
12
+ return flattenFragments(child.props.children, key);
13
+ }
14
+ return keyPrefix ? cloneElement(child, { key }) : child;
15
15
  });
16
16
 
17
17
  export { flattenFragments, isMetaHost, markMetaHost };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["src/internal/utils.ts"],"sourcesContent":["import { Children, Fragment, cloneElement, isValidElement, type ReactElement, type ReactNode } from 'react';\n\n/** Помечает подкомпонент как умеющий принять слот времени и статуса */\nexport interface ChatBubbleMetaHostProps {\n meta?: ReactNode;\n}\n\nexport interface MetaHostComponent {\n hostsMeta: true;\n}\n\nexport const markMetaHost = <T extends object>(component: T): T & MetaHostComponent =>\n Object.assign(component, { hostsMeta: true } as const);\n\nexport const isMetaHost = (node: ReactNode): node is ReactElement<ChatBubbleMetaHostProps> =>\n isValidElement(node) && typeof node.type === 'object' && 'hostsMeta' in (node.type as object);\n\nexport const flattenFragments = (children: ReactNode, keyPrefix = ''): ReactNode[] =>\n Children.toArray(children).flatMap((child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const key = `${keyPrefix}${String(child.key)}`;\n\n if (child.type === Fragment) {\n return flattenFragments((child.props as { children?: ReactNode }).children, key);\n }\n\n return keyPrefix ? cloneElement(child, { key }) : child;\n });\n"],"names":[],"mappings":";;MAWa,YAAY,GAAG,CAAmB,SAAY,KACvD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAW,EAAE;AAE9C,MAAA,UAAU,GAAG,CAAC,IAAe,KACtC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,IAAK,IAAI,CAAC,KAAgB;AAErF,MAAA,gBAAgB,GAAG,CAAC,QAAmB,EAAE,SAAS,GAAG,EAAE,KAChE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACzC,IAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,MAAM,GAAG,GAAG,CAAG,EAAA,SAAS,CAAG,EAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AAE/C,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QACzB,OAAO,gBAAgB,CAAE,KAAK,CAAC,KAAkC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KACpF;AAED,IAAA,OAAO,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;AAC5D,CAAC;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["src/internal/utils.ts"],"sourcesContent":["import { Children, Fragment, cloneElement, isValidElement, type ReactElement, type ReactNode } from 'react';\n\n/** Помечает подкомпонент как умеющий принять слот времени и статуса */\nexport interface ChatBubbleMetaHostProps {\n meta?: ReactNode;\n}\n\nexport interface MetaHostComponent {\n hostsMeta: true;\n}\n\nexport const markMetaHost = <T extends object>(component: T): T & MetaHostComponent =>\n Object.assign(component, { hostsMeta: true } as const);\n\nexport const isMetaHost = (node: ReactNode): node is ReactElement<ChatBubbleMetaHostProps> =>\n isValidElement(node) && typeof node.type === 'object' && 'hostsMeta' in (node.type as object);\n\nexport const flattenFragments = (children: ReactNode, keyPrefix = ''): ReactNode[] =>\n Children.toArray(children).flatMap((child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const key = `${keyPrefix}${String(child.key)}`;\n\n if (child.type === Fragment) {\n return flattenFragments((child.props as { children?: ReactNode }).children, key);\n }\n\n return keyPrefix ? cloneElement(child, { key }) : child;\n });\n"],"names":[],"mappings":";;AAWa,MAAA,YAAA,GAAe,CAAmB,SAC3C,KAAA,MAAA,CAAO,OAAO,SAAW,EAAA,EAAE,SAAW,EAAA,IAAA,EAAe,EAAA;AAE5C,MAAA,UAAA,GAAa,CAAC,IAAA,KACvB,cAAe,CAAA,IAAI,CAAK,IAAA,OAAO,IAAK,CAAA,IAAA,KAAS,QAAY,IAAA,WAAA,IAAgB,IAAK,CAAA,KAAA;AAErE,MAAA,gBAAA,GAAmB,CAAC,QAAA,EAAqB,SAAY,GAAA,EAAA,KAC9D,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAE,OAAQ,CAAA,CAAC,KAAU,KAAA;AAC1C,EAAI,IAAA,CAAC,cAAe,CAAA,KAAK,CAAG,EAAA;AACxB,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAEA,EAAA,MAAM,MAAM,CAAG,EAAA,SAAS,GAAG,MAAO,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA,CAAA;AAE5C,EAAI,IAAA,KAAA,CAAM,SAAS,QAAU,EAAA;AACzB,IAAA,OAAO,gBAAkB,CAAA,KAAA,CAAM,KAAmC,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;AAAA,GACnF;AAEA,EAAA,OAAO,YAAY,YAAa,CAAA,KAAA,EAAO,EAAE,GAAA,EAAK,CAAI,GAAA,KAAA,CAAA;AACtD,CAAC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-ui-chat-bubble",
3
- "version": "3.0.6",
3
+ "version": "3.0.7",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -22,17 +22,17 @@
22
22
  "@hh.ru/magritte-common-mouse": "1.2.1",
23
23
  "@hh.ru/magritte-common-use-multiple-refs": "1.1.12",
24
24
  "@hh.ru/magritte-common-use-translation": "3.6.1",
25
- "@hh.ru/magritte-design-tokens": "26.0.0",
25
+ "@hh.ru/magritte-design-tokens": "26.0.1",
26
26
  "@hh.ru/magritte-ui-breakpoint": "6.1.2",
27
- "@hh.ru/magritte-ui-button": "7.3.6",
28
- "@hh.ru/magritte-ui-cell": "7.3.2",
29
- "@hh.ru/magritte-ui-icon": "15.1.4",
30
- "@hh.ru/magritte-ui-link": "7.2.5",
31
- "@hh.ru/magritte-ui-loader": "4.1.5",
32
- "@hh.ru/magritte-ui-menu": "1.0.47",
27
+ "@hh.ru/magritte-ui-button": "7.3.7",
28
+ "@hh.ru/magritte-ui-cell": "7.3.3",
29
+ "@hh.ru/magritte-ui-icon": "15.1.5",
30
+ "@hh.ru/magritte-ui-link": "7.2.6",
31
+ "@hh.ru/magritte-ui-loader": "4.1.6",
32
+ "@hh.ru/magritte-ui-menu": "1.0.48",
33
33
  "@hh.ru/magritte-ui-mock-component": "1.1.8",
34
- "@hh.ru/magritte-ui-tooltip": "11.0.50",
35
- "@hh.ru/magritte-ui-typography": "5.3.15"
34
+ "@hh.ru/magritte-ui-tooltip": "11.0.51",
35
+ "@hh.ru/magritte-ui-typography": "5.3.16"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "classnames": ">=2.3.2",
@@ -41,5 +41,5 @@
41
41
  "publishConfig": {
42
42
  "access": "public"
43
43
  },
44
- "gitHead": "b0ff5da48fb29d516c8289082560ee1882d16986"
44
+ "gitHead": "f6539d7a0e7cd42dd851458db1de04a748bbee03"
45
45
  }
@@ -1,5 +0,0 @@
1
- import './index.css';
2
- var styles = {"chat-bubble":"magritte-chat-bubble___ds9CP_3-0-6","chatBubble":"magritte-chat-bubble___ds9CP_3-0-6","outgoing":"magritte-outgoing___3n00o_3-0-6","bot":"magritte-bot___Z6vZA_3-0-6","row":"magritte-row___mQNnt_3-0-6","bubble":"magritte-bubble___NVuDI_3-0-6","with-tail":"magritte-with-tail___IdixJ_3-0-6","withTail":"magritte-with-tail___IdixJ_3-0-6","tail":"magritte-tail___E2hdk_3-0-6","tail-outgoing":"magritte-tail-outgoing___Pn3MI_3-0-6","tailOutgoing":"magritte-tail-outgoing___Pn3MI_3-0-6","buttons":"magritte-buttons___yQqBi_3-0-6","aside":"magritte-aside___bTex-_3-0-6","aside-revealed":"magritte-aside-revealed___CRBl7_3-0-6","asideRevealed":"magritte-aside-revealed___CRBl7_3-0-6","error-text":"magritte-error-text___1ZxWY_3-0-6","errorText":"magritte-error-text___1ZxWY_3-0-6","file":"magritte-file___k2IKy_3-0-6","file-preview":"magritte-file-preview___eJKu8_3-0-6","filePreview":"magritte-file-preview___eJKu8_3-0-6","media":"magritte-media___9jH2k_3-0-6","media-blur":"magritte-media-blur___TbiMa_3-0-6","mediaBlur":"magritte-media-blur___TbiMa_3-0-6","media-image":"magritte-media-image___G-FkF_3-0-6","mediaImage":"magritte-media-image___G-FkF_3-0-6","media-content":"magritte-media-content___n3XbD_3-0-6","mediaContent":"magritte-media-content___n3XbD_3-0-6","media-format":"magritte-media-format___AdfCK_3-0-6","mediaFormat":"magritte-media-format___AdfCK_3-0-6","media-meta":"magritte-media-meta___oSxxr_3-0-6","mediaMeta":"magritte-media-meta___oSxxr_3-0-6","reply":"magritte-reply___-QCK7_3-0-6","reply-preview":"magritte-reply-preview___qvlNT_3-0-6","replyPreview":"magritte-reply-preview___qvlNT_3-0-6","reply-body":"magritte-reply-body___f2xx7_3-0-6","replyBody":"magritte-reply-body___f2xx7_3-0-6","snippet":"magritte-snippet___8k9xb_3-0-6","meta":"magritte-meta___1qhjm_3-0-6","edited":"magritte-edited___m-zmB_3-0-6","status":"magritte-status___dHzCt_3-0-6","message-title":"magritte-message-title___dgBFk_3-0-6","messageTitle":"magritte-message-title___dgBFk_3-0-6","label":"magritte-label___i0Wyt_3-0-6","message":"magritte-message___7TEpw_3-0-6"};
3
-
4
- export { styles as s };
5
- //# sourceMappingURL=chat-bubble-C5CrJD5o.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-bubble-C5CrJD5o.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}