@salutejs/plasma-new-hope 0.144.0-canary.1418.10833167538.0 → 0.144.0-canary.1430.10833771822.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. package/cjs/components/Editable/Editable.css +8 -0
  2. package/cjs/components/Editable/Editable.js +155 -0
  3. package/cjs/components/Editable/Editable.js.map +1 -0
  4. package/cjs/components/Editable/Editable.styles.js +38 -0
  5. package/cjs/components/Editable/Editable.styles.js.map +1 -0
  6. package/cjs/components/Editable/Editable.styles_somxw2.css +4 -0
  7. package/cjs/components/Editable/Editable.tokens.js +21 -0
  8. package/cjs/components/Editable/Editable.tokens.js.map +1 -0
  9. package/cjs/components/Editable/utils/clearSelection.js +23 -0
  10. package/cjs/components/Editable/utils/clearSelection.js.map +1 -0
  11. package/cjs/components/Editable/utils/selectText.js +30 -0
  12. package/cjs/components/Editable/utils/selectText.js.map +1 -0
  13. package/cjs/components/Editable/variations/_size/base.js +9 -0
  14. package/cjs/components/Editable/variations/_size/base.js.map +1 -0
  15. package/cjs/components/Editable/variations/_size/base_54y6eh.css +1 -0
  16. package/cjs/components/Editable/variations/_view/base.js +9 -0
  17. package/cjs/components/Editable/variations/_view/base.js.map +1 -0
  18. package/cjs/components/Editable/variations/_view/base_11fpjfv.css +1 -0
  19. package/cjs/index.css +9 -0
  20. package/cjs/index.js +7 -0
  21. package/cjs/index.js.map +1 -1
  22. package/cjs/utils/constants.js +20 -0
  23. package/cjs/utils/constants.js.map +1 -0
  24. package/cjs/utils/index.js.map +1 -1
  25. package/emotion/cjs/components/Editable/Editable.js +160 -0
  26. package/emotion/cjs/components/Editable/Editable.styles.js +26 -0
  27. package/emotion/cjs/components/Editable/Editable.tokens.js +19 -0
  28. package/emotion/cjs/components/Editable/index.js +25 -0
  29. package/emotion/cjs/components/Editable/utils/clearSelection.js +19 -0
  30. package/emotion/cjs/components/Editable/utils/index.js +19 -0
  31. package/emotion/cjs/components/Editable/utils/selectText.js +26 -0
  32. package/emotion/cjs/components/Editable/variations/_size/base.js +10 -0
  33. package/emotion/cjs/components/Editable/variations/_size/tokens.json +1 -0
  34. package/emotion/cjs/components/Editable/variations/_view/base.js +10 -0
  35. package/emotion/cjs/components/Editable/variations/_view/tokens.json +5 -0
  36. package/emotion/cjs/examples/plasma_b2c/components/Editable/Editable.config.js +22 -0
  37. package/emotion/cjs/examples/plasma_b2c/components/Editable/Editable.js +22 -0
  38. package/emotion/cjs/examples/plasma_b2c/components/Editable/Editable.stories.tsx +81 -0
  39. package/emotion/cjs/examples/plasma_web/components/Editable/Editable.config.js +22 -0
  40. package/emotion/cjs/examples/plasma_web/components/Editable/Editable.js +22 -0
  41. package/emotion/cjs/examples/plasma_web/components/Editable/Editable.stories.tsx +81 -0
  42. package/emotion/cjs/index.js +11 -0
  43. package/emotion/cjs/utils/constants.js +19 -0
  44. package/emotion/cjs/utils/index.js +8 -2
  45. package/emotion/es/components/Editable/Editable.js +151 -0
  46. package/emotion/es/components/Editable/Editable.styles.js +19 -0
  47. package/emotion/es/components/Editable/Editable.tokens.js +13 -0
  48. package/emotion/es/components/Editable/index.js +2 -0
  49. package/emotion/es/components/Editable/utils/clearSelection.js +13 -0
  50. package/emotion/es/components/Editable/utils/index.js +2 -0
  51. package/emotion/es/components/Editable/utils/selectText.js +20 -0
  52. package/emotion/es/components/Editable/variations/_size/base.js +4 -0
  53. package/emotion/es/components/Editable/variations/_size/tokens.json +1 -0
  54. package/emotion/es/components/Editable/variations/_view/base.js +4 -0
  55. package/emotion/es/components/Editable/variations/_view/tokens.json +5 -0
  56. package/emotion/es/examples/plasma_b2c/components/Editable/Editable.config.js +16 -0
  57. package/emotion/es/examples/plasma_b2c/components/Editable/Editable.js +16 -0
  58. package/emotion/es/examples/plasma_b2c/components/Editable/Editable.stories.tsx +81 -0
  59. package/emotion/es/examples/plasma_web/components/Editable/Editable.config.js +16 -0
  60. package/emotion/es/examples/plasma_web/components/Editable/Editable.js +16 -0
  61. package/emotion/es/examples/plasma_web/components/Editable/Editable.stories.tsx +81 -0
  62. package/emotion/es/index.js +2 -1
  63. package/emotion/es/utils/constants.js +13 -0
  64. package/emotion/es/utils/index.js +2 -0
  65. package/es/components/Editable/Editable.css +8 -0
  66. package/es/components/Editable/Editable.js +150 -0
  67. package/es/components/Editable/Editable.js.map +1 -0
  68. package/es/components/Editable/Editable.styles.js +31 -0
  69. package/es/components/Editable/Editable.styles.js.map +1 -0
  70. package/es/components/Editable/Editable.styles_somxw2.css +4 -0
  71. package/es/components/Editable/Editable.tokens.js +16 -0
  72. package/es/components/Editable/Editable.tokens.js.map +1 -0
  73. package/es/components/Editable/utils/clearSelection.js +19 -0
  74. package/es/components/Editable/utils/clearSelection.js.map +1 -0
  75. package/es/components/Editable/utils/selectText.js +26 -0
  76. package/es/components/Editable/utils/selectText.js.map +1 -0
  77. package/es/components/Editable/variations/_size/base.js +5 -0
  78. package/es/components/Editable/variations/_size/base.js.map +1 -0
  79. package/es/components/Editable/variations/_size/base_54y6eh.css +1 -0
  80. package/es/components/Editable/variations/_view/base.js +5 -0
  81. package/es/components/Editable/variations/_view/base.js.map +1 -0
  82. package/es/components/Editable/variations/_view/base_11fpjfv.css +1 -0
  83. package/es/index.css +9 -0
  84. package/es/index.js +4 -0
  85. package/es/index.js.map +1 -1
  86. package/es/utils/constants.js +16 -0
  87. package/es/utils/constants.js.map +1 -0
  88. package/es/utils/index.js.map +1 -1
  89. package/package.json +2 -2
  90. package/styled-components/cjs/components/Editable/Editable.js +160 -0
  91. package/styled-components/cjs/components/Editable/Editable.styles.js +26 -0
  92. package/styled-components/cjs/components/Editable/Editable.tokens.js +19 -0
  93. package/styled-components/cjs/components/Editable/index.js +25 -0
  94. package/styled-components/cjs/components/Editable/utils/clearSelection.js +19 -0
  95. package/styled-components/cjs/components/Editable/utils/index.js +19 -0
  96. package/styled-components/cjs/components/Editable/utils/selectText.js +26 -0
  97. package/styled-components/cjs/components/Editable/variations/_size/base.js +10 -0
  98. package/styled-components/cjs/components/Editable/variations/_size/tokens.json +1 -0
  99. package/styled-components/cjs/components/Editable/variations/_view/base.js +10 -0
  100. package/styled-components/cjs/components/Editable/variations/_view/tokens.json +5 -0
  101. package/styled-components/cjs/examples/plasma_b2c/components/Editable/Editable.config.js +22 -0
  102. package/styled-components/cjs/examples/plasma_b2c/components/Editable/Editable.js +22 -0
  103. package/styled-components/cjs/examples/plasma_b2c/components/Editable/Editable.stories.tsx +81 -0
  104. package/styled-components/cjs/examples/plasma_web/components/Editable/Editable.config.js +22 -0
  105. package/styled-components/cjs/examples/plasma_web/components/Editable/Editable.js +22 -0
  106. package/styled-components/cjs/examples/plasma_web/components/Editable/Editable.stories.tsx +81 -0
  107. package/styled-components/cjs/index.js +11 -0
  108. package/styled-components/cjs/utils/constants.js +19 -0
  109. package/styled-components/cjs/utils/index.js +8 -2
  110. package/styled-components/es/components/Editable/Editable.js +151 -0
  111. package/styled-components/es/components/Editable/Editable.styles.js +18 -0
  112. package/styled-components/es/components/Editable/Editable.tokens.js +13 -0
  113. package/styled-components/es/components/Editable/index.js +2 -0
  114. package/styled-components/es/components/Editable/utils/clearSelection.js +13 -0
  115. package/styled-components/es/components/Editable/utils/index.js +2 -0
  116. package/styled-components/es/components/Editable/utils/selectText.js +20 -0
  117. package/styled-components/es/components/Editable/variations/_size/base.js +4 -0
  118. package/styled-components/es/components/Editable/variations/_size/tokens.json +1 -0
  119. package/styled-components/es/components/Editable/variations/_view/base.js +4 -0
  120. package/styled-components/es/components/Editable/variations/_view/tokens.json +5 -0
  121. package/styled-components/es/examples/plasma_b2c/components/Editable/Editable.config.js +16 -0
  122. package/styled-components/es/examples/plasma_b2c/components/Editable/Editable.js +16 -0
  123. package/styled-components/es/examples/plasma_b2c/components/Editable/Editable.stories.tsx +81 -0
  124. package/styled-components/es/examples/plasma_web/components/Editable/Editable.config.js +16 -0
  125. package/styled-components/es/examples/plasma_web/components/Editable/Editable.js +16 -0
  126. package/styled-components/es/examples/plasma_web/components/Editable/Editable.stories.tsx +81 -0
  127. package/styled-components/es/index.js +2 -1
  128. package/styled-components/es/utils/constants.js +13 -0
  129. package/styled-components/es/utils/index.js +2 -0
  130. package/types/components/Editable/Editable.d.ts +23 -0
  131. package/types/components/Editable/Editable.d.ts.map +1 -0
  132. package/types/components/Editable/Editable.styles.d.ts +8 -0
  133. package/types/components/Editable/Editable.styles.d.ts.map +1 -0
  134. package/types/components/Editable/Editable.tokens.d.ts +14 -0
  135. package/types/components/Editable/Editable.tokens.d.ts.map +1 -0
  136. package/types/components/Editable/Editable.types.d.ts +39 -0
  137. package/types/components/Editable/Editable.types.d.ts.map +1 -0
  138. package/types/components/Editable/index.d.ts +3 -0
  139. package/types/components/Editable/index.d.ts.map +1 -0
  140. package/types/components/Editable/utils/clearSelection.d.ts +2 -0
  141. package/types/components/Editable/utils/clearSelection.d.ts.map +1 -0
  142. package/types/components/Editable/utils/index.d.ts +3 -0
  143. package/types/components/Editable/utils/index.d.ts.map +1 -0
  144. package/types/components/Editable/utils/selectText.d.ts +2 -0
  145. package/types/components/Editable/utils/selectText.d.ts.map +1 -0
  146. package/types/components/Editable/variations/_size/base.d.ts +2 -0
  147. package/types/components/Editable/variations/_size/base.d.ts.map +1 -0
  148. package/types/components/Editable/variations/_view/base.d.ts +2 -0
  149. package/types/components/Editable/variations/_view/base.d.ts.map +1 -0
  150. package/types/components/Pagination/utils/index.d.ts +1 -1
  151. package/types/examples/plasma_b2c/components/Editable/Editable.config.d.ts +15 -0
  152. package/types/examples/plasma_b2c/components/Editable/Editable.config.d.ts.map +1 -0
  153. package/types/examples/plasma_b2c/components/Editable/Editable.d.ts +57 -0
  154. package/types/examples/plasma_b2c/components/Editable/Editable.d.ts.map +1 -0
  155. package/types/examples/plasma_web/components/Editable/Editable.config.d.ts +15 -0
  156. package/types/examples/plasma_web/components/Editable/Editable.config.d.ts.map +1 -0
  157. package/types/examples/plasma_web/components/Editable/Editable.d.ts +57 -0
  158. package/types/examples/plasma_web/components/Editable/Editable.d.ts.map +1 -0
  159. package/types/index.d.ts +1 -0
  160. package/types/index.d.ts.map +1 -1
  161. package/types/utils/constants.d.ts +14 -0
  162. package/types/utils/constants.d.ts.map +1 -0
  163. package/types/utils/index.d.ts +1 -0
  164. package/types/utils/index.d.ts.map +1 -1
  165. package/emotion/cjs/components/Mask/Mask.js +0 -207
  166. package/emotion/cjs/components/Mask/index.js +0 -12
  167. package/emotion/cjs/components/Mask/utils/constants.js +0 -31
  168. package/emotion/cjs/components/Mask/utils/createMask.js +0 -50
  169. package/emotion/cjs/components/Mask/utils/mask.js +0 -248
  170. package/emotion/cjs/components/Mask/utils/parseMask.js +0 -36
  171. package/emotion/cjs/components/Mask/utils/processInput.js +0 -52
  172. package/emotion/cjs/components/Mask/utils/processMask.js +0 -99
  173. package/emotion/cjs/components/Mask/utils/selection.js +0 -48
  174. package/emotion/cjs/components/Mask/utils/types/mask.types.js +0 -5
  175. package/emotion/cjs/components/Mask/utils/types/selectRange.types.js +0 -5
  176. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.js +0 -9
  177. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  178. package/emotion/es/components/Mask/Mask.js +0 -199
  179. package/emotion/es/components/Mask/index.js +0 -1
  180. package/emotion/es/components/Mask/utils/constants.js +0 -25
  181. package/emotion/es/components/Mask/utils/createMask.js +0 -44
  182. package/emotion/es/components/Mask/utils/mask.js +0 -242
  183. package/emotion/es/components/Mask/utils/parseMask.js +0 -30
  184. package/emotion/es/components/Mask/utils/processInput.js +0 -46
  185. package/emotion/es/components/Mask/utils/processMask.js +0 -93
  186. package/emotion/es/components/Mask/utils/selection.js +0 -42
  187. package/emotion/es/components/Mask/utils/types/mask.types.js +0 -1
  188. package/emotion/es/components/Mask/utils/types/selectRange.types.js +0 -1
  189. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.js +0 -3
  190. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  191. package/styled-components/cjs/components/Mask/Mask.js +0 -207
  192. package/styled-components/cjs/components/Mask/Mask.types.js +0 -5
  193. package/styled-components/cjs/components/Mask/index.js +0 -12
  194. package/styled-components/cjs/components/Mask/utils/constants.js +0 -31
  195. package/styled-components/cjs/components/Mask/utils/createMask.js +0 -50
  196. package/styled-components/cjs/components/Mask/utils/mask.js +0 -248
  197. package/styled-components/cjs/components/Mask/utils/parseMask.js +0 -36
  198. package/styled-components/cjs/components/Mask/utils/processInput.js +0 -52
  199. package/styled-components/cjs/components/Mask/utils/processMask.js +0 -99
  200. package/styled-components/cjs/components/Mask/utils/selection.js +0 -48
  201. package/styled-components/cjs/components/Mask/utils/types/input.types.js +0 -5
  202. package/styled-components/cjs/components/Mask/utils/types/mask.types.js +0 -5
  203. package/styled-components/cjs/components/Mask/utils/types/selectRange.types.js +0 -5
  204. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.js +0 -9
  205. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  206. package/styled-components/es/components/Mask/Mask.js +0 -199
  207. package/styled-components/es/components/Mask/Mask.types.js +0 -1
  208. package/styled-components/es/components/Mask/index.js +0 -1
  209. package/styled-components/es/components/Mask/utils/constants.js +0 -25
  210. package/styled-components/es/components/Mask/utils/createMask.js +0 -44
  211. package/styled-components/es/components/Mask/utils/mask.js +0 -242
  212. package/styled-components/es/components/Mask/utils/parseMask.js +0 -30
  213. package/styled-components/es/components/Mask/utils/processInput.js +0 -46
  214. package/styled-components/es/components/Mask/utils/processMask.js +0 -93
  215. package/styled-components/es/components/Mask/utils/selection.js +0 -42
  216. package/styled-components/es/components/Mask/utils/types/input.types.js +0 -1
  217. package/styled-components/es/components/Mask/utils/types/mask.types.js +0 -1
  218. package/styled-components/es/components/Mask/utils/types/selectRange.types.js +0 -1
  219. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.js +0 -3
  220. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  221. package/types/components/Mask/Mask.d.ts +0 -5
  222. package/types/components/Mask/Mask.d.ts.map +0 -1
  223. package/types/components/Mask/Mask.types.d.ts +0 -49
  224. package/types/components/Mask/Mask.types.d.ts.map +0 -1
  225. package/types/components/Mask/index.d.ts +0 -2
  226. package/types/components/Mask/index.d.ts.map +0 -1
  227. package/types/components/Mask/utils/constants.d.ts +0 -15
  228. package/types/components/Mask/utils/constants.d.ts.map +0 -1
  229. package/types/components/Mask/utils/createMask.d.ts +0 -19
  230. package/types/components/Mask/utils/createMask.d.ts.map +0 -1
  231. package/types/components/Mask/utils/mask.d.ts +0 -44
  232. package/types/components/Mask/utils/mask.d.ts.map +0 -1
  233. package/types/components/Mask/utils/parseMask.d.ts +0 -3
  234. package/types/components/Mask/utils/parseMask.d.ts.map +0 -1
  235. package/types/components/Mask/utils/processInput.d.ts +0 -15
  236. package/types/components/Mask/utils/processInput.d.ts.map +0 -1
  237. package/types/components/Mask/utils/processMask.d.ts +0 -9
  238. package/types/components/Mask/utils/processMask.d.ts.map +0 -1
  239. package/types/components/Mask/utils/selection.d.ts +0 -11
  240. package/types/components/Mask/utils/selection.d.ts.map +0 -1
  241. package/types/components/Mask/utils/types/input.types.d.ts +0 -26
  242. package/types/components/Mask/utils/types/input.types.d.ts.map +0 -1
  243. package/types/components/Mask/utils/types/mask.types.d.ts +0 -9
  244. package/types/components/Mask/utils/types/mask.types.d.ts.map +0 -1
  245. package/types/components/Mask/utils/types/selectRange.types.d.ts +0 -5
  246. package/types/components/Mask/utils/types/selectRange.types.d.ts.map +0 -1
  247. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts +0 -191
  248. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts.map +0 -1
  249. /package/emotion/cjs/components/{Mask/Mask.types.js → Editable/Editable.types.js} +0 -0
  250. /package/emotion/es/components/{Mask/Mask.types.js → Editable/Editable.types.js} +0 -0
  251. /package/{emotion/cjs/components/Mask/utils/types/input.types.js → styled-components/cjs/components/Editable/Editable.types.js} +0 -0
  252. /package/{emotion/es/components/Mask/utils/types/input.types.js → styled-components/es/components/Editable/Editable.types.js} +0 -0
