@folklore/utils 0.1.2 → 0.1.4

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 (3) hide show
  1. package/dist/cjs.js +30 -7
  2. package/dist/es.js +30 -8
  3. package/package.json +3 -3
package/dist/cjs.js CHANGED
@@ -3,8 +3,7 @@
3
3
  var isString = require('lodash/isString');
4
4
  var pascalCase = require('pascal-case');
5
5
 
6
- function getComponentFromName(components, name) {
7
- let defaultComponentName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
6
+ function getComponentFromName(components, name, defaultComponentName = null) {
8
7
  const defaultComponent = (isString(defaultComponentName) ? components[pascalCase.pascalCase(defaultComponentName)] : defaultComponentName) || null;
9
8
  if (name === null) {
10
9
  return defaultComponent;
@@ -13,13 +12,37 @@ function getComponentFromName(components, name) {
13
12
  return components[componentName] || defaultComponent;
14
13
  }
15
14
 
16
- function getDisplayName(_ref) {
17
- let {
18
- displayName = null,
19
- name = null
20
- } = _ref;
15
+ function getDisplayName({
16
+ displayName = null,
17
+ name = null
18
+ }) {
21
19
  return displayName || name || 'Component';
22
20
  }
23
21
 
22
+ function isTouchScreen() {
23
+ if (typeof navigator === 'undefined') {
24
+ return null;
25
+ }
26
+ let hasTouchScreen = false;
27
+ if ('maxTouchPoints' in navigator) {
28
+ hasTouchScreen = navigator.maxTouchPoints > 0;
29
+ } else if ('msMaxTouchPoints' in navigator) {
30
+ hasTouchScreen = navigator.msMaxTouchPoints > 0;
31
+ } else {
32
+ const mQ = matchMedia?.('(pointer:coarse)');
33
+ if (mQ?.media === '(pointer:coarse)') {
34
+ hasTouchScreen = !!mQ.matches;
35
+ } else if ('orientation' in window) {
36
+ hasTouchScreen = true; // deprecated, but good fallback
37
+ } else {
38
+ // Only as a last resort, fall back to user agent sniffing
39
+ const UA = navigator.userAgent;
40
+ hasTouchScreen = /\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(UA) || /\b(Android|Windows Phone|iPad|iPod)\b/i.test(UA);
41
+ }
42
+ }
43
+ return hasTouchScreen;
44
+ }
45
+
24
46
  exports.getComponentFromName = getComponentFromName;
25
47
  exports.getDisplayName = getDisplayName;
48
+ exports.isTouchScreen = isTouchScreen;
package/dist/es.js CHANGED
@@ -1,8 +1,7 @@
1
1
  import isString from 'lodash/isString';
2
2
  import { pascalCase } from 'pascal-case';
3
3
 
4
- function getComponentFromName(components, name) {
5
- let defaultComponentName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
4
+ function getComponentFromName(components, name, defaultComponentName = null) {
6
5
  const defaultComponent = (isString(defaultComponentName) ? components[pascalCase(defaultComponentName)] : defaultComponentName) || null;
7
6
  if (name === null) {
8
7
  return defaultComponent;
@@ -11,12 +10,35 @@ function getComponentFromName(components, name) {
11
10
  return components[componentName] || defaultComponent;
12
11
  }
13
12
 
14
- function getDisplayName(_ref) {
15
- let {
16
- displayName = null,
17
- name = null
18
- } = _ref;
13
+ function getDisplayName({
14
+ displayName = null,
15
+ name = null
16
+ }) {
19
17
  return displayName || name || 'Component';
20
18
  }
21
19
 
22
- export { getComponentFromName, getDisplayName };
20
+ function isTouchScreen() {
21
+ if (typeof navigator === 'undefined') {
22
+ return null;
23
+ }
24
+ let hasTouchScreen = false;
25
+ if ('maxTouchPoints' in navigator) {
26
+ hasTouchScreen = navigator.maxTouchPoints > 0;
27
+ } else if ('msMaxTouchPoints' in navigator) {
28
+ hasTouchScreen = navigator.msMaxTouchPoints > 0;
29
+ } else {
30
+ const mQ = matchMedia?.('(pointer:coarse)');
31
+ if (mQ?.media === '(pointer:coarse)') {
32
+ hasTouchScreen = !!mQ.matches;
33
+ } else if ('orientation' in window) {
34
+ hasTouchScreen = true; // deprecated, but good fallback
35
+ } else {
36
+ // Only as a last resort, fall back to user agent sniffing
37
+ const UA = navigator.userAgent;
38
+ hasTouchScreen = /\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(UA) || /\b(Android|Windows Phone|iPad|iPod)\b/i.test(UA);
39
+ }
40
+ }
41
+ return hasTouchScreen;
42
+ }
43
+
44
+ export { getComponentFromName, getDisplayName, isTouchScreen };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folklore/utils",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Utilities",
5
5
  "keywords": [
6
6
  "javascript",
@@ -36,12 +36,12 @@
36
36
  "scripts": {
37
37
  "clean": "rm -rf dist",
38
38
  "build": "rollup --bundleConfigAsCjs --config ../../rollup.config.js",
39
- "prepare": "npm run clean && npm run build"
39
+ "prepublishOnly": "npm run clean && npm run build"
40
40
  },
41
41
  "dependencies": {
42
42
  "@babel/runtime": "^7.4.3",
43
43
  "lodash": "^4.17.4",
44
44
  "pascal-case": "^3.1.2"
45
45
  },
46
- "gitHead": "c13ef70b8126b3182b3e3365f34f9231fa9b1535"
46
+ "gitHead": "a04cfaacb364f3b35307d65d8778b078dace4491"
47
47
  }