@snack-uikit/counter 0.6.4 → 0.6.5-preview-1f246c4a.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Counter.js +52 -0
- package/dist/cjs/components/constants.js +27 -0
- package/dist/cjs/components/index.js +25 -0
- package/dist/cjs/components/types.js +5 -0
- package/dist/cjs/components/utils.js +40 -0
- package/dist/cjs/index.js +25 -0
- package/dist/esm/components/Counter.d.ts +20 -0
- package/dist/esm/components/constants.d.ts +21 -0
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/types.d.ts +6 -0
- package/dist/esm/components/utils.d.ts +7 -0
- package/dist/esm/index.js +1 -0
- package/package.json +8 -6
- package/dist/components/styles.module.css +0 -100
- /package/dist/{components → cjs/components}/Counter.d.ts +0 -0
- /package/dist/{components → cjs/components}/constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/types.d.ts +0 -0
- /package/dist/{components → cjs/components}/utils.d.ts +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Counter.js +0 -0
- /package/dist/{components → esm/components}/constants.js +0 -0
- /package/dist/{components/index.js → esm/components/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/types.js +0 -0
- /package/dist/{components → esm/components}/utils.js +0 -0
- /package/dist/{index.js → esm/index.d.ts} +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
12
|
+
return mod && mod.__esModule ? mod : {
|
|
13
|
+
"default": mod
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", {
|
|
17
|
+
value: true
|
|
18
|
+
});
|
|
19
|
+
exports.Counter = Counter;
|
|
20
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
22
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
23
|
+
const constants_1 = require("./constants");
|
|
24
|
+
const styles_module_scss_1 = __importDefault({});
|
|
25
|
+
const utils_2 = require("./utils");
|
|
26
|
+
/** Компонент счетчик */
|
|
27
|
+
function Counter(_a) {
|
|
28
|
+
var {
|
|
29
|
+
value,
|
|
30
|
+
appearance = constants_1.APPEARANCE.Primary,
|
|
31
|
+
variant = constants_1.VARIANT.Count,
|
|
32
|
+
size = constants_1.SIZE.S,
|
|
33
|
+
plusLimit = constants_1.DEFAULT_PLUS_LIMIT,
|
|
34
|
+
color = constants_1.COLOR.Accent,
|
|
35
|
+
className
|
|
36
|
+
} = _a,
|
|
37
|
+
rest = __rest(_a, ["value", "appearance", "variant", "size", "plusLimit", "color", "className"]);
|
|
38
|
+
const formattedValue = (0, utils_2.formatValue)({
|
|
39
|
+
value,
|
|
40
|
+
variant,
|
|
41
|
+
plusLimit
|
|
42
|
+
});
|
|
43
|
+
return (0, jsx_runtime_1.jsx)("div", Object.assign({
|
|
44
|
+
className: (0, classnames_1.default)(styles_module_scss_1.default.counter, className)
|
|
45
|
+
}, (0, utils_1.extractSupportProps)(rest), {
|
|
46
|
+
"data-size": size,
|
|
47
|
+
"data-variant": variant,
|
|
48
|
+
"data-appearance": appearance,
|
|
49
|
+
"data-color": color,
|
|
50
|
+
children: formattedValue
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DEFAULT_KEY_POSTFIX = exports.DEFAULT_KEY_LIMIT = exports.DEFAULT_PLUS_LIMIT = exports.COLOR = exports.SIZE = exports.VARIANT = exports.APPEARANCE = void 0;
|
|
7
|
+
exports.APPEARANCE = {
|
|
8
|
+
Primary: 'primary',
|
|
9
|
+
Neutral: 'neutral',
|
|
10
|
+
Red: 'red'
|
|
11
|
+
};
|
|
12
|
+
exports.VARIANT = {
|
|
13
|
+
Count: 'count',
|
|
14
|
+
CountPlus: 'count-plus',
|
|
15
|
+
CountK: 'count-k'
|
|
16
|
+
};
|
|
17
|
+
exports.SIZE = {
|
|
18
|
+
S: 's',
|
|
19
|
+
M: 'm'
|
|
20
|
+
};
|
|
21
|
+
exports.COLOR = {
|
|
22
|
+
Accent: 'accent',
|
|
23
|
+
Decor: 'decor'
|
|
24
|
+
};
|
|
25
|
+
exports.DEFAULT_PLUS_LIMIT = 10;
|
|
26
|
+
exports.DEFAULT_KEY_LIMIT = 1000;
|
|
27
|
+
exports.DEFAULT_KEY_POSTFIX = 'K';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./Counter"), exports);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
4
|
+
return mod && mod.__esModule ? mod : {
|
|
5
|
+
"default": mod
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
exports.formatValue = formatValue;
|
|
12
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
const styles_module_scss_1 = __importDefault({});
|
|
15
|
+
function formatValue(_ref) {
|
|
16
|
+
let {
|
|
17
|
+
value,
|
|
18
|
+
variant,
|
|
19
|
+
plusLimit
|
|
20
|
+
} = _ref;
|
|
21
|
+
if (variant === constants_1.VARIANT.Count) {
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
if (variant === constants_1.VARIANT.CountPlus) {
|
|
25
|
+
return value < plusLimit ? value : (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
|
|
26
|
+
children: [plusLimit - 1, (0, jsx_runtime_1.jsx)("span", {
|
|
27
|
+
className: styles_module_scss_1.default.plus,
|
|
28
|
+
children: "+"
|
|
29
|
+
})]
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (variant === constants_1.VARIANT.CountK) {
|
|
33
|
+
return value < constants_1.DEFAULT_KEY_LIMIT ? value : (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
|
|
34
|
+
children: [Math.round(value / constants_1.DEFAULT_KEY_LIMIT), (0, jsx_runtime_1.jsx)("span", {
|
|
35
|
+
className: styles_module_scss_1.default.key,
|
|
36
|
+
children: constants_1.DEFAULT_KEY_POSTFIX
|
|
37
|
+
})]
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./components"), exports);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { WithSupportProps } from '@snack-uikit/utils';
|
|
2
|
+
import { Appearance, Color, Size, Variant } from './types';
|
|
3
|
+
export type CounterProps = WithSupportProps<{
|
|
4
|
+
/** Значение */
|
|
5
|
+
value: number;
|
|
6
|
+
/** Внешний вид */
|
|
7
|
+
appearance?: Appearance;
|
|
8
|
+
/** Вариант */
|
|
9
|
+
variant?: Variant;
|
|
10
|
+
/** Размер */
|
|
11
|
+
size?: Size;
|
|
12
|
+
/** Порог сокращения значения в формат v+. Например `1500` -> `999+` для 1000 */
|
|
13
|
+
plusLimit?: number;
|
|
14
|
+
/** CSS-класс */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Семантический цвет */
|
|
17
|
+
color?: Color;
|
|
18
|
+
}>;
|
|
19
|
+
/** Компонент счетчик */
|
|
20
|
+
export declare function Counter({ value, appearance, variant, size, plusLimit, color, className, ...rest }: CounterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const APPEARANCE: {
|
|
2
|
+
readonly Primary: "primary";
|
|
3
|
+
readonly Neutral: "neutral";
|
|
4
|
+
readonly Red: "red";
|
|
5
|
+
};
|
|
6
|
+
export declare const VARIANT: {
|
|
7
|
+
readonly Count: "count";
|
|
8
|
+
readonly CountPlus: "count-plus";
|
|
9
|
+
readonly CountK: "count-k";
|
|
10
|
+
};
|
|
11
|
+
export declare const SIZE: {
|
|
12
|
+
readonly S: "s";
|
|
13
|
+
readonly M: "m";
|
|
14
|
+
};
|
|
15
|
+
export declare const COLOR: {
|
|
16
|
+
readonly Accent: "accent";
|
|
17
|
+
readonly Decor: "decor";
|
|
18
|
+
};
|
|
19
|
+
export declare const DEFAULT_PLUS_LIMIT = 10;
|
|
20
|
+
export declare const DEFAULT_KEY_LIMIT = 1000;
|
|
21
|
+
export declare const DEFAULT_KEY_POSTFIX = "K";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Counter';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ValueOf } from '@snack-uikit/utils';
|
|
2
|
+
import { APPEARANCE, COLOR, SIZE, VARIANT } from './constants';
|
|
3
|
+
export type Appearance = ValueOf<typeof APPEARANCE>;
|
|
4
|
+
export type Size = ValueOf<typeof SIZE>;
|
|
5
|
+
export type Variant = ValueOf<typeof VARIANT>;
|
|
6
|
+
export type Color = ValueOf<typeof COLOR>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components';
|
package/package.json
CHANGED
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Counter",
|
|
7
|
-
"version": "0.6.
|
|
7
|
+
"version": "0.6.5-preview-1f246c4a.0",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
11
11
|
"*.woff2"
|
|
12
12
|
],
|
|
13
13
|
"description": "Компонент для отображения количесвта уведомлений (доступен в 3 вариантах: 9, 9+, 9K)",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
14
|
+
"types": "./dist/esm/index.d.ts",
|
|
15
|
+
"main": "./dist/cjs/index.js",
|
|
16
|
+
"module": "./dist/esm/index.js",
|
|
16
17
|
"homepage": "https://github.com/cloud-ru-tech/snack-uikit/tree/master/packages/counter",
|
|
17
18
|
"repository": {
|
|
18
19
|
"type": "git",
|
|
@@ -24,7 +25,8 @@
|
|
|
24
25
|
"Anna Kozlova <apkozlova@cloud.ru>"
|
|
25
26
|
],
|
|
26
27
|
"files": [
|
|
27
|
-
"dist",
|
|
28
|
+
"dist/cjs",
|
|
29
|
+
"dist/esm",
|
|
28
30
|
"src",
|
|
29
31
|
"./CHANGELOG.md",
|
|
30
32
|
"./LICENSE"
|
|
@@ -32,8 +34,8 @@
|
|
|
32
34
|
"license": "Apache-2.0",
|
|
33
35
|
"scripts": {},
|
|
34
36
|
"dependencies": {
|
|
35
|
-
"@snack-uikit/utils": "3.4.0",
|
|
37
|
+
"@snack-uikit/utils": "3.4.1-preview-1f246c4a.0",
|
|
36
38
|
"classnames": "2.3.2"
|
|
37
39
|
},
|
|
38
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "a185a55c0722b19f70dd168cf299e6f53a0fd93f"
|
|
39
41
|
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
.counter{
|
|
2
|
-
display:inline-flex;
|
|
3
|
-
flex-shrink:0;
|
|
4
|
-
align-items:center;
|
|
5
|
-
justify-content:center;
|
|
6
|
-
box-sizing:border-box;
|
|
7
|
-
width:-moz-max-content;
|
|
8
|
-
width:max-content;
|
|
9
|
-
border:0 solid transparent;
|
|
10
|
-
}
|
|
11
|
-
.counter[data-color=accent][data-appearance=primary]{
|
|
12
|
-
color:var(--sys-primary-on-accent, #fdfbff);
|
|
13
|
-
background-color:var(--sys-primary-accent-default, #794ed3);
|
|
14
|
-
border-color:var(--sys-neutral-background1-level, #fdfdfd);
|
|
15
|
-
}
|
|
16
|
-
.counter[data-color=accent][data-appearance=neutral]{
|
|
17
|
-
color:var(--sys-neutral-on-accent, #ffffff);
|
|
18
|
-
background-color:var(--sys-neutral-accent-default, #787b8a);
|
|
19
|
-
border-color:var(--sys-neutral-background1-level, #fdfdfd);
|
|
20
|
-
}
|
|
21
|
-
.counter[data-color=accent][data-appearance=red]{
|
|
22
|
-
color:var(--sys-red-on-accent, #fffbf9);
|
|
23
|
-
background-color:var(--sys-red-accent-default, #cb3f3e);
|
|
24
|
-
border-color:var(--sys-neutral-background1-level, #fdfdfd);
|
|
25
|
-
}
|
|
26
|
-
.counter[data-color=decor][data-appearance=primary]{
|
|
27
|
-
color:var(--sys-primary-text-main, #382a62);
|
|
28
|
-
background-color:var(--sys-primary-decor-default, #ebdefd);
|
|
29
|
-
border-color:var(--sys-neutral-background1-level, #fdfdfd);
|
|
30
|
-
}
|
|
31
|
-
.counter[data-color=decor][data-appearance=neutral]{
|
|
32
|
-
color:var(--sys-neutral-text-main, #41424e);
|
|
33
|
-
background-color:var(--sys-neutral-decor-default, #dde0ea);
|
|
34
|
-
border-color:var(--sys-neutral-background1-level, #fdfdfd);
|
|
35
|
-
}
|
|
36
|
-
.counter[data-color=decor][data-appearance=red]{
|
|
37
|
-
color:var(--sys-red-text-main, #7a2d2d);
|
|
38
|
-
background-color:var(--sys-red-decor-default, #fdd6cd);
|
|
39
|
-
border-color:var(--sys-neutral-background1-level, #fdfdfd);
|
|
40
|
-
}
|
|
41
|
-
.counter[data-size=s]{
|
|
42
|
-
font-family:var(--sans-label-s-font-family, SB Sans Interface);
|
|
43
|
-
font-weight:var(--sans-label-s-font-weight, Semibold);
|
|
44
|
-
line-height:var(--sans-label-s-line-height, 14px);
|
|
45
|
-
font-size:var(--sans-label-s-font-size, 11px);
|
|
46
|
-
letter-spacing:var(--sans-label-s-letter-spacing, 0px);
|
|
47
|
-
paragraph-spacing:var(--sans-label-s-paragraph-spacing, 6.05px);
|
|
48
|
-
border-radius:var(--radius-counter-s, 8px);
|
|
49
|
-
height:var(--size-counter-s-height, 16px);
|
|
50
|
-
min-width:var(--size-counter-s-minimal-width, 16px);
|
|
51
|
-
padding-right:var(--space-counter-s, 2.5px);
|
|
52
|
-
padding-left:var(--space-counter-s, 2.5px);
|
|
53
|
-
border-width:var(--border-width-counter-single, 1.5px);
|
|
54
|
-
}
|
|
55
|
-
.counter[data-size=s] .plus{
|
|
56
|
-
font-family:var(--sans-label-l-font-family, SB Sans Interface);
|
|
57
|
-
font-weight:var(--sans-label-l-font-weight, Semibold);
|
|
58
|
-
line-height:var(--sans-label-l-line-height, 20px);
|
|
59
|
-
font-size:var(--sans-label-l-font-size, 14px);
|
|
60
|
-
letter-spacing:var(--sans-label-l-letter-spacing, 0px);
|
|
61
|
-
paragraph-spacing:var(--sans-label-l-paragraph-spacing, 7.7px);
|
|
62
|
-
}
|
|
63
|
-
.counter[data-size=s] .key{
|
|
64
|
-
font-family:var(--sans-label-s-font-family, SB Sans Interface);
|
|
65
|
-
font-weight:var(--sans-label-s-font-weight, Semibold);
|
|
66
|
-
line-height:var(--sans-label-s-line-height, 14px);
|
|
67
|
-
font-size:var(--sans-label-s-font-size, 11px);
|
|
68
|
-
letter-spacing:var(--sans-label-s-letter-spacing, 0px);
|
|
69
|
-
paragraph-spacing:var(--sans-label-s-paragraph-spacing, 6.05px);
|
|
70
|
-
}
|
|
71
|
-
.counter[data-size=m]{
|
|
72
|
-
font-family:var(--sans-label-l-font-family, SB Sans Interface);
|
|
73
|
-
font-weight:var(--sans-label-l-font-weight, Semibold);
|
|
74
|
-
line-height:var(--sans-label-l-line-height, 20px);
|
|
75
|
-
font-size:var(--sans-label-l-font-size, 14px);
|
|
76
|
-
letter-spacing:var(--sans-label-l-letter-spacing, 0px);
|
|
77
|
-
paragraph-spacing:var(--sans-label-l-paragraph-spacing, 7.7px);
|
|
78
|
-
border-radius:var(--radius-counter-m, 16px);
|
|
79
|
-
height:var(--size-counter-m-height, 24px);
|
|
80
|
-
min-width:var(--size-counter-m-minimal-width, 24px);
|
|
81
|
-
padding-right:var(--space-counter-m, 4.5px);
|
|
82
|
-
padding-left:var(--space-counter-m, 4.5px);
|
|
83
|
-
border-width:var(--border-width-counter-single, 1.5px);
|
|
84
|
-
}
|
|
85
|
-
.counter[data-size=m] .plus{
|
|
86
|
-
font-family:var(--sans-label-l-font-family, SB Sans Interface);
|
|
87
|
-
font-weight:var(--sans-label-l-font-weight, Semibold);
|
|
88
|
-
line-height:var(--sans-label-l-line-height, 20px);
|
|
89
|
-
font-size:var(--sans-label-l-font-size, 14px);
|
|
90
|
-
letter-spacing:var(--sans-label-l-letter-spacing, 0px);
|
|
91
|
-
paragraph-spacing:var(--sans-label-l-paragraph-spacing, 7.7px);
|
|
92
|
-
}
|
|
93
|
-
.counter[data-size=m] .key{
|
|
94
|
-
font-family:var(--sans-label-l-font-family, SB Sans Interface);
|
|
95
|
-
font-weight:var(--sans-label-l-font-weight, Semibold);
|
|
96
|
-
line-height:var(--sans-label-l-line-height, 20px);
|
|
97
|
-
font-size:var(--sans-label-l-font-size, 14px);
|
|
98
|
-
letter-spacing:var(--sans-label-l-letter-spacing, 0px);
|
|
99
|
-
paragraph-spacing:var(--sans-label-l-paragraph-spacing, 7.7px);
|
|
100
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|