@@ -0,0 +1,150 @@
1
+ import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import React, { forwardRef, useState, useRef, useEffect } from 'react';
3
+ import { useForkRef } from '@salutejs/plasma-core';
4
+ import '../../utils/react.js';
5
+ import { keyCodes } from '../../utils/constants.js';
6
+ import { clearSelection } from './utils/clearSelection.js';
7
+ import { selectText } from './utils/selectText.js';
8
+ import { classes } from './Editable.tokens.js';
9
+ import { StyledPlacehpolder, StyledInput, EditButton, base } from './Editable.styles.js';
10
+ import { base as base$1 } from './variations/_view/base.js';
11
+ import { base as base$2 } from './variations/_size/base.js';
12
+
13
+ var _excluded = ["textComponent", "value", "icon", "maxLength", "spellCheck", "placeholder", "name", "onChange", "onBlur", "onPaste"];
14
+ var editableRoot = function editableRoot(typograpyVariants) {
15
+ return function (Root) {
16
+ return /*#__PURE__*/forwardRef(function (_ref, outerRef) {
17
+ var _prevValueRef$current;
18
+ var textComponent = _ref.textComponent,
19
+ value = _ref.value,
20
+ icon = _ref.icon,
21
+ maxLength = _ref.maxLength,
22
+ _ref$spellCheck = _ref.spellCheck,
23
+ spellCheck = _ref$spellCheck === void 0 ? 'false' : _ref$spellCheck,
24
+ placeholder = _ref.placeholder,
25
+ name = _ref.name,
26
+ onChange = _ref.onChange,
27
+ onBlur = _ref.onBlur,
28
+ onPaste = _ref.onPaste,
29
+ props = _objectWithoutProperties(_ref, _excluded);
30
+ var Component = textComponent;
31
+ var _useState = useState(false),
32
+ _useState2 = _slicedToArray(_useState, 2),
33
+ isEditing = _useState2[0],
34
+ setIsEditing = _useState2[1];
35
+ var inputRef = useRef(null);
36
+ var innerRef = useForkRef(inputRef, outerRef);
37
+ var prevValueRef = useRef(value || '');
38
+ var handlePaste = function handlePaste(e) {
39
+ if (!inputRef.current) {
40
+ return;
41
+ }
42
+ e.preventDefault();
43
+ var text = e.clipboardData.getData('text/plain').replace(/[\n\r]/gi, '');
44
+ if (document.queryCommandSupported('insertText')) {
45
+ document.execCommand('insertText', false, text);
46
+ } else {
47
+ try {
48
+ navigator.clipboard.writeText(text);
49
+ } catch (_unused) {
50
+ inputRef.current.textContent = text;
51
+ }
52
+ }
53
+ if (onPaste) {
54
+ onPaste(e);
55
+ }
56
+ };
57
+ var handleBlur = function handleBlur(e) {
58
+ setIsEditing(false);
59
+ clearSelection();
60
+
61
+ // NOTE: Remove <br> tag inserted by Safari
62
+ var editableElement = inputRef.current;
63
+ if (editableElement && editableElement.innerHTML === '<br>') {
64
+ editableElement.innerHTML = '';
65
+ }
66
+ if (onBlur) {
67
+ onBlur(e);
68
+ }
69
+ };
70
+ var handleFocus = function handleFocus() {
71
+ setIsEditing(true);
72
+ inputRef.current && selectText(inputRef.current);
73
+ };
74
+ var handleEditClick = function handleEditClick() {
75
+ var _inputRef$current;
76
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
77
+ };
78
+ var handleKeyDown = function handleKeyDown(e) {
79
+ if ([keyCodes.Enter, keyCodes.Escape].includes(e.keyCode)) {
80
+ var _inputRef$current2;
81
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
82
+ }
83
+ };
84
+ var handleChange = function handleChange(e) {
85
+ var _inputRef$current$tex;
86
+ if (!inputRef.current) {
87
+ return;
88
+ }
89
+ var contentLength = ((_inputRef$current$tex = inputRef.current.textContent) === null || _inputRef$current$tex === void 0 ? void 0 : _inputRef$current$tex.length) || 0;
90
+ if (!maxLength || contentLength <= maxLength) {
91
+ prevValueRef.current = inputRef.current.textContent || '';
92
+ onChange && onChange(e);
93
+ } else {
94
+ inputRef.current.textContent = prevValueRef.current;
95
+ }
96
+ };
97
+ useEffect(function () {
98
+ if (!inputRef.current || typeof value === 'undefined' || value === inputRef.current.textContent) {
99
+ return;
100
+ }
101
+ inputRef.current.textContent = value;
102
+ }, [value, textComponent]);
103
+ return /*#__PURE__*/React.createElement(Root, props, /*#__PURE__*/React.createElement(Component, {
104
+ ref: innerRef,
105
+ className: classes.editableTextBox,
106
+ role: "textbox",
107
+ spellCheck: spellCheck,
108
+ contentEditable: true,
109
+ onPaste: handlePaste,
110
+ onInput: handleChange,
111
+ onBlur: handleBlur,
112
+ onFocus: handleFocus,
113
+ onKeyDown: handleKeyDown,
114
+ "aria-label": placeholder
115
+ }), ((_prevValueRef$current = prevValueRef.current) === null || _prevValueRef$current === void 0 ? void 0 : _prevValueRef$current.length) === 0 && !isEditing && /*#__PURE__*/React.createElement(Component, null, /*#__PURE__*/React.createElement(StyledPlacehpolder, {
116
+ onClick: handleEditClick
117
+ }, placeholder)), /*#__PURE__*/React.createElement(StyledInput, {
118
+ type: "hidden",
119
+ value: prevValueRef.current,
120
+ name: name
121
+ }), /*#__PURE__*/React.createElement(EditButton, {
122
+ onClick: handleEditClick,
123
+ isHidden: isEditing
124
+ }, icon));
125
+ });
126
+ };
127
+ };
128
+ var editableConfig = function editableConfig(typographyVariants) {
129
+ return {
130
+ name: 'Editable',
131
+ tag: 'span',
132
+ layout: editableRoot(),
133
+ base: base,
134
+ variations: {
135
+ view: {
136
+ css: base$1
137
+ },
138
+ size: {
139
+ css: base$2
140
+ }
141
+ },
142
+ defaults: {
143
+ view: 'default',
144
+ size: 'm'
145
+ }
146
+ };
147
+ };
148
+
149
+ export { editableConfig, editableRoot };
150
+ //# sourceMappingURL=Editable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Editable.js","sources":["../../../src/components/Editable/Editable.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport type {\n ChangeEvent,\n ClipboardEvent,\n FocusEvent,\n ClipboardEventHandler,\n FocusEventHandler,\n FormEventHandler,\n KeyboardEventHandler,\n} from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../engines';\nimport { constants } from '../../utils';\n\nimport type { EditableProps, TypographyVariants } from './Editable.types';\nimport { clearSelection, selectText } from './utils';\nimport { classes } from './Editable.tokens';\nimport { base, EditButton, StyledInput, StyledPlacehpolder } from './Editable.styles';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\n\nexport const editableRoot = (typograpyVariants: TypographyVariants) => (\n Root: RootProps<HTMLSpanElement, Omit<EditableProps<typeof typograpyVariants>, 'textComponent'>>,\n) =>\n forwardRef<HTMLInputElement, EditableProps<typeof typograpyVariants>>(\n (\n {\n textComponent,\n value,\n icon,\n maxLength,\n spellCheck = 'false',\n placeholder,\n name,\n onChange,\n onBlur,\n onPaste,\n ...props\n },\n outerRef,\n ) => {\n const Component = textComponent;\n\n const [isEditing, setIsEditing] = useState(false);\n\n const inputRef = useRef<HTMLDivElement>(null);\n const innerRef = useForkRef(inputRef, outerRef);\n\n const prevValueRef = useRef(value || '');\n\n const handlePaste: ClipboardEventHandler<HTMLDivElement> = (e) => {\n if (!inputRef.current) {\n return;\n }\n\n e.preventDefault();\n\n const text = e.clipboardData.getData('text/plain').replace(/[\\n\\r]/gi, '');\n\n if (document.queryCommandSupported('insertText')) {\n document.execCommand('insertText', false, text);\n } else {\n try {\n navigator.clipboard.writeText(text);\n } catch {\n inputRef.current.textContent = text;\n }\n }\n\n if (onPaste) {\n onPaste(e as ClipboardEvent<HTMLInputElement>);\n }\n };\n\n const handleBlur: FocusEventHandler<HTMLDivElement> = (e) => {\n setIsEditing(false);\n\n clearSelection();\n\n // NOTE: Remove <br> tag inserted by Safari\n const editableElement = inputRef.current;\n if (editableElement && editableElement.innerHTML === '<br>') {\n editableElement.innerHTML = '';\n }\n\n if (onBlur) {\n onBlur(e as FocusEvent<HTMLInputElement>);\n }\n };\n\n const handleFocus: FocusEventHandler = () => {\n setIsEditing(true);\n\n inputRef.current && selectText(inputRef.current);\n };\n\n const handleEditClick = () => {\n inputRef.current?.focus();\n };\n\n const handleKeyDown: KeyboardEventHandler = (e) => {\n if ([constants.keyCodes.Enter, constants.keyCodes.Escape].includes(e.keyCode)) {\n inputRef.current?.blur();\n }\n };\n\n const handleChange: FormEventHandler = (e) => {\n if (!inputRef.current) {\n return;\n }\n\n const contentLength = inputRef.current.textContent?.length || 0;\n\n if (!maxLength || contentLength <= maxLength) {\n prevValueRef.current = inputRef.current.textContent || '';\n\n onChange && onChange(e as ChangeEvent<HTMLInputElement>);\n } else {\n inputRef.current.textContent = prevValueRef.current;\n }\n };\n\n useEffect(() => {\n if (!inputRef.current || typeof value === 'undefined' || value === inputRef.current.textContent) {\n return;\n }\n\n inputRef.current.textContent = value;\n }, [value, textComponent]);\n\n return (\n <Root {...props}>\n <Component\n ref={innerRef}\n className={classes.editableTextBox}\n role=\"textbox\"\n spellCheck={spellCheck}\n contentEditable\n onPaste={handlePaste}\n onInput={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n aria-label={placeholder}\n />\n {prevValueRef.current?.length === 0 && !isEditing && (\n <Component>\n <StyledPlacehpolder onClick={handleEditClick}>{placeholder}</StyledPlacehpolder>\n </Component>\n )}\n <StyledInput type=\"hidden\" value={prevValueRef.current} name={name} />\n <EditButton onClick={handleEditClick} isHidden={isEditing}>\n {icon}\n </EditButton>\n </Root>\n );\n },\n );\n\nexport const editableConfig = (typographyVariants: TypographyVariants) => ({\n name: 'Editable',\n tag: 'span',\n layout: editableRoot(typographyVariants),\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 'm',\n },\n});\n"],"names":["editableRoot","typograpyVariants","Root","forwardRef","_ref","outerRef","_prevValueRef$current","textComponent","value","icon","maxLength","_ref$spellCheck","spellCheck","placeholder","name","onChange","onBlur","onPaste","props","_objectWithoutProperties","_excluded","Component","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","inputRef","useRef","innerRef","useForkRef","prevValueRef","handlePaste","e","current","preventDefault","text","clipboardData","getData","replace","document","queryCommandSupported","execCommand","navigator","clipboard","writeText","_unused","textContent","handleBlur","clearSelection","editableElement","innerHTML","handleFocus","selectText","handleEditClick","_inputRef$current","focus","handleKeyDown","constants","Enter","Escape","includes","keyCode","_inputRef$current2","blur","handleChange","_inputRef$current$tex","contentLength","length","useEffect","React","createElement","ref","className","classes","editableTextBox","role","contentEditable","onInput","onFocus","onKeyDown","StyledPlacehpolder","onClick","StyledInput","type","EditButton","isHidden","editableConfig","typographyVariants","tag","layout","base","variations","view","css","viewCSS","size","sizeCSS","defaults"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import './Editable.styles_somxw2.css';
2
+ import { styled } from '@linaria/react';
3
+
4
+ var _exp = function _exp() {
5
+ return function (_ref) {
6
+ var isHidden = _ref.isHidden;
7
+ return isHidden ? 'none' : '';
8
+ };
9
+ };
10
+ var EditButton = /*#__PURE__*/styled('span')({
11
+ name: "EditButton",
12
+ "class": "e1fh2i5t",
13
+ propsAsIs: false,
14
+ vars: {
15
+ "e1fh2i5t-0": [/*#__PURE__*/_exp()]
16
+ }
17
+ });
18
+ var StyledInput = /*#__PURE__*/styled('input')({
19
+ name: "StyledInput",
20
+ "class": "s1n7xl59",
21
+ propsAsIs: false
22
+ });
23
+ var StyledPlacehpolder = /*#__PURE__*/styled('span')({
24
+ name: "StyledPlacehpolder",
25
+ "class": "s4ei6mk",
26
+ propsAsIs: false
27
+ });
28
+ var base = "b18v4gtb";
29
+
30
+ export { EditButton, StyledInput, StyledPlacehpolder, base };
31
+ //# sourceMappingURL=Editable.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Editable.styles.js","sources":["../../../src/components/Editable/Editable.styles.ts"],"sourcesContent":["import { css } from '@linaria/core';\nimport { styled } from '@linaria/react';\n\nimport { classes, tokens } from './Editable.tokens';\n\nexport const EditButton = styled.span<{ isHidden: boolean }>`\n position: relative;\n align-self: stretch;\n\n display: ${({ isHidden }) => (isHidden ? 'none' : '')};\n`;\n\nexport const StyledInput = styled.input``;\n\nexport const StyledPlacehpolder = styled.span`\n display: inline-block;\n color: var(${tokens.placeholderColor});\n`;\n\nexport const base = css`\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n cursor: pointer;\n\n .${classes.editableTextBox} {\n outline: none;\n overflow: hidden;\n white-space: nowrap;\n caret-color: var(${tokens.caretColor});\n }\n`;\n"],"names":["_exp","_ref","isHidden","EditButton","styled","name","class","propsAsIs","vars","StyledInput","StyledPlacehpolder","base"],"mappings":";;AACwC,IAAAA,IAAA,GAAtBA,SAAsBA,IAAAA,GAAA;AAAA,EAAA,OAQzB,UAAAC,IAAA,EAAA;AAAA,IAAA,IAAGC,QAAAA,GAAAA,IAAAA,CAAAA,QAAAA,CAAAA;AAAAA,IAAAA,OAAgBA,QAAQ,GAAG,MAAM,GAAG,EAAG,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAJlD,IAAMC,UAAU,gBAAGC,MAAM,CAAA,MAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,YAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAAC,EAAAA,IAAA,EAAA;AAAA,IAAA,YAAA,EAAA,cAIjBR,IAA0C,EAAA,CAAA;AAAA,GAAA;AAAA,CACxD,EAAA;AAEM,IAAMS,WAAW,gBAAGL,MAAM,CAAA,OAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,aAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAAQ,EAAA;AAElC,IAAMG,kBAAkB,gBAAGN,MAAM,CAAA,MAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,oBAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAGvC,EAAA;AAEM,IAAMI,IAAI,GAYhB;;;;"}
@@ -0,0 +1,4 @@
1
+ .e1fh2i5t{position:relative;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;display:var(--e1fh2i5t-0);}
2
+
3
+ .s4ei6mk{display:inline-block;color:var(--plasma-editable-placeholder-color);}
4
+ .b18v4gtb{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;cursor:pointer;}.b18v4gtb .editable-text-box{outline:none;overflow:hidden;white-space:nowrap;caret-color:var(--plasma-editable-caret-color);}
@@ -0,0 +1,16 @@
1
+ var classes = {
2
+ editableTextBox: 'editable-text-box'
3
+ };
4
+ var tokens = {
5
+ editButtonBackground: '--plasma-editable-edit-button-background',
6
+ editButtonColor: '--plasma-editable-edit-button-color',
7
+ editButtonColorHover: '--plasma-editable-edit-button-color-hover',
8
+ editButtonPaddingLeft: '--plasma-editable-edit-button-padding-left',
9
+ placeholderColor: '--plasma-editable-placeholder-color',
10
+ caretColor: '--plasma-editable-caret-color',
11
+ textBoxMarginRight: '--plasma-editable-text-box-margin-right',
12
+ textBoxPaddingRight: '--plasma-editable-text-box-padding-right'
13
+ };
14
+
15
+ export { classes, tokens };
16
+ //# sourceMappingURL=Editable.tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Editable.tokens.js","sources":["../../../src/components/Editable/Editable.tokens.ts"],"sourcesContent":["export const classes = {\n editableTextBox: 'editable-text-box',\n};\n\nexport const tokens = {\n editButtonBackground: '--plasma-editable-edit-button-background',\n editButtonColor: '--plasma-editable-edit-button-color',\n editButtonColorHover: '--plasma-editable-edit-button-color-hover',\n editButtonPaddingLeft: '--plasma-editable-edit-button-padding-left',\n placeholderColor: '--plasma-editable-placeholder-color',\n caretColor: '--plasma-editable-caret-color',\n textBoxMarginRight: '--plasma-editable-text-box-margin-right',\n textBoxPaddingRight: '--plasma-editable-text-box-padding-right',\n};\n"],"names":["classes","editableTextBox","tokens","editButtonBackground","editButtonColor","editButtonColorHover","editButtonPaddingLeft","placeholderColor","caretColor","textBoxMarginRight","textBoxPaddingRight"],"mappings":"AAAO,IAAMA,OAAO,GAAG;AACnBC,EAAAA,eAAe,EAAE,mBAAA;AACrB,EAAC;AAEM,IAAMC,MAAM,GAAG;AAClBC,EAAAA,oBAAoB,EAAE,0CAA0C;AAChEC,EAAAA,eAAe,EAAE,qCAAqC;AACtDC,EAAAA,oBAAoB,EAAE,2CAA2C;AACjEC,EAAAA,qBAAqB,EAAE,4CAA4C;AACnEC,EAAAA,gBAAgB,EAAE,qCAAqC;AACvDC,EAAAA,UAAU,EAAE,+BAA+B;AAC3CC,EAAAA,kBAAkB,EAAE,yCAAyC;AAC7DC,EAAAA,mBAAmB,EAAE,0CAAA;AACzB;;;;"}
@@ -0,0 +1,19 @@
1
+ import { canUseDOM } from '../../../utils/canUseDOM.js';
2
+ import 'react';
3
+ import '../../../utils/react.js';
4
+
5
+ var clearSelection = function clearSelection() {
6
+ if (!canUseDOM) {
7
+ return;
8
+ }
9
+ var doc = document;
10
+ if (window.getSelection) {
11
+ var _window$getSelection;
12
+ (_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 || _window$getSelection.removeAllRanges();
13
+ } else if (doc.selection) {
14
+ doc.selection.empty();
15
+ }
16
+ };
17
+
18
+ export { clearSelection };
19
+ //# sourceMappingURL=clearSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearSelection.js","sources":["../../../../src/components/Editable/utils/clearSelection.ts"],"sourcesContent":["import { canUseDOM } from '../../../utils';\n\ninterface CustomDocument extends Document {\n selection?: {\n empty: () => void;\n };\n}\n\nexport const clearSelection = () => {\n if (!canUseDOM) {\n return;\n }\n\n const doc = document as CustomDocument;\n\n if (window.getSelection) {\n window.getSelection()?.removeAllRanges();\n } else if (doc.selection) {\n doc.selection.empty();\n }\n};\n"],"names":["clearSelection","canUseDOM","doc","document","window","getSelection","_window$getSelection","removeAllRanges","selection","empty"],"mappings":";;;;IAQaA,cAAc,GAAG,SAAjBA,cAAcA,GAAS;EAChC,IAAI,CAACC,SAAS,EAAE;AACZ,IAAA,OAAA;AACJ,GAAA;EAEA,IAAMC,GAAG,GAAGC,QAA0B,CAAA;EAEtC,IAAIC,MAAM,CAACC,YAAY,EAAE;AAAA,IAAA,IAAAC,oBAAA,CAAA;AACrB,IAAA,CAAAA,oBAAA,GAAAF,MAAM,CAACC,YAAY,EAAE,MAAAC,IAAAA,IAAAA,oBAAA,KAArBA,KAAAA,CAAAA,IAAAA,oBAAA,CAAuBC,eAAe,EAAE,CAAA;AAC5C,GAAC,MAAM,IAAIL,GAAG,CAACM,SAAS,EAAE;AACtBN,IAAAA,GAAG,CAACM,SAAS,CAACC,KAAK,EAAE,CAAA;AACzB,GAAA;AACJ;;;;"}
@@ -0,0 +1,26 @@
1
+ import { canUseDOM } from '../../../utils/canUseDOM.js';
2
+ import 'react';
3
+ import '../../../utils/react.js';
4
+
5
+ var selectText = function selectText(node) {
6
+ if (!canUseDOM) {
7
+ return;
8
+ }
9
+ setTimeout(function () {
10
+ var body = document.body;
11
+ if (window.getSelection && document.createRange) {
12
+ var range = document.createRange();
13
+ range.selectNodeContents(node);
14
+ var selection = window.getSelection();
15
+ selection === null || selection === void 0 || selection.removeAllRanges();
16
+ selection === null || selection === void 0 || selection.addRange(range);
17
+ } else if (body.createTextRange) {
18
+ var _range = body.createTextRange();
19
+ _range.moveToElementText(node);
20
+ _range.select();
21
+ }
22
+ });
23
+ };
24
+
25
+ export { selectText };
26
+ //# sourceMappingURL=selectText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectText.js","sources":["../../../../src/components/Editable/utils/selectText.ts"],"sourcesContent":["import { canUseDOM } from '../../../utils';\n\ninterface Body extends HTMLElement {\n createTextRange: () => {\n moveToElementText: (node: Node) => {};\n select: () => {};\n };\n}\n\nexport const selectText = (node: Node) => {\n if (!canUseDOM) {\n return;\n }\n\n setTimeout(() => {\n const body = document.body as Body;\n\n if (window.getSelection && document.createRange) {\n const range = document.createRange();\n range.selectNodeContents(node);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n } else if (body.createTextRange) {\n const range = body.createTextRange();\n range.moveToElementText(node);\n range.select();\n }\n });\n};\n"],"names":["selectText","node","canUseDOM","setTimeout","body","document","window","getSelection","createRange","range","selectNodeContents","selection","removeAllRanges","addRange","createTextRange","moveToElementText","select"],"mappings":";;;;IASaA,UAAU,GAAG,SAAbA,UAAUA,CAAIC,IAAU,EAAK;EACtC,IAAI,CAACC,SAAS,EAAE;AACZ,IAAA,OAAA;AACJ,GAAA;AAEAC,EAAAA,UAAU,CAAC,YAAM;AACb,IAAA,IAAMC,IAAI,GAAGC,QAAQ,CAACD,IAAY,CAAA;AAElC,IAAA,IAAIE,MAAM,CAACC,YAAY,IAAIF,QAAQ,CAACG,WAAW,EAAE;AAC7C,MAAA,IAAMC,KAAK,GAAGJ,QAAQ,CAACG,WAAW,EAAE,CAAA;AACpCC,MAAAA,KAAK,CAACC,kBAAkB,CAACT,IAAI,CAAC,CAAA;AAC9B,MAAA,IAAMU,SAAS,GAAGL,MAAM,CAACC,YAAY,EAAE,CAAA;AACvCI,MAAAA,SAAS,aAATA,SAAS,KAAA,KAAA,CAAA,IAATA,SAAS,CAAEC,eAAe,EAAE,CAAA;MAC5BD,SAAS,KAAA,IAAA,IAATA,SAAS,KAATA,KAAAA,CAAAA,IAAAA,SAAS,CAAEE,QAAQ,CAACJ,KAAK,CAAC,CAAA;AAC9B,KAAC,MAAM,IAAIL,IAAI,CAACU,eAAe,EAAE;AAC7B,MAAA,IAAML,MAAK,GAAGL,IAAI,CAACU,eAAe,EAAE,CAAA;AACpCL,MAAAA,MAAK,CAACM,iBAAiB,CAACd,IAAI,CAAC,CAAA;MAC7BQ,MAAK,CAACO,MAAM,EAAE,CAAA;AAClB,KAAA;AACJ,GAAC,CAAC,CAAA;AACN;;;;"}
@@ -0,0 +1,5 @@
1
+ import './base_54y6eh.css';
2
+ var base = "b1x5zqph";
3
+
4
+ export { base };
5
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sources":["../../../../../src/components/Editable/variations/_size/base.ts"],"sourcesContent":["import { css } from '@linaria/core';\n\nimport { classes, tokens } from '../../Editable.tokens';\nimport { EditButton } from '../../Editable.styles';\n\nexport const base = css`\n ${EditButton} {\n padding-left: var(${tokens.editButtonPaddingLeft});\n }\n\n .${classes.editableTextBox} {\n margin-right: var(${tokens.textBoxMarginRight});\n padding-right: var(${tokens.textBoxPaddingRight});\n }\n`;\n"],"names":["base"],"mappings":"AAKO,IAAMA,IAAI,GAShB;;;;"}
@@ -0,0 +1 @@
1
+ .b1x5zqph .e1fh2i5t{padding-left:var(--plasma-editable-edit-button-padding-left);}.b1x5zqph .editable-text-box{margin-right:var(--plasma-editable-text-box-margin-right);padding-right:var(--plasma-editable-text-box-padding-right);}
@@ -0,0 +1,5 @@
1
+ import './base_11fpjfv.css';
2
+ var base = "b14xop9w";
3
+
4
+ export { base };
5
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sources":["../../../../../src/components/Editable/variations/_view/base.ts"],"sourcesContent":["import { css } from '@linaria/core';\n\nimport { tokens } from '../../Editable.tokens';\nimport { EditButton } from '../../Editable.styles';\n\nexport const base = css`\n ${EditButton} {\n background: var(\n --plasma-editable-icon-background,\n linear-gradient(270deg, var(${tokens.editButtonBackground}) 70%, rgba(0, 0, 0, 0) 120%)\n );\n color: var(${tokens.editButtonColor});\n }\n\n &:hover > ${EditButton} {\n color: var(${tokens.editButtonColorHover});\n }\n`;\n"],"names":["base"],"mappings":"AAKO,IAAMA,IAAI,GAYhB;;;;"}
@@ -0,0 +1 @@
1
+ .b14xop9w .e1fh2i5t{background:var( --plasma-editable-icon-background, linear-gradient(270deg,var(--plasma-editable-edit-button-background) 70%,rgba(0,0,0,0) 120%) );color:var(--plasma-editable-edit-button-color);}.b14xop9w:hover > .e1fh2i5t{color:var(--plasma-editable-edit-button-color-hover);}
package/es/index.css CHANGED
@@ -671,3 +671,12 @@
671
671
  .EmptyState_styles_s585zf_s1g2xar0__64fd19b0{--plasma-button-color:var(--text-primary);--plasma-button-color-active:var(--text-primary-active);--plasma-button-color-hover:var(--text-primary-hover);--plasma-button-background-color:none;--plasma-button-padding:0;--plasma-button-height:var(--plasma-emptystate-button-height);--plasma-button-radius:0;--plasma-button-font-family:var(--plasma-emptystate-font-family);--plasma-button-font-size:var(--plasma-emptystate-font-size);--plasma-button-font-style:var(--plasma-emptystate-font-style);--plasma-button-font-weight:600;--plasma-button-letter-spacing:var(--plasma-emptystate-font-letter-spacing);--plasma-button-line-height:var(--plasma-emptystate-font-line-height);margin:var(--plasma-emptystate-button-margin);}
672
672
  .EmptyState_styles_s585zf_i21aoej__64fd19b0{margin:var(--plasma-emptystate-icon-margin);line-height:0;}
673
673
  .EmptyState_styles_s585zf_d1brs29u__64fd19b0{margin:var(--plasma-emptystate-description-margin);font-family:var(--plasma-emptystate-font-family);font-size:var(--plasma-emptystate-font-size);font-style:var(--plasma-emptystate-font-style);font-weight:var(--plasma-emptystate-font-weight);-webkit-letter-spacing:var(--plasma-emptystate-font-letter-spacing);-moz-letter-spacing:var(--plasma-emptystate-font-letter-spacing);-ms-letter-spacing:var(--plasma-emptystate-font-letter-spacing);letter-spacing:var(--plasma-emptystate-font-letter-spacing);line-height:var(--plasma-emptystate-font-line-height);}
674
+
675
+ .Editable_styles_somxw2_e1fh2i5t__9cb07b81{position:relative;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;display:var(--e1fh2i5t-0);}
676
+
677
+ .Editable_styles_somxw2_s4ei6mk__9cb07b81{display:inline-block;color:var(--plasma-editable-placeholder-color);}
678
+ .Editable_styles_somxw2_b18v4gtb__9cb07b81{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;cursor:pointer;}.Editable_styles_somxw2_b18v4gtb__9cb07b81 .Editable_styles_somxw2_editableTextBox__9cb07b81{outline:none;overflow:hidden;white-space:nowrap;caret-color:var(--plasma-editable-caret-color);}
679
+
680
+ .base_11fpjfv_b14xop9w__3f9dd444 .base_11fpjfv_e1fh2i5t__3f9dd444{background:var( --plasma-editable-icon-background, linear-gradient(270deg,var(--plasma-editable-edit-button-background) 70%,rgba(0,0,0,0) 120%) );color:var(--plasma-editable-edit-button-color);}.base_11fpjfv_b14xop9w__3f9dd444:hover > .base_11fpjfv_e1fh2i5t__3f9dd444{color:var(--plasma-editable-edit-button-color-hover);}
681
+
682
+ .base_54y6eh_b1x5zqph__a3c52690 .base_54y6eh_e1fh2i5t__a3c52690{padding-left:var(--plasma-editable-edit-button-padding-left);}.base_54y6eh_b1x5zqph__a3c52690 .base_54y6eh_editableTextBox__a3c52690{margin-right:var(--plasma-editable-text-box-margin-right);padding-right:var(--plasma-editable-text-box-padding-right);}
package/es/index.js CHANGED
@@ -183,6 +183,8 @@ export { autocompleteConfig, autocompleteRoot } from './components/Autocomplete/
183
183
  export { tokens as autocompleteTokens } from './components/Autocomplete/Autocomplete.tokens.js';
184
184
  export { emptyStateConfig, emptyStateRoot } from './components/EmptyState/EmptyState.js';
185
185
  export { tokens as emptyStateTokens } from './components/EmptyState/EmptyState.tokens.js';
186
+ export { editableConfig, editableRoot } from './components/Editable/Editable.js';
187
+ export { tokens as editableTokens } from './components/Editable/Editable.tokens.js';
186
188
  export { component, mergeConfig } from './engines/common.js';
187
189
  export { canUseDOM } from './utils/canUseDOM.js';
188
190
  export { extractTextFrom } from './utils/extractTextFrom.js';
@@ -191,4 +193,6 @@ export { IS_REACT_18, safeUseId } from './utils/react.js';
191
193
  export { isNumber } from './utils/isNumber.js';
192
194
  export { isEmpty } from './utils/isEmpty.js';
193
195
  export { getPlacement, getPlacements } from './utils/getPopoverPlacement.js';
196
+ import * as constants from './utils/constants.js';
197
+ export { constants };
194
198
  //# sourceMappingURL=index.js.map
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,16 @@
1
+ var keyCodes = {
2
+ PageUp: 33,
3
+ PageDown: 34,
4
+ Home: 36,
5
+ End: 35,
6
+ Left: 37,
7
+ Right: 39,
8
+ Up: 38,
9
+ Down: 40,
10
+ Enter: 13,
11
+ Space: 32,
12
+ Escape: 27
13
+ };
14
+
15
+ export { keyCodes };
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../src/utils/constants.ts"],"sourcesContent":["export const keyCodes = {\n PageUp: 33,\n PageDown: 34,\n Home: 36,\n End: 35,\n Left: 37,\n Right: 39,\n Up: 38,\n Down: 40,\n Enter: 13,\n Space: 32,\n Escape: 27,\n};\n"],"names":["keyCodes","PageUp","PageDown","Home","End","Left","Right","Up","Down","Enter","Space","Escape"],"mappings":"AAAO,IAAMA,QAAQ,GAAG;AACpBC,EAAAA,MAAM,EAAE,EAAE;AACVC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,MAAM,EAAE,EAAA;AACZ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/utils/index.ts"],"sourcesContent":["import { CSSProperties } from '@linaria/core';\n\nexport { canUseDOM } from './canUseDOM';\nexport { extractTextFrom } from './extractTextFrom';\nexport { getSizeValueFromProp } from './getSizeValueFromProp';\nexport { IS_REACT_18, safeUseId } from './react';\nexport { isNumber } from './isNumber';\nexport { isEmpty } from './isEmpty';\nexport * from './getPopoverPlacement';\n\nexport const cx = (...classes: (string | undefined)[]) => classes.filter((classItem) => classItem).join(' ');\n\nexport const composableStyle = (s: TemplateStringsArray, ...expr: Array<string | number | CSSProperties>): string => {\n let res = '';\n for (let i = 0; i < Math.max(s.length, expr.length); ++i) {\n res += s[i] ?? '';\n res += expr[i] ?? '';\n }\n\n return res;\n};\n"],"names":["cx","_len","arguments","length","classes","Array","_key","filter","classItem","join","composableStyle","s","res","i","Math","max","_s$i","_ref","undefined"],"mappings":";;;AAUaA,IAAAA,EAAE,GAAG,SAALA,EAAEA,GAAA;AAAA,EAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAOC,OAAO,GAAAC,IAAAA,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAPF,IAAAA,OAAO,CAAAE,IAAA,CAAAJ,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,OAA6BF,OAAO,CAACG,MAAM,CAAC,UAACC,SAAS,EAAA;AAAA,IAAA,OAAKA,SAAS,CAAA;AAAA,GAAA,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAA;AAAA,EAAA;IAE/FC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,CAAuB,EAA8D;EACjH,IAAIC,GAAG,GAAG,EAAE,CAAA;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGC,IAAI,CAACC,GAAG,CAACJ,CAAC,CAACR,MAAM,EAAAD,SAAA,CAAAC,MAAA,IAAA,CAAA,GAAA,CAAA,GAAAD,SAAA,CAAAC,MAAA,GAAA,CAAa,CAAC,EAAE,EAAEU,CAAC,EAAE;IAAA,IAAAG,IAAA,EAAAC,IAAA,CAAA;AACtDL,IAAAA,GAAG,IAAAI,CAAAA,IAAA,GAAIL,CAAC,CAACE,CAAC,CAAC,MAAA,IAAA,IAAAG,IAAA,KAAA,KAAA,CAAA,GAAAA,IAAA,GAAI,EAAE,CAAA;IACjBJ,GAAG,IAAA,CAAAK,IAAA,GAASJ,CAAC,YAAAX,SAAA,CAAAC,MAAA,IAADU,CAAC,OAAAK,SAAA,GAAAhB,SAAA,CAADW,CAAC,mBAAAI,IAAA,KAAA,KAAA,CAAA,GAAAA,IAAA,GAAK,EAAE,CAAA;AACxB,GAAA;AAEA,EAAA,OAAOL,GAAG,CAAA;AACd;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/utils/index.ts"],"sourcesContent":["import { CSSProperties } from '@linaria/core';\n\nexport { canUseDOM } from './canUseDOM';\nexport { extractTextFrom } from './extractTextFrom';\nexport { getSizeValueFromProp } from './getSizeValueFromProp';\nexport { IS_REACT_18, safeUseId } from './react';\nexport { isNumber } from './isNumber';\nexport { isEmpty } from './isEmpty';\nexport * as constants from './constants';\nexport * from './getPopoverPlacement';\n\nexport const cx = (...classes: (string | undefined)[]) => classes.filter((classItem) => classItem).join(' ');\n\nexport const composableStyle = (s: TemplateStringsArray, ...expr: Array<string | number | CSSProperties>): string => {\n let res = '';\n for (let i = 0; i < Math.max(s.length, expr.length); ++i) {\n res += s[i] ?? '';\n res += expr[i] ?? '';\n }\n\n return res;\n};\n"],"names":["cx","_len","arguments","length","classes","Array","_key","filter","classItem","join","composableStyle","s","res","i","Math","max","_s$i","_ref","undefined"],"mappings":";;;AAWaA,IAAAA,EAAE,GAAG,SAALA,EAAEA,GAAA;AAAA,EAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAOC,OAAO,GAAAC,IAAAA,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAPF,IAAAA,OAAO,CAAAE,IAAA,CAAAJ,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,OAA6BF,OAAO,CAACG,MAAM,CAAC,UAACC,SAAS,EAAA;AAAA,IAAA,OAAKA,SAAS,CAAA;AAAA,GAAA,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAA;AAAA,EAAA;IAE/FC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,CAAuB,EAA8D;EACjH,IAAIC,GAAG,GAAG,EAAE,CAAA;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGC,IAAI,CAACC,GAAG,CAACJ,CAAC,CAACR,MAAM,EAAAD,SAAA,CAAAC,MAAA,IAAA,CAAA,GAAA,CAAA,GAAAD,SAAA,CAAAC,MAAA,GAAA,CAAa,CAAC,EAAE,EAAEU,CAAC,EAAE;IAAA,IAAAG,IAAA,EAAAC,IAAA,CAAA;AACtDL,IAAAA,GAAG,IAAAI,CAAAA,IAAA,GAAIL,CAAC,CAACE,CAAC,CAAC,MAAA,IAAA,IAAAG,IAAA,KAAA,KAAA,CAAA,GAAAA,IAAA,GAAI,EAAE,CAAA;IACjBJ,GAAG,IAAA,CAAAK,IAAA,GAASJ,CAAC,YAAAX,SAAA,CAAAC,MAAA,IAADU,CAAC,OAAAK,SAAA,GAAAhB,SAAA,CAADW,CAAC,mBAAAI,IAAA,KAAA,KAAA,CAAA,GAAAA,IAAA,GAAK,EAAE,CAAA;AACxB,GAAA;AAEA,EAAA,OAAOL,GAAG,CAAA;AACd;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salutejs/plasma-new-hope",
3
- "version": "0.144.0-canary.1418.10833167538.0",
3
+ "version": "0.144.0-canary.1430.10833771822.0",
4
4
  "description": "Salute Design System blueprint",
5
5
  "main": "cjs/index.js",
6
6
  "module": "es/index.js",
@@ -121,5 +121,5 @@
121
121
  "react-popper": "2.3.0",
122
122
  "storeon": "3.1.5"
123
123
  },
