@evergis/react 3.0.25 → 3.1.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/core/attributes/index.d.ts +1 -2
- package/dist/core/attributes/types.d.ts +2 -5
- package/dist/core/index.d.ts +1 -1
- package/dist/index.d.ts +2 -11
- package/dist/react.cjs.development.js +2 -265
- package/dist/react.cjs.development.js.map +1 -1
- package/dist/react.cjs.production.min.js +1 -1
- package/dist/react.cjs.production.min.js.map +1 -1
- package/dist/react.esm.js +3 -244
- package/dist/react.esm.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/package.json +4 -6
- package/dist/core/attributes/format.d.ts +0 -2
- package/dist/core/attributes/utils.d.ts +0 -3
- package/dist/hooks/index.d.ts +0 -3
- package/dist/hooks/useMount.d.ts +0 -6
- package/dist/hooks/useNode.d.ts +0 -2
- package/dist/hooks/useToggle.d.ts +0 -1
- package/dist/i18n/index.d.ts +0 -7
- package/dist/utils/color.d.ts +0 -1
- package/dist/utils/format.d.ts +0 -1
- package/dist/utils/math.d.ts +0 -1
- package/dist/utils/metersToPixels.d.ts +0 -8
- package/dist/utils/polygonCircleFromPoint.d.ts +0 -2
- package/dist/utils/url.d.ts +0 -13
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from './format';
|
|
1
|
+
export * from "./types";
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { AttributeDefinitionDc } from
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { AttributeDefinitionDc } from "@evergis/api";
|
|
3
3
|
export declare type FeatureAttributeValue = string | number | Date | null;
|
|
4
|
-
export declare type ClassificationAttribute = {
|
|
5
|
-
name: string;
|
|
6
|
-
} & AttributeDefinitionDc;
|
|
7
4
|
export declare type LayerAttribute = {
|
|
8
5
|
name?: string;
|
|
9
6
|
} & AttributeDefinitionDc;
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./attributes";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from './utils/color';
|
|
4
|
-
export * from './utils/date';
|
|
5
|
-
export * from './utils/format';
|
|
6
|
-
export * from './utils/isNumeric';
|
|
7
|
-
export * from './utils/isObject';
|
|
8
|
-
export * from './utils/math';
|
|
9
|
-
export * from './utils/metersToPixels';
|
|
10
|
-
export * from './utils/polygonCircleFromPoint';
|
|
11
|
-
export * from './utils/url';
|
|
1
|
+
export * from "./core";
|
|
2
|
+
export * from "./utils";
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var dateFns = require('date-fns');
|
|
6
|
-
var react = require('react');
|
|
7
|
-
var color = require('@evergis/color');
|
|
8
|
-
var Crs = require('@evergis/sgis/es/Crs');
|
|
9
|
-
var geotools = require('@evergis/sgis/es/geotools');
|
|
10
6
|
|
|
11
|
-
const NO_CONTENT_VALUE =
|
|
7
|
+
const NO_CONTENT_VALUE = "—";
|
|
12
8
|
|
|
13
9
|
(function (DateFormat) {
|
|
14
10
|
DateFormat["ClientDefaultFormat"] = "dd.MM.yyyy HH:mm";
|
|
@@ -50,274 +46,15 @@ const formatDate = function formatDate(date, _temp) {
|
|
|
50
46
|
return defaultValue.toString();
|
|
51
47
|
};
|
|
52
48
|
|
|
53
|
-
function numberWithSpaces(x, fractionDigits, delim) {
|
|
54
|
-
if (fractionDigits === void 0) {
|
|
55
|
-
fractionDigits = 2;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (delim === void 0) {
|
|
59
|
-
delim = ',';
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const [num, frac] = x.toFixed(fractionDigits).split('.');
|
|
63
|
-
const numWithSpaces = num.replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
|
|
64
|
-
return [numWithSpaces, frac].join(delim);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function matchPhone(value) {
|
|
68
|
-
const phoneRegexp = /((8|\+7)[- ]?)?(\(?\d{3,4}\)?[- ]?)?[\d\- ]{7,10}/g;
|
|
69
|
-
return !isStringAsInn(value) && value.match(phoneRegexp);
|
|
70
|
-
}
|
|
71
|
-
function isStringAsInn(value) {
|
|
72
|
-
const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;
|
|
73
|
-
return innRegexp.test(value);
|
|
74
|
-
}
|
|
75
|
-
function isStringAsKpp(value) {
|
|
76
|
-
const kppRegexp = /^(([0-9]{9}))$/;
|
|
77
|
-
return kppRegexp.test(value);
|
|
78
|
-
}
|
|
79
|
-
function isStringAsOgrn(value) {
|
|
80
|
-
const ogrnRegexp = /^([0-9]{13})?$/;
|
|
81
|
-
return ogrnRegexp.test((+value).toString());
|
|
82
|
-
}
|
|
83
|
-
function isStringContainsDate(value) {
|
|
84
|
-
const dateRegexp = /\d{4}(-|\/)\d{2}(-|\/)\d{2}/g;
|
|
85
|
-
return dateRegexp.test(value);
|
|
86
|
-
}
|
|
87
|
-
function isRequisiteNumbers(value) {
|
|
88
|
-
return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);
|
|
89
|
-
}
|
|
90
|
-
function isStringAsPhone(value) {
|
|
91
|
-
const phoneRegexp = /^((8|\+7)[- ]?)?(\(?\d{3,4}\)?[- ]?)?[\d\- ]{7,10}/;
|
|
92
|
-
return !isRequisiteNumbers(value) && !isStringContainsDate(value) && phoneRegexp.test(value);
|
|
93
|
-
}
|
|
94
|
-
function isStringAsMail(value) {
|
|
95
|
-
return isStringAsUrl(value) && value.includes('@');
|
|
96
|
-
}
|
|
97
|
-
function isStringAsUrl(value) {
|
|
98
|
-
if (isValidUrl(value)) {
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const urlRegexp = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;
|
|
103
|
-
const urlKind = value.match(urlRegexp);
|
|
104
|
-
return urlKind !== null;
|
|
105
|
-
}
|
|
106
|
-
function isValidUrl(value) {
|
|
107
|
-
try {
|
|
108
|
-
new URL(value);
|
|
109
|
-
} catch (_) {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
const mailHref = mail => "mailto:" + mail;
|
|
116
|
-
const phoneHref = mail => "tel:" + mail;
|
|
117
|
-
const urlHref = url => isValidUrl(url) ? url : "//" + url;
|
|
118
|
-
|
|
119
|
-
const stringAttribute = value => ({
|
|
120
|
-
type: 0
|
|
121
|
-
/* String */
|
|
122
|
-
,
|
|
123
|
-
value
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
const urlAttribute = value => ({
|
|
127
|
-
type: 2
|
|
128
|
-
/* Url */
|
|
129
|
-
,
|
|
130
|
-
value
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
const mailAttribute = value => ({
|
|
134
|
-
type: 3
|
|
135
|
-
/* Mail */
|
|
136
|
-
,
|
|
137
|
-
value
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
const phoneAttribute = value => ({
|
|
141
|
-
type: 1
|
|
142
|
-
/* Phone */
|
|
143
|
-
,
|
|
144
|
-
value
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
const convertStringAttribute = value => {
|
|
148
|
-
if (isStringAsMail(value)) {
|
|
149
|
-
return mailAttribute(value);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if (isStringAsUrl(value)) {
|
|
153
|
-
return urlAttribute(value);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (isStringAsPhone(value)) {
|
|
157
|
-
return phoneAttribute(value);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return stringAttribute(value);
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
const formatStringAttribute = value => {
|
|
164
|
-
const phones = matchPhone(value);
|
|
165
|
-
|
|
166
|
-
if (!isRequisiteNumbers(value) && !isStringContainsDate(value) && phones && phones.length) {
|
|
167
|
-
return phones.map(phoneAttribute);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const attributeValues = value.split(/[\s|]/).map(convertStringAttribute);
|
|
171
|
-
|
|
172
|
-
if (attributeValues.every((_ref) => {
|
|
173
|
-
let {
|
|
174
|
-
type
|
|
175
|
-
} = _ref;
|
|
176
|
-
return type === 0;
|
|
177
|
-
}
|
|
178
|
-
/* String */
|
|
179
|
-
)) {
|
|
180
|
-
return [stringAttribute(attributeValues.map((_ref2) => {
|
|
181
|
-
let {
|
|
182
|
-
value
|
|
183
|
-
} = _ref2;
|
|
184
|
-
return isNaN(+value) || isRequisiteNumbers(value) ? isStringAsOgrn(value) ? +value : value : numberWithSpaces(+value, 0, '');
|
|
185
|
-
}).join(' '))];
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return attributeValues;
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
const formatDateTimeAttribute = value => stringAttribute(value.toString());
|
|
192
|
-
|
|
193
|
-
const formatIntAttribute = value => stringAttribute(numberWithSpaces(value, 0, ''));
|
|
194
|
-
|
|
195
|
-
const DOUBLE_FRACTIONS = 2;
|
|
196
|
-
|
|
197
|
-
const formatDoubleAttribute = value => stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));
|
|
198
|
-
|
|
199
|
-
const isNullOrUndefined = value => value === null || value === undefined;
|
|
200
|
-
|
|
201
|
-
const NO_CONTENT_ATTRIBUTE = {
|
|
202
|
-
type: 0
|
|
203
|
-
/* String */
|
|
204
|
-
,
|
|
205
|
-
value: NO_CONTENT_VALUE
|
|
206
|
-
};
|
|
207
|
-
const formatAttributeValue = attribute => {
|
|
208
|
-
if (isNullOrUndefined(attribute.value)) {
|
|
209
|
-
return [NO_CONTENT_ATTRIBUTE];
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
switch (attribute.type) {
|
|
213
|
-
case 'String':
|
|
214
|
-
return formatStringAttribute(attribute.value);
|
|
215
|
-
|
|
216
|
-
case 'DateTime':
|
|
217
|
-
return [formatDateTimeAttribute(attribute.value)];
|
|
218
|
-
|
|
219
|
-
case 'Int32':
|
|
220
|
-
case 'Int64':
|
|
221
|
-
return [formatIntAttribute(attribute.value)];
|
|
222
|
-
|
|
223
|
-
case 'Double':
|
|
224
|
-
return [formatDoubleAttribute(attribute.value)];
|
|
225
|
-
|
|
226
|
-
default:
|
|
227
|
-
return [NO_CONTENT_ATTRIBUTE];
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
function useMount(_ref) {
|
|
232
|
-
let {
|
|
233
|
-
onMount,
|
|
234
|
-
onUnmount
|
|
235
|
-
} = _ref;
|
|
236
|
-
react.useEffect(() => {
|
|
237
|
-
onMount && onMount();
|
|
238
|
-
return onUnmount; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
239
|
-
}, []);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
function useNode() {
|
|
243
|
-
const [node, onSetNode] = react.useState(null);
|
|
244
|
-
const ref = react.useCallback(onSetNode, [onSetNode]);
|
|
245
|
-
return [ref, node];
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
const useToggle = initial => {
|
|
249
|
-
const [state, setState] = react.useState(initial !== undefined ? initial : false);
|
|
250
|
-
const toggle = react.useCallback(() => setState(!state), [state]);
|
|
251
|
-
return [state, toggle, setState];
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
const getHexColor = colorString => colorString ? new color.Color(colorString).toString('hex') : undefined;
|
|
255
|
-
|
|
256
49
|
const isNumeric = number => !isNaN(parseFloat(number)) && isFinite(number);
|
|
257
50
|
|
|
258
51
|
function isObject(value) {
|
|
259
|
-
return typeof value ===
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
function clamp(num, min, max) {
|
|
263
|
-
return Math.min(Math.max(num, min), max);
|
|
52
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
264
53
|
}
|
|
265
54
|
|
|
266
|
-
const metersToPixels = (meters, _ref) => {
|
|
267
|
-
let {
|
|
268
|
-
painter,
|
|
269
|
-
crs = Crs.geo
|
|
270
|
-
} = _ref;
|
|
271
|
-
const {
|
|
272
|
-
width
|
|
273
|
-
} = painter;
|
|
274
|
-
const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);
|
|
275
|
-
const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);
|
|
276
|
-
const widthDistance = geotools.distance(zeroPoint, maxWidthPoint);
|
|
277
|
-
const pxK = width / (widthDistance || 1);
|
|
278
|
-
return Math.round(meters * pxK);
|
|
279
|
-
};
|
|
280
|
-
|
|
281
|
-
const polygonCircleFromPoint = (center, diameter) => {
|
|
282
|
-
const coordinates = [];
|
|
283
|
-
const radius = diameter / 2;
|
|
284
|
-
const endAngle = Math.PI * 2;
|
|
285
|
-
const step = Math.max(Math.PI / 2 / radius, endAngle / 128);
|
|
286
|
-
let start = 0;
|
|
287
|
-
let end = endAngle;
|
|
288
|
-
|
|
289
|
-
for (let ang = start; ang < end; ang += step) {
|
|
290
|
-
coordinates.push([Math.cos(ang) * radius + center[0], Math.sin(ang) * radius + center[1]]);
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
return [coordinates];
|
|
294
|
-
};
|
|
295
|
-
|
|
296
55
|
exports.NO_CONTENT_VALUE = NO_CONTENT_VALUE;
|
|
297
|
-
exports.clamp = clamp;
|
|
298
|
-
exports.formatAttributeValue = formatAttributeValue;
|
|
299
56
|
exports.formatDate = formatDate;
|
|
300
57
|
exports.getDate = getDate;
|
|
301
|
-
exports.getHexColor = getHexColor;
|
|
302
58
|
exports.isNumeric = isNumeric;
|
|
303
59
|
exports.isObject = isObject;
|
|
304
|
-
exports.isRequisiteNumbers = isRequisiteNumbers;
|
|
305
|
-
exports.isStringAsInn = isStringAsInn;
|
|
306
|
-
exports.isStringAsKpp = isStringAsKpp;
|
|
307
|
-
exports.isStringAsMail = isStringAsMail;
|
|
308
|
-
exports.isStringAsOgrn = isStringAsOgrn;
|
|
309
|
-
exports.isStringAsPhone = isStringAsPhone;
|
|
310
|
-
exports.isStringAsUrl = isStringAsUrl;
|
|
311
|
-
exports.isStringContainsDate = isStringContainsDate;
|
|
312
|
-
exports.isValidUrl = isValidUrl;
|
|
313
|
-
exports.mailHref = mailHref;
|
|
314
|
-
exports.matchPhone = matchPhone;
|
|
315
|
-
exports.metersToPixels = metersToPixels;
|
|
316
|
-
exports.numberWithSpaces = numberWithSpaces;
|
|
317
|
-
exports.phoneHref = phoneHref;
|
|
318
|
-
exports.polygonCircleFromPoint = polygonCircleFromPoint;
|
|
319
|
-
exports.urlHref = urlHref;
|
|
320
|
-
exports.useMount = useMount;
|
|
321
|
-
exports.useNode = useNode;
|
|
322
|
-
exports.useToggle = useToggle;
|
|
323
60
|
//# sourceMappingURL=react.cjs.development.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.cjs.development.js","sources":["../src/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/hooks/useMount.ts","../src/hooks/useNode.ts","../src/hooks/useToggle.ts","../src/utils/color.ts","../src/utils/isNumeric.ts","../src/utils/isObject.ts","../src/utils/math.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts"],"sourcesContent":["import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = '—';\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\n\n return !isStringAsInn(value) && value.match(phoneRegexp);\n}\n\nexport function isStringAsInn(value: string) {\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\n\n return innRegexp.test(value);\n}\n\nexport function isStringAsKpp(value: string) {\n const kppRegexp = /^(([0-9]{9}))$/;\n\n return kppRegexp.test(value);\n}\n\nexport function isStringAsOgrn(value: string) {\n const ogrnRegexp = /^([0-9]{13})?$/;\n\n return ogrnRegexp.test((+value).toString());\n}\n\nexport function isStringContainsDate(value: string) {\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\n return dateRegexp.test(value);\n}\n\nexport function isRequisiteNumbers(value: string) {\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\n}\n\nexport function isStringAsPhone(value: string) {\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\n\n return (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phoneRegexp.test(value)\n );\n}\n\nexport function isStringAsMail(value: string) {\n return isStringAsUrl(value) && value.includes('@');\n}\n\nexport function isStringAsUrl(value: string) {\n if (isValidUrl(value)) {\n return true;\n }\n\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\n const urlKind = value.match(urlRegexp);\n\n return urlKind !== null;\n}\n\nexport function isValidUrl(value: string) {\n try {\n new URL(value);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nexport const mailHref = (mail: string) => `mailto:${mail}`;\n\nexport const phoneHref = (mail: string) => `tel:${mail}`;\n\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\n\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { PropsWithRef, useCallback, useState } from 'react';\n\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\n const [node, onSetNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback(onSetNode, [onSetNode]);\n\n return [ref, node];\n}\n","import { useCallback, useState } from \"react\";\n\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\n const [state, setState] = useState(initial !== undefined ? initial : false);\n const toggle = useCallback(() => setState(!state), [state]);\n\n return [state, toggle, setState];\n};\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n"],"names":["NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","toString","numberWithSpaces","x","fractionDigits","delim","num","frac","toFixed","split","numWithSpaces","replace","join","matchPhone","value","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","includes","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","url","stringAttribute","type","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","length","map","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","undefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","attribute","useMount","onMount","onUnmount","useEffect","useNode","node","onSetNode","useState","ref","useCallback","useToggle","initial","state","setState","toggle","getHexColor","colorString","Color","isNumeric","number","parseFloat","isFinite","isObject","Array","isArray","clamp","min","max","Math","metersToPixels","meters","painter","crs","geo","width","zeroPoint","getPointFromPxPosition","projectTo","maxWidthPoint","widthDistance","distance","pxK","round","polygonCircleFromPoint","center","diameter","coordinates","radius","endAngle","PI","step","start","end","ang","push","cos","sin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.cjs.development.js","sources":["../src/utils/date.ts","../src/utils/isNumeric.ts","../src/utils/isObject.ts"],"sourcesContent":["import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = \"—\";\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"names":["NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","toString","isNumeric","number","isNaN","parseFloat","isFinite","isObject","value","Array","isArray"],"mappings":";;;;;;MAEaA,gBAAgB,GAAG;;AAKhC,WAAYC;AACVA,EAAAA,iCAAA,qBAAA;AACAA,EAAAA,sBAAA,wBAAA;AACAA,EAAAA,iBAAA,iCAAA;AACAA,EAAAA,yBAAA,gBAAA;AACD,CALD,EAAYA,kBAAU,KAAVA,kBAAU,KAAA,CAAtB;;AAYA,MAAMC,iBAAiB,GAAmC,CAACC,iBAAD,EAAYC,gBAAZ,EAAsBC,OAAO,IAAI,IAAIC,IAAJ,CAASD,OAAT,CAAjC,CAA1D;MAEaE,OAAO,GAAIF,OAAD;AACrB,MAAI,CAACA,OAAL,EAAc,OAAO,IAAP;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,SAAK,MAAMG,MAAX,IAAqBN,iBAArB,EAAwC;AACtC,YAAMO,IAAI,GAAGD,MAAM,CAACH,OAAD,CAAnB;;AAEA,UAAIK,eAAO,CAACD,IAAD,CAAX,EAAmB;AACjB,eAAOE,cAAM,CAACF,IAAD,CAAb;AACD;AACF;;AAED,WAAO,IAAP;AACD;;AAED,QAAMG,UAAU,GAAGD,cAAM,CAACN,OAAD,CAAzB;AAEA,SAAOK,eAAO,CAACE,UAAD,CAAP,GAAsBA,UAAtB,GAAmC,IAA1C;AACD;MAEYC,UAAU,GAAG,SAAbA,UAAa,CACxBJ,IADwB;MAExB;AAAEK,IAAAA,UAAU,GAAGb,kBAAU,CAACc,mBAA1B;AAA+CC,IAAAA,YAAY,GAAGhB;AAA9D,yBAAsG;AAEtG,QAAMiB,SAAS,GAAGR,IAAI,GAAGF,OAAO,CAACE,IAAD,CAAV,GAAmB,IAAzC;;AAEA,MAAIC,eAAO,CAACO,SAAD,CAAX,EAAwB;AACtB,WAAOC,cAAM,CAACD,SAAD,EAAoBH,UAApB,CAAb;AACD;;AAED,SAAOE,YAAY,CAACG,QAAb,EAAP;AACD;;MCpDYC,SAAS,GAAIC,MAAD,IACvB,CAACC,KAAK,CAACC,UAAU,CAACF,MAAD,CAAX,CAAN,IAAwCG,QAAQ,CAACH,MAAD,CAD3C;;SCASI,SAAYC;AAC1B,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+C,CAACC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAvD;AACD;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("date-fns")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("date-fns");const e="—";var r;(r=exports.DateFormat||(exports.DateFormat={})).ClientDefaultFormat="dd.MM.yyyy HH:mm",r.DateTime="dd.MM.yyyy HH:mm:ss",r.UTC="yyyy-MM-dd'T'HH:mm:ss.sssxxx",r.AxisTooltip="d MMMM yyyy";const o=[t.parseJSON,t.parseISO,t=>new Date(t)],s=e=>{if(!e)return null;if("string"==typeof e){for(const r of o){const o=r(e);if(t.isValid(o))return t.toDate(o)}return null}const r=t.toDate(e);return t.isValid(r)?r:null};exports.NO_CONTENT_VALUE=e,exports.formatDate=function(r,o){let{dateFormat:a=exports.DateFormat.ClientDefaultFormat,defaultValue:i=e}=void 0===o?{}:o;const n=r?s(r):null;return t.isValid(n)?t.format(n,a):i.toString()},exports.getDate=s,exports.isNumeric=t=>!isNaN(parseFloat(t))&&isFinite(t),exports.isObject=function(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)};
|
|
2
2
|
//# sourceMappingURL=react.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.cjs.production.min.js","sources":["../src/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/utils/math.ts","../src/utils/color.ts","../src/utils/isNumeric.ts","../src/utils/isObject.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts","../src/hooks/useMount.ts","../src/hooks/useNode.ts","../src/hooks/useToggle.ts"],"sourcesContent":["import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = '—';\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\n\n return !isStringAsInn(value) && value.match(phoneRegexp);\n}\n\nexport function isStringAsInn(value: string) {\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\n\n return innRegexp.test(value);\n}\n\nexport function isStringAsKpp(value: string) {\n const kppRegexp = /^(([0-9]{9}))$/;\n\n return kppRegexp.test(value);\n}\n\nexport function isStringAsOgrn(value: string) {\n const ogrnRegexp = /^([0-9]{13})?$/;\n\n return ogrnRegexp.test((+value).toString());\n}\n\nexport function isStringContainsDate(value: string) {\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\n return dateRegexp.test(value);\n}\n\nexport function isRequisiteNumbers(value: string) {\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\n}\n\nexport function isStringAsPhone(value: string) {\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\n\n return (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phoneRegexp.test(value)\n );\n}\n\nexport function isStringAsMail(value: string) {\n return isStringAsUrl(value) && value.includes('@');\n}\n\nexport function isStringAsUrl(value: string) {\n if (isValidUrl(value)) {\n return true;\n }\n\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\n const urlKind = value.match(urlRegexp);\n\n return urlKind !== null;\n}\n\nexport function isValidUrl(value: string) {\n try {\n new URL(value);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nexport const mailHref = (mail: string) => `mailto:${mail}`;\n\nexport const phoneHref = (mail: string) => `tel:${mail}`;\n\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\n\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { PropsWithRef, useCallback, useState } from 'react';\n\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\n const [node, onSetNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback(onSetNode, [onSetNode]);\n\n return [ref, node];\n}\n","import { useCallback, useState } from \"react\";\n\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\n const [state, setState] = useState(initial !== undefined ? initial : false);\n const toggle = useCallback(() => setState(!state), [state]);\n\n return [state, toggle, setState];\n};\n"],"names":["NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","numberWithSpaces","x","fractionDigits","delim","num","frac","toFixed","split","replace","join","matchPhone","value","isStringAsInn","match","test","isStringAsKpp","isStringAsOgrn","toString","isStringContainsDate","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","includes","isValidUrl","URL","_","stringAttribute","type","phoneAttribute","convertStringAttribute","mailAttribute","urlAttribute","formatDateTimeAttribute","formatIntAttribute","formatDoubleAttribute","NO_CONTENT_ATTRIBUTE","min","max","Math","attribute","phones","length","map","attributeValues","every","isNaN","formatStringAttribute","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","colorString","Color","undefined","number","parseFloat","isFinite","Array","isArray","mail","meters","painter","crs","geo","width","zeroPoint","getPointFromPxPosition","projectTo","maxWidthPoint","widthDistance","distance","round","center","diameter","coordinates","radius","endAngle","PI","step","end","ang","push","cos","sin","url","onMount","onUnmount","useEffect","node","onSetNode","useState","useCallback","initial","state","setState","toggle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.cjs.production.min.js","sources":["../src/utils/date.ts","../src/utils/isNumeric.ts","../src/utils/isObject.ts"],"sourcesContent":["import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = \"—\";\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"names":["NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","toString","number","isNaN","parseFloat","isFinite","value","Array","isArray"],"mappings":"oGAEaA,EAAmB,IAKhC,IAAYC,GAAAA,EAAAA,qBAAAA,+DAEVA,iCACAA,qCACAA,4BAQF,MAAMC,EAAoD,CAACC,YAAWC,WAAUC,GAAW,IAAIC,KAAKD,IAEvFE,EAAWF,QACjBA,EAAS,OAAO,QAEE,iBAAZA,EAAsB,KAC1B,MAAMG,KAAUN,EAAmB,OAChCO,EAAOD,EAAOH,MAEhBK,UAAQD,UACHE,SAAOF,UAIX,WAGHG,EAAaD,SAAON,UAEnBK,UAAQE,GAAcA,EAAa,oDAGlB,SACxBH,SACAI,WAAEA,EAAaZ,mBAAWa,oBAA1BC,aAA+CA,EAAef,cAAwC,WAEhGgB,EAAYP,EAAOF,EAAQE,GAAQ,YAErCC,UAAQM,GACHC,SAAOD,EAAmBH,GAG5BE,EAAaG,gDCnDIC,IACvBC,MAAMC,WAAWF,KAAsBG,SAASH,6BCDvBI,SACF,iBAAVA,GAAgC,OAAVA,IAAmBC,MAAMC,QAAQF"}
|
package/dist/react.esm.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { isValid, toDate, format, parseJSON, parseISO } from 'date-fns';
|
|
2
|
-
import { useEffect, useState, useCallback } from 'react';
|
|
3
|
-
import { Color } from '@evergis/color';
|
|
4
|
-
import { geo } from '@evergis/sgis/es/Crs';
|
|
5
|
-
import { distance } from '@evergis/sgis/es/geotools';
|
|
6
2
|
|
|
7
|
-
const NO_CONTENT_VALUE =
|
|
3
|
+
const NO_CONTENT_VALUE = "—";
|
|
8
4
|
var DateFormat;
|
|
9
5
|
|
|
10
6
|
(function (DateFormat) {
|
|
@@ -47,248 +43,11 @@ const formatDate = function formatDate(date, _temp) {
|
|
|
47
43
|
return defaultValue.toString();
|
|
48
44
|
};
|
|
49
45
|
|
|
50
|
-
function numberWithSpaces(x, fractionDigits, delim) {
|
|
51
|
-
if (fractionDigits === void 0) {
|
|
52
|
-
fractionDigits = 2;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (delim === void 0) {
|
|
56
|
-
delim = ',';
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const [num, frac] = x.toFixed(fractionDigits).split('.');
|
|
60
|
-
const numWithSpaces = num.replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
|
|
61
|
-
return [numWithSpaces, frac].join(delim);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function matchPhone(value) {
|
|
65
|
-
const phoneRegexp = /((8|\+7)[- ]?)?(\(?\d{3,4}\)?[- ]?)?[\d\- ]{7,10}/g;
|
|
66
|
-
return !isStringAsInn(value) && value.match(phoneRegexp);
|
|
67
|
-
}
|
|
68
|
-
function isStringAsInn(value) {
|
|
69
|
-
const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;
|
|
70
|
-
return innRegexp.test(value);
|
|
71
|
-
}
|
|
72
|
-
function isStringAsKpp(value) {
|
|
73
|
-
const kppRegexp = /^(([0-9]{9}))$/;
|
|
74
|
-
return kppRegexp.test(value);
|
|
75
|
-
}
|
|
76
|
-
function isStringAsOgrn(value) {
|
|
77
|
-
const ogrnRegexp = /^([0-9]{13})?$/;
|
|
78
|
-
return ogrnRegexp.test((+value).toString());
|
|
79
|
-
}
|
|
80
|
-
function isStringContainsDate(value) {
|
|
81
|
-
const dateRegexp = /\d{4}(-|\/)\d{2}(-|\/)\d{2}/g;
|
|
82
|
-
return dateRegexp.test(value);
|
|
83
|
-
}
|
|
84
|
-
function isRequisiteNumbers(value) {
|
|
85
|
-
return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);
|
|
86
|
-
}
|
|
87
|
-
function isStringAsPhone(value) {
|
|
88
|
-
const phoneRegexp = /^((8|\+7)[- ]?)?(\(?\d{3,4}\)?[- ]?)?[\d\- ]{7,10}/;
|
|
89
|
-
return !isRequisiteNumbers(value) && !isStringContainsDate(value) && phoneRegexp.test(value);
|
|
90
|
-
}
|
|
91
|
-
function isStringAsMail(value) {
|
|
92
|
-
return isStringAsUrl(value) && value.includes('@');
|
|
93
|
-
}
|
|
94
|
-
function isStringAsUrl(value) {
|
|
95
|
-
if (isValidUrl(value)) {
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const urlRegexp = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;
|
|
100
|
-
const urlKind = value.match(urlRegexp);
|
|
101
|
-
return urlKind !== null;
|
|
102
|
-
}
|
|
103
|
-
function isValidUrl(value) {
|
|
104
|
-
try {
|
|
105
|
-
new URL(value);
|
|
106
|
-
} catch (_) {
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
const mailHref = mail => "mailto:" + mail;
|
|
113
|
-
const phoneHref = mail => "tel:" + mail;
|
|
114
|
-
const urlHref = url => isValidUrl(url) ? url : "//" + url;
|
|
115
|
-
|
|
116
|
-
const stringAttribute = value => ({
|
|
117
|
-
type: 0
|
|
118
|
-
/* String */
|
|
119
|
-
,
|
|
120
|
-
value
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
const urlAttribute = value => ({
|
|
124
|
-
type: 2
|
|
125
|
-
/* Url */
|
|
126
|
-
,
|
|
127
|
-
value
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
const mailAttribute = value => ({
|
|
131
|
-
type: 3
|
|
132
|
-
/* Mail */
|
|
133
|
-
,
|
|
134
|
-
value
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
const phoneAttribute = value => ({
|
|
138
|
-
type: 1
|
|
139
|
-
/* Phone */
|
|
140
|
-
,
|
|
141
|
-
value
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
const convertStringAttribute = value => {
|
|
145
|
-
if (isStringAsMail(value)) {
|
|
146
|
-
return mailAttribute(value);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if (isStringAsUrl(value)) {
|
|
150
|
-
return urlAttribute(value);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (isStringAsPhone(value)) {
|
|
154
|
-
return phoneAttribute(value);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
return stringAttribute(value);
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
const formatStringAttribute = value => {
|
|
161
|
-
const phones = matchPhone(value);
|
|
162
|
-
|
|
163
|
-
if (!isRequisiteNumbers(value) && !isStringContainsDate(value) && phones && phones.length) {
|
|
164
|
-
return phones.map(phoneAttribute);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
const attributeValues = value.split(/[\s|]/).map(convertStringAttribute);
|
|
168
|
-
|
|
169
|
-
if (attributeValues.every((_ref) => {
|
|
170
|
-
let {
|
|
171
|
-
type
|
|
172
|
-
} = _ref;
|
|
173
|
-
return type === 0;
|
|
174
|
-
}
|
|
175
|
-
/* String */
|
|
176
|
-
)) {
|
|
177
|
-
return [stringAttribute(attributeValues.map((_ref2) => {
|
|
178
|
-
let {
|
|
179
|
-
value
|
|
180
|
-
} = _ref2;
|
|
181
|
-
return isNaN(+value) || isRequisiteNumbers(value) ? isStringAsOgrn(value) ? +value : value : numberWithSpaces(+value, 0, '');
|
|
182
|
-
}).join(' '))];
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return attributeValues;
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
const formatDateTimeAttribute = value => stringAttribute(value.toString());
|
|
189
|
-
|
|
190
|
-
const formatIntAttribute = value => stringAttribute(numberWithSpaces(value, 0, ''));
|
|
191
|
-
|
|
192
|
-
const DOUBLE_FRACTIONS = 2;
|
|
193
|
-
|
|
194
|
-
const formatDoubleAttribute = value => stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));
|
|
195
|
-
|
|
196
|
-
const isNullOrUndefined = value => value === null || value === undefined;
|
|
197
|
-
|
|
198
|
-
const NO_CONTENT_ATTRIBUTE = {
|
|
199
|
-
type: 0
|
|
200
|
-
/* String */
|
|
201
|
-
,
|
|
202
|
-
value: NO_CONTENT_VALUE
|
|
203
|
-
};
|
|
204
|
-
const formatAttributeValue = attribute => {
|
|
205
|
-
if (isNullOrUndefined(attribute.value)) {
|
|
206
|
-
return [NO_CONTENT_ATTRIBUTE];
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
switch (attribute.type) {
|
|
210
|
-
case 'String':
|
|
211
|
-
return formatStringAttribute(attribute.value);
|
|
212
|
-
|
|
213
|
-
case 'DateTime':
|
|
214
|
-
return [formatDateTimeAttribute(attribute.value)];
|
|
215
|
-
|
|
216
|
-
case 'Int32':
|
|
217
|
-
case 'Int64':
|
|
218
|
-
return [formatIntAttribute(attribute.value)];
|
|
219
|
-
|
|
220
|
-
case 'Double':
|
|
221
|
-
return [formatDoubleAttribute(attribute.value)];
|
|
222
|
-
|
|
223
|
-
default:
|
|
224
|
-
return [NO_CONTENT_ATTRIBUTE];
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
function useMount(_ref) {
|
|
229
|
-
let {
|
|
230
|
-
onMount,
|
|
231
|
-
onUnmount
|
|
232
|
-
} = _ref;
|
|
233
|
-
useEffect(() => {
|
|
234
|
-
onMount && onMount();
|
|
235
|
-
return onUnmount; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
236
|
-
}, []);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
function useNode() {
|
|
240
|
-
const [node, onSetNode] = useState(null);
|
|
241
|
-
const ref = useCallback(onSetNode, [onSetNode]);
|
|
242
|
-
return [ref, node];
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
const useToggle = initial => {
|
|
246
|
-
const [state, setState] = useState(initial !== undefined ? initial : false);
|
|
247
|
-
const toggle = useCallback(() => setState(!state), [state]);
|
|
248
|
-
return [state, toggle, setState];
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
const getHexColor = colorString => colorString ? new Color(colorString).toString('hex') : undefined;
|
|
252
|
-
|
|
253
46
|
const isNumeric = number => !isNaN(parseFloat(number)) && isFinite(number);
|
|
254
47
|
|
|
255
48
|
function isObject(value) {
|
|
256
|
-
return typeof value ===
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
function clamp(num, min, max) {
|
|
260
|
-
return Math.min(Math.max(num, min), max);
|
|
49
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
261
50
|
}
|
|
262
51
|
|
|
263
|
-
|
|
264
|
-
let {
|
|
265
|
-
painter,
|
|
266
|
-
crs = geo
|
|
267
|
-
} = _ref;
|
|
268
|
-
const {
|
|
269
|
-
width
|
|
270
|
-
} = painter;
|
|
271
|
-
const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);
|
|
272
|
-
const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);
|
|
273
|
-
const widthDistance = distance(zeroPoint, maxWidthPoint);
|
|
274
|
-
const pxK = width / (widthDistance || 1);
|
|
275
|
-
return Math.round(meters * pxK);
|
|
276
|
-
};
|
|
277
|
-
|
|
278
|
-
const polygonCircleFromPoint = (center, diameter) => {
|
|
279
|
-
const coordinates = [];
|
|
280
|
-
const radius = diameter / 2;
|
|
281
|
-
const endAngle = Math.PI * 2;
|
|
282
|
-
const step = Math.max(Math.PI / 2 / radius, endAngle / 128);
|
|
283
|
-
let start = 0;
|
|
284
|
-
let end = endAngle;
|
|
285
|
-
|
|
286
|
-
for (let ang = start; ang < end; ang += step) {
|
|
287
|
-
coordinates.push([Math.cos(ang) * radius + center[0], Math.sin(ang) * radius + center[1]]);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
return [coordinates];
|
|
291
|
-
};
|
|
292
|
-
|
|
293
|
-
export { DateFormat, NO_CONTENT_VALUE, clamp, formatAttributeValue, formatDate, getDate, getHexColor, isNumeric, isObject, isRequisiteNumbers, isStringAsInn, isStringAsKpp, isStringAsMail, isStringAsOgrn, isStringAsPhone, isStringAsUrl, isStringContainsDate, isValidUrl, mailHref, matchPhone, metersToPixels, numberWithSpaces, phoneHref, polygonCircleFromPoint, urlHref, useMount, useNode, useToggle };
|
|
52
|
+
export { DateFormat, NO_CONTENT_VALUE, formatDate, getDate, isNumeric, isObject };
|
|
294
53
|
//# sourceMappingURL=react.esm.js.map
|
package/dist/react.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.esm.js","sources":["../src/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/hooks/useMount.ts","../src/hooks/useNode.ts","../src/hooks/useToggle.ts","../src/utils/color.ts","../src/utils/isNumeric.ts","../src/utils/isObject.ts","../src/utils/math.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts"],"sourcesContent":["import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = '—';\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\n\n return !isStringAsInn(value) && value.match(phoneRegexp);\n}\n\nexport function isStringAsInn(value: string) {\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\n\n return innRegexp.test(value);\n}\n\nexport function isStringAsKpp(value: string) {\n const kppRegexp = /^(([0-9]{9}))$/;\n\n return kppRegexp.test(value);\n}\n\nexport function isStringAsOgrn(value: string) {\n const ogrnRegexp = /^([0-9]{13})?$/;\n\n return ogrnRegexp.test((+value).toString());\n}\n\nexport function isStringContainsDate(value: string) {\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\n return dateRegexp.test(value);\n}\n\nexport function isRequisiteNumbers(value: string) {\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\n}\n\nexport function isStringAsPhone(value: string) {\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\n\n return (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phoneRegexp.test(value)\n );\n}\n\nexport function isStringAsMail(value: string) {\n return isStringAsUrl(value) && value.includes('@');\n}\n\nexport function isStringAsUrl(value: string) {\n if (isValidUrl(value)) {\n return true;\n }\n\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\n const urlKind = value.match(urlRegexp);\n\n return urlKind !== null;\n}\n\nexport function isValidUrl(value: string) {\n try {\n new URL(value);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nexport const mailHref = (mail: string) => `mailto:${mail}`;\n\nexport const phoneHref = (mail: string) => `tel:${mail}`;\n\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\n\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { PropsWithRef, useCallback, useState } from 'react';\n\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\n const [node, onSetNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback(onSetNode, [onSetNode]);\n\n return [ref, node];\n}\n","import { useCallback, useState } from \"react\";\n\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\n const [state, setState] = useState(initial !== undefined ? initial : false);\n const toggle = useCallback(() => setState(!state), [state]);\n\n return [state, toggle, setState];\n};\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n"],"names":["NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","toString","numberWithSpaces","x","fractionDigits","delim","num","frac","toFixed","split","numWithSpaces","replace","join","matchPhone","value","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","includes","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","url","stringAttribute","type","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","length","map","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","undefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","attribute","useMount","onMount","onUnmount","useEffect","useNode","node","onSetNode","useState","ref","useCallback","useToggle","initial","state","setState","toggle","getHexColor","colorString","Color","isNumeric","number","parseFloat","isFinite","isObject","Array","isArray","clamp","min","max","Math","metersToPixels","meters","painter","crs","geo","width","zeroPoint","getPointFromPxPosition","projectTo","maxWidthPoint","widthDistance","distance","pxK","round","polygonCircleFromPoint","center","diameter","coordinates","radius","endAngle","PI","step","start","end","ang","push","cos","sin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.esm.js","sources":["../src/utils/date.ts","../src/utils/isNumeric.ts","../src/utils/isObject.ts"],"sourcesContent":["import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = \"—\";\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"names":["NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","toString","isNumeric","number","isNaN","parseFloat","isFinite","isObject","value","Array","isArray"],"mappings":";;MAEaA,gBAAgB,GAAG;IAKpBC;;AAAZ,WAAYA;AACVA,EAAAA,iCAAA,qBAAA;AACAA,EAAAA,sBAAA,wBAAA;AACAA,EAAAA,iBAAA,iCAAA;AACAA,EAAAA,yBAAA,gBAAA;AACD,CALD,EAAYA,UAAU,KAAVA,UAAU,KAAA,CAAtB;;AAYA,MAAMC,iBAAiB,GAAmC,CAACC,SAAD,EAAYC,QAAZ,EAAsBC,OAAO,IAAI,IAAIC,IAAJ,CAASD,OAAT,CAAjC,CAA1D;MAEaE,OAAO,GAAIF,OAAD;AACrB,MAAI,CAACA,OAAL,EAAc,OAAO,IAAP;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,SAAK,MAAMG,MAAX,IAAqBN,iBAArB,EAAwC;AACtC,YAAMO,IAAI,GAAGD,MAAM,CAACH,OAAD,CAAnB;;AAEA,UAAIK,OAAO,CAACD,IAAD,CAAX,EAAmB;AACjB,eAAOE,MAAM,CAACF,IAAD,CAAb;AACD;AACF;;AAED,WAAO,IAAP;AACD;;AAED,QAAMG,UAAU,GAAGD,MAAM,CAACN,OAAD,CAAzB;AAEA,SAAOK,OAAO,CAACE,UAAD,CAAP,GAAsBA,UAAtB,GAAmC,IAA1C;AACD;MAEYC,UAAU,GAAG,SAAbA,UAAa,CACxBJ,IADwB;MAExB;AAAEK,IAAAA,UAAU,GAAGb,UAAU,CAACc,mBAA1B;AAA+CC,IAAAA,YAAY,GAAGhB;AAA9D,yBAAsG;AAEtG,QAAMiB,SAAS,GAAGR,IAAI,GAAGF,OAAO,CAACE,IAAD,CAAV,GAAmB,IAAzC;;AAEA,MAAIC,OAAO,CAACO,SAAD,CAAX,EAAwB;AACtB,WAAOC,MAAM,CAACD,SAAD,EAAoBH,UAApB,CAAb;AACD;;AAED,SAAOE,YAAY,CAACG,QAAb,EAAP;AACD;;MCpDYC,SAAS,GAAIC,MAAD,IACvB,CAACC,KAAK,CAACC,UAAU,CAACF,MAAD,CAAX,CAAN,IAAwCG,QAAQ,CAACH,MAAD,CAD3C;;SCASI,SAAYC;AAC1B,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+C,CAACC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAvD;AACD;;;;"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.0
|
|
2
|
+
"version": "3.1.0",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"@evergis/api": ">=1.0.0",
|
|
24
|
-
"@evergis/sgis": ">=0.5.0-alpha.61",
|
|
25
24
|
"react": ">=17",
|
|
26
25
|
"react-dom": ">=17",
|
|
27
26
|
"react-i18next": ">=11"
|
|
@@ -44,8 +43,7 @@
|
|
|
44
43
|
"@babel/core": "^7.17.5",
|
|
45
44
|
"@babel/plugin-transform-classes": "^7.16.7",
|
|
46
45
|
"@babel/preset-env": "^7.16.11",
|
|
47
|
-
"@evergis/api": "^4.0
|
|
48
|
-
"@evergis/sgis": "0.5.0-alpha.68",
|
|
46
|
+
"@evergis/api": "^4.1.0",
|
|
49
47
|
"@storybook/addon-actions": "^6.4.18",
|
|
50
48
|
"@storybook/addon-controls": "^6.4.18",
|
|
51
49
|
"@storybook/addon-docs": "^6.4.18",
|
|
@@ -76,11 +74,11 @@
|
|
|
76
74
|
},
|
|
77
75
|
"dependencies": {
|
|
78
76
|
"@evergis/color": "^1.0.0-alpha.1",
|
|
79
|
-
"@evergis/condition": "^2.0
|
|
77
|
+
"@evergis/condition": "^2.1.0",
|
|
80
78
|
"@svgdotjs/svg.js": "^3.1.2",
|
|
81
79
|
"lodash": "^4.17.21",
|
|
82
80
|
"punycode": "^2.1.1",
|
|
83
81
|
"styled-components": "^5.3.5"
|
|
84
82
|
},
|
|
85
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "496e930543583b52381dadf3fcef5dbd16c47df5"
|
|
86
84
|
}
|
package/dist/hooks/index.d.ts
DELETED
package/dist/hooks/useMount.d.ts
DELETED
package/dist/hooks/useNode.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const useToggle: (initial?: boolean | undefined) => [boolean, VoidFunction, (value: boolean) => void];
|
package/dist/i18n/index.d.ts
DELETED
package/dist/utils/color.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const getHexColor: (colorString: string) => string | undefined;
|
package/dist/utils/format.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function numberWithSpaces(x: number, fractionDigits?: number, delim?: ',' | '.' | ''): string;
|
package/dist/utils/math.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function clamp(num: number, min: number, max: number): number;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Crs } from '@evergis/sgis/es/Crs';
|
|
2
|
-
import { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';
|
|
3
|
-
declare type ConvertionContext = {
|
|
4
|
-
painter: DomPainter;
|
|
5
|
-
crs?: Crs;
|
|
6
|
-
};
|
|
7
|
-
export declare const metersToPixels: (meters: number, { painter, crs }: ConvertionContext) => number;
|
|
8
|
-
export {};
|
package/dist/utils/url.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare function matchPhone(value: string): false | RegExpMatchArray | null;
|
|
2
|
-
export declare function isStringAsInn(value: string): boolean;
|
|
3
|
-
export declare function isStringAsKpp(value: string): boolean;
|
|
4
|
-
export declare function isStringAsOgrn(value: string): boolean;
|
|
5
|
-
export declare function isStringContainsDate(value: string): boolean;
|
|
6
|
-
export declare function isRequisiteNumbers(value: string): boolean;
|
|
7
|
-
export declare function isStringAsPhone(value: string): boolean;
|
|
8
|
-
export declare function isStringAsMail(value: string): boolean;
|
|
9
|
-
export declare function isStringAsUrl(value: string): boolean;
|
|
10
|
-
export declare function isValidUrl(value: string): boolean;
|
|
11
|
-
export declare const mailHref: (mail: string) => string;
|
|
12
|
-
export declare const phoneHref: (mail: string) => string;
|
|
13
|
-
export declare const urlHref: (url: string) => string;
|