@amimpact/willy-utils 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cookie.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Create Cookie
3
3
  * source: http://www.quirksmode.org/js/cookies.html
4
4
  */
5
- export declare const createCookie: (name: string, value: string | boolean, days?: number | undefined) => void;
5
+ export declare const createCookie: (name: string, value: string | boolean, days?: number) => void;
6
6
  /**
7
7
  * Read Cookie
8
8
  * source: http://www.quirksmode.org/js/cookies.html
package/dist/cookie.js CHANGED
@@ -5,21 +5,22 @@ exports.eraseCookie = exports.readCookie = exports.createCookie = void 0;
5
5
  * Create Cookie
6
6
  * source: http://www.quirksmode.org/js/cookies.html
7
7
  */
8
- exports.createCookie = function (name, value, days) {
8
+ var createCookie = function (name, value, days) {
9
9
  var expires = '';
10
10
  if (days) {
11
11
  var date = new Date();
12
12
  date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
13
- expires = "; expires=" + date.toUTCString();
13
+ expires = "; expires=".concat(date.toUTCString());
14
14
  }
15
- document.cookie = name + "=" + value + expires + "; path=/";
15
+ document.cookie = "".concat(name, "=").concat(value).concat(expires, "; path=/");
16
16
  };
17
+ exports.createCookie = createCookie;
17
18
  /**
18
19
  * Read Cookie
19
20
  * source: http://www.quirksmode.org/js/cookies.html
20
21
  */
21
- exports.readCookie = function (name) {
22
- var nameEQ = name + "=";
22
+ var readCookie = function (name) {
23
+ var nameEQ = "".concat(name, "=");
23
24
  var ca = document.cookie.split(';');
24
25
  for (var i = 0; i < ca.length; i++) {
25
26
  var c = ca[i];
@@ -32,10 +33,12 @@ exports.readCookie = function (name) {
32
33
  }
33
34
  return null;
34
35
  };
36
+ exports.readCookie = readCookie;
35
37
  /**
36
38
  * Erase Cookie
37
39
  * source: http://www.quirksmode.org/js/cookies.html
38
40
  */
39
- exports.eraseCookie = function (name) {
40
- exports.createCookie(name, '', -1);
41
+ var eraseCookie = function (name) {
42
+ (0, exports.createCookie)(name, '', -1);
41
43
  };
44
+ exports.eraseCookie = eraseCookie;
package/dist/date.js CHANGED
@@ -24,7 +24,7 @@ var availableLocales = {
24
24
  * @param {CraftDate} dateObject
25
25
  * @param {FormatCraftDateOptions} options
26
26
  */
27
- exports.formatCraftDate = function (dateObject, options) {
27
+ var formatCraftDate = function (dateObject, options) {
28
28
  var dateFormat = options && options.systemFormat ? 'yyyy-MM-dd' : 'dd-MM-yyyy';
29
29
  var localeString = 'nl';
30
30
  if (options && options.showTime) {
@@ -48,15 +48,16 @@ exports.formatCraftDate = function (dateObject, options) {
48
48
  */
49
49
  var dateToFormat = dateObject.date.replace(/-/g, '/').split('.')[0];
50
50
  // De spatie tussen datum en tijd vervangen door 'T', anders snapt IE het niet
51
- return format_1.default(new Date(dateToFormat), dateFormat, {
51
+ return (0, format_1.default)(new Date(dateToFormat), dateFormat, {
52
52
  locale: availableLocales[localeString],
53
53
  });
54
54
  };
55
+ exports.formatCraftDate = formatCraftDate;
55
56
  /**
56
57
  * Datum formatteren naar "x minuten etc. geleden"
57
58
  * @param {date, timezone, timezone_type} dateObject
58
59
  */
59
- exports.formatDateFromNow = function (dateObject, options) {
60
+ var formatDateFromNow = function (dateObject, options) {
60
61
  var defaultOptions = {
61
62
  addSuffix: true,
62
63
  includeSeconds: true,
@@ -73,13 +74,13 @@ exports.formatDateFromNow = function (dateObject, options) {
73
74
  if (!dateObject || !dateObject.date) {
74
75
  return '';
75
76
  }
76
- var parsed = date_fns_tz_1.zonedTimeToUtc(dateObject.date, dateObject.timezone);
77
+ var parsed = (0, date_fns_tz_1.zonedTimeToUtc)(dateObject.date, dateObject.timezone);
77
78
  /**
78
79
  * Datum tonen voor ouder dan x tijd
79
80
  */
80
81
  if (opts.showDateForOld &&
81
- isBefore_1.default(parsed, subDays_1.default(new Date(), opts.numberOfDaysShowDateForOld))) {
82
- return format_1.default(new Date(dateObject.date.replace(' ', 'T')), opts.showDateForOldFormat, {
82
+ (0, isBefore_1.default)(parsed, (0, subDays_1.default)(new Date(), opts.numberOfDaysShowDateForOld))) {
83
+ return (0, format_1.default)(new Date(dateObject.date.replace(' ', 'T')), opts.showDateForOldFormat, {
83
84
  locale: availableLocales[opts.locale],
84
85
  });
85
86
  }
@@ -94,18 +95,19 @@ exports.formatDateFromNow = function (dateObject, options) {
94
95
  * Daarom moet date-fns wel de posttime getransformeerd hebben tot de lokale timezone
95
96
  */
96
97
  if (opts.strict) {
97
- return formatDistanceStrict_1.default(parsed, new Date(), formatDistanceOptions);
98
+ return (0, formatDistanceStrict_1.default)(parsed, new Date(), formatDistanceOptions);
98
99
  }
99
100
  else {
100
- return formatDistance_1.default(parsed, new Date(), formatDistanceOptions);
101
+ return (0, formatDistance_1.default)(parsed, new Date(), formatDistanceOptions);
101
102
  }
102
103
  }
103
104
  };
105
+ exports.formatDateFromNow = formatDateFromNow;
104
106
  /**
105
107
  * New date maken op basis van timezone
106
108
  * @param {date, timezone, timezone_type} dateObject
107
109
  */
108
- exports.formatNewDate = function (dateObject) {
110
+ var formatNewDate = function (dateObject) {
109
111
  if (!dateObject || !dateObject.date) {
110
112
  return '';
111
113
  }
@@ -115,23 +117,25 @@ exports.formatNewDate = function (dateObject) {
115
117
  * Safari begrijpt het wel als alle - vervangen worden door /, en het laatste gedeelte achter de punt weg is
116
118
  */
117
119
  // const dateString = dateObject.date.replace(/-/g, '/').split('.')[0];
118
- var parsed = date_fns_tz_1.zonedTimeToUtc(dateObject.date, dateObject.timezone);
120
+ var parsed = (0, date_fns_tz_1.zonedTimeToUtc)(dateObject.date, dateObject.timezone);
119
121
  return new Date(parsed);
120
122
  };
123
+ exports.formatNewDate = formatNewDate;
121
124
  /**
122
125
  * Convert datum
123
126
  * @param {Date} date
124
127
  */
125
- exports.formatUTCDate = function (date) {
128
+ var formatUTCDate = function (date) {
126
129
  var d = new Date(date);
127
130
  return new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds()));
128
131
  };
132
+ exports.formatUTCDate = formatUTCDate;
129
133
  /**
130
134
  * ISO duration naar object ombuigen. Bijv P4W
131
135
  * @param {string} duration
132
136
  * @param {parseISODurationOptions} options
133
137
  */
134
- exports.parseISODuration = function (duration, options) {
138
+ var parseISODuration = function (duration, options) {
135
139
  var defaultOptions = {
136
140
  humanReadable: false,
137
141
  };
@@ -139,11 +143,12 @@ exports.parseISODuration = function (duration, options) {
139
143
  if (options) {
140
144
  opts = Object.assign({}, defaultOptions, options);
141
145
  }
142
- var durationObject = tinyduration_1.parse(duration);
146
+ var durationObject = (0, tinyduration_1.parse)(duration);
143
147
  if (opts.humanReadable) {
144
- return formatDuration_1.default(durationObject, {
148
+ return (0, formatDuration_1.default)(durationObject, {
145
149
  locale: locale_1.nl,
146
150
  });
147
151
  }
148
152
  return durationObject;
149
153
  };
154
+ exports.parseISODuration = parseISODuration;
package/dist/form.js CHANGED
@@ -20,7 +20,7 @@ exports.convertObjectToFormData = void 0;
20
20
  * @param {FormData} form
21
21
  * @param {String} namespace
22
22
  */
23
- exports.convertObjectToFormData = function (data, form, namespace) {
23
+ var convertObjectToFormData = function (data, form, namespace) {
24
24
  if (data === void 0) { data = {}; }
25
25
  if (form === void 0) { form = null; }
26
26
  if (namespace === void 0) { namespace = ''; }
@@ -34,7 +34,7 @@ exports.convertObjectToFormData = function (data, form, namespace) {
34
34
  return "continue";
35
35
  }
36
36
  var formKey = namespace
37
- ? namespace + "[" + propertyName + "]"
37
+ ? "".concat(namespace, "[").concat(propertyName, "]")
38
38
  : propertyName;
39
39
  // Date
40
40
  if (model[propertyName] instanceof Date)
@@ -46,13 +46,13 @@ exports.convertObjectToFormData = function (data, form, namespace) {
46
46
  }
47
47
  else if (model[propertyName] instanceof Array) {
48
48
  model[propertyName].forEach(function (element, index) {
49
- var tempFormKey = formKey + "[" + index + "]";
49
+ var tempFormKey = "".concat(formKey, "[").concat(index, "]");
50
50
  if (element instanceof File) {
51
51
  formData.append(tempFormKey, element);
52
52
  }
53
53
  else {
54
54
  if (typeof element === 'object') {
55
- exports.convertObjectToFormData(element, formData, tempFormKey);
55
+ (0, exports.convertObjectToFormData)(element, formData, tempFormKey);
56
56
  }
57
57
  else {
58
58
  formData.append(tempFormKey, element.toString());
@@ -63,7 +63,7 @@ exports.convertObjectToFormData = function (data, form, namespace) {
63
63
  }
64
64
  else if (typeof model[propertyName] === 'object' &&
65
65
  !(model[propertyName] instanceof File)) {
66
- exports.convertObjectToFormData(model[propertyName], formData, formKey);
66
+ (0, exports.convertObjectToFormData)(model[propertyName], formData, formKey);
67
67
  }
68
68
  else {
69
69
  formData.append(formKey, model[propertyName].toString());
@@ -80,3 +80,4 @@ exports.convertObjectToFormData = function (data, form, namespace) {
80
80
  // }
81
81
  return formData;
82
82
  };
83
+ exports.convertObjectToFormData = convertObjectToFormData;
@@ -14,7 +14,7 @@ var units = [
14
14
  // NOTE: IE11 kan niet overweg met groups in een regex
15
15
  // const r = (name: string, unit: string): string =>
16
16
  // `((?<${name}>-?\\d*[\\.,]?\\d+)${unit})?`;
17
- var r = function (name, unit) { return "((\\d*[\\.,]?\\d+)" + unit + ")?"; };
17
+ var r = function (name, unit) { return "((\\d*[\\.,]?\\d+)".concat(unit, ")?"); };
18
18
  var durationRegex = new RegExp([
19
19
  'P',
20
20
  r('years', 'Y'),
@@ -25,7 +25,7 @@ var durationRegex = new RegExp([
25
25
  r('hours', 'H'),
26
26
  r('minutes', 'M'),
27
27
  r('seconds', 'S'),
28
- ')?',
28
+ ')?', // end optional time
29
29
  ].join(''));
30
30
  function parseNum(s) {
31
31
  if (s === '' || s === undefined || s === null) {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createCookie, readCookie, eraseCookie } from './cookie';
2
2
  import { formatCraftDate, formatDateFromNow, formatNewDate, formatUTCDate, parseISODuration } from './date';
3
3
  import { convertObjectToFormData } from './form';
4
- import { bytesToSize, capitalize, checkForScrollbars, convertHexToRGBA, downloadFile, getNestedSet, getUrlsFromString, isPlainObject, observeResize, wrap } from './misc';
4
+ import { bytesToSize, capitalize, checkForScrollbars, convertHexToRGBA, downloadFile, getNestedSet, getUrlsFromString, isHoverableDevice, isPlainObject, isTouchDevice, observeResize, wrap } from './misc';
5
5
  import { $, $$, getParents } from './selectors';
6
6
  import { isCraftActionUrl, isInternalLink, isExternalUrl, isAsset } from './url';
7
- export { $, $$, bytesToSize, capitalize, checkForScrollbars, convertHexToRGBA, createCookie, downloadFile, eraseCookie, formatCraftDate, convertObjectToFormData, formatDateFromNow, formatNewDate, formatUTCDate, getNestedSet, getParents, getUrlsFromString, isAsset, isCraftActionUrl, isExternalUrl, isInternalLink, isPlainObject, observeResize, parseISODuration, readCookie, wrap, };
7
+ export { $, $$, bytesToSize, capitalize, checkForScrollbars, convertHexToRGBA, createCookie, downloadFile, eraseCookie, formatCraftDate, convertObjectToFormData, formatDateFromNow, formatNewDate, formatUTCDate, getNestedSet, getParents, getUrlsFromString, isAsset, isCraftActionUrl, isExternalUrl, isHoverableDevice, isInternalLink, isPlainObject, isTouchDevice, observeResize, parseISODuration, readCookie, wrap, };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wrap = exports.readCookie = exports.parseISODuration = exports.observeResize = exports.isPlainObject = exports.isInternalLink = exports.isExternalUrl = exports.isCraftActionUrl = exports.isAsset = exports.getUrlsFromString = exports.getParents = exports.getNestedSet = exports.formatUTCDate = exports.formatNewDate = exports.formatDateFromNow = exports.convertObjectToFormData = exports.formatCraftDate = exports.eraseCookie = exports.downloadFile = exports.createCookie = exports.convertHexToRGBA = exports.checkForScrollbars = exports.capitalize = exports.bytesToSize = exports.$$ = exports.$ = void 0;
3
+ exports.wrap = exports.readCookie = exports.parseISODuration = exports.observeResize = exports.isTouchDevice = exports.isPlainObject = exports.isInternalLink = exports.isHoverableDevice = exports.isExternalUrl = exports.isCraftActionUrl = exports.isAsset = exports.getUrlsFromString = exports.getParents = exports.getNestedSet = exports.formatUTCDate = exports.formatNewDate = exports.formatDateFromNow = exports.convertObjectToFormData = exports.formatCraftDate = exports.eraseCookie = exports.downloadFile = exports.createCookie = exports.convertHexToRGBA = exports.checkForScrollbars = exports.capitalize = exports.bytesToSize = exports.$$ = exports.$ = void 0;
4
4
  var cookie_1 = require("./cookie");
5
5
  Object.defineProperty(exports, "createCookie", { enumerable: true, get: function () { return cookie_1.createCookie; } });
6
6
  Object.defineProperty(exports, "readCookie", { enumerable: true, get: function () { return cookie_1.readCookie; } });
@@ -21,7 +21,9 @@ Object.defineProperty(exports, "convertHexToRGBA", { enumerable: true, get: func
21
21
  Object.defineProperty(exports, "downloadFile", { enumerable: true, get: function () { return misc_1.downloadFile; } });
22
22
  Object.defineProperty(exports, "getNestedSet", { enumerable: true, get: function () { return misc_1.getNestedSet; } });
23
23
  Object.defineProperty(exports, "getUrlsFromString", { enumerable: true, get: function () { return misc_1.getUrlsFromString; } });
24
+ Object.defineProperty(exports, "isHoverableDevice", { enumerable: true, get: function () { return misc_1.isHoverableDevice; } });
24
25
  Object.defineProperty(exports, "isPlainObject", { enumerable: true, get: function () { return misc_1.isPlainObject; } });
26
+ Object.defineProperty(exports, "isTouchDevice", { enumerable: true, get: function () { return misc_1.isTouchDevice; } });
25
27
  Object.defineProperty(exports, "observeResize", { enumerable: true, get: function () { return misc_1.observeResize; } });
26
28
  Object.defineProperty(exports, "wrap", { enumerable: true, get: function () { return misc_1.wrap; } });
27
29
  var selectors_1 = require("./selectors");
package/dist/misc.d.ts CHANGED
@@ -1,3 +1,9 @@
1
+ declare global {
2
+ interface Navigator {
3
+ msSaveBlob?: (blob: any, defaultName?: string) => boolean;
4
+ msSaveOrOpenBlob: (blob: any, defaultName?: string) => boolean;
5
+ }
6
+ }
1
7
  /**
2
8
  * Toon mooier bestandsformaat
3
9
  * @param {string | number} bytes
@@ -43,6 +49,12 @@ export declare const getNestedSet: (entries: any[] | undefined, level: number |
43
49
  * @param {string} content - html
44
50
  */
45
51
  export declare const getUrlsFromString: (content: string) => RegExpMatchArray | null;
52
+ /**
53
+ * Bepalen of jouw device hover ondersteunt
54
+ *
55
+ * @returns {boolean}
56
+ */
57
+ export declare const isHoverableDevice: () => boolean;
46
58
  /**
47
59
  * Bekijken of een waarde een object is
48
60
  * https://github.com/reduxjs/redux/blob/master/src/utils/isPlainObject.ts
@@ -51,6 +63,13 @@ export declare const getUrlsFromString: (content: string) => RegExpMatchArray |
51
63
  * @returns {boolean}
52
64
  */
53
65
  export declare const isPlainObject: (value: any) => boolean;
66
+ /**
67
+ * Bepalen of je gebruikt maakt van een touchscreen
68
+ * https://gist.github.com/esedic/39a16a7521d42ae205203e3d40dc19f5
69
+ *
70
+ * @returns {boolean}
71
+ */
72
+ export declare const isTouchDevice: () => boolean;
54
73
  /**
55
74
  * Resize observer; checkt of een HTML element zijn dimensies veranderen
56
75
  * en zodra dat gebeurt wordt de callback functie gecalled.
package/dist/misc.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wrap = exports.observeResize = exports.isPlainObject = exports.getUrlsFromString = exports.getNestedSet = exports.downloadFile = exports.convertHexToRGBA = exports.checkForScrollbars = exports.capitalize = exports.bytesToSize = void 0;
3
+ exports.wrap = exports.observeResize = exports.isTouchDevice = exports.isPlainObject = exports.isHoverableDevice = exports.getUrlsFromString = exports.getNestedSet = exports.downloadFile = exports.convertHexToRGBA = exports.checkForScrollbars = exports.capitalize = exports.bytesToSize = void 0;
4
4
  /**
5
5
  * Toon mooier bestandsformaat
6
6
  * @param {string | number} bytes
7
7
  */
8
- exports.bytesToSize = function (bytes) {
8
+ var bytesToSize = function (bytes) {
9
9
  if (typeof bytes === 'string') {
10
10
  bytes = parseInt(bytes);
11
11
  }
@@ -15,13 +15,15 @@ exports.bytesToSize = function (bytes) {
15
15
  var i = Math.floor(Math.log(bytes) / Math.log(1024));
16
16
  return Math.round(bytes / Math.pow(1024, i)) + ' ' + sizes[i];
17
17
  };
18
+ exports.bytesToSize = bytesToSize;
18
19
  /**
19
20
  * Eerste letter van een string een hoofdletter maken
20
21
  * @param {string} str
21
22
  */
22
- exports.capitalize = function (str) {
23
+ var capitalize = function (str) {
23
24
  return str.charAt(0).toUpperCase() + str.slice(1);
24
25
  };
26
+ exports.capitalize = capitalize;
25
27
  /**
26
28
  * Check of een HTML element horizontale of verticale scrollbars heeft
27
29
  * als dat zo is, dan wordt een class op het element gezet.
@@ -29,7 +31,7 @@ exports.capitalize = function (str) {
29
31
  * @param {HTMLElement} el
30
32
  * @param {String} dir // vertical of horizontal
31
33
  */
32
- exports.checkForScrollbars = function (el, dir) {
34
+ var checkForScrollbars = function (el, dir) {
33
35
  if (dir === void 0) { dir = 'vertical'; }
34
36
  var direction = dir === 'vertical' ? 'scrollTop' : 'scrollLeft';
35
37
  var hasScrollbar = !!el[direction];
@@ -39,23 +41,24 @@ exports.checkForScrollbars = function (el, dir) {
39
41
  el[direction] = 0;
40
42
  }
41
43
  if (hasScrollbar) {
42
- el.classList.add("has-" + dir + "-scrollbar");
44
+ el.classList.add("has-".concat(dir, "-scrollbar"));
43
45
  }
44
46
  else {
45
- el.classList.remove("has-" + dir + "-scrollbar");
47
+ el.classList.remove("has-".concat(dir, "-scrollbar"));
46
48
  }
47
49
  };
50
+ exports.checkForScrollbars = checkForScrollbars;
48
51
  /**
49
52
  * Hex kleurcode converten naar rgba
50
53
  *
51
54
  * @param {string} hexCode
52
55
  * @param {number} opacity
53
56
  */
54
- exports.convertHexToRGBA = function (hexCode, opacity) {
57
+ var convertHexToRGBA = function (hexCode, opacity) {
55
58
  if (opacity === void 0) { opacity = 1; }
56
59
  var hex = hexCode.replace('#', '');
57
60
  if (hex.length === 3) {
58
- hex = "" + hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
61
+ hex = "".concat(hex[0]).concat(hex[0]).concat(hex[1]).concat(hex[1]).concat(hex[2]).concat(hex[2]);
59
62
  }
60
63
  var r = parseInt(hex.substring(0, 2), 16);
61
64
  var g = parseInt(hex.substring(2, 4), 16);
@@ -64,15 +67,16 @@ exports.convertHexToRGBA = function (hexCode, opacity) {
64
67
  if (opacity > 1 && opacity <= 100) {
65
68
  opacity = opacity / 100;
66
69
  }
67
- return "rgba(" + r + "," + g + "," + b + "," + opacity + ")";
70
+ return "rgba(".concat(r, ",").concat(g, ",").concat(b, ",").concat(opacity, ")");
68
71
  };
72
+ exports.convertHexToRGBA = convertHexToRGBA;
69
73
  /**
70
74
  * Downloaden van een bestand
71
75
  *
72
76
  * @param {any} data
73
77
  * @param {string} fileName
74
78
  */
75
- exports.downloadFile = function (data, fileName) {
79
+ var downloadFile = function (data, fileName) {
76
80
  if (typeof window.navigator.msSaveBlob !== 'undefined') {
77
81
  window.navigator.msSaveOrOpenBlob(new Blob([data]), fileName);
78
82
  }
@@ -85,6 +89,7 @@ exports.downloadFile = function (data, fileName) {
85
89
  fileLink.click();
86
90
  }
87
91
  };
92
+ exports.downloadFile = downloadFile;
88
93
  /**
89
94
  * Flat structure array ombouwen naar een array met children
90
95
  * @param {array} entries
@@ -92,7 +97,7 @@ exports.downloadFile = function (data, fileName) {
92
97
  * @param {number | string} left
93
98
  * @param {number | string} right
94
99
  */
95
- exports.getNestedSet = function (entries, level, left, right) {
100
+ var getNestedSet = function (entries, level, left, right) {
96
101
  if (entries === void 0) { entries = []; }
97
102
  if (level === void 0) { level = 1; }
98
103
  return entries
@@ -105,19 +110,30 @@ exports.getNestedSet = function (entries, level, left, right) {
105
110
  })
106
111
  .map(function (item) {
107
112
  var returnItem = item;
108
- returnItem['children'] = exports.getNestedSet(entries, parseFloat(item.level) + 1, parseFloat(item.lft), parseFloat(item.rgt));
113
+ returnItem['children'] = (0, exports.getNestedSet)(entries, parseFloat(item.level) + 1, parseFloat(item.lft), parseFloat(item.rgt));
109
114
  return returnItem;
110
115
  });
111
116
  };
117
+ exports.getNestedSet = getNestedSet;
112
118
  /**
113
119
  * Urls uit een string halen
114
120
  * @param {string} content - html
115
121
  */
116
- exports.getUrlsFromString = function (content) {
122
+ var getUrlsFromString = function (content) {
117
123
  var regex = /(https?|ftp|file):\/\/([-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)/gi;
118
124
  var m = content.match(regex);
119
125
  return m || null;
120
126
  };
127
+ exports.getUrlsFromString = getUrlsFromString;
128
+ /**
129
+ * Bepalen of jouw device hover ondersteunt
130
+ *
131
+ * @returns {boolean}
132
+ */
133
+ var isHoverableDevice = function () {
134
+ return window.matchMedia('(hover: hover) and (pointer: fine)').matches;
135
+ };
136
+ exports.isHoverableDevice = isHoverableDevice;
121
137
  /**
122
138
  * Bekijken of een waarde een object is
123
139
  * https://github.com/reduxjs/redux/blob/master/src/utils/isPlainObject.ts
@@ -125,7 +141,7 @@ exports.getUrlsFromString = function (content) {
125
141
  * @param {any} value - Waarde welke je wilt checken of het een object is
126
142
  * @returns {boolean}
127
143
  */
128
- exports.isPlainObject = function (value) {
144
+ var isPlainObject = function (value) {
129
145
  if (typeof value !== 'object' || value === null) {
130
146
  return false;
131
147
  }
@@ -135,6 +151,36 @@ exports.isPlainObject = function (value) {
135
151
  }
136
152
  return Object.getPrototypeOf(value) === proto;
137
153
  };
154
+ exports.isPlainObject = isPlainObject;
155
+ /**
156
+ * Bepalen of je gebruikt maakt van een touchscreen
157
+ * https://gist.github.com/esedic/39a16a7521d42ae205203e3d40dc19f5
158
+ *
159
+ * @returns {boolean}
160
+ */
161
+ var isTouchDevice = function () {
162
+ var result = false;
163
+ if (window.PointerEvent && 'maxTouchPoints' in navigator) {
164
+ // if Pointer Events are supported, just check maxTouchPoints
165
+ if (navigator.maxTouchPoints > 0) {
166
+ result = true;
167
+ }
168
+ }
169
+ else {
170
+ // no Pointer Events...
171
+ if (window.matchMedia &&
172
+ window.matchMedia('(any-pointer:coarse)').matches) {
173
+ // check for any-pointer:coarse which mostly means touchscreen
174
+ result = true;
175
+ }
176
+ else if (window.TouchEvent || 'ontouchstart' in window) {
177
+ // last resort - check for exposed touch events API / event handler
178
+ result = true;
179
+ }
180
+ }
181
+ return result;
182
+ };
183
+ exports.isTouchDevice = isTouchDevice;
138
184
  /**
139
185
  * Resize observer; checkt of een HTML element zijn dimensies veranderen
140
186
  * en zodra dat gebeurt wordt de callback functie gecalled.
@@ -142,21 +188,23 @@ exports.isPlainObject = function (value) {
142
188
  * @param {HTMLElement} el
143
189
  * @param {Function} callback
144
190
  */
145
- exports.observeResize = function (element, callback) {
191
+ var observeResize = function (element, callback) {
146
192
  var resizeObserver = new ResizeObserver(function () {
147
193
  callback(element);
148
194
  });
149
195
  resizeObserver.observe(element);
150
196
  };
197
+ exports.observeResize = observeResize;
151
198
  /**
152
199
  * Wrap een element in een nieuw element
153
200
  *
154
201
  * @param {HTMLElement} el
155
202
  * @param {HTMLElement} wrapper
156
203
  */
157
- exports.wrap = function (el, wrapper) {
204
+ var wrap = function (el, wrapper) {
158
205
  if (el.parentNode) {
159
206
  el.parentNode.insertBefore(wrapper, el);
160
207
  wrapper.appendChild(el);
161
208
  }
162
209
  };
210
+ exports.wrap = wrap;
package/dist/selectors.js CHANGED
@@ -8,10 +8,11 @@ exports.getParents = exports.$$ = exports.$ = void 0;
8
8
  * @param {*} [containerElement=document] - Element waarin hij moet selecteren
9
9
  * @returns {(HTMLElement|null)}
10
10
  */
11
- exports.$ = function (selector, containerElement) {
11
+ var $ = function (selector, containerElement) {
12
12
  if (containerElement === void 0) { containerElement = document; }
13
13
  return containerElement.querySelector(selector);
14
14
  };
15
+ exports.$ = $;
15
16
  /**
16
17
  * Selecteer alle items
17
18
  *
@@ -19,10 +20,11 @@ exports.$ = function (selector, containerElement) {
19
20
  * @param {*} [containerElement=document] - Element waarin hij moet selecteren
20
21
  * @returns {HTMLElement[]}
21
22
  */
22
- exports.$$ = function (selector, containerElement) {
23
+ var $$ = function (selector, containerElement) {
23
24
  if (containerElement === void 0) { containerElement = document; }
24
25
  return Array.prototype.slice.apply(containerElement.querySelectorAll(selector));
25
26
  };
27
+ exports.$$ = $$;
26
28
  /**
27
29
  * Haal parents van een element op
28
30
  *
@@ -30,7 +32,7 @@ exports.$$ = function (selector, containerElement) {
30
32
  * @param {string} [parentSelector] - Een selector waar hij aan moet voldoen.
31
33
  * Als deze niet wordt meegegeven dan geeft hij alle parents terug
32
34
  */
33
- exports.getParents = function (el, parentSelector) {
35
+ var getParents = function (el, parentSelector) {
34
36
  if (parentSelector === void 0) { parentSelector = ''; }
35
37
  var parents = [];
36
38
  var p = el.parentElement;
@@ -46,3 +48,4 @@ exports.getParents = function (el, parentSelector) {
46
48
  }
47
49
  return parents;
48
50
  };
51
+ exports.getParents = getParents;
package/dist/url.js CHANGED
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
- var __spreadArrays = (this && this.__spreadArrays) || function () {
3
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
4
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
5
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
6
- r[k] = a[j];
7
- return r;
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
8
10
  };
9
11
  Object.defineProperty(exports, "__esModule", { value: true });
10
12
  exports.isAsset = exports.isPhoneOrEmailLink = exports.isCraftActionUrl = exports.isExternalUrl = exports.isInternalLink = void 0;
@@ -15,7 +17,7 @@ exports.isAsset = exports.isPhoneOrEmailLink = exports.isCraftActionUrl = export
15
17
  * @param {string} url
16
18
  * @param {PointerEvent} ev
17
19
  */
18
- exports.isInternalLink = function (url, ev) {
20
+ var isInternalLink = function (url, ev) {
19
21
  if (ev) {
20
22
  // some sanity checks taken from vue-router:
21
23
  // https://github.com/vuejs/vue-router/blob/dev/src/components/link.js#L106
@@ -33,12 +35,13 @@ exports.isInternalLink = function (url, ev) {
33
35
  return false;
34
36
  }
35
37
  }
36
- return !exports.isExternalUrl(url) && !exports.isPhoneOrEmailLink(url) && !exports.isAsset(url);
38
+ return !(0, exports.isExternalUrl)(url) && !(0, exports.isPhoneOrEmailLink)(url) && !(0, exports.isAsset)(url);
37
39
  };
40
+ exports.isInternalLink = isInternalLink;
38
41
  /**
39
42
  * Bepalen of het om een externe url gaat
40
43
  */
41
- exports.isExternalUrl = function (url) {
44
+ var isExternalUrl = function (url) {
42
45
  if (!url) {
43
46
  return false;
44
47
  }
@@ -46,34 +49,37 @@ exports.isExternalUrl = function (url) {
46
49
  * Plugin urls zijn actions en dit kunnen redirects zijn
47
50
  * Deze actions urls dus altijd in een externe tab openen
48
51
  */
49
- if (url.startsWith(window.location.origin + "/actions/")) {
52
+ if (url.startsWith("".concat(window.location.origin, "/actions/"))) {
50
53
  return true;
51
54
  }
52
55
  return url.startsWith('http') && !url.startsWith(window.location.origin);
53
56
  };
57
+ exports.isExternalUrl = isExternalUrl;
54
58
  /**
55
59
  * Bepalen of het om een craft action url gaat
56
60
  */
57
- exports.isCraftActionUrl = function (url) {
61
+ var isCraftActionUrl = function (url) {
58
62
  if (!url) {
59
63
  return false;
60
64
  }
61
65
  return url.indexOf('/index.php/actions/') !== -1;
62
66
  };
67
+ exports.isCraftActionUrl = isCraftActionUrl;
63
68
  /**
64
69
  * Checken of het om een tel of mailto link gaat
65
70
  * (kan niet met bovenstaande omdat je bij tel of mailto bijvoorbeeld geen target blank wilt gebruiken)
66
71
  */
67
- exports.isPhoneOrEmailLink = function (url) {
72
+ var isPhoneOrEmailLink = function (url) {
68
73
  if (!url) {
69
74
  return false;
70
75
  }
71
76
  return url.startsWith('mailto:') || url.startsWith('tel:');
72
77
  };
78
+ exports.isPhoneOrEmailLink = isPhoneOrEmailLink;
73
79
  /**
74
80
  * Checken of url een bestand is, om deze ook in een nieuw venster te openen
75
81
  */
76
- exports.isAsset = function (url) {
82
+ var isAsset = function (url) {
77
83
  var _a;
78
84
  if (!url) {
79
85
  return false;
@@ -101,7 +107,7 @@ exports.isAsset = function (url) {
101
107
  'xlsx',
102
108
  ];
103
109
  var CONFIG_EXTENSIONS = ((_a = FW === null || FW === void 0 ? void 0 : FW.config) === null || _a === void 0 ? void 0 : _a.allowedFileExtensions) || [];
104
- var extensions = __spreadArrays(DEFAULT_EXTENSIONS, CONFIG_EXTENSIONS);
110
+ var extensions = __spreadArray(__spreadArray([], DEFAULT_EXTENSIONS, true), CONFIG_EXTENSIONS, true);
105
111
  var slug = url.split('/').pop();
106
112
  var slugParts = slug ? slug.split('.') : [];
107
113
  if (slugParts.length < 2) {
@@ -113,3 +119,4 @@ exports.isAsset = function (url) {
113
119
  }
114
120
  return false;
115
121
  };
122
+ exports.isAsset = isAsset;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amimpact/willy-utils",
3
- "version": "1.7.0",
3
+ "version": "1.8.1",
4
4
  "description": "Javascript utils",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,10 +30,10 @@
30
30
  "@types/resize-observer-browser": "^0.1.7",
31
31
  "browserify": "17.0.0",
32
32
  "onchange": "7.1.0",
33
- "typescript": "4.0.5"
33
+ "typescript": "4.7.3"
34
34
  },
35
35
  "dependencies": {
36
- "date-fns": "2.27.0",
37
- "date-fns-tz": "1.1.6"
36
+ "date-fns": "2.28.0",
37
+ "date-fns-tz": "1.3.4"
38
38
  }
39
39
  }