@progress/kendo-charts 1.21.0 → 1.23.0-dev.202201120958

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.
Files changed (68) hide show
  1. package/dist/cdn/js/kendo-charts.js +1 -1
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/barcode/barcode-validator.js +50 -0
  4. package/dist/es/barcode.js +1 -0
  5. package/dist/es/common/keys.js +25 -0
  6. package/dist/es/common.js +1 -0
  7. package/dist/es/drawing-utils.js +27 -3
  8. package/dist/es/main.js +1 -0
  9. package/dist/es/map/attribution.js +157 -0
  10. package/dist/es/map/crs.js +277 -0
  11. package/dist/es/map/datums.js +16 -0
  12. package/dist/es/map/extent.js +129 -0
  13. package/dist/es/map/layers/bubble.js +185 -0
  14. package/dist/es/map/layers/layer.js +140 -0
  15. package/dist/es/map/layers/marker.js +348 -0
  16. package/dist/es/map/layers/shape.js +390 -0
  17. package/dist/es/map/layers/tile.js +481 -0
  18. package/dist/es/map/location.js +201 -0
  19. package/dist/es/map/map.js +929 -0
  20. package/dist/es/map/navigator.js +174 -0
  21. package/dist/es/map/scroller/draggable.js +454 -0
  22. package/dist/es/map/scroller/fx.js +119 -0
  23. package/dist/es/map/scroller/observable.js +151 -0
  24. package/dist/es/map/scroller/scroller.js +746 -0
  25. package/dist/es/map/scroller/user-events.js +712 -0
  26. package/dist/es/map/utils.js +450 -0
  27. package/dist/es/map/zoom.js +139 -0
  28. package/dist/es/map.js +1 -0
  29. package/dist/es/qrcode/qrcode-validator.js +24 -0
  30. package/dist/es/qrcode.js +1 -0
  31. package/dist/es/services/map-service.js +15 -0
  32. package/dist/es2015/barcode/barcode-validator.js +48 -0
  33. package/dist/es2015/barcode.js +1 -0
  34. package/dist/es2015/common/keys.js +25 -0
  35. package/dist/es2015/common.js +1 -0
  36. package/dist/es2015/drawing-utils.js +43 -3
  37. package/dist/es2015/main.js +1 -0
  38. package/dist/es2015/map/attribution.js +147 -0
  39. package/dist/es2015/map/crs.js +233 -0
  40. package/dist/es2015/map/datums.js +16 -0
  41. package/dist/es2015/map/extent.js +115 -0
  42. package/dist/es2015/map/layers/bubble.js +167 -0
  43. package/dist/es2015/map/layers/layer.js +134 -0
  44. package/dist/es2015/map/layers/marker.js +328 -0
  45. package/dist/es2015/map/layers/shape.js +370 -0
  46. package/dist/es2015/map/layers/tile.js +455 -0
  47. package/dist/es2015/map/location.js +193 -0
  48. package/dist/es2015/map/map.js +905 -0
  49. package/dist/es2015/map/navigator.js +169 -0
  50. package/dist/es2015/map/scroller/draggable.js +418 -0
  51. package/dist/es2015/map/scroller/fx.js +112 -0
  52. package/dist/es2015/map/scroller/observable.js +143 -0
  53. package/dist/es2015/map/scroller/scroller.js +716 -0
  54. package/dist/es2015/map/scroller/user-events.js +694 -0
  55. package/dist/es2015/map/utils.js +450 -0
  56. package/dist/es2015/map/zoom.js +134 -0
  57. package/dist/es2015/map.js +1 -0
  58. package/dist/es2015/qrcode/qrcode-validator.js +22 -0
  59. package/dist/es2015/qrcode.js +1 -0
  60. package/dist/es2015/services/map-service.js +15 -0
  61. package/dist/npm/barcode.d.ts +4 -1
  62. package/dist/npm/main.d.ts +2 -0
  63. package/dist/npm/main.js +6227 -329
  64. package/dist/npm/map.d.ts +4 -0
  65. package/dist/npm/qrcode.d.ts +3 -0
  66. package/dist/npm/validation.d.ts +9 -0
  67. package/dist/systemjs/kendo-charts.js +1 -1
  68. package/package.json +3 -3
