@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.
@@ -1,2 +1 @@
1
- export * from './types';
2
- export * from './format';
1
+ export * from "./types";
@@ -1,9 +1,6 @@
1
- import { ReactNode } from 'react';
2
- import { AttributeDefinitionDc } from '@evergis/api';
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;
@@ -1 +1 @@
1
- export * from './attributes';
1
+ export * from "./attributes";
package/dist/index.d.ts CHANGED
@@ -1,11 +1,2 @@
1
- export * from './core';
2
- export * from './hooks';
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 === 'object' && value !== null && !Array.isArray(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"),e=require("react"),r=require("@evergis/color"),n=require("@evergis/sgis/es/Crs"),o=require("@evergis/sgis/es/geotools");const s="—";var i;(i=exports.DateFormat||(exports.DateFormat={})).ClientDefaultFormat="dd.MM.yyyy HH:mm",i.DateTime="dd.MM.yyyy HH:mm:ss",i.UTC="yyyy-MM-dd'T'HH:mm:ss.sssxxx",i.AxisTooltip="d MMMM yyyy";const u=[t.parseJSON,t.parseISO,t=>new Date(t)],a=e=>{if(!e)return null;if("string"==typeof e){for(const r of u){const n=r(e);if(t.isValid(n))return t.toDate(n)}return null}const r=t.toDate(e);return t.isValid(r)?r:null};function l(t,e,r){void 0===e&&(e=2),void 0===r&&(r=",");const[n,o]=t.toFixed(e).split(".");return[n.replace(/\B(?=(\d{3})+(?!\d))/g," "),o].join(r)}function p(t){return!c(t)&&t.match(/((8|\+7)[- ]?)?(\(?\d{3,4}\)?[- ]?)?[\d\- ]{7,10}/g)}function c(t){return/^(([0-9]{12})|([0-9]{10}))$/.test(t)}function x(t){return/^(([0-9]{9}))$/.test(t)}function f(t){return/^([0-9]{13})?$/.test((+t).toString())}function d(t){return/\d{4}(-|\/)\d{2}(-|\/)\d{2}/g.test(t)}function m(t){return c(t)||x(t)||f(t)}function g(t){return!m(t)&&!d(t)&&/^((8|\+7)[- ]?)?(\(?\d{3,4}\)?[- ]?)?[\d\- ]{7,10}/.test(t)}function y(t){return v(t)&&t.includes("@")}function v(t){return!!h(t)||null!==t.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g)}function h(t){try{new URL(t)}catch(t){return!1}return!0}const M=t=>({type:0,value:t}),S=t=>({type:1,value:t}),D=t=>y(t)?(t=>({type:3,value:t}))(t):v(t)?(t=>({type:2,value:t}))(t):g(t)?S(t):M(t),A=t=>M(t.toString()),P=t=>M(l(t,0,"")),F=t=>M(l(t,2,".")),C={type:0,value:s};exports.NO_CONTENT_VALUE=s,exports.clamp=function(t,e,r){return Math.min(Math.max(t,e),r)},exports.formatAttributeValue=t=>{if(null==t.value)return[C];switch(t.type){case"String":return(t=>{const e=p(t);if(!m(t)&&!d(t)&&e&&e.length)return e.map(S);const r=t.split(/[\s|]/).map(D);return r.every(t=>{let{type:e}=t;return 0===e})?[M(r.map(t=>{let{value:e}=t;return isNaN(+e)||m(e)?f(e)?+e:e:l(+e,0,"")}).join(" "))]:r})(t.value);case"DateTime":return[A(t.value)];case"Int32":case"Int64":return[P(t.value)];case"Double":return[F(t.value)];default:return[C]}},exports.formatDate=function(e,r){let{dateFormat:n=exports.DateFormat.ClientDefaultFormat,defaultValue:o=s}=void 0===r?{}:r;const i=e?a(e):null;return t.isValid(i)?t.format(i,n):o.toString()},exports.getDate=a,exports.getHexColor=t=>t?new r.Color(t).toString("hex"):void 0,exports.isNumeric=t=>!isNaN(parseFloat(t))&&isFinite(t),exports.isObject=function(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)},exports.isRequisiteNumbers=m,exports.isStringAsInn=c,exports.isStringAsKpp=x,exports.isStringAsMail=y,exports.isStringAsOgrn=f,exports.isStringAsPhone=g,exports.isStringAsUrl=v,exports.isStringContainsDate=d,exports.isValidUrl=h,exports.mailHref=t=>"mailto:"+t,exports.matchPhone=p,exports.metersToPixels=(t,e)=>{let{painter:r,crs:s=n.geo}=e;const{width:i}=r,u=r.getPointFromPxPosition(0,0).projectTo(s),a=r.getPointFromPxPosition(i,0).projectTo(s),l=o.distance(u,a);return Math.round(t*(i/(l||1)))},exports.numberWithSpaces=l,exports.phoneHref=t=>"tel:"+t,exports.polygonCircleFromPoint=(t,e)=>{const r=[],n=e/2,o=2*Math.PI,s=Math.max(Math.PI/2/n,o/128);let i=o;for(let e=0;e<i;e+=s)r.push([Math.cos(e)*n+t[0],Math.sin(e)*n+t[1]]);return[r]},exports.urlHref=t=>h(t)?t:"//"+t,exports.useMount=function(t){let{onMount:r,onUnmount:n}=t;e.useEffect(()=>(r&&r(),n),[])},exports.useNode=function(){const[t,r]=e.useState(null);return[e.useCallback(r,[r]),t]},exports.useToggle=t=>{const[r,n]=e.useState(void 0!==t&&t),o=e.useCallback(()=>n(!r),[r]);return[r,o,n]};
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 === 'object' && value !== null && !Array.isArray(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
- const metersToPixels = (meters, _ref) => {
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
@@ -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;;;;"}
@@ -0,0 +1,3 @@
1
+ export * from "./date";
2
+ export * from "./isNumeric";
3
+ export * from "./isObject";
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.0.25",
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.24",
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.25",
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": "0003a0023907cda5b30f66ca564b135e205c90c5"
83
+ "gitHead": "496e930543583b52381dadf3fcef5dbd16c47df5"
86
84
  }
@@ -1,2 +0,0 @@
1
- import { AttributeValue, FeatureAttribute } from './types';
2
- export declare const formatAttributeValue: (attribute: FeatureAttribute) => AttributeValue[];
@@ -1,3 +0,0 @@
1
- import { LayerDefinitionDc } from '@evergis/api';
2
- import { LayerAttribute } from './types';
3
- export declare const getLayerAttributes: (layerDefinition?: LayerDefinitionDc | undefined) => LayerAttribute[];
@@ -1,3 +0,0 @@
1
- export * from './useMount';
2
- export * from './useNode';
3
- export * from './useToggle';
@@ -1,6 +0,0 @@
1
- export declare function useMount({ onMount, onUnmount }: UseMountOptions): void;
2
- declare type UseMountOptions = {
3
- onMount?: () => void;
4
- onUnmount?: () => void;
5
- };
6
- export {};
@@ -1,2 +0,0 @@
1
- import { PropsWithRef } from 'react';
2
- export declare function useNode(): [PropsWithRef<any>, HTMLElement | null];
@@ -1 +0,0 @@
1
- export declare const useToggle: (initial?: boolean | undefined) => [boolean, VoidFunction, (value: boolean) => void];
@@ -1,7 +0,0 @@
1
- import i18n from "i18next";
2
- export declare const DEFAULT_LANGUAGE = "ru";
3
- export declare const resources: {
4
- readonly en: {};
5
- readonly ru: {};
6
- };
7
- export { i18n };
@@ -1 +0,0 @@
1
- export declare const getHexColor: (colorString: string) => string | undefined;
@@ -1 +0,0 @@
1
- export declare function numberWithSpaces(x: number, fractionDigits?: number, delim?: ',' | '.' | ''): string;
@@ -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 {};
@@ -1,2 +0,0 @@
1
- import { Coordinates } from '@evergis/sgis/es/baseTypes';
2
- export declare const polygonCircleFromPoint: (center: Coordinates, diameter: number) => Coordinates[][];
@@ -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;