@scbt-ecom/ui 0.107.0 → 0.108.0

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 (62) hide show
  1. package/dist/lib/shared/ui/dropdownList/DropdownList.js +1 -1
  2. package/dist/lib/shared/ui/dropdownList/DropdownList.js.map +1 -1
  3. package/dist/lib/shared/ui/formElements/controlled/editor/model/config.js +1 -1
  4. package/dist/lib/shared/ui/formElements/controlled/editor/model/config.js.map +1 -1
  5. package/dist/lib/shared/ui/formElements/controlled/editor/model/extensions.js +2 -0
  6. package/dist/lib/shared/ui/formElements/controlled/editor/model/extensions.js.map +1 -0
  7. package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js +1 -1
  8. package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js.map +1 -1
  9. package/dist/lib/shared/ui/formElements/controlled/editor/model/index.js +2 -0
  10. package/dist/lib/shared/ui/formElements/controlled/editor/model/index.js.map +1 -0
  11. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js +1 -1
  12. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js.map +1 -1
  13. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Toolbar.js +1 -1
  14. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Toolbar.js.map +1 -1
  15. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetColor.js +1 -1
  16. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetColor.js.map +1 -1
  17. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetCoreCommands.js +1 -1
  18. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetCoreCommands.js.map +1 -1
  19. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetFontSize.js +2 -0
  20. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetFontSize.js.map +1 -0
  21. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetHeadings.js +1 -1
  22. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetHeadings.js.map +1 -1
  23. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/index.js +1 -1
  24. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.js.map +1 -1
  25. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js.map +1 -1
  26. package/dist/lib/shared/ui/icon/allowedIcons.js +1 -1
  27. package/dist/lib/shared/ui/icon/allowedIcons.js.map +1 -1
  28. package/dist/lib/shared/ui/icon/iconsMap.js +1 -1
  29. package/dist/lib/shared/ui/icon/iconsMap.js.map +1 -1
  30. package/dist/lib/shared/ui/table/Table.js +1 -1
  31. package/dist/lib/shared/ui/table/Table.js.map +1 -1
  32. package/dist/lib/widgets/model/helpers.js +2 -2
  33. package/dist/lib/widgets/model/helpers.js.map +1 -1
  34. package/dist/lib/widgets/table/Table.js +1 -1
  35. package/dist/lib/widgets/table/Table.js.map +1 -1
  36. package/dist/lib/widgets/table/model/index.js +2 -0
  37. package/dist/lib/widgets/table/model/index.js.map +1 -0
  38. package/dist/lib/widgets/table/model/types.js +2 -0
  39. package/dist/lib/widgets/table/model/types.js.map +1 -0
  40. package/dist/lib/widgets/table/model/utils.js +2 -0
  41. package/dist/lib/widgets/table/model/utils.js.map +1 -0
  42. package/dist/static/editor/fonts.svg.js +2 -0
  43. package/dist/static/editor/fonts.svg.js.map +1 -0
  44. package/dist/static/static/editor/fonts.svg +1 -0
  45. package/dist/stats.html +1 -1
  46. package/dist/types/lib/shared/ui/formElements/controlled/editor/model/config.d.ts +1 -1
  47. package/dist/types/lib/shared/ui/formElements/controlled/editor/model/extensions.d.ts +10 -0
  48. package/dist/types/lib/shared/ui/formElements/controlled/editor/model/helper.d.ts +6 -2
  49. package/dist/types/lib/shared/ui/formElements/controlled/editor/model/index.d.ts +4 -0
  50. package/dist/types/lib/shared/ui/formElements/controlled/editor/model/types.d.ts +1 -5
  51. package/dist/types/lib/shared/ui/formElements/controlled/editor/ui/Editor.d.ts +0 -3
  52. package/dist/types/lib/shared/ui/formElements/controlled/editor/ui/commands/SetFontSize.d.ts +5 -0
  53. package/dist/types/lib/shared/ui/formElements/controlled/editor/ui/commands/index.d.ts +1 -0
  54. package/dist/types/lib/shared/ui/icon/allowedIcons.d.ts +2 -2
  55. package/dist/types/lib/shared/ui/icon/iconsMap.d.ts +6 -0
  56. package/dist/types/lib/shared/ui/table/Table.d.ts +1 -1
  57. package/dist/types/lib/widgets/table/Table.d.ts +2 -21
  58. package/dist/types/lib/widgets/table/index.d.ts +1 -0
  59. package/dist/types/lib/widgets/table/model/index.d.ts +2 -0
  60. package/dist/types/lib/widgets/table/model/types.d.ts +35 -0
  61. package/dist/types/lib/widgets/table/model/utils.d.ts +8 -0
  62. package/package.json +6 -6
@@ -1,2 +1,2 @@
1
- import{jsx as u}from"react/jsx-runtime";import{useRef as _}from"react";import{useKeyboardNavigation as a}from"./hooks/useKeyboardNavigation.js";import{isOptionActive as s}from"./model/utils.js";import{DropdownItem as I}from"./ui/dropdownItem/DropdownItem.js";import{EmptyList as L}from"./ui/Empty.js";import{useClickOutside as R}from"../../hooks/useClickOutside.js";import{cn as g}from"../../utils/cn.js";const F=({options:t,multiple:i,onPick:r,value:p,className:c,displayValue:h,classes:o,target:m,empty:l="Список пуст",...x})=>{const w=_(null),{refs:d,focusedIndex:b,setFocusedIndex:f}=a({options:t,multiple:i,onPick:r,value:p}),v=e=>{r==null||r(e),m&&m.current&&m.current.focus()};return R(w,()=>f(-1)),u("ul",{...x,ref:d.setRoot(),className:g("customScrollbar-y mt-1 max-h-[264px] w-full overflow-y-auto scroll-smooth rounded-md bg-color-white p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]",o==null?void 0:o.root,c),children:t.length>0?t.map((e,n)=>{const y=s(e,p);return u(I,{ref:d.setReference,item:e,active:y,focused:b===n,multiple:i,onPick:v,displayValue:h,onMouseEnter:()=>f(n),onMouseLeave:()=>f(-1),classes:o==null?void 0:o.item},n)}):u(L,{children:l})})};export{F as DropdownList};
1
+ import{jsx as u}from"react/jsx-runtime";import{useRef as y}from"react";import{useKeyboardNavigation as _}from"./hooks/useKeyboardNavigation.js";import{isOptionActive as a}from"./model/utils.js";import{DropdownItem as g}from"./ui/dropdownItem/DropdownItem.js";import{EmptyList as I}from"./ui/Empty.js";import{useClickOutside as L}from"../../hooks/useClickOutside.js";import{cn as R}from"../../utils/cn.js";const F=({options:t,multiple:i,onPick:r,value:p,className:c,displayValue:l,classes:o,target:m,empty:h="Список пуст",...x})=>{const s=y(null),{refs:d,focusedIndex:w,setFocusedIndex:f}=_({options:t,multiple:i,onPick:r,value:p});console.log("huesos");const b=e=>{r==null||r(e),m&&m.current&&m.current.focus()};return L(s,()=>f(-1)),u("ul",{...x,ref:d.setRoot(),className:R("customScrollbar-y mt-1 max-h-[264px] w-full overflow-y-auto scroll-smooth rounded-md bg-color-white p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]",o==null?void 0:o.root,c),children:t.length>0?t.map((e,n)=>{const v=a(e,p);return u(g,{ref:d.setReference,item:e,active:v,focused:w===n,multiple:i,onPick:b,displayValue:l,onMouseEnter:()=>f(n),onMouseLeave:()=>f(-1),classes:o==null?void 0:o.item},n)}):u(I,{children:h})})};export{F as DropdownList};
2
2
  //# sourceMappingURL=DropdownList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownList.js","sources":["../../../../../lib/shared/ui/dropdownList/DropdownList.tsx"],"sourcesContent":["import { useRef } from 'react'\nimport { useKeyboardNavigation } from './hooks'\nimport { isOptionActive } from './model'\nimport { DropdownItem, type DropdownItemClasses, type DropdownItemOption, EmptyList } from './ui'\nimport { useClickOutside } from '$/shared/hooks'\nimport { cn } from '$/shared/utils'\n\nexport type DropdownListClasses = {\n root?: string\n item?: DropdownItemClasses\n}\n\nexport interface DropdownListProps<Multi extends boolean = false> extends React.HTMLAttributes<HTMLUListElement> {\n options: DropdownItemOption[]\n /**\n * Значения выбранные по умолчанию\n */\n value?: Multi extends true ? DropdownItemOption[] : DropdownItemOption | null\n /**\n * Функция при выборе значения из списка\n * @param item\n */\n onPick?: (item: DropdownItemOption) => void\n /**\n * Поддержка множественного выбора\n */\n multiple?: Multi\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: DropdownItemOption) => string\n /**\n * Дополнительные стили\n */\n classes?: DropdownListClasses\n /**\n * Целевая нода, с которой будет взаимодействовать список\n */\n target?: React.RefObject<HTMLElement>\n /**\n * Отображаемое содержимое при пустом списке\n */\n empty?: React.ReactNode\n}\n\nexport const DropdownList = <Multi extends boolean>({\n options,\n multiple,\n onPick,\n value,\n className,\n displayValue,\n classes,\n target,\n empty = 'Список пуст',\n ...props\n}: DropdownListProps<Multi>) => {\n const ref = useRef<HTMLUListElement>(null)\n\n const { refs, focusedIndex, setFocusedIndex } = useKeyboardNavigation<HTMLUListElement, HTMLLIElement, Multi>({\n options,\n multiple,\n onPick,\n value\n })\n\n const elementPickHandler = (item: DropdownItemOption) => {\n onPick?.(item)\n\n if (target && target.current) {\n target.current.focus()\n }\n }\n\n useClickOutside(ref, () => setFocusedIndex(-1))\n\n return (\n <ul\n {...props}\n ref={refs.setRoot()}\n className={cn(\n 'customScrollbar-y mt-1 max-h-[264px] w-full overflow-y-auto scroll-smooth rounded-md bg-color-white p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]',\n classes?.root,\n className\n )}\n >\n {options.length > 0 ? (\n options.map((option, index) => {\n const active = isOptionActive(option, value)\n\n return (\n <DropdownItem\n ref={refs.setReference}\n key={index}\n item={option}\n active={active}\n focused={focusedIndex === index}\n multiple={multiple}\n onPick={elementPickHandler}\n displayValue={displayValue}\n onMouseEnter={() => setFocusedIndex(index)}\n onMouseLeave={() => setFocusedIndex(-1)}\n classes={classes?.item}\n />\n )\n })\n ) : (\n <EmptyList>{empty}</EmptyList>\n )}\n </ul>\n )\n}\n"],"names":["DropdownList","options","multiple","onPick","value","className","displayValue","classes","target","empty","props","ref","useRef","refs","focusedIndex","setFocusedIndex","useKeyboardNavigation","elementPickHandler","item","useClickOutside","jsx","cn","option","index","active","isOptionActive","DropdownItem","EmptyList"],"mappings":"qZA6CO,MAAMA,EAAe,CAAwB,CAClD,QAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EACA,UAAAC,EACA,aAAAC,EACA,QAAAC,EACA,OAAAC,EACA,MAAAC,EAAQ,cACR,GAAGC,CACL,IAAgC,CAC9B,MAAMC,EAAMC,EAAyB,IAAI,EAEnC,CAAE,KAAAC,EAAM,aAAAC,EAAc,gBAAAC,CAAA,EAAoBC,EAA8D,CAC5G,QAAAf,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,CAAA,CACD,EAEKa,EAAsBC,GAA6B,CACvDf,GAAA,MAAAA,EAASe,GAELV,GAAUA,EAAO,SACnBA,EAAO,QAAQ,MAAA,CAEnB,EAEA,OAAAW,EAAgBR,EAAK,IAAMI,EAAgB,EAAE,CAAC,EAG5CK,EAAC,KAAA,CACE,GAAGV,EACJ,IAAKG,EAAK,QAAA,EACV,UAAWQ,EACT,sJACAd,GAAA,YAAAA,EAAS,KACTF,CAAA,EAGD,WAAQ,OAAS,EAChBJ,EAAQ,IAAI,CAACqB,EAAQC,IAAU,CAC7B,MAAMC,EAASC,EAAeH,EAAQlB,CAAK,EAE3C,OACEgB,EAACM,EAAA,CACC,IAAKb,EAAK,aAEV,KAAMS,EACN,OAAAE,EACA,QAASV,IAAiBS,EAC1B,SAAArB,EACA,OAAQe,EACR,aAAAX,EACA,aAAc,IAAMS,EAAgBQ,CAAK,EACzC,aAAc,IAAMR,EAAgB,EAAE,EACtC,QAASR,GAAA,YAAAA,EAAS,IAAA,EATbgB,CAAA,CAYX,CAAC,EAEDH,EAACO,EAAA,CAAW,SAAAlB,CAAA,CAAM,CAAA,CAAA,CAI1B"}