124
- "gitHead": "bbc456010163dd8047d63c5b9ade2f5fcd47497f"
124
+ "gitHead": "b3613a125269de5ae6c4137c74cb91248407a322"
125
125
  }
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.editableRoot = exports.editableConfig = void 0;
8
+ var _react = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("react"));
9
+ var _plasmaCore = /*#__PURE__*/require("@salutejs/plasma-core");
10
+ var _utils = /*#__PURE__*/require("../../utils");
11
+ var _utils2 = /*#__PURE__*/require("./utils");
12
+ var _Editable = /*#__PURE__*/require("./Editable.tokens");
13
+ var _Editable2 = /*#__PURE__*/require("./Editable.styles");
14
+ var _base = /*#__PURE__*/require("./variations/_view/base");
15
+ var _base2 = /*#__PURE__*/require("./variations/_size/base");
16
+ var _excluded = ["textComponent", "value", "icon", "maxLength", "spellCheck", "placeholder", "name", "onChange", "onBlur", "onPaste"];
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
20
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
23
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
24
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
26
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
+ var editableRoot = exports.editableRoot = function editableRoot(typograpyVariants) {
28
+ return function (Root) {
29
+ return /*#__PURE__*/(0, _react.forwardRef)(function (_ref, outerRef) {
30
+ var _prevValueRef$current;
31
+ var textComponent = _ref.textComponent,
32
+ value = _ref.value,
33
+ icon = _ref.icon,
34
+ maxLength = _ref.maxLength,
35
+ _ref$spellCheck = _ref.spellCheck,
36
+ spellCheck = _ref$spellCheck === void 0 ? 'false' : _ref$spellCheck,
37
+ placeholder = _ref.placeholder,
38
+ name = _ref.name,
39
+ onChange = _ref.onChange,
40
+ onBlur = _ref.onBlur,
41
+ onPaste = _ref.onPaste,
42
+ props = _objectWithoutProperties(_ref, _excluded);
43
+ var Component = textComponent;
44
+ var _useState = (0, _react.useState)(false),
45
+ _useState2 = _slicedToArray(_useState, 2),
46
+ isEditing = _useState2[0],
47
+ setIsEditing = _useState2[1];
48
+ var inputRef = (0, _react.useRef)(null);
49
+ var innerRef = (0, _plasmaCore.useForkRef)(inputRef, outerRef);
50
+ var prevValueRef = (0, _react.useRef)(value || '');
51
+ var handlePaste = function handlePaste(e) {
52
+ if (!inputRef.current) {
53
+ return;
54
+ }
55
+ e.preventDefault();
56
+ var text = e.clipboardData.getData('text/plain').replace(/[\n\r]/gi, '');
57
+ if (document.queryCommandSupported('insertText')) {
58
+ document.execCommand('insertText', false, text);
59
+ } else {
60
+ try {
61
+ navigator.clipboard.writeText(text);
62
+ } catch (_unused) {
63
+ inputRef.current.textContent = text;
64
+ }
65
+ }
66
+ if (onPaste) {
67
+ onPaste(e);
68
+ }
69
+ };
70
+ var handleBlur = function handleBlur(e) {
71
+ setIsEditing(false);
72
+ (0, _utils2.clearSelection)();
73
+
74
+ // NOTE: Remove <br> tag inserted by Safari
75
+ var editableElement = inputRef.current;
76
+ if (editableElement && editableElement.innerHTML === '<br>') {
77
+ editableElement.innerHTML = '';
78
+ }
79
+ if (onBlur) {
80
+ onBlur(e);
81
+ }
82
+ };
83
+ var handleFocus = function handleFocus() {
84
+ setIsEditing(true);
85
+ inputRef.current && (0, _utils2.selectText)(inputRef.current);
86
+ };
87
+ var handleEditClick = function handleEditClick() {
88
+ var _inputRef$current;
89
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
90
+ };
91
+ var handleKeyDown = function handleKeyDown(e) {
92
+ if ([_utils.constants.keyCodes.Enter, _utils.constants.keyCodes.Escape].includes(e.keyCode)) {
93
+ var _inputRef$current2;
94
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
95
+ }
96
+ };
97
+ var handleChange = function handleChange(e) {
98
+ var _inputRef$current$tex;
99
+ if (!inputRef.current) {
100
+ return;
101
+ }
102
+ var contentLength = ((_inputRef$current$tex = inputRef.current.textContent) === null || _inputRef$current$tex === void 0 ? void 0 : _inputRef$current$tex.length) || 0;
103
+ if (!maxLength || contentLength <= maxLength) {
104
+ prevValueRef.current = inputRef.current.textContent || '';
105
+ onChange && onChange(e);
106
+ } else {
107
+ inputRef.current.textContent = prevValueRef.current;
108
+ }
109
+ };
110
+ (0, _react.useEffect)(function () {
111
+ if (!inputRef.current || typeof value === 'undefined' || value === inputRef.current.textContent) {
112
+ return;
113
+ }
114
+ inputRef.current.textContent = value;
115
+ }, [value, textComponent]);
116
+ return /*#__PURE__*/_react["default"].createElement(Root, props, /*#__PURE__*/_react["default"].createElement(Component, {
117
+ ref: innerRef,
118
+ className: _Editable.classes.editableTextBox,
119
+ role: "textbox",
120
+ spellCheck: spellCheck,
121
+ contentEditable: true,
122
+ onPaste: handlePaste,
123
+ onInput: handleChange,
124
+ onBlur: handleBlur,
125
+ onFocus: handleFocus,
126
+ onKeyDown: handleKeyDown,
127
+ "aria-label": placeholder
128
+ }), ((_prevValueRef$current = prevValueRef.current) === null || _prevValueRef$current === void 0 ? void 0 : _prevValueRef$current.length) === 0 && !isEditing && /*#__PURE__*/_react["default"].createElement(Component, null, /*#__PURE__*/_react["default"].createElement(_Editable2.StyledPlacehpolder, {
129
+ onClick: handleEditClick
130
+ }, placeholder)), /*#__PURE__*/_react["default"].createElement(_Editable2.StyledInput, {
131
+ type: "hidden",
132
+ value: prevValueRef.current,
133
+ name: name
134
+ }), /*#__PURE__*/_react["default"].createElement(_Editable2.EditButton, {
135
+ onClick: handleEditClick,
136
+ isHidden: isEditing
137
+ }, icon));
138
+ });
139
+ };
140
+ };
141
+ var editableConfig = exports.editableConfig = function editableConfig(typographyVariants) {
142
+ return {
143
+ name: 'Editable',
144
+ tag: 'span',
145
+ layout: editableRoot(typographyVariants),
146
+ base: _Editable2.base,
147
+ variations: {
148
+ view: {
149
+ css: _base.base
150
+ },
151
+ size: {
152
+ css: _base2.base
153
+ }
154
+ },
155
+ defaults: {
156
+ view: 'default',
157
+ size: 'm'
158
+ }
159
+ };
160
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.base = exports.StyledPlacehpolder = exports.StyledInput = exports.EditButton = void 0;
8
+ var _styledComponents = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("styled-components"));
9
+ var _Editable = /*#__PURE__*/require("./Editable.tokens");
10
+ var _templateObject;
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
13
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
14
+ var EditButton = exports.EditButton = /*#__PURE__*/_styledComponents["default"].span.withConfig({
15
+ componentId: "plasma-new-hope__sc-ss2coc-0"
16
+ })(["position:relative;align-self:stretch;display:", ";"], function (_ref) {
17
+ var isHidden = _ref.isHidden;
18
+ return isHidden ? 'none' : '';
19
+ });
20
+ var StyledInput = exports.StyledInput = /*#__PURE__*/_styledComponents["default"].input.withConfig({
21
+ componentId: "plasma-new-hope__sc-ss2coc-1"
22
+ })([""]);
23
+ var StyledPlacehpolder = exports.StyledPlacehpolder = /*#__PURE__*/_styledComponents["default"].span.withConfig({
24
+ componentId: "plasma-new-hope__sc-ss2coc-2"
25
+ })(["display:inline-block;color:var(", ");"], _Editable.tokens.placeholderColor);
26
+ var base = exports.base = /*#__PURE__*/(0, _styledComponents.css)(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteral(["\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n cursor: pointer;\n\n .", " {\n outline: none;\n overflow: hidden;\n white-space: nowrap;\n caret-color: var(", ");\n }\n"])), _Editable.classes.editableTextBox, _Editable.tokens.caretColor);