@skbkontur/react-ui 4.3.0 → 4.3.1

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 (118) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/cjs/components/CurrencyInput/CurrencyInput.js +4 -0
  3. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  4. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +2 -0
  5. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js +14 -2
  6. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js.map +1 -1
  7. package/cjs/components/DateInput/DateFragmentsView.js +1 -1
  8. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  9. package/cjs/components/DatePicker/DatePicker.d.ts +1 -1
  10. package/cjs/components/FileUploader/FileUploader.md +8 -1
  11. package/cjs/components/Hint/Hint.d.ts +1 -1
  12. package/cjs/components/Hint/Hint.js.map +1 -1
  13. package/cjs/components/Hint/Hint.md +14 -0
  14. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -1
  15. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +4 -4
  16. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -1
  17. package/cjs/components/ScrollContainer/ScrollContainer.js +1 -1
  18. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  19. package/cjs/components/Toast/Toast.js.map +1 -1
  20. package/cjs/components/Tooltip/Tooltip.d.ts +2 -2
  21. package/cjs/components/Tooltip/Tooltip.js +2 -2
  22. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  23. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  24. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  25. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
  26. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  27. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  28. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  29. package/cjs/internal/InternalMenu/InternalMenu.js +20 -8
  30. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  31. package/cjs/internal/MaskedInput/MaskedInput.d.ts +1 -0
  32. package/cjs/internal/MaskedInput/MaskedInput.js +10 -4
  33. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  34. package/cjs/internal/Menu/Menu.js +7 -3
  35. package/cjs/internal/Menu/Menu.js.map +1 -1
  36. package/cjs/internal/Popup/Popup.d.ts +1 -1
  37. package/cjs/internal/Popup/Popup.js +20 -15
  38. package/cjs/internal/Popup/Popup.js.map +1 -1
  39. package/cjs/internal/Popup/PopupHelper.d.ts +1 -1
  40. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  41. package/cjs/internal/Popup/PopupPin.d.ts +1 -1
  42. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  43. package/cjs/internal/RenderLayer/RenderLayer.d.ts +1 -1
  44. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  45. package/cjs/internal/themes/DefaultTheme.js +1 -1
  46. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  47. package/cjs/lib/InstanceWithAnchorElement.d.ts +1 -1
  48. package/cjs/lib/InstanceWithAnchorElement.js.map +1 -1
  49. package/cjs/lib/SSRSafe.d.ts +2 -1
  50. package/cjs/lib/SSRSafe.js +9 -1
  51. package/cjs/lib/SSRSafe.js.map +1 -1
  52. package/cjs/lib/listenFocusOutside.d.ts +1 -1
  53. package/cjs/lib/listenFocusOutside.js.map +1 -1
  54. package/cjs/lib/rootNode/getRootNode.d.ts +3 -3
  55. package/cjs/lib/rootNode/getRootNode.js +7 -7
  56. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  57. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +7 -7
  58. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  59. package/cjs/typings/event-types.d.ts +2 -2
  60. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +7 -0
  61. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  62. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js +4 -2
  63. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js.map +1 -1
  64. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +2 -0
  65. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +1 -0
  66. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  67. package/components/DatePicker/DatePicker.d.ts +1 -1
  68. package/components/FileUploader/FileUploader.md +8 -1
  69. package/components/Hint/Hint/Hint.js.map +1 -1
  70. package/components/Hint/Hint.d.ts +1 -1
  71. package/components/Hint/Hint.md +14 -0
  72. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
  73. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  74. package/components/ScrollContainer/ScrollContainer.d.ts +1 -1
  75. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +4 -4
  76. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -1
  77. package/components/Toast/Toast/Toast.js.map +1 -1
  78. package/components/Tooltip/Tooltip/Tooltip.js +2 -2
  79. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  80. package/components/Tooltip/Tooltip.d.ts +2 -2
  81. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  82. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  83. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  84. package/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
  85. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  86. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  87. package/internal/InternalMenu/InternalMenu/InternalMenu.js +16 -6
  88. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  89. package/internal/MaskedInput/MaskedInput/MaskedInput.js +9 -5
  90. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  91. package/internal/MaskedInput/MaskedInput.d.ts +1 -0
  92. package/internal/Menu/Menu/Menu.js +6 -1
  93. package/internal/Menu/Menu/Menu.js.map +1 -1
  94. package/internal/Popup/Popup/Popup.js +20 -12
  95. package/internal/Popup/Popup/Popup.js.map +1 -1
  96. package/internal/Popup/Popup.d.ts +1 -1
  97. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  98. package/internal/Popup/PopupHelper.d.ts +1 -1
  99. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  100. package/internal/Popup/PopupPin.d.ts +1 -1
  101. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  102. package/internal/RenderLayer/RenderLayer.d.ts +1 -1
  103. package/internal/themes/DefaultTheme/DefaultTheme.js +6 -6
  104. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  105. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -1
  106. package/lib/InstanceWithAnchorElement.d.ts +1 -1
  107. package/lib/SSRSafe/SSRSafe.js +7 -0
  108. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  109. package/lib/SSRSafe.d.ts +2 -1
  110. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  111. package/lib/listenFocusOutside.d.ts +1 -1
  112. package/lib/rootNode/getRootNode/getRootNode.js +8 -8
  113. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  114. package/lib/rootNode/getRootNode.d.ts +3 -3
  115. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  116. package/lib/rootNode/rootNodeDecorator.d.ts +7 -7
  117. package/package.json +2 -2
  118. package/typings/event-types.d.ts +2 -2
@@ -1,4 +1,4 @@
1
- "use strict";exports.__esModule = true;exports.globalThat = void 0;exports.isHTMLElement = isHTMLElement;exports.isNode = isNode;exports.safePropTypesInstanceOf = safePropTypesInstanceOf;var PropTypes = _interopRequireWildcard(require("prop-types"));
1
+ "use strict";exports.__esModule = true;exports.globalThat = void 0;exports.isElement = isElement;exports.isHTMLElement = isHTMLElement;exports.isNode = isNode;exports.safePropTypesInstanceOf = safePropTypesInstanceOf;var PropTypes = _interopRequireWildcard(require("prop-types"));
2
2
 
3
3
  var _client = require("./client");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
4
4
 
@@ -12,6 +12,14 @@ getExpectedClass)
12
12
  return PropTypes.any;
13
13
  }
14
14
 
