@24i/bigscreen-sdk 1.0.54-alpha.2836 → 2.1.1-alpha.2133
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/README.md +3 -2
- package/package.json +34 -53
- package/packages/adobe-heartbeat/src/AdobeHeartbeat.ts +9 -9
- package/packages/async-image/src/AsyncImage.tsx +10 -15
- package/packages/developer-tools/PlayerDebugWindow/README.md +1 -1
- package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsList.tsx +0 -11
- package/packages/developer-tools/src/PlayerDebugWindow/PlayerDebugWindow.tsx +5 -5
- package/packages/developer-tools/src/PlayerDebugWindow/constants.ts +0 -15
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoDetail.tsx +1 -2
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +5 -57
- package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +0 -12
- package/packages/developer-tools/src/TechnicalInfo/translations.ts +0 -8
- package/packages/device/src/getKeyDigit.ts +2 -2
- package/packages/device/src/resolver/resolver.ts +5 -18
- package/packages/digital-clock/src/DigitalClock.tsx +4 -15
- package/packages/driver-androidtv/src/DeviceAndroidTV.ts +9 -92
- package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +5 -38
- package/packages/driver-androidtv/src/index.ts +0 -1
- package/packages/driver-androidtv/src/keymap.ts +0 -18
- package/packages/driver-androidtv/src/types.ts +16 -144
- package/packages/driver-base/src/DeviceBase.ts +2 -80
- package/packages/driver-base/src/KeyMap/Key.ts +1 -8
- package/packages/driver-base/src/KeyMap/KeyMap.ts +0 -4
- package/packages/driver-base/src/KeyMap/interface.ts +0 -1
- package/packages/driver-base/src/KeyMap/overrideValues.ts +1 -2
- package/packages/driver-base/src/__mocks__/DeviceBase.ts +0 -24
- package/packages/driver-base/src/__mocks__/keyMap.ts +0 -1
- package/packages/driver-base/src/index.ts +0 -3
- package/packages/driver-base/src/types/DeviceEvent.ts +0 -2
- package/packages/driver-base/src/types/KeycodeKeyMap.ts +0 -1
- package/packages/driver-browser/src/DeviceBrowser.ts +0 -26
- package/packages/driver-browser/src/keymap.ts +0 -8
- package/packages/driver-entone/src/DeviceEntone.ts +1 -31
- package/packages/driver-entone/src/keymap.ts +0 -1
- package/packages/driver-hbbtv/src/DeviceHbbTV.ts +0 -26
- package/packages/driver-kreatv/src/DeviceKreaTV.ts +0 -26
- package/packages/driver-saphi/src/DeviceSaphi.ts +0 -26
- package/packages/driver-tizen/src/DeviceTizen.ts +7 -126
- package/packages/driver-tizen/src/ITizen.ts +202 -15116
- package/packages/driver-tizen/src/IWebapis.ts +87 -8643
- package/packages/driver-tizen/src/TizenKeys.ts +2 -4
- package/packages/driver-tizen/src/__mocks__/tizen.ts +8 -7
- package/packages/driver-tizen/src/constants.ts +195 -1
- package/packages/driver-tizen/src/types.ts +14 -0
- package/packages/driver-vidaa/src/DeviceVidaa.ts +2 -29
- package/packages/driver-vidaa/src/__mocks__/vidaa.ts +1 -1
- package/packages/driver-vidaa/src/keymap.ts +0 -2
- package/packages/driver-webos/src/DeviceWebos.ts +0 -55
- package/packages/driver-webos/src/__mocks__/webos.ts +0 -33
- package/packages/driver-webos/src/constants.ts +0 -1
- package/packages/driver-webos/src/keymap.ts +1 -2
- package/packages/driver-webos/src/types.ts +0 -30
- package/packages/driver-xbox/src/DeviceXbox.ts +1 -30
- package/packages/driver-xbox/src/keymap.ts +1 -1
- package/packages/epg/README.md +1 -3
- package/packages/epg/src/v2/Cell.tsx +2 -16
- package/packages/epg/src/v2/DataManager.ts +41 -112
- package/packages/epg/src/v2/DatePicker.tsx +3 -9
- package/packages/epg/src/v2/DateToast/DateToast.tsx +9 -12
- package/packages/epg/src/v2/Day.tsx +3 -6
- package/packages/epg/src/v2/Epg.tsx +5 -5
- package/packages/epg/src/v2/MockGenerator/generator.ts +2 -3
- package/packages/epg/src/v2/ProgramInfo/utils.ts +3 -4
- package/packages/epg/src/v2/Row.tsx +1 -3
- package/packages/epg/src/v2/TimelineSection.tsx +1 -4
- package/packages/epg/src/v2/basic/CellsManager.tsx +2 -7
- package/packages/epg/src/v2/basic/RowsManager.tsx +1 -3
- package/packages/epg/src/v2/interface.ts +0 -13
- package/packages/events-manager/src/EventsManager.ts +56 -1
- package/packages/focus/README.md +0 -33
- package/packages/focus/src/IFocusable.ts +0 -1
- package/packages/focus/src/Layout/Base.tsx +6 -41
- package/packages/focus/src/Layout/Matrix.tsx +19 -51
- package/packages/focus/src/Layout/__test__/Base.spec.ts +180 -0
- package/packages/focus/src/Layout/__test__/Horizontal.spec.ts +94 -0
- package/packages/focus/src/Layout/__test__/Matrix.spec.ts +261 -0
- package/packages/focus/src/Layout/__test__/Vertical.spec.ts +46 -0
- package/packages/focus/src/Layout/__test__/isRtl.spec.ts +23 -0
- package/packages/focus/src/Layout/__test__/shared.ts +19 -0
- package/packages/focus/src/focusFirstExisting.ts +1 -7
- package/packages/focus/src/index.ts +1 -2
- package/packages/gallup/src/Gallup.ts +3 -3
- package/packages/grid/src/Base/Base.tsx +10 -15
- package/packages/grid/src/FirstOnlyGrid/FirstOnlyGrid.tsx +2 -4
- package/packages/grid/src/UnifiedGridController/UnifiedGridController.ts +6 -6
- package/packages/icon/src/Icon.tsx +5 -27
- package/packages/input/README.md +1 -1
- package/packages/input/src/Input.tsx +10 -16
- package/packages/interactable/README.md +1 -2
- package/packages/interactable/src/Interactable.tsx +3 -9
- package/packages/interactable/src/interface.ts +0 -1
- package/packages/jsx/src/index.ts +1 -1
- package/packages/jsx/src/test-utils/index.ts +0 -1
- package/packages/keyboard/src/Backdrop/Backdrop.scss +0 -2
- package/packages/keyboard/src/KeyboardBase.tsx +4 -16
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.scss +0 -4
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +20 -28
- package/packages/keyboard/src/WhitelabelKeyboard/_sizes.1080.scss +0 -1
- package/packages/keyboard/src/WhitelabelKeyboard/_sizes.scss +0 -1
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/index.ts +0 -12
- package/packages/keyboard/src/WhitelabelKeyboard/types.ts +0 -1
- package/packages/keyboard/src/utils/caret.ts +8 -5
- package/packages/keyboard/src/utils/input.ts +6 -5
- package/packages/l10n/README.md +0 -18
- package/packages/l10n/src/date/common.ts +6 -18
- package/packages/l10n/src/date/cs.ts +8 -2
- package/packages/l10n/src/date/en-001.ts +3 -3
- package/packages/l10n/src/date/en-common.ts +4 -5
- package/packages/l10n/src/date/en-us.ts +3 -3
- package/packages/l10n/src/date/iso.ts +13 -12
- package/packages/l10n/src/date/types.ts +0 -9
- package/packages/l10n/src/l10n.ts +3 -61
- package/packages/list/src/Base/Base.tsx +9 -19
- package/packages/list/src/Base/interface.ts +2 -2
- package/packages/list/src/BasicList/BasicList.tsx +7 -7
- package/packages/list/src/CenteredList/CenteredList.tsx +2 -2
- package/packages/list/src/CenteredList/controller.ts +1 -0
- package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +10 -10
- package/packages/list/src/FirstOnlyList/FirstOnlyList.tsx +2 -2
- package/packages/list/src/FirstOnlyVariedList/FirstOnlyVariedList.tsx +2 -2
- package/packages/list/src/FixedToEndList/FixedToEndList.tsx +2 -2
- package/packages/list/src/UnifiedListController/UnifiedListController.ts +2 -6
- package/packages/list/src/interface.ts +2 -2
- package/packages/logger/src/loggers/ConsoleLogger/ConsoleLogger.ts +1 -7
- package/packages/logger/src/loggers/SentryLogger/Sentry.ts +0 -1
- package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +3 -5
- package/packages/menu/src/MenuAndContentContainer/MenuAndContentContainer.tsx +3 -31
- package/packages/menu/src/MenuAndContentContainer/interface.ts +0 -8
- package/packages/modal-service/README.md +1 -4
- package/packages/modal-service/src/ModalService.tsx +5 -29
- package/packages/perf-utils/README.md +120 -1
- package/packages/perf-utils/src/array/filter.ts +54 -1
- package/packages/perf-utils/src/array/find.ts +43 -1
- package/packages/perf-utils/src/array/findIndex.ts +43 -1
- package/packages/perf-utils/src/array/forEach.ts +48 -1
- package/packages/perf-utils/src/array/includes.ts +41 -1
- package/packages/perf-utils/src/array/includesNaN.ts +32 -1
- package/packages/perf-utils/src/array/index.ts +7 -1
- package/packages/perf-utils/src/array/map.ts +52 -1
- package/packages/player-ui/README.md +1 -1
- package/packages/player-ui/src/CurrentTime.tsx +2 -2
- package/packages/player-ui/src/Duration.tsx +2 -2
- package/packages/player-ui/src/PauseButton.tsx +0 -8
- package/packages/player-ui/src/PlayerInteractable.tsx +0 -1
- package/packages/player-ui/src/PlayerTime.tsx +1 -3
- package/packages/player-ui/src/PlayerUI.tsx +35 -68
- package/packages/player-ui/src/RemainingTime.tsx +2 -2
- package/packages/player-ui/src/Seekbar.tsx +18 -110
- package/packages/player-ui/src/Seeking.ts +16 -57
- package/packages/player-ui/src/Subtitles.tsx +2 -2
- package/packages/player-ui/src/index.ts +0 -1
- package/packages/player-ui/src/mocks.ts +8 -32
- package/packages/player-ui/src/timeUtils.ts +3 -3
- package/packages/player-ui/src/types.ts +3 -9
- package/packages/router/README.md +0 -1
- package/packages/router/src/Route.tsx +27 -61
- package/packages/router/src/Router.tsx +14 -63
- package/packages/router/src/history.ts +1 -8
- package/packages/router/src/index.ts +1 -1
- package/packages/router/src/utils.ts +4 -9
- package/packages/sass-utils/src/linear-gradient.scss +4 -9
- package/packages/sass-utils/src/scale.1080.scss +1 -3
- package/packages/sass-utils/src/scale.720.scss +1 -1
- package/packages/time/README.md +1 -4
- package/packages/time/src/Time.ts +13 -35
- package/packages/time/src/constants.ts +0 -1
- package/packages/toast/src/ToastService.tsx +5 -16
- package/packages/types-bigscreen-jsx/README.md +4 -5
- package/packages/types-bigscreen-jsx/index.d.ts +67 -72
- package/packages/utils/README.md +0 -27
- package/packages/utils/src/elementUtils.ts +0 -25
- package/packages/utils/src/index.ts +0 -8
- package/packages/utils/src/scaledImage.ts +3 -6
- package/packages/utils/src/textUtils.ts +14 -46
- package/packages/utils/src/wait.ts +1 -3
- package/packages/utils/src/xhr/xhrSend.ts +1 -3
- package/packages/utils/src/xhr/xhrSendRetry.ts +1 -3
- package/packages/zapping/src/ChannelZapping.ts +0 -9
- package/packages/zapping/src/Zapping.tsx +0 -10
- package/ci/is_ci_job_skippable.sh +0 -153
- package/packages/analytics/README.md +0 -8
- package/packages/analytics/src/A.ts +0 -1
- package/packages/analytics/src/Analytics.ts +0 -1
- package/packages/analytics/src/analyticsOnScroll.ts +0 -1
- package/packages/analytics/src/clients/ConsoleAnalytics/ConsoleAnalytics.ts +0 -1
- package/packages/analytics/src/clients/ConsoleAnalytics/index.ts +0 -1
- package/packages/analytics/src/clients/GoogleAnalytics/GoogleAnalytics.ts +0 -196
- package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +0 -126
- package/packages/analytics/src/clients/GoogleAnalytics/getUrl.ts +0 -17
- package/packages/analytics/src/clients/GoogleAnalytics/index.ts +0 -2
- package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +0 -82
- package/packages/analytics/src/clients/GoogleAnalytics/mapPayload.ts +0 -51
- package/packages/analytics/src/clients/GoogleAnalytics/prepareBody.ts +0 -14
- package/packages/analytics/src/clients/TealiumAnalytics/TealiumAnalytics.ts +0 -181
- package/packages/analytics/src/clients/TealiumAnalytics/constants.ts +0 -106
- package/packages/analytics/src/clients/TealiumAnalytics/findForLanguage.ts +0 -9
- package/packages/analytics/src/clients/TealiumAnalytics/index.ts +0 -4
- package/packages/analytics/src/clients/TealiumAnalytics/interface.ts +0 -35
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/__mocks__/mediaPayload.ts +0 -72
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/helper.ts +0 -36
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapAppError.ts +0 -13
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapAppOpen.ts +0 -13
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteAdd.ts +0 -11
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteRemove.ts +0 -11
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerClose.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerOpen.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSceneView.ts +0 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearch.ts +0 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchFailed.ts +0 -8
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchSuccess.ts +0 -8
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoPause.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoProgress.ts +0 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoResume.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStart.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStop.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/types.ts +0 -161
- package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +0 -107
- package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +0 -111
- package/packages/analytics/src/clients/TwentyFourIQ/helper.ts +0 -34
- package/packages/analytics/src/clients/TwentyFourIQ/index.ts +0 -2
- package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +0 -34
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdEvent.ts +0 -20
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +0 -24
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +0 -15
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +0 -25
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +0 -17
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +0 -15
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +0 -17
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +0 -22
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +0 -25
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +0 -25
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +0 -34
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +0 -32
- package/packages/analytics/src/clients/TwentyFourIQ/types.ts +0 -132
- package/packages/analytics/src/constants.ts +0 -1
- package/packages/analytics/src/index.ts +0 -3
- package/packages/analytics/src/interface.ts +0 -1
- package/packages/analytics/src/utils/generateSessionId.ts +0 -8
- package/packages/device/src/driver/index.firetv.ts +0 -1
- package/packages/device/src/driver/index.smartcast.tv.ts +0 -1
- package/packages/driver-base/src/types/AdInfo.ts +0 -5
- package/packages/driver-base/src/types/InAppPurchase.ts +0 -25
- package/packages/driver-firetv/src/DeviceFireTV.ts +0 -91
- package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +0 -45
- package/packages/driver-firetv/src/index.ts +0 -1
- package/packages/driver-firetv/src/types.ts +0 -1
- package/packages/driver-smartcast/src/DeviceSmartCast.ts +0 -394
- package/packages/driver-smartcast/src/__mocks__/api.ts +0 -79
- package/packages/driver-smartcast/src/index.ts +0 -1
- package/packages/driver-smartcast/src/keymap.ts +0 -9
- package/packages/driver-smartcast/src/types.ts +0 -111
- package/packages/focus/src/hasFocus.ts +0 -36
- package/packages/jsx/src/test-utils/keyup.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/arabic.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/burmese.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/dari.ts +0 -28
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/korean.ts +0 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/pashto.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/persian.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/russian.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/spanish.ts +0 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/tibetan.ts +0 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/turkish.ts +0 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/ukrainian.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/urdu.ts +0 -26
- package/packages/keyboard/src/utils/setInputSelectionRange.ts +0 -10
- package/packages/l10n/src/date/de.ts +0 -97
- package/packages/l10n/src/date/es.ts +0 -71
- package/packages/l10n/src/date/fr.ts +0 -94
- package/packages/l10n/src/date/he.ts +0 -101
- package/packages/time/src/adapters/24iMediaTimeApi.ts +0 -47
- package/packages/time/src/services/24iMediaTimeApi/24iMediaTimeApi.ts +0 -43
- package/packages/time/src/services/24iMediaTimeApi/index.ts +0 -6
- package/packages/utils/src/forceReflow.ts +0 -14
- package/packages/utils/src/keyPress/index.ts +0 -6
- package/packages/utils/src/keyPress/keyPressSimulator.ts +0 -74
- package/packages/utils/src/keyPress/simulateKeyPress.ts +0 -25
- package/utils/release/release.ts +0 -156
|
@@ -1,26 +1,11 @@
|
|
|
1
|
-
import { format } from 'date-fns';
|
|
2
|
-
import * as fnsLocales from 'date-fns/locale';
|
|
3
1
|
import { EventsManager, IEvents } from '@24i/bigscreen-sdk/events-manager';
|
|
4
|
-
import { csDateFormatter } from './date/cs';
|
|
5
|
-
import { deDateFormatter } from './date/de';
|
|
6
|
-
import { esDateFormatter } from './date/es';
|
|
7
|
-
import { frDateFormatter } from './date/fr';
|
|
8
|
-
import { heDateFormatter } from './date/he';
|
|
9
2
|
import { isoDateFormatter } from './date/iso';
|
|
10
3
|
import { Formatters } from './types';
|
|
11
|
-
import { DateTimeFormatOptions } from './date/types';
|
|
12
4
|
|
|
13
5
|
type Events = {
|
|
14
6
|
'localechange': () => void,
|
|
15
7
|
};
|
|
16
|
-
|
|
17
|
-
type DateFnsConfig = Partial<
|
|
18
|
-
Record<NonNullable<DateTimeFormatOptions['formatType']>, string | null>
|
|
19
|
-
>;
|
|
20
|
-
|
|
21
8
|
class L10n implements IEvents<Events> {
|
|
22
|
-
private dateFnsConfig: DateFnsConfig = {};
|
|
23
|
-
|
|
24
9
|
private readonly events = new EventsManager<Events>();
|
|
25
10
|
|
|
26
11
|
addEventListener = this.events.addEventListener;
|
|
@@ -34,11 +19,6 @@ class L10n implements IEvents<Events> {
|
|
|
34
19
|
private readonly formatters: Formatters = {
|
|
35
20
|
date: {
|
|
36
21
|
iso: isoDateFormatter,
|
|
37
|
-
cs: csDateFormatter,
|
|
38
|
-
fr: frDateFormatter,
|
|
39
|
-
es: esDateFormatter,
|
|
40
|
-
de: deDateFormatter,
|
|
41
|
-
he: heDateFormatter,
|
|
42
22
|
},
|
|
43
23
|
};
|
|
44
24
|
|
|
@@ -53,53 +33,15 @@ class L10n implements IEvents<Events> {
|
|
|
53
33
|
return this.formatters[formatter].iso;
|
|
54
34
|
}
|
|
55
35
|
|
|
56
|
-
init(config: DateFnsConfig) {
|
|
57
|
-
this.dateFnsConfig = config;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
36
|
setLocale(locale: string) {
|
|
61
37
|
if (locale === this.locale) return;
|
|
62
38
|
this.locale = locale;
|
|
63
39
|
this.triggerEvent('localechange');
|
|
64
40
|
}
|
|
65
41
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
fallbackCb: (options?: DateTimeFormatOptions) => string,
|
|
70
|
-
fallbackFormatType?: DateTimeFormatOptions['formatType'],
|
|
71
|
-
) => (
|
|
72
|
-
(options?: DateTimeFormatOptions): string => {
|
|
73
|
-
const { formatType, ...baseOptions } = options || {};
|
|
74
|
-
const dateFnsBsFormat = this.dateFnsConfig?.[formatType || fallbackFormatType!];
|
|
75
|
-
if (!dateFnsBsFormat) {
|
|
76
|
-
if (!options || Object.keys(baseOptions).length === 0) {
|
|
77
|
-
return fallbackCb();
|
|
78
|
-
}
|
|
79
|
-
return fallbackCb(baseOptions);
|
|
80
|
-
}
|
|
81
|
-
return format(
|
|
82
|
-
timestamp,
|
|
83
|
-
dateFnsBsFormat,
|
|
84
|
-
{ locale: fnsLocales[locale as keyof typeof fnsLocales] },
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
date(timestamp: number | Date, locale: string = this.locale) {
|
|
90
|
-
const formatter = this.getFormatterByLocale('date', locale)(timestamp);
|
|
91
|
-
|
|
92
|
-
return {
|
|
93
|
-
toLocaleString: this.getDateFnsFormatter(
|
|
94
|
-
timestamp, locale, formatter.toLocaleString,
|
|
95
|
-
),
|
|
96
|
-
toLocaleTimeString: this.getDateFnsFormatter(
|
|
97
|
-
timestamp, locale, formatter.toLocaleTimeString, 'timeFormat',
|
|
98
|
-
),
|
|
99
|
-
toLocaleDateString: this.getDateFnsFormatter(
|
|
100
|
-
timestamp, locale, formatter.toLocaleDateString, 'dateFormatShort',
|
|
101
|
-
),
|
|
102
|
-
};
|
|
42
|
+
date(timestamp: number | Date, locale?: string) {
|
|
43
|
+
const formatter = this.getFormatterByLocale('date', locale);
|
|
44
|
+
return formatter(timestamp);
|
|
103
45
|
}
|
|
104
46
|
|
|
105
47
|
addFormatter<T extends keyof Formatters, U extends keyof Formatters[T]>(
|
|
@@ -100,13 +100,11 @@ export class ListBase<T extends Item<U>, U>
|
|
|
100
100
|
componentDidMount() {
|
|
101
101
|
this.scrollerDom.current!.addEventListener('wheel', this.onWheel);
|
|
102
102
|
this.scroller.current!.wrapRef.current!.addEventListener('keyup', this.onKeyUp);
|
|
103
|
-
window.document.addEventListener('keyup', this.onGlobalKeyUp, true);
|
|
104
103
|
}
|
|
105
104
|
|
|
106
105
|
componentWillUnmount() {
|
|
107
106
|
this.scrollerDom.current!.removeEventListener('wheel', this.onWheel);
|
|
108
107
|
this.scroller.current!.wrapRef.current!.removeEventListener('keyup', this.onKeyUp);
|
|
109
|
-
window.document.removeEventListener('keyup', this.onGlobalKeyUp, true);
|
|
110
108
|
}
|
|
111
109
|
|
|
112
110
|
onKeyDown = (event: KeyboardEvent) => {
|
|
@@ -132,9 +130,6 @@ export class ListBase<T extends Item<U>, U>
|
|
|
132
130
|
onKeyUp = () => {
|
|
133
131
|
this.stopFastScrolling();
|
|
134
132
|
this.fastFocusingOptimizer.stop();
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
onGlobalKeyUp = () => {
|
|
138
133
|
this.preventBlurCounter = 0;
|
|
139
134
|
};
|
|
140
135
|
|
|
@@ -157,6 +152,14 @@ export class ListBase<T extends Item<U>, U>
|
|
|
157
152
|
}
|
|
158
153
|
};
|
|
159
154
|
|
|
155
|
+
shouldPreventBlur(event: KeyboardEvent) {
|
|
156
|
+
const { horizontal, preventBlurOnLongPress } = this.props;
|
|
157
|
+
return (this.preventBlurCounter >= PREVENT_BLUR_ON_LONG_PRESS_KEYDOWNS && (
|
|
158
|
+
(preventBlurOnLongPress.forward && isForward(event, horizontal))
|
|
159
|
+
|| (preventBlurOnLongPress.backward && isBackward(event, horizontal))
|
|
160
|
+
));
|
|
161
|
+
}
|
|
162
|
+
|
|
160
163
|
getRefAtIndex(i: number): Reference<T> {
|
|
161
164
|
const ref = this.itemRefs[i];
|
|
162
165
|
if (!ref) {
|
|
@@ -198,14 +201,6 @@ export class ListBase<T extends Item<U>, U>
|
|
|
198
201
|
this.fastScrollingCounter.reset();
|
|
199
202
|
}
|
|
200
203
|
|
|
201
|
-
shouldPreventBlur(event: KeyboardEvent) {
|
|
202
|
-
const { horizontal, preventBlurOnLongPress } = this.props;
|
|
203
|
-
return (this.preventBlurCounter >= PREVENT_BLUR_ON_LONG_PRESS_KEYDOWNS && (
|
|
204
|
-
(preventBlurOnLongPress.forward && isForward(event, horizontal))
|
|
205
|
-
|| (preventBlurOnLongPress.backward && isBackward(event, horizontal))
|
|
206
|
-
));
|
|
207
|
-
}
|
|
208
|
-
|
|
209
204
|
animatedScrollStarted() {
|
|
210
205
|
this.isAnimatedScrollRunning = true;
|
|
211
206
|
}
|
|
@@ -365,10 +360,7 @@ export class ListBase<T extends Item<U>, U>
|
|
|
365
360
|
}
|
|
366
361
|
|
|
367
362
|
render() {
|
|
368
|
-
const {
|
|
369
|
-
horizontal, className,
|
|
370
|
-
mrcuMountingPoint, mrcuForward, mrcuBackward, forward, backward,
|
|
371
|
-
} = this.props;
|
|
363
|
+
const { horizontal, className, mrcuMountingPoint } = this.props;
|
|
372
364
|
return (
|
|
373
365
|
<Scroller
|
|
374
366
|
className={className}
|
|
@@ -383,8 +375,6 @@ export class ListBase<T extends Item<U>, U>
|
|
|
383
375
|
ref={this.mrcuRef}
|
|
384
376
|
getMountingPoint={() => mrcuMountingPoint || this.scroller.current!.wrapRef}
|
|
385
377
|
{...this.props}
|
|
386
|
-
forward={mrcuForward || forward}
|
|
387
|
-
backward={mrcuBackward || backward}
|
|
388
378
|
/>
|
|
389
379
|
</Scroller>
|
|
390
380
|
);
|
|
@@ -4,11 +4,11 @@ export type MouseNavigationProps = {
|
|
|
4
4
|
/**
|
|
5
5
|
* Function to call on the press of the right arrow.
|
|
6
6
|
*/
|
|
7
|
-
forward():
|
|
7
|
+
forward(): boolean,
|
|
8
8
|
/**
|
|
9
9
|
* Function to call on the press of the left arrow.
|
|
10
10
|
*/
|
|
11
|
-
backward():
|
|
11
|
+
backward(): boolean,
|
|
12
12
|
/**
|
|
13
13
|
* Function which determines whether to show the forward arrow.
|
|
14
14
|
*/
|
|
@@ -127,34 +127,34 @@ export class BasicList<T extends Item<U>, U>
|
|
|
127
127
|
this.controller.focusCurrentItem(options);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
scrollTo(index: number
|
|
130
|
+
scrollTo(index: number) {
|
|
131
131
|
const list = this.base.current!;
|
|
132
132
|
const safeIndex = Math.max(0, Math.min(index, list.data.length - 1));
|
|
133
133
|
if (list.index === safeIndex) return;
|
|
134
134
|
if (list.index < safeIndex) {
|
|
135
|
-
this.scrollToForward(safeIndex
|
|
135
|
+
this.scrollToForward(safeIndex);
|
|
136
136
|
} else {
|
|
137
|
-
this.scrollToBackward(safeIndex
|
|
137
|
+
this.scrollToBackward(safeIndex);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
private scrollToForward(index: number
|
|
141
|
+
private scrollToForward(index: number) {
|
|
142
142
|
const { visibleItems } = this.props;
|
|
143
143
|
const list = this.base.current!;
|
|
144
144
|
list.index = index;
|
|
145
145
|
const scrollTarget = list.index - visibleItems + VISIBLE_ITEMS_OFFSET;
|
|
146
146
|
if (scrollTarget > this.controller.scrollIndex) {
|
|
147
|
-
this.controller.scroll(scrollTarget
|
|
147
|
+
this.controller.scroll(scrollTarget);
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
private scrollToBackward(index: number
|
|
151
|
+
private scrollToBackward(index: number) {
|
|
152
152
|
const { firstScrollStep, scrollStep } = this.props;
|
|
153
153
|
const list = this.base.current!;
|
|
154
154
|
list.index = index;
|
|
155
155
|
const offset = firstScrollStep < scrollStep ? 1 : 0;
|
|
156
156
|
if (list.index - offset < this.controller.scrollIndex) {
|
|
157
|
-
this.controller.scroll(list.index
|
|
157
|
+
this.controller.scroll(list.index);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -90,12 +90,12 @@ export class CenteredList<T extends Item<U>, U>
|
|
|
90
90
|
this.controller.focusCurrentItem(options);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
scrollTo(index: number
|
|
93
|
+
scrollTo(index: number) {
|
|
94
94
|
const list = this.base.current!;
|
|
95
95
|
const safeIndex = Math.max(0, Math.min(index, list.data.length - 1));
|
|
96
96
|
if (list.index === safeIndex) return;
|
|
97
97
|
list.index = safeIndex;
|
|
98
|
-
this.controller.scroll(list.index
|
|
98
|
+
this.controller.scroll(list.index);
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
render() {
|
|
@@ -30,6 +30,7 @@ export class CenteredListController<T> extends UnifiedListController<T, Props<an
|
|
|
30
30
|
this.scrollListScroller(-this.topOffset);
|
|
31
31
|
if (initialFocusIndex !== 0) {
|
|
32
32
|
base.index = initialFocusIndex!;
|
|
33
|
+
this.focusCurrentItem();
|
|
33
34
|
this.scroll(base.index, false);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
@@ -81,14 +81,14 @@ export class EdgeOffsetList<T extends Item<U>, U>
|
|
|
81
81
|
const list = this.base.current!;
|
|
82
82
|
list.index = Math.max(
|
|
83
83
|
0,
|
|
84
|
-
Math.min(scrollIndex + visibleItems - VISIBLE_ITEMS_OFFSET
|
|
84
|
+
Math.min(scrollIndex + visibleItems - VISIBLE_ITEMS_OFFSET, list.data.length - 1),
|
|
85
85
|
);
|
|
86
86
|
this.forward();
|
|
87
87
|
};
|
|
88
88
|
|
|
89
89
|
mrcuBackward = () => {
|
|
90
90
|
const list = this.base.current!;
|
|
91
|
-
list.index = this.controller.scrollIndex
|
|
91
|
+
list.index = this.controller.scrollIndex;
|
|
92
92
|
this.backward();
|
|
93
93
|
};
|
|
94
94
|
|
|
@@ -120,18 +120,18 @@ export class EdgeOffsetList<T extends Item<U>, U>
|
|
|
120
120
|
this.controller.focusCurrentItem(options);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
scrollTo(index: number
|
|
123
|
+
scrollTo(index: number) {
|
|
124
124
|
const list = this.base.current!;
|
|
125
125
|
const safeIndex = Math.max(0, Math.min(index, list.data.length - 1));
|
|
126
126
|
if (list.index === safeIndex) return;
|
|
127
127
|
if (list.index < safeIndex) {
|
|
128
|
-
this.scrollToForward(safeIndex
|
|
128
|
+
this.scrollToForward(safeIndex);
|
|
129
129
|
} else {
|
|
130
|
-
this.scrollToBackward(safeIndex
|
|
130
|
+
this.scrollToBackward(safeIndex);
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
private scrollToForward(index: number
|
|
134
|
+
private scrollToForward(index: number) {
|
|
135
135
|
const { visibleItems, edgeOffset } = this.props;
|
|
136
136
|
const list = this.base.current!;
|
|
137
137
|
list.index = index;
|
|
@@ -140,16 +140,16 @@ export class EdgeOffsetList<T extends Item<U>, U>
|
|
|
140
140
|
: edgeOffset + list.index - list.data.length - 1;
|
|
141
141
|
const scrollTarget = list.index - visibleItems + offset + VISIBLE_ITEMS_OFFSET;
|
|
142
142
|
if (scrollTarget > this.controller.scrollIndex) {
|
|
143
|
-
this.controller.scroll(scrollTarget
|
|
143
|
+
this.controller.scroll(scrollTarget);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
private scrollToBackward(index: number
|
|
147
|
+
private scrollToBackward(index: number) {
|
|
148
148
|
const { edgeOffset } = this.props;
|
|
149
149
|
const list = this.base.current!;
|
|
150
150
|
list.index = index;
|
|
151
|
-
if (list.index
|
|
152
|
-
this.controller.scroll(list.index < edgeOffset ? 0 : list.index - edgeOffset
|
|
151
|
+
if (list.index < this.controller.scrollIndex) {
|
|
152
|
+
this.controller.scroll(list.index < edgeOffset ? 0 : list.index - edgeOffset);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -96,12 +96,12 @@ export class FirstOnlyList<T extends Item<U>, U>
|
|
|
96
96
|
this.controller.focusCurrentItem(options);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
scrollTo(index: number
|
|
99
|
+
scrollTo(index: number) {
|
|
100
100
|
const list = this.base.current!;
|
|
101
101
|
const safeIndex = Math.max(0, Math.min(index, list.data.length - 1));
|
|
102
102
|
if (list.index === safeIndex) return;
|
|
103
103
|
list.index = safeIndex;
|
|
104
|
-
this.controller.scroll(list.index
|
|
104
|
+
this.controller.scroll(list.index);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
render() {
|
|
@@ -106,12 +106,12 @@ export class FirstOnlyVariedList<T extends Item<U>, U> extends Component<Props<T
|
|
|
106
106
|
this.controller.focusCurrentItem(options);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
scrollTo(index: number
|
|
109
|
+
scrollTo(index: number) {
|
|
110
110
|
const list = this.base.current!;
|
|
111
111
|
const safeIndex = Math.max(0, Math.min(index, list.data.length - 1));
|
|
112
112
|
if (list.index === safeIndex) return;
|
|
113
113
|
list.index = safeIndex;
|
|
114
|
-
this.controller.scroll(0
|
|
114
|
+
this.controller.scroll(0);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
render() {
|
|
@@ -99,12 +99,12 @@ export class FixedToEndList<T extends Item<U>, U>
|
|
|
99
99
|
this.controller.focusCurrentItem(options);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
scrollTo(index: number
|
|
102
|
+
scrollTo(index: number) {
|
|
103
103
|
const list = this.base.current!;
|
|
104
104
|
const safeIndex = Math.max(0, Math.min(index, list.data.length - 1));
|
|
105
105
|
if (list.index === safeIndex) return;
|
|
106
106
|
list.index = safeIndex;
|
|
107
|
-
this.controller.scroll(list.index
|
|
107
|
+
this.controller.scroll(list.index);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
render() {
|
|
@@ -144,16 +144,12 @@ extends SharedProps<any, any> = SharedProps<any, any>>
|
|
|
144
144
|
if (backward) {
|
|
145
145
|
nextScrollIndex = this.scrollPixelsToIndex(scrollValuePx, backward);
|
|
146
146
|
if (this.lastScrollIndex !== nextScrollIndex) {
|
|
147
|
-
|
|
148
|
-
this.adjustItemsOffsetsBackward(i);
|
|
149
|
-
}
|
|
147
|
+
this.adjustItemsOffsetsBackward(nextScrollIndex);
|
|
150
148
|
}
|
|
151
149
|
} else {
|
|
152
150
|
nextScrollIndex = this.scrollPixelsToIndex(scrollValuePx, backward);
|
|
153
151
|
if (this.lastScrollIndex !== nextScrollIndex) {
|
|
154
|
-
|
|
155
|
-
this.adjustItemsOffsetsForward(i);
|
|
156
|
-
}
|
|
152
|
+
this.adjustItemsOffsetsForward(nextScrollIndex);
|
|
157
153
|
}
|
|
158
154
|
}
|
|
159
155
|
this.lastScrollIndex = nextScrollIndex;
|
|
@@ -12,7 +12,7 @@ export interface List<
|
|
|
12
12
|
controller: UnifiedListController<U>,
|
|
13
13
|
appendData(data: U[]): void,
|
|
14
14
|
prependData(data: U[]): void,
|
|
15
|
-
scrollTo(index: number
|
|
15
|
+
scrollTo(index: number): void,
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export interface VariedList<
|
|
@@ -22,7 +22,7 @@ export interface VariedList<
|
|
|
22
22
|
controller: UnifiedVariedListController<U>,
|
|
23
23
|
appendData(data: U[]): void,
|
|
24
24
|
prependData(data: U[]): void,
|
|
25
|
-
scrollTo(index: number
|
|
25
|
+
scrollTo(index: number): void,
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export interface ListComponent<
|
|
@@ -43,13 +43,7 @@ export class ConsoleLogger extends LoggerBase {
|
|
|
43
43
|
let errorMessage = category ? `[${category.toUpperCase()}] ${message}` : message;
|
|
44
44
|
if (additionalData) {
|
|
45
45
|
if (additionalData.message) errorMessage += ` - ${additionalData.message}`;
|
|
46
|
-
|
|
47
|
-
try {
|
|
48
|
-
stringifiedAdditionalData = JSON.stringify(
|
|
49
|
-
additionalData, null, LOG_MESSAGE_SPACE_SIZE,
|
|
50
|
-
);
|
|
51
|
-
} catch {}
|
|
52
|
-
logFunction(errorMessage, stringifiedAdditionalData);
|
|
46
|
+
logFunction(errorMessage, JSON.stringify(additionalData, null, LOG_MESSAGE_SPACE_SIZE));
|
|
53
47
|
} else {
|
|
54
48
|
logFunction(errorMessage);
|
|
55
49
|
}
|
|
@@ -3,7 +3,7 @@ import { IStorage, Storage as DefaultStorage } from '@24i/bigscreen-sdk/storage'
|
|
|
3
3
|
import { LogOptions, LogLevel, SentryLoggerEnvironment, XhrBreadcrumbData } from '../../types';
|
|
4
4
|
import { getFormattedMemoryHeapInfo, getFormattedUsedLocalStorageSize } from '../../utils';
|
|
5
5
|
import { LoggerBase, Config as LoggerBaseConfig } from '../LoggerBase';
|
|
6
|
-
import { Sentry
|
|
6
|
+
import { Sentry } from './Sentry';
|
|
7
7
|
|
|
8
8
|
type Config = {
|
|
9
9
|
sentryOptions: Sentry.BrowserOptions;
|
|
@@ -46,7 +46,7 @@ export class SentryLogger extends LoggerBase {
|
|
|
46
46
|
const { beforeSend, ...restOptions } = options;
|
|
47
47
|
Sentry.init({
|
|
48
48
|
...restOptions,
|
|
49
|
-
beforeSend: async (event:
|
|
49
|
+
beforeSend: async (event: Sentry.Event, hint: Sentry.EventHint) => {
|
|
50
50
|
if (this.mute) return null;
|
|
51
51
|
await this.sendMemoryInfo(event);
|
|
52
52
|
return beforeSend ? beforeSend(event, hint) : event;
|
|
@@ -170,9 +170,7 @@ export class SentryLogger extends LoggerBase {
|
|
|
170
170
|
}
|
|
171
171
|
if (additionalData) {
|
|
172
172
|
if (additionalData.message) logMessage += ` - ${additionalData.message}`;
|
|
173
|
-
|
|
174
|
-
scope.setExtra(contextKeys.ADDITIONAL_DATA, JSON.stringify(additionalData));
|
|
175
|
-
} catch {}
|
|
173
|
+
scope.setExtra(contextKeys.ADDITIONAL_DATA, JSON.stringify(additionalData));
|
|
176
174
|
}
|
|
177
175
|
Sentry.captureMessage(logMessage, level);
|
|
178
176
|
});
|
|
@@ -100,7 +100,7 @@ export class MenuAndContentContainer<T extends string = string>
|
|
|
100
100
|
* Handles opening with mouse.
|
|
101
101
|
* @param event mouse event
|
|
102
102
|
*/
|
|
103
|
-
|
|
103
|
+
onMouseMove = (event: MouseEvent) => {
|
|
104
104
|
const menu = this.menu.current!;
|
|
105
105
|
if (this.isMenuAvailable() && !menu.isOpen()) {
|
|
106
106
|
menu.open();
|
|
@@ -108,30 +108,6 @@ export class MenuAndContentContainer<T extends string = string>
|
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
-
/**
|
|
112
|
-
* Handles hover with mouse.
|
|
113
|
-
* @param event mouse event
|
|
114
|
-
*/
|
|
115
|
-
onMouseEnter = (event: MouseEvent) => {
|
|
116
|
-
const menu = this.menu.current!;
|
|
117
|
-
if (this.isMenuAvailable() && !menu.isOpen() && menu.mrcuEnter) {
|
|
118
|
-
menu.mrcuEnter();
|
|
119
|
-
stopEvent(event);
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Handles hover end with mouse.
|
|
125
|
-
* @param event mouse event
|
|
126
|
-
*/
|
|
127
|
-
onMouseLeave = (event: MouseEvent) => {
|
|
128
|
-
const menu = this.menu.current!;
|
|
129
|
-
if (this.isMenuAvailable() && !menu.isOpen() && menu.mrcuLeave) {
|
|
130
|
-
menu.mrcuLeave();
|
|
131
|
-
stopEvent(event);
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
|
|
135
111
|
/**
|
|
136
112
|
* Handles adding/removing mouse listeners based on whether the mouse is used or not.
|
|
137
113
|
* @param event mouse active event
|
|
@@ -161,9 +137,7 @@ export class MenuAndContentContainer<T extends string = string>
|
|
|
161
137
|
if (!this.listensToMouse) {
|
|
162
138
|
this.listensToMouse = true;
|
|
163
139
|
if (!this.menu.current!.isOpen()) this.mouseTriggerElementDisplayToggler.show();
|
|
164
|
-
this.mouseTriggerElement.current!.addEventListener('
|
|
165
|
-
this.mouseTriggerElement.current!.addEventListener('mouseenter', this.onMouseEnter);
|
|
166
|
-
this.mouseTriggerElement.current!.addEventListener('mouseleave', this.onMouseLeave);
|
|
140
|
+
this.mouseTriggerElement.current!.addEventListener('mousemove', this.onMouseMove);
|
|
167
141
|
}
|
|
168
142
|
}
|
|
169
143
|
|
|
@@ -174,9 +148,7 @@ export class MenuAndContentContainer<T extends string = string>
|
|
|
174
148
|
if (this.listensToMouse) {
|
|
175
149
|
this.listensToMouse = false;
|
|
176
150
|
if (!this.menu.current!.isOpen()) this.mouseTriggerElementDisplayToggler.hide();
|
|
177
|
-
this.mouseTriggerElement.current!.removeEventListener('
|
|
178
|
-
this.mouseTriggerElement.current!.removeEventListener('mouseenter', this.onMouseEnter);
|
|
179
|
-
this.mouseTriggerElement.current!.removeEventListener('mouseleave', this.onMouseLeave);
|
|
151
|
+
this.mouseTriggerElement.current!.removeEventListener('mousemove', this.onMouseMove);
|
|
180
152
|
}
|
|
181
153
|
}
|
|
182
154
|
|
|
@@ -112,14 +112,6 @@ export interface Menu<
|
|
|
112
112
|
* Function to close the menu.
|
|
113
113
|
*/
|
|
114
114
|
close(): void,
|
|
115
|
-
/**
|
|
116
|
-
* Function for "hover" effect on the menu.
|
|
117
|
-
*/
|
|
118
|
-
mrcuEnter?(): void,
|
|
119
|
-
/**
|
|
120
|
-
* Function for ending "hover" effect on the menu.
|
|
121
|
-
*/
|
|
122
|
-
mrcuLeave?(): void,
|
|
123
115
|
/**
|
|
124
116
|
* Renders new menu items.
|
|
125
117
|
* @param items new items to render
|
|
@@ -9,10 +9,7 @@ sidebar_label: Modal Service
|
|
|
9
9
|
A component which helps managing modal windows. Handles rendering and focus management.
|
|
10
10
|
|
|
11
11
|
## Props
|
|
12
|
-
-
|
|
13
|
-
- ```className``` - custom class name for modal service div
|
|
14
|
-
- ```isFocusable``` - whether is modal focusable or not
|
|
15
|
-
- ```onCloseLastModal``` - function called when the last modal is closed
|
|
12
|
+
- ref - the reference to the modal service instance
|
|
16
13
|
|
|
17
14
|
## Provided functionality
|
|
18
15
|
- exports interface which needs to be implemented by the modal component
|
|
@@ -1,36 +1,27 @@
|
|
|
1
|
-
import { Component, createRef, Reference, clearNode
|
|
1
|
+
import { Component, createRef, Reference, clearNode } from '@24i/bigscreen-sdk/jsx';
|
|
2
2
|
import {
|
|
3
3
|
setActiveElementAsFocusCandidate, focusCandidate, refocusAfterHashChange,
|
|
4
4
|
} from '@24i/bigscreen-sdk/focus';
|
|
5
|
-
import { noop } from '@24i/bigscreen-sdk/utils';
|
|
6
5
|
import { IModal } from './IModal';
|
|
7
6
|
import './ModalService.styles';
|
|
8
7
|
|
|
9
8
|
type Props = {
|
|
10
9
|
className?: string;
|
|
11
10
|
isFocusable?: boolean;
|
|
12
|
-
onCloseLastModal?: Function,
|
|
13
11
|
};
|
|
14
12
|
|
|
15
|
-
type RenderFunction = (ref:Reference) => JSX.Element;
|
|
16
|
-
|
|
17
13
|
export class ModalService extends Component<Props> {
|
|
18
14
|
private openState = false;
|
|
19
15
|
|
|
20
16
|
private readonly rootRef = createRef<HTMLDivElement>();
|
|
21
17
|
|
|
22
|
-
private readonly modalQueue: RenderFunction[] = [];
|
|
23
|
-
|
|
24
18
|
modalRef = createRef<any>();
|
|
25
19
|
|
|
26
20
|
static defaultProps = {
|
|
27
21
|
className: '',
|
|
28
22
|
isFocusable: true,
|
|
29
|
-
onCloseLastModal: noop,
|
|
30
23
|
};
|
|
31
24
|
|
|
32
|
-
declare props: DeclareProps<Props, typeof ModalService.defaultProps>;
|
|
33
|
-
|
|
34
25
|
componentDidMount() {
|
|
35
26
|
window.addEventListener('hashchange', this.onHashChange);
|
|
36
27
|
}
|
|
@@ -46,22 +37,10 @@ export class ModalService extends Component<Props> {
|
|
|
46
37
|
};
|
|
47
38
|
|
|
48
39
|
getMountedComponent() {
|
|
49
|
-
return this.modalRef
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
private enqueueModal(modal: RenderFunction) {
|
|
53
|
-
this.modalQueue.push(modal);
|
|
40
|
+
return this.modalRef;
|
|
54
41
|
}
|
|
55
42
|
|
|
56
|
-
|
|
57
|
-
return this.modalQueue.shift();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
open<T extends IModal>(render: (ref: Reference<T>) => JSX.Element, queueModal = false) {
|
|
61
|
-
if (queueModal && this.openState) {
|
|
62
|
-
this.enqueueModal(render);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
43
|
+
open<T extends IModal>(render: (ref: Reference<T>) => JSX.Element) {
|
|
65
44
|
const { isFocusable } = this.props;
|
|
66
45
|
this.openState = true;
|
|
67
46
|
this.clearMount(
|
|
@@ -74,16 +53,13 @@ export class ModalService extends Component<Props> {
|
|
|
74
53
|
}
|
|
75
54
|
}
|
|
76
55
|
|
|
77
|
-
close(
|
|
78
|
-
const { isFocusable
|
|
56
|
+
close() {
|
|
57
|
+
const { isFocusable } = this.props;
|
|
79
58
|
this.openState = false;
|
|
80
59
|
clearNode(this.rootRef);
|
|
81
60
|
if (isFocusable) {
|
|
82
61
|
focusCandidate();
|
|
83
62
|
}
|
|
84
|
-
const modalFromQueue = this.dequeueModal();
|
|
85
|
-
if (modalFromQueue && !ignoreQueue) this.open(modalFromQueue);
|
|
86
|
-
if (!this.modalQueue.length) onCloseLastModal();
|
|
87
63
|
}
|
|
88
64
|
|
|
89
65
|
isOpen() {
|