1
+ {"version":3,"file":"DropdownList.js","sources":["../../../../../lib/shared/ui/dropdownList/DropdownList.tsx"],"sourcesContent":["import { useRef } from 'react'\nimport { useKeyboardNavigation } from './hooks'\nimport { isOptionActive } from './model'\nimport { DropdownItem, type DropdownItemClasses, type DropdownItemOption, EmptyList } from './ui'\nimport { useClickOutside } from '$/shared/hooks'\nimport { cn } from '$/shared/utils'\n\nexport type DropdownListClasses = {\n root?: string\n item?: DropdownItemClasses\n}\n\nexport interface DropdownListProps<Multi extends boolean = false> extends React.HTMLAttributes<HTMLUListElement> {\n options: DropdownItemOption[]\n /**\n * Значения выбранные по умолчанию\n */\n value?: Multi extends true ? DropdownItemOption[] : DropdownItemOption | null\n /**\n * Функция при выборе значения из списка\n * @param item\n */\n onPick?: (item: DropdownItemOption) => void\n /**\n * Поддержка множественного выбора\n */\n multiple?: Multi\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: DropdownItemOption) => string\n /**\n * Дополнительные стили\n */\n classes?: DropdownListClasses\n /**\n * Целевая нода, с которой будет взаимодействовать список\n */\n target?: React.RefObject<HTMLElement>\n /**\n * Отображаемое содержимое при пустом списке\n */\n empty?: React.ReactNode\n}\n\nexport const DropdownList = <Multi extends boolean>({\n options,\n multiple,\n onPick,\n value,\n className,\n displayValue,\n classes,\n target,\n empty = 'Список пуст',\n ...props\n}: DropdownListProps<Multi>) => {\n const ref = useRef<HTMLUListElement>(null)\n\n const { refs, focusedIndex, setFocusedIndex } = useKeyboardNavigation<HTMLUListElement, HTMLLIElement, Multi>({\n options,\n multiple,\n onPick,\n value\n })\n\n console.log('huesos')\n\n const elementPickHandler = (item: DropdownItemOption) => {\n onPick?.(item)\n\n if (target && target.current) {\n target.current.focus()\n }\n }\n\n useClickOutside(ref, () => setFocusedIndex(-1))\n\n return (\n <ul\n {...props}\n ref={refs.setRoot()}\n className={cn(\n 'customScrollbar-y mt-1 max-h-[264px] w-full overflow-y-auto scroll-smooth rounded-md bg-color-white p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]',\n classes?.root,\n className\n )}\n >\n {options.length > 0 ? (\n options.map((option, index) => {\n const active = isOptionActive(option, value)\n\n return (\n <DropdownItem\n ref={refs.setReference}\n key={index}\n item={option}\n active={active}\n focused={focusedIndex === index}\n multiple={multiple}\n onPick={elementPickHandler}\n displayValue={displayValue}\n onMouseEnter={() => setFocusedIndex(index)}\n onMouseLeave={() => setFocusedIndex(-1)}\n classes={classes?.item}\n />\n )\n })\n ) : (\n <EmptyList>{empty}</EmptyList>\n )}\n </ul>\n )\n}\n"],"names":["DropdownList","options","multiple","onPick","value","className","displayValue","classes","target","empty","props","ref","useRef","refs","focusedIndex","setFocusedIndex","useKeyboardNavigation","elementPickHandler","item","useClickOutside","jsx","cn","option","index","active","isOptionActive","DropdownItem","EmptyList"],"mappings":"qZA6CO,MAAMA,EAAe,CAAwB,CAClD,QAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EACA,UAAAC,EACA,aAAAC,EACA,QAAAC,EACA,OAAAC,EACA,MAAAC,EAAQ,cACR,GAAGC,CACL,IAAgC,CAC9B,MAAMC,EAAMC,EAAyB,IAAI,EAEnC,CAAE,KAAAC,EAAM,aAAAC,EAAc,gBAAAC,CAAA,EAAoBC,EAA8D,CAC5G,QAAAf,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,CAAA,CACD,EAED,QAAQ,IAAI,QAAQ,EAEpB,MAAMa,EAAsBC,GAA6B,CACvDf,GAAA,MAAAA,EAASe,GAELV,GAAUA,EAAO,SACnBA,EAAO,QAAQ,MAAA,CAEnB,EAEA,OAAAW,EAAgBR,EAAK,IAAMI,EAAgB,EAAE,CAAC,EAG5CK,EAAC,KAAA,CACE,GAAGV,EACJ,IAAKG,EAAK,QAAA,EACV,UAAWQ,EACT,sJACAd,GAAA,YAAAA,EAAS,KACTF,CAAA,EAGD,WAAQ,OAAS,EAChBJ,EAAQ,IAAI,CAACqB,EAAQC,IAAU,CAC7B,MAAMC,EAASC,EAAeH,EAAQlB,CAAK,EAE3C,OACEgB,EAACM,EAAA,CACC,IAAKb,EAAK,aAEV,KAAMS,EACN,OAAAE,EACA,QAASV,IAAiBS,EAC1B,SAAArB,EACA,OAAQe,EACR,aAAAX,EACA,aAAc,IAAMS,EAAgBQ,CAAK,EACzC,aAAc,IAAMR,EAAgB,EAAE,EACtC,QAASR,GAAA,YAAAA,EAAS,IAAA,EATbgB,CAAA,CAYX,CAAC,EAEDH,EAACO,EAAA,CAAW,SAAAlB,CAAA,CAAM,CAAA,CAAA,CAI1B"}
@@ -1,2 +1,2 @@
1
- import{Color as o}from"../../../../../../../node_modules/@tiptap/extension-color/dist/index.js";import{Heading as s}from"../../../../../../../node_modules/@tiptap/extension-heading/dist/index.js";import{Link as l}from"../../../../../../../node_modules/@tiptap/extension-link/dist/index.js";import{TextStyle as n}from"../../../../../../../node_modules/@tiptap/extension-text-style/dist/index.js";import{Underline as a}from"../../../../../../../node_modules/@tiptap/extension-underline/dist/index.js";import{StarterKit as m}from"../../../../../../../node_modules/@tiptap/starter-kit/dist/index.js";import{editorHeadingClasses as p}from"./helper.js";import{mergeAttributes as r}from"../../../../../../../node_modules/@tiptap/core/dist/index.js";const H=[m.configure({heading:!1,bold:{HTMLAttributes:{class:"font-bold"}},bulletList:{HTMLAttributes:{class:"list-disc [&>li]:ml-4"}},paragraph:{HTMLAttributes:{class:"text-dark"}}}),a,n,o,s.configure({levels:[1,2,3,4]}).extend({renderHTML({node:t,HTMLAttributes:i}){const e=this.options.levels.includes(t.attrs.level)?t.attrs.level:this.options.levels[0];return[`h${e}`,r(this.options.HTMLAttributes,i,{class:`${p[e]}`}),0]}}),l.configure({openOnClick:!0}).extend({renderHTML({HTMLAttributes:t}){return["a",r(t)]}})];export{H as editorConfig};
1
+ import{Color as i}from"../../../../../../../node_modules/@tiptap/extension-color/dist/index.js";import{Heading as s}from"../../../../../../../node_modules/@tiptap/extension-heading/dist/index.js";import{Link as l}from"../../../../../../../node_modules/@tiptap/extension-link/dist/index.js";import{TextStyle as n}from"../../../../../../../node_modules/@tiptap/extension-text-style/dist/index.js";import{Underline as m}from"../../../../../../../node_modules/@tiptap/extension-underline/dist/index.js";import{StarterKit as a}from"../../../../../../../node_modules/@tiptap/starter-kit/dist/index.js";import{FontSizeExtension as p}from"./extensions.js";import{editorHeadingClasses as f}from"./helper.js";import{mergeAttributes as r}from"../../../../../../../node_modules/@tiptap/core/dist/index.js";const x=[a.configure({heading:!1,bold:{HTMLAttributes:{class:"font-bold"}},bulletList:{HTMLAttributes:{class:"list-disc [&>li]:ml-4"}},paragraph:{HTMLAttributes:{class:"text-dark"}}}),p,m,n,i,s.configure({levels:[1,2,3,4]}).extend({renderHTML({node:t,HTMLAttributes:o}){const e=this.options.levels.includes(t.attrs.level)?t.attrs.level:this.options.levels[0];return[`h${e}`,r(this.options.HTMLAttributes,o,{class:`${f[e]}`}),0]}}),l.configure({openOnClick:!0}).extend({renderHTML({HTMLAttributes:t}){return["a",r(t)]}})];export{x as editorConfig};
2
2
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/config.ts"],"sourcesContent":["import Color from '@tiptap/extension-color'\nimport Heading from '@tiptap/extension-heading'\nimport Link from '@tiptap/extension-link'\nimport TextStyle from '@tiptap/extension-text-style'\nimport Underline from '@tiptap/extension-underline'\nimport { mergeAttributes } from '@tiptap/react'\nimport StarterKit from '@tiptap/starter-kit'\nimport { editorHeadingClasses } from './helper'\nimport { type THeadingLevel } from './types'\n\nexport const editorConfig = [\n StarterKit.configure({\n heading: false,\n bold: {\n HTMLAttributes: {\n class: 'font-bold'\n }\n },\n bulletList: {\n HTMLAttributes: {\n class: 'list-disc [&>li]:ml-4'\n }\n },\n paragraph: {\n HTMLAttributes: {\n class: 'text-dark'\n }\n }\n }),\n Underline,\n TextStyle,\n Color,\n Heading.configure({\n levels: [1, 2, 3, 4]\n }).extend({\n renderHTML({ node, HTMLAttributes }) {\n const hasLevel = this.options.levels.includes(node.attrs.level)\n const level: THeadingLevel = hasLevel ? node.attrs.level : this.options.levels[0]\n return [\n `h${level}`,\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n class: `${editorHeadingClasses[level]}`\n }),\n 0\n ]\n }\n }),\n Link.configure({\n openOnClick: true\n }).extend({\n renderHTML({ HTMLAttributes }) {\n return ['a', mergeAttributes(HTMLAttributes)]\n }\n })\n]\n"],"names":["editorConfig","StarterKit","Underline","TextStyle","Color","Heading","node","HTMLAttributes","level","mergeAttributes","editorHeadingClasses","Link"],"mappings":"suBAUO,MAAMA,EAAe,CAC1BC,EAAW,UAAU,CACnB,QAAS,GACT,KAAM,CACJ,eAAgB,CACd,MAAO,WAAA,CACT,EAEF,WAAY,CACV,eAAgB,CACd,MAAO,uBAAA,CACT,EAEF,UAAW,CACT,eAAgB,CACd,MAAO,WAAA,CACT,CACF,CACD,EACDC,EACAC,EACAC,EACAC,EAAQ,UAAU,CAChB,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,CAAA,CACpB,EAAE,OAAO,CACR,WAAW,CAAE,KAAAC,EAAM,eAAAC,GAAkB,CAEnC,MAAMC,EADW,KAAK,QAAQ,OAAO,SAASF,EAAK,MAAM,KAAK,EACtBA,EAAK,MAAM,MAAQ,KAAK,QAAQ,OAAO,CAAC,EAChF,MAAO,CACL,IAAIE,CAAK,GACTC,EAAgB,KAAK,QAAQ,eAAgBF,EAAgB,CAC3D,MAAO,GAAGG,EAAqBF,CAAK,CAAC,EAAA,CACtC,EACD,CAAA,CAEJ,CAAA,CACD,EACDG,EAAK,UAAU,CACb,YAAa,EAAA,CACd,EAAE,OAAO,CACR,WAAW,CAAE,eAAAJ,GAAkB,CAC7B,MAAO,CAAC,IAAKE,EAAgBF,CAAc,CAAC,CAC9C,CAAA,CACD,CACH"}
1
+ {"version":3,"file":"config.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/config.ts"],"sourcesContent":["import Color from '@tiptap/extension-color'\nimport { Heading } from '@tiptap/extension-heading'\nimport Link from '@tiptap/extension-link'\nimport { TextStyle } from '@tiptap/extension-text-style'\nimport Underline from '@tiptap/extension-underline'\nimport { mergeAttributes } from '@tiptap/react'\nimport StarterKit from '@tiptap/starter-kit'\nimport { FontSizeExtension } from './extensions'\nimport { editorHeadingClasses } from './helper'\nimport { type HeadingLevel } from './types'\n\nexport const editorConfig = [\n StarterKit.configure({\n heading: false,\n bold: {\n HTMLAttributes: {\n class: 'font-bold'\n }\n },\n bulletList: {\n HTMLAttributes: {\n class: 'list-disc [&>li]:ml-4'\n }\n },\n paragraph: {\n HTMLAttributes: {\n class: 'text-dark'\n }\n }\n }),\n FontSizeExtension,\n Underline,\n TextStyle,\n Color,\n Heading.configure({\n levels: [1, 2, 3, 4]\n }).extend({\n renderHTML({ node, HTMLAttributes }) {\n const hasLevel = this.options.levels.includes(node.attrs.level)\n const level: HeadingLevel = hasLevel ? node.attrs.level : this.options.levels[0]\n return [\n `h${level}`,\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n class: `${editorHeadingClasses[level]}`\n }),\n 0\n ]\n }\n }),\n Link.configure({\n openOnClick: true\n }).extend({\n renderHTML({ HTMLAttributes }) {\n return ['a', mergeAttributes(HTMLAttributes)]\n }\n })\n]\n"],"names":["editorConfig","StarterKit","FontSizeExtension","Underline","TextStyle","Color","Heading","node","HTMLAttributes","level","mergeAttributes","editorHeadingClasses","Link"],"mappings":"0xBAWO,MAAMA,EAAe,CAC1BC,EAAW,UAAU,CACnB,QAAS,GACT,KAAM,CACJ,eAAgB,CACd,MAAO,WAAA,CACT,EAEF,WAAY,CACV,eAAgB,CACd,MAAO,uBAAA,CACT,EAEF,UAAW,CACT,eAAgB,CACd,MAAO,WAAA,CACT,CACF,CACD,EACDC,EACAC,EACAC,EACAC,EACAC,EAAQ,UAAU,CAChB,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,CAAA,CACpB,EAAE,OAAO,CACR,WAAW,CAAE,KAAAC,EAAM,eAAAC,GAAkB,CAEnC,MAAMC,EADW,KAAK,QAAQ,OAAO,SAASF,EAAK,MAAM,KAAK,EACvBA,EAAK,MAAM,MAAQ,KAAK,QAAQ,OAAO,CAAC,EAC/E,MAAO,CACL,IAAIE,CAAK,GACTC,EAAgB,KAAK,QAAQ,eAAgBF,EAAgB,CAC3D,MAAO,GAAGG,EAAqBF,CAAK,CAAC,EAAA,CACtC,EACD,CAAA,CAEJ,CAAA,CACD,EACDG,EAAK,UAAU,CACb,YAAa,EAAA,CACd,EAAE,OAAO,CACR,WAAW,CAAE,eAAAJ,GAAkB,CAC7B,MAAO,CAAC,IAAKE,EAAgBF,CAAc,CAAC,CAC9C,CAAA,CACD,CACH"}
@@ -0,0 +1,2 @@
1
+ import{Extension as n}from"../../../../../../../node_modules/@tiptap/core/dist/index.js";const o=n.create({name:"fontSize",addOptions(){return{types:["textStyle"]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{fontSize:{default:null,parseHTML:t=>t.style.fontSize.replace(/['"]+/g,""),renderHTML:t=>t.fontSize?{style:`font-size: ${t.fontSize}`}:{}}}}]},addCommands(){return{setFontSize:t=>({chain:e})=>e().setMark("textStyle",{fontSize:t}).run(),unsetFontSize:()=>({chain:t})=>t().setMark("textStyle",{fontSize:null}).removeEmptyTextStyle().run()}}});export{o as FontSizeExtension};
2
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/extensions.ts"],"sourcesContent":["import { Extension } from '@tiptap/core'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n fontSize: {\n setFontSize: (size: string) => ReturnType\n unsetFontSize: () => ReturnType\n }\n }\n}\n\nexport const FontSizeExtension = Extension.create({\n name: 'fontSize',\n\n addOptions() {\n return {\n types: ['textStyle']\n }\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) => element.style.fontSize.replace(/['\"]+/g, ''),\n renderHTML: (attributes) => {\n if (!attributes.fontSize) {\n return {}\n }\n\n return {\n style: `font-size: ${attributes.fontSize}`\n }\n }\n }\n }\n }\n ]\n },\n\n addCommands() {\n return {\n setFontSize:\n (fontSize: string) =>\n ({ chain }) => {\n return chain().setMark('textStyle', { fontSize }).run()\n },\n unsetFontSize:\n () =>\n ({ chain }) => {\n return chain().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run()\n }\n }\n }\n})\n"],"names":["FontSizeExtension","Extension","element","attributes","fontSize","chain"],"mappings":"yFAWO,MAAMA,EAAoBC,EAAU,OAAO,CAChD,KAAM,WAEN,YAAa,CACX,MAAO,CACL,MAAO,CAAC,WAAW,CAAA,CAEvB,EAEA,qBAAsB,CACpB,MAAO,CACL,CACE,MAAO,KAAK,QAAQ,MACpB,WAAY,CACV,SAAU,CACR,QAAS,KACT,UAAYC,GAAYA,EAAQ,MAAM,SAAS,QAAQ,SAAU,EAAE,EACnE,WAAaC,GACNA,EAAW,SAIT,CACL,MAAO,cAAcA,EAAW,QAAQ,EAAA,EAJjC,CAAA,CAMX,CACF,CACF,CACF,CAEJ,EAEA,aAAc,CACZ,MAAO,CACL,YACGC,GACD,CAAC,CAAE,MAAAC,KACMA,EAAA,EAAQ,QAAQ,YAAa,CAAE,SAAAD,CAAA,CAAU,EAAE,IAAA,EAEtD,cACE,IACA,CAAC,CAAE,MAAAC,KACMA,EAAA,EAAQ,QAAQ,YAAa,CAAE,SAAU,KAAM,EAAE,qBAAA,EAAuB,IAAA,CACjF,CAEN,CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- import{jsx as i}from"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as o}from"../../../../icon/Icon.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const P=[{shortcuts:["ctrl","alt","1"],level:1},{shortcuts:["ctrl","alt","2"],level:2},{shortcuts:["ctrl","alt","3"],level:3},{shortcuts:["ctrl","alt","4"],level:4}],j={1:"mob-headline-bold-m desktop:desk-headline-bold-l",2:"mob-headline-bold-s desktop:desk-headline-bold-m",3:"mob-title-bold-l desktop:desk-title-bold-l",4:"mob-title-bold-m desktop:desk-title-bold-s"},D=["#292929","#FFFFFF","#40465A","#5A6E85","#A9B6C5","#94A4B7","#003790","#042E73","#809BC7","#76BC21","#F49F00","#F42500"],M=e=>[{label:"Жирный текст",icon:i(o,{name:"editor/bold",className:"size-4"}),onClick:()=>e.chain().focus().toggleBold().run(),isActive:e.isActive("bold")},{label:"Курсивный текст",icon:i(o,{name:"editor/italic",className:"size-4"}),onClick:()=>e.chain().focus().toggleItalic().run(),isActive:e.isActive("italic")},{label:"Подчеркнутый текст",icon:i(o,{name:"editor/underline",className:"size-4"}),onClick:()=>e.chain().focus().toggleUnderline().run(),isActive:e.isActive("underline")},{label:"Зачеркнутый текст",icon:i(o,{name:"editor/strikethrough",className:"size-4"}),onClick:()=>e.chain().focus().toggleStrike().run(),isActive:e.isActive("strike")},{label:"Обычный текст",icon:i(o,{name:"editor/typography",className:"size-4"}),onClick:()=>e.chain().focus().setParagraph().run()},{label:"Маркированный список",icon:i(o,{name:"editor/list",className:"size-4"}),onClick:()=>e.chain().focus().toggleBulletList().run(),isActive:e.isActive("bulletList")},{label:"Перенос строки",icon:i(o,{name:"arrows/arrowDownRight",className:"size-4"}),onClick:()=>e.chain().focus().setHardBreak().run()},{label:"Отменить",icon:i(o,{name:"editor/undo",className:"size-4"}),onClick:()=>e.chain().focus().undo().run()},{label:"Вернуть",icon:i(o,{name:"editor/redo",className:"size-4"}),onClick:()=>e.chain().focus().redo().run()},{label:"Очистить стили и теги",icon:i(o,{name:"editor/removeFormatting",className:"size-4"}),onClick:()=>e.chain().focus().clearNodes().unsetAllMarks().run()},{label:"Удалить все",icon:i(o,{name:"general/close",className:"size-4"}),onClick:()=>e.commands.clearContent()}];export{D as editorAllowedColors,j as editorHeadingClasses,P as headingsOptions,M as renderEditorPanel};
1
+ import{jsx as i}from"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as l}from"../../../../icon/Icon.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const P=[1,2,3,4],S={1:"mob-headline-bold-m desktop:desk-headline-bold-l",2:"mob-headline-bold-s desktop:desk-headline-bold-m",3:"mob-title-bold-l desktop:desk-title-bold-l",4:"mob-title-bold-m desktop:desk-title-bold-s"},j=[{label:"12px",value:"12px"},{label:"14px",value:"14px"},{label:"16px",value:"16px"},{label:"18px",value:"18px"},{label:"20px",value:"20px"},{label:"24px",value:"24px"}],w=["#292929","#FFFFFF","#40465A","#5A6E85","#A9B6C5","#94A4B7","#003790","#042E73","#809BC7","#76BC21","#F49F00","#F42500"],M=e=>[{label:"Жирный текст",icon:i(l,{name:"editor/bold",className:"size-4"}),onClick:()=>e.chain().focus().toggleBold().run(),isActive:e.isActive("bold")},{label:"Курсивный текст",icon:i(l,{name:"editor/italic",className:"size-4"}),onClick:()=>e.chain().focus().toggleItalic().run(),isActive:e.isActive("italic")},{label:"Подчеркнутый текст",icon:i(l,{name:"editor/underline",className:"size-4"}),onClick:()=>e.chain().focus().toggleUnderline().run(),isActive:e.isActive("underline")},{label:"Зачеркнутый текст",icon:i(l,{name:"editor/strikethrough",className:"size-4"}),onClick:()=>e.chain().focus().toggleStrike().run(),isActive:e.isActive("strike")},{label:"Обычный текст",icon:i(l,{name:"editor/typography",className:"size-4"}),onClick:()=>e.chain().focus().setParagraph().run()},{label:"Маркированный список",icon:i(l,{name:"editor/list",className:"size-4"}),onClick:()=>e.chain().focus().toggleBulletList().run(),isActive:e.isActive("bulletList")},{label:"Перенос строки",icon:i(l,{name:"editor/space",className:"size-4"}),onClick:()=>e.chain().focus().setHardBreak().run()},{label:"Отменить",icon:i(l,{name:"editor/undo",className:"size-4"}),onClick:()=>e.chain().focus().undo().run()},{label:"Вернуть",icon:i(l,{name:"editor/redo",className:"size-4"}),onClick:()=>e.chain().focus().redo().run()},{label:"Очистить стили и теги",icon:i(l,{name:"editor/removeFormatting",className:"size-4"}),onClick:()=>e.chain().focus().clearNodes().unsetAllMarks().run()},{label:"Удалить все",icon:i(l,{name:"general/close",className:"size-4"}),onClick:()=>e.commands.clearContent()}];export{w as editorAllowedColors,S as editorHeadingClasses,j as fontSizesOptions,P as headingsOptions,M as renderEditorPanel};
2
2
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/helper.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport type { ColorOption, HeadingOptions } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const headingsOptions: HeadingOptions[] = [\n { shortcuts: ['ctrl', 'alt', '1'], level: 1 },\n { shortcuts: ['ctrl', 'alt', '2'], level: 2 },\n { shortcuts: ['ctrl', 'alt', '3'], level: 3 },\n { shortcuts: ['ctrl', 'alt', '4'], level: 4 }\n]\n\nexport const editorHeadingClasses: Record<number, string> = {\n 1: 'mob-headline-bold-m desktop:desk-headline-bold-l',\n 2: 'mob-headline-bold-s desktop:desk-headline-bold-m',\n 3: 'mob-title-bold-l desktop:desk-title-bold-l',\n 4: 'mob-title-bold-m desktop:desk-title-bold-s'\n}\n\nexport const editorAllowedColors: ColorOption[] = [\n '#292929',\n '#FFFFFF',\n '#40465A',\n '#5A6E85',\n '#A9B6C5',\n '#94A4B7',\n '#003790',\n '#042E73',\n '#809BC7',\n '#76BC21',\n '#F49F00',\n '#F42500'\n]\n\nexport const renderEditorPanel = (editor: Editor) => [\n {\n label: 'Жирный текст',\n icon: <Icon name='editor/bold' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBold().run(),\n isActive: editor.isActive('bold')\n },\n {\n label: 'Курсивный текст',\n icon: <Icon name='editor/italic' className='size-4' />,\n onClick: () => editor.chain().focus().toggleItalic().run(),\n isActive: editor.isActive('italic')\n },\n {\n label: 'Подчеркнутый текст',\n icon: <Icon name='editor/underline' className='size-4' />,\n onClick: () => editor.chain().focus().toggleUnderline().run(),\n isActive: editor.isActive('underline')\n },\n {\n label: 'Зачеркнутый текст',\n icon: <Icon name='editor/strikethrough' className='size-4' />,\n onClick: () => editor.chain().focus().toggleStrike().run(),\n isActive: editor.isActive('strike')\n },\n {\n label: 'Обычный текст',\n icon: <Icon name='editor/typography' className='size-4' />,\n onClick: () => editor.chain().focus().setParagraph().run()\n },\n {\n label: 'Маркированный список',\n icon: <Icon name='editor/list' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n isActive: editor.isActive('bulletList')\n },\n {\n label: 'Перенос строки',\n icon: <Icon name='arrows/arrowDownRight' className='size-4' />,\n onClick: () => editor.chain().focus().setHardBreak().run()\n },\n\n {\n label: 'Отменить',\n icon: <Icon name='editor/undo' className='size-4' />,\n onClick: () => editor.chain().focus().undo().run()\n },\n {\n label: 'Вернуть',\n icon: <Icon name='editor/redo' className='size-4' />,\n onClick: () => editor.chain().focus().redo().run()\n },\n {\n label: 'Очистить стили и теги',\n icon: <Icon name='editor/removeFormatting' className='size-4' />,\n onClick: () => editor.chain().focus().clearNodes().unsetAllMarks().run()\n },\n {\n label: 'Удалить все',\n icon: <Icon name='general/close' className='size-4' />,\n onClick: () => editor.commands.clearContent()\n }\n]\n"],"names":["headingsOptions","editorHeadingClasses","editorAllowedColors","renderEditorPanel","editor","jsx","Icon"],"mappings":"i3CAIO,MAAMA,EAAoC,CAC/C,CAAE,UAAW,CAAC,OAAQ,MAAO,GAAG,EAAG,MAAO,CAAA,EAC1C,CAAE,UAAW,CAAC,OAAQ,MAAO,GAAG,EAAG,MAAO,CAAA,EAC1C,CAAE,UAAW,CAAC,OAAQ,MAAO,GAAG,EAAG,MAAO,CAAA,EAC1C,CAAE,UAAW,CAAC,OAAQ,MAAO,GAAG,EAAG,MAAO,CAAA,CAC5C,EAEaC,EAA+C,CAC1D,EAAG,mDACH,EAAG,mDACH,EAAG,6CACH,EAAG,4CACL,EAEaC,EAAqC,CAChD,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EAEaC,EAAqBC,GAAmB,CACnD,CACE,MAAO,eACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,WAAA,EAAa,IAAA,EACnD,SAAUA,EAAO,SAAS,MAAM,CAAA,EAElC,CACE,MAAO,kBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,qBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,mBAAmB,UAAU,SAAS,EACvD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,gBAAA,EAAkB,IAAA,EACxD,SAAUA,EAAO,SAAS,WAAW,CAAA,EAEvC,CACE,MAAO,oBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,uBAAuB,UAAU,SAAS,EAC3D,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,gBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,oBAAoB,UAAU,SAAS,EACxD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAE3D,CACE,MAAO,uBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,iBAAA,EAAmB,IAAA,EACzD,SAAUA,EAAO,SAAS,YAAY,CAAA,EAExC,CACE,MAAO,iBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,wBAAwB,UAAU,SAAS,EAC5D,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAG3D,CACE,MAAO,WACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,UACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,wBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,0BAA0B,UAAU,SAAS,EAC9D,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,cAAA,EAAgB,IAAA,CAAI,EAEzE,CACE,MAAO,cACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,SAAS,aAAA,CAAa,CAEhD"}
1
+ {"version":3,"file":"helper.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/helper.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { type ColorOption, type HeadingLevel } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const headingsOptions: HeadingLevel[] = [1, 2, 3, 4]\n\nexport const editorHeadingClasses: Record<number, string> = {\n 1: 'mob-headline-bold-m desktop:desk-headline-bold-l',\n 2: 'mob-headline-bold-s desktop:desk-headline-bold-m',\n 3: 'mob-title-bold-l desktop:desk-title-bold-l',\n 4: 'mob-title-bold-m desktop:desk-title-bold-s'\n}\n\nexport const fontSizesOptions = [\n { label: '12px', value: '12px' },\n { label: '14px', value: '14px' },\n { label: '16px', value: '16px' },\n { label: '18px', value: '18px' },\n { label: '20px', value: '20px' },\n { label: '24px', value: '24px' }\n]\n\nexport const editorAllowedColors: ColorOption[] = [\n '#292929',\n '#FFFFFF',\n '#40465A',\n '#5A6E85',\n '#A9B6C5',\n '#94A4B7',\n '#003790',\n '#042E73',\n '#809BC7',\n '#76BC21',\n '#F49F00',\n '#F42500'\n]\n\nexport const renderEditorPanel = (editor: Editor) => [\n {\n label: 'Жирный текст',\n icon: <Icon name='editor/bold' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBold().run(),\n isActive: editor.isActive('bold')\n },\n {\n label: 'Курсивный текст',\n icon: <Icon name='editor/italic' className='size-4' />,\n onClick: () => editor.chain().focus().toggleItalic().run(),\n isActive: editor.isActive('italic')\n },\n {\n label: 'Подчеркнутый текст',\n icon: <Icon name='editor/underline' className='size-4' />,\n onClick: () => editor.chain().focus().toggleUnderline().run(),\n isActive: editor.isActive('underline')\n },\n {\n label: 'Зачеркнутый текст',\n icon: <Icon name='editor/strikethrough' className='size-4' />,\n onClick: () => editor.chain().focus().toggleStrike().run(),\n isActive: editor.isActive('strike')\n },\n {\n label: 'Обычный текст',\n icon: <Icon name='editor/typography' className='size-4' />,\n onClick: () => editor.chain().focus().setParagraph().run()\n },\n {\n label: 'Маркированный список',\n icon: <Icon name='editor/list' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n isActive: editor.isActive('bulletList')\n },\n {\n label: 'Перенос строки',\n icon: <Icon name='editor/space' className='size-4' />,\n onClick: () => editor.chain().focus().setHardBreak().run()\n },\n {\n label: 'Отменить',\n icon: <Icon name='editor/undo' className='size-4' />,\n onClick: () => editor.chain().focus().undo().run()\n },\n {\n label: 'Вернуть',\n icon: <Icon name='editor/redo' className='size-4' />,\n onClick: () => editor.chain().focus().redo().run()\n },\n {\n label: 'Очистить стили и теги',\n icon: <Icon name='editor/removeFormatting' className='size-4' />,\n onClick: () => editor.chain().focus().clearNodes().unsetAllMarks().run()\n },\n {\n label: 'Удалить все',\n icon: <Icon name='general/close' className='size-4' />,\n onClick: () => editor.commands.clearContent()\n }\n]\n"],"names":["headingsOptions","editorHeadingClasses","fontSizesOptions","editorAllowedColors","renderEditorPanel","editor","jsx","Icon"],"mappings":"i3CAIO,MAAMA,EAAkC,CAAC,EAAG,EAAG,EAAG,CAAC,EAE7CC,EAA+C,CAC1D,EAAG,mDACH,EAAG,mDACH,EAAG,6CACH,EAAG,4CACL,EAEaC,EAAmB,CAC9B,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,CAC1B,EAEaC,EAAqC,CAChD,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EAEaC,EAAqBC,GAAmB,CACnD,CACE,MAAO,eACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,WAAA,EAAa,IAAA,EACnD,SAAUA,EAAO,SAAS,MAAM,CAAA,EAElC,CACE,MAAO,kBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,qBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,mBAAmB,UAAU,SAAS,EACvD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,gBAAA,EAAkB,IAAA,EACxD,SAAUA,EAAO,SAAS,WAAW,CAAA,EAEvC,CACE,MAAO,oBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,uBAAuB,UAAU,SAAS,EAC3D,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,gBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,oBAAoB,UAAU,SAAS,EACxD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAE3D,CACE,MAAO,uBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,iBAAA,EAAmB,IAAA,EACzD,SAAUA,EAAO,SAAS,YAAY,CAAA,EAExC,CACE,MAAO,iBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,eAAe,UAAU,SAAS,EACnD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAE3D,CACE,MAAO,WACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,UACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,wBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,0BAA0B,UAAU,SAAS,EAC9D,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,cAAA,EAAgB,IAAA,CAAI,EAEzE,CACE,MAAO,cACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,SAAS,aAAA,CAAa,CAEhD"}
@@ -0,0 +1,2 @@
1
+ import{FontSizeExtension as r}from"./extensions.js";import{editorConfig as t}from"./config.js";import{editorAllowedColors as s,editorHeadingClasses as d,fontSizesOptions as f,headingsOptions as l,renderEditorPanel as p}from"./helper.js";export{r as FontSizeExtension,s as editorAllowedColors,t as editorConfig,d as editorHeadingClasses,f as fontSizesOptions,l as headingsOptions,p as renderEditorPanel};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- import{jsxs as f,jsx as p}from"react/jsx-runtime";import{forwardRef as N,useEffect as C}from"react";import{CharacterCount as M}from"../../../../../../../node_modules/@tiptap/extension-character-count/dist/index.js";import{useEditor as A,EditorContent as L}from"../../../../../../../node_modules/@tiptap/react/dist/index.js";import{editorConfig as y}from"../model/config.js";import{Toolbar as U}from"./Toolbar.js";import{cn as n}from"../../../../../utils/cn.js";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as k}from"../../../ui/MessageView.js";const H=Number.MAX_SAFE_INTEGER,at=N(({onChange:l,value:e="",label:u,limit:d,error:r,classes:t,editable:a,helperText:b,shouldRerenderOnTransaction:g=!0,externalHandlers:c,small:h,...T},E)=>{const{onUpdate:x}=c||{},o=A({extensions:[...y,M.configure({limit:d??H})],editable:a,content:e,onUpdate:m=>{const{editor:i}=m,w=i!=null&&i.getText()?i==null?void 0:i.getHTML():"";l(w),x&&x(m)},editorProps:{transformPastedText(m){return m.replace(/\xA0/g," ")},transformPastedHTML(m){return m.replace(/\xA0/g," ")},attributes:{spellcheck:"false",class:n("p-4 outline-none bg-color-blue-grey-100 min-h-[240px] max-h-[500px] customScrollbar-y overflow-y-auto break-keep",t==null?void 0:t.editor,{"max-h-[80px] min-h-full":h})}},shouldRerenderOnTransaction:g,...T});return C(()=>{o&&o.getHTML()!==e&&o.commands.setContent(e)},[o,e]),o?f("div",{className:n("flex w-full flex-col",t==null?void 0:t.root),children:[f("div",{className:n("relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200",t==null?void 0:t.wrapper),children:[p(U,{editor:o}),!e&&p("p",{className:n("absolute left-4 top-16 z-10 text-color-disabled",t==null?void 0:t.label),children:u}),p(L,{ref:E,editor:o}),d&&f("p",{className:"absolute bottom-4 right-4 text-color-disabled",children:[o.storage.characterCount.characters()," / ",d," символов"]})]}),p(k,{className:t==null?void 0:t.message,intent:r!=null&&r.message?"error":"simple",text:(r==null?void 0:r.message)||b,disabled:!a})]}):null});export{at as Editor};
1
+ import{jsxs as f,jsx as p}from"react/jsx-runtime";import{forwardRef as N,useEffect as C}from"react";import{CharacterCount as M}from"../../../../../../../node_modules/@tiptap/extension-character-count/dist/index.js";import{useEditor as A,EditorContent as L}from"../../../../../../../node_modules/@tiptap/react/dist/index.js";import{cn as n}from"../../../../../utils/cn.js";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as y}from"../../../ui/MessageView.js";import"../model/extensions.js";import{editorConfig as U}from"../model/config.js";import{Toolbar as k}from"./Toolbar.js";const H=Number.MAX_SAFE_INTEGER,xt=N(({onChange:l,value:e="",label:u,limit:d,error:r,classes:t,editable:a,helperText:b,shouldRerenderOnTransaction:g=!0,externalHandlers:c,small:h,...T},E)=>{const{onUpdate:x}=c||{},o=A({extensions:[...U,M.configure({limit:d??H})],editable:a,content:e,onUpdate:m=>{const{editor:i}=m,w=i!=null&&i.getText()?i==null?void 0:i.getHTML():"";l(w),x&&x(m)},editorProps:{transformPastedText(m){return m.replace(/\xA0/g," ")},transformPastedHTML(m){return m.replace(/\xA0/g," ")},attributes:{spellcheck:"false",class:n("p-4 outline-none bg-color-blue-grey-100 min-h-[240px] max-h-[500px] customScrollbar-y overflow-y-auto break-keep",t==null?void 0:t.editor,{"max-h-[80px] min-h-full":h})}},shouldRerenderOnTransaction:g,...T});return C(()=>{o&&o.getHTML()!==e&&o.commands.setContent(e)},[o,e]),o?f("div",{className:n("flex w-full flex-col",t==null?void 0:t.root),children:[f("div",{className:n("relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200",t==null?void 0:t.wrapper),children:[p(k,{editor:o}),!e&&p("p",{className:n("absolute left-4 top-16 z-10 text-color-disabled",t==null?void 0:t.label),children:u}),p(L,{ref:E,editor:o}),d&&f("p",{className:"absolute bottom-4 right-4 text-color-disabled",children:[o.storage.characterCount.characters()," / ",d," символов"]})]}),p(y,{className:t==null?void 0:t.message,intent:r!=null&&r.message?"error":"simple",text:(r==null?void 0:r.message)||b,disabled:!a})]}):null});export{xt as Editor};
2
2
  //# sourceMappingURL=Editor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Editor.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Editor.tsx"],"sourcesContent":["import { forwardRef, type ReactElement, useEffect } from 'react'\nimport { type FieldError } from 'react-hook-form'\nimport CharacterCount from '@tiptap/extension-character-count'\nimport { EditorContent, type EditorEvents, useEditor, type UseEditorOptions } from '@tiptap/react'\nimport { type EditorControlClasses } from '../EditorControl'\nimport { editorConfig } from '../model/config'\nimport { Toolbar } from './Toolbar'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\ntype ExternalHandlers = {\n onUpdate?: (editor: EditorEvents['update']) => void\n}\n\ninterface EditorProps extends Partial<UseEditorOptions> {\n onChange: (value: string) => void\n value: string\n error?: FieldError\n classes?: EditorControlClasses\n externalHandlers?: ExternalHandlers\n /**\n * Заголовок\n */\n label?: string\n helperText?: string | ReactElement\n /**\n * Лимит символов\n */\n limit?: number\n /**\n * Сделать текстовый редактор маленьким\n */\n small?: boolean\n}\n\ntype EditorRef = React.ElementRef<typeof EditorContent>\n\nconst DEFAULT_LIMIT = Number.MAX_SAFE_INTEGER\n\nexport const Editor = forwardRef<EditorRef, EditorProps>(\n (\n {\n onChange,\n value = '',\n label,\n limit,\n error,\n classes,\n editable,\n helperText,\n shouldRerenderOnTransaction = true,\n externalHandlers,\n small,\n ...props\n },\n ref\n ) => {\n const { onUpdate: externalOnUpdate } = externalHandlers || {}\n\n const editor = useEditor({\n extensions: [\n ...editorConfig,\n CharacterCount.configure({\n limit: limit ?? DEFAULT_LIMIT\n })\n ],\n editable: editable,\n content: value,\n onUpdate: (props) => {\n const { editor } = props\n const content = editor?.getText() ? editor?.getHTML() : ''\n onChange(content)\n\n if (externalOnUpdate) {\n externalOnUpdate(props)\n }\n },\n editorProps: {\n transformPastedText(text) {\n return text.replace(/\\xA0/g, ' ')\n },\n transformPastedHTML(html) {\n return html.replace(/\\xA0/g, ' ')\n },\n attributes: {\n spellcheck: 'false',\n class: cn(\n 'p-4 outline-none bg-color-blue-grey-100 min-h-[240px] max-h-[500px] customScrollbar-y overflow-y-auto break-keep',\n classes?.editor,\n { 'max-h-[80px] min-h-full': small }\n )\n }\n },\n shouldRerenderOnTransaction,\n ...props\n })\n\n useEffect(() => {\n if (editor && editor.getHTML() !== value) {\n editor.commands.setContent(value)\n }\n }, [editor, value])\n\n if (!editor) {\n return null\n }\n\n return (\n <div className={cn('flex w-full flex-col', classes?.root)}>\n <div\n className={cn('relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200', classes?.wrapper)}\n >\n <Toolbar editor={editor} />\n {!value && <p className={cn('absolute left-4 top-16 z-10 text-color-disabled', classes?.label)}>{label}</p>}\n <EditorContent ref={ref} editor={editor} />\n {limit && (\n <p className='absolute bottom-4 right-4 text-color-disabled'>\n {editor.storage.characterCount.characters()} / {limit} символов\n </p>\n )}\n </div>\n\n <MessageView\n className={classes?.message}\n intent={error?.message ? 'error' : 'simple'}\n text={error?.message || helperText}\n disabled={!editable}\n />\n </div>\n )\n }\n)\n"],"names":["DEFAULT_LIMIT","Editor","forwardRef","onChange","value","label","limit","error","classes","editable","helperText","shouldRerenderOnTransaction","externalHandlers","small","props","ref","externalOnUpdate","editor","useEditor","editorConfig","CharacterCount","content","text","html","cn","useEffect","jsxs","jsx","Toolbar","EditorContent","MessageView"],"mappings":"yvDAqCA,MAAMA,EAAgB,OAAO,iBAEhBC,GAASC,EACpB,CACE,CACE,SAAAC,EACA,MAAAC,EAAQ,GACR,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,WAAAC,EACA,4BAAAC,EAA8B,GAC9B,iBAAAC,EACA,MAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,SAAUC,CAAA,EAAqBJ,GAAoB,CAAA,EAErDK,EAASC,EAAU,CACvB,WAAY,CACV,GAAGC,EACHC,EAAe,UAAU,CACvB,MAAOd,GAASN,CAAA,CACjB,CAAA,EAEH,SAAAS,EACA,QAASL,EACT,SAAWU,GAAU,CACnB,KAAM,CAAE,OAAAG,CAAAA,EAAWH,EACbO,EAAUJ,GAAAA,MAAAA,EAAQ,UAAYA,GAAAA,YAAAA,EAAQ,UAAY,GACxDd,EAASkB,CAAO,EAEZL,GACFA,EAAiBF,CAAK,CAE1B,EACA,YAAa,CACX,oBAAoBQ,EAAM,CACxB,OAAOA,EAAK,QAAQ,QAAS,GAAG,CAClC,EACA,oBAAoBC,EAAM,CACxB,OAAOA,EAAK,QAAQ,QAAS,GAAG,CAClC,EACA,WAAY,CACV,WAAY,QACZ,MAAOC,EACL,mHACAhB,GAAA,YAAAA,EAAS,OACT,CAAE,0BAA2BK,CAAA,CAAM,CACrC,CACF,EAEF,4BAAAF,EACA,GAAGG,CAAA,CACJ,EAQD,OANAW,EAAU,IAAM,CACVR,GAAUA,EAAO,QAAA,IAAcb,GACjCa,EAAO,SAAS,WAAWb,CAAK,CAEpC,EAAG,CAACa,EAAQb,CAAK,CAAC,EAEba,IAKF,MAAA,CAAI,UAAWO,EAAG,uBAAwBhB,GAAA,YAAAA,EAAS,IAAI,EACtD,SAAA,CAAAkB,EAAC,MAAA,CACC,UAAWF,EAAG,oFAAqFhB,GAAA,YAAAA,EAAS,OAAO,EAEnH,SAAA,CAAAmB,EAACC,GAAQ,OAAAX,EAAgB,EACxB,CAACb,GAASuB,EAAC,IAAA,CAAE,UAAWH,EAAG,kDAAmDhB,GAAA,YAAAA,EAAS,KAAK,EAAI,SAAAH,CAAA,CAAM,EACvGsB,EAACE,EAAA,CAAc,IAAAd,EAAU,OAAAE,CAAA,CAAgB,EACxCX,GACCoB,EAAC,IAAA,CAAE,UAAU,gDACV,SAAA,CAAAT,EAAO,QAAQ,eAAe,WAAA,EAAa,MAAIX,EAAM,WAAA,CAAA,CACxD,CAAA,CAAA,CAAA,EAIJqB,EAACG,EAAA,CACC,UAAWtB,GAAA,YAAAA,EAAS,QACpB,OAAQD,GAAA,MAAAA,EAAO,QAAU,QAAU,SACnC,MAAMA,GAAA,YAAAA,EAAO,UAAWG,EACxB,SAAU,CAACD,CAAA,CAAA,CACb,EACF,EAxBO,IA0BX,CACF"}
1
+ {"version":3,"file":"Editor.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Editor.tsx"],"sourcesContent":["import { forwardRef, type ReactElement, useEffect } from 'react'\nimport { type FieldError } from 'react-hook-form'\nimport CharacterCount from '@tiptap/extension-character-count'\nimport { EditorContent, type EditorEvents, useEditor, type UseEditorOptions } from '@tiptap/react'\nimport { MessageView } from '../../../ui'\nimport { type EditorControlClasses } from '../EditorControl'\nimport { editorConfig } from '../model'\nimport { Toolbar } from './Toolbar'\nimport { cn } from '$/shared/utils'\ntype ExternalHandlers = {\n onUpdate?: (editor: EditorEvents['update']) => void\n}\n\ninterface EditorProps extends Partial<UseEditorOptions> {\n onChange: (value: string) => void\n value: string\n error?: FieldError\n classes?: EditorControlClasses\n externalHandlers?: ExternalHandlers\n label?: string\n helperText?: string | ReactElement\n /**\n * Лимит символов\n */\n limit?: number\n /**\n * Сделать текстовый редактор маленьким\n */\n small?: boolean\n}\n\ntype EditorRef = React.ElementRef<typeof EditorContent>\n\nconst DEFAULT_LIMIT = Number.MAX_SAFE_INTEGER\n\nexport const Editor = forwardRef<EditorRef, EditorProps>(\n (\n {\n onChange,\n value = '',\n label,\n limit,\n error,\n classes,\n editable,\n helperText,\n shouldRerenderOnTransaction = true,\n externalHandlers,\n small,\n ...props\n },\n ref\n ) => {\n const { onUpdate: externalOnUpdate } = externalHandlers || {}\n\n const editor = useEditor({\n extensions: [\n ...editorConfig,\n CharacterCount.configure({\n limit: limit ?? DEFAULT_LIMIT\n })\n ],\n editable: editable,\n content: value,\n onUpdate: (props) => {\n const { editor } = props\n const content = editor?.getText() ? editor?.getHTML() : ''\n onChange(content)\n\n if (externalOnUpdate) {\n externalOnUpdate(props)\n }\n },\n editorProps: {\n transformPastedText(text) {\n return text.replace(/\\xA0/g, ' ')\n },\n transformPastedHTML(html) {\n return html.replace(/\\xA0/g, ' ')\n },\n attributes: {\n spellcheck: 'false',\n class: cn(\n 'p-4 outline-none bg-color-blue-grey-100 min-h-[240px] max-h-[500px] customScrollbar-y overflow-y-auto break-keep',\n classes?.editor,\n { 'max-h-[80px] min-h-full': small }\n )\n }\n },\n shouldRerenderOnTransaction,\n ...props\n })\n\n useEffect(() => {\n if (editor && editor.getHTML() !== value) {\n editor.commands.setContent(value)\n }\n }, [editor, value])\n\n if (!editor) {\n return null\n }\n\n return (\n <div className={cn('flex w-full flex-col', classes?.root)}>\n <div\n className={cn('relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200', classes?.wrapper)}\n >\n <Toolbar editor={editor} />\n {!value && <p className={cn('absolute left-4 top-16 z-10 text-color-disabled', classes?.label)}>{label}</p>}\n <EditorContent ref={ref} editor={editor} />\n {limit && (\n <p className='absolute bottom-4 right-4 text-color-disabled'>\n {editor.storage.characterCount.characters()} / {limit} символов\n </p>\n )}\n </div>\n\n <MessageView\n className={classes?.message}\n intent={error?.message ? 'error' : 'simple'}\n text={error?.message || helperText}\n disabled={!editable}\n />\n </div>\n )\n }\n)\n"],"names":["DEFAULT_LIMIT","Editor","forwardRef","onChange","value","label","limit","error","classes","editable","helperText","shouldRerenderOnTransaction","externalHandlers","small","props","ref","externalOnUpdate","editor","useEditor","editorConfig","CharacterCount","content","text","html","cn","useEffect","jsxs","jsx","Toolbar","EditorContent","MessageView"],"mappings":"wxDAiCA,MAAMA,EAAgB,OAAO,iBAEhBC,GAASC,EACpB,CACE,CACE,SAAAC,EACA,MAAAC,EAAQ,GACR,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,WAAAC,EACA,4BAAAC,EAA8B,GAC9B,iBAAAC,EACA,MAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,SAAUC,CAAA,EAAqBJ,GAAoB,CAAA,EAErDK,EAASC,EAAU,CACvB,WAAY,CACV,GAAGC,EACHC,EAAe,UAAU,CACvB,MAAOd,GAASN,CAAA,CACjB,CAAA,EAEH,SAAAS,EACA,QAASL,EACT,SAAWU,GAAU,CACnB,KAAM,CAAE,OAAAG,CAAAA,EAAWH,EACbO,EAAUJ,GAAAA,MAAAA,EAAQ,UAAYA,GAAAA,YAAAA,EAAQ,UAAY,GACxDd,EAASkB,CAAO,EAEZL,GACFA,EAAiBF,CAAK,CAE1B,EACA,YAAa,CACX,oBAAoBQ,EAAM,CACxB,OAAOA,EAAK,QAAQ,QAAS,GAAG,CAClC,EACA,oBAAoBC,EAAM,CACxB,OAAOA,EAAK,QAAQ,QAAS,GAAG,CAClC,EACA,WAAY,CACV,WAAY,QACZ,MAAOC,EACL,mHACAhB,GAAA,YAAAA,EAAS,OACT,CAAE,0BAA2BK,CAAA,CAAM,CACrC,CACF,EAEF,4BAAAF,EACA,GAAGG,CAAA,CACJ,EAQD,OANAW,EAAU,IAAM,CACVR,GAAUA,EAAO,QAAA,IAAcb,GACjCa,EAAO,SAAS,WAAWb,CAAK,CAEpC,EAAG,CAACa,EAAQb,CAAK,CAAC,EAEba,IAKF,MAAA,CAAI,UAAWO,EAAG,uBAAwBhB,GAAA,YAAAA,EAAS,IAAI,EACtD,SAAA,CAAAkB,EAAC,MAAA,CACC,UAAWF,EAAG,oFAAqFhB,GAAA,YAAAA,EAAS,OAAO,EAEnH,SAAA,CAAAmB,EAACC,GAAQ,OAAAX,EAAgB,EACxB,CAACb,GAASuB,EAAC,IAAA,CAAE,UAAWH,EAAG,kDAAmDhB,GAAA,YAAAA,EAAS,KAAK,EAAI,SAAAH,CAAA,CAAM,EACvGsB,EAACE,EAAA,CAAc,IAAAd,EAAU,OAAAE,CAAA,CAAgB,EACxCX,GACCoB,EAAC,IAAA,CAAE,UAAU,gDACV,SAAA,CAAAT,EAAO,QAAQ,eAAe,WAAA,EAAa,MAAIX,EAAM,WAAA,CAAA,CACxD,CAAA,CAAA,CAAA,EAIJqB,EAACG,EAAA,CACC,UAAWtB,GAAA,YAAAA,EAAS,QACpB,OAAQD,GAAA,MAAAA,EAAO,QAAU,QAAU,SACnC,MAAMA,GAAA,YAAAA,EAAO,UAAWG,EACxB,SAAU,CAACD,CAAA,CAAA,CACb,EACF,EAxBO,IA0BX,CACF"}
@@ -1,2 +1,2 @@
1
- import{jsxs as m,jsx as r}from"react/jsx-runtime";import{SetCoreCommands as e}from"./commands/SetCoreCommands.js";import{SetHeadings as t}from"./commands/SetHeadings.js";import{SetColor as l}from"./commands/SetColor.js";import{SetCustomLink as s}from"./commands/setCustomLink.js";const n=({editor:o})=>m("div",{className:"customScrollbar-y flex w-full items-center gap-2 overflow-x-auto bg-color-blue-grey-200 px-4 py-3",children:[r(e,{editor:o}),r(l,{editor:o}),r(t,{editor:o}),r(s,{editor:o})]});export{n as Toolbar};
1
+ import{jsxs as m,jsx as r}from"react/jsx-runtime";import{SetCoreCommands as t}from"./commands/SetCoreCommands.js";import{SetHeadings as e}from"./commands/SetHeadings.js";import{SetColor as l}from"./commands/SetColor.js";import{SetCustomLink as s}from"./commands/setCustomLink.js";import{SetFontSize as p}from"./commands/SetFontSize.js";const u=({editor:o})=>m("div",{className:"customScrollbar-y flex w-full items-center gap-2 overflow-x-auto bg-color-blue-grey-200 px-4 py-3",children:[r(t,{editor:o}),r(l,{editor:o}),r(e,{editor:o}),r(s,{editor:o}),r(p,{editor:o})]});export{u as Toolbar};
2
2
  //# sourceMappingURL=Toolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Toolbar.tsx"],"sourcesContent":["import { type Editor } from '@tiptap/react'\nimport { SetColor, SetCoreCommands, SetCustomLink, SetHeadings } from './commands'\n\ninterface ToolbarProps {\n editor: Editor\n}\nexport const Toolbar = ({ editor }: ToolbarProps) => {\n return (\n <div className='customScrollbar-y flex w-full items-center gap-2 overflow-x-auto bg-color-blue-grey-200 px-4 py-3'>\n <SetCoreCommands editor={editor} />\n <SetColor editor={editor} />\n <SetHeadings editor={editor} />\n <SetCustomLink editor={editor} />\n </div>\n )\n}\n"],"names":["Toolbar","editor","jsxs","jsx","SetCoreCommands","SetColor","SetHeadings","SetCustomLink"],"mappings":"wRAMO,MAAMA,EAAU,CAAC,CAAE,OAAAC,KAEtBC,EAAC,MAAA,CAAI,UAAU,oGACb,SAAA,CAAAC,EAACC,GAAgB,OAAAH,EAAgB,EACjCE,EAACE,GAAS,OAAAJ,EAAgB,EAC1BE,EAACG,GAAY,OAAAL,EAAgB,EAC7BE,EAACI,GAAc,OAAAN,CAAA,CAAgB,CAAA,EACjC"}
1
+ {"version":3,"file":"Toolbar.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Toolbar.tsx"],"sourcesContent":["import { type Editor } from '@tiptap/react'\nimport { SetColor, SetCoreCommands, SetCustomLink, SetFontSize, SetHeadings } from './commands'\n\ninterface ToolbarProps {\n editor: Editor\n}\nexport const Toolbar = ({ editor }: ToolbarProps) => {\n return (\n <div className='customScrollbar-y flex w-full items-center gap-2 overflow-x-auto bg-color-blue-grey-200 px-4 py-3'>\n <SetCoreCommands editor={editor} />\n <SetColor editor={editor} />\n <SetHeadings editor={editor} />\n <SetCustomLink editor={editor} />\n <SetFontSize editor={editor} />\n </div>\n )\n}\n"],"names":["Toolbar","editor","jsxs","jsx","SetCoreCommands","SetColor","SetHeadings","SetCustomLink","SetFontSize"],"mappings":"gVAMO,MAAMA,EAAU,CAAC,CAAE,OAAAC,KAEtBC,EAAC,MAAA,CAAI,UAAU,oGACb,SAAA,CAAAC,EAACC,GAAgB,OAAAH,EAAgB,EACjCE,EAACE,GAAS,OAAAJ,EAAgB,EAC1BE,EAACG,GAAY,OAAAL,EAAgB,EAC7BE,EAACI,GAAc,OAAAN,EAAgB,EAC/BE,EAACK,GAAY,OAAAP,CAAA,CAAgB,CAAA,EAC/B"}
@@ -1,2 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import{editorAllowedColors as e}from"../../model/helper.js";import{cn as i}from"../../../../../../utils/cn.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react";import{Popover as m}from"../../../../../popover/Popover.js";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as p}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../../uncontrolled/checkbox/Checkbox.js";import"../../../../uncontrolled/combobox/combobox.js";import"../../../../uncontrolled/dayPicker/DayPicker.js";import"../../../../uncontrolled/input/Input.js";import"../../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../../uncontrolled/maskInput/MaskInput.js";import"../../../../uncontrolled/radio/RadioGroup.js";import"../../../../uncontrolled/radio/ui/RadioItem.js";import"../../../../uncontrolled/slider/SliderBase.js";import"../../../../uncontrolled/switch/Switch.js";import"../../../../uncontrolled/textarea/Textarea.js";import"../../../../uncontrolled/uploader/UploaderBase.js";import"../Editor.js";import"../../../input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const L=({editor:t})=>r(m,{classes:{content:"w-full max-w-[500px] bg-color-blue-grey-200 border border-solid border-warm-grey-300",arrowIcon:"fill-dark-hover"},triggerElement:r("span",{title:"Добавить цвет текста",className:"flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",children:r(p,{name:"editor/palette",className:"size-4"})}),children:r("div",{className:"grid grid-cols-6 gap-3",children:e.map(o=>r("button",{type:"button",style:{background:o},onClick:()=>t.chain().focus().setColor(o).run(),className:i("desk-body-regular-m size-6 cursor-pointer rounded-full border border-solid border-transparent text-left outline-none transition-transform hover:scale-105",{"border-warm-grey-300":o==="#FFFFFF"})},o))})});export{L as SetColor};
1
+ import{jsx as r}from"react/jsx-runtime";import"../../model/extensions.js";import"../../model/config.js";import{editorAllowedColors as e}from"../../model/helper.js";import{cn as i}from"../../../../../../utils/cn.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react";import{Popover as m}from"../../../../../popover/Popover.js";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as p}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../../uncontrolled/checkbox/Checkbox.js";import"../../../../uncontrolled/combobox/combobox.js";import"../../../../uncontrolled/dayPicker/DayPicker.js";import"../../../../uncontrolled/input/Input.js";import"../../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../../uncontrolled/maskInput/MaskInput.js";import"../../../../uncontrolled/radio/RadioGroup.js";import"../../../../uncontrolled/radio/ui/RadioItem.js";import"../../../../uncontrolled/slider/SliderBase.js";import"../../../../uncontrolled/switch/Switch.js";import"../../../../uncontrolled/textarea/Textarea.js";import"../../../../uncontrolled/uploader/UploaderBase.js";import"../Editor.js";import"../../../input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const O=({editor:t})=>r(m,{classes:{content:"w-full max-w-[500px] bg-color-blue-grey-200 border border-solid border-warm-grey-300",arrowIcon:"fill-dark-hover"},triggerElement:r("span",{title:"Добавить цвет текста",className:"flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",children:r(p,{name:"editor/palette",className:"size-4"})}),children:r("div",{className:"grid grid-cols-6 gap-3",children:e.map(o=>r("button",{type:"button",style:{background:o},onClick:()=>t.chain().focus().setColor(o).run(),className:i("desk-body-regular-m size-6 cursor-pointer rounded-full border border-solid border-transparent text-left outline-none transition-transform hover:scale-105",{"border-warm-grey-300":o==="#FFFFFF"})},o))})});export{O as SetColor};
2
2
  //# sourceMappingURL=SetColor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetColor.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/SetColor.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { editorAllowedColors } from '../../model/helper'\nimport { Icon, Popover } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ninterface ISetColorProps {\n editor: Editor\n}\n\nexport const SetColor = ({ editor }: ISetColorProps) => {\n return (\n <Popover\n classes={{\n content: 'w-full max-w-[500px] bg-color-blue-grey-200 border border-solid border-warm-grey-300',\n arrowIcon: 'fill-dark-hover'\n }}\n triggerElement={\n <span\n title='Добавить цвет текста'\n className='flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white'\n >\n <Icon name='editor/palette' className='size-4' />\n </span>\n }\n >\n <div className='grid grid-cols-6 gap-3'>\n {editorAllowedColors.map((color) => (\n <button\n key={color}\n type='button'\n style={{ background: color }}\n onClick={() => editor.chain().focus().setColor(color).run()}\n className={cn(\n 'desk-body-regular-m size-6 cursor-pointer rounded-full border border-solid border-transparent text-left outline-none transition-transform hover:scale-105',\n { 'border-warm-grey-300': color === '#FFFFFF' }\n )}\n />\n ))}\n </div>\n </Popover>\n )\n}\n"],"names":["SetColor","editor","jsx","Popover","Icon","editorAllowedColors","color","cn"],"mappings":"umDASO,MAAMA,EAAW,CAAC,CAAE,OAAAC,KAEvBC,EAACC,EAAA,CACC,QAAS,CACP,QAAS,uFACT,UAAW,iBAAA,EAEb,eACED,EAAC,OAAA,CACC,MAAM,uBACN,UAAU,4KAEV,SAAAA,EAACE,EAAA,CAAK,KAAK,iBAAiB,UAAU,QAAA,CAAS,CAAA,CAAA,EAInD,WAAC,MAAA,CAAI,UAAU,yBACZ,SAAAC,EAAoB,IAAKC,GACxBJ,EAAC,SAAA,CAEC,KAAK,SACL,MAAO,CAAE,WAAYI,CAAA,EACrB,QAAS,IAAML,EAAO,MAAA,EAAQ,QAAQ,SAASK,CAAK,EAAE,IAAA,EACtD,UAAWC,EACT,4JACA,CAAE,uBAAwBD,IAAU,SAAA,CAAU,CAChD,EAPKA,CAAA,CASR,CAAA,CACH,CAAA,CAAA"}
1
+ {"version":3,"file":"SetColor.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/SetColor.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { editorAllowedColors } from '../../model'\nimport { Icon, Popover } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ninterface ISetColorProps {\n editor: Editor\n}\n\nexport const SetColor = ({ editor }: ISetColorProps) => {\n return (\n <Popover\n classes={{\n content: 'w-full max-w-[500px] bg-color-blue-grey-200 border border-solid border-warm-grey-300',\n arrowIcon: 'fill-dark-hover'\n }}\n triggerElement={\n <span\n title='Добавить цвет текста'\n className='flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white'\n >\n <Icon name='editor/palette' className='size-4' />\n </span>\n }\n >\n <div className='grid grid-cols-6 gap-3'>\n {editorAllowedColors.map((color) => (\n <button\n key={color}\n type='button'\n style={{ background: color }}\n onClick={() => editor.chain().focus().setColor(color).run()}\n className={cn(\n 'desk-body-regular-m size-6 cursor-pointer rounded-full border border-solid border-transparent text-left outline-none transition-transform hover:scale-105',\n { 'border-warm-grey-300': color === '#FFFFFF' }\n )}\n />\n ))}\n </div>\n </Popover>\n )\n}\n"],"names":["SetColor","editor","jsx","Popover","Icon","editorAllowedColors","color","cn"],"mappings":"uqDASO,MAAMA,EAAW,CAAC,CAAE,OAAAC,KAEvBC,EAACC,EAAA,CACC,QAAS,CACP,QAAS,uFACT,UAAW,iBAAA,EAEb,eACED,EAAC,OAAA,CACC,MAAM,uBACN,UAAU,4KAEV,SAAAA,EAACE,EAAA,CAAK,KAAK,iBAAiB,UAAU,QAAA,CAAS,CAAA,CAAA,EAInD,WAAC,MAAA,CAAI,UAAU,yBACZ,SAAAC,EAAoB,IAAKC,GACxBJ,EAAC,SAAA,CAEC,KAAK,SACL,MAAO,CAAE,WAAYI,CAAA,EACrB,QAAS,IAAML,EAAO,MAAA,EAAQ,QAAQ,SAASK,CAAK,EAAE,IAAA,EACtD,UAAWC,EACT,4JACA,CAAE,uBAAwBD,IAAU,SAAA,CAAU,CAChD,EAPKA,CAAA,CASR,CAAA,CACH,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import{renderEditorPanel as s}from"../../model/helper.js";import{cn as c}from"../../../../../../utils/cn.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import{Hint as n}from"../../../../../hint/Hint.js";import"react";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../../uncontrolled/checkbox/Checkbox.js";import"../../../../uncontrolled/combobox/combobox.js";import"../../../../uncontrolled/dayPicker/DayPicker.js";import"../../../../uncontrolled/input/Input.js";import"../../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../../uncontrolled/maskInput/MaskInput.js";import"../../../../uncontrolled/radio/RadioGroup.js";import"../../../../uncontrolled/radio/ui/RadioItem.js";import"../../../../uncontrolled/slider/SliderBase.js";import"../../../../uncontrolled/switch/Switch.js";import"../../../../uncontrolled/textarea/Textarea.js";import"../../../../uncontrolled/uploader/UploaderBase.js";import"../Editor.js";import"../../../input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const M=({editor:i})=>{var o;return r("div",{className:"flex items-center gap-2",children:(o=s(i))==null?void 0:o.map(({label:t,icon:e,onClick:m,isActive:p})=>r(n,{sideOffset:12,classes:{content:"w-max border border-warm-grey-200 desk-body-regular-s py-1 px-3"},triggerElement:r("span",{onClick:m,className:c("flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white focus:bg-color-primary-focus focus:text-color-white",{"!bg-color-primary-hover !text-color-white":p}),children:e}),children:t},t))})};export{M as SetCoreCommands};
1
+ import{jsx as r}from"react/jsx-runtime";import"../../model/extensions.js";import"../../model/config.js";import{renderEditorPanel as s}from"../../model/helper.js";import{cn as c}from"../../../../../../utils/cn.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import{Hint as n}from"../../../../../hint/Hint.js";import"react";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../../uncontrolled/checkbox/Checkbox.js";import"../../../../uncontrolled/combobox/combobox.js";import"../../../../uncontrolled/dayPicker/DayPicker.js";import"../../../../uncontrolled/input/Input.js";import"../../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../../uncontrolled/maskInput/MaskInput.js";import"../../../../uncontrolled/radio/RadioGroup.js";import"../../../../uncontrolled/radio/ui/RadioItem.js";import"../../../../uncontrolled/slider/SliderBase.js";import"../../../../uncontrolled/switch/Switch.js";import"../../../../uncontrolled/textarea/Textarea.js";import"../../../../uncontrolled/uploader/UploaderBase.js";import"../Editor.js";import"../../../input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const R=({editor:i})=>{var o;return r("div",{className:"flex items-center gap-2",children:(o=s(i))==null?void 0:o.map(({label:t,icon:m,onClick:e,isActive:p})=>r(n,{sideOffset:12,classes:{content:"w-max border border-warm-grey-200 desk-body-regular-s py-1 px-3"},triggerElement:r("span",{onClick:e,className:c("flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white focus:bg-color-primary-focus focus:text-color-white",{"!bg-color-primary-hover !text-color-white":p}),children:m}),children:t},t))})};export{R as SetCoreCommands};
2
2
  //# sourceMappingURL=SetCoreCommands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetCoreCommands.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/SetCoreCommands.tsx"],"sourcesContent":["import { type Editor } from '@tiptap/react'\nimport { renderEditorPanel } from '../../model/helper'\nimport { Hint } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ninterface ISetCoreCommandsProps {\n editor: Editor\n}\n\nexport const SetCoreCommands = ({ editor }: ISetCoreCommandsProps) => {\n return (\n <div className='flex items-center gap-2'>\n {renderEditorPanel(editor)?.map(({ label, icon, onClick, isActive }) => (\n <Hint\n key={label}\n sideOffset={12}\n classes={{\n content: 'w-max border border-warm-grey-200 desk-body-regular-s py-1 px-3'\n }}\n triggerElement={\n <span\n onClick={onClick}\n className={cn(\n 'flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white focus:bg-color-primary-focus focus:text-color-white',\n { '!bg-color-primary-hover !text-color-white': isActive }\n )}\n >\n {icon}\n </span>\n }\n >\n {label}\n </Hint>\n ))}\n </div>\n )\n}\n"],"names":["SetCoreCommands","editor","jsx","label","icon","onClick","isActive","Hint","cn"],"mappings":"yiDASO,MAAMA,EAAkB,CAAC,CAAE,OAAAC,KAAoC,OACpE,OACEC,EAAC,MAAA,CAAI,UAAU,0BACZ,cAAkBD,CAAM,kBAAG,IAAI,CAAC,CAAE,MAAAE,EAAO,KAAAC,EAAM,QAAAC,EAAS,SAAAC,KACvDJ,EAACK,EAAA,CAEC,WAAY,GACZ,QAAS,CACP,QAAS,iEAAA,EAEX,eACEL,EAAC,OAAA,CACC,QAAAG,EACA,UAAWG,EACT,gOACA,CAAE,4CAA6CF,CAAA,CAAS,EAGzD,SAAAF,CAAA,CAAA,EAIJ,SAAAD,CAAA,EAjBIA,CAAA,GAoBX,CAEJ"}
1
+ {"version":3,"file":"SetCoreCommands.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/SetCoreCommands.tsx"],"sourcesContent":["import { type Editor } from '@tiptap/react'\nimport { renderEditorPanel } from '../../model'\nimport { Hint } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ninterface ISetCoreCommandsProps {\n editor: Editor\n}\n\nexport const SetCoreCommands = ({ editor }: ISetCoreCommandsProps) => {\n return (\n <div className='flex items-center gap-2'>\n {renderEditorPanel(editor)?.map(({ label, icon, onClick, isActive }) => (\n <Hint\n key={label}\n sideOffset={12}\n classes={{\n content: 'w-max border border-warm-grey-200 desk-body-regular-s py-1 px-3'\n }}\n triggerElement={\n <span\n onClick={onClick}\n className={cn(\n 'flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white focus:bg-color-primary-focus focus:text-color-white',\n { '!bg-color-primary-hover !text-color-white': isActive }\n )}\n >\n {icon}\n </span>\n }\n >\n {label}\n </Hint>\n ))}\n </div>\n )\n}\n"],"names":["SetCoreCommands","editor","jsx","label","icon","onClick","isActive","Hint","cn"],"mappings":"ymDASO,MAAMA,EAAkB,CAAC,CAAE,OAAAC,KAAoC,OACpE,OACEC,EAAC,MAAA,CAAI,UAAU,0BACZ,cAAkBD,CAAM,kBAAG,IAAI,CAAC,CAAE,MAAAE,EAAO,KAAAC,EAAM,QAAAC,EAAS,SAAAC,KACvDJ,EAACK,EAAA,CAEC,WAAY,GACZ,QAAS,CACP,QAAS,iEAAA,EAEX,eACEL,EAAC,OAAA,CACC,QAAAG,EACA,UAAWG,EACT,gOACA,CAAE,4CAA6CF,CAAA,CAAS,EAGzD,SAAAF,CAAA,CAAA,EAIJ,SAAAD,CAAA,EAjBIA,CAAA,GAoBX,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as l}from"react/jsx-runtime";import{useState as a,useEffect as u}from"react";import"../../model/extensions.js";import"../../model/config.js";import{fontSizesOptions as f}from"../../model/helper.js";import{cn as h}from"../../../../../../utils/cn.js";import{Button as z}from"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import{Popover as S}from"../../../../../popover/Popover.js";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as d}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../../uncontrolled/checkbox/Checkbox.js";import"../../../../uncontrolled/combobox/combobox.js";import"../../../../uncontrolled/dayPicker/DayPicker.js";import"../../../../uncontrolled/input/Input.js";import"../../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../../uncontrolled/maskInput/MaskInput.js";import"../../../../uncontrolled/radio/RadioGroup.js";import"../../../../uncontrolled/radio/ui/RadioItem.js";import"../../../../uncontrolled/slider/SliderBase.js";import"../../../../uncontrolled/switch/Switch.js";import"../../../../uncontrolled/textarea/Textarea.js";import"../../../../uncontrolled/uploader/UploaderBase.js";import"../Editor.js";import"../../../input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const tt=({editor:o})=>{const[n,i]=a(null),r=()=>{const t=p();i(t)};u(()=>{if(!o)return;r();const t=()=>r();return o.on("selectionUpdate",t),o.on("transaction",t),()=>{o.off("selectionUpdate",t),o.off("transaction",t)}},[o]);const s=t=>o.chain().focus().setFontSize(t).run(),m=()=>o.chain().focus().unsetFontSize().run(),p=()=>{const{fontSize:t}=o.getAttributes("textStyle");return t||"16px"};return e(S,{classes:{content:"w-full"},triggerElement:e("span",{title:"Размер шрифта",className:"flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",children:e(d,{name:"editor/fonts",className:"size-4"})}),children:l("div",{className:"flex flex-col gap-3",children:[f.map(({value:t,label:c})=>e("button",{type:"button",onClick:()=>s(t),className:h("text-left",{"text-color-primary-default":n===t}),children:e("span",{children:c})},t)),e(z,{intent:"secondary",size:"sm",type:"button",onClick:m,children:"Сбросить"})]})})};export{tt as SetFontSize};
2
+ //# sourceMappingURL=SetFontSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetFontSize.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/SetFontSize.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport type { Editor } from '@tiptap/react'\nimport { fontSizesOptions } from '../../model'\nimport { Button, Icon, Popover } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport interface SetFontSizeProps {\n editor: Editor\n}\n\nexport const SetFontSize = ({ editor }: SetFontSizeProps) => {\n const [currentSize, setCurrentSize] = useState<string | null>(null)\n\n const updateCurrentSize = () => {\n const size = getCurrentFontSize()\n setCurrentSize(size)\n }\n\n useEffect(() => {\n if (!editor) return\n updateCurrentSize()\n const handleUpdate = () => updateCurrentSize()\n\n editor.on('selectionUpdate', handleUpdate)\n editor.on('transaction', handleUpdate)\n\n return () => {\n editor.off('selectionUpdate', handleUpdate)\n editor.off('transaction', handleUpdate)\n }\n }, [editor])\n\n const handleFontSizeChange = (size: string) => editor.chain().focus().setFontSize(size).run()\n\n const handleRemoveFontSize = () => editor.chain().focus().unsetFontSize().run()\n\n const getCurrentFontSize = () => {\n const { fontSize } = editor.getAttributes('textStyle')\n return fontSize || '16px'\n }\n\n return (\n <Popover\n classes={{ content: 'w-full' }}\n triggerElement={\n <span\n title='Размер шрифта'\n className='flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white'\n >\n <Icon name='editor/fonts' className='size-4' />\n </span>\n }\n >\n <div className='flex flex-col gap-3'>\n {fontSizesOptions.map(({ value, label }) => {\n const isActive = currentSize === value\n return (\n <button\n type='button'\n key={value}\n onClick={() => handleFontSizeChange(value)}\n className={cn('text-left', {\n 'text-color-primary-default': isActive\n })}\n >\n <span>{label}</span>\n </button>\n )\n })}\n\n <Button intent='secondary' size='sm' type='button' onClick={handleRemoveFontSize}>\n Сбросить\n </Button>\n </div>\n </Popover>\n )\n}\n"],"names":["SetFontSize","editor","currentSize","setCurrentSize","useState","updateCurrentSize","size","getCurrentFontSize","useEffect","handleUpdate","handleFontSizeChange","handleRemoveFontSize","fontSize","jsx","Popover","Icon","jsxs","fontSizesOptions","value","label","cn","Button"],"mappings":"iuDAUO,MAAMA,GAAc,CAAC,CAAE,OAAAC,KAA+B,CAC3D,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAwB,IAAI,EAE5DC,EAAoB,IAAM,CAC9B,MAAMC,EAAOC,EAAA,EACbJ,EAAeG,CAAI,CACrB,EAEAE,EAAU,IAAM,CACd,GAAI,CAACP,EAAQ,OACbI,EAAA,EACA,MAAMI,EAAe,IAAMJ,EAAA,EAE3B,OAAAJ,EAAO,GAAG,kBAAmBQ,CAAY,EACzCR,EAAO,GAAG,cAAeQ,CAAY,EAE9B,IAAM,CACXR,EAAO,IAAI,kBAAmBQ,CAAY,EAC1CR,EAAO,IAAI,cAAeQ,CAAY,CACxC,CACF,EAAG,CAACR,CAAM,CAAC,EAEX,MAAMS,EAAwBJ,GAAiBL,EAAO,MAAA,EAAQ,MAAA,EAAQ,YAAYK,CAAI,EAAE,IAAA,EAElFK,EAAuB,IAAMV,EAAO,MAAA,EAAQ,QAAQ,cAAA,EAAgB,IAAA,EAEpEM,EAAqB,IAAM,CAC/B,KAAM,CAAE,SAAAK,CAAA,EAAaX,EAAO,cAAc,WAAW,EACrD,OAAOW,GAAY,MACrB,EAEA,OACEC,EAACC,EAAA,CACC,QAAS,CAAE,QAAS,QAAA,EACpB,eACED,EAAC,OAAA,CACC,MAAM,gBACN,UAAU,4KAEV,SAAAA,EAACE,EAAA,CAAK,KAAK,eAAe,UAAU,QAAA,CAAS,CAAA,CAAA,EAIjD,SAAAC,EAAC,MAAA,CAAI,UAAU,sBACZ,SAAA,CAAAC,EAAiB,IAAI,CAAC,CAAE,MAAAC,EAAO,MAAAC,KAG5BN,EAAC,SAAA,CACC,KAAK,SAEL,QAAS,IAAMH,EAAqBQ,CAAK,EACzC,UAAWE,EAAG,YAAa,CACzB,6BAPWlB,IAAgBgB,CAOG,CAC/B,EAED,SAAAL,EAAC,QAAM,SAAAM,CAAA,CAAM,CAAA,EANRD,CAAA,CASV,EAEDL,EAACQ,EAAA,CAAO,OAAO,YAAY,KAAK,KAAK,KAAK,SAAS,QAASV,EAAsB,SAAA,UAAA,CAElF,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{headingsOptions as n}from"../../model/helper.js";import{Icon as s}from"../../../../../icon/Icon.js";import{KeyboardShortcuts as c}from"../../../../../keyboardShortcuts/KeyboardShortcuts.js";import{Popover as l}from"../../../../../popover/Popover.js";import{cn as a}from"../../../../../../utils/cn.js";const g=({editor:o})=>e(l,{classes:{content:"w-full "},triggerElement:e("span",{title:"Добавить заголовок",className:"flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",children:e(s,{name:"editor/heading",className:"size-4"})}),children:e("div",{className:"flex w-full flex-1 flex-col gap-2",children:n.map(({level:r,shortcuts:t})=>i("div",{className:"flex items-center gap-4 border-b border-solid border-warm-grey-200 pb-4 last:border-none",children:[e("button",{type:"button",onClick:()=>o.chain().focus().toggleHeading({level:r}).run(),className:a("desk-body-regular-l flex size-8 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",{"!bg-color-primary-hover !text-color-white":o.isActive("heading",{level:r})}),children:`H${r}`}),e(c,{keyList:t})]},r))})});export{g as SetHeadings};
1
+ import{jsx as e}from"react/jsx-runtime";import{headingsOptions as t}from"../../model/helper.js";import{Icon as i}from"../../../../../icon/Icon.js";import{Popover as n}from"../../../../../popover/Popover.js";import{cn as s}from"../../../../../../utils/cn.js";const h=({editor:r})=>e(n,{classes:{content:"w-full"},triggerElement:e("span",{title:"Добавить заголовок",className:"flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",children:e(i,{name:"editor/heading",className:"size-4"})}),children:e("div",{className:"flex flex-1 gap-2",children:t.map(o=>e("div",{className:"flex items-center gap-4",children:e("button",{type:"button",onClick:()=>r.chain().focus().toggleHeading({level:o}).run(),className:s("desk-body-regular-l flex size-8 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",{"!bg-color-primary-hover !text-color-white":r.isActive("heading",{level:o})}),children:`H${o}`})},o))})});export{h as SetHeadings};
2
2
  //# sourceMappingURL=SetHeadings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetHeadings.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/SetHeadings.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { headingsOptions } from '../../model/helper'\nimport { Icon } from '$/shared/ui/icon'\nimport { KeyboardShortcuts } from '$/shared/ui/keyboardShortcuts'\nimport { Popover } from '$/shared/ui/popover'\nimport { cn } from '$/shared/utils'\n\ninterface ISetHeadingsProps {\n editor: Editor\n}\n\nexport const SetHeadings = ({ editor }: ISetHeadingsProps) => {\n return (\n <Popover\n classes={{ content: 'w-full ' }}\n triggerElement={\n <span\n title='Добавить заголовок'\n className='flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white'\n >\n <Icon name='editor/heading' className='size-4' />\n </span>\n }\n >\n <div className='flex w-full flex-1 flex-col gap-2'>\n {headingsOptions.map(({ level, shortcuts }) => (\n <div key={level} className='flex items-center gap-4 border-b border-solid border-warm-grey-200 pb-4 last:border-none'>\n <button\n type='button'\n onClick={() => editor.chain().focus().toggleHeading({ level }).run()}\n className={cn(\n 'desk-body-regular-l flex size-8 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white',\n { '!bg-color-primary-hover !text-color-white': editor.isActive('heading', { level }) }\n )}\n >\n {`H${level}`}\n </button>\n\n <KeyboardShortcuts keyList={shortcuts} />\n </div>\n ))}\n </div>\n </Popover>\n )\n}\n"],"names":["SetHeadings","editor","jsx","Popover","Icon","level","shortcuts","jsxs","cn","KeyboardShortcuts"],"mappings":"sWAWO,MAAMA,EAAc,CAAC,CAAE,OAAAC,KAE1BC,EAACC,EAAA,CACC,QAAS,CAAE,QAAS,SAAA,EACpB,eACED,EAAC,OAAA,CACC,MAAM,qBACN,UAAU,4KAEV,SAAAA,EAACE,EAAA,CAAK,KAAK,iBAAiB,UAAU,QAAA,CAAS,CAAA,CAAA,EAInD,SAAAF,EAAC,MAAA,CAAI,UAAU,oCACZ,WAAgB,IAAI,CAAC,CAAE,MAAAG,EAAO,UAAAC,CAAA,IAC7BC,EAAC,MAAA,CAAgB,UAAU,2FACzB,SAAA,CAAAL,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMD,EAAO,QAAQ,QAAQ,cAAc,CAAE,MAAAI,EAAO,EAAE,IAAA,EAC/D,UAAWG,EACT,gMACA,CAAE,4CAA6CP,EAAO,SAAS,UAAW,CAAE,MAAAI,CAAA,CAAO,CAAA,CAAE,EAGtF,aAAIA,CAAK,EAAA,CAAA,EAGZH,EAACO,EAAA,CAAkB,QAASH,CAAA,CAAW,CAAA,CAAA,EAZ/BD,CAaV,CACD,CAAA,CACH,CAAA,CAAA"}
1
+ {"version":3,"file":"SetHeadings.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/SetHeadings.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { headingsOptions } from '../../model/helper'\nimport { Icon } from '$/shared/ui/icon'\nimport { Popover } from '$/shared/ui/popover'\nimport { cn } from '$/shared/utils'\n\ninterface ISetHeadingsProps {\n editor: Editor\n}\n\nexport const SetHeadings = ({ editor }: ISetHeadingsProps) => {\n return (\n <Popover\n classes={{ content: 'w-full' }}\n triggerElement={\n <span\n title='Добавить заголовок'\n className='flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white'\n >\n <Icon name='editor/heading' className='size-4' />\n </span>\n }\n >\n <div className='flex flex-1 gap-2'>\n {headingsOptions.map((level) => (\n <div key={level} className='flex items-center gap-4'>\n <button\n type='button'\n onClick={() => editor.chain().focus().toggleHeading({ level }).run()}\n className={cn(\n 'desk-body-regular-l flex size-8 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white',\n { '!bg-color-primary-hover !text-color-white': editor.isActive('heading', { level }) }\n )}\n >\n {`H${level}`}\n </button>\n </div>\n ))}\n </div>\n </Popover>\n )\n}\n"],"names":["SetHeadings","editor","jsx","Popover","Icon","headingsOptions","level","cn"],"mappings":"kQAUO,MAAMA,EAAc,CAAC,CAAE,OAAAC,KAE1BC,EAACC,EAAA,CACC,QAAS,CAAE,QAAS,QAAA,EACpB,eACED,EAAC,OAAA,CACC,MAAM,qBACN,UAAU,4KAEV,SAAAA,EAACE,EAAA,CAAK,KAAK,iBAAiB,UAAU,QAAA,CAAS,CAAA,CAAA,EAInD,SAAAF,EAAC,MAAA,CAAI,UAAU,oBACZ,SAAAG,EAAgB,IAAKC,GACpBJ,EAAC,MAAA,CAAgB,UAAU,0BACzB,SAAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMD,EAAO,QAAQ,QAAQ,cAAc,CAAE,MAAAK,EAAO,EAAE,IAAA,EAC/D,UAAWC,EACT,gMACA,CAAE,4CAA6CN,EAAO,SAAS,UAAW,CAAE,MAAAK,CAAA,CAAO,CAAA,CAAE,EAGtF,aAAIA,CAAK,EAAA,CAAA,CACZ,EAVQA,CAWV,CACD,CAAA,CACH,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import{SetCoreCommands as r}from"./SetCoreCommands.js";import{SetHeadings as m}from"./SetHeadings.js";import{SetColor as p}from"./SetColor.js";import{SetCustomLink as C}from"./setCustomLink.js";export{p as SetColor,r as SetCoreCommands,C as SetCustomLink,m as SetHeadings};
1
+ import{SetCoreCommands as r}from"./SetCoreCommands.js";import{SetHeadings as m}from"./SetHeadings.js";import{SetColor as f}from"./SetColor.js";import{SetCustomLink as x}from"./setCustomLink.js";import{SetFontSize as C}from"./SetFontSize.js";export{f as SetColor,r as SetCoreCommands,x as SetCustomLink,C as SetFontSize,m as SetHeadings};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setCustomLink.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { z } from 'zod'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, Icon, InputControl, Popover, SwitchControl } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ninterface ISetCustomLinkProps {\n editor: Editor\n}\n\nconst linkSchema = z.object({\n href: z.string().url(),\n underline: z.boolean().optional().default(true)\n})\n\ntype TLinkSchema = z.infer<typeof linkSchema>\n\nexport const SetCustomLink = ({ editor }: ISetCustomLinkProps) => {\n const { control, handleSubmit } = useControlledForm({\n schema: linkSchema,\n defaultValues: {\n href: '',\n underline: true\n }\n })\n\n const onSubmit = (values: TLinkSchema) => {\n editor\n ?.chain()\n .focus()\n .extendMarkRange('link')\n .setLink({\n href: values?.href,\n rel: 'noopener noreferrer',\n target: '_blank',\n class: cn('text-color-primary-default', { 'underline underline-offset-4': values?.underline })\n })\n .run()\n }\n\n return (\n <div>\n <Popover\n classes={{ content: 'w-[360px] max-w-full' }}\n triggerElement={\n <span\n title='Добавить заголовок'\n className={cn(\n 'flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white',\n { '!bg-color-primary-hover !text-color-white': editor.isActive('link') }\n )}\n >\n <Icon name='editor/link' className='size-4' />\n </span>\n }\n >\n <div className='flex flex-1'>\n <form\n onSubmit={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n handleSubmit(onSubmit)(event)\n }}\n className='flex flex-1 flex-col gap-4'\n >\n <InputControl control={control} name='href' label='Введите ссылку' />\n <SwitchControl control={control} name='underline'>\n С подчеркиванием\n </SwitchControl>\n <Button type='submit' size='sm'>\n Сохранить\n </Button>\n </form>\n </div>\n </Popover>\n </div>\n )\n}\n"],"names":["linkSchema","z.object","z.string","z.boolean","SetCustomLink","editor","control","handleSubmit","useControlledForm","onSubmit","values","cn","jsx","Popover","Icon","jsxs","event","InputControl","SwitchControl","Button"],"mappings":"63DAUA,MAAMA,EAAaC,EAAS,CAC1B,KAAMC,EAAE,EAAS,IAAA,EACjB,UAAWC,EAAE,EAAU,SAAA,EAAW,QAAQ,EAAI,CAChD,CAAC,EAIYC,GAAgB,CAAC,CAAE,OAAAC,KAAkC,CAChE,KAAM,CAAE,QAAAC,EAAS,aAAAC,CAAA,EAAiBC,EAAkB,CAClD,OAAQR,EACR,cAAe,CACb,KAAM,GACN,UAAW,EAAA,CACb,CACD,EAEKS,EAAYC,GAAwB,CACxCL,GAAA,MAAAA,EACI,QACD,QACA,gBAAgB,QAChB,QAAQ,CACP,KAAMK,GAAA,YAAAA,EAAQ,KACd,IAAK,sBACL,OAAQ,SACR,MAAOC,EAAG,6BAA8B,CAAE,+BAAgCD,GAAA,YAAAA,EAAQ,UAAW,CAAA,GAE9F,KACL,EAEA,SACG,MAAA,CACC,SAAAE,EAACC,EAAA,CACC,QAAS,CAAE,QAAS,sBAAA,EACpB,eACED,EAAC,OAAA,CACC,MAAM,qBACN,UAAWD,EACT,4KACA,CAAE,4CAA6CN,EAAO,SAAS,MAAM,CAAA,CAAE,EAGzE,SAAAO,EAACE,EAAA,CAAK,KAAK,cAAc,UAAU,QAAA,CAAS,CAAA,CAAA,EAIhD,SAAAF,EAAC,MAAA,CAAI,UAAU,cACb,SAAAG,EAAC,OAAA,CACC,SAAWC,GAAU,CACnBA,EAAM,gBAAA,EACNA,EAAM,YAAY,gBAAA,EAClBT,EAAaE,CAAQ,EAAEO,CAAK,CAC9B,EACA,UAAU,6BAEV,SAAA,CAAAJ,EAACK,EAAA,CAAa,QAAAX,EAAkB,KAAK,OAAO,MAAM,iBAAiB,EACnEM,EAACM,EAAA,CAAc,QAAAZ,EAAkB,KAAK,YAAY,SAAA,mBAElD,IACCa,EAAA,CAAO,KAAK,SAAS,KAAK,KAAK,SAAA,WAAA,CAEhC,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,EAEJ,CAEJ"}
1
+ {"version":3,"file":"setCustomLink.js","sources":["../../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { z } from 'zod'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, Icon, InputControl, Popover, SwitchControl } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ninterface ISetCustomLinkProps {\n editor: Editor\n}\n\nconst linkSchema = z.object({\n href: z.string().url(),\n underline: z.boolean().optional().default(true)\n})\n\ntype LinkSchema = z.infer<typeof linkSchema>\n\nexport const SetCustomLink = ({ editor }: ISetCustomLinkProps) => {\n const { control, handleSubmit } = useControlledForm({\n schema: linkSchema,\n defaultValues: {\n href: '',\n underline: true\n }\n })\n\n const onSubmit = (values: LinkSchema) => {\n editor\n ?.chain()\n .focus()\n .extendMarkRange('link')\n .setLink({\n href: values?.href,\n rel: 'noopener noreferrer',\n target: '_blank',\n class: cn('text-color-primary-default', { 'underline underline-offset-4': values?.underline })\n })\n .run()\n }\n\n return (\n <div>\n <Popover\n classes={{ content: 'w-[360px] max-w-full' }}\n triggerElement={\n <span\n title='Добавить заголовок'\n className={cn(\n 'flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white',\n { '!bg-color-primary-hover !text-color-white': editor.isActive('link') }\n )}\n >\n <Icon name='editor/link' className='size-4' />\n </span>\n }\n >\n <div className='flex flex-1'>\n <form\n onSubmit={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n handleSubmit(onSubmit)(event)\n }}\n className='flex flex-1 flex-col gap-4'\n >\n <InputControl control={control} name='href' label='Введите ссылку' />\n <SwitchControl control={control} name='underline'>\n С подчеркиванием\n </SwitchControl>\n <Button type='submit' size='sm'>\n Сохранить\n </Button>\n </form>\n </div>\n </Popover>\n </div>\n )\n}\n"],"names":["linkSchema","z.object","z.string","z.boolean","SetCustomLink","editor","control","handleSubmit","useControlledForm","onSubmit","values","cn","jsx","Popover","Icon","jsxs","event","InputControl","SwitchControl","Button"],"mappings":"63DAUA,MAAMA,EAAaC,EAAS,CAC1B,KAAMC,EAAE,EAAS,IAAA,EACjB,UAAWC,EAAE,EAAU,SAAA,EAAW,QAAQ,EAAI,CAChD,CAAC,EAIYC,GAAgB,CAAC,CAAE,OAAAC,KAAkC,CAChE,KAAM,CAAE,QAAAC,EAAS,aAAAC,CAAA,EAAiBC,EAAkB,CAClD,OAAQR,EACR,cAAe,CACb,KAAM,GACN,UAAW,EAAA,CACb,CACD,EAEKS,EAAYC,GAAuB,CACvCL,GAAA,MAAAA,EACI,QACD,QACA,gBAAgB,QAChB,QAAQ,CACP,KAAMK,GAAA,YAAAA,EAAQ,KACd,IAAK,sBACL,OAAQ,SACR,MAAOC,EAAG,6BAA8B,CAAE,+BAAgCD,GAAA,YAAAA,EAAQ,UAAW,CAAA,GAE9F,KACL,EAEA,SACG,MAAA,CACC,SAAAE,EAACC,EAAA,CACC,QAAS,CAAE,QAAS,sBAAA,EACpB,eACED,EAAC,OAAA,CACC,MAAM,qBACN,UAAWD,EACT,4KACA,CAAE,4CAA6CN,EAAO,SAAS,MAAM,CAAA,CAAE,EAGzE,SAAAO,EAACE,EAAA,CAAK,KAAK,cAAc,UAAU,QAAA,CAAS,CAAA,CAAA,EAIhD,SAAAF,EAAC,MAAA,CAAI,UAAU,cACb,SAAAG,EAAC,OAAA,CACC,SAAWC,GAAU,CACnBA,EAAM,gBAAA,EACNA,EAAM,YAAY,gBAAA,EAClBT,EAAaE,CAAQ,EAAEO,CAAK,CAC9B,EACA,UAAU,6BAEV,SAAA,CAAAJ,EAACK,EAAA,CAAa,QAAAX,EAAkB,KAAK,OAAO,MAAM,iBAAiB,EACnEM,EAACM,EAAA,CAAc,QAAAZ,EAAkB,KAAK,YAAY,SAAA,mBAElD,IACCa,EAAA,CAAO,KAAK,SAAS,KAAK,KAAK,SAAA,WAAA,CAEhC,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,EAEJ,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/combobox.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef, useRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { useCombobox, useKeyboardNavigation } from './hooks'\nimport type { ChangeHandler, ComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { useClickOutside } from '$/shared/hooks'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon } from '$/shared/ui'\nimport { DropdownList, type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { InputBase, type InputBaseProps } from '$/shared/ui/formElements/uncontrolled/input'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nexport type ComboboxClasses = {\n root?: string\n list?: { floating?: string } & DropdownListClasses\n input?: InputBaseProps['classes']\n}\n\nexport type ExternalHandlers<Multi extends boolean> = {\n changeHandler?: ChangeHandler<Multi>\n clickHandler?: (event: React.MouseEvent<HTMLElement>) => void\n blurHandler?: (event: React.FocusEvent<HTMLElement>) => void\n focusHandler?: (event: React.FocusEvent<HTMLElement>) => void\n inputChangeHandler?: (value: string) => void\n}\n\nexport interface ComboboxProps<Multi extends boolean>\n extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange'>,\n Record<`data-${string}`, unknown> {\n /**\n * Список опций\n */\n options: ComboboxItemOption[]\n /**\n * Выбранное значение\n */\n value?: ComboboxValue<Multi>\n /**\n * Функция для изменения значения\n */\n onChange?: ChangeHandler<Multi>\n /**\n * Свойство управляющее поиском\n */\n searchable?: boolean\n /**\n * Открыть список по умолчанию\n */\n defaultOpen?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<IFieldAttachmentProps>\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: ComboboxItemOption) => string\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Выключено поле\n */\n disabled?: boolean\n /**\n * Только для чтения\n */\n readOnly?: boolean\n /**\n * Дополнительные стили\n */\n classes?: ComboboxClasses\n /**\n * Дополнительные события\n */\n externalHandlers?: ExternalHandlers<Multi>\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Выключить фильтрацию списка\n */\n filterDisabled?: boolean\n}\n\nconst InnerComponent = <Multi extends boolean>(\n {\n options: initialOptions,\n multiple,\n value,\n onChange,\n defaultOpen,\n attachmentProps,\n searchable,\n invalid,\n displayValue,\n label,\n disabled,\n readOnly,\n className,\n externalHandlers,\n inputValue,\n filterDisabled,\n onInputChange: externalInputChangeHandler,\n empty,\n classes\n }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n const { refs, floatingStyles } = useFloating<HTMLInputElement>({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(4)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { open, setOpen, state, changeHandler, options, search, onInputChange, comboboxDisplayValue } = useCombobox({\n multiple,\n value,\n onChange,\n searchable,\n defaultOpen,\n displayValue,\n initialOptions,\n filterDisabled,\n externalHandlers,\n externalInputValue: inputValue,\n externalOnInputChange: externalInputChangeHandler\n })\n\n useKeyboardNavigation({ ref: refs.domReference, openChangeHandler: setOpen })\n\n const getLabel = () => {\n if (!value) return ''\n\n if (multiple && searchable) {\n return comboboxDisplayValue(value)\n } else if (searchable) {\n return search\n } else {\n return comboboxDisplayValue(value)\n }\n }\n\n useClickOutside(containerRef, () => setOpen(false))\n\n return (\n <div ref={containerRef} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n ref={mergeRefs(ref, refs.setReference)}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={externalHandlers?.blurHandler}\n onFocus={externalHandlers?.focusHandler}\n classes={{\n input: cn({\n 'cursor-pointer': !searchable,\n 'cursor-default': disabled,\n 'pointer-events-none': disabled || readOnly\n }),\n ...classes?.input\n }}\n autoComplete='off'\n attachmentProps={{\n icon: (\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open\n })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n />\n\n <AnimatePresence>\n {open && (\n <motion.div\n ref={refs.setFloating}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.1 }}\n className={cn('z-[1000]', floating)}\n style={{ ...floatingStyles, width: containerRef.current?.getBoundingClientRect().width }}\n >\n <DropdownList\n empty={empty}\n options={options}\n multiple={multiple}\n onPick={changeHandler}\n value={state}\n displayValue={displayValue}\n classes={dropdownClasses}\n target={refs.domReference}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n}\n\nexport const Combobox = forwardRef(InnerComponent) as <Multi extends boolean>(\n props: ComboboxProps<Multi> & { ref?: ForwardedRef<HTMLInputElement> }\n) => React.JSX.Element\n"],"names":["InnerComponent","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","empty","classes","ref","floating","dropdownClasses","containerRef","useRef","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","comboboxDisplayValue","useCombobox","useKeyboardNavigation","getLabel","useClickOutside","jsxs","cn","jsx","InputBase","mergeRefs","event","_a","Icon","prev","AnimatePresence","motion","DropdownList","Combobox","forwardRef"],"mappings":"yjEAiGA,MAAMA,GAAiB,CACrB,CACE,QAASC,EACT,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,QAAAC,EACA,aAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,eAAAC,EACA,cAAeC,EACf,MAAAC,EACA,QAAAC,CACF,EACAC,IACG,OACH,KAAM,CAAE,SAAAC,EAAU,GAAGC,IAAoBH,GAAA,YAAAA,EAAS,OAAQ,CAAA,EAEpDI,EAAeC,EAAuB,IAAI,EAE1C,CAAE,KAAAC,EAAM,eAAAC,CAAA,EAAmBC,EAA8B,CAC7D,UAAW,eACX,SAAU,WACV,WAAY,CACVC,EAAK,CACH,SAAU,oBACV,UAAW,EAAA,CACZ,EACDC,GAAO,CAAC,CAAA,EAEV,qBAAsBC,CAAA,CACvB,EAEK,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,cAAAC,EAAe,QAAAC,EAAS,OAAAC,EAAQ,cAAAC,EAAe,qBAAAC,CAAA,EAAyBC,EAAY,CAChH,SAAArC,EACA,MAAAC,EACA,SAAAC,EACA,WAAAG,EACA,YAAAF,EACA,aAAAI,EACA,eAAAR,EACA,eAAAe,EACA,iBAAAF,EACA,mBAAoBC,EACpB,sBAAuBE,CAAA,CACxB,EAEDuB,EAAsB,CAAE,IAAKf,EAAK,aAAc,kBAAmBO,EAAS,EAE5E,MAAMS,EAAW,IACVtC,EAEDD,GAAYK,EACP+B,EAAqBnC,CAAK,EACxBI,EACF6B,EAEAE,EAAqBnC,CAAK,EAPhB,GAWrB,OAAAuC,EAAgBnB,EAAc,IAAMS,EAAQ,EAAK,CAAC,EAGhDW,EAAC,MAAA,CAAI,IAAKpB,EAAc,UAAWqB,EAAG,kBAAmBzB,GAAA,YAAAA,EAAS,KAAMN,CAAS,EAC/E,SAAA,CAAAgC,EAACC,EAAA,CACC,IAAKC,EAAU3B,EAAKK,EAAK,YAAY,EACrC,MAAAf,EACA,QAAAF,EACA,SAAUI,GAAY,CAACL,EACvB,MAAOQ,GAAc0B,EAAA,EACrB,SAAUJ,EACV,SAAA1B,EACA,QAAUqC,GAAU,OAClBhB,EAAQ,EAAI,GACZiB,EAAAnC,GAAA,YAAAA,EAAkB,eAAlB,MAAAmC,EAAA,KAAAnC,EAAiCkC,EACnC,EACA,OAAQlC,GAAA,YAAAA,EAAkB,YAC1B,QAASA,GAAA,YAAAA,EAAkB,aAC3B,QAAS,CACP,MAAO8B,EAAG,CACR,iBAAkB,CAACrC,EACnB,iBAAkBI,EAClB,sBAAuBA,GAAYC,CAAA,CACpC,EACD,GAAGO,GAAA,YAAAA,EAAS,KAAA,EAEd,aAAa,MACb,gBAAiB,CACf,KACE0B,EAACK,EAAA,CACC,KAAK,oBACL,UAAWN,EAAG,yDAA0D,CACtE,aAAcb,CAAA,CACf,CAAA,CAAA,EAGL,YAAa,IAAMC,EAASmB,GAAS,CAACA,CAAI,EAC1C,GAAG7C,CAAA,CACL,CAAA,EAGFuC,EAACO,GACE,SAAArB,GACCc,EAACQ,EAAO,IAAP,CACC,IAAK5B,EAAK,YACV,QAAS,CAAE,QAAS,CAAA,EACpB,QAAS,CAAE,QAAS,CAAA,EACpB,WAAY,CAAE,SAAU,EAAA,EACxB,UAAWmB,EAAG,WAAYvB,CAAQ,EAClC,MAAO,CAAE,GAAGK,EAAgB,OAAOuB,EAAA1B,EAAa,UAAb,YAAA0B,EAAsB,wBAAwB,KAAA,EAEjF,SAAAJ,EAACS,EAAA,CACC,MAAApC,EACA,QAAAiB,EACA,SAAAjC,EACA,OAAQgC,EACR,MAAOD,EACP,aAAAxB,EACA,QAASa,EACT,OAAQG,EAAK,YAAA,CAAA,CACf,CAAA,CACF,CAEJ,CAAA,EACF,CAEJ,EAEa8B,GAAWC,EAAWxD,EAAc"}
1
+ {"version":3,"file":"combobox.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/combobox.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef, useRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { useCombobox, useKeyboardNavigation } from './hooks'\nimport type { ChangeHandler, ComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { useClickOutside } from '$/shared/hooks'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon } from '$/shared/ui'\nimport { DropdownList, type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { InputBase, type InputBaseProps } from '$/shared/ui/formElements/uncontrolled/input'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nexport type ComboboxClasses = {\n root?: string\n list?: { floating?: string } & DropdownListClasses\n input?: InputBaseProps['classes']\n}\n\nexport type ExternalHandlers<Multi extends boolean> = {\n changeHandler?: ChangeHandler<Multi>\n clickHandler?: (event: React.MouseEvent<HTMLElement>) => void\n blurHandler?: (event: React.FocusEvent<HTMLElement>) => void\n focusHandler?: (event: React.FocusEvent<HTMLElement>) => void\n inputChangeHandler?: (value: string) => void\n}\n\nexport interface ComboboxProps<Multi extends boolean>\n extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange'>,\n Record<`data-${string}`, unknown> {\n /**\n * Список опций\n */\n options: ComboboxItemOption[]\n /**\n * Выбранное значение\n */\n value?: ComboboxValue<Multi>\n /**\n * Функция для изменения значения\n */\n onChange?: ChangeHandler<Multi>\n /**\n * Свойство управляющее поиском\n */\n searchable?: boolean\n /**\n * Открыть список по умолчанию\n */\n defaultOpen?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<IFieldAttachmentProps>\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: ComboboxItemOption) => string\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Выключено поле\n */\n disabled?: boolean\n /**\n * Только для чтения\n */\n readOnly?: boolean\n /**\n * Дополнительные стили\n */\n classes?: ComboboxClasses\n /**\n * Дополнительные события\n */\n externalHandlers?: ExternalHandlers<Multi>\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Выключить фильтрацию списка\n */\n filterDisabled?: boolean\n}\n\nconst InnerComponent = <Multi extends boolean>(\n {\n options: initialOptions,\n multiple,\n value,\n onChange,\n defaultOpen,\n attachmentProps,\n searchable,\n invalid,\n displayValue,\n label,\n disabled,\n readOnly,\n className,\n externalHandlers,\n inputValue,\n filterDisabled,\n onInputChange: externalInputChangeHandler,\n empty,\n classes\n }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n const { refs, floatingStyles } = useFloating<HTMLInputElement>({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(4)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { open, setOpen, state, changeHandler, options, search, onInputChange, comboboxDisplayValue } = useCombobox({\n multiple,\n value,\n onChange,\n searchable,\n defaultOpen,\n displayValue,\n initialOptions,\n filterDisabled,\n externalHandlers,\n externalInputValue: inputValue,\n externalOnInputChange: externalInputChangeHandler\n })\n\n useKeyboardNavigation({ ref: refs.domReference, openChangeHandler: setOpen })\n\n const getLabel = () => {\n if (!value) return ''\n\n if (multiple && searchable) {\n return comboboxDisplayValue(value)\n } else if (searchable) {\n return search\n } else {\n return comboboxDisplayValue(value)\n }\n }\n\n useClickOutside(containerRef, () => setOpen(false))\n\n return (\n <div ref={containerRef} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n ref={mergeRefs(ref, refs.setReference)}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={externalHandlers?.blurHandler}\n onFocus={externalHandlers?.focusHandler}\n classes={{\n input: cn({\n 'cursor-pointer': !searchable,\n 'cursor-default': disabled,\n 'pointer-events-none': disabled || readOnly\n }),\n ...classes?.input\n }}\n autoComplete='off'\n attachmentProps={{\n icon: (\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open\n })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n />\n\n <AnimatePresence>\n {open && (\n <motion.div\n ref={refs.setFloating}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.1 }}\n className={cn('z-[1000]', floating)}\n style={{\n ...floatingStyles,\n width: containerRef.current?.getBoundingClientRect().width\n }}\n >\n <DropdownList\n empty={empty}\n options={options}\n multiple={multiple}\n onPick={changeHandler}\n value={state}\n displayValue={displayValue}\n classes={dropdownClasses}\n target={refs.domReference}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n}\n\nexport const Combobox = forwardRef(InnerComponent) as <Multi extends boolean>(\n props: ComboboxProps<Multi> & { ref?: ForwardedRef<HTMLInputElement> }\n) => React.JSX.Element\n"],"names":["InnerComponent","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","empty","classes","ref","floating","dropdownClasses","containerRef","useRef","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","comboboxDisplayValue","useCombobox","useKeyboardNavigation","getLabel","useClickOutside","jsxs","cn","jsx","InputBase","mergeRefs","event","_a","Icon","prev","AnimatePresence","motion","DropdownList","Combobox","forwardRef"],"mappings":"yjEAiGA,MAAMA,GAAiB,CACrB,CACE,QAASC,EACT,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,QAAAC,EACA,aAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,eAAAC,EACA,cAAeC,EACf,MAAAC,EACA,QAAAC,CACF,EACAC,IACG,OACH,KAAM,CAAE,SAAAC,EAAU,GAAGC,IAAoBH,GAAA,YAAAA,EAAS,OAAQ,CAAA,EAEpDI,EAAeC,EAAuB,IAAI,EAE1C,CAAE,KAAAC,EAAM,eAAAC,CAAA,EAAmBC,EAA8B,CAC7D,UAAW,eACX,SAAU,WACV,WAAY,CACVC,EAAK,CACH,SAAU,oBACV,UAAW,EAAA,CACZ,EACDC,GAAO,CAAC,CAAA,EAEV,qBAAsBC,CAAA,CACvB,EAEK,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,cAAAC,EAAe,QAAAC,EAAS,OAAAC,EAAQ,cAAAC,EAAe,qBAAAC,CAAA,EAAyBC,EAAY,CAChH,SAAArC,EACA,MAAAC,EACA,SAAAC,EACA,WAAAG,EACA,YAAAF,EACA,aAAAI,EACA,eAAAR,EACA,eAAAe,EACA,iBAAAF,EACA,mBAAoBC,EACpB,sBAAuBE,CAAA,CACxB,EAEDuB,EAAsB,CAAE,IAAKf,EAAK,aAAc,kBAAmBO,EAAS,EAE5E,MAAMS,EAAW,IACVtC,EAEDD,GAAYK,EACP+B,EAAqBnC,CAAK,EACxBI,EACF6B,EAEAE,EAAqBnC,CAAK,EAPhB,GAWrB,OAAAuC,EAAgBnB,EAAc,IAAMS,EAAQ,EAAK,CAAC,EAGhDW,EAAC,MAAA,CAAI,IAAKpB,EAAc,UAAWqB,EAAG,kBAAmBzB,GAAA,YAAAA,EAAS,KAAMN,CAAS,EAC/E,SAAA,CAAAgC,EAACC,EAAA,CACC,IAAKC,EAAU3B,EAAKK,EAAK,YAAY,EACrC,MAAAf,EACA,QAAAF,EACA,SAAUI,GAAY,CAACL,EACvB,MAAOQ,GAAc0B,EAAA,EACrB,SAAUJ,EACV,SAAA1B,EACA,QAAUqC,GAAU,OAClBhB,EAAQ,EAAI,GACZiB,EAAAnC,GAAA,YAAAA,EAAkB,eAAlB,MAAAmC,EAAA,KAAAnC,EAAiCkC,EACnC,EACA,OAAQlC,GAAA,YAAAA,EAAkB,YAC1B,QAASA,GAAA,YAAAA,EAAkB,aAC3B,QAAS,CACP,MAAO8B,EAAG,CACR,iBAAkB,CAACrC,EACnB,iBAAkBI,EAClB,sBAAuBA,GAAYC,CAAA,CACpC,EACD,GAAGO,GAAA,YAAAA,EAAS,KAAA,EAEd,aAAa,MACb,gBAAiB,CACf,KACE0B,EAACK,EAAA,CACC,KAAK,oBACL,UAAWN,EAAG,yDAA0D,CACtE,aAAcb,CAAA,CACf,CAAA,CAAA,EAGL,YAAa,IAAMC,EAASmB,GAAS,CAACA,CAAI,EAC1C,GAAG7C,CAAA,CACL,CAAA,EAGFuC,EAACO,GACE,SAAArB,GACCc,EAACQ,EAAO,IAAP,CACC,IAAK5B,EAAK,YACV,QAAS,CAAE,QAAS,CAAA,EACpB,QAAS,CAAE,QAAS,CAAA,EACpB,WAAY,CAAE,SAAU,EAAA,EACxB,UAAWmB,EAAG,WAAYvB,CAAQ,EAClC,MAAO,CACL,GAAGK,EACH,OAAOuB,EAAA1B,EAAa,UAAb,YAAA0B,EAAsB,wBAAwB,KAAA,EAGvD,SAAAJ,EAACS,EAAA,CACC,MAAApC,EACA,QAAAiB,EACA,SAAAjC,EACA,OAAQgC,EACR,MAAOD,EACP,aAAAxB,EACA,QAASa,EACT,OAAQG,EAAK,YAAA,CAAA,CACf,CAAA,CACF,CAEJ,CAAA,EACF,CAEJ,EAEa8B,GAAWC,EAAWxD,EAAc"}
@@ -1,2 +1,2 @@
1
- const e={group:{arrows:["arrows/arrowCircle","arrows/arrowDownRight","arrows/arrowLink","arrows/arrowRight","arrows/arrowRotate","arrows/arrowScroll"],brandLogos:["brandLogos/logoBlack","brandLogos/logoBusiness","brandLogos/logoGray","brandLogos/logoInsurance","brandLogos/logoMain","brandLogos/logoWhite"],communication:["communication/phone"],editor:["editor/bold","editor/heading","editor/italic","editor/link","editor/list","editor/palette","editor/redo","editor/removeFormatting","editor/space","editor/strikethrough","editor/typography","editor/underline","editor/undo"],files:["files/border","files/borderError","files/documentFilled","files/documentOutline","files/upload"],general:["general/calendar","general/check","general/close","general/edit","general/heart","general/hiddenEye","general/loginFilled","general/menu","general/plus","general/reorder","general/search","general/shield","general/showEye"],info:["info/helpCircle","info/warningCircle"],logos:["logos/beeline","logos/megafon","logos/mts"],media:["media/desktop","media/mobile"],social:["social/classmates","social/telegram","social/vk"],status:["status/badSmile","status/iconMark","status/iconRetry","status/iconUser","status/succesCircle"]},flatten:["arrows/arrowCircle","arrows/arrowDownRight","arrows/arrowLink","arrows/arrowRight","arrows/arrowRotate","arrows/arrowScroll","brandLogos/logoBlack","brandLogos/logoBusiness","brandLogos/logoGray","brandLogos/logoInsurance","brandLogos/logoMain","brandLogos/logoWhite","communication/phone","editor/bold","editor/heading","editor/italic","editor/link","editor/list","editor/palette","editor/redo","editor/removeFormatting","editor/space","editor/strikethrough","editor/typography","editor/underline","editor/undo","files/border","files/borderError","files/documentFilled","files/documentOutline","files/upload","general/calendar","general/check","general/close","general/edit","general/heart","general/hiddenEye","general/loginFilled","general/menu","general/plus","general/reorder","general/search","general/shield","general/showEye","info/helpCircle","info/warningCircle","logos/beeline","logos/megafon","logos/mts","media/desktop","media/mobile","social/classmates","social/telegram","social/vk","status/badSmile","status/iconMark","status/iconRetry","status/iconUser","status/succesCircle"]};export{e as allowedIcons};
1
+ const e={group:{arrows:["arrows/arrowCircle","arrows/arrowDownRight","arrows/arrowLink","arrows/arrowRight","arrows/arrowRotate","arrows/arrowScroll"],brandLogos:["brandLogos/logoBlack","brandLogos/logoBusiness","brandLogos/logoGray","brandLogos/logoInsurance","brandLogos/logoMain","brandLogos/logoWhite"],communication:["communication/phone"],editor:["editor/bold","editor/fonts","editor/heading","editor/italic","editor/link","editor/list","editor/palette","editor/redo","editor/removeFormatting","editor/space","editor/strikethrough","editor/typography","editor/underline","editor/undo"],files:["files/border","files/borderError","files/documentFilled","files/documentOutline","files/upload"],general:["general/calendar","general/check","general/close","general/edit","general/heart","general/hiddenEye","general/loginFilled","general/menu","general/plus","general/reorder","general/search","general/shield","general/showEye"],info:["info/helpCircle","info/warningCircle"],logos:["logos/beeline","logos/megafon","logos/mts"],media:["media/desktop","media/mobile"],social:["social/classmates","social/telegram","social/vk"],status:["status/badSmile","status/iconMark","status/iconRetry","status/iconUser","status/succesCircle"]},flatten:["arrows/arrowCircle","arrows/arrowDownRight","arrows/arrowLink","arrows/arrowRight","arrows/arrowRotate","arrows/arrowScroll","brandLogos/logoBlack","brandLogos/logoBusiness","brandLogos/logoGray","brandLogos/logoInsurance","brandLogos/logoMain","brandLogos/logoWhite","communication/phone","editor/bold","editor/fonts","editor/heading","editor/italic","editor/link","editor/list","editor/palette","editor/redo","editor/removeFormatting","editor/space","editor/strikethrough","editor/typography","editor/underline","editor/undo","files/border","files/borderError","files/documentFilled","files/documentOutline","files/upload","general/calendar","general/check","general/close","general/edit","general/heart","general/hiddenEye","general/loginFilled","general/menu","general/plus","general/reorder","general/search","general/shield","general/showEye","info/helpCircle","info/warningCircle","logos/beeline","logos/megafon","logos/mts","media/desktop","media/mobile","social/classmates","social/telegram","social/vk","status/badSmile","status/iconMark","status/iconRetry","status/iconUser","status/succesCircle"]};export{e as allowedIcons};
2
2
  //# sourceMappingURL=allowedIcons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allowedIcons.js","sources":["../../../../../lib/shared/ui/icon/allowedIcons.ts"],"sourcesContent":["export type AllowedIcons = (typeof allowedIcons.flatten)[number]\n\nexport const allowedIcons = {\n group: {\n arrows: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll'\n ],\n brandLogos: [\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite'\n ],\n communication: ['communication/phone'],\n editor: [\n 'editor/bold',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo'\n ],\n files: ['files/border', 'files/borderError', 'files/documentFilled', 'files/documentOutline', 'files/upload'],\n general: [\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/heart',\n 'general/hiddenEye',\n 'general/loginFilled',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye'\n ],\n info: ['info/helpCircle', 'info/warningCircle'],\n logos: ['logos/beeline', 'logos/megafon', 'logos/mts'],\n media: ['media/desktop', 'media/mobile'],\n social: ['social/classmates', 'social/telegram', 'social/vk'],\n status: ['status/badSmile', 'status/iconMark', 'status/iconRetry', 'status/iconUser', 'status/succesCircle']\n },\n flatten: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll',\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite',\n 'communication/phone',\n 'editor/bold',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo',\n 'files/border',\n 'files/borderError',\n 'files/documentFilled',\n 'files/documentOutline',\n 'files/upload',\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/heart',\n 'general/hiddenEye',\n 'general/loginFilled',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye',\n 'info/helpCircle',\n 'info/warningCircle',\n 'logos/beeline',\n 'logos/megafon',\n 'logos/mts',\n 'media/desktop',\n 'media/mobile',\n 'social/classmates',\n 'social/telegram',\n 'social/vk',\n 'status/badSmile',\n 'status/iconMark',\n 'status/iconRetry',\n 'status/iconUser',\n 'status/succesCircle'\n ]\n} as const\n"],"names":["allowedIcons"],"mappings":"AAEO,MAAMA,EAAe,CAC1B,MAAO,CACL,OAAQ,CACN,qBACA,wBACA,mBACA,oBACA,qBACA,oBAAA,EAEF,WAAY,CACV,uBACA,0BACA,sBACA,2BACA,sBACA,sBAAA,EAEF,cAAe,CAAC,qBAAqB,EACrC,OAAQ,CACN,cACA,iBACA,gBACA,cACA,cACA,iBACA,cACA,0BACA,eACA,uBACA,oBACA,mBACA,aAAA,EAEF,MAAO,CAAC,eAAgB,oBAAqB,uBAAwB,wBAAyB,cAAc,EAC5G,QAAS,CACP,mBACA,gBACA,gBACA,eACA,gBACA,oBACA,sBACA,eACA,eACA,kBACA,iBACA,iBACA,iBAAA,EAEF,KAAM,CAAC,kBAAmB,oBAAoB,EAC9C,MAAO,CAAC,gBAAiB,gBAAiB,WAAW,EACrD,MAAO,CAAC,gBAAiB,cAAc,EACvC,OAAQ,CAAC,oBAAqB,kBAAmB,WAAW,EAC5D,OAAQ,CAAC,kBAAmB,kBAAmB,mBAAoB,kBAAmB,qBAAqB,CAAA,EAE7G,QAAS,CACP,qBACA,wBACA,mBACA,oBACA,qBACA,qBACA,uBACA,0BACA,sBACA,2BACA,sBACA,uBACA,sBACA,cACA,iBACA,gBACA,cACA,cACA,iBACA,cACA,0BACA,eACA,uBACA,oBACA,mBACA,cACA,eACA,oBACA,uBACA,wBACA,eACA,mBACA,gBACA,gBACA,eACA,gBACA,oBACA,sBACA,eACA,eACA,kBACA,iBACA,iBACA,kBACA,kBACA,qBACA,gBACA,gBACA,YACA,gBACA,eACA,oBACA,kBACA,YACA,kBACA,kBACA,mBACA,kBACA,qBAAA,CAEJ"}