15
+ function isElement(el) {
16
+ if (_client.isBrowser) {
17
+ return el instanceof Element;
18
+ }
19
+
20
+ return false;
21
+ }
22
+
15
23
  function isHTMLElement(el) {
16
24
  if (_client.isBrowser) {
17
25
  return el instanceof HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"sources":["SSRSafe.ts"],"names":["safePropTypesInstanceOf","getExpectedClass","isBrowser","PropTypes","instanceOf","any","isHTMLElement","el","HTMLElement","isNode","node","Node","globalThat","globalThis","global","window","Function"],"mappings":"2LAAA;;AAEA,kC;;AAEO,SAASA,uBAAT;AACLC,gBADK;AAEqB;AAC1B,MAAIC,iBAAJ,EAAe;AACb,WAAOC,SAAS,CAACC,UAAV,CAAqBH,gBAAgB,EAArC,CAAP;AACD;;AAED,SAAOE,SAAS,CAACE,GAAjB;AACD;;AAEM,SAASC,aAAT,CAAuBC,EAAvB,EAAmD;AACxD,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYC,WAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,MAAT,CAAgBC,IAAhB,EAA6C;AAClD,MAAIR,iBAAJ,EAAe;AACb,WAAOQ,IAAI,YAAYC,IAAvB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,IAAMC,UAA6B;AACvC,OAAOC,UAAP,KAAsB,QAAtB,IAAkCA,UAAnC;AACC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAD/B;AAEC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAF/B;AAGAC,QAAQ,CAAC,aAAD,CAAR,EAJK,C","sourcesContent":["import * as PropTypes from 'prop-types';\n\nimport { isBrowser } from './client';\n\nexport function safePropTypesInstanceOf<T>(\n getExpectedClass: () => new (...args: any[]) => T,\n): PropTypes.Requireable<T> {\n if (isBrowser) {\n return PropTypes.instanceOf(getExpectedClass());\n }\n\n return PropTypes.any;\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n if (isBrowser) {\n return el instanceof HTMLElement;\n }\n\n return false;\n}\n\nexport function isNode(node: unknown): node is Node {\n if (isBrowser) {\n return node instanceof Node;\n }\n\n return false;\n}\n\nexport const globalThat: typeof globalThis =\n (typeof globalThis === 'object' && globalThis) ||\n (typeof global === 'object' && global) ||\n (typeof window === 'object' && window) ||\n Function('return this')();\n"]}
1
+ {"version":3,"sources":["SSRSafe.ts"],"names":["safePropTypesInstanceOf","getExpectedClass","isBrowser","PropTypes","instanceOf","any","isElement","el","Element","isHTMLElement","HTMLElement","isNode","node","Node","globalThat","globalThis","global","window","Function"],"mappings":"yNAAA;;AAEA,kC;;AAEO,SAASA,uBAAT;AACLC,gBADK;AAEqB;AAC1B,MAAIC,iBAAJ,EAAe;AACb,WAAOC,SAAS,CAACC,UAAV,CAAqBH,gBAAgB,EAArC,CAAP;AACD;;AAED,SAAOE,SAAS,CAACE,GAAjB;AACD;;AAEM,SAASC,SAAT,CAAmBC,EAAnB,EAA+C;AACpD,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYC,OAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,aAAT,CAAuBF,EAAvB,EAAuD;AAC5D,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYG,WAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,MAAT,CAAgBC,IAAhB,EAA6C;AAClD,MAAIV,iBAAJ,EAAe;AACb,WAAOU,IAAI,YAAYC,IAAvB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,IAAMC,UAA6B;AACvC,OAAOC,UAAP,KAAsB,QAAtB,IAAkCA,UAAnC;AACC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAD/B;AAEC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAF/B;AAGAC,QAAQ,CAAC,aAAD,CAAR,EAJK,C","sourcesContent":["import * as PropTypes from 'prop-types';\n\nimport { isBrowser } from './client';\n\nexport function safePropTypesInstanceOf<T>(\n getExpectedClass: () => new (...args: any[]) => T,\n): PropTypes.Requireable<T> {\n if (isBrowser) {\n return PropTypes.instanceOf(getExpectedClass());\n }\n\n return PropTypes.any;\n}\n\nexport function isElement(el: unknown): el is Element {\n if (isBrowser) {\n return el instanceof Element;\n }\n\n return false;\n}\n\nexport function isHTMLElement(el: unknown): el is HTMLElement {\n if (isBrowser) {\n return el instanceof HTMLElement;\n }\n\n return false;\n}\n\nexport function isNode(node: unknown): node is Node {\n if (isBrowser) {\n return node instanceof Node;\n }\n\n return false;\n}\n\nexport const globalThat: typeof globalThis =\n (typeof globalThis === 'object' && globalThis) ||\n (typeof global === 'object' && global) ||\n (typeof window === 'object' && window) ||\n Function('return this')();\n"]}
@@ -3,6 +3,6 @@ export declare function containsTargetOrRenderContainer(target: Element): (eleme
3
3
  * Searches RenderContainer placed in "rootNode" for "node"
4
4
  */
5
5
  export declare function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null;
6
- export declare function listen(elements: HTMLElement[] | (() => HTMLElement[]), callback: (event: Event) => void): {
6
+ export declare function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void): {
7
7
  remove(): void;
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","isBrowser","readyState","window","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\n\nimport { isBrowser, isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: HTMLElement[] | (() => HTMLElement[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n document.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (isBrowser) {\n if (document.readyState === 'complete') {\n addHandleEvent();\n } else {\n window.addEventListener('load', addHandleEvent);\n }\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: HTMLElement = (event.target || event.srcElement) as HTMLElement;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === document.body ||\n currentNode === document.documentElement ||\n !(currentNode instanceof Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute('data-rendered-container-id');\n if (newContainerId) {\n const nextNode = document.querySelector(`[data-render-container-id~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: HTMLElement[] | (() => HTMLElement[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","isBrowser","readyState","window","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\n\nimport { isBrowser, isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: Element[] | (() => Element[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n document.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (isBrowser) {\n if (document.readyState === 'complete') {\n addHandleEvent();\n } else {\n window.addEventListener('load', addHandleEvent);\n }\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: Element = (event.target || event.srcElement) as Element;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === document.body ||\n currentNode === document.documentElement ||\n !(currentNode instanceof Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute('data-rendered-container-id');\n if (newContainerId) {\n const nextNode = document.querySelector(`[data-render-container-id~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import { Nullable } from '../../typings/utility-types';
3
3
  /**
4
- * Extracts component's root HTMLElement out of it's instance
4
+ * Extracts component's root `Element` out of it's instance
5
5
  * following the "StrictMode support convention" (@see README.md#strictmode, #2518).
6
6
  *
7
7
  * Replaces findDOMNode but falls back to it if "convention" is not respected.
8
8
  *
9
9
  * @param instance Component's instance provided by React.Ref or `this` inside class-components.
10
- * @returns Component's root HTMLElement or null
10
+ * @returns Component's root `Element` or null
11
11
  */
12
- export declare const getRootNode: (instance: Nullable<React.ReactInstance>) => Nullable<HTMLElement>;
12
+ export declare const getRootNode: (instance: Nullable<React.ReactInstance>) => Nullable<Element>;
@@ -9,13 +9,13 @@ var _client = require("../client");
9
9
  var _rootNodeDecorator = require("./rootNodeDecorator"); /* eslint-disable react/no-find-dom-node */
10
10
 
11
11
  /**
12
- * Extracts component's root HTMLElement out of it's instance
12
+ * Extracts component's root `Element` out of it's instance
13
13
  * following the "StrictMode support convention" (@see README.md#strictmode, #2518).
14
14
  *
15
15
  * Replaces findDOMNode but falls back to it if "convention" is not respected.
16
16
  *
17
17
  * @param instance Component's instance provided by React.Ref or `this` inside class-components.
18
- * @returns Component's root HTMLElement or null
18
+ * @returns Component's root `Element` or null
19
19
  */
20
20
 
21
21
  var getRootNode = function getRootNode(instance) {
@@ -25,8 +25,8 @@ var getRootNode = function getRootNode(instance) {
25
25
  return null;
26
26
  }
27
27
 
28
- if ((0, _SSRSafe.isHTMLElement)(instance)) {
29
- // instance can be a HTMLElement already if comming
28
+ if ((0, _SSRSafe.isElement)(instance)) {
29
+ // instance can be a `Element` already if comming
30
30
  // from Refs of intrinsic elements (<div />, <button />, etc.)
31
31
  return instance;
32
32
  }
@@ -36,7 +36,7 @@ var getRootNode = function getRootNode(instance) {
36
36
  if ((0, _rootNodeDecorator.isInstanceWithRootNode)(instance)) {
37
37
  // it happened to be that native Node interface also has
38
38
  // the "getRootNode" method, but we can ignore it here
39
- // because we'd already checked the instance on being an HTMLElement
39
+ // because we'd already checked the instance on being an `Element`
40
40
  // which is a subclass of Node, so, just fixing types here
41
41
  if (!(0, _SSRSafe.isNode)(instance)) {
42
42
  rootNode = instance.getRootNode();
@@ -44,7 +44,7 @@ var getRootNode = function getRootNode(instance) {
44
44
  }
45
45
 
46
46
  if (rootNode !== undefined) {
47
- // at this point, it is rather HTMLElement (what we are looking for)
47
+ // at this point, it is rather `Element` (what we are looking for)
48
48
  // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it
49
49
  return rootNode;
50
50
  }
@@ -55,5 +55,5 @@ var getRootNode = function getRootNode(instance) {
55
55
  rootNode = (0, _reactDom.findDOMNode)(instance);
56
56
 
57
57
  // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it
58
- return (0, _SSRSafe.isHTMLElement)(rootNode) ? rootNode : null;
58
+ return (0, _SSRSafe.isElement)(rootNode) ? rootNode : null;
59
59
  };exports.getRootNode = getRootNode;
@@ -1 +1 @@
1
- {"version":3,"sources":["getRootNode.ts"],"names":["getRootNode","instance","canUseDOM","rootNode","undefined"],"mappings":";AACA;;;;AAIA;AACA;;AAEA,wD,CARA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,EAAoE;AAC7F,MAAI,CAACC,iBAAD,IAAc,CAACD,QAAnB,EAA6B;AAC3B;AACA;AACA,WAAO,IAAP;AACD;;AAED,MAAI,4BAAcA,QAAd,CAAJ,EAA6B;AAC3B;AACA;AACA,WAAOA,QAAP;AACD;;AAED,MAAIE,QAAJ;;AAEA,MAAI,+CAAuBF,QAAvB,CAAJ,EAAsC;AACpC;AACA;AACA;AACA;AACA,QAAI,CAAC,qBAAOA,QAAP,CAAL,EAAuB;AACrBE,MAAAA,QAAQ,GAAGF,QAAQ,CAACD,WAAT,EAAX;AACD;AACF;;AAED,MAAIG,QAAQ,KAAKC,SAAjB,EAA4B;AAC1B;AACA;AACA,WAAOD,QAAP;AACD;;AAED;AACA;AACA;AACAA,EAAAA,QAAQ,GAAG,2BAAYF,QAAZ,CAAX;;AAEA;AACA,SAAO,4BAAcE,QAAd,IAA0BA,QAA1B,GAAqC,IAA5C;AACD,CAtCM,C","sourcesContent":["/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isHTMLElement, isNode } from '../SSRSafe';\nimport { canUseDOM } from '../client';\n\nimport { isInstanceWithRootNode } from './rootNodeDecorator';\n\n/**\n * Extracts component's root HTMLElement out of it's instance\n * following the \"StrictMode support convention\" (@see README.md#strictmode, #2518).\n *\n * Replaces findDOMNode but falls back to it if \"convention\" is not respected.\n *\n * @param instance Component's instance provided by React.Ref or `this` inside class-components.\n * @returns Component's root HTMLElement or null\n */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<HTMLElement> => {\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convinient usage\n return null;\n }\n\n if (isHTMLElement(instance)) {\n // instance can be a HTMLElement already if comming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n // it happened to be that native Node interface also has\n // the \"getRootNode\" method, but we can ignore it here\n // because we'd already checked the instance on being an HTMLElement\n // which is a subclass of Node, so, just fixing types here\n if (!isNode(instance)) {\n rootNode = instance.getRootNode();\n }\n }\n\n if (rootNode !== undefined) {\n // at this point, it is rather HTMLElement (what we are looking for)\n // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it\n return rootNode;\n }\n\n // node is undefined, which means that the instance's root node getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected (by the component itself or its children),\n // so, we have to fall back to the deprecated findDOMNode, which always works but breaks StrictMode\n rootNode = findDOMNode(instance);\n\n // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it\n return isHTMLElement(rootNode) ? rootNode : null;\n};\n"]}
1
+ {"version":3,"sources":["getRootNode.ts"],"names":["getRootNode","instance","canUseDOM","rootNode","undefined"],"mappings":";AACA;;;;AAIA;AACA;;AAEA,wD,CARA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,EAAgE;AACzF,MAAI,CAACC,iBAAD,IAAc,CAACD,QAAnB,EAA6B;AAC3B;AACA;AACA,WAAO,IAAP;AACD;;AAED,MAAI,wBAAUA,QAAV,CAAJ,EAAyB;AACvB;AACA;AACA,WAAOA,QAAP;AACD;;AAED,MAAIE,QAAJ;;AAEA,MAAI,+CAAuBF,QAAvB,CAAJ,EAAsC;AACpC;AACA;AACA;AACA;AACA,QAAI,CAAC,qBAAOA,QAAP,CAAL,EAAuB;AACrBE,MAAAA,QAAQ,GAAGF,QAAQ,CAACD,WAAT,EAAX;AACD;AACF;;AAED,MAAIG,QAAQ,KAAKC,SAAjB,EAA4B;AAC1B;AACA;AACA,WAAOD,QAAP;AACD;;AAED;AACA;AACA;AACAA,EAAAA,QAAQ,GAAG,2BAAYF,QAAZ,CAAX;;AAEA;AACA,SAAO,wBAAUE,QAAV,IAAsBA,QAAtB,GAAiC,IAAxC;AACD,CAtCM,C","sourcesContent":["/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isElement, isNode } from '../SSRSafe';\nimport { canUseDOM } from '../client';\n\nimport { isInstanceWithRootNode } from './rootNodeDecorator';\n\n/**\n * Extracts component's root `Element` out of it's instance\n * following the \"StrictMode support convention\" (@see README.md#strictmode, #2518).\n *\n * Replaces findDOMNode but falls back to it if \"convention\" is not respected.\n *\n * @param instance Component's instance provided by React.Ref or `this` inside class-components.\n * @returns Component's root `Element` or null\n */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<Element> => {\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convinient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be a `Element` already if comming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n // it happened to be that native Node interface also has\n // the \"getRootNode\" method, but we can ignore it here\n // because we'd already checked the instance on being an `Element`\n // which is a subclass of Node, so, just fixing types here\n if (!isNode(instance)) {\n rootNode = instance.getRootNode();\n }\n }\n\n if (rootNode !== undefined) {\n // at this point, it is rather `Element` (what we are looking for)\n // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it\n return rootNode;\n }\n\n // node is undefined, which means that the instance's root node getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected (by the component itself or its children),\n // so, we have to fall back to the deprecated findDOMNode, which always works but breaks StrictMode\n rootNode = findDOMNode(instance);\n\n // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it\n return isElement(rootNode) ? rootNode : null;\n};\n"]}
@@ -6,22 +6,22 @@ export declare type TRootNodeSubscription = {
6
6
  remove: () => void;
7
7
  };
8
8
  export interface InstanceWithRootNode {
9
- getRootNode: () => Nullable<HTMLElement>;
10
- addRootNodeChangeListener?: (callback: (node: Nullable<HTMLElement>) => void) => TRootNodeSubscription;
9
+ getRootNode: () => Nullable<Element>;
10
+ addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
11
11
  }
12
12
  interface ComponentWithDefaultRootNode {
13
- defaultRootNode?: HTMLElement | null;
13
+ defaultRootNode?: Element | null;
14
14
  }
15
15
  interface DecoratableClassComponent extends ComponentWithDefaultRootNode {
16
16
  new (...args: any[]): React.Component;
17
17
  }
18
18
  export declare function rootNode<T extends DecoratableClassComponent>(Component: T): {
19
19
  new (...args: any[]): {
20
- rootNode: Nullable<HTMLElement>;
20
+ rootNode: Nullable<Element>;
21
21
  rootNodeEmitter: EventEmitter<string | symbol, any>;
22
22
  setRootNode: (instance: Nullable<React.ReactInstance>) => void;
23
- getRootNode: () => Nullable<HTMLElement>;
24
- addRootNodeChangeListener: (callback: (node: Nullable<HTMLElement>) => void) => TRootNodeSubscription;
23
+ getRootNode: () => Nullable<Element>;
24
+ addRootNodeChangeListener: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
25
25
  context: any;
26
26
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<{}>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
27
27
  forceUpdate(callback?: (() => void) | undefined): void;
@@ -46,7 +46,7 @@ export declare function rootNode<T extends DecoratableClassComponent>(Component:
46
46
  componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
47
47
  UNSAFE_componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
48
48
  };
49
- defaultRootNode?: HTMLElement | null | undefined;
49
+ defaultRootNode?: Element | null | undefined;
50
50
  } & T;
51
51
  export declare const isInstanceWithRootNode: (instance: unknown) => instance is InstanceWithRootNode;
52
52
  export {};
@@ -1 +1 @@
1
- {"version":3,"sources":["rootNodeDecorator.tsx"],"names":["rootNode","Component","defaultRootNode","rootNodeEmitter","EventEmitter","setRootNode","instance","emit","getRootNode","addRootNodeChangeListener","callback","addListener","remove","removeListener","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name","isInstanceWithRootNode","Boolean","prototype","hasOwnProperty","call"],"mappings":";;AAEA;;;;AAIA,4C,CANA;;;;;;;;;;;;;;;;;;;;;AA2BO,SAASA,QAAT,CAAuDC,SAAvD,EAAqE;AAC1E,MAAMD,QAAQ;;;AAGZ,wBAAmC;AACjC,8FADiC,MAF5BA,QAE4B,GAFMC,SAAS,CAACC,eAEhB,OAD5BC,eAC4B,GADV,IAAIC,qBAAJ,EACU;;;AAI5BC,MAAAA,WAJ4B,GAId,UAACC,QAAD,EAA6C;AAChE,YAAMN,SAAQ,GAAG,8BAAYM,QAAZ,CAAjB;AACA,YAAIN,SAAQ,KAAK,MAAKA,QAAtB,EAAgC;AAC9B,gBAAKA,QAAL,GAAgBA,SAAhB;AACA,gBAAKG,eAAL,CAAqBI,IAArB,CAA0B,QAA1B,EAAoCP,SAApC;AACD;AACF,OAVkC;;AAY5BQ,MAAAA,WAZ4B,GAYd,YAA6B;AAChD,eAAO,MAAKR,QAAZ;AACD,OAdkC;;AAgB5BS,MAAAA,yBAhB4B,GAgBA,UAACC,QAAD,EAA4E;AAC7G,cAAKP,eAAL,CAAqBQ,WAArB,CAAiC,QAAjC,EAA2CD,QAA3C;AACA,eAAO;AACLE,UAAAA,MAAM,EAAE,kBAAM;AACZ,kBAAKT,eAAL,CAAqBU,cAArB,CAAoC,QAApC,EAA8CH,QAA9C;AACD,WAHI,EAAP;;AAKD,OAvBkC,cAElC,CALW,kBAAiBT,SAAjB,CAAd;;;AA6BA,MAAMa,cAAc,GAAGC,MAAM,CAACC,wBAAP,CAAgChB,QAAhC,EAA0C,MAA1C,CAAvB;AACA,MAAI,CAACc,cAAD,IAAmBA,cAAc,CAACG,YAAtC,EAAoD;AAClDF,IAAAA,MAAM,CAACG,cAAP,CAAsBlB,QAAtB,EAAgC,MAAhC,EAAwC,EAAEmB,KAAK,EAAElB,SAAS,CAACmB,IAAnB,EAAxC;AACD;;AAED,SAAOpB,QAAP;AACD;;AAEM,IAAMqB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACf,QAAD,EAAyD;AAC7F,SAAOgB,OAAO,CAAChB,QAAD,CAAP,IAAqBS,MAAM,CAACQ,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCnB,QAArC,EAA+C,aAA/C,CAA5B;AACD,CAFM,C","sourcesContent":["/* eslint-disable react/display-name */\nimport React from 'react';\nimport EventEmitter from 'eventemitter3';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { getRootNode } from './getRootNode';\n\nexport type TSetRootNode = (e: Nullable<React.ReactNode>) => void;\n\nexport type TRootNodeSubscription = {\n remove: () => void;\n};\n\nexport interface InstanceWithRootNode {\n getRootNode: () => Nullable<HTMLElement>;\n addRootNodeChangeListener?: (callback: (node: Nullable<HTMLElement>) => void) => TRootNodeSubscription;\n}\n\ninterface ComponentWithDefaultRootNode {\n defaultRootNode?: HTMLElement | null;\n}\n\ninterface DecoratableClassComponent extends ComponentWithDefaultRootNode {\n new (...args: any[]): React.Component;\n}\n\nexport function rootNode<T extends DecoratableClassComponent>(Component: T) {\n const rootNode = class extends Component implements InstanceWithRootNode {\n public rootNode: Nullable<HTMLElement> = Component.defaultRootNode;\n public rootNodeEmitter = new EventEmitter();\n public constructor(...args: any[]) {\n super(args[0]);\n }\n\n public setRootNode = (instance: Nullable<React.ReactInstance>) => {\n const rootNode = getRootNode(instance);\n if (rootNode !== this.rootNode) {\n this.rootNode = rootNode;\n this.rootNodeEmitter.emit('change', rootNode);\n }\n };\n\n public getRootNode = (): Nullable<HTMLElement> => {\n return this.rootNode;\n };\n\n public addRootNodeChangeListener = (callback: (node: Nullable<HTMLElement>) => void): TRootNodeSubscription => {\n this.rootNodeEmitter.addListener('change', callback);\n return {\n remove: () => {\n this.rootNodeEmitter.removeListener('change', callback);\n },\n };\n };\n };\n\n const nameDescriptor = Object.getOwnPropertyDescriptor(rootNode, 'name');\n if (!nameDescriptor || nameDescriptor.configurable) {\n Object.defineProperty(rootNode, 'name', { value: Component.name });\n }\n\n return rootNode;\n}\n\nexport const isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n"]}
1
+ {"version":3,"sources":["rootNodeDecorator.tsx"],"names":["rootNode","Component","defaultRootNode","rootNodeEmitter","EventEmitter","setRootNode","instance","emit","getRootNode","addRootNodeChangeListener","callback","addListener","remove","removeListener","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name","isInstanceWithRootNode","Boolean","prototype","hasOwnProperty","call"],"mappings":";;AAEA;;;;AAIA,4C,CANA;;;;;;;;;;;;;;;;;;;;;AA2BO,SAASA,QAAT,CAAuDC,SAAvD,EAAqE;AAC1E,MAAMD,QAAQ;;;AAGZ,wBAAmC;AACjC,8FADiC,MAF5BA,QAE4B,GAFEC,SAAS,CAACC,eAEZ,OAD5BC,eAC4B,GADV,IAAIC,qBAAJ,EACU;;;AAI5BC,MAAAA,WAJ4B,GAId,UAACC,QAAD,EAA6C;AAChE,YAAMN,SAAQ,GAAG,8BAAYM,QAAZ,CAAjB;AACA,YAAIN,SAAQ,KAAK,MAAKA,QAAtB,EAAgC;AAC9B,gBAAKA,QAAL,GAAgBA,SAAhB;AACA,gBAAKG,eAAL,CAAqBI,IAArB,CAA0B,QAA1B,EAAoCP,SAApC;AACD;AACF,OAVkC;;AAY5BQ,MAAAA,WAZ4B,GAYd,YAAyB;AAC5C,eAAO,MAAKR,QAAZ;AACD,OAdkC;;AAgB5BS,MAAAA,yBAhB4B,GAgBA,UAACC,QAAD,EAAwE;AACzG,cAAKP,eAAL,CAAqBQ,WAArB,CAAiC,QAAjC,EAA2CD,QAA3C;AACA,eAAO;AACLE,UAAAA,MAAM,EAAE,kBAAM;AACZ,kBAAKT,eAAL,CAAqBU,cAArB,CAAoC,QAApC,EAA8CH,QAA9C;AACD,WAHI,EAAP;;AAKD,OAvBkC,cAElC,CALW,kBAAiBT,SAAjB,CAAd;;;AA6BA,MAAMa,cAAc,GAAGC,MAAM,CAACC,wBAAP,CAAgChB,QAAhC,EAA0C,MAA1C,CAAvB;AACA,MAAI,CAACc,cAAD,IAAmBA,cAAc,CAACG,YAAtC,EAAoD;AAClDF,IAAAA,MAAM,CAACG,cAAP,CAAsBlB,QAAtB,EAAgC,MAAhC,EAAwC,EAAEmB,KAAK,EAAElB,SAAS,CAACmB,IAAnB,EAAxC;AACD;;AAED,SAAOpB,QAAP;AACD;;AAEM,IAAMqB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACf,QAAD,EAAyD;AAC7F,SAAOgB,OAAO,CAAChB,QAAD,CAAP,IAAqBS,MAAM,CAACQ,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCnB,QAArC,EAA+C,aAA/C,CAA5B;AACD,CAFM,C","sourcesContent":["/* eslint-disable react/display-name */\nimport React from 'react';\nimport EventEmitter from 'eventemitter3';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { getRootNode } from './getRootNode';\n\nexport type TSetRootNode = (e: Nullable<React.ReactNode>) => void;\n\nexport type TRootNodeSubscription = {\n remove: () => void;\n};\n\nexport interface InstanceWithRootNode {\n getRootNode: () => Nullable<Element>;\n addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;\n}\n\ninterface ComponentWithDefaultRootNode {\n defaultRootNode?: Element | null;\n}\n\ninterface DecoratableClassComponent extends ComponentWithDefaultRootNode {\n new (...args: any[]): React.Component;\n}\n\nexport function rootNode<T extends DecoratableClassComponent>(Component: T) {\n const rootNode = class extends Component implements InstanceWithRootNode {\n public rootNode: Nullable<Element> = Component.defaultRootNode;\n public rootNodeEmitter = new EventEmitter();\n public constructor(...args: any[]) {\n super(args[0]);\n }\n\n public setRootNode = (instance: Nullable<React.ReactInstance>) => {\n const rootNode = getRootNode(instance);\n if (rootNode !== this.rootNode) {\n this.rootNode = rootNode;\n this.rootNodeEmitter.emit('change', rootNode);\n }\n };\n\n public getRootNode = (): Nullable<Element> => {\n return this.rootNode;\n };\n\n public addRootNodeChangeListener = (callback: (node: Nullable<Element>) => void): TRootNodeSubscription => {\n this.rootNodeEmitter.addListener('change', callback);\n return {\n remove: () => {\n this.rootNodeEmitter.removeListener('change', callback);\n },\n };\n };\n };\n\n const nameDescriptor = Object.getOwnPropertyDescriptor(rootNode, 'name');\n if (!nameDescriptor || nameDescriptor.configurable) {\n Object.defineProperty(rootNode, 'name', { value: Component.name });\n }\n\n return rootNode;\n}\n\nexport const isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n"]}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
 
3
- export type MouseEventType<T extends HTMLElement = HTMLElement> = React.MouseEvent<T> | MouseEvent;
4
- export type FocusEventType<T extends HTMLElement = HTMLElement> = React.FocusEvent<T> | FocusEvent;
3
+ export type MouseEventType<T extends Element = Element> = React.MouseEvent<T> | MouseEvent;
4
+ export type FocusEventType<T extends Element = Element> = React.FocusEvent<T> | FocusEvent;
@@ -223,6 +223,13 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
223
223
  selection: SelectionHelper.forward(selection.start, inputEnd)
224
224
  });
225
225
 
226
+ return;
227
+ }
228
+
229
+ case CURRENCY_INPUT_ACTIONS.Comma:
230
+ {
231
+ _this.inputValue(selection.start, selection.end, ',');
232
+
226
233
  return;
227
234
  }
228
235
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","createPropsGetter","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInputDataTids","root","CurrencyInput","getProps","defaultProps","state","getState","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","props","signed","onSubmit","integerDigits","rest","align","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLength","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","isValidNumber","isNumeric","Number","setSelectionRange","render","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","placeholder","string","size","width","oneOfType","func","isRequired","inputMode","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value?: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros?: boolean;\n /** Кол-во цифр после запятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: (props: CurrencyInputProps) => {\n warning(isValidNumber(props.value), `[CurrencyInput]: Prop value is not a valid number`);\n },\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits } = this.props;\n const fractionDigits = this.getProps().fractionDigits;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n if (\n (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nfunction isValidNumber(value: unknown): boolean {\n return !isNaN(Number(value));\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
1
+ {"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","createPropsGetter","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInputDataTids","root","CurrencyInput","getProps","defaultProps","state","getState","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","props","signed","onSubmit","integerDigits","rest","align","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","Comma","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLength","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","isValidNumber","isNumeric","Number","setSelectionRange","render","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","placeholder","string","size","width","oneOfType","func","isRequired","inputMode","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"mappings":"8VAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,SAApB;AACA,OAAOC,QAAP,MAAqB,iBAArB;;AAEA,SAASC,aAAT,EAAwBC,UAAxB,QAA0C,iBAA1C;AACA,SAASC,MAAT,QAAuB,kBAAvB;AACA,SAASC,KAAT,QAAkC,UAAlC;;AAEA,SAAsBC,aAAtB,QAAmE,8BAAnE;AACA,SAAuBC,QAAvB,QAAuC,oBAAvC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;AAEA,SAASC,eAAT,QAAgC,aAAhC;AACA,SAAwCC,eAAxC,QAA+D,mBAA/D;AACA,SAASC,cAAT,QAA+B,kBAA/B;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,SAASC,sBAAT,EAAiCC,aAAjC,QAAsD,gCAAtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;;;;;;;;;;;;;;;AAiBP,OATA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA,IAAaC,aAAb,GADCV,QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCUW,IAAAA,QArCV,GAqCqBV,iBAAiB,CAACS,aAAa,CAACE,YAAf,CArCtC;;AAuCSC,IAAAA,KAvCT;AAwCO,UAAKC,QAAL,CAAc,MAAKH,QAAL,GAAgBI,KAA9B,EAAqC,MAAKJ,QAAL,GAAgBK,cAArD,EAAqE,MAAKL,QAAL,GAAgBM,iBAArF,CAxCP;AAyCIC,MAAAA,OAAO,EAAE,KAzCb;;;;AA6CUC,IAAAA,wBA7CV,GA6CgDhB,eAAe,CAACiB,YAAhB,CAA6B,CAA7B,CA7ChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwFSC,IAAAA,UAxFT,GAwFsB,UAACC,KAAD,EAAuD;AACzE,UAAQN,cAAR,GAAwFM,KAAxF,CAAQN,cAAR,CAAwBO,MAAxB,GAAwFD,KAAxF,CAAwBC,MAAxB,CAAgCC,QAAhC,GAAwFF,KAAxF,CAAgCE,QAAhC,CAA0CC,aAA1C,GAAwFH,KAAxF,CAA0CG,aAA1C,CAAyDR,iBAAzD,GAAwFK,KAAxF,CAAyDL,iBAAzD,CAA+ES,IAA/E,iCAAwFJ,KAAxF;;AAEA;AACE,4BAAC,KAAD;AACE,sBAAUd,qBAAqB,CAACC,IADlC;AAEMiB,QAAAA,IAFN;AAGE,UAAA,KAAK,EAAE,MAAKf,QAAL,GAAgBgB,KAHzB;AAIE,UAAA,KAAK,EAAE,MAAKd,KAAL,CAAWe,SAJpB;AAKE,UAAA,MAAM,EAAE,MAAKC,UALf;AAME,UAAA,OAAO,EAAE,MAAKC,WANhB;AAOE,UAAA,SAAS,EAAE,MAAKC,aAPlB;AAQE,UAAA,SAAS,EAAE,MAAKC,aARlB;AASE,UAAA,aAAa,EAAE,MAAKC,iBATtB;AAUE,UAAA,OAAO,EAAE,MAAKC,WAVhB;AAWE,UAAA,MAAM,EAAE,MAAKC,UAXf;AAYE,UAAA,KAAK,EAAE,MAAKC,SAZd;AAaE,UAAA,YAAY,EAAE,MAAKd,KAAL,CAAWe,YAb3B;AAcE,UAAA,YAAY,EAAE,MAAKf,KAAL,CAAWgB,YAd3B;AAeE,UAAA,WAAW,EAAE,MAAKhB,KAAL,CAAWiB,WAf1B;AAgBE,UAAA,GAAG,EAAE,MAAKC,QAhBZ;AAiBE,UAAA,WAAW,EAAE,MAAK3B,KAAL,CAAWK,OAAX,GAAqB,EAArB,GAA0BuB,cAAc,CAACnB,KAAD,CAjBvD,IADF;;;AAqBD,KAhHH;;;;;AAqHSoB,IAAAA,KArHT,GAqHiB,YAAM;AACnB,UAAI,MAAKC,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWD,KAAX;AACD;AACF,KAzHH;;;;;AA8HSE,IAAAA,IA9HT,GA8HgB,YAAM;AAClB,UAAI,MAAKD,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWC,IAAX;AACD;AACF,KAlIH;;;;;;;;;;;;;;;;AAkJmBC,IAAAA,8BAlJnB,GAkJoDnD,QAAQ,CAAC,MAAKoD,qBAAN,EAA6B,GAA7B,CAlJ5D;;AAoJUf,IAAAA,aApJV,GAoJ0B,UAACgB,KAAD,EAA+C;AACrE,UAAIlD,MAAJ,EAAY;AACVkD,QAAAA,KAAK,CAACC,OAAN;AACA,cAAKH,8BAAL,CAAoCE,KAApC;AACD,OAHD,MAGO;AACL,cAAKD,qBAAL,CAA2BC,KAA3B;AACD;AACF,KA3JH;;AA6JUf,IAAAA,aA7JV,GA6J0B,UAACe,KAAD,EAAkD;AACxE,UAAME,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,YAAKhC,wBAAL,GAAgC8B,SAAhC;;AAEA,UAAI,MAAK3B,KAAL,CAAW8B,SAAf,EAA0B;AACxB,cAAK9B,KAAL,CAAW8B,SAAX,CAAqBL,KAArB;AACA,YAAIA,KAAK,CAACM,gBAAV,EAA4B;AAC1B;AACD;AACF;;AAED,UAAMC,MAAM,GAAG/C,aAAa,CAACwC,KAAD,CAA5B;;AAEA,UAAIO,MAAM,KAAKhD,sBAAsB,CAACiD,MAAtC,EAA8C;AAC5C;AACD;;AAED,UAAID,MAAM,KAAKhD,sBAAsB,CAACkD,OAAtC,EAA+C;AAC7CT,QAAAA,KAAK,CAACU,cAAN;AACD;;AAED,cAAQH,MAAR;AACE,aAAKhD,sBAAsB,CAACoD,MAA5B,CAAoC;AAClC,gBAAI,MAAKpC,KAAL,CAAWE,QAAf,EAAyB;AACvB,oBAAKF,KAAL,CAAWE,QAAX;AACD;AACD;AACD;AACD,aAAKlB,sBAAsB,CAACqD,SAA5B,CAAuC;AACrC,kBAAKC,UAAL,CAAgBvD,mBAAmB,CAACwD,UAApB,CAA+B,MAAKhD,KAAL,CAAWe,SAA1C,EAAqDqB,SAArD,EAAgE,CAAC,CAAjE,CAAhB,EAAqFA,SAAS,CAACa,GAA/F,EAAoG,EAApG;AACA;AACD;AACD,aAAKxD,sBAAsB,CAACyD,MAA5B,CAAoC;AAClC,kBAAKH,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiC3D,mBAAmB,CAACwD,UAApB,CAA+B,MAAKhD,KAAL,CAAWe,SAA1C,EAAqDqB,SAArD,EAAgE,CAAC,CAAjE,CAAjC,EAAsG,EAAtG;AACA;AACD;AACD,aAAK3C,sBAAsB,CAAC2D,cAA5B,CAA4C;AAC1C,kBAAKJ,UAAL,CAAgBZ,SAAhB,EAA2B,CAAC,CAA5B;AACA;AACD;AACD,aAAK3C,sBAAsB,CAAC4D,eAA5B,CAA6C;AAC3C,kBAAKL,UAAL,CAAgBZ,SAAhB,EAA2B,CAAC,CAA5B;AACA;AACD;AACD,aAAK3C,sBAAsB,CAAC6D,IAA5B,CAAkC;AAChC,kBAAKC,QAAL,CAAc,EAAEnB,SAAS,EAAE9C,eAAe,CAACiB,YAAhB,CAA6B,CAA7B,CAAb,EAAd;AACA;AACD;AACD,aAAKd,sBAAsB,CAAC+D,GAA5B,CAAiC;AAC/B,gBAAMP,GAAG,GAAG,MAAKjD,KAAL,CAAWe,SAAX,CAAqB0C,MAAjC;AACA,kBAAKF,QAAL,CAAc,EAAEnB,SAAS,EAAE9C,eAAe,CAACiB,YAAhB,CAA6B0C,GAA7B,CAAb,EAAd;AACA;AACD;AACD,aAAKxD,sBAAsB,CAACiE,mBAA5B,CAAiD;AAC/C,kBAAKC,eAAL,CAAqBvB,SAArB,EAAgC,CAAC,CAAjC;AACA;AACD;AACD,aAAK3C,sBAAsB,CAACmE,oBAA5B,CAAkD;AAChD,kBAAKD,eAAL,CAAqBvB,SAArB,EAAgC,CAAC,CAAjC;AACA;AACD;AACD,aAAK3C,sBAAsB,CAACoE,aAA5B,CAA2C;AACzC,kBAAKN,QAAL,CAAc;AACZnB,cAAAA,SAAS,EAAE9C,eAAe,CAACwE,OAAhB,CAAwB,CAAxB,EAA2B,MAAK9D,KAAL,CAAWe,SAAX,CAAqB0C,MAAhD,CADC,EAAd;;AAGA;AACD;AACD,aAAKhE,sBAAsB,CAACsE,sBAA5B,CAAoD;AAClD,kBAAKR,QAAL,CAAc;AACZnB,cAAAA,SAAS,EAAE9C,eAAe,CAAC0E,QAAhB,CAAyB,CAAzB,EAA4B5B,SAAS,CAACe,KAAtC,CADC,EAAd;;AAGA;AACD;AACD,aAAK1D,sBAAsB,CAACwE,oBAA5B,CAAkD;AAChD,gBAAMC,QAAQ,GAAG,MAAKlE,KAAL,CAAWe,SAAX,CAAqB0C,MAAtC;AACA,kBAAKF,QAAL,CAAc;AACZnB,cAAAA,SAAS,EAAE9C,eAAe,CAACwE,OAAhB,CAAwB1B,SAAS,CAACe,KAAlC,EAAyCe,QAAzC,CADC,EAAd;;AAGA;AACD;AACD,aAAKzE,sBAAsB,CAAC0E,KAA5B,CAAmC;AACjC,kBAAKpB,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCf,SAAS,CAACa,GAA3C,EAAgD,GAAhD;AACA;AACD,WA9DH;;AAgED,KAlPH;;AAoPUmB,IAAAA,WApPV,GAoPwB,YAAM;AAC1B,UAAMC,IAAI,kBAAG,MAAKvC,KAAR,qBAAG,YAAYwC,OAAZ,EAAb;AACA,UAAI,CAACD,IAAD,IAASA,IAAI,CAACE,WAAL,KAAqBF,IAAI,CAACG,WAAvC,EAAoD;AAClD;AACD;AACD,UAAMC,GAAG,GAAG,CAAZ;AACA,UAAMC,KAAK,GAAG,CAAd;;AAEA,UAAMtC,SAAS,GAAG,MAAKpC,KAAL,CAAWoC,SAA7B;AACA,UAAMuC,QAAQ,GAAGvC,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAA/C;AACA,UAAM2B,QAAQ,GAAGD,QAAQ,IAAIvC,SAAS,CAACyC,SAAV,KAAwB,SAApC,GAAgDzC,SAAS,CAACa,GAA1D,GAAgEb,SAAS,CAACe,KAA3F;AACA,UAAM2B,UAAU,GAAG,MAAK9E,KAAL,CAAWe,SAAX,CAAqB0C,MAAxC;AACA,UAAMsB,SAAS,GAAGV,IAAI,CAACE,WAAL,GAAmBO,UAArC;AACA,UAAME,KAAK,GAAGC,IAAI,CAACC,IAAL,CAAUb,IAAI,CAACG,WAAL,GAAmBO,SAA7B,CAAd;AACA,UAAMI,UAAU,GAAGF,IAAI,CAACC,IAAL,CAAUb,IAAI,CAACe,UAAL,GAAkBL,SAA5B,CAAnB;AACA,UAAMM,QAAQ,GAAGF,UAAU,GAAGH,KAA9B;;AAEA,UAAIJ,QAAQ,GAAGO,UAAU,GAAGV,GAA5B,EAAiC;AAC/BJ,QAAAA,IAAI,CAACe,UAAL,GAAkB,CAACR,QAAQ,GAAGF,KAAZ,IAAqBK,SAAvC;AACD;AACD,UAAIH,QAAQ,GAAGS,QAAQ,GAAGZ,GAA1B,EAA+B;AAC7BJ,QAAAA,IAAI,CAACe,UAAL,GAAkB,CAACR,QAAQ,GAAGI,KAAX,GAAmBN,KAApB,IAA6BK,SAA/C;AACD;AACF,KA3QH;;AA6QU1C,IAAAA,YA7QV,GA6QyB,UAACP,KAAD,EAAmC;AACxD,UAAMM,SAAS,GAAGkD,0BAA0B,CAACxD,KAAD,CAA5C;AACA,aAAO;AACLqB,QAAAA,KAAK,EAAEf,SAAS,CAACe,KADZ;AAELF,QAAAA,GAAG,EAAEb,SAAS,CAACa,GAFV;AAGL4B,QAAAA,SAAS,EAAE,MAAK7E,KAAL,CAAWoC,SAAX,CAAqByC,SAH3B,EAAP;;AAKD,KApRH;;AAsRU7B,IAAAA,UAtRV,GAsRuB,UAACZ,SAAD,EAAuBmD,IAAvB,EAAwC;AAC3D,UAAMX,QAAQ,GAAGpF,mBAAmB,CAACwD,UAApB,CAA+B,MAAKhD,KAAL,CAAWe,SAA1C,EAAqDqB,SAArD,EAAgEmD,IAAhE,CAAjB;AACA,YAAKhC,QAAL,CAAc,EAAEnB,SAAS,EAAE9C,eAAe,CAACiB,YAAhB,CAA6BqE,QAA7B,CAAb,EAAd;AACD,KAzRH;;AA2RUjB,IAAAA,eA3RV,GA2R4B,UAACvB,SAAD,EAAuBmD,IAAvB,EAAwC;AAChE,UAAMC,QAAQ,GAAGhG,mBAAmB,CAACmE,eAApB,CAAoC,MAAK3D,KAAL,CAAWe,SAA/C,EAA0DqB,SAA1D,EAAqEmD,IAArE,CAAjB;AACA,YAAKhC,QAAL,CAAc,EAAEnB,SAAS,EAAEoD,QAAb,EAAd;AACD,KA9RH;;AAgSUzC,IAAAA,UAhSV,GAgSuB,UAACI,KAAD,EAAgBF,GAAhB,EAA6B/C,KAA7B,EAA+C;AAClE,UAAMuF,MAAM,GAAGjG,mBAAmB,CAACkG,UAApB,CAA+B,MAAK1F,KAAL,CAAWe,SAA1C,EAAqDoC,KAArD,EAA4DF,GAA5D,EAAiE/C,KAAjE,EAAwE;AACrFU,QAAAA,aAAa,EAAE,MAAKH,KAAL,CAAWG,aAD2D;AAErFT,QAAAA,cAAc,EAAE,MAAKL,QAAL,GAAgBK,cAFqD;AAGrFwF,QAAAA,QAAQ,EAAE,CAAC,MAAKlF,KAAL,CAAWC,MAH+D,EAAxE,CAAf;;AAKA,UAAI+E,MAAJ,EAAY;AACV,YAAM1E,SAAS,GAAG0E,MAAM,CAACvF,KAAzB;AACA,YAAMkC,SAAS,GAAG9C,eAAe,CAACiB,YAAhB,CAA6BkF,MAAM,CAACb,QAApC,CAAlB;AACA,cAAKrB,QAAL,CAAc,EAAExC,SAAS,EAATA,SAAF,EAAaqB,SAAS,EAATA,SAAb,EAAd,EAAwC,YAAM;AAC5C,cAAMwD,WAAW,GAAGrG,cAAc,CAACsG,KAAf,CAAqB9E,SAArB,CAApB;AACA,cAAI,MAAKN,KAAL,CAAWP,KAAX,KAAqB0F,WAAzB,EAAsC;AACpC,kBAAKnF,KAAL,CAAWqF,aAAX,CAAyBF,WAAzB;AACD;AACF,SALD;AAMA,eAAO,IAAP;AACD;;AAED,UAAI,MAAK9D,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWiE,KAAX;AACD;AACD,aAAO,KAAP;AACD,KAtTH;;AAwTUC,IAAAA,gBAxTV,GAwT6B,UAAC9F,KAAD,EAAmB;AAC5C,UAAMkC,SAAS,GAAG,MAAK9B,wBAAvB;AACA,UAAM2F,QAAQ,GAAG,MAAKjG,KAAL,CAAWe,SAA5B;AACA,UAAIqB,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAAlC,EAAuC;AACrC,eAAO/C,KAAK,CAACgG,SAAN,CAAgB9D,SAAS,CAACe,KAA1B,EAAiCjD,KAAK,CAACuD,MAAN,IAAgBwC,QAAQ,CAACxC,MAAT,GAAkBrB,SAAS,CAACa,GAA5C,CAAjC,CAAP;AACD,OAFD,MAEO,IAAI/C,KAAK,CAACuD,MAAN,GAAewC,QAAQ,CAACxC,MAA5B,EAAoC;AACzC,eAAOvD,KAAK,CAACiG,MAAN,CAAa/D,SAAS,CAACe,KAAvB,EAA8BjD,KAAK,CAACuD,MAAN,GAAewC,QAAQ,CAACxC,MAAtD,CAAP;AACD;AACD,aAAO,IAAP;AACD,KAjUH;;AAmUUrC,IAAAA,iBAnUV,GAmU8B,UAAClB,KAAD,EAAyB;AACnD,UAAMkC,SAAS,GAAG,MAAK9B,wBAAvB;AACA,UAAM8F,KAAK,GAAG,MAAKJ,gBAAL,CAAsB9F,KAAtB,CAAd;AACA,UAAIpB,aAAa,CAACsH,KAAD,CAAb,IAAwB,CAAC,MAAKrD,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCf,SAAS,CAACa,GAA3C,EAAgDmD,KAAhD,CAA7B,EAAqF;AACnF,cAAK7C,QAAL,CAAc,EAAEnB,SAAS,EAATA,SAAF,EAAd;AACD;AACF,KAzUH;;AA2UUf,IAAAA,WA3UV,GA2UwB,UAACa,KAAD,EAAmD;AACvE,UAAMmE,IAAI,GAAGnE,KAAK,CAACoE,aAAN,CAAoBC,OAApB,CAA4B,MAA5B,CAAb;AACA,UAAMnE,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,YAAKS,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCf,SAAS,CAACa,GAA3C,EAAgDoD,IAAhD;AACAnE,MAAAA,KAAK,CAACU,cAAN;AACD,KAhVH;;AAkVUtB,IAAAA,UAlVV,GAkVuB,UAACY,KAAD,EAAmD;AACtE,UAAME,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,UAAIF,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAAlC,EAAuC;AACrC,YAAMiD,SAAS,GAAG,MAAKlG,KAAL,CAAWe,SAAX,CAAqBmF,SAArB,CAA+B9D,SAAS,CAACe,KAAzC,EAAgDf,SAAS,CAACa,GAA1D,CAAlB;AACA,YAAMoD,IAAI,GAAG9G,cAAc,CAACiH,kBAAf,CAAkCN,SAAlC,CAAb;AACAhE,QAAAA,KAAK,CAACoE,aAAN,CAAoBG,OAApB,CAA4B,MAA5B,EAAoCJ,IAApC;AACD;AACDnE,MAAAA,KAAK,CAACU,cAAN;AACD,KA1VH;;AA4VUrB,IAAAA,SA5VV,GA4VsB,UAACW,KAAD,EAAmD;AACrE,UAAME,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,UAAIF,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAAlC,EAAuC;AACrC,YAAMiD,SAAS,GAAG,MAAKlG,KAAL,CAAWe,SAAX,CAAqBmF,SAArB,CAA+B9D,SAAS,CAACe,KAAzC,EAAgDf,SAAS,CAACa,GAA1D,CAAlB;AACA,YAAMoD,IAAI,GAAG9G,cAAc,CAACiH,kBAAf,CAAkCN,SAAlC,CAAb;AACAhE,QAAAA,KAAK,CAACoE,aAAN,CAAoBG,OAApB,CAA4B,MAA5B,EAAoCJ,IAApC;AACA,cAAKtD,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCf,SAAS,CAACa,GAA3C,EAAgD,EAAhD;AACD;AACDf,MAAAA,KAAK,CAACU,cAAN;AACD,KArWH;;AAuWU3B,IAAAA,WAvWV,GAuWwB,UAACiB,KAAD,EAA+C;AACnE,0BAA6DA,KAAK,CAACI,MAAnE,CAAQoE,cAAR,iBAAQA,cAAR,CAAwBC,YAAxB,iBAAwBA,YAAxB,CAAsCC,kBAAtC,iBAAsCA,kBAAtC;AACA,UAAMC,WAAW,GAAG3E,KAAK,CAACI,MAAN,CAAapC,KAAb,CAAmBuD,MAAvC;;AAEA,UAAMrB,SAAS,GAAG;AAChBe,QAAAA,KAAK,EAAEuD,cAAc,KAAKC,YAAnB,GAAkCD,cAAc,IAAI,CAApD,GAAwDA,cAAc,IAAIG,WADjE;AAEhB5D,QAAAA,GAAG,EAAE0D,YAAY,KAAKD,cAAjB,GAAkCC,YAAY,IAAI,CAAlD,GAAsDA,YAAY,IAAIE,WAF3D;AAGhBhC,QAAAA,SAAS,EAAG+B,kBAAD,IAA8C,MAHzC,EAAlB;;;AAMA,YAAKrD,QAAL,CAAc;AACZlD,QAAAA,OAAO,EAAE,IADG;AAEZ+B,QAAAA,SAAS,EAATA,SAFY,EAAd;;;AAKA,UAAI,MAAK3B,KAAL,CAAWqG,OAAf,EAAwB;AACtB,cAAKrG,KAAL,CAAWqG,OAAX,CAAmB5E,KAAnB;AACD;AACF,KAzXH;;AA2XUlB,IAAAA,UA3XV,GA2XuB,UAACkB,KAAD,EAA+C;AAClE,UAAMhC,KAAK,GAAGX,cAAc,CAACsG,KAAf,CAAqB,MAAK7F,KAAL,CAAWe,SAAhC,CAAd;;AAEA,YAAKwC,QAAL;AACK,YAAKtD,QAAL,CAAcC,KAAd,EAAqB,MAAKJ,QAAL,GAAgBK,cAArC,EAAqD,MAAKL,QAAL,GAAgBM,iBAArE,CADL;AAEEC,QAAAA,OAAO,EAAE,KAFX;;;AAKA,UAAI,MAAKI,KAAL,CAAWsG,MAAf,EAAuB;AACrB,cAAKtG,KAAL,CAAWsG,MAAX,CAAkB7E,KAAlB;AACD;AACF,KAtYH;;AAwYUP,IAAAA,QAxYV,GAwYqB,UAACqF,OAAD,EAA8B;AAC/C,YAAKlF,KAAL,GAAakF,OAAb;AACD,KA1YH,2DAgDSC,iBAhDT,GAgDE,6BAAiC,CAC/B,kBAAqC,KAAKxG,KAA1C,CAAQyG,SAAR,eAAQA,SAAR,CAAmBtG,aAAnB,eAAmBA,aAAnB,CACA,IAAMT,cAAc,GAAG,KAAKL,QAAL,GAAgBK,cAAvC,CACAvB,OAAO,CACLsI,SAAS,KAAKC,SADT,oGAAP,CAIAvI,OAAO,CACL,CAACgC,aAAa,IAAI,CAAlB,KAAwBT,cAAc,IAAI,CAA1C,KAAgDd,eAD3C,EAEL,0EAAwEA,eAAxE,4EAFK,CAAP,CAKD,CA5DH,QA8DS+H,kBA9DT,GA8DE,4BAA0BC,SAA1B,EAAyDC,SAAzD,EAAwF,CACtF,qBAAqD,KAAKxH,QAAL,EAArD,CAAQI,KAAR,kBAAQA,KAAR,CAAeC,cAAf,kBAAeA,cAAf,CAA+BC,iBAA/B,kBAA+BA,iBAA/B,CACA,IACGmH,aAAa,CAACrH,KAAD,CAAb,IAAwBsH,SAAS,CAACtH,KAAD,CAAjC,IAA4CuH,MAAM,CAACvH,KAAD,CAAN,KAAkBX,cAAc,CAACsG,KAAf,CAAqByB,SAAS,CAACvG,SAA/B,CAA/D,IACAsG,SAAS,CAAClH,cAAV,KAA6BA,cAF/B,EAGE,CACA,KAAKoD,QAAL,CAAc,KAAKtD,QAAL,CAAcC,KAAd,EAAqBC,cAArB,EAAqCC,iBAArC,CAAd,EACD,CACD,IAAI,KAAKJ,KAAL,CAAWK,OAAX,IAAsB,KAAKyB,KAA/B,EAAsC,CACpC,4BAAuB,KAAK9B,KAAL,CAAWoC,SAAlC,CAAQe,KAAR,yBAAQA,KAAR,CAAeF,GAAf,yBAAeA,GAAf,CAEA,KAAKnB,KAAL,CAAW4F,iBAAX,CAA6BvE,KAA7B,EAAoCF,GAApC,EACD,CACD,IAAIqE,SAAS,CAAClF,SAAV,KAAwB,KAAKpC,KAAL,CAAWoC,SAAvC,EAAkD,CAChD,KAAKgC,WAAL,GACD,CACF,CA9EH,QAgFSuD,MAhFT,GAgFE,kBAAgB,CACd,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAKnH,KAAvD,GACG,KAAKD,UADR,CADF,CAKD,CAtFH,QAoIUP,QApIV,GAoIE,kBAAiBC,KAAjB,EAA0CC,cAA1C,EAA4EC,iBAA5E,EAAwG,CACtG,OAAO,EACLW,SAAS,EAAExB,cAAc,CAACsI,MAAf,CAAsB3H,KAAtB,EAA6B,EAAEC,cAAc,EAAdA,cAAF,EAAkBC,iBAAiB,EAAjBA,iBAAlB,EAA7B,CADN,EAELgC,SAAS,EAAE9C,eAAe,CAACiB,YAAhB,CAA6B,CAA7B,CAFN,EAAP,CAID,CAzIH,QA2IU0B,qBA3IV,GA2IE,+BAA8BC,KAA9B,EAAyE,CACvE,IAAME,SAAS,GAAGkD,0BAA0B,CAACpD,KAAK,CAACI,MAAP,CAA5C,CACA,IAAMwF,UAAU,GAAGtI,mBAAmB,CAACuI,kBAApB,CAAuC,KAAK/H,KAAL,CAAWe,SAAlD,EAA6DqB,SAA7D,CAAnB,CACA,KAAKmB,QAAL,CAAc,EAAEnB,SAAS,EAAE0F,UAAb,EAAd,EACD,CA/IH,CAiJE;AAjJF,0BAAmCpJ,KAAK,CAACsJ,aAAzC,WACgBC,mBADhB,GACsC,eADtC,UAGgBC,SAHhB,GAG4B,EACxBpH,KAAK,EAAEnC,SAAS,CAACwJ,KAAV,CAAgB,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAAhB,CADiB,EAExBC,SAAS,EAAEzJ,SAAS,CAAC0J,IAFG,EAGxBC,UAAU,EAAE3J,SAAS,CAAC0J,IAHE,EAIxBE,QAAQ,EAAE5J,SAAS,CAAC0J,IAJI,EAKxBG,KAAK,EAAE7J,SAAS,CAAC0J,IALO,EAMxBlI,cAAc,EAAExB,SAAS,CAAC8J,MANF,EAOxBrI,iBAAiB,EAAEzB,SAAS,CAAC0J,IAPL,EAQxBK,QAAQ,EAAE/J,SAAS,CAACqI,OARI,EASxB2B,WAAW,EAAEhK,SAAS,CAACiK,MATC,EAUxBlI,MAAM,EAAE/B,SAAS,CAAC0J,IAVM,EAWxBQ,IAAI,EAAElK,SAAS,CAACwJ,KAAV,CAAgB,CAAC,OAAD,EAAU,QAAV,EAAoB,OAApB,CAAhB,CAXkB,EAYxBjI,KAAK,EAAE,eAACO,KAAD,EAA+B,CACpC7B,OAAO,CAAC2I,aAAa,CAAC9G,KAAK,CAACP,KAAP,CAAd,sDAAP,CACD,CAduB,EAexBtB,OAAO,EAAED,SAAS,CAAC0J,IAfK,EAgBxBS,KAAK,EAAEnK,SAAS,CAACoK,SAAV,CAAoB,CAACpK,SAAS,CAAC8J,MAAX,EAAmB9J,SAAS,CAACiK,MAA7B,CAApB,CAhBiB,EAiBxB7B,MAAM,EAAEpI,SAAS,CAACqK,IAjBM,EAkBxBlD,aAAa,EAAEnH,SAAS,CAACqK,IAAV,CAAeC,UAlBN,EAmBxBnC,OAAO,EAAEnI,SAAS,CAACqK,IAnBK,EAoBxBxH,YAAY,EAAE7C,SAAS,CAACqK,IApBA,EAqBxBvH,YAAY,EAAE9C,SAAS,CAACqK,IArBA,EAsBxBtH,WAAW,EAAE/C,SAAS,CAACqK,IAtBC,EAuBxBrI,QAAQ,EAAEhC,SAAS,CAACqK,IAvBI,EAH5B,UA6BgBjJ,YA7BhB,GA6B6C,EACzCe,KAAK,EAAE,OADkC,EAEzCX,cAAc,EAAE,CAFyB,EAGzCC,iBAAiB,EAAE,KAHsB,EAIzCF,KAAK,EAAE,IAJkC,EAKzCgJ,SAAS,EAAE,SAL8B,EA7B7C;;AA6YA,SAAS5D,0BAAT,CAAoCxD,KAApC,EAAmE;AACjE,MAAI,EAAEA,KAAK,YAAYqH,gBAAnB,CAAJ,EAA0C;AACxC,UAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD;;AAED,SAAO;AACLjG,IAAAA,KAAK,EAAErB,KAAK,CAAC4E,cADR;AAELzD,IAAAA,GAAG,EAAEnB,KAAK,CAAC6E,YAFN;AAGL9B,IAAAA,SAAS,EAAE/C,KAAK,CAAC8E,kBAHZ,EAAP;;AAKD;;AAED,SAASY,SAAT,CAAmBtH,KAAnB,EAA6D;AAC3D,SAAO,CAACmJ,KAAK,CAACC,UAAU,CAACpJ,KAAD,CAAX,CAAN,IAAuCqJ,QAAQ,CAACrJ,KAAD,CAAtD;AACD;;AAED,SAASqH,aAAT,CAAuBrH,KAAvB,EAAgD;AAC9C,SAAO,CAACmJ,KAAK,CAAC5B,MAAM,CAACvH,KAAD,CAAP,CAAb;AACD;;AAED,IAAM0B,cAAc,GAAG,SAAjBA,cAAiB,CAACnB,KAAD,EAA+B;AACpD,MAAI1B,UAAU,CAAC0B,KAAK,CAACkI,WAAP,CAAd,EAAmC;AACjC,WAAOpJ,cAAc,CAACsI,MAAf,CAAsB,CAAtB,EAAyB;AAC9B1H,MAAAA,cAAc,EAAEM,KAAK,CAACN,cADQ;AAE9BC,MAAAA,iBAAiB,EAAEK,KAAK,CAACL,iBAFK,EAAzB,CAAP;;AAID;;AAED,SAAOK,KAAK,CAACkI,WAAb;AACD,CATD","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value?: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros?: boolean;\n /** Кол-во цифр после запятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: (props: CurrencyInputProps) => {\n warning(isValidNumber(props.value), `[CurrencyInput]: Prop value is not a valid number`);\n },\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits } = this.props;\n const fractionDigits = this.getProps().fractionDigits;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n if (\n (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Comma: {\n this.inputValue(selection.start, selection.end, ',');\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nfunction isValidNumber(value: unknown): boolean {\n return !isNaN(Number(value));\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  import * as Keyboard from "../../../lib/events/keyboard/identifiers";
2
2
  import { KeyboardActionExctracterBuilder } from "../../../lib/extractKeyboardAction";
3
+ export var commaAliases = [Keyboard.isCodeComma, Keyboard.isCodePeriod, Keyboard.isCodeSlash, Keyboard.isCodeBackslash, Keyboard.isCodeIntlBackslash, Keyboard.isCodeNumpadDivide];
3
4
  export var CURRENCY_INPUT_ACTIONS = {
4
5
  Unknown: 0,
5
6
  Ignore: 1,
@@ -14,8 +15,9 @@ export var CURRENCY_INPUT_ACTIONS = {
14
15
  ExtendSelectionToEnd: 25,
15
16
  Backspace: 31,
16
17
  Delete: 32,
17
- Submit: 33
18
+ Submit: 33,
19
+ Comma: 34
18
20
  };
19
21
  export var extractAction = new KeyboardActionExctracterBuilder().add(CURRENCY_INPUT_ACTIONS.Submit, Keyboard.isKeyEnter).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft, Keyboard.isModShift(Keyboard.isKeyArrowLeft)).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionRight, Keyboard.isModShift(Keyboard.isKeyArrowRight)).add(CURRENCY_INPUT_ACTIONS.FullSelection, Keyboard.isShortcutSelectAll).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart, Keyboard.isModShift(Keyboard.isKeyHome)).add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd, Keyboard.isModShift(Keyboard.isKeyEnd)).add(CURRENCY_INPUT_ACTIONS.MoveCursorLeft, Keyboard.isKeyArrowLeft).add(CURRENCY_INPUT_ACTIONS.MoveCursorRight, Keyboard.isKeyArrowRight).add(CURRENCY_INPUT_ACTIONS.Home, Keyboard.isUnmodified(Keyboard.isKeyHome)).add(CURRENCY_INPUT_ACTIONS.End, Keyboard.isUnmodified(Keyboard.isKeyEnd)).add(CURRENCY_INPUT_ACTIONS.Backspace, Keyboard.isKeyBackspace).add(CURRENCY_INPUT_ACTIONS.Delete, Keyboard.isKeyDelete).add(CURRENCY_INPUT_ACTIONS.Ignore, function (e) {
20
22
  return Keyboard.isModified()(e) || Keyboard.isKeyTab(e);
21
- }).build(CURRENCY_INPUT_ACTIONS.Unknown);
23
+ }).add(CURRENCY_INPUT_ACTIONS.Comma, Keyboard.someKeys.apply(Keyboard, commaAliases)).build(CURRENCY_INPUT_ACTIONS.Unknown);
@@ -1 +1 @@
1
- {"version":3,"sources":["CurrencyInputKeyboardActions.tsx"],"names":["Keyboard","KeyboardActionExctracterBuilder","CURRENCY_INPUT_ACTIONS","Unknown","Ignore","MoveCursorLeft","MoveCursorRight","Home","End","ExtendSelectionLeft","ExtendSelectionRight","FullSelection","ExtendSelectionToStart","ExtendSelectionToEnd","Backspace","Delete","Submit","extractAction","add","isKeyEnter","isModShift","isKeyArrowLeft","isKeyArrowRight","isShortcutSelectAll","isKeyHome","isKeyEnd","isUnmodified","isKeyBackspace","isKeyDelete","e","isModified","isKeyTab","build"],"mappings":"AAAA,OAAO,KAAKA,QAAZ,MAA0B,uCAA1B;AACA,SAASC,+BAAT,QAAgD,iCAAhD;;AAEA,OAAO,IAAMC,sBAAsB,GAAG;AACpCC,EAAAA,OAAO,EAAE,CAD2B;AAEpCC,EAAAA,MAAM,EAAE,CAF4B;;AAIpCC,EAAAA,cAAc,EAAE,EAJoB;AAKpCC,EAAAA,eAAe,EAAE,EALmB;AAMpCC,EAAAA,IAAI,EAAE,EAN8B;AAOpCC,EAAAA,GAAG,EAAE,EAP+B;;AASpCC,EAAAA,mBAAmB,EAAE,EATe;AAUpCC,EAAAA,oBAAoB,EAAE,EAVc;AAWpCC,EAAAA,aAAa,EAAE,EAXqB;AAYpCC,EAAAA,sBAAsB,EAAE,EAZY;AAapCC,EAAAA,oBAAoB,EAAE,EAbc;;AAepCC,EAAAA,SAAS,EAAE,EAfyB;AAgBpCC,EAAAA,MAAM,EAAE,EAhB4B;AAiBpCC,EAAAA,MAAM,EAAE,EAjB4B,EAA/B;;;AAoBP,OAAO,IAAMC,aAAa,GAAG,IAAIhB,+BAAJ;AAC1BiB,GAD0B,CACtBhB,sBAAsB,CAACc,MADD,EACShB,QAAQ,CAACmB,UADlB;AAE1BD,GAF0B,CAEtBhB,sBAAsB,CAACO,mBAFD,EAEsBT,QAAQ,CAACoB,UAAT,CAAoBpB,QAAQ,CAACqB,cAA7B,CAFtB;AAG1BH,GAH0B,CAGtBhB,sBAAsB,CAACQ,oBAHD,EAGuBV,QAAQ,CAACoB,UAAT,CAAoBpB,QAAQ,CAACsB,eAA7B,CAHvB;AAI1BJ,GAJ0B,CAItBhB,sBAAsB,CAACS,aAJD,EAIgBX,QAAQ,CAACuB,mBAJzB;AAK1BL,GAL0B,CAKtBhB,sBAAsB,CAACU,sBALD,EAKyBZ,QAAQ,CAACoB,UAAT,CAAoBpB,QAAQ,CAACwB,SAA7B,CALzB;AAM1BN,GAN0B,CAMtBhB,sBAAsB,CAACW,oBAND,EAMuBb,QAAQ,CAACoB,UAAT,CAAoBpB,QAAQ,CAACyB,QAA7B,CANvB;AAO1BP,GAP0B,CAOtBhB,sBAAsB,CAACG,cAPD,EAOiBL,QAAQ,CAACqB,cAP1B;AAQ1BH,GAR0B,CAQtBhB,sBAAsB,CAACI,eARD,EAQkBN,QAAQ,CAACsB,eAR3B;AAS1BJ,GAT0B,CAStBhB,sBAAsB,CAACK,IATD,EASOP,QAAQ,CAAC0B,YAAT,CAAsB1B,QAAQ,CAACwB,SAA/B,CATP;AAU1BN,GAV0B,CAUtBhB,sBAAsB,CAACM,GAVD,EAUMR,QAAQ,CAAC0B,YAAT,CAAsB1B,QAAQ,CAACyB,QAA/B,CAVN;AAW1BP,GAX0B,CAWtBhB,sBAAsB,CAACY,SAXD,EAWYd,QAAQ,CAAC2B,cAXrB;AAY1BT,GAZ0B,CAYtBhB,sBAAsB,CAACa,MAZD,EAYSf,QAAQ,CAAC4B,WAZlB;AAa1BV,GAb0B,CAatBhB,sBAAsB,CAACE,MAbD,EAaS,UAACyB,CAAD,UAAO7B,QAAQ,CAAC8B,UAAT,GAAsBD,CAAtB,KAA4B7B,QAAQ,CAAC+B,QAAT,CAAkBF,CAAlB,CAAnC,EAbT;AAc1BG,KAd0B,CAcpB9B,sBAAsB,CAACC,OAdH,CAAtB","sourcesContent":["import * as Keyboard from '../../lib/events/keyboard/identifiers';\nimport { KeyboardActionExctracterBuilder } from '../../lib/extractKeyboardAction';\n\nexport const CURRENCY_INPUT_ACTIONS = {\n Unknown: 0,\n Ignore: 1,\n\n MoveCursorLeft: 11,\n MoveCursorRight: 12,\n Home: 13,\n End: 14,\n\n ExtendSelectionLeft: 21,\n ExtendSelectionRight: 22,\n FullSelection: 23,\n ExtendSelectionToStart: 24,\n ExtendSelectionToEnd: 25,\n\n Backspace: 31,\n Delete: 32,\n Submit: 33,\n};\n\nexport const extractAction = new KeyboardActionExctracterBuilder()\n .add(CURRENCY_INPUT_ACTIONS.Submit, Keyboard.isKeyEnter)\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft, Keyboard.isModShift(Keyboard.isKeyArrowLeft))\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionRight, Keyboard.isModShift(Keyboard.isKeyArrowRight))\n .add(CURRENCY_INPUT_ACTIONS.FullSelection, Keyboard.isShortcutSelectAll)\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart, Keyboard.isModShift(Keyboard.isKeyHome))\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd, Keyboard.isModShift(Keyboard.isKeyEnd))\n .add(CURRENCY_INPUT_ACTIONS.MoveCursorLeft, Keyboard.isKeyArrowLeft)\n .add(CURRENCY_INPUT_ACTIONS.MoveCursorRight, Keyboard.isKeyArrowRight)\n .add(CURRENCY_INPUT_ACTIONS.Home, Keyboard.isUnmodified(Keyboard.isKeyHome))\n .add(CURRENCY_INPUT_ACTIONS.End, Keyboard.isUnmodified(Keyboard.isKeyEnd))\n .add(CURRENCY_INPUT_ACTIONS.Backspace, Keyboard.isKeyBackspace)\n .add(CURRENCY_INPUT_ACTIONS.Delete, Keyboard.isKeyDelete)\n .add(CURRENCY_INPUT_ACTIONS.Ignore, (e) => Keyboard.isModified()(e) || Keyboard.isKeyTab(e))\n .build(CURRENCY_INPUT_ACTIONS.Unknown);\n"]}
1
+ {"version":3,"sources":["CurrencyInputKeyboardActions.tsx"],"names":["Keyboard","KeyboardActionExctracterBuilder","commaAliases","isCodeComma","isCodePeriod","isCodeSlash","isCodeBackslash","isCodeIntlBackslash","isCodeNumpadDivide","CURRENCY_INPUT_ACTIONS","Unknown","Ignore","MoveCursorLeft","MoveCursorRight","Home","End","ExtendSelectionLeft","ExtendSelectionRight","FullSelection","ExtendSelectionToStart","ExtendSelectionToEnd","Backspace","Delete","Submit","Comma","extractAction","add","isKeyEnter","isModShift","isKeyArrowLeft","isKeyArrowRight","isShortcutSelectAll","isKeyHome","isKeyEnd","isUnmodified","isKeyBackspace","isKeyDelete","e","isModified","isKeyTab","someKeys","build"],"mappings":"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","sourcesContent":["import * as Keyboard from '../../lib/events/keyboard/identifiers';\nimport { KeyboardActionExctracterBuilder } from '../../lib/extractKeyboardAction';\n\nexport const commaAliases = [\n Keyboard.isCodeComma,\n Keyboard.isCodePeriod,\n Keyboard.isCodeSlash,\n Keyboard.isCodeBackslash,\n Keyboard.isCodeIntlBackslash,\n Keyboard.isCodeNumpadDivide,\n];\n\nexport const CURRENCY_INPUT_ACTIONS = {\n Unknown: 0,\n Ignore: 1,\n\n MoveCursorLeft: 11,\n MoveCursorRight: 12,\n Home: 13,\n End: 14,\n\n ExtendSelectionLeft: 21,\n ExtendSelectionRight: 22,\n FullSelection: 23,\n ExtendSelectionToStart: 24,\n ExtendSelectionToEnd: 25,\n\n Backspace: 31,\n Delete: 32,\n Submit: 33,\n\n Comma: 34,\n};\n\nexport const extractAction = new KeyboardActionExctracterBuilder()\n .add(CURRENCY_INPUT_ACTIONS.Submit, Keyboard.isKeyEnter)\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft, Keyboard.isModShift(Keyboard.isKeyArrowLeft))\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionRight, Keyboard.isModShift(Keyboard.isKeyArrowRight))\n .add(CURRENCY_INPUT_ACTIONS.FullSelection, Keyboard.isShortcutSelectAll)\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart, Keyboard.isModShift(Keyboard.isKeyHome))\n .add(CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd, Keyboard.isModShift(Keyboard.isKeyEnd))\n .add(CURRENCY_INPUT_ACTIONS.MoveCursorLeft, Keyboard.isKeyArrowLeft)\n .add(CURRENCY_INPUT_ACTIONS.MoveCursorRight, Keyboard.isKeyArrowRight)\n .add(CURRENCY_INPUT_ACTIONS.Home, Keyboard.isUnmodified(Keyboard.isKeyHome))\n .add(CURRENCY_INPUT_ACTIONS.End, Keyboard.isUnmodified(Keyboard.isKeyEnd))\n .add(CURRENCY_INPUT_ACTIONS.Backspace, Keyboard.isKeyBackspace)\n .add(CURRENCY_INPUT_ACTIONS.Delete, Keyboard.isKeyDelete)\n .add(CURRENCY_INPUT_ACTIONS.Ignore, (e) => Keyboard.isModified()(e) || Keyboard.isKeyTab(e))\n .add(CURRENCY_INPUT_ACTIONS.Comma, Keyboard.someKeys(...commaAliases))\n .build(CURRENCY_INPUT_ACTIONS.Unknown);\n"]}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ export declare const commaAliases: ((e: import("react").KeyboardEvent<HTMLElement> | KeyboardEvent) => boolean)[];
2
3
  export declare const CURRENCY_INPUT_ACTIONS: {
3
4
  Unknown: number;
4
5
  Ignore: number;
@@ -14,5 +15,6 @@ export declare const CURRENCY_INPUT_ACTIONS: {
14
15
  Backspace: number;
15
16
  Delete: number;
16
17
  Submit: number;
18
+ Comma: number;
17
19
  };
18
20
  export declare const extractAction: (x0: import("react").KeyboardEvent<HTMLElement>) => unknown;
@@ -97,6 +97,7 @@ export var DateFragmentsView = /*#__PURE__*/function (_React$Component) {
97
97
  "data-fragment": "",
98
98
  onMouseUp: handleMouseUp
99
99
  }, valueMask, /*#__PURE__*/React.createElement("span", {
100
+ "data-tid": "DateFragmentsView__placeholder",
100
101
  className: styles.mask(this.theme)
101
102
  }, Array(lengthMask).fill('').map(function (_, i) {
102
103
  return /*#__PURE__*/React.createElement(MaskCharLowLine, {
@@ -1 +1 @@
1
- {"version":3,"sources":["DateFragmentsView.tsx"],"names":["React","MaskCharLowLine","InternalDateValidator","InternalDateComponentType","ThemeContext","cx","styles","DateFragmentsView","rootNode","isFragment","el","fragments","Array","from","querySelectorAll","some","fragment","contains","getRootNode","rootRef","render","theme","renderMain","root","props","map","index","type","Separator","renderSeparator","renderDateComponent","separatorClassName","mask","delimiterFilled","value","inputMode","onSelectDateComponent","selected","length","valueWithPad","valueMask","lengthMask","testParseToNumber","Math","max","toString","handleMouseUp","e","document","activeElement","currentTarget","fill","_","i","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { MaskCharLowLine } from '../../internal/MaskCharLowLine';\nimport { InternalDateValidator } from '../../lib/date/InternalDateValidator';\nimport { InternalDateComponentType, InternalDateFragment } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './DateFragmentsView.styles';\n\ninterface DateFragmentViewProps {\n selected: InternalDateComponentType | null;\n fragments: InternalDateFragment[];\n inputMode: boolean;\n onSelectDateComponent: (type: InternalDateComponentType, e: React.MouseEvent<HTMLSpanElement>) => void;\n}\n\nexport class DateFragmentsView extends React.Component<DateFragmentViewProps, {}> {\n private theme!: Theme;\n private rootNode: HTMLSpanElement | null = null;\n\n public isFragment = (el: HTMLElement | EventTarget): boolean => {\n if (this.rootNode) {\n // NOTE: NodeList doesn't support method 'forEach' in IE11\n const fragments: HTMLSpanElement[] = Array.from(this.rootNode.querySelectorAll('[data-fragment]'));\n return fragments.some((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n }\n return false;\n };\n\n public getRootNode = () => this.rootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n return (\n <span ref={this.rootRef} className={styles.root(this.theme)}>\n {this.props.fragments.map((fragment, index) =>\n fragment.type === InternalDateComponentType.Separator\n ? this.renderSeparator(fragment, index)\n : this.renderDateComponent(fragment, index),\n )}\n </span>\n );\n }\n\n private renderSeparator(fragment: InternalDateFragment, index: number): JSX.Element {\n const separatorClassName = cx({\n [styles.mask(this.theme)]: true,\n [styles.delimiterFilled()]: this.props.fragments[index + 1].value !== null,\n });\n\n return (\n <span key={index} className={separatorClassName}>\n {fragment.value}\n </span>\n );\n }\n\n private renderDateComponent(fragment: InternalDateFragment, index: number): JSX.Element {\n const { inputMode, onSelectDateComponent, selected } = this.props;\n const { type, value, length, valueWithPad } = fragment;\n\n const valueMask = value === null || (selected === type && inputMode) ? value : valueWithPad || value;\n const lengthMask = InternalDateValidator.testParseToNumber(valueMask)\n ? Math.max(length - valueMask!.toString().length, 0)\n : length;\n\n const handleMouseUp = (e: React.MouseEvent<HTMLSpanElement>) => {\n if (document.activeElement && document.activeElement.contains(e.currentTarget)) {\n onSelectDateComponent(type, e);\n }\n };\n\n return (\n <span key={index} data-fragment=\"\" onMouseUp={handleMouseUp}>\n {valueMask}\n <span className={styles.mask(this.theme)}>\n {Array(lengthMask)\n .fill('')\n .map((_, i) => (\n <MaskCharLowLine key={i} />\n ))}\n </span>\n </span>\n );\n }\n\n private rootRef = (el: HTMLSpanElement | null) => {\n this.rootNode = el;\n };\n}\n"]}
1
+ {"version":3,"sources":["DateFragmentsView.tsx"],"names":["React","MaskCharLowLine","InternalDateValidator","InternalDateComponentType","ThemeContext","cx","styles","DateFragmentsView","rootNode","isFragment","el","fragments","Array","from","querySelectorAll","some","fragment","contains","getRootNode","rootRef","render","theme","renderMain","root","props","map","index","type","Separator","renderSeparator","renderDateComponent","separatorClassName","mask","delimiterFilled","value","inputMode","onSelectDateComponent","selected","length","valueWithPad","valueMask","lengthMask","testParseToNumber","Math","max","toString","handleMouseUp","e","document","activeElement","currentTarget","fill","_","i","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { MaskCharLowLine } from '../../internal/MaskCharLowLine';\nimport { InternalDateValidator } from '../../lib/date/InternalDateValidator';\nimport { InternalDateComponentType, InternalDateFragment } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './DateFragmentsView.styles';\n\ninterface DateFragmentViewProps {\n selected: InternalDateComponentType | null;\n fragments: InternalDateFragment[];\n inputMode: boolean;\n onSelectDateComponent: (type: InternalDateComponentType, e: React.MouseEvent<HTMLSpanElement>) => void;\n}\n\nexport class DateFragmentsView extends React.Component<DateFragmentViewProps, {}> {\n private theme!: Theme;\n private rootNode: HTMLSpanElement | null = null;\n\n public isFragment = (el: HTMLElement | EventTarget): boolean => {\n if (this.rootNode) {\n // NOTE: NodeList doesn't support method 'forEach' in IE11\n const fragments: HTMLSpanElement[] = Array.from(this.rootNode.querySelectorAll('[data-fragment]'));\n return fragments.some((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n }\n return false;\n };\n\n public getRootNode = () => this.rootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n return (\n <span ref={this.rootRef} className={styles.root(this.theme)}>\n {this.props.fragments.map((fragment, index) =>\n fragment.type === InternalDateComponentType.Separator\n ? this.renderSeparator(fragment, index)\n : this.renderDateComponent(fragment, index),\n )}\n </span>\n );\n }\n\n private renderSeparator(fragment: InternalDateFragment, index: number): JSX.Element {\n const separatorClassName = cx({\n [styles.mask(this.theme)]: true,\n [styles.delimiterFilled()]: this.props.fragments[index + 1].value !== null,\n });\n\n return (\n <span key={index} className={separatorClassName}>\n {fragment.value}\n </span>\n );\n }\n\n private renderDateComponent(fragment: InternalDateFragment, index: number): JSX.Element {\n const { inputMode, onSelectDateComponent, selected } = this.props;\n const { type, value, length, valueWithPad } = fragment;\n\n const valueMask = value === null || (selected === type && inputMode) ? value : valueWithPad || value;\n const lengthMask = InternalDateValidator.testParseToNumber(valueMask)\n ? Math.max(length - valueMask!.toString().length, 0)\n : length;\n\n const handleMouseUp = (e: React.MouseEvent<HTMLSpanElement>) => {\n if (document.activeElement && document.activeElement.contains(e.currentTarget)) {\n onSelectDateComponent(type, e);\n }\n };\n\n return (\n <span key={index} data-fragment=\"\" onMouseUp={handleMouseUp}>\n {valueMask}\n <span data-tid=\"DateFragmentsView__placeholder\" className={styles.mask(this.theme)}>\n {Array(lengthMask)\n .fill('')\n .map((_, i) => (\n <MaskCharLowLine key={i} />\n ))}\n </span>\n </span>\n );\n }\n\n private rootRef = (el: HTMLSpanElement | null) => {\n this.rootNode = el;\n };\n}\n"]}
@@ -121,7 +121,7 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps<Date
121
121
  close(): void;
122
122
  render(): JSX.Element;
123
123
  renderMain: (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => JSX.Element;
124
- getParent: () => Nullable<HTMLElement>;
124
+ getParent: () => Nullable<Element>;
125
125
  private getRootStyle;
126
126
  private getInputRef;
127
127
  private parseValueToDate;
@@ -27,11 +27,18 @@ const request = () => Promise.reject();
27
27
  <FileUploader request={request} multiple />
28
28
  ```
29
29
 
30
+ Использование `accept`
31
+ ```jsx harmony
32
+ import { FileUploader } from '@skbkontur/react-ui';
33
+
34
+ <FileUploader multiple accept="image/*" />
35
+ ```
36
+
30
37
  Валидация файла в списке
31
38
  ```jsx harmony
32
39
  import { FileUploader } from '@skbkontur/react-ui';
33
40
 
34
- <FileUploader multiple getFileValidationText={({originalFile}) => `У файла ${originalFile.name} неверный формат`} />
41
+ <FileUploader multiple validateBeforeUpload={({originalFile}) => `У файла ${originalFile.name} неверный формат`} />
35
42
  ```
36
43
 
37
44
  Валидация контрола