@terraware/web-components 3.5.12-rc.7 → 3.5.12

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 (230) hide show
  1. package/components/AntSwitch/index.js +27 -0
  2. package/components/AntSwitch/styles.scss +66 -0
  3. package/components/Autocomplete/Autocomplete.js +131 -0
  4. package/components/Autocomplete/styles.scss +155 -0
  5. package/components/Badge/index.js +32 -0
  6. package/components/BusySpinner/index.js +49 -0
  7. package/components/Button/Button.js +51 -0
  8. package/components/Button/button.test.js +25 -0
  9. package/components/Button/styles.scss +453 -0
  10. package/components/Checkbox.js +70 -0
  11. package/components/Confirm/index.js +94 -0
  12. package/components/DatePicker/DatePicker.js +150 -0
  13. package/components/DatePicker/styles.scss +95 -0
  14. package/components/DialogBox/DialogBox.js +91 -0
  15. package/components/DialogBox/styles.scss +165 -0
  16. package/components/Divisor.js +21 -0
  17. package/components/Dropdown.js +102 -0
  18. package/components/ErrorBox/ErrorBox.js +47 -0
  19. package/components/ErrorBox/styles.scss +63 -0
  20. package/components/FileChooser/index.js +137 -0
  21. package/components/FormBottomBar/index.js +90 -0
  22. package/components/Icon/Icon.js +25 -0
  23. package/components/Icon/icons/index.js +241 -0
  24. package/components/Icon/styles.scss +41 -0
  25. package/components/IconTooltip/index.js +61 -0
  26. package/components/Map/MapBox.d.ts.map +1 -1
  27. package/components/Map/MapBox.js +479 -0
  28. package/components/Map/MapContainer.js +30 -0
  29. package/components/Map/MapDateSliderControl.js +66 -0
  30. package/components/Map/MapDrawer.js +45 -0
  31. package/components/Map/MapLegend.js +172 -0
  32. package/components/Map/MapViewStyleControl.js +74 -0
  33. package/components/Map/ReactMapboxWrapper.d.ts +3 -0
  34. package/components/Map/ReactMapboxWrapper.d.ts.map +1 -0
  35. package/components/Map/ReactMapboxWrapper.js +9 -0
  36. package/components/Map/index.js +190 -0
  37. package/components/Map/styles.scss +130 -0
  38. package/components/Map/types.js +24 -0
  39. package/components/Map/useMaintainLayerOrder.js +32 -0
  40. package/components/Message/Message.js +67 -0
  41. package/components/Message/styles.scss +202 -0
  42. package/components/MultiSelect/MultiSelect.test.js +75 -0
  43. package/components/MultiSelect/index.js +120 -0
  44. package/components/MultiSelect/styles.scss +180 -0
  45. package/components/Navbar/NavFooter.js +17 -0
  46. package/components/Navbar/NavItem.js +73 -0
  47. package/components/Navbar/NavSection.js +22 -0
  48. package/components/Navbar/Navbar.js +46 -0
  49. package/components/Navbar/SubNavbar.js +17 -0
  50. package/components/Navbar/styles.scss +155 -0
  51. package/components/Note.js +25 -0
  52. package/components/PageForm/index.js +43 -0
  53. package/components/PhotoChooser/index.js +137 -0
  54. package/components/Pill/index.js +46 -0
  55. package/components/Pill/styles.scss +50 -0
  56. package/components/PillList/index.js +29 -0
  57. package/components/PillList/styles.scss +12 -0
  58. package/components/PlacementWrapper/index.js +63 -0
  59. package/components/PopoverMenu/Popover.js +88 -0
  60. package/components/PopoverMenu/index.js +59 -0
  61. package/components/PopoverMultiSelect/index.js +62 -0
  62. package/components/PopoverMultiSelect/styles.scss +10 -0
  63. package/components/ProgressCircle/ProgressCircle.js +34 -0
  64. package/components/ProgressCircle/styles.scss +87 -0
  65. package/components/RadioButton.js +25 -0
  66. package/components/Select/Select.js +19 -0
  67. package/components/Select/SelectT.js +245 -0
  68. package/components/Select/styles.scss +307 -0
  69. package/components/Separator/index.js +21 -0
  70. package/components/Size.js +5 -0
  71. package/components/Slider/index.js +60 -0
  72. package/components/SummaryBox.js +73 -0
  73. package/components/Tabs/index.js +111 -0
  74. package/components/TextTruncated/index.js +146 -0
  75. package/components/Textfield/Textfield.js +172 -0
  76. package/components/Textfield/TruncatedTextArea.js +71 -0
  77. package/components/Textfield/styles.scss +271 -0
  78. package/components/Tooltip/Tooltip.js +54 -0
  79. package/components/ViewPhotosDialog/index.js +136 -0
  80. package/components/ViewPhotosDialog/styles.scss +18 -0
  81. package/components/svg/BlobbyGrayIconImage.js +39 -0
  82. package/components/svg/BlobbyGrayIconImport.js +39 -0
  83. package/components/svg/BlobbyGrayIconUploadToTheCloud.js +39 -0
  84. package/components/svg/BlobbyIconCloudChecked.js +156 -0
  85. package/components/svg/BlobbyIconExportOrUploadPhoto.js +156 -0
  86. package/components/svg/BlobbyIconFolder.js +156 -0
  87. package/components/svg/BlobbyIconGraphReport.js +156 -0
  88. package/components/svg/BlobbyIconHappy.js +156 -0
  89. package/components/svg/BlobbyIconHeartMonitor.js +156 -0
  90. package/components/svg/BlobbyIconLeaf.js +156 -0
  91. package/components/svg/BlobbyIconLibrary.js +156 -0
  92. package/components/svg/BlobbyIconNursery.js +158 -0
  93. package/components/svg/BlobbyIconOrganization.js +156 -0
  94. package/components/svg/BlobbyIconParchment.js +156 -0
  95. package/components/svg/BlobbyIconPeople.js +156 -0
  96. package/components/svg/BlobbyIconSeedBank.js +156 -0
  97. package/components/svg/BlobbyIconSeedling.js +156 -0
  98. package/components/svg/BlobbyIconSeeds.js +156 -0
  99. package/components/svg/BlobbyIconSite.js +159 -0
  100. package/components/svg/BlobbyIconSparkles.js +156 -0
  101. package/components/svg/BlobbyIconWrench.js +156 -0
  102. package/components/svg/Bug.js +25 -0
  103. package/components/svg/Calendar.js +25 -0
  104. package/components/svg/CaretDown.js +25 -0
  105. package/components/svg/CaretLeft.js +25 -0
  106. package/components/svg/CaretRight.js +25 -0
  107. package/components/svg/CaretUp.js +25 -0
  108. package/components/svg/ChevronDown.js +25 -0
  109. package/components/svg/ChevronUp.js +25 -0
  110. package/components/svg/Close.js +25 -0
  111. package/components/svg/Critical.js +25 -0
  112. package/components/svg/Edit.js +156 -0
  113. package/components/svg/Error.js +25 -0
  114. package/components/svg/Filter.js +25 -0
  115. package/components/svg/Folder.js +25 -0
  116. package/components/svg/Help.js +25 -0
  117. package/components/svg/Home.js +25 -0
  118. package/components/svg/IconAdd.js +25 -0
  119. package/components/svg/IconArrowRight.js +27 -0
  120. package/components/svg/IconBusinessNetwork.js +25 -0
  121. package/components/svg/IconCancel.js +25 -0
  122. package/components/svg/IconChargingBattery.js +25 -0
  123. package/components/svg/IconCheckmark.js +25 -0
  124. package/components/svg/IconCoinInHand.js +25 -0
  125. package/components/svg/IconColumns.js +25 -0
  126. package/components/svg/IconComment.js +26 -0
  127. package/components/svg/IconDashboard.js +25 -0
  128. package/components/svg/IconDataMigration.js +25 -0
  129. package/components/svg/IconEdit.js +27 -0
  130. package/components/svg/IconExport.js +25 -0
  131. package/components/svg/IconExternalLink.js +25 -0
  132. package/components/svg/IconEye.js +25 -0
  133. package/components/svg/IconEyeOff.js +25 -0
  134. package/components/svg/IconFile.js +25 -0
  135. package/components/svg/IconFolder.js +25 -0
  136. package/components/svg/IconFullScreen.js +26 -0
  137. package/components/svg/IconFutures.js +25 -0
  138. package/components/svg/IconGraphReport.js +25 -0
  139. package/components/svg/IconHeartMonitor.js +25 -0
  140. package/components/svg/IconHelp.js +27 -0
  141. package/components/svg/IconHistory.js +25 -0
  142. package/components/svg/IconImport.js +25 -0
  143. package/components/svg/IconIndex.js +25 -0
  144. package/components/svg/IconLayers.js +25 -0
  145. package/components/svg/IconLibrary.js +26 -0
  146. package/components/svg/IconList.js +25 -0
  147. package/components/svg/IconLivePlant.js +25 -0
  148. package/components/svg/IconLocations.js +25 -0
  149. package/components/svg/IconMail.js +25 -0
  150. package/components/svg/IconManager.js +25 -0
  151. package/components/svg/IconMarker.js +25 -0
  152. package/components/svg/IconMenu.js +25 -0
  153. package/components/svg/IconMenuHorizontal.js +25 -0
  154. package/components/svg/IconModule.js +25 -0
  155. package/components/svg/IconMyLocation.js +25 -0
  156. package/components/svg/IconNote.js +27 -0
  157. package/components/svg/IconNursery.js +27 -0
  158. package/components/svg/IconOrg.js +25 -0
  159. package/components/svg/IconParchment.js +25 -0
  160. package/components/svg/IconPhoto.js +25 -0
  161. package/components/svg/IconRedo.js +25 -0
  162. package/components/svg/IconRestorationSite.js +25 -0
  163. package/components/svg/IconSeedBank.js +25 -0
  164. package/components/svg/IconSeedling.js +25 -0
  165. package/components/svg/IconSettings.js +25 -0
  166. package/components/svg/IconSlice.js +25 -0
  167. package/components/svg/IconSubmit.js +25 -0
  168. package/components/svg/IconSubtract.js +27 -0
  169. package/components/svg/IconSynced.js +25 -0
  170. package/components/svg/IconTrashCan.js +25 -0
  171. package/components/svg/IconTreasureMap.js +25 -0
  172. package/components/svg/IconUndo.js +25 -0
  173. package/components/svg/IconVariable.js +25 -0
  174. package/components/svg/IconWifi.js +25 -0
  175. package/components/svg/Info.js +25 -0
  176. package/components/svg/Key.js +25 -0
  177. package/components/svg/Leaf.js +25 -0
  178. package/components/svg/Lock.js +25 -0
  179. package/components/svg/Logo.js +43 -0
  180. package/components/svg/MenuVertical.js +25 -0
  181. package/components/svg/Notification.js +25 -0
  182. package/components/svg/Person.js +25 -0
  183. package/components/svg/Plus.js +25 -0
  184. package/components/svg/RestorationSite.js +25 -0
  185. package/components/svg/Search.js +25 -0
  186. package/components/svg/Seeds.js +25 -0
  187. package/components/svg/Site.js +25 -0
  188. package/components/svg/Sparkles.js +25 -0
  189. package/components/svg/Species.js +25 -0
  190. package/components/svg/Species2.js +156 -0
  191. package/components/svg/Spinner.js +52 -0
  192. package/components/svg/Success.js +25 -0
  193. package/components/svg/SuccessFilled.js +25 -0
  194. package/components/svg/TerrawareLogoDesktop.js +49 -0
  195. package/components/svg/TerrawareLogoMobile.js +30 -0
  196. package/components/svg/Touchscreen.js +25 -0
  197. package/components/svg/UploadCloud.js +156 -0
  198. package/components/svg/Warning.js +25 -0
  199. package/components/svg/WelcomeClipboard.js +133 -0
  200. package/components/svg/index.js +832 -0
  201. package/components/table/EnhancedTableToolbar.js +76 -0
  202. package/components/table/EnhancedTableToolbarV2.js +49 -0
  203. package/components/table/TableCellRenderer.js +244 -0
  204. package/components/table/TableHeader.js +75 -0
  205. package/components/table/TableHeaderItem.js +100 -0
  206. package/components/table/density.js +28 -0
  207. package/components/table/index.js +346 -0
  208. package/components/table/sort.js +72 -0
  209. package/components/table/sort.test.js +37 -0
  210. package/components/table/types.js +5 -0
  211. package/components/types/index.js +5 -0
  212. package/fonts/Inter.ttf +0 -0
  213. package/index.css +11 -0
  214. package/index.js +377 -0
  215. package/package.json +2 -5
  216. package/setupTests.js +5 -0
  217. package/style-dictionary-dist/TerrawareTheme.js +193 -0
  218. package/style-dictionary-dist/terraware.scss +414 -0
  219. package/theme.js +86 -0
  220. package/utils/date.js +124 -0
  221. package/utils/date.test.js +87 -0
  222. package/utils/index.js +53 -0
  223. package/utils/preventDefaultEvent.js +8 -0
  224. package/utils/text.js +17 -0
  225. package/utils/text.test.js +23 -0
  226. package/utils/useDeviceInfo.js +85 -0
  227. package/index.cjs.js +0 -88606
  228. package/index.cjs.js.map +0 -1
  229. package/index.esm.js +0 -88533
  230. package/index.esm.js.map +0 -1
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _luxon = require("luxon");
5
+ var _date = _interopRequireWildcard(require("./date"));
6
+ test('isInTheFuture should handle date ISO string and specified time zones', () => {
7
+ expect((0, _date.isInTheFuture)('2023-01-10', 'Asia/Bangkok')).toBe(false);
8
+ expect((0, _date.isInTheFuture)('2023-01-10', 'America/Los_Angeles')).toBe(false);
9
+ expect((0, _date.isInTheFuture)('3023-01-10', 'America/Los_Angeles')).toBe(true);
10
+ });
11
+ test('isInTheFuture should handle date ISO string and default time zone', () => {
12
+ expect((0, _date.isInTheFuture)('2023-01-10')).toBe(false);
13
+ expect((0, _date.isInTheFuture)('3023-01-10')).toBe(true);
14
+ });
15
+ test('isInTheFuture should handle millis and specified time zones', () => {
16
+ expect((0, _date.isInTheFuture)(Date.now(), 'Asia/Bangkok')).toBe(false);
17
+ expect((0, _date.isInTheFuture)(new Date('3023-01-10').getTime(), 'Asia/Bangkok')).toBe(true);
18
+ });
19
+ test('isInTheFuture should handle millis and default time zone', () => {
20
+ expect((0, _date.isInTheFuture)(Date.now())).toBe(false);
21
+ expect((0, _date.isInTheFuture)(new Date('3023-01-10').getTime())).toBe(true);
22
+ });
23
+ test('isInTheFuture should handle JS Date object and specified time zones', () => {
24
+ expect((0, _date.isInTheFuture)(new Date(), 'Asia/Bangkok')).toBe(false);
25
+ expect((0, _date.isInTheFuture)(new Date('3023-01-10'), 'Asia/Bangkok')).toBe(true);
26
+ });
27
+ test('isInTheFuture should handle JS Date object and default time zone', () => {
28
+ expect((0, _date.isInTheFuture)(new Date())).toBe(false);
29
+ expect((0, _date.isInTheFuture)(new Date('3023-01-10'))).toBe(true);
30
+ });
31
+ test('isInTheFuture should handle DateTime object and specified time zones', () => {
32
+ expect((0, _date.isInTheFuture)(_luxon.DateTime.now(), 'Asia/Bangkok')).toBe(false);
33
+ expect((0, _date.isInTheFuture)(_luxon.DateTime.fromISO('3023-01-10'), 'Asia/Bangkok')).toBe(true);
34
+ // check that a DateTime with preset zone is a no-op
35
+ expect((0, _date.isInTheFuture)(_luxon.DateTime.now().setZone('Asia/Bangkok'), 'Asia/Bangkok')).toBe(false);
36
+ expect((0, _date.isInTheFuture)(_luxon.DateTime.fromISO('3023-01-10').setZone('Asia/Bangkok'), 'Asia/Bangkok')).toBe(true);
37
+ });
38
+ test('isInTheFuture should handle JS Date object and default time zone', () => {
39
+ expect((0, _date.isInTheFuture)(_luxon.DateTime.now())).toBe(false);
40
+ expect((0, _date.isInTheFuture)(_luxon.DateTime.fromISO('3023-01-10'))).toBe(true);
41
+ });
42
+ test('should show todays date formatted for a time zone', () => {
43
+ const formatted = (0, _date.getTodaysDateFormatted)('Asia/Bangkok');
44
+ expect(!!formatted.match(/\d\d\d\d-\d\d-\d\d/)).toBe(true);
45
+ });
46
+ test('should show todays date formatted for default time zone', () => {
47
+ const formatted = (0, _date.getTodaysDateFormatted)();
48
+ expect(!!formatted.match(/\d\d\d\d-\d\d-\d\d/)).toBe(true);
49
+ });
50
+ test('should return valid date display value for ISO date string with time zones', () => {
51
+ expect((0, _date.default)('2021-08-05T19:39:16Z', 'America/Los_Angeles')).toBe('2021-08-05');
52
+ expect((0, _date.default)('2021-08-05T19:39:16Z', 'Asia/Bangkok')).toBe('2021-08-06');
53
+ });
54
+ test('should return valid date display value for ISO date string with default time zone', () => {
55
+ expect((0, _date.default)('2021-08-05T19:39:16Z')).toBe('2021-08-05');
56
+ });
57
+ test('should return valid date display value for default date ISO string with time zones', () => {
58
+ expect((0, _date.default)('2021-08-05', 'America/Los_Angeles')).toBe('2021-08-05');
59
+ expect((0, _date.default)('2021-08-05', 'Asia/Bangkok')).toBe('2021-08-05');
60
+ });
61
+ test('should return valid date display value for default date string with default time zone', () => {
62
+ expect((0, _date.default)('2021-08-05')).toBe('2021-08-05');
63
+ });
64
+ test('should return valid date display value for millis with default time zone', () => {
65
+ expect((0, _date.default)(new Date('2021-08-05T19:39:16Z').getTime())).toBe('2021-08-05');
66
+ });
67
+ test('should return valid date display value for JS Date object with default time zone', () => {
68
+ expect((0, _date.default)(new Date('2021-08-05T19:39:16Z'))).toBe('2021-08-05');
69
+ });
70
+ test('should return valid date display value for DateTime object with default time zone', () => {
71
+ expect((0, _date.default)(_luxon.DateTime.fromISO('2021-08-05T19:39:16Z'))).toBe('2021-08-05');
72
+ });
73
+ test('should return valid date display value for millis with time zones', () => {
74
+ expect((0, _date.default)(new Date('2021-08-05T19:39:16Z').getTime(), 'America/Los_Angeles')).toBe('2021-08-05');
75
+ expect((0, _date.default)(new Date('2021-08-05T19:39:16Z').getTime(), 'Asia/Bangkok')).toBe('2021-08-06');
76
+ });
77
+ test('should return valid date display value for JS Date object with time zones', () => {
78
+ expect((0, _date.default)(new Date('2021-08-05T19:39:16Z'), 'America/Los_Angeles')).toBe('2021-08-05');
79
+ expect((0, _date.default)(new Date('2021-08-05T19:39:16Z'), 'Asia/Bangkok')).toBe('2021-08-06');
80
+ });
81
+ test('should return valid date display value for DateTime object with time zones', () => {
82
+ expect((0, _date.default)(_luxon.DateTime.fromISO('2021-08-05T19:39:16Z'), 'America/Los_Angeles')).toBe('2021-08-05');
83
+ expect((0, _date.default)(_luxon.DateTime.fromISO('2021-08-05T19:39:16Z'), 'Asia/Bangkok')).toBe('2021-08-06');
84
+ // check that a DateTime with preset zone is a no-op
85
+ expect((0, _date.default)(_luxon.DateTime.fromISO('2021-08-05T19:39:16Z').setZone('America/Los_Angeles'), 'America/Los_Angeles')).toBe('2021-08-05');
86
+ expect((0, _date.default)(_luxon.DateTime.fromISO('2021-08-05T19:39:16Z').setZone('America/Los_Angeles'), 'Asia/Bangkok')).toBe('2021-08-06');
87
+ });
package/utils/index.js ADDED
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "getDate", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _date.getDate;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "getDateDisplayValue", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _date.default;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "getTodaysDateFormatted", {
21
+ enumerable: true,
22
+ get: function () {
23
+ return _date.getTodaysDateFormatted;
24
+ }
25
+ });
26
+ Object.defineProperty(exports, "isInTheFuture", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _date.isInTheFuture;
30
+ }
31
+ });
32
+ Object.defineProperty(exports, "isWhitespaces", {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _text.default;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "preventDefaultEvent", {
39
+ enumerable: true,
40
+ get: function () {
41
+ return _preventDefaultEvent.default;
42
+ }
43
+ });
44
+ Object.defineProperty(exports, "useDeviceInfo", {
45
+ enumerable: true,
46
+ get: function () {
47
+ return _useDeviceInfo.default;
48
+ }
49
+ });
50
+ var _date = _interopRequireWildcard(require("./date"));
51
+ var _preventDefaultEvent = _interopRequireDefault(require("./preventDefaultEvent"));
52
+ var _text = _interopRequireDefault(require("./text"));
53
+ var _useDeviceInfo = _interopRequireDefault(require("./useDeviceInfo"));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ const preventDefault = event => event.preventDefault();
8
+ var _default = exports.default = preventDefault;
package/utils/text.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.titleCase = exports.default = void 0;
7
+ const isWhitespaces = str => str.match(/^\s+$/);
8
+ const titleCase = str => str.split(' ').map(word => {
9
+ if (word !== word.toUpperCase()) {
10
+ const lowerCaseWord = word.toLowerCase();
11
+ return lowerCaseWord.replace(lowerCaseWord.charAt(0), lowerCaseWord.charAt(0).toUpperCase());
12
+ } else {
13
+ return word;
14
+ }
15
+ }).join(' ');
16
+ exports.titleCase = titleCase;
17
+ var _default = exports.default = isWhitespaces;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _text = require("./text");
4
+ test('titleCase for a single word', () => {
5
+ const lowerCaseWord = (0, _text.titleCase)('species');
6
+ expect(lowerCaseWord === 'Species').toBe(true);
7
+ const capitalizedWord = (0, _text.titleCase)('Species');
8
+ expect(capitalizedWord === 'Species').toBe(true);
9
+ const allCapsWord = (0, _text.titleCase)('SPECIES');
10
+ expect(allCapsWord === 'SPECIES').toBe(true);
11
+ const reverseCapWord = (0, _text.titleCase)('sPECIES');
12
+ expect(reverseCapWord === 'Species').toBe(true);
13
+ });
14
+ test('titleCase for multiple words', () => {
15
+ const lowerCaseString = (0, _text.titleCase)('common name');
16
+ expect(lowerCaseString === 'Common Name').toBe(true);
17
+ const capitalizedString = (0, _text.titleCase)('Common Name');
18
+ expect(capitalizedString === 'Common Name').toBe(true);
19
+ const allCapsString = (0, _text.titleCase)('common NAME');
20
+ expect(allCapsString === 'Common NAME').toBe(true);
21
+ const reverseCapString = (0, _text.titleCase)('cOMMON nAME');
22
+ expect(reverseCapString === 'Common Name').toBe(true);
23
+ });
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactResponsive = require("react-responsive");
8
+ /**
9
+ * Device widths categorized for our purposes.
10
+ * Device widths
11
+ * desktop width > 1023
12
+ * tablet width = 1023 - 768
13
+ * mobile width = < 768
14
+ */
15
+
16
+ /**
17
+ * This function returns properties on device type.
18
+ *
19
+ * {
20
+ * type: 'desktop' | 'tablet' | 'mobile',
21
+ * orientation: 'portrait' | 'landscape',
22
+ * isDesktop: <boolean>,
23
+ * isTablet: <boolean>,
24
+ * isMobile: <boolean>,
25
+ * isRetina: <boolean>,
26
+ * }
27
+ *
28
+ * Clients can use whichever properties they see fit.
29
+ *
30
+ * This function also acceps a callback function to be called
31
+ * if there's a change in any of our interested device properties.
32
+ */
33
+
34
+ const useDeviceInfo = function () {
35
+ let {
36
+ onChange
37
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
38
+ const deviceChangeCallback = matches => {
39
+ if (matches && onChange) {
40
+ onChange();
41
+ }
42
+ };
43
+ const isDesktop = (0, _reactResponsive.useMediaQuery)({
44
+ minWidth: 1024
45
+ }, undefined, deviceChangeCallback);
46
+ const isTablet = (0, _reactResponsive.useMediaQuery)({
47
+ maxWidth: 1023,
48
+ minWidth: 768
49
+ }, undefined, deviceChangeCallback);
50
+ const isMobile = (0, _reactResponsive.useMediaQuery)({
51
+ maxWidth: 767
52
+ }, undefined, deviceChangeCallback);
53
+ const isPortrait = (0, _reactResponsive.useMediaQuery)({
54
+ orientation: 'portrait'
55
+ }, undefined, deviceChangeCallback);
56
+ const isRetina = (0, _reactResponsive.useMediaQuery)({
57
+ query: '(min-resolution: 2dppx)'
58
+ }, undefined, deviceChangeCallback);
59
+ const getDeviceType = () => {
60
+ if (isTablet) {
61
+ return 'tablet';
62
+ }
63
+ if (isMobile) {
64
+ return 'mobile';
65
+ }
66
+ return 'desktop';
67
+ };
68
+ const getDeviceOrientation = () => {
69
+ if (isPortrait) {
70
+ return 'portrait';
71
+ }
72
+ return 'landscape';
73
+ };
74
+ return {
75
+ type: getDeviceType(),
76
+ orientation: getDeviceOrientation(),
77
+ isRetina,
78
+ isDesktop,
79
+ isTablet,
80
+ isMobile,
81
+ isPortrait,
82
+ isLandscape: !isPortrait
83
+ };
84
+ };
85
+ var _default = exports.default = useDeviceInfo;