1
+ {"version":3,"file":"allowedIcons.js","sources":["../../../../../lib/shared/ui/icon/allowedIcons.ts"],"sourcesContent":["export type AllowedIcons = (typeof allowedIcons.flatten)[number]\n\nexport const allowedIcons = {\n group: {\n arrows: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll'\n ],\n brandLogos: [\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite'\n ],\n communication: ['communication/phone'],\n editor: [\n 'editor/bold',\n 'editor/fonts',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo'\n ],\n files: ['files/border', 'files/borderError', 'files/documentFilled', 'files/documentOutline', 'files/upload'],\n general: [\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/heart',\n 'general/hiddenEye',\n 'general/loginFilled',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye'\n ],\n info: ['info/helpCircle', 'info/warningCircle'],\n logos: ['logos/beeline', 'logos/megafon', 'logos/mts'],\n media: ['media/desktop', 'media/mobile'],\n social: ['social/classmates', 'social/telegram', 'social/vk'],\n status: ['status/badSmile', 'status/iconMark', 'status/iconRetry', 'status/iconUser', 'status/succesCircle']\n },\n flatten: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll',\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite',\n 'communication/phone',\n 'editor/bold',\n 'editor/fonts',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo',\n 'files/border',\n 'files/borderError',\n 'files/documentFilled',\n 'files/documentOutline',\n 'files/upload',\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/heart',\n 'general/hiddenEye',\n 'general/loginFilled',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye',\n 'info/helpCircle',\n 'info/warningCircle',\n 'logos/beeline',\n 'logos/megafon',\n 'logos/mts',\n 'media/desktop',\n 'media/mobile',\n 'social/classmates',\n 'social/telegram',\n 'social/vk',\n 'status/badSmile',\n 'status/iconMark',\n 'status/iconRetry',\n 'status/iconUser',\n 'status/succesCircle'\n ]\n} as const\n"],"names":["allowedIcons"],"mappings":"AAEO,MAAMA,EAAe,CAC1B,MAAO,CACL,OAAQ,CACN,qBACA,wBACA,mBACA,oBACA,qBACA,oBAAA,EAEF,WAAY,CACV,uBACA,0BACA,sBACA,2BACA,sBACA,sBAAA,EAEF,cAAe,CAAC,qBAAqB,EACrC,OAAQ,CACN,cACA,eACA,iBACA,gBACA,cACA,cACA,iBACA,cACA,0BACA,eACA,uBACA,oBACA,mBACA,aAAA,EAEF,MAAO,CAAC,eAAgB,oBAAqB,uBAAwB,wBAAyB,cAAc,EAC5G,QAAS,CACP,mBACA,gBACA,gBACA,eACA,gBACA,oBACA,sBACA,eACA,eACA,kBACA,iBACA,iBACA,iBAAA,EAEF,KAAM,CAAC,kBAAmB,oBAAoB,EAC9C,MAAO,CAAC,gBAAiB,gBAAiB,WAAW,EACrD,MAAO,CAAC,gBAAiB,cAAc,EACvC,OAAQ,CAAC,oBAAqB,kBAAmB,WAAW,EAC5D,OAAQ,CAAC,kBAAmB,kBAAmB,mBAAoB,kBAAmB,qBAAqB,CAAA,EAE7G,QAAS,CACP,qBACA,wBACA,mBACA,oBACA,qBACA,qBACA,uBACA,0BACA,sBACA,2BACA,sBACA,uBACA,sBACA,cACA,eACA,iBACA,gBACA,cACA,cACA,iBACA,cACA,0BACA,eACA,uBACA,oBACA,mBACA,cACA,eACA,oBACA,uBACA,wBACA,eACA,mBACA,gBACA,gBACA,eACA,gBACA,oBACA,sBACA,eACA,eACA,kBACA,iBACA,iBACA,kBACA,kBACA,qBACA,gBACA,gBACA,YACA,gBACA,eACA,oBACA,kBACA,YACA,kBACA,kBACA,mBACA,kBACA,qBAAA,CAEJ"}
@@ -1,2 +1,2 @@
1
- import o from"../../../../static/arrows/arrowCircle.svg.js";import r from"../../../../static/arrows/arrowDownRight.svg.js";import e from"../../../../static/arrows/arrowLink.svg.js";import i from"../../../../static/arrows/arrowRight.svg.js";import m from"../../../../static/arrows/arrowRotate.svg.js";import t from"../../../../static/arrows/arrowScroll.svg.js";import g from"../../../../static/brandLogos/logoBlack.svg.js";import a from"../../../../static/brandLogos/logoBusiness.svg.js";import l from"../../../../static/brandLogos/logoGray.svg.js";import n from"../../../../static/brandLogos/logoInsurance.svg.js";import p from"../../../../static/brandLogos/logoMain.svg.js";import s from"../../../../static/brandLogos/logoWhite.svg.js";import S from"../../../../static/communication/phone.svg.js";import f from"../../../../static/editor/bold.svg.js";import v from"../../../../static/editor/heading.svg.js";import d from"../../../../static/editor/italic.svg.js";import c from"../../../../static/editor/link.svg.js";import u from"../../../../static/editor/list.svg.js";import h from"../../../../static/editor/palette.svg.js";import w from"../../../../static/editor/redo.svg.js";import L from"../../../../static/editor/removeFormatting.svg.js";import k from"../../../../static/editor/space.svg.js";import b from"../../../../static/editor/strikethrough.svg.js";import y from"../../../../static/editor/typography.svg.js";import C from"../../../../static/editor/underline.svg.js";import R from"../../../../static/editor/undo.svg.js";import B from"../../../../static/files/border.svg.js";import M from"../../../../static/files/borderError.svg.js";import E from"../../../../static/files/documentFilled.svg.js";import A from"../../../../static/files/documentOutline.svg.js";import F from"../../../../static/files/upload.svg.js";import I from"../../../../static/general/calendar.svg.js";import D from"../../../../static/general/check.svg.js";import U from"../../../../static/general/close.svg.js";import H from"../../../../static/general/edit.svg.js";import P from"../../../../static/general/heart.svg.js";import W from"../../../../static/general/hiddenEye.svg.js";import G from"../../../../static/general/loginFilled.svg.js";import O from"../../../../static/general/menu.svg.js";import T from"../../../../static/general/plus.svg.js";import x from"../../../../static/general/reorder.svg.js";import V from"../../../../static/general/search.svg.js";import j from"../../../../static/general/shield.svg.js";import q from"../../../../static/general/showEye.svg.js";import z from"../../../../static/info/helpCircle.svg.js";import J from"../../../../static/info/warningCircle.svg.js";import K from"../../../../static/logos/beeline.svg.js";import N from"../../../../static/logos/megafon.svg.js";import Q from"../../../../static/logos/mts.svg.js";import X from"../../../../static/media/desktop.svg.js";import Y from"../../../../static/media/mobile.svg.js";import Z from"../../../../static/social/classmates.svg.js";import _ from"../../../../static/social/telegram.svg.js";import $ from"../../../../static/social/vk.svg.js";import oo from"../../../../static/status/badSmile.svg.js";import ro from"../../../../static/status/iconMark.svg.js";import eo from"../../../../static/status/iconRetry.svg.js";import io from"../../../../static/status/iconUser.svg.js";import mo from"../../../../static/status/succesCircle.svg.js";const sr={"arrows/arrowCircle":o,"arrows/arrowDownRight":r,"arrows/arrowLink":e,"arrows/arrowRight":i,"arrows/arrowRotate":m,"arrows/arrowScroll":t,"brandLogos/logoBlack":g,"brandLogos/logoBusiness":a,"brandLogos/logoGray":l,"brandLogos/logoInsurance":n,"brandLogos/logoMain":p,"brandLogos/logoWhite":s,"communication/phone":S,"editor/bold":f,"editor/heading":v,"editor/italic":d,"editor/link":c,"editor/list":u,"editor/palette":h,"editor/redo":w,"editor/removeFormatting":L,"editor/space":k,"editor/strikethrough":b,"editor/typography":y,"editor/underline":C,"editor/undo":R,"files/border":B,"files/borderError":M,"files/documentFilled":E,"files/documentOutline":A,"files/upload":F,"general/calendar":I,"general/check":D,"general/close":U,"general/edit":H,"general/heart":P,"general/hiddenEye":W,"general/loginFilled":G,"general/menu":O,"general/plus":T,"general/reorder":x,"general/search":V,"general/shield":j,"general/showEye":q,"info/helpCircle":z,"info/warningCircle":J,"logos/beeline":K,"logos/megafon":N,"logos/mts":Q,"media/desktop":X,"media/mobile":Y,"social/classmates":Z,"social/telegram":_,"social/vk":$,"status/badSmile":oo,"status/iconMark":ro,"status/iconRetry":eo,"status/iconUser":io,"status/succesCircle":mo};export{sr as iconsMap};
1
+ import o from"../../../../static/arrows/arrowCircle.svg.js";import r from"../../../../static/arrows/arrowDownRight.svg.js";import e from"../../../../static/arrows/arrowLink.svg.js";import i from"../../../../static/arrows/arrowRight.svg.js";import m from"../../../../static/arrows/arrowRotate.svg.js";import t from"../../../../static/arrows/arrowScroll.svg.js";import g from"../../../../static/brandLogos/logoBlack.svg.js";import a from"../../../../static/brandLogos/logoBusiness.svg.js";import l from"../../../../static/brandLogos/logoGray.svg.js";import n from"../../../../static/brandLogos/logoInsurance.svg.js";import p from"../../../../static/brandLogos/logoMain.svg.js";import s from"../../../../static/brandLogos/logoWhite.svg.js";import f from"../../../../static/communication/phone.svg.js";import S from"../../../../static/editor/bold.svg.js";import v from"../../../../static/editor/fonts.svg.js";import d from"../../../../static/editor/heading.svg.js";import c from"../../../../static/editor/italic.svg.js";import u from"../../../../static/editor/link.svg.js";import h from"../../../../static/editor/list.svg.js";import w from"../../../../static/editor/palette.svg.js";import L from"../../../../static/editor/redo.svg.js";import k from"../../../../static/editor/removeFormatting.svg.js";import b from"../../../../static/editor/space.svg.js";import y from"../../../../static/editor/strikethrough.svg.js";import C from"../../../../static/editor/typography.svg.js";import R from"../../../../static/editor/underline.svg.js";import B from"../../../../static/editor/undo.svg.js";import M from"../../../../static/files/border.svg.js";import E from"../../../../static/files/borderError.svg.js";import F from"../../../../static/files/documentFilled.svg.js";import A from"../../../../static/files/documentOutline.svg.js";import I from"../../../../static/files/upload.svg.js";import D from"../../../../static/general/calendar.svg.js";import U from"../../../../static/general/check.svg.js";import H from"../../../../static/general/close.svg.js";import P from"../../../../static/general/edit.svg.js";import W from"../../../../static/general/heart.svg.js";import G from"../../../../static/general/hiddenEye.svg.js";import O from"../../../../static/general/loginFilled.svg.js";import T from"../../../../static/general/menu.svg.js";import x from"../../../../static/general/plus.svg.js";import V from"../../../../static/general/reorder.svg.js";import j from"../../../../static/general/search.svg.js";import q from"../../../../static/general/shield.svg.js";import z from"../../../../static/general/showEye.svg.js";import J from"../../../../static/info/helpCircle.svg.js";import K from"../../../../static/info/warningCircle.svg.js";import N from"../../../../static/logos/beeline.svg.js";import Q from"../../../../static/logos/megafon.svg.js";import X from"../../../../static/logos/mts.svg.js";import Y from"../../../../static/media/desktop.svg.js";import Z from"../../../../static/media/mobile.svg.js";import _ from"../../../../static/social/classmates.svg.js";import $ from"../../../../static/social/telegram.svg.js";import oo from"../../../../static/social/vk.svg.js";import ro from"../../../../static/status/badSmile.svg.js";import eo from"../../../../static/status/iconMark.svg.js";import io from"../../../../static/status/iconRetry.svg.js";import mo from"../../../../static/status/iconUser.svg.js";import to from"../../../../static/status/succesCircle.svg.js";const Sr={"arrows/arrowCircle":o,"arrows/arrowDownRight":r,"arrows/arrowLink":e,"arrows/arrowRight":i,"arrows/arrowRotate":m,"arrows/arrowScroll":t,"brandLogos/logoBlack":g,"brandLogos/logoBusiness":a,"brandLogos/logoGray":l,"brandLogos/logoInsurance":n,"brandLogos/logoMain":p,"brandLogos/logoWhite":s,"communication/phone":f,"editor/bold":S,"editor/fonts":v,"editor/heading":d,"editor/italic":c,"editor/link":u,"editor/list":h,"editor/palette":w,"editor/redo":L,"editor/removeFormatting":k,"editor/space":b,"editor/strikethrough":y,"editor/typography":C,"editor/underline":R,"editor/undo":B,"files/border":M,"files/borderError":E,"files/documentFilled":F,"files/documentOutline":A,"files/upload":I,"general/calendar":D,"general/check":U,"general/close":H,"general/edit":P,"general/heart":W,"general/hiddenEye":G,"general/loginFilled":O,"general/menu":T,"general/plus":x,"general/reorder":V,"general/search":j,"general/shield":q,"general/showEye":z,"info/helpCircle":J,"info/warningCircle":K,"logos/beeline":N,"logos/megafon":Q,"logos/mts":X,"media/desktop":Y,"media/mobile":Z,"social/classmates":_,"social/telegram":$,"social/vk":oo,"status/badSmile":ro,"status/iconMark":eo,"status/iconRetry":io,"status/iconUser":mo,"status/succesCircle":to};export{Sr as iconsMap};
2
2
  //# sourceMappingURL=iconsMap.js.map