@nordicsemiconductor/pc-nrfconnect-shared 60.0.0-pre1 → 60.0.0-pre2

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 (232) hide show
  1. package/dist/bootstrap.css +8951 -0
  2. package/dist/index.css +1451 -0
  3. package/dist/index.js +122119 -0
  4. package/{src/Logo/nordic-logo-blue-icon-only.png → dist/nordic-logo-blue-icon-only-H7BABN6D.png} +0 -0
  5. package/{src/Logo/nordic-logo-gray-icon-only.png → dist/nordic-logo-gray-icon-only-GATOTR3L.png} +0 -0
  6. package/package.json +12 -3
  7. package/typings/generated/src/Device/deviceInfo/deviceInfo.d.ts +1 -2
  8. package/.github/ISSUE_TEMPLATE/custom.md +0 -10
  9. package/.husky/pre-push +0 -3
  10. package/.renovaterc.json +0 -10
  11. package/Changelog.md +0 -2973
  12. package/azure-pipelines.yml +0 -34
  13. package/config/eslintrc.js +0 -190
  14. package/config/jest.config.js +0 -41
  15. package/config/prettier.config.js +0 -13
  16. package/config/tsconfig.json +0 -15
  17. package/fw/bootloader/graviton_bootloader_v1.0.1-[nRF5_SDK_15.0.1-1.alpha_f76d012].zip +0 -0
  18. package/jest.config.js +0 -7
  19. package/main/index.ts +0 -32
  20. package/mocks/deviceLibMock.ts +0 -21
  21. package/mocks/electronMock.ts +0 -15
  22. package/mocks/electronStoreMock.ts +0 -19
  23. package/mocks/emptyMock.ts +0 -7
  24. package/mocks/fileMock.ts +0 -13
  25. package/mocks/gaMock.ts +0 -9
  26. package/mocks/mockTests.test.ts +0 -15
  27. package/mocks/packageJsonMock.ts +0 -10
  28. package/mocks/remoteMock.ts +0 -17
  29. package/scripts/esbuild-bootstrap.js +0 -15
  30. package/scripts/esbuild-renderer.js +0 -131
  31. package/scripts/installHusky.ts +0 -17
  32. package/scripts/prepare-shared-release.ts +0 -122
  33. package/scripts/release-shared.test.ts +0 -132
  34. package/scripts/release-shared.ts +0 -207
  35. package/src/About/About.tsx +0 -25
  36. package/src/About/AboutButton.tsx +0 -28
  37. package/src/About/ApplicationCard.tsx +0 -83
  38. package/src/About/DeviceCard.tsx +0 -74
  39. package/src/About/DocumentationCard.tsx +0 -18
  40. package/src/About/DocumentationSection.tsx +0 -24
  41. package/src/About/Section.tsx +0 -21
  42. package/src/About/ShortcutButton.tsx +0 -41
  43. package/src/About/SupportCard.tsx +0 -97
  44. package/src/About/about.scss +0 -40
  45. package/src/About/documentationSlice.ts +0 -41
  46. package/src/About/section.scss +0 -15
  47. package/src/About/shortcutSlice.ts +0 -52
  48. package/src/Alert/Alert.module.scss +0 -29
  49. package/src/Alert/Alert.tsx +0 -37
  50. package/src/App/App.test.tsx +0 -47
  51. package/src/App/App.tsx +0 -227
  52. package/src/App/ConnectedToStore.tsx +0 -19
  53. package/src/App/VisibilityBar.tsx +0 -103
  54. package/src/App/app.scss +0 -83
  55. package/src/App/appLayout.ts +0 -95
  56. package/src/App/shared.scss +0 -49
  57. package/src/App/visibility-bar.scss +0 -55
  58. package/src/Button/Button.tsx +0 -66
  59. package/src/Button/button.module.scss +0 -154
  60. package/src/Card/Card.tsx +0 -26
  61. package/src/Card/card.module.scss +0 -28
  62. package/src/Device/BrokenDeviceDialog/BrokenDeviceDialog.tsx +0 -58
  63. package/src/Device/BrokenDeviceDialog/broken-device-dialog.scss +0 -18
  64. package/src/Device/BrokenDeviceDialog/brokenDeviceDialogSlice.tsx +0 -48
  65. package/src/Device/DeviceSelector/BasicDeviceInfo.tsx +0 -115
  66. package/src/Device/DeviceSelector/DeviceIcon.tsx +0 -27
  67. package/src/Device/DeviceSelector/DeviceList/AnimatedList.tsx +0 -62
  68. package/src/Device/DeviceSelector/DeviceList/BrokenDevice.tsx +0 -34
  69. package/src/Device/DeviceSelector/DeviceList/Device.tsx +0 -84
  70. package/src/Device/DeviceSelector/DeviceList/DeviceList.tsx +0 -113
  71. package/src/Device/DeviceSelector/DeviceList/EditDeviceButtons.tsx +0 -28
  72. package/src/Device/DeviceSelector/DeviceList/MoreDeviceInfo.tsx +0 -65
  73. package/src/Device/DeviceSelector/DeviceList/RenameDevice.tsx +0 -22
  74. package/src/Device/DeviceSelector/DeviceList/broken-device.scss +0 -32
  75. package/src/Device/DeviceSelector/DeviceList/device-list.scss +0 -64
  76. package/src/Device/DeviceSelector/DeviceList/device.scss +0 -28
  77. package/src/Device/DeviceSelector/DeviceList/edit-device-buttons.scss +0 -31
  78. package/src/Device/DeviceSelector/DeviceList/more-device-info.scss +0 -33
  79. package/src/Device/DeviceSelector/DeviceList/rename-device.scss +0 -13
  80. package/src/Device/DeviceSelector/DeviceSelector.test.tsx +0 -342
  81. package/src/Device/DeviceSelector/DeviceSelector.tsx +0 -173
  82. package/src/Device/DeviceSelector/Favorite.tsx +0 -49
  83. package/src/Device/DeviceSelector/SelectDevice.tsx +0 -36
  84. package/src/Device/DeviceSelector/SelectedDevice.tsx +0 -65
  85. package/src/Device/DeviceSelector/arrow-down.svg +0 -1
  86. package/src/Device/DeviceSelector/basic-device-info.scss +0 -62
  87. package/src/Device/DeviceSelector/device-icon.scss +0 -27
  88. package/src/Device/DeviceSelector/favorite.scss +0 -17
  89. package/src/Device/DeviceSelector/select-device.scss +0 -38
  90. package/src/Device/DeviceSelector/selected-device.scss +0 -57
  91. package/src/Device/DeviceSetup/DeviceSetupView.tsx +0 -102
  92. package/src/Device/deviceAutoSelectSlice.ts +0 -144
  93. package/src/Device/deviceInfo/deviceInfo.ts +0 -254
  94. package/src/Device/deviceInfo/nRF51-Series-logo.svg +0 -1
  95. package/src/Device/deviceInfo/nRF52-Series-logo.svg +0 -1
  96. package/src/Device/deviceInfo/nRF53-Series-logo.svg +0 -1
  97. package/src/Device/deviceInfo/nRF70-Series_no-background_RGB.svg +0 -36
  98. package/src/Device/deviceInfo/nRF91-Series-logo.svg +0 -1
  99. package/src/Device/deviceInfo/ppk-logo.svg +0 -1
  100. package/src/Device/deviceInfo/unknown-logo.svg +0 -30
  101. package/src/Device/deviceInfo/unknown-nordic-logo.svg +0 -25
  102. package/src/Device/deviceLibWrapper.test.ts +0 -97
  103. package/src/Device/deviceLibWrapper.ts +0 -133
  104. package/src/Device/deviceLister.test.ts +0 -89
  105. package/src/Device/deviceLister.ts +0 -396
  106. package/src/Device/deviceSetup.ts +0 -264
  107. package/src/Device/deviceSetupSlice.ts +0 -94
  108. package/src/Device/deviceSlice.ts +0 -248
  109. package/src/Device/dfu-cc.ts +0 -162
  110. package/src/Device/initPacket.ts +0 -402
  111. package/src/Device/jprogOperations.ts +0 -206
  112. package/src/Device/sdfuOperations.ts +0 -601
  113. package/src/Dialog/Dialog.test.tsx +0 -134
  114. package/src/Dialog/Dialog.tsx +0 -236
  115. package/src/Dialog/dialog.scss +0 -60
  116. package/src/Dropdown/Dropdown.module.scss +0 -83
  117. package/src/Dropdown/Dropdown.test.tsx +0 -62
  118. package/src/Dropdown/Dropdown.tsx +0 -106
  119. package/src/ErrorBoundary/ErrorBoundary.test.tsx +0 -105
  120. package/src/ErrorBoundary/ErrorBoundary.tsx +0 -186
  121. package/src/ErrorBoundary/bug.svg +0 -1
  122. package/src/ErrorBoundary/error-boundary.scss +0 -102
  123. package/src/ErrorDialog/ErrorDialog.test.tsx +0 -70
  124. package/src/ErrorDialog/ErrorDialog.tsx +0 -94
  125. package/src/ErrorDialog/error.scss +0 -14
  126. package/src/ErrorDialog/errorDialogSlice.test.ts +0 -64
  127. package/src/ErrorDialog/errorDialogSlice.ts +0 -80
  128. package/src/FactoryReset/FactoryResetButton.test.tsx +0 -46
  129. package/src/FactoryReset/FactoryResetButton.tsx +0 -81
  130. package/src/InlineInput/InlineInput.tsx +0 -170
  131. package/src/InlineInput/NumberInlineInput.tsx +0 -107
  132. package/src/InlineInput/inline-input.scss +0 -38
  133. package/src/InlineInput/number-inline-input.scss +0 -15
  134. package/src/Log/LogEntry.tsx +0 -62
  135. package/src/Log/LogViewer.tsx +0 -54
  136. package/src/Log/log-entry.scss +0 -30
  137. package/src/Log/log-viewer.scss +0 -24
  138. package/src/Log/logSlice.ts +0 -73
  139. package/src/Log/syncLogToStore.ts +0 -36
  140. package/src/Logo/Logo.tsx +0 -48
  141. package/src/Logo/logo.scss +0 -11
  142. package/src/Main/Main.tsx +0 -13
  143. package/src/Main/main.scss +0 -13
  144. package/src/MasonryLayout/MasonryLayout.tsx +0 -234
  145. package/src/MasonryLayout/masonryLayout.module.scss +0 -46
  146. package/src/NavBar/NavBar.tsx +0 -22
  147. package/src/NavBar/NavMenu.test.tsx +0 -41
  148. package/src/NavBar/NavMenu.tsx +0 -53
  149. package/src/NavBar/NavMenuItem.tsx +0 -41
  150. package/src/NavBar/nav-bar.scss +0 -26
  151. package/src/NavBar/nav-menu-item.scss +0 -34
  152. package/src/OpenApp/openApp.ts +0 -18
  153. package/src/Panes/FeedbackPane.tsx +0 -149
  154. package/src/PseudoButton/PseudoButton.tsx +0 -56
  155. package/src/PseudoButton/pseudo-button.scss +0 -11
  156. package/src/SerialPort/ConflictingSettingsDialog.tsx +0 -242
  157. package/src/SerialPort/SerialPort.test.ts +0 -54
  158. package/src/SerialPort/SerialPort.ts +0 -202
  159. package/src/Shortcuts/Shortcut-item.scss +0 -33
  160. package/src/Shortcuts/Shortcut-modal.scss +0 -20
  161. package/src/Shortcuts/ShortcutItem.tsx +0 -48
  162. package/src/Shortcuts/ShortcutModal.tsx +0 -67
  163. package/src/SidePanel/Group.tsx +0 -106
  164. package/src/SidePanel/SidePanel.tsx +0 -19
  165. package/src/SidePanel/group.scss +0 -42
  166. package/src/SidePanel/sidepanel.scss +0 -20
  167. package/src/Slider/Bar.tsx +0 -24
  168. package/src/Slider/Factor.test.ts +0 -48
  169. package/src/Slider/Handle.tsx +0 -121
  170. package/src/Slider/Slider.test.tsx +0 -25
  171. package/src/Slider/Slider.tsx +0 -91
  172. package/src/Slider/Ticks.tsx +0 -54
  173. package/src/Slider/__snapshots__/Slider.test.tsx.snap +0 -50
  174. package/src/Slider/bar.scss +0 -24
  175. package/src/Slider/factor.ts +0 -24
  176. package/src/Slider/handle.scss +0 -32
  177. package/src/Slider/percentage.ts +0 -67
  178. package/src/Slider/range.ts +0 -92
  179. package/src/Slider/slider.scss +0 -14
  180. package/src/Slider/ticks.scss +0 -28
  181. package/src/Slider/variables.scss +0 -16
  182. package/src/StartStopButton/StartStopButton.tsx +0 -60
  183. package/src/StartStopButton/play-circle.svg +0 -1
  184. package/src/StartStopButton/start-stop-button.scss +0 -47
  185. package/src/StartStopButton/stop-circle.svg +0 -1
  186. package/src/StateSelector/StateSelector.tsx +0 -64
  187. package/src/StateSelector/state-selector.scss +0 -38
  188. package/src/Stepper/Stepper.tsx +0 -139
  189. package/src/Stepper/stepper.scss +0 -127
  190. package/src/Toggle/Toggle.tsx +0 -120
  191. package/src/Toggle/toggle.scss +0 -109
  192. package/src/bootstrap.scss +0 -14
  193. package/src/index.ts +0 -146
  194. package/src/logging/appTransport.test.ts +0 -78
  195. package/src/logging/appTransport.ts +0 -41
  196. package/src/logging/describeError.test.ts +0 -38
  197. package/src/logging/describeError.ts +0 -56
  198. package/src/logging/index.ts +0 -103
  199. package/src/logging/logBuffer.test.ts +0 -41
  200. package/src/logging/logBuffer.ts +0 -24
  201. package/src/logging/sendInitialLogMessages.ts +0 -64
  202. package/src/store.ts +0 -60
  203. package/src/svg.d.ts +0 -15
  204. package/src/utils/AppTypes.ts +0 -60
  205. package/src/utils/appDirs.ts +0 -78
  206. package/src/utils/bleChannels.ts +0 -16
  207. package/src/utils/classNames.test.ts +0 -29
  208. package/src/utils/classNames.ts +0 -25
  209. package/src/utils/colors.scss +0 -46
  210. package/src/utils/colors.ts +0 -38
  211. package/src/utils/describeVersion.ts +0 -21
  212. package/src/utils/environment.ts +0 -6
  213. package/src/utils/logLibVersions.ts +0 -103
  214. package/src/utils/open.ts +0 -46
  215. package/src/utils/packageJson.ts +0 -60
  216. package/src/utils/persistentStore.ts +0 -144
  217. package/src/utils/systemReport.ts +0 -160
  218. package/src/utils/truncateMiddle.test.ts +0 -21
  219. package/src/utils/truncateMiddle.ts +0 -20
  220. package/src/utils/usageData.ts +0 -189
  221. package/src/utils/useHotKey.ts +0 -62
  222. package/src/utils/useStopwatch.test.tsx +0 -311
  223. package/src/utils/useStopwatch.ts +0 -140
  224. package/src/variables.scss +0 -820
  225. package/styles.scss +0 -88
  226. package/test/dispatchTo.ts +0 -23
  227. package/test/index.ts +0 -7
  228. package/test/jestResolver.js +0 -28
  229. package/test/setupTests.ts +0 -27
  230. package/test/testUtil.ts +0 -20
  231. package/test/testrenderer.tsx +0 -39
  232. /package/{src/Logo/nordic-logo-white-icon-only.png → dist/nordic-logo-white-icon-only-XIZBW537.png} +0 -0