@@ -0,0 +1,450 @@
1
+ import {
2
+ isFunction,
3
+ isArray
4
+ } from '../common';
5
+
6
+ /* eslint-disable arrow-body-style */
7
+
8
+ const defineProperty = Object.defineProperty;
9
+
10
+ export const extend = Object.assign;
11
+
12
+ export let convertToHtml = (html) => {
13
+ const div = document.createElement("div");
14
+ div.innerHTML = html;
15
+ return div.firstChild;
16
+ };
17
+
18
+ export let appendHtml = (html, element) => {
19
+ const div = document.createElement('div');
20
+ div.innerHTML = html;
21
+
22
+ // use childNodes instead of children
23
+ // to cover text nodes as well
24
+ while (div.childNodes.length > 0) {
25
+ element.appendChild(div.childNodes[0]);
26
+ }
27
+ };
28
+
29
+ export let removeChildren = (element) => {
30
+ while (element.firstChild) {
31
+ element.removeChild(element.firstChild);
32
+ }
33
+ };
34
+
35
+ export let prepend = (element, originElement) => {
36
+ originElement.insertBefore(element, originElement.firstChild);
37
+ };
38
+
39
+ export let wrapInner = (parent, wrapper) => {
40
+ parent.appendChild(wrapper);
41
+
42
+ while (parent.firstChild !== wrapper) {
43
+ wrapper.appendChild(parent.firstChild);
44
+ }
45
+ };
46
+
47
+ export let toHyphens = (str) => {
48
+ const result = str.replace(/([a-z][A-Z])/g, function(g) {
49
+ return g.charAt(0) + '-' + g.charAt(1).toLowerCase();
50
+ });
51
+
52
+ return result;
53
+ };
54
+
55
+ export let toPixels = (value) => {
56
+ let result;
57
+
58
+ if (value && String(value).endsWith("px")) {
59
+ result = value;
60
+ } else {
61
+ result = String(value) + "px";
62
+ }
63
+
64
+ return result;
65
+ };
66
+
67
+ const detectOS = (ua) => {
68
+ let os = false, minorVersion, match = [],
69
+ // notAndroidPhone = !/mobile safari/i.test(ua),
70
+ agentRxs = {
71
+ wp: /(Windows Phone(?: OS)?)\s(\d+)\.(\d+(\.\d+)?)/,
72
+ fire: /(Silk)\/(\d+)\.(\d+(\.\d+)?)/,
73
+ android: /(Android|Android.*(?:Opera|Firefox).*?\/)\s*(\d+)\.?(\d+(\.\d+)?)?/,
74
+ iphone: /(iPhone|iPod).*OS\s+(\d+)[\._]([\d\._]+)/,
75
+ ipad: /(iPad).*OS\s+(\d+)[\._]([\d_]+)/,
76
+ meego: /(MeeGo).+NokiaBrowser\/(\d+)\.([\d\._]+)/,
77
+ webos: /(webOS)\/(\d+)\.(\d+(\.\d+)?)/,
78
+ blackberry: /(BlackBerry|BB10).*?Version\/(\d+)\.(\d+(\.\d+)?)/,
79
+ playbook: /(PlayBook).*?Tablet\s*OS\s*(\d+)\.(\d+(\.\d+)?)/,
80
+ windows: /(MSIE)\s+(\d+)\.(\d+(\.\d+)?)/,
81
+ tizen: /(tizen).*?Version\/(\d+)\.(\d+(\.\d+)?)/i,
82
+ sailfish: /(sailfish).*rv:(\d+)\.(\d+(\.\d+)?).*firefox/i,
83
+ ffos: /(Mobile).*rv:(\d+)\.(\d+(\.\d+)?).*Firefox/
84
+ },
85
+ osRxs = {
86
+ ios: /^i(phone|pad|pod)$/i,
87
+ android: /^android|fire$/i,
88
+ blackberry: /^blackberry|playbook/i,
89
+ windows: /windows/,
90
+ wp: /wp/,
91
+ flat: /sailfish|ffos|tizen/i,
92
+ meego: /meego/
93
+ },
94
+ formFactorRxs = {
95
+ tablet: /playbook|ipad|fire/i
96
+ },
97
+ browserRxs = {
98
+ omini: /Opera\sMini/i,
99
+ omobile: /Opera\sMobi/i,
100
+ firefox: /Firefox|Fennec/i,
101
+ mobilesafari: /version\/.*safari/i,
102
+ ie: /MSIE|Windows\sPhone/i,
103
+ chrome: /chrome|crios/i,
104
+ webkit: /webkit/i
105
+ };
106
+
107
+ for (let agent in agentRxs) {
108
+ if (agentRxs.hasOwnProperty(agent)) {
109
+ match = ua.match(agentRxs[agent]);
110
+ if (match) {
111
+ if (agent === "windows" && "plugins" in navigator) { return false; } // Break if not Metro/Mobile Windows
112
+
113
+ os = {};
114
+ os.device = agent;
115
+ os.tablet = testRegex(agent, formFactorRxs, false);
116
+ os.browser = testRegex(ua, browserRxs, "default");
117
+ os.name = testRegex(agent, osRxs);
118
+ os[os.name] = true;
119
+ os.majorVersion = match[2];
120
+ os.minorVersion = (match[3] || "0").replace("_", ".");
121
+ minorVersion = os.minorVersion.replace(".", "").substr(0, 2);
122
+ os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join("0"));
123
+
124
+
125
+ break;
126
+ }
127
+ }
128
+ }
129
+
130
+ return os;
131
+ };
132
+
133
+ function testRegex(agent, regexes, dflt) {
134
+ for (let regex in regexes) {
135
+ if (regexes.hasOwnProperty(regex) && regexes[regex].test(agent)) {
136
+ return regex;
137
+ }
138
+ }
139
+ return dflt !== undefined ? dflt : agent;
140
+ }
141
+
142
+ export let hasNativeScrolling = (userAgent) => {
143
+ const os = detectOS(userAgent);
144
+ return os.ios || os.android;
145
+ };
146
+
147
+ const detectBrowser = (userAgent) => {
148
+ let browser = false,
149
+ match = [],
150
+ browserRxs = {
151
+ edge: /(edge)[ \/]([\w.]+)/i,
152
+ webkit: /(chrome|crios)[ \/]([\w.]+)/i,
153
+ safari: /(webkit)[ \/]([\w.]+)/i,
154
+ opera: /(opera)(?:.*version|)[ \/]([\w.]+)/i,
155
+ msie: /(msie\s|trident.*? rv:)([\w.]+)/i,
156
+ mozilla: /(mozilla)(?:.*? rv:([\w.]+)|)/i
157
+ };
158
+
159
+ for (let agent in browserRxs) {
160
+ if (browserRxs.hasOwnProperty(agent)) {
161
+ match = userAgent.match(browserRxs[agent]);
162
+
163
+ if (match) {
164
+ browser = {};
165
+ browser[agent] = true;
166
+ browser[match[1].toLowerCase().split(" ")[0].split("/")[0]] = true;
167
+ browser.version = parseInt(document.documentMode || match[2], 10);
168
+
169
+ break;
170
+ }
171
+ }
172
+ }
173
+
174
+ return browser;
175
+ };
176
+
177
+ export let getEventMap = () => {
178
+ let eventMap = {
179
+ down: "touchstart mousedown",
180
+ move: "mousemove touchmove",
181
+ up: "mouseup touchend touchcancel",
182
+ cancel: "mouseleave touchcancel"
183
+ };
184
+
185
+ const support = getSupportedFeatures();
186
+
187
+ if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {
188
+ eventMap = {
189
+ down: "touchstart",
190
+ move: "touchmove",
191
+ up: "touchend touchcancel",
192
+ cancel: "touchcancel"
193
+ };
194
+ } else if (support.pointers) {
195
+ eventMap = {
196
+ down: "pointerdown",
197
+ move: "pointermove",
198
+ up: "pointerup",
199
+ cancel: "pointercancel pointerleave"
200
+ };
201
+ } else if (support.msPointers) {
202
+ eventMap = {
203
+ down: "MSPointerDown",
204
+ move: "MSPointerMove",
205
+ up: "MSPointerUp",
206
+ cancel: "MSPointerCancel MSPointerLeave"
207
+ };
208
+ }
209
+
210
+ return eventMap;
211
+ };
212
+
213
+ export const getSupportedFeatures = () => {
214
+ const os = detectOS(navigator.userAgent);
215
+ const browser = detectBrowser(navigator.userAgent);
216
+
217
+ let chrome = browser.chrome,
218
+ mobileChrome = browser.crios,
219
+ mozilla = browser.mozilla,
220
+ safari = browser.safari;
221
+
222
+ const support = {};
223
+
224
+ support.mobileOS = os;
225
+ support.touch = "ontouchstart" in window;
226
+ support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;
227
+ support.msPointers = !chrome && window.MSPointerEvent;
228
+ support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);
229
+ support.eventCapture = document.documentElement.addEventListener;
230
+
231
+ let table = document.createElement("table");
232
+
233
+ let transitions = support.transitions = false,
234
+ transforms = support.transforms = false;
235
+
236
+ const STRING = "string";
237
+
238
+ ["Moz", "webkit", "O", "ms"].forEach(function(prefix) {
239
+ let hasTransitions = typeof table.style[prefix + "Transition"] === STRING;
240
+
241
+ if (hasTransitions || typeof table.style[prefix + "Transform"] === STRING) {
242
+ let lowPrefix = prefix.toLowerCase();
243
+
244
+ transforms = {
245
+ css: (lowPrefix !== "ms") ? "-" + lowPrefix + "-" : "",
246
+ prefix: prefix,
247
+ event: (lowPrefix === "o" || lowPrefix === "webkit") ? lowPrefix : ""
248
+ };
249
+
250
+ if (hasTransitions) {
251
+ transitions = transforms;
252
+ transitions.event = transitions.event ? transitions.event + "TransitionEnd" : "transitionend";
253
+ }
254
+
255
+ return false;
256
+ }
257
+ });
258
+
259
+ table = null;
260
+
261
+ support.transforms = transforms;
262
+ support.transitions = transitions;
263
+
264
+ support.delayedClick = function() {
265
+ // only the mobile devices with touch events do this.
266
+ if (support.touch) {
267
+ // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),
268
+ // delay their click events.
269
+ if (support.mobileOS.ios) {
270
+ return true;
271
+ }
272
+
273
+ if (support.mobileOS.android) {
274
+
275
+ if (!support.browser.chrome) { // older webkits and webviews delay the click
276
+ return true;
277
+ }
278
+
279
+ // from here on, we deal with Chrome on Android.
280
+ if (support.browser.version < 32) {
281
+ return false;
282
+ }
283
+
284
+ // Chrome 32+ does conditional fast clicks if the view port is not user scalable.
285
+ const meta = document.querySelector("meta[name=viewport]");
286
+ const contentAttr = meta ? meta.getAttribute("content") : "";
287
+ return !contentAttr.match(/user-scalable=no/i);
288
+ }
289
+ }
290
+
291
+ return false;
292
+ };
293
+
294
+ return support;
295
+ };
296
+
297
+ export const ownsElement = (parent, element) => {
298
+ if (!element) {
299
+ return false;
300
+ }
301
+
302
+ let node = element.parentNode;
303
+
304
+ while (node !== null) {
305
+ if (node === parent) {
306
+ return true;
307
+ }
308
+
309
+ node = node.parentNode;
310
+ }
311
+
312
+ return false;
313
+ };
314
+
315
+ export const contains = (parent, element) => {
316
+ return parent === element || ownsElement(parent, element);
317
+ };
318
+
319
+ export const proxy = (method, context) => {
320
+ return method.bind(context);
321
+ };
322
+
323
+ function isString(value) {
324
+ return typeof(value) === "string";
325
+ }
326
+
327
+ export const on = (element, events, filter, handler, useCapture) => {
328
+ addEventListeners(element, events, filter, handler, useCapture);
329
+ };
330
+
331
+ export const addEventListeners = (element, events, filter, handler, useCapture) => {
332
+ const eventNames = isArray(events) ? events : (events || "").split(" ");
333
+
334
+ eventNames.forEach(function(eventName) {
335
+ addEventListener(element, eventName, filter, handler, useCapture);
336
+ });
337
+ };
338
+
339
+ export const addEventListener = (element, event, filter, handler, useCapture) => {
340
+ let eventHandler = handler;
341
+ let eventFilter;
342
+
343
+ if (filter && isFunction(filter) && !handler) {
344
+ eventHandler = filter;
345
+ } else if (filter && isString(filter) && isFunction(eventHandler)) {
346
+ eventFilter = filter;
347
+ }
348
+
349
+ element.addEventListener(event, function(e) {
350
+ const closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;
351
+
352
+ if (!eventFilter ||
353
+ (eventFilter && e.target && closestMatchingTarget)) {
354
+ const currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;
355
+
356
+ // reassign the property as it is a getters only
357
+ defineProperty(e, "currentTarget", { value: currentTarget });
358
+ // keep a reference to the top-level target
359
+ defineProperty(e, "delegateTarget", { value: element });
360
+
361
+ eventHandler(e);
362
+ }
363
+ }, Boolean(useCapture));
364
+ };
365
+
366
+ export const off = (element, events, filter, handler, useCapture) => {
367
+ removeEventListeners(element, events, filter, handler, useCapture);
368
+ };
369
+
370
+ export const removeEventListeners = (element, events, handler, useCapture) => {
371
+ const eventNames = isArray(events) ? events : (events || "").split(" ");
372
+
373
+ eventNames.forEach(function(eventName) {
374
+ removeEventListener(element, eventName, handler, useCapture);
375
+ });
376
+ };
377
+
378
+ export const removeEventListener = (element, event, handler, useCapture) => {
379
+ element.removeEventListener(event, handler, Boolean(useCapture));
380
+ };
381
+
382
+ const eventMap = getEventMap(navigator.userAgent);
383
+
384
+ function queryEventMap(e) {
385
+ return eventMap[e] || e;
386
+ }
387
+
388
+ const eventRegEx = /([^ ]+)/g;
389
+
390
+ export const applyEventMap = (events) => {
391
+ const appliedEvents = events.replace(eventRegEx, queryEventMap);
392
+
393
+ return appliedEvents;
394
+ };
395
+
396
+ export const setDefaultEvents = (type, events) => {
397
+ const proto = type.prototype;
398
+
399
+ if (proto.events) {
400
+ events.forEach(event => {
401
+ if (proto.events.indexOf(event) < 0) {
402
+ proto.events.push(event);
403
+ }
404
+ });
405
+ } else {
406
+ proto.events = events;
407
+ }
408
+ };
409
+
410
+ export const wheelDeltaY = (jQueryEvent) => {
411
+ const e = jQueryEvent.originalEvent || jQueryEvent;
412
+ const deltaY = e.wheelDeltaY;
413
+ let delta;
414
+
415
+ if (e.wheelDelta) { // Webkit and IE
416
+ if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)
417
+ delta = e.wheelDelta;
418
+ }
419
+ } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera
420
+ delta = (-e.detail) * 10;
421
+ }
422
+
423
+ return delta;
424
+ };
425
+
426
+ export const guid = () => {
427
+ let id = "";
428
+ let i;
429
+ let random;
430
+
431
+ for (i = 0; i < 32; i++) {
432
+ random = Math.random() * 16 | 0;
433
+
434
+ if (i === 8 || i === 12 || i === 16 || i === 20) {
435
+ id += "-";
436
+ }
437
+
438
+ id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary
439
+ }
440
+
441
+ return id;
442
+ };
443
+
444
+ export const now = () => {
445
+ return Number(new Date());
446
+ };
447
+
448
+ export const noop = () => {};
449
+
450
+ /* eslint-enable arrow-body-style */
@@ -0,0 +1,134 @@
1
+ import {
2
+ deepExtend,
3
+ addClass,
4
+ keys,
5
+ hasClasses,
6
+ setDefaultOptions
7
+ } from '../common';
8
+
9
+ import {
10
+ Observable
11
+ } from './scroller/observable';
12
+
13
+ import {
14
+ on,
15
+ off,
16
+ setDefaultEvents,
17
+ convertToHtml
18
+ } from './utils';
19
+
20
+ function createButton(direction, iconClass) {
21
+ const html =
22
+ '<button class="k-button k-button-icon k-zoom-' + direction +
23
+ '" title="zoom-' + direction +
24
+ '" aria-label="zoom-' + direction + '">' +
25
+ '<span class="k-icon ' + iconClass + '">' + '</span>' +
26
+ '</button>';
27
+
28
+ return convertToHtml(html);
29
+ }
30
+
31
+ let PLUS = 187;
32
+ let MINUS = 189;
33
+ let FF_PLUS = 61;
34
+ let FF_MINUS = 173;
35
+ const CHANGE = "change";
36
+
37
+ export class ZoomControl extends Observable {
38
+ constructor(element, options) {
39
+ super();
40
+ this.element = element;
41
+ this._initOptions(options);
42
+
43
+ const zoomInButton = createButton('in', 'k-i-plus');
44
+ const zoomOutButton = createButton('out', 'k-i-minus');
45
+
46
+ this.element.appendChild(zoomInButton);
47
+ this.element.appendChild(zoomOutButton);
48
+
49
+ addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');
50
+
51
+ this._clickHandler = this._click.bind(this);
52
+ on(this.element, "click", ".k-button", this._clickHandler);
53
+
54
+ let parentElement = this.element.parentNode.closest("[data-role]");
55
+
56
+ this._keyroot = parentElement ? parentElement : this.element;
57
+
58
+ this._tabindex(this._keyroot);
59
+
60
+ this._keydownHandler = this._keydown.bind(this);
61
+ on(this._keyroot, "keydown", this._keydownHandler);
62
+ }
63
+
64
+ destroy() {
65
+ if (this.element) {
66
+ off(this.element, "click", this._clickHandler);
67
+ }
68
+
69
+ if (this._keyroot) {
70
+ off(this._keyroot, 'keydown', this._keydownHandler);
71
+ }
72
+ }
73
+
74
+ _tabindex(target) {
75
+ const targetElement = target || this.wrapper || this.element;
76
+
77
+ let element = this.element,
78
+ TABINDEX = "tabindex",
79
+ tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);
80
+
81
+ element.removeAttribute(TABINDEX);
82
+
83
+ targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);
84
+ }
85
+
86
+ _initOptions(options) {
87
+ this.options = deepExtend({}, this.options, options);
88
+ }
89
+
90
+ _change(direction) {
91
+ let zoomStep = this.options.zoomStep;
92
+ this.trigger(CHANGE, { delta: direction * zoomStep });
93
+ }
94
+
95
+ _click(e) {
96
+ let button = e.currentTarget;
97
+ let direction = 1;
98
+
99
+ if (hasClasses(button, 'k-zoom-out')) {
100
+ direction = -1;
101
+ }
102
+
103
+ this._change(direction);
104
+ e.preventDefault();
105
+ }
106
+
107
+ /* eslint-disable indent */
108
+ _keydown(e) {
109
+ switch (e.which) {
110
+ case keys.NUMPAD_PLUS:
111
+ case PLUS:
112
+ case FF_PLUS:
113
+ this._change(1);
114
+ break;
115
+ case keys.NUMPAD_MINUS:
116
+ case MINUS:
117
+ case FF_MINUS:
118
+ this._change(-1);
119
+ break;
120
+ default:
121
+ break;
122
+ }
123
+ }
124
+ /* eslint-enable indent */
125
+ }
126
+
127
+ setDefaultOptions(ZoomControl, {
128
+ name: 'ZoomControl',
129
+ zoomStep: 1
130
+ });
131
+
132
+ setDefaultEvents(ZoomControl, [
133
+ CHANGE
134
+ ]);
@@ -0,0 +1 @@
1
+ export { default as Map } from './map/map';
@@ -0,0 +1,22 @@
1
+ import { encodeData } from './encodings/encoding';
2
+
3
+ const ISO = 'ISO_8859_1';
4
+
5
+ function qrcodeValidator(encoding = ISO) {
6
+ return function(value) {
7
+ try {
8
+ encodeData(value, 'L', encoding);
9
+ } catch (error) {
10
+ return {
11
+ valid: false,
12
+ error
13
+ };
14
+ }
15
+
16
+ return {
17
+ valid: true
18
+ };
19
+ };
20
+ }
21
+
22
+ export default qrcodeValidator;
@@ -1 +1,2 @@
1
1
  export { default as QRCode } from './qrcode/qrcode';
