@salutejs/plasma-new-hope 0.194.0-canary.1565.11870784206.0 → 0.194.0-canary.1568.11891833298.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Switch/Switch.css +2 -2
- package/cjs/components/Switch/Switch.tokens.js +7 -1
- package/cjs/components/Switch/Switch.tokens.js.map +1 -1
- package/cjs/components/Switch/_toggleSize/base.js +1 -1
- package/cjs/components/Switch/_toggleSize/base.js.map +1 -1
- package/cjs/components/Switch/_toggleSize/base_1d0b3t4.css +1 -0
- package/cjs/components/Switch/_view/base.js +1 -1
- package/cjs/components/Switch/_view/base.js.map +1 -1
- package/cjs/components/Switch/_view/base_15atbyp.css +1 -0
- package/cjs/components/TextField/TextField.js +3 -27
- package/cjs/components/TextField/TextField.js.map +1 -1
- package/cjs/index.css +2 -2
- package/cjs/utils/constants.js +0 -4
- package/cjs/utils/constants.js.map +1 -1
- package/emotion/cjs/components/Card/Card.api.mdx +184 -0
- package/emotion/cjs/components/Switch/Switch.tokens.js +7 -1
- package/emotion/cjs/components/Switch/_toggleSize/base.js +1 -1
- package/emotion/cjs/components/Switch/_view/base.js +1 -1
- package/emotion/cjs/components/TextField/TextField.js +4 -27
- package/emotion/cjs/components/TextField/TextField.template-doc.mdx +0 -330
- package/emotion/cjs/components/TextField/hooks/index.js +1 -8
- package/emotion/cjs/examples/plasma_b2c/components/Switch/Switch.config.js +8 -8
- package/emotion/cjs/examples/plasma_b2c/components/Switch/Switch.js +5 -2
- package/emotion/cjs/examples/plasma_b2c/components/Switch/Switch.outline.config.js +37 -0
- package/emotion/cjs/examples/plasma_b2c/components/Switch/Switch.stories.tsx +33 -1
- package/emotion/cjs/examples/plasma_b2c/components/TextField/TextField.stories.tsx +1 -253
- package/emotion/cjs/examples/plasma_web/components/Switch/Switch.config.js +8 -8
- package/emotion/cjs/examples/plasma_web/components/Switch/Switch.js +5 -2
- package/emotion/cjs/examples/plasma_web/components/Switch/Switch.outline.config.js +37 -0
- package/emotion/cjs/examples/plasma_web/components/Switch/Switch.stories.tsx +33 -1
- package/emotion/cjs/examples/plasma_web/components/TextField/TextField.stories.tsx +0 -252
- package/emotion/cjs/utils/constants.js +2 -4
- package/emotion/es/components/Card/Card.api.mdx +184 -0
- package/emotion/es/components/Switch/Switch.tokens.js +7 -1
- package/emotion/es/components/Switch/_toggleSize/base.js +1 -1
- package/emotion/es/components/Switch/_view/base.js +1 -1
- package/emotion/es/components/TextField/TextField.js +5 -28
- package/emotion/es/components/TextField/TextField.template-doc.mdx +0 -330
- package/emotion/es/components/TextField/hooks/index.js +1 -2
- package/emotion/es/examples/plasma_b2c/components/Switch/Switch.config.js +8 -8
- package/emotion/es/examples/plasma_b2c/components/Switch/Switch.js +4 -1
- package/emotion/es/examples/plasma_b2c/components/Switch/Switch.outline.config.js +31 -0
- package/emotion/es/examples/plasma_b2c/components/Switch/Switch.stories.tsx +33 -1
- package/emotion/es/examples/plasma_b2c/components/TextField/TextField.stories.tsx +1 -253
- package/emotion/es/examples/plasma_web/components/Switch/Switch.config.js +8 -8
- package/emotion/es/examples/plasma_web/components/Switch/Switch.js +4 -1
- package/emotion/es/examples/plasma_web/components/Switch/Switch.outline.config.js +31 -0
- package/emotion/es/examples/plasma_web/components/Switch/Switch.stories.tsx +33 -1
- package/emotion/es/examples/plasma_web/components/TextField/TextField.stories.tsx +0 -252
- package/emotion/es/utils/constants.js +1 -3
- package/es/components/Switch/Switch.css +2 -2
- package/es/components/Switch/Switch.tokens.js +7 -1
- package/es/components/Switch/Switch.tokens.js.map +1 -1
- package/es/components/Switch/_toggleSize/base.js +1 -1
- package/es/components/Switch/_toggleSize/base.js.map +1 -1
- package/es/components/Switch/_toggleSize/base_1d0b3t4.css +1 -0
- package/es/components/Switch/_view/base.js +1 -1
- package/es/components/Switch/_view/base.js.map +1 -1
- package/es/components/Switch/_view/base_15atbyp.css +1 -0
- package/es/components/TextField/TextField.js +3 -27
- package/es/components/TextField/TextField.js.map +1 -1
- package/es/index.css +2 -2
- package/es/utils/constants.js +1 -3
- package/es/utils/constants.js.map +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/Card/Card.api.mdx +184 -0
- package/styled-components/cjs/components/Switch/Switch.tokens.js +7 -1
- package/styled-components/cjs/components/Switch/_toggleSize/base.js +1 -1
- package/styled-components/cjs/components/Switch/_view/base.js +1 -1
- package/styled-components/cjs/components/TextField/TextField.js +3 -26
- package/styled-components/cjs/components/TextField/TextField.template-doc.mdx +0 -330
- package/styled-components/cjs/components/TextField/hooks/index.js +1 -8
- package/styled-components/cjs/examples/plasma_b2c/components/Switch/Switch.config.js +1 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Switch/Switch.js +5 -2
- package/styled-components/cjs/examples/plasma_b2c/components/Switch/Switch.outline.config.js +37 -0
- package/styled-components/cjs/examples/plasma_b2c/components/Switch/Switch.stories.tsx +33 -1
- package/styled-components/cjs/examples/plasma_b2c/components/TextField/TextField.stories.tsx +1 -253
- package/styled-components/cjs/examples/plasma_web/components/Switch/Switch.config.js +1 -1
- package/styled-components/cjs/examples/plasma_web/components/Switch/Switch.js +5 -2
- package/styled-components/cjs/examples/plasma_web/components/Switch/Switch.outline.config.js +37 -0
- package/styled-components/cjs/examples/plasma_web/components/Switch/Switch.stories.tsx +33 -1
- package/styled-components/cjs/examples/plasma_web/components/TextField/TextField.stories.tsx +0 -252
- package/styled-components/cjs/utils/constants.js +2 -4
- package/styled-components/es/components/Card/Card.api.mdx +184 -0
- package/styled-components/es/components/Switch/Switch.tokens.js +7 -1
- package/styled-components/es/components/Switch/_toggleSize/base.js +1 -1
- package/styled-components/es/components/Switch/_view/base.js +1 -1
- package/styled-components/es/components/TextField/TextField.js +4 -27
- package/styled-components/es/components/TextField/TextField.template-doc.mdx +0 -330
- package/styled-components/es/components/TextField/hooks/index.js +1 -2
- package/styled-components/es/examples/plasma_b2c/components/Switch/Switch.config.js +1 -1
- package/styled-components/es/examples/plasma_b2c/components/Switch/Switch.js +4 -1
- package/styled-components/es/examples/plasma_b2c/components/Switch/Switch.outline.config.js +31 -0
- package/styled-components/es/examples/plasma_b2c/components/Switch/Switch.stories.tsx +33 -1
- package/styled-components/es/examples/plasma_b2c/components/TextField/TextField.stories.tsx +1 -253
- package/styled-components/es/examples/plasma_web/components/Switch/Switch.config.js +1 -1
- package/styled-components/es/examples/plasma_web/components/Switch/Switch.js +4 -1
- package/styled-components/es/examples/plasma_web/components/Switch/Switch.outline.config.js +31 -0
- package/styled-components/es/examples/plasma_web/components/Switch/Switch.stories.tsx +33 -1
- package/styled-components/es/examples/plasma_web/components/TextField/TextField.stories.tsx +0 -252
- package/styled-components/es/utils/constants.js +1 -3
- package/types/components/Autocomplete/Autocomplete.types.d.ts +2 -2
- package/types/components/Autocomplete/Autocomplete.types.d.ts.map +1 -1
- package/types/components/Autocomplete/ui/TextField/TextField.styles.d.ts +92 -1676
- package/types/components/Autocomplete/ui/TextField/TextField.styles.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/ui/Target/Target.styles.d.ts +92 -1676
- package/types/components/Combobox/ComboboxNew/ui/Target/Target.styles.d.ts.map +1 -1
- package/types/components/DatePicker/SingleDate/SingleDate.styles.d.ts +92 -1676
- package/types/components/DatePicker/SingleDate/SingleDate.styles.d.ts.map +1 -1
- package/types/components/Range/Range.styles.d.ts +92 -1676
- package/types/components/Range/Range.styles.d.ts.map +1 -1
- package/types/components/Select/ui/Target/ui/Textfield/Textfield.styles.d.ts +92 -1676
- package/types/components/Select/ui/Target/ui/Textfield/Textfield.styles.d.ts.map +1 -1
- package/types/components/Slider/components/Double/Double.styles.d.ts +92 -1676
- package/types/components/Slider/components/Double/Double.styles.d.ts.map +1 -1
- package/types/components/Switch/Switch.tokens.d.ts +7 -1
- package/types/components/Switch/Switch.tokens.d.ts.map +1 -1
- package/types/components/Switch/_toggleSize/base.d.ts.map +1 -1
- package/types/components/Switch/_view/base.d.ts.map +1 -1
- package/types/components/TextField/TextField.d.ts.map +1 -1
- package/types/components/TextField/TextField.types.d.ts +1 -51
- package/types/components/TextField/TextField.types.d.ts.map +1 -1
- package/types/components/TextField/hooks/index.d.ts +0 -1
- package/types/components/TextField/hooks/index.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Autocomplete/Autocomplete.d.ts +2 -64
- package/types/examples/plasma_b2c/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Mask/Mask.d.ts +92 -2732
- package/types/examples/plasma_b2c/components/Mask/Mask.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Switch/Switch.config.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Switch/Switch.d.ts +20 -0
- package/types/examples/plasma_b2c/components/Switch/Switch.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Switch/Switch.outline.config.d.ts +30 -0
- package/types/examples/plasma_b2c/components/Switch/Switch.outline.config.d.ts.map +1 -0
- package/types/examples/plasma_b2c/components/TextField/TextField.d.ts +92 -1676
- package/types/examples/plasma_b2c/components/TextField/TextField.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Autocomplete/Autocomplete.d.ts +2 -64
- package/types/examples/plasma_web/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Mask/Mask.d.ts +92 -2732
- package/types/examples/plasma_web/components/Mask/Mask.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Switch/Switch.config.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Switch/Switch.d.ts +20 -0
- package/types/examples/plasma_web/components/Switch/Switch.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Switch/Switch.outline.config.d.ts +30 -0
- package/types/examples/plasma_web/components/Switch/Switch.outline.config.d.ts.map +1 -0
- package/types/examples/plasma_web/components/TextField/TextField.d.ts +92 -1676
- package/types/examples/plasma_web/components/TextField/TextField.d.ts.map +1 -1
- package/types/utils/constants.d.ts +0 -2
- package/types/utils/constants.d.ts.map +1 -1
- package/cjs/components/Switch/_toggleSize/base_6i0904.css +0 -1
- package/cjs/components/Switch/_view/base_yxkf3s.css +0 -1
- package/cjs/components/TextField/hooks/useValidation.js +0 -273
- package/cjs/components/TextField/hooks/useValidation.js.map +0 -1
- package/emotion/cjs/components/TextField/hooks/useValidation.js +0 -276
- package/emotion/es/components/TextField/hooks/useValidation.js +0 -270
- package/es/components/Switch/_toggleSize/base_6i0904.css +0 -1
- package/es/components/Switch/_view/base_yxkf3s.css +0 -1
- package/es/components/TextField/hooks/useValidation.js +0 -269
- package/es/components/TextField/hooks/useValidation.js.map +0 -1
- package/styled-components/cjs/components/TextField/hooks/useValidation.js +0 -276
- package/styled-components/es/components/TextField/hooks/useValidation.js +0 -270
- package/types/components/TextField/hooks/useValidation.d.ts +0 -7
- package/types/components/TextField/hooks/useValidation.d.ts.map +0 -1
@@ -9,7 +9,7 @@ import { mergeConfig } from '../../../../engines';
|
|
9
9
|
import { WithTheme, argTypesFromConfig } from '../../../_helpers';
|
10
10
|
|
11
11
|
import { config } from './Switch.config';
|
12
|
-
import { Switch } from './Switch';
|
12
|
+
import { Switch, SwitchOutline } from './Switch';
|
13
13
|
|
14
14
|
type SwitchProps = ComponentProps<typeof Switch>;
|
15
15
|
|
@@ -72,3 +72,35 @@ export const Default: StoryObj<SwitchProps> = {
|
|
72
72
|
},
|
73
73
|
render: (args) => <StoryDefault {...args} />,
|
74
74
|
};
|
75
|
+
|
76
|
+
const StoryOutline = (args: SwitchProps) => {
|
77
|
+
const value = 'yes';
|
78
|
+
const name = 'agree';
|
79
|
+
const [checked, setChecked] = useState(true);
|
80
|
+
|
81
|
+
return (
|
82
|
+
<StyledWrapper>
|
83
|
+
<SwitchOutline
|
84
|
+
value={value}
|
85
|
+
name={name}
|
86
|
+
checked={checked}
|
87
|
+
onChange={(event) => {
|
88
|
+
setChecked(event.target.checked);
|
89
|
+
onChange(event);
|
90
|
+
}}
|
91
|
+
onFocus={onFocus}
|
92
|
+
onBlur={onBlur}
|
93
|
+
{...args}
|
94
|
+
/>
|
95
|
+
</StyledWrapper>
|
96
|
+
);
|
97
|
+
};
|
98
|
+
|
99
|
+
export const Outline: StoryObj<SwitchProps> = {
|
100
|
+
args: {
|
101
|
+
size: 'm',
|
102
|
+
toggleSize: 'l',
|
103
|
+
disabled: false,
|
104
|
+
},
|
105
|
+
render: (args) => <StoryOutline {...args} />,
|
106
|
+
};
|
@@ -291,255 +291,3 @@ export const Chips: StoryObj<StoryPropsChips> = {
|
|
291
291
|
},
|
292
292
|
render: (args) => <StoryChips {...args} />,
|
293
293
|
};
|
294
|
-
|
295
|
-
type StoryEmailValidationProps = StoryPropsDefault & {
|
296
|
-
minLengthValue?: number;
|
297
|
-
minLengthErrorMessage?: string;
|
298
|
-
maxLengthValue?: number;
|
299
|
-
maxLengthErrorMessage?: string;
|
300
|
-
minHostLengthValue?: number;
|
301
|
-
minHostLengthErrorMessage?: string;
|
302
|
-
maxHostLengthValue?: number;
|
303
|
-
maxHostLengthErrorMessage?: string;
|
304
|
-
minDomainLengthValue?: number;
|
305
|
-
minDomainLengthErrorMessage?: string;
|
306
|
-
maxDomainLengthValue?: number;
|
307
|
-
maxDomainLengthErrorMessage?: string;
|
308
|
-
minZoneLengthValue?: number;
|
309
|
-
minZoneLengthErrorMessage?: string;
|
310
|
-
maxZoneLengthValue?: number;
|
311
|
-
maxZoneLengthErrorMessage?: string;
|
312
|
-
whitelistDomainsValue?: string;
|
313
|
-
whitelistDomainsErrorMessage?: string;
|
314
|
-
blacklistDomainsValue?: string;
|
315
|
-
blacklistDomainsErrorMessage?: string;
|
316
|
-
};
|
317
|
-
|
318
|
-
const StoryEmailValidation = ({
|
319
|
-
minLengthValue,
|
320
|
-
minLengthErrorMessage,
|
321
|
-
maxLengthValue,
|
322
|
-
maxLengthErrorMessage,
|
323
|
-
minHostLengthValue,
|
324
|
-
minHostLengthErrorMessage,
|
325
|
-
maxHostLengthValue,
|
326
|
-
maxHostLengthErrorMessage,
|
327
|
-
minDomainLengthValue,
|
328
|
-
minDomainLengthErrorMessage,
|
329
|
-
maxDomainLengthValue,
|
330
|
-
maxDomainLengthErrorMessage,
|
331
|
-
minZoneLengthValue,
|
332
|
-
minZoneLengthErrorMessage,
|
333
|
-
maxZoneLengthValue,
|
334
|
-
maxZoneLengthErrorMessage,
|
335
|
-
whitelistDomainsValue,
|
336
|
-
whitelistDomainsErrorMessage,
|
337
|
-
blacklistDomainsValue,
|
338
|
-
blacklistDomainsErrorMessage,
|
339
|
-
...rest
|
340
|
-
}: StoryEmailValidationProps) => {
|
341
|
-
const [error, setError] = useState('');
|
342
|
-
|
343
|
-
const validationOptions = {
|
344
|
-
minLength: {
|
345
|
-
value: minLengthValue || undefined,
|
346
|
-
errorMessage: minLengthErrorMessage || 'Почта слишком короткая',
|
347
|
-
},
|
348
|
-
maxLength: {
|
349
|
-
value: maxLengthValue || undefined,
|
350
|
-
errorMessage: maxLengthErrorMessage || 'Почта слишком длинная',
|
351
|
-
},
|
352
|
-
minHostLength: {
|
353
|
-
value: minHostLengthValue || undefined,
|
354
|
-
errorMessage: minHostLengthErrorMessage || 'Хост слишком короткий',
|
355
|
-
},
|
356
|
-
maxHostLength: {
|
357
|
-
value: maxHostLengthValue || undefined,
|
358
|
-
errorMessage: maxHostLengthErrorMessage || 'Хост слишком длинный',
|
359
|
-
},
|
360
|
-
minDomainLength: {
|
361
|
-
value: minDomainLengthValue || undefined,
|
362
|
-
errorMessage: minDomainLengthErrorMessage || 'Домен слишком короткий',
|
363
|
-
},
|
364
|
-
maxDomainLength: {
|
365
|
-
value: maxDomainLengthValue || undefined,
|
366
|
-
errorMessage: maxDomainLengthErrorMessage || 'Домен слишком длинный',
|
367
|
-
},
|
368
|
-
minZoneLength: {
|
369
|
-
value: minZoneLengthValue || undefined,
|
370
|
-
errorMessage: minZoneLengthErrorMessage || 'Доменная зона слишком короткая',
|
371
|
-
},
|
372
|
-
maxZoneLength: {
|
373
|
-
value: maxZoneLengthValue || undefined,
|
374
|
-
errorMessage: maxZoneLengthErrorMessage || 'Доменная зона слишком длинная',
|
375
|
-
},
|
376
|
-
whitelistDomains: {
|
377
|
-
value: whitelistDomainsValue?.split(',') || undefined,
|
378
|
-
errorMessage: whitelistDomainsErrorMessage || 'Домен не разрешен',
|
379
|
-
},
|
380
|
-
blacklistDomains: {
|
381
|
-
value: blacklistDomainsValue?.split(',') || undefined,
|
382
|
-
errorMessage: blacklistDomainsErrorMessage || 'Домен запрещен',
|
383
|
-
},
|
384
|
-
};
|
385
|
-
|
386
|
-
const handleOnChange = () => {
|
387
|
-
setError('');
|
388
|
-
};
|
389
|
-
|
390
|
-
const handleOnValidate = ({ errorMessage }: { errorMessage?: string }) => {
|
391
|
-
setError(errorMessage || '');
|
392
|
-
};
|
393
|
-
|
394
|
-
return (
|
395
|
-
<TextField
|
396
|
-
label="Валидация почты"
|
397
|
-
validationType="email"
|
398
|
-
options={validationOptions}
|
399
|
-
size="l"
|
400
|
-
view={error ? 'negative' : 'default'}
|
401
|
-
leftHelper={error || 'Валидация почты'}
|
402
|
-
onChange={handleOnChange}
|
403
|
-
onValidate={handleOnValidate}
|
404
|
-
{...rest}
|
405
|
-
/>
|
406
|
-
);
|
407
|
-
};
|
408
|
-
|
409
|
-
export const EmailValidation: StoryObj<StoryEmailValidationProps> = {
|
410
|
-
argTypes: {
|
411
|
-
...disableProps(['view', 'size', 'maxLength', 'required', 'requiredPlacement', 'optional']),
|
412
|
-
},
|
413
|
-
args: {
|
414
|
-
labelPlacement: 'outer',
|
415
|
-
placeholder: 'Заполните поле',
|
416
|
-
minLengthValue: 5,
|
417
|
-
minLengthErrorMessage: 'Почта слишком короткая',
|
418
|
-
maxLengthValue: 25,
|
419
|
-
maxLengthErrorMessage: 'Почта слишком длинная',
|
420
|
-
minHostLengthValue: 1,
|
421
|
-
minHostLengthErrorMessage: 'Хост слишком короткий',
|
422
|
-
maxHostLengthValue: 12,
|
423
|
-
maxHostLengthErrorMessage: 'Хост слишком длинный',
|
424
|
-
minDomainLengthValue: 1,
|
425
|
-
minDomainLengthErrorMessage: 'Домен слишком короткий',
|
426
|
-
maxDomainLengthValue: 6,
|
427
|
-
maxDomainLengthErrorMessage: 'Домен слишком длинный',
|
428
|
-
minZoneLengthValue: 1,
|
429
|
-
minZoneLengthErrorMessage: 'Доменная зона слишком короткая',
|
430
|
-
maxZoneLengthValue: 5,
|
431
|
-
maxZoneLengthErrorMessage: 'Доменная зона слишком длинная',
|
432
|
-
whitelistDomainsValue: 'gmail.com,yandex.ru,mail.ru,mail.com',
|
433
|
-
whitelistDomainsErrorMessage: 'Домен не разрешен',
|
434
|
-
blacklistDomainsValue: 'heh.org,hah.ha',
|
435
|
-
blacklistDomainsErrorMessage: 'Домен запрещен',
|
436
|
-
},
|
437
|
-
render: (args) => <StoryEmailValidation {...args} />,
|
438
|
-
};
|
439
|
-
|
440
|
-
type StoryPasswordValidationProps = StoryPropsDefault & {
|
441
|
-
minLengthValue?: number;
|
442
|
-
minLengthErrorMessage?: string;
|
443
|
-
maxLengthValue?: number;
|
444
|
-
maxLengthErrorMessage?: string;
|
445
|
-
includeUppercase?: boolean;
|
446
|
-
includeUppercaseErrorMessage?: string;
|
447
|
-
includeLowercase?: boolean;
|
448
|
-
includeLowercaseErrorMessage?: string;
|
449
|
-
includeDigits?: boolean;
|
450
|
-
includeDigitsErrorMessage?: string;
|
451
|
-
includeSpecialSymbols?: boolean;
|
452
|
-
includeSpecialSymbolsErrorMessage?: string;
|
453
|
-
};
|
454
|
-
|
455
|
-
const StoryPasswordValidation = ({
|
456
|
-
minLengthValue,
|
457
|
-
minLengthErrorMessage,
|
458
|
-
maxLengthValue,
|
459
|
-
maxLengthErrorMessage,
|
460
|
-
includeUppercase,
|
461
|
-
includeUppercaseErrorMessage,
|
462
|
-
includeLowercase,
|
463
|
-
includeLowercaseErrorMessage,
|
464
|
-
includeDigits,
|
465
|
-
includeDigitsErrorMessage,
|
466
|
-
includeSpecialSymbols,
|
467
|
-
includeSpecialSymbolsErrorMessage,
|
468
|
-
...rest
|
469
|
-
}: StoryPasswordValidationProps) => {
|
470
|
-
const [error, setError] = useState('');
|
471
|
-
|
472
|
-
const validationOptions = {
|
473
|
-
minLength: {
|
474
|
-
value: minLengthValue || undefined,
|
475
|
-
errorMessage: minLengthErrorMessage || 'Пароль слишком короткий',
|
476
|
-
},
|
477
|
-
maxLength: {
|
478
|
-
value: maxLengthValue || undefined,
|
479
|
-
errorMessage: maxLengthErrorMessage || 'Пароль слишком длинный',
|
480
|
-
},
|
481
|
-
includeUppercase: {
|
482
|
-
value: includeUppercase,
|
483
|
-
errorMessage: includeUppercaseErrorMessage || 'Пароль должен содержать хотя бы одну заглавную букву',
|
484
|
-
},
|
485
|
-
includeLowercase: {
|
486
|
-
value: includeLowercase,
|
487
|
-
errorMessage: includeLowercaseErrorMessage || 'Пароль должен содержать хотя бы одну строчную букву',
|
488
|
-
},
|
489
|
-
includeDigits: {
|
490
|
-
value: includeDigits,
|
491
|
-
errorMessage: includeDigitsErrorMessage || 'Пароль должен содержать хотя бы одну цифру',
|
492
|
-
},
|
493
|
-
includeSpecialSymbols: {
|
494
|
-
value: includeSpecialSymbols,
|
495
|
-
errorMessage:
|
496
|
-
includeSpecialSymbolsErrorMessage || 'Пароль должен содержать хотя бы один специальный символ',
|
497
|
-
},
|
498
|
-
};
|
499
|
-
|
500
|
-
const handleOnChange = () => {
|
501
|
-
setError('');
|
502
|
-
};
|
503
|
-
|
504
|
-
const handleOnValidate = ({ errorMessage }: { errorMessage?: string }) => {
|
505
|
-
setError(errorMessage || '');
|
506
|
-
};
|
507
|
-
|
508
|
-
return (
|
509
|
-
<TextField
|
510
|
-
label="Валидация пароля"
|
511
|
-
validationType="password"
|
512
|
-
options={validationOptions}
|
513
|
-
size="l"
|
514
|
-
view={error ? 'negative' : 'default'}
|
515
|
-
leftHelper={error || 'Валидация пароля'}
|
516
|
-
onChange={handleOnChange}
|
517
|
-
onValidate={handleOnValidate}
|
518
|
-
{...rest}
|
519
|
-
/>
|
520
|
-
);
|
521
|
-
};
|
522
|
-
|
523
|
-
export const PasswordValidation: StoryObj<StoryPasswordValidationProps> = {
|
524
|
-
argTypes: {
|
525
|
-
...disableProps(['view', 'size', 'maxLength', 'required', 'requiredPlacement', 'optional']),
|
526
|
-
},
|
527
|
-
args: {
|
528
|
-
labelPlacement: 'outer',
|
529
|
-
placeholder: 'Заполните поле',
|
530
|
-
passwordHidden: false,
|
531
|
-
minLengthValue: 5,
|
532
|
-
minLengthErrorMessage: 'Пароль слишком короткий',
|
533
|
-
maxLengthValue: 25,
|
534
|
-
maxLengthErrorMessage: 'Пароль слишком длинный',
|
535
|
-
includeUppercase: true,
|
536
|
-
includeUppercaseErrorMessage: 'Пароль должен содержать хотя бы одну заглавную букву',
|
537
|
-
includeLowercase: true,
|
538
|
-
includeLowercaseErrorMessage: 'Пароль должен содержать хотя бы одну строчную букву',
|
539
|
-
includeDigits: true,
|
540
|
-
includeDigitsErrorMessage: 'Пароль должен содержать хотя бы одну цифру',
|
541
|
-
includeSpecialSymbols: true,
|
542
|
-
includeSpecialSymbolsErrorMessage: 'Пароль должен содержать хотя бы один специальный символ',
|
543
|
-
},
|
544
|
-
render: (args) => <StoryPasswordValidation {...args} />,
|
545
|
-
};
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
6
|
+
exports.keyCodes = void 0;
|
7
7
|
var keyCodes = exports.keyCodes = {
|
8
8
|
PageUp: 33,
|
9
9
|
PageDown: 34,
|
@@ -16,6 +16,4 @@ var keyCodes = exports.keyCodes = {
|
|
16
16
|
Enter: 13,
|
17
17
|
Space: 32,
|
18
18
|
Escape: 27
|
19
|
-
};
|
20
|
-
var emailPattern = exports.emailPattern = /^[^\s@]+@([^\s@.,]+\.)+[^\s@.,]{2,}$/;
|
21
|
-
var specialCharacters = exports.specialCharacters = /[!@#$%^&*(),.?":{}|<>]/;
|
19
|
+
};
|
@@ -0,0 +1,184 @@
|
|
1
|
+
---
|
2
|
+
id: card
|
3
|
+
title: Card
|
4
|
+
---
|
5
|
+
|
6
|
+
отличия от https://plasma.sberdevices.ru/b2c/components/card/:
|
7
|
+
* избавляемся от CardBody
|
8
|
+
* убираем дублирование disabled
|
9
|
+
|
10
|
+
примеры дизайна https://www.figma.com/design/MXl0ZkXEqEhIFDS2H6b3yk/StarDS-Cards?node-id=2-690&node-type=instance&t=TJN8Nqyiky3Dfw2T-0
|
11
|
+
|
12
|
+
другие либы:
|
13
|
+
https://ant.design/components/card#
|
14
|
+
https://mui.com/material-ui/react-card/
|
15
|
+
|
16
|
+
```tsx live
|
17
|
+
import React, { ReactNode } from "react";
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Набор часто встречающихся скруглений.
|
21
|
+
*/
|
22
|
+
|
23
|
+
export const radiuses = {
|
24
|
+
250: 15.625,
|
25
|
+
32: 2,
|
26
|
+
28: 1.75,
|
27
|
+
24: 1.5,
|
28
|
+
20: 1.25,
|
29
|
+
18: 1.125,
|
30
|
+
16: 1,
|
31
|
+
14: 0.875,
|
32
|
+
12: 0.75,
|
33
|
+
8: 0.5,
|
34
|
+
0: 0,
|
35
|
+
};
|
36
|
+
|
37
|
+
export type Roundness = keyof typeof radiuses;
|
38
|
+
|
39
|
+
export interface RoundnessProps {
|
40
|
+
/** Скругленность */
|
41
|
+
roundness: Roundness;
|
42
|
+
}
|
43
|
+
|
44
|
+
interface Card {
|
45
|
+
/** Компонент в фокусе */
|
46
|
+
focused?: boolean;
|
47
|
+
/** Увеличение по фокусу */
|
48
|
+
scaleOnFocus?: boolean;
|
49
|
+
/** Компонент неактивен */
|
50
|
+
disabled?: boolean;
|
51
|
+
/** Добавить рамку при фокусе */
|
52
|
+
outlined?: boolean;
|
53
|
+
/** Цвет подложки */
|
54
|
+
background?: string;
|
55
|
+
/** Делает карточку квадратной */
|
56
|
+
square?: boolean;
|
57
|
+
/** Заголовок */
|
58
|
+
title?: string | ReactNode;
|
59
|
+
/** Подзаголовок */
|
60
|
+
subtitle?: string | ReactNode;
|
61
|
+
/** Расположение заголовка и подзаголовка, пока нет в дизайне */
|
62
|
+
titlePlacement?: "inner" | "outer";
|
63
|
+
/** Выравнивание заголовка и подзаголовка */
|
64
|
+
titleAlign?: "left" | "center";
|
65
|
+
/** Подвал, или вынести в
|
66
|
+
* <CardContent footer={<CardTimeline />} /> или <CardFooter><CardTimeline /></CardFooter>
|
67
|
+
* */
|
68
|
+
footer?: ReactNode;
|
69
|
+
}
|
70
|
+
|
71
|
+
const ratios = {
|
72
|
+
"1 / 1": "100",
|
73
|
+
"1/1": "100",
|
74
|
+
"3 / 4": "133.3333",
|
75
|
+
"3/4": "133.3333",
|
76
|
+
"4 / 3": "75",
|
77
|
+
"4/3": "75",
|
78
|
+
"9 / 16": "177.7778",
|
79
|
+
"9/16": "177.7778",
|
80
|
+
"16 / 9": "56.25",
|
81
|
+
"16/9": "56.25",
|
82
|
+
"1 / 2": "200",
|
83
|
+
"1/2": "200",
|
84
|
+
"2 / 1": "50",
|
85
|
+
"2/1": "50",
|
86
|
+
};
|
87
|
+
|
88
|
+
export type Ratio = keyof typeof ratios;
|
89
|
+
|
90
|
+
/**
|
91
|
+
* CardMedia из текущей реализации
|
92
|
+
* Стоит ли заменить пропсом `cover?: ReactNode;` в Card как в Ant?
|
93
|
+
* а width и height передавать в style...
|
94
|
+
*
|
95
|
+
* имхо, нет. у Card может быть title и subtitle под карточкой
|
96
|
+
* скорее всего, на них свойство height не должно распространяться
|
97
|
+
* стоит подождать финальный дизайн
|
98
|
+
*/
|
99
|
+
interface CardMedia {
|
100
|
+
base?: "img" | "div";
|
101
|
+
height?: string | number;
|
102
|
+
ratio?: Ratio;
|
103
|
+
customRatio?: string;
|
104
|
+
}
|
105
|
+
|
106
|
+
interface CardContent {
|
107
|
+
topLeft?: string | ReactNode;
|
108
|
+
topRight?: string | ReactNode;
|
109
|
+
bottomLeft?: string | ReactNode;
|
110
|
+
bottomRight?: string | ReactNode;
|
111
|
+
children?: ReactNode;
|
112
|
+
}
|
113
|
+
|
114
|
+
/** или */
|
115
|
+
interface CardContent {
|
116
|
+
placement?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
117
|
+
children?: ReactNode;
|
118
|
+
}
|
119
|
+
|
120
|
+
interface CardTimeline {
|
121
|
+
/**
|
122
|
+
* Описание, например время до конца фильма. Возможно,
|
123
|
+
* не нужно и стоит указывать bottomRight контент
|
124
|
+
*/
|
125
|
+
text?: string;
|
126
|
+
progress?: string | number;
|
127
|
+
/**
|
128
|
+
* Не увеличивать высоту карточки
|
129
|
+
* @default true
|
130
|
+
*/
|
131
|
+
inline?: boolean;
|
132
|
+
}
|
133
|
+
```
|
134
|
+
|
135
|
+
```tsx live
|
136
|
+
<Card title="Title" subtitle="Subtitle">
|
137
|
+
<CardContent placement="top-left">
|
138
|
+
<SomeIcon />
|
139
|
+
</CardContent>
|
140
|
+
<CardContent placement="top-right">
|
141
|
+
<SaveButton saved={isSaved} />
|
142
|
+
</CardContent>
|
143
|
+
<CardContent placement="bottom-right">18+</CardContent>
|
144
|
+
</Card>;
|
145
|
+
|
146
|
+
<Card title="Title" subtitle="Subtitle">
|
147
|
+
<CardContent
|
148
|
+
topLeft={<SomeIcon />}
|
149
|
+
topRight={<SaveButton saved={isSaved} />}
|
150
|
+
bottomRight="18+"
|
151
|
+
/>
|
152
|
+
</Card>;
|
153
|
+
|
154
|
+
<Card title="Title" subtitle="Subtitle">
|
155
|
+
<CardMedia src={someSrc} alt="trailer" />
|
156
|
+
<CardContent
|
157
|
+
topLeft={<SomeIcon />}
|
158
|
+
topRight={<SaveButton saved={isSaved} />}
|
159
|
+
bottomRight="18+"
|
160
|
+
/>
|
161
|
+
<CardTimeline text="еще 1ч 23мин" progress={56} />
|
162
|
+
</Card>;
|
163
|
+
|
164
|
+
<Card title="Title" subtitle="Subtitle">
|
165
|
+
<CardContent topLeft={<SomeIcon />} topRight={<SaveButton saved={isSaved} />}>
|
166
|
+
<CardMedia src={someSrc} alt="trailer" />
|
167
|
+
</CardContent>
|
168
|
+
<CardTimeline text="еще 1ч 23мин" progress={56} />
|
169
|
+
</Card>;
|
170
|
+
|
171
|
+
<Card
|
172
|
+
title="Title"
|
173
|
+
subtitle="Subtitle"
|
174
|
+
// как в ant, но кажется, что так менее гибко
|
175
|
+
cover={<CardMedia src={someSrc} alt="trailer" />}
|
176
|
+
square
|
177
|
+
>
|
178
|
+
<CardContent
|
179
|
+
topLeft={<SomeIcon />}
|
180
|
+
topRight={<SaveButton saved={isSaved} />}
|
181
|
+
/>
|
182
|
+
<CardTimeline text="еще 1ч 23мин" progress={56} />
|
183
|
+
</Card>;
|
184
|
+
```
|
@@ -23,6 +23,11 @@ export var tokens = {
|
|
23
23
|
verticalGap: '--plasma-switch-vertical-gap',
|
24
24
|
trackWidth: '--plasma-switch__track-width',
|
25
25
|
trackHeight: '--plasma-switch__track-height',
|
26
|
+
trackBorderWidth: '--plasma-switch__track-border',
|
27
|
+
trackBorderColorOn: '--plasma-switch__track-checked_true-border-color',
|
28
|
+
trackBorderColorOnHover: '--plasma-switch__track-checked_true_hovered_true-border-color',
|
29
|
+
trackBorderColorOff: '--plasma-switch__track-checked_false-border-color',
|
30
|
+
trackBorderColorOffHover: '--plasma-switch__track-checked_false_hovered_true-border-color',
|
26
31
|
trackBorderRadius: '--plasma-switch__track-border-radius',
|
27
32
|
// NOTE: could be intersection with checked
|
28
33
|
trackBackgroundColorOn: '--plasma-switch__track_checked_true-bg-color',
|
@@ -34,7 +39,8 @@ export var tokens = {
|
|
34
39
|
thumbOffset: '--plasma-switch__thumb-offset',
|
35
40
|
thumbBorderRadius: '--plasma-switch__thumb-border-radius',
|
36
41
|
thumbPressScale: '--plasma-switch__thumb-scale',
|
37
|
-
|
42
|
+
thumbBackgroundColorOn: '--plasma-switch__thumb_checked_true-bg-color',
|
43
|
+
thumbBackgroundColorOff: '--plasma-switch__thumb-checked_false-bg-color',
|
38
44
|
thumbBoxShadow: '--plasma-switch__thumb-box-shadow',
|
39
45
|
thumbBoxShadowOn: '--plasma-switch__thumb-box-shadow_checked_true',
|
40
46
|
labelOffsetPrivate: '--plasma_private-switch__label-offset'
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import { css } from '@emotion/react';
|
2
2
|
import { tokens } from '../Switch.tokens';
|
3
3
|
import { StyledTrigger } from '../Switch.styles';
|
4
|
-
export var base = /*#__PURE__*/css(StyledTrigger, "{flex:0 0 var(", tokens.trackWidth, ");width:var(", tokens.
|
4
|
+
export var base = /*#__PURE__*/css(StyledTrigger, "{box-sizing:border-box;flex:0 0 var(", tokens.trackWidth, ");border-style:solid;border-width:var(", tokens.trackBorderWidth, ");border-radius:var(", tokens.trackBorderRadius, ");width:var(", tokens.trackWidth, ");height:var(", tokens.trackHeight, ");&::after{width:var(", tokens.thumbSize, ");height:var(", tokens.thumbSize, ");border-radius:var(", tokens.thumbBorderRadius, ");margin:auto var(", tokens.thumbOffset, ");}}:active:not([disabled]) ", StyledTrigger, "::after{width:calc(var(", tokens.thumbSize, ") * var(", tokens.thumbPressScale, ", 1));};label:plasma-new-hope__base;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU3dpdGNoL190b2dnbGVTaXplL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS3VCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU3dpdGNoL190b2dnbGVTaXplL2Jhc2UudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IHRva2VucyB9IGZyb20gJy4uL1N3aXRjaC50b2tlbnMnO1xuaW1wb3J0IHsgU3R5bGVkVHJpZ2dlciB9IGZyb20gJy4uL1N3aXRjaC5zdHlsZXMnO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BcbiAgICAke1N0eWxlZFRyaWdnZXJ9IHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgZmxleDogMCAwIHZhcigke3Rva2Vucy50cmFja1dpZHRofSk7XG5cbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiB2YXIoJHt0b2tlbnMudHJhY2tCb3JkZXJXaWR0aH0pO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMudHJhY2tCb3JkZXJSYWRpdXN9KTtcblxuICAgICAgICB3aWR0aDogdmFyKCR7dG9rZW5zLnRyYWNrV2lkdGh9KTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoJHt0b2tlbnMudHJhY2tIZWlnaHR9KTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICB3aWR0aDogdmFyKCR7dG9rZW5zLnRodW1iU2l6ZX0pO1xuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoJHt0b2tlbnMudGh1bWJTaXplfSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMudGh1bWJCb3JkZXJSYWRpdXN9KTtcbiAgICAgICAgICAgIG1hcmdpbjogYXV0byB2YXIoJHt0b2tlbnMudGh1bWJPZmZzZXR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIDphY3RpdmU6bm90KFtkaXNhYmxlZF0pICR7U3R5bGVkVHJpZ2dlcn06OmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IGNhbGModmFyKCR7dG9rZW5zLnRodW1iU2l6ZX0pICogdmFyKCR7dG9rZW5zLnRodW1iUHJlc3NTY2FsZX0sIDEpKTtcbiAgICB9XG5gO1xuIl19 */"));
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import { css } from '@emotion/react';
|
2
2
|
import { tokens } from '../Switch.tokens';
|
3
3
|
import { StyledTrigger, StyledInput, StyledLabel, StyledDescription } from '../Switch.styles';
|
4
|
-
export var base = /*#__PURE__*/css(StyledTrigger, "{background-color:var(", tokens.trackBackgroundColorOff, ");}", StyledInput, ":not([disabled])~", StyledTrigger, ":hover{background-color:var(", tokens.trackBackgroundColorOffHover, ", var(", tokens.trackBackgroundColorOff, "));}", StyledInput, ":checked~", StyledTrigger, "{background-color:var(", tokens.trackBackgroundColorOn, ");}", StyledInput, ":checked:not([disabled])~", StyledTrigger, ":hover{background-color:var(", tokens.trackBackgroundColorOnHover, ", var(", tokens.trackBackgroundColorOn, "));}", StyledTrigger, "::after{background-color:var(", tokens.
|
4
|
+
export var base = /*#__PURE__*/css(StyledTrigger, "{background-color:var(", tokens.trackBackgroundColorOff, ");border-color:var(", tokens.trackBorderColorOff, ");}", StyledInput, ":not([disabled])~", StyledTrigger, ":hover{background-color:var(", tokens.trackBackgroundColorOffHover, ", var(", tokens.trackBackgroundColorOff, "));border-color:var(", tokens.trackBorderColorOffHover, ", var(", tokens.trackBorderColorOff, "));}", StyledInput, ":checked~", StyledTrigger, "{background-color:var(", tokens.trackBackgroundColorOn, ");border-color:var(", tokens.trackBorderColorOn, ");}", StyledInput, ":checked:not([disabled])~", StyledTrigger, ":hover{background-color:var(", tokens.trackBackgroundColorOnHover, ", var(", tokens.trackBackgroundColorOn, "));border-color:var(", tokens.trackBorderColorOnHover, ", var(", tokens.trackBorderColorOn, "));}", StyledTrigger, "::after{background-color:var(", tokens.thumbBackgroundColorOff, ");box-shadow:var(", tokens.thumbBoxShadow, ");}", StyledInput, ":checked~", StyledTrigger, "::after{background-color:var(", tokens.thumbBackgroundColorOn, ");box-shadow:var(", tokens.thumbBoxShadowOn, ", var(", tokens.thumbBoxShadow, "));}", StyledLabel, "{color:var(", tokens.labelColor, ");}", StyledDescription, "{color:var(", tokens.descriptionColor, ");};label:plasma-new-hope__base;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU3dpdGNoL192aWV3L2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS3VCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU3dpdGNoL192aWV3L2Jhc2UudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IHRva2VucyB9IGZyb20gJy4uL1N3aXRjaC50b2tlbnMnO1xuaW1wb3J0IHsgU3R5bGVkVHJpZ2dlciwgU3R5bGVkSW5wdXQsIFN0eWxlZExhYmVsLCBTdHlsZWREZXNjcmlwdGlvbiB9IGZyb20gJy4uL1N3aXRjaC5zdHlsZXMnO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BcbiAgICAke1N0eWxlZFRyaWdnZXJ9IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCR7dG9rZW5zLnRyYWNrQmFja2dyb3VuZENvbG9yT2ZmfSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKCR7dG9rZW5zLnRyYWNrQm9yZGVyQ29sb3JPZmZ9KTtcbiAgICB9XG5cbiAgICAke1N0eWxlZElucHV0fTpub3QoW2Rpc2FibGVkXSkgfiAke1N0eWxlZFRyaWdnZXJ9OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCR7dG9rZW5zLnRyYWNrQmFja2dyb3VuZENvbG9yT2ZmSG92ZXJ9LCB2YXIoJHt0b2tlbnMudHJhY2tCYWNrZ3JvdW5kQ29sb3JPZmZ9KSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKCR7dG9rZW5zLnRyYWNrQm9yZGVyQ29sb3JPZmZIb3Zlcn0sIHZhcigke3Rva2Vucy50cmFja0JvcmRlckNvbG9yT2ZmfSkpO1xuICAgIH1cblxuICAgICR7U3R5bGVkSW5wdXR9OmNoZWNrZWQgfiAke1N0eWxlZFRyaWdnZXJ9IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCR7dG9rZW5zLnRyYWNrQmFja2dyb3VuZENvbG9yT259KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoJHt0b2tlbnMudHJhY2tCb3JkZXJDb2xvck9ufSk7XG4gICAgfVxuXG4gICAgJHtTdHlsZWRJbnB1dH06Y2hlY2tlZDpub3QoW2Rpc2FibGVkXSkgfiAke1N0eWxlZFRyaWdnZXJ9OmhvdmVyICB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigke3Rva2Vucy50cmFja0JhY2tncm91bmRDb2xvck9uSG92ZXJ9LCB2YXIoJHt0b2tlbnMudHJhY2tCYWNrZ3JvdW5kQ29sb3JPbn0pKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoJHt0b2tlbnMudHJhY2tCb3JkZXJDb2xvck9uSG92ZXJ9LCB2YXIoJHt0b2tlbnMudHJhY2tCb3JkZXJDb2xvck9ufSkpO1xuICAgIH1cblxuICAgICR7U3R5bGVkVHJpZ2dlcn06OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCR7dG9rZW5zLnRodW1iQmFja2dyb3VuZENvbG9yT2ZmfSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigke3Rva2Vucy50aHVtYkJveFNoYWRvd30pO1xuICAgIH1cblxuICAgICR7U3R5bGVkSW5wdXR9OmNoZWNrZWQgfiAke1N0eWxlZFRyaWdnZXJ9OjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigke3Rva2Vucy50aHVtYkJhY2tncm91bmRDb2xvck9ufSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigke3Rva2Vucy50aHVtYkJveFNoYWRvd09ufSwgdmFyKCR7dG9rZW5zLnRodW1iQm94U2hhZG93fSkpO1xuICAgIH1cblxuICAgICR7U3R5bGVkTGFiZWx9IHtcbiAgICAgICAgY29sb3I6IHZhcigke3Rva2Vucy5sYWJlbENvbG9yfSk7XG4gICAgfVxuXG4gICAgJHtTdHlsZWREZXNjcmlwdGlvbn0ge1xuICAgICAgICBjb2xvcjogdmFyKCR7dG9rZW5zLmRlc2NyaXB0aW9uQ29sb3J9KTtcbiAgICB9XG5gO1xuIl19 */"));
|