@@ -1,121 +0,0 @@
1
- /*
2
- * Copyright (c) 2015 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- import React, { FC, MouseEventHandler, useRef, useState } from 'react';
8
-
9
- import classNames from '../utils/classNames';
10
- import {
11
- constrainedToPercentage,
12
- fromPercentage,
13
- toPercentage,
14
- } from './percentage';
15
- import { RangeOrValues } from './range';
16
-
17
- import './handle.scss';
18
-
19
- const useAutoupdatingRef = (value: (number: number) => void) => {
20
- const ref = useRef(value);
21
- if (ref.current !== value) ref.current = value;
22
- return ref;
23
- };
24
-
25
- interface Props {
26
- value: number;
27
- disabled: boolean;
28
- range: RangeOrValues;
29
- onChange: (number: number) => void;
30
- onChangeComplete?: () => void;
31
- sliderWidth?: number;
32
- }
33
-
34
- const noop = () => {};
35
- const Handle: FC<Props> = ({
36
- value,
37
- disabled,
38
- range,
39
- onChange,
40
- onChangeComplete = noop,
41
- sliderWidth,
42
- }) => {
43
- const [currentlyDragged, setCurrentlyDragged] = useState(false);
44
- const percentage = toPercentage(value, range);
45
-
46
- const onMouseDragStart = useRef<{
47
- mousePosition: number;
48
- percentage: number;
49
- lastValue: number;
50
- }>();
51
-
52
- // We have to put the callbacks into refs, so that we do not call outdated references later
53
- const onChangeRef = useAutoupdatingRef(onChange);
54
- const onChangeCompleteRef = useAutoupdatingRef(onChangeComplete);
55
-
56
- const grabHandle: MouseEventHandler<HTMLDivElement> = (
57
- event: React.MouseEvent
58
- ) => {
59
- const sliderWidthStillUnknown = sliderWidth == null;
60
- if (sliderWidthStillUnknown) return;
61
-
62
- const mousePosition = event.clientX;
63
- const lastValue = value;
64
- onMouseDragStart.current = { mousePosition, percentage, lastValue };
65
- setCurrentlyDragged(true);
66
-
67
- window.addEventListener('mousemove', dragHandle);
68
- window.addEventListener('mouseup', releaseHandle);
69
- };
70
-
71
- const dragHandle = (event: MouseEvent) => {
72
- const oldMousePosition = onMouseDragStart.current
73
- ?.mousePosition as number;
74
- const newMousePosition = event.clientX;
75
- const percentageChange =
76
- ((oldMousePosition - newMousePosition) * 100) /
77
- (sliderWidth as number);
78
-
79
- const oldPercentage = onMouseDragStart.current?.percentage as number;
80
- const newPercentage = constrainedToPercentage(
81
- oldPercentage - percentageChange
82
- );
83
-
84
- const lastValue = onMouseDragStart.current?.lastValue as number;
85
-
86
- const newValue = fromPercentage(
87
- lastValue,
88
- newPercentage,
89
- range,
90
- event.movementX > 0
91
- );
92
- onMouseDragStart.current = {
93
- mousePosition: oldMousePosition,
94
- percentage: oldPercentage,
95
- lastValue: newValue,
96
- };
97
- onChangeRef.current(newValue);
98
- };
99
-
100
- const releaseHandle = () => {
101
- window.removeEventListener('mousemove', dragHandle);
102
- window.removeEventListener('mouseup', releaseHandle);
103
- setCurrentlyDragged(false);
104
- onChangeCompleteRef.current(0);
105
- };
106
-
107
- return (
108
- <div
109
- className={classNames('handle', currentlyDragged && 'dragged')}
110
- style={{ left: `${percentage}%` }}
111
- onMouseDown={disabled ? noop : grabHandle}
112
- role="slider"
113
- tabIndex={disabled ? -1 : 0}
114
- aria-valuemin={0}
115
- aria-valuemax={100}
116
- aria-valuenow={value}
117
- />
118
- );
119
- };
120
-
121
- export default Handle;
@@ -1,25 +0,0 @@
1
- /*
2
- * Copyright (c) 2022 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- import React from 'react';
8
-
9
- import render from '../../test/testrenderer';
10
- import Slider from './Slider';
11
-
12
- describe('Slider component', () => {
13
- it('renders correct with ticks', () => {
14
- expect(
15
- render(
16
- <Slider
17
- ticks
18
- values={[2]}
19
- range={{ min: 0, max: 5 }}
20
- onChange={[() => {}]}
21
- />
22
- ).baseElement
23
- ).toMatchSnapshot();
24
- });
25
- });
@@ -1,91 +0,0 @@
1
- /*
2
- * Copyright (c) 2015 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- import React, { FC, useEffect } from 'react';
8
- import { useResizeDetector } from 'react-resize-detector';
9
-
10
- import classNames from '../utils/classNames';
11
- import Bar from './Bar';
12
- import Handle from './Handle';
13
- import { toPercentage } from './percentage';
14
- import { getMin, RangeOrValues, useValidatedRangeOrValues } from './range';
15
- import Ticks from './Ticks';
16
-
17
- import './slider.scss';
18
-
19
- const useValidatedArraySizes = (
20
- values: readonly number[],
21
- onChange: ((v: number) => void)[]
22
- ) => {
23
- useEffect(() => {
24
- if (values.length === 0)
25
- console.error('"values" must contain at least on element');
26
- if (values.length !== onChange.length)
27
- console.error(
28
- `Props 'values' and 'onChange' must have the same size but were ${values} and ${onChange}`
29
- );
30
- }, [onChange, values]);
31
- };
32
-
33
- export interface Props {
34
- id?: string;
35
- title?: string;
36
- disabled?: boolean;
37
- values: readonly number[];
38
- range: RangeOrValues;
39
- ticks?: boolean;
40
- onChange: ((v: number) => void)[];
41
- onChangeComplete?: () => void;
42
- }
43
-
44
- const Slider: FC<Props> = ({
45
- id,
46
- title,
47
- disabled = false,
48
- values,
49
- range: rangeOrValues,
50
- ticks,
51
- onChange,
52
- onChangeComplete,
53
- }) => {
54
- useValidatedArraySizes(values, onChange);
55
- useValidatedRangeOrValues(rangeOrValues);
56
-
57
- const { width, ref } = useResizeDetector();
58
-
59
- const valueRange = {
60
- min: values.length === 1 ? getMin(rangeOrValues) : Math.min(...values),
61
- max: Math.max(...values),
62
- };
63
-
64
- return (
65
- <div
66
- className={classNames('slider', disabled && 'disabled')}
67
- id={id}
68
- title={title}
69
- ref={ref as React.MutableRefObject<HTMLDivElement>}
70
- >
71
- <Bar
72
- start={toPercentage(valueRange.min, rangeOrValues)}
73
- end={toPercentage(valueRange.max, rangeOrValues)}
74
- />
75
- {ticks && <Ticks valueRange={valueRange} range={rangeOrValues} />}
76
- {values.map((value, index) => (
77
- <Handle
78
- key={index} // eslint-disable-line react/no-array-index-key
79
- value={value}
80
- range={rangeOrValues}
81
- disabled={disabled}
82
- onChange={onChange[index]}
83
- onChangeComplete={onChangeComplete}
84
- sliderWidth={width}
85
- />
86
- ))}
87
- </div>
88
- );
89
- };
90
-
91
- export default Slider;
@@ -1,54 +0,0 @@
1
- /*
2
- * Copyright (c) 2015 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- import React, { FC, useEffect } from 'react';
8
- import lodashRange from 'lodash.range';
9
-
10
- import classNames from '../utils/classNames';
11
- import { getStep, isValues, RangeOrValues } from './range';
12
-
13
- import './ticks.scss';
14
-
15
- interface Props {
16
- range: RangeOrValues;
17
- valueRange: { min: number; max: number };
18
- }
19
-
20
- const Ticks: FC<Props> = ({ valueRange, range: rangeOrValues }) => {
21
- useEffect(() => {
22
- if (isValues(rangeOrValues)) {
23
- console.error(
24
- 'Ticks are not yet implemented for explicit values. Not showing ticks.'
25
- );
26
- }
27
- }, [rangeOrValues]);
28
-
29
- if (isValues(rangeOrValues)) {
30
- return null;
31
- }
32
-
33
- const range = rangeOrValues;
34
-
35
- const step = getStep(range);
36
- const isSelected = (value: number) =>
37
- value >= valueRange.min && value <= valueRange.max;
38
-
39
- return (
40
- <div className="ticks">
41
- {lodashRange(range.min, range.max + step, step).map(value => (
42
- <div
43
- key={String(value)}
44
- className={classNames(
45
- 'tick',
46
- isSelected(value) && 'selected'
47
- )}
48
- />
49
- ))}
50
- </div>
51
- );
52
- };
53
-
54
- export default Ticks;
@@ -1,50 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`Slider component renders correct with ticks 1`] = `
4
- <body>
5
- <div>
6
- <div
7
- class="slider"
8
- >
9
- <div
10
- class="bar background"
11
- />
12
- <div
13
- class="bar foreground"
14
- style="left: 0%; width: 40%;"
15
- />
16
- <div
17
- class="ticks"
18
- >
19
- <div
20
- class="tick selected"
21
- />
22
- <div
23
- class="tick selected"
24
- />
25
- <div
26
- class="tick selected"
27
- />
28
- <div
29
- class="tick"
30
- />
31
- <div
32
- class="tick"
33
- />
34
- <div
35
- class="tick"
36
- />
37
- </div>
38
- <div
39
- aria-valuemax="100"
40
- aria-valuemin="0"
41
- aria-valuenow="2"
42
- class="handle"
43
- role="slider"
44
- style="left: 40%;"
45
- tabindex="0"
46
- />
47
- </div>
48
- </div>
49
- </body>
50
- `;
@@ -1,24 +0,0 @@
1
- /*
2
- * Copyright (c) 2021 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- @import "./variables";
8
-
9
- .slider .bar {
10
- position: absolute;
11
- top: $handle-radius-selected - 0.5 * $bar-height;
12
- height: $bar-height;
13
- margin: 0 (-$handle-radius);
14
-
15
- &.background {
16
- left: 0;
17
- right: 0;
18
- background-color: $color-unselected;
19
- }
20
-
21
- &.foreground {
22
- background-color: $color-selected;
23
- }
24
- }
@@ -1,24 +0,0 @@
1
- /*
2
- * Copyright (c) 2015 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- // We only care about the decimals of the divisor i.e if divisor has 2 decimal points
8
- // we will only care if the dividend up to 2 decimal points is divisable by the divisor
9
-
10
- export const isFactor = (dividend: number, divisor: number): boolean => {
11
- let exp = 0;
12
- const originalDivisor = divisor;
13
-
14
- while (divisor !== Number(divisor.toFixed(0))) {
15
- divisor = originalDivisor;
16
- exp += 1;
17
- divisor *= 10 ** exp;
18
- }
19
-
20
- divisor = Number(divisor.toFixed(0));
21
- dividend = Number((dividend * 10 ** exp).toFixed(0));
22
-
23
- return dividend % divisor === 0;
24
- };
@@ -1,32 +0,0 @@
1
- /*
2
- * Copyright (c) 2021 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- @import "./variables";
8
-
9
- .slider .handle {
10
- position: absolute;
11
- border-style: solid;
12
- border-radius: 50%;
13
- outline: 0;
14
-
15
- border-color: $color-selected;
16
- border-width: $handle-radius;
17
- top: $handle-radius-selected - $handle-radius;
18
- margin-left: -$handle-radius;
19
-
20
- transition-property: border-color, border-width, top, margin-left;
21
- transition-duration: 100ms;
22
- }
23
-
24
- .slider:not(.disabled) {
25
- .handle:hover, .handle.dragged {
26
- border-width: $handle-radius-selected;
27
- top: 0;
28
- margin-left: -$handle-radius-selected;
29
-
30
- z-index: 1;
31
- }
32
- }
@@ -1,67 +0,0 @@
1
- /*
2
- * Copyright (c) 2015 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- import { getMax, getMin, isValues, RangeOrValues } from './range';
8
-
9
- export const constrainedToPercentage = (percentage: number) => {
10
- if (percentage < 0) return 0;
11
- if (percentage > 100) return 100;
12
- return percentage;
13
- };
14
-
15
- export const toPercentage = (value: number, rangeOrValues: RangeOrValues) => {
16
- const min = getMin(rangeOrValues);
17
- const max = getMax(rangeOrValues);
18
-
19
- return ((value - min) * 100) / (max - min);
20
- };
21
-
22
- export const fromPercentage = (
23
- lastValue: number,
24
- value: number,
25
- rangeOrValues: RangeOrValues,
26
- directionForward: boolean
27
- ) => {
28
- const min = getMin(rangeOrValues);
29
- const max = getMax(rangeOrValues);
30
-
31
- if (isValues(rangeOrValues)) {
32
- const values = rangeOrValues;
33
- const noOfIndexes = values.length - 1;
34
- const computedValue = (value * (max - min)) / 100 + min;
35
-
36
- const lastValueIndex = values.indexOf(lastValue);
37
- const closestPrevIndex = lastValueIndex === 0 ? 0 : lastValueIndex - 1;
38
- const closestNextIndex =
39
- lastValueIndex === noOfIndexes ? noOfIndexes : lastValueIndex + 1;
40
-
41
- let closestIndex = -1;
42
-
43
- if (directionForward) {
44
- closestIndex =
45
- values[closestNextIndex] > computedValue
46
- ? lastValueIndex
47
- : closestNextIndex;
48
- } else {
49
- closestIndex =
50
- values[closestPrevIndex] < computedValue
51
- ? lastValueIndex
52
- : closestPrevIndex;
53
- }
54
-
55
- return values[closestIndex];
56
- }
57
-
58
- const range = rangeOrValues;
59
- if (range.step != null) {
60
- const noOfSteps = (max - min) / range.step;
61
- const closestStep = Math.round((value / 100) * noOfSteps);
62
-
63
- return Number((min + closestStep * range.step).toFixed(range.decimals));
64
- }
65
-
66
- return Number(((value * (max - min)) / 100 + min).toFixed(range.decimals));
67
- };
@@ -1,92 +0,0 @@
1
- /*
2
- * Copyright (c) 2015 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- import { useEffect } from 'react';
8
-
9
- import { isFactor } from './factor';
10
-
11
- export type Values = readonly number[];
12
- export type Range = {
13
- min: number;
14
- max: number;
15
- decimals?: number;
16
- step?: number; // positive number
17
- };
18
-
19
- export type RangeOrValues = Range | Values;
20
-
21
- export const isValues = (
22
- rangeOrValues: RangeOrValues
23
- ): rangeOrValues is Values => Array.isArray(rangeOrValues);
24
-
25
- export const getMin = (rangeOrValues: RangeOrValues) =>
26
- isValues(rangeOrValues) ? rangeOrValues[0] : rangeOrValues.min;
27
-
28
- export const getMax = (rangeOrValues: RangeOrValues) =>
29
- isValues(rangeOrValues)
30
- ? rangeOrValues[rangeOrValues.length - 1]
31
- : rangeOrValues.max;
32
-
33
- export const getStep = (range: Range) =>
34
- range.step != null ? range.step : 0.1 ** (range.decimals ?? 0);
35
-
36
- const assert = (expectedToBeTrue: boolean, warning: string) => {
37
- if (!expectedToBeTrue) {
38
- console.error(warning);
39
- }
40
- };
41
-
42
- const validateValues = (values: Values) => {
43
- for (let i = 0; i < values.length - 1; i += 1) {
44
- assert(
45
- values[i] < values[i + 1],
46
- `The values of the range must be sorted correctly, but ${
47
- values[i]
48
- } is larger then ${values[i + 1]} in ${values}`
49
- );
50
- }
51
- };
52
-
53
- const validateRange = (range: Range) => {
54
- assert(
55
- !(`explicitRange` in range),
56
- 'Using `explicitRange` is not supported anymore, use only an array instead of a range object.'
57
- );
58
-
59
- assert(
60
- range.min < range.max,
61
- `range.min must not be higher than range.max: ${JSON.stringify(range)}`
62
- );
63
-
64
- if (range.decimals != null)
65
- assert(
66
- range.decimals >= 0 && Number.isInteger(range.decimals),
67
- `range.decimals must be non-negative integer but is ${range.decimals}`
68
- );
69
-
70
- if (range.step != null) {
71
- assert(
72
- range.step > 0,
73
- `range.step must be larger than zero but is ${range.step}`
74
- );
75
- assert(
76
- isFactor(range.max - range.min, range.step),
77
- `range.step must be a factor of range.max - range.min: ${JSON.stringify(
78
- range
79
- )}`
80
- );
81
- }
82
- };
83
-
84
- export const useValidatedRangeOrValues = (rangeOrValues: RangeOrValues) => {
85
- useEffect(() => {
86
- if (isValues(rangeOrValues)) {
87
- validateValues(rangeOrValues);
88
- } else {
89
- validateRange(rangeOrValues);
90
- }
91
- }, [rangeOrValues]);
92
- };
@@ -1,14 +0,0 @@
1
- /*
2
- * Copyright (c) 2021 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- @import "./variables";
8
-
9
- .slider {
10
- height: 2*$handle-radius-selected;
11
-
12
- position: relative;
13
- margin: 0 $handle-radius;
14
- }
@@ -1,28 +0,0 @@
1
- /*
2
- * Copyright (c) 2021 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- @import "./variables";
8
-
9
- .slider .ticks {
10
- display: flex;
11
- justify-content: space-between;
12
- margin-right: -$handle-radius;
13
-
14
- .tick {
15
- border-style: solid;
16
- border-radius: 50%;
17
- outline: 0;
18
-
19
- border-color: $color-unselected;
20
- border-width: $tick-radius;
21
- margin-top: $handle-radius-selected - $tick-radius;
22
- margin-left: -$handle-radius;
23
-
24
- &.selected {
25
- border-color: $color-selected;
26
- }
27
- }
28
- }
@@ -1,16 +0,0 @@
1
- /*
2
- * Copyright (c) 2021 Nordic Semiconductor ASA
3
- *
4
- * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
- */
6
-
7
- @import "../variables";
8
-
9
- $bar-height: 2px;
10
- $handle-radius: 6px;
11
- $handle-radius-selected: 8px;
12
-
13
- $tick-radius: 3px;
14
-
15
- $color-selected: $gray-700;
16
- $color-unselected: $gray-200;