2
+ export { default as qrcodeValidator } from './qrcode/qrcode-validator';
@@ -0,0 +1,15 @@
1
+ class MapService {
2
+ constructor(widget, context = {}) {
3
+ this.sender = context.sender || widget;
4
+ this.widget = widget;
5
+ this.rtl = Boolean(context.rtl);
6
+ }
7
+
8
+ notify(name, args) {
9
+ if (this.widget) {
10
+ this.widget.trigger(name, args);
11
+ }
12
+ }
13
+ }
14
+
15
+ export default MapService;
@@ -1,5 +1,6 @@
1
- import { Group } from '@progress/kendo-drawing';
1
+ import { Group, geometry } from '@progress/kendo-drawing';
2
2
  import { Border, Margin, Padding, RenderMode } from './field-types';
3
+ import { ValidationResult } from './validation';
3
4
 
4
5
  /**
5
6
  * Supported symbologies (encodings) for the Barcode component.
@@ -130,3 +131,5 @@ export class Barcode {
130
131
  public setOptions(options: BarcodeOptions): void;
131
132
  public exportVisual(): Group;
132
133
  }
134
+
135
+ export function barcodeValidator(type: BarcodeType, size: geometry.Size): (value: number | string) => ValidationResult;
@@ -6,7 +6,9 @@ export * from './stock';
6
6
  export * from './gauges';
7
7
  export * from './barcode';
8
8
  export * from './qrcode';
9
+ export * from './map';
9
10
  export * from './common';
10
11
  export * from './field-types'
12
+ export * from './validation';
11
13
 
12
14
  export function chartBaseTheme(): any;