mirror of https://github.com/laurent22/joplin.git
Mobile: Fix side menu width on wide screen devices (#6662)
parent
fd82758e74
commit
8b06cbf04e
|
@ -920,6 +920,15 @@ packages/app-mobile/components/NoteEditor/types.js.map
|
|||
packages/app-mobile/components/SelectDateTimeDialog.d.ts
|
||||
packages/app-mobile/components/SelectDateTimeDialog.js
|
||||
packages/app-mobile/components/SelectDateTimeDialog.js.map
|
||||
packages/app-mobile/components/SideMenu.d.ts
|
||||
packages/app-mobile/components/SideMenu.js
|
||||
packages/app-mobile/components/SideMenu.js.map
|
||||
packages/app-mobile/components/getResponsiveValue.d.ts
|
||||
packages/app-mobile/components/getResponsiveValue.js
|
||||
packages/app-mobile/components/getResponsiveValue.js.map
|
||||
packages/app-mobile/components/getResponsiveValue.test.d.ts
|
||||
packages/app-mobile/components/getResponsiveValue.test.js
|
||||
packages/app-mobile/components/getResponsiveValue.test.js.map
|
||||
packages/app-mobile/components/screens/ConfigScreen.d.ts
|
||||
packages/app-mobile/components/screens/ConfigScreen.js
|
||||
packages/app-mobile/components/screens/ConfigScreen.js.map
|
||||
|
|
|
@ -909,6 +909,15 @@ packages/app-mobile/components/NoteEditor/types.js.map
|
|||
packages/app-mobile/components/SelectDateTimeDialog.d.ts
|
||||
packages/app-mobile/components/SelectDateTimeDialog.js
|
||||
packages/app-mobile/components/SelectDateTimeDialog.js.map
|
||||
packages/app-mobile/components/SideMenu.d.ts
|
||||
packages/app-mobile/components/SideMenu.js
|
||||
packages/app-mobile/components/SideMenu.js.map
|
||||
packages/app-mobile/components/getResponsiveValue.d.ts
|
||||
packages/app-mobile/components/getResponsiveValue.js
|
||||
packages/app-mobile/components/getResponsiveValue.js.map
|
||||
packages/app-mobile/components/getResponsiveValue.test.d.ts
|
||||
packages/app-mobile/components/getResponsiveValue.test.js
|
||||
packages/app-mobile/components/getResponsiveValue.test.js.map
|
||||
packages/app-mobile/components/screens/ConfigScreen.d.ts
|
||||
packages/app-mobile/components/screens/ConfigScreen.js
|
||||
packages/app-mobile/components/screens/ConfigScreen.js.map
|
||||
|
@ -2206,3 +2215,6 @@ packages/tools/website/utils/types.d.ts
|
|||
packages/tools/website/utils/types.js
|
||||
packages/tools/website/utils/types.js.map
|
||||
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
|
||||
packages/app-mobile/components/get-responsive-value.test.js
|
||||
packages/app-mobile/components/get-responsive-value.test.js
|
||||
packages/app-mobile/components/get-responsive-value.test.js
|
||||
|
|
|
@ -81,6 +81,7 @@
|
|||
"typescript": "4.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
"http-server": "^0.12.3",
|
||||
"node-gyp": "^8.4.1",
|
||||
"nodemon": "^2.0.9"
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
const { connect } = require('react-redux');
|
||||
const SideMenu_ = require('react-native-side-menu-updated').default;
|
||||
import { Dimensions } from 'react-native';
|
||||
import { State } from '@joplin/lib/reducer';
|
||||
|
||||
class SideMenuComponent extends SideMenu_ {
|
||||
onLayoutChange(e: any) {
|
||||
const { width, height } = e.nativeEvent.layout;
|
||||
const openMenuOffsetPercentage = this.props.openMenuOffset / Dimensions.get('window').width;
|
||||
const openMenuOffset = width * openMenuOffsetPercentage;
|
||||
const hiddenMenuOffset = width * this.state.hiddenMenuOffsetPercentage;
|
||||
this.setState({ width, height, openMenuOffset, hiddenMenuOffset });
|
||||
}
|
||||
}
|
||||
|
||||
const SideMenu = connect((state: State) => {
|
||||
return {
|
||||
isOpen: state.showSideMenu,
|
||||
};
|
||||
})(SideMenuComponent);
|
||||
|
||||
export default SideMenu;
|
|
@ -0,0 +1,63 @@
|
|||
import getResponsiveValue, { ValueMap } from './getResponsiveValue';
|
||||
import { Dimensions } from 'react-native';
|
||||
|
||||
type testCase = [ ValueMap, number[] ];
|
||||
|
||||
const testCases: testCase[] = [
|
||||
// [ valueMap, outputs ]
|
||||
[{ sm: 40 }, [40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40]],
|
||||
[{ sm: 40, md: 70 }, [40, 40, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70]],
|
||||
[{ sm: 40, md: 70, lg: 90 }, [40, 40, 70, 70, 70, 90, 90, 90, 90, 90, 90, 90, 90]],
|
||||
[{ sm: 40, md: 70, lg: 90, xl: 110 }, [40, 40, 70, 70, 70, 90, 90, 90, 110, 110, 110, 110, 110]],
|
||||
[{ sm: 40, md: 70, lg: 90, xl: 110, xxl: 130 }, [40, 40, 70, 70, 70, 90, 90, 90, 110, 110, 110, 130, 130]],
|
||||
[{ md: 70 }, [70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70]],
|
||||
[{ lg: 90 }, [90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90]],
|
||||
[{ xl: 110 }, [110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110]],
|
||||
[{ xxl: 130 }, [130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130]],
|
||||
[{ sm: 10, lg: 50 }, [10, 10, 10, 10, 10, 50, 50, 50, 50, 50, 50, 50, 50]],
|
||||
[{ sm: 10, xl: 50 }, [10, 10, 10, 10, 10, 10, 10, 10, 50, 50, 50, 50, 50]],
|
||||
[{ sm: 10, xxl: 50 }, [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 50, 50]],
|
||||
[{ md: 30, lg: 50 }, [30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, 50]],
|
||||
[{ md: 30, xl: 50 }, [30, 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50]],
|
||||
[{ md: 30, xxl: 50 }, [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 50, 50]],
|
||||
[{ xl: 30, xxl: 50 }, [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 50, 50]],
|
||||
];
|
||||
|
||||
describe('getResponsiveValue', () => {
|
||||
|
||||
test('Should throw exception if value map is an empty object', () => {
|
||||
const input = {};
|
||||
expect(() => getResponsiveValue(input)).toThrow('valueMap cannot be an empty object!');
|
||||
});
|
||||
|
||||
test('Should return correct values', () => {
|
||||
const mockReturnValues = [
|
||||
{ width: 400 },
|
||||
{ width: 480 },
|
||||
{ width: 481 },
|
||||
{ width: 600 },
|
||||
{ width: 768 },
|
||||
{ width: 769 },
|
||||
{ width: 900 },
|
||||
{ width: 1024 },
|
||||
{ width: 1025 },
|
||||
{ width: 1115 },
|
||||
{ width: 1200 },
|
||||
{ width: 1201 },
|
||||
{ width: 1300 },
|
||||
];
|
||||
|
||||
for (let i = 0; i < testCases.length; i++) {
|
||||
const input = testCases[i][0];
|
||||
|
||||
for (let j = 0; j < mockReturnValues.length; j++) {
|
||||
// Mock the device width values returned by Dimensions.get() using 'mockReturnValues' for better test coverage
|
||||
Dimensions.get = jest.fn().mockReturnValue(mockReturnValues[j]);
|
||||
const output: number = testCases[i][1][j];
|
||||
expect(getResponsiveValue(input)).toBe(output);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,60 @@
|
|||
// getResponsiveValue() returns the corresponding value for
|
||||
// a particular device screen width based on a valueMap argument
|
||||
// and breakpoints.
|
||||
//
|
||||
// Breakpoints:
|
||||
// sm: < 481px
|
||||
// md: >= 481px
|
||||
// lg: >= 769px
|
||||
// xl: >= 1025px
|
||||
// xxl: >= 1201px
|
||||
//
|
||||
// Eg. [ 10, 15, 20, 25, 30 ] means { sm: 10, md: 15, lg: 20, xl: 25, xxl: 30 }
|
||||
// [10] and [10, 15] are equivalent to { sm: 10 } and { sm: 10, md: 15 } respectively
|
||||
//
|
||||
// More Info: https://discourse.joplinapp.org/t/week-4-report/26117
|
||||
import { Dimensions } from 'react-native';
|
||||
|
||||
export interface ValueMap {
|
||||
// Value to use on small-width displays
|
||||
sm?: number;
|
||||
// Value to use on medium-width displays
|
||||
md?: number;
|
||||
// Value to use on large-width displays
|
||||
lg?: number;
|
||||
// Value to use on extra-large width displays
|
||||
xl?: number;
|
||||
// Value to use on extra-extra-large width displays
|
||||
xxl?: number;
|
||||
}
|
||||
|
||||
export default function getResponsiveValue(valueMap: ValueMap): number {
|
||||
if (Object.keys(valueMap).length === 0) {
|
||||
throw 'valueMap cannot be an empty object!';
|
||||
}
|
||||
|
||||
const width = Dimensions.get('window').width;
|
||||
let value: number;
|
||||
const { sm, md, lg, xl, xxl } = valueMap;
|
||||
|
||||
// This handles cases where certain values are omitted
|
||||
value = sm ?? md ?? lg ?? xl ?? xxl;
|
||||
|
||||
if (width >= 481) {
|
||||
value = md ?? value;
|
||||
}
|
||||
|
||||
if (width >= 769) {
|
||||
value = lg ?? value;
|
||||
}
|
||||
|
||||
if (width >= 1025) {
|
||||
value = xl ?? value;
|
||||
}
|
||||
|
||||
if (width >= 1201) {
|
||||
value = xxl ?? value;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
const { connect } = require('react-redux');
|
||||
const SideMenu_ = require('react-native-side-menu').default;
|
||||
|
||||
class SideMenuComponent extends SideMenu_ {}
|
||||
|
||||
const MySideMenu = connect(state => {
|
||||
return {
|
||||
isOpen: state.showSideMenu,
|
||||
};
|
||||
})(SideMenuComponent);
|
||||
|
||||
module.exports = { SideMenu: MySideMenu };
|
|
@ -1,17 +1,19 @@
|
|||
// Test configuration
|
||||
// See https://jestjs.io/docs/configuration#testenvironment-string
|
||||
module.exports = {
|
||||
preset: 'react-native',
|
||||
|
||||
const config = {
|
||||
preset: 'ts-jest',
|
||||
|
||||
// File extensions for imports, in order of precedence:
|
||||
// prefer importing from .ts or .tsx to importing from .js
|
||||
// files.
|
||||
moduleFileExtensions: [
|
||||
'moduleFileExtensions': [
|
||||
'ts',
|
||||
'tsx',
|
||||
'js',
|
||||
],
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
'transform': {
|
||||
'\\.(ts|tsx)$': 'ts-jest',
|
||||
},
|
||||
|
||||
testMatch: ['**/*.test.(ts|tsx)'],
|
||||
|
||||
testPathIgnorePatterns: ['<rootDir>/node_modules/'],
|
||||
|
||||
slowTestThreshold: 40,
|
||||
};
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
"android": "react-native run-android",
|
||||
"build": "gulp build",
|
||||
"tsc": "tsc --project tsconfig.json",
|
||||
"test": "jest",
|
||||
"test-ci": "yarn test",
|
||||
"watch": "tsc --watch --preserveWatchOutput --project tsconfig.json",
|
||||
"clean": "node tools/clean.js",
|
||||
"buildInjectedJs": "gulp buildInjectedJs",
|
||||
"test": "jest",
|
||||
"test-ci": "yarn test",
|
||||
"watchInjectedJs": "gulp watchInjectedJs",
|
||||
"postinstall": "jetify && yarn run build"
|
||||
},
|
||||
|
@ -55,7 +55,7 @@
|
|||
"react-native-rsa-native": "^2.0.4",
|
||||
"react-native-securerandom": "^1.0.0-rc.0",
|
||||
"react-native-share": "^7.2.1",
|
||||
"react-native-side-menu": "^1.1.3",
|
||||
"react-native-side-menu-updated": "^1.3.2",
|
||||
"react-native-sqlite-storage": "^5.0.0",
|
||||
"react-native-url-polyfill": "^1.3.0",
|
||||
"react-native-vector-icons": "^7.1.0",
|
||||
|
@ -96,7 +96,7 @@
|
|||
"fs-extra": "^8.1.0",
|
||||
"gulp": "^4.0.2",
|
||||
"jest": "^28.1.1",
|
||||
"jest-environment-jsdom": "^28.1.1",
|
||||
"jest-environment-jsdom": "^28.1.3",
|
||||
"jetifier": "^1.6.5",
|
||||
"jsdom": "^20.0.0",
|
||||
"metro-react-native-babel-preset": "^0.66.2",
|
||||
|
|
|
@ -28,7 +28,8 @@ import SyncTargetJoplinServer from '@joplin/lib/SyncTargetJoplinServer';
|
|||
import SyncTargetJoplinCloud from '@joplin/lib/SyncTargetJoplinCloud';
|
||||
import SyncTargetOneDrive from '@joplin/lib/SyncTargetOneDrive';
|
||||
const VersionInfo = require('react-native-version-info').default;
|
||||
const { AppState, Keyboard, NativeModules, BackHandler, Animated, View, StatusBar, Linking, Platform } = require('react-native');
|
||||
const { AppState, Keyboard, NativeModules, BackHandler, Animated, View, StatusBar, Linking, Platform, Dimensions } = require('react-native');
|
||||
import getResponsiveValue from './components/getResponsiveValue';
|
||||
import NetInfo from '@react-native-community/netinfo';
|
||||
const DropdownAlert = require('react-native-dropdownalert').default;
|
||||
const AlarmServiceDriver = require('./services/AlarmServiceDriver').default;
|
||||
|
@ -64,7 +65,7 @@ const { OneDriveLoginScreen } = require('./components/screens/onedrive-login.js'
|
|||
import EncryptionConfigScreen from './components/screens/encryption-config';
|
||||
const { DropboxLoginScreen } = require('./components/screens/dropbox-login.js');
|
||||
const { MenuContext } = require('react-native-popup-menu');
|
||||
const { SideMenu } = require('./components/side-menu.js');
|
||||
import SideMenu from './components/SideMenu';
|
||||
const { SideMenuContent } = require('./components/side-menu-content.js');
|
||||
const { SideMenuContentNote } = require('./components/side-menu-content-note.js');
|
||||
const { DatabaseDriverReactNative } = require('./utils/database-driver-react-native');
|
||||
|
@ -684,6 +685,7 @@ class AppComponent extends React.Component {
|
|||
|
||||
this.state = {
|
||||
sideMenuContentOpacity: new Animated.Value(0),
|
||||
sideMenuWidth: this.getSideMenuWidth(),
|
||||
};
|
||||
|
||||
this.lastSyncStarted_ = defaultState.syncStarted;
|
||||
|
@ -701,6 +703,8 @@ class AppComponent extends React.Component {
|
|||
void this.handleShareData();
|
||||
}
|
||||
};
|
||||
|
||||
this.handleScreenWidthChange_ = this.handleScreenWidthChange_.bind(this);
|
||||
}
|
||||
|
||||
// 2020-10-08: It seems the initialisation code is quite fragile in general and should be kept simple.
|
||||
|
@ -769,6 +773,7 @@ class AppComponent extends React.Component {
|
|||
});
|
||||
|
||||
AppState.addEventListener('change', this.onAppStateChange_);
|
||||
this.unsubscribeScreenWidthChangeHandler_ = Dimensions.addEventListener('change', this.handleScreenWidthChange_);
|
||||
|
||||
await this.handleShareData();
|
||||
|
||||
|
@ -783,6 +788,12 @@ class AppComponent extends React.Component {
|
|||
public componentWillUnmount() {
|
||||
AppState.removeEventListener('change', this.onAppStateChange_);
|
||||
Linking.removeEventListener('url', this.handleOpenURL_);
|
||||
|
||||
if (this.unsubscribeScreenWidthChangeHandler_) {
|
||||
this.unsubscribeScreenWidthChangeHandler_.remove();
|
||||
this.unsubscribeScreenWidthChangeHandler_ = null;
|
||||
}
|
||||
|
||||
if (this.unsubscribeNetInfoHandler_) this.unsubscribeNetInfoHandler_();
|
||||
}
|
||||
|
||||
|
@ -828,6 +839,10 @@ class AppComponent extends React.Component {
|
|||
}
|
||||
}
|
||||
|
||||
private async handleScreenWidthChange_() {
|
||||
this.setState({ sideMenuWidth: this.getSideMenuWidth() });
|
||||
}
|
||||
|
||||
public UNSAFE_componentWillReceiveProps(newProps: any) {
|
||||
if (newProps.syncStarted !== this.lastSyncStarted_) {
|
||||
if (!newProps.syncStarted) FoldersScreenUtils.refreshFolders();
|
||||
|
@ -843,6 +858,18 @@ class AppComponent extends React.Component {
|
|||
});
|
||||
}
|
||||
|
||||
private getSideMenuWidth = () => {
|
||||
const sideMenuWidth = getResponsiveValue({
|
||||
sm: 250,
|
||||
md: 260,
|
||||
lg: 270,
|
||||
xl: 280,
|
||||
xxl: 290,
|
||||
});
|
||||
|
||||
return sideMenuWidth;
|
||||
};
|
||||
|
||||
public render() {
|
||||
if (this.props.appState !== 'ready') return null;
|
||||
const theme = themeStyle(this.props.themeId);
|
||||
|
@ -872,6 +899,7 @@ class AppComponent extends React.Component {
|
|||
Config: { screen: ConfigScreen },
|
||||
};
|
||||
|
||||
|
||||
// const statusBarStyle = theme.appearance === 'light-content';
|
||||
const statusBarStyle = 'light-content';
|
||||
|
||||
|
@ -880,6 +908,7 @@ class AppComponent extends React.Component {
|
|||
<SideMenu
|
||||
menu={sideMenuContent}
|
||||
edgeHitWidth={5}
|
||||
openMenuOffset={this.state.sideMenuWidth}
|
||||
menuPosition={menuPosition}
|
||||
onChange={(isOpen: boolean) => this.sideMenu_change(isOpen)}
|
||||
onSliding={(percent: number) => {
|
||||
|
|
|
@ -5,12 +5,14 @@
|
|||
"**/*.tsx",
|
||||
],
|
||||
"exclude": [
|
||||
//Files that don't need transpilation
|
||||
"**/node_modules",
|
||||
|
||||
// Files that don't need transpilation
|
||||
"gulpfile.ts",
|
||||
"tools/*.ts",
|
||||
"**/*.test.ts",
|
||||
"**/*.test.tsx",
|
||||
"gulpfile.ts",
|
||||
"tools/*.ts",
|
||||
],
|
||||
"compilerOptions": {
|
||||
"types": ["jest", "node"]
|
||||
}
|
||||
}
|
||||
|
|
156
yarn.lock
156
yarn.lock
|
@ -1061,9 +1061,9 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"@babel/compat-data@npm:^7.18.6":
|
||||
version: 7.18.6
|
||||
resolution: "@babel/compat-data@npm:7.18.6"
|
||||
checksum: fd73a1bd7bc29be5528d2ef78248929ed3ee72e0edb69cef6051e0aad0bf8087594db6cd9e981f0d7f5bfc274fdbb77306d8abea8ceb71e95c18afc3ebd81828
|
||||
version: 7.18.8
|
||||
resolution: "@babel/compat-data@npm:7.18.8"
|
||||
checksum: 3096aafad74936477ebdd039bcf342fba84eb3100e608f3360850fb63e1efa1c66037c4824f814d62f439ab47d25164439343a6e92e9b4357024fdf571505eb9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -1135,6 +1135,17 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/generator@npm:^7.18.7":
|
||||
version: 7.18.9
|
||||
resolution: "@babel/generator@npm:7.18.9"
|
||||
dependencies:
|
||||
"@babel/types": ^7.18.9
|
||||
"@jridgewell/gen-mapping": ^0.3.2
|
||||
jsesc: ^2.5.1
|
||||
checksum: 1c271e0c6f33e59f7845d88a1b0b9b0dce88164e80dec9274a716efa54c260e405e9462b160843e73f45382bf5b24d8e160e0121207e480c29b30e2ed0eb16d4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/helper-annotate-as-pure@npm:^7.16.0":
|
||||
version: 7.16.0
|
||||
resolution: "@babel/helper-annotate-as-pure@npm:7.16.0"
|
||||
|
@ -1336,8 +1347,8 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"@babel/helper-module-transforms@npm:^7.18.6":
|
||||
version: 7.18.6
|
||||
resolution: "@babel/helper-module-transforms@npm:7.18.6"
|
||||
version: 7.18.8
|
||||
resolution: "@babel/helper-module-transforms@npm:7.18.8"
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor": ^7.18.6
|
||||
"@babel/helper-module-imports": ^7.18.6
|
||||
|
@ -1345,9 +1356,9 @@ __metadata:
|
|||
"@babel/helper-split-export-declaration": ^7.18.6
|
||||
"@babel/helper-validator-identifier": ^7.18.6
|
||||
"@babel/template": ^7.18.6
|
||||
"@babel/traverse": ^7.18.6
|
||||
"@babel/types": ^7.18.6
|
||||
checksum: 75d90be9ecd314fe2f1b668ce065d7e8b3dff82eddea88480259c5d4bd54f73a909d0998909ffe734a44ba8be85ba233359033071cc800db209d37173bd26db2
|
||||
"@babel/traverse": ^7.18.8
|
||||
"@babel/types": ^7.18.8
|
||||
checksum: 6aaf436d14495050987b9e0b30259ca58b02cc2466edd0c5d6883d92867e2cc2a311afe5815d5e10ef2511af1fb200de0e593f797b25a6d9a2bb49722bc16d95
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -1535,12 +1546,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/parser@npm:^7.18.6":
|
||||
version: 7.18.6
|
||||
resolution: "@babel/parser@npm:7.18.6"
|
||||
"@babel/parser@npm:^7.18.6, @babel/parser@npm:^7.18.8":
|
||||
version: 7.18.8
|
||||
resolution: "@babel/parser@npm:7.18.8"
|
||||
bin:
|
||||
parser: ./bin/babel-parser.js
|
||||
checksum: 533ffc26667b7e2e0d87ae11368d90b6a3a468734d6dfe9c4697c24f48373cf9cc35ee08e416728f087fc56531b68022f752097941feddc60e0223d69a4d4cad
|
||||
checksum: b8426083f753a000bdb4929cb18c6ce5b68c23759245bf123515bf86cacb9f6e7ff61341a6e0d01a779a9a8a826c86062a0f4db424b88b5b51f67e121985d400
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -2265,21 +2276,21 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/traverse@npm:^7.18.6, @babel/traverse@npm:^7.7.2":
|
||||
version: 7.18.6
|
||||
resolution: "@babel/traverse@npm:7.18.6"
|
||||
"@babel/traverse@npm:^7.18.6, @babel/traverse@npm:^7.18.8, @babel/traverse@npm:^7.7.2":
|
||||
version: 7.18.8
|
||||
resolution: "@babel/traverse@npm:7.18.8"
|
||||
dependencies:
|
||||
"@babel/code-frame": ^7.18.6
|
||||
"@babel/generator": ^7.18.6
|
||||
"@babel/generator": ^7.18.7
|
||||
"@babel/helper-environment-visitor": ^7.18.6
|
||||
"@babel/helper-function-name": ^7.18.6
|
||||
"@babel/helper-hoist-variables": ^7.18.6
|
||||
"@babel/helper-split-export-declaration": ^7.18.6
|
||||
"@babel/parser": ^7.18.6
|
||||
"@babel/types": ^7.18.6
|
||||
"@babel/parser": ^7.18.8
|
||||
"@babel/types": ^7.18.8
|
||||
debug: ^4.1.0
|
||||
globals: ^11.1.0
|
||||
checksum: 5427a9db63984b2600f62b257dab18e3fc057997b69d708573bfc88eb5eacd6678fb24fddba082d6ac050734b8846ce110960be841ea1e461d66e2cde72b6b07
|
||||
checksum: c406e01f45f13a666083f6e4ea32d2d5e20ce3a51ea48f6c8fe9d6a0469069f857af06866749959c4396f191393e39e7e6e7b2a8769afca7f50ca1046d6172bd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -2293,13 +2304,23 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/types@npm:^7.18.6, @babel/types@npm:^7.18.7":
|
||||
version: 7.18.7
|
||||
resolution: "@babel/types@npm:7.18.7"
|
||||
"@babel/types@npm:^7.18.6, @babel/types@npm:^7.18.7, @babel/types@npm:^7.18.8":
|
||||
version: 7.18.8
|
||||
resolution: "@babel/types@npm:7.18.8"
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier": ^7.18.6
|
||||
to-fast-properties: ^2.0.0
|
||||
checksum: 3114ce161c4ebcb70271e168aa5af5cecedf3278209161d5ba6124bd3f9cb02e3f3ace587ad1b53f7baa153b6b3714720721c72a9ef3ec451663862f9cc1f014
|
||||
checksum: a485531faa9ff3b83ea94ba6502321dd66e39202c46d7765e4336cb4aff2ff69ebc77d97b17e21331a8eedde1f5490ce00e8a430c1041fc26854d636e6701919
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/types@npm:^7.18.9":
|
||||
version: 7.18.9
|
||||
resolution: "@babel/types@npm:7.18.9"
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier": ^7.18.6
|
||||
to-fast-properties: ^2.0.0
|
||||
checksum: f0e0147267895fd8a5b82133e711ce7ce99941f3ce63647e0e3b00656a7afe48a8aa48edbae27543b701794d2b29a562a08f51f88f41df401abce7c3acc5e13a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -4054,7 +4075,7 @@ __metadata:
|
|||
fs-extra: ^8.1.0
|
||||
gulp: ^4.0.2
|
||||
jest: ^28.1.1
|
||||
jest-environment-jsdom: ^28.1.1
|
||||
jest-environment-jsdom: ^28.1.3
|
||||
jetifier: ^1.6.5
|
||||
joplin-rn-alarm-notification: ^1.0.5
|
||||
jsc-android: 241213.1.0
|
||||
|
@ -4082,7 +4103,7 @@ __metadata:
|
|||
react-native-rsa-native: ^2.0.4
|
||||
react-native-securerandom: ^1.0.0-rc.0
|
||||
react-native-share: ^7.2.1
|
||||
react-native-side-menu: ^1.1.3
|
||||
react-native-side-menu-updated: ^1.3.2
|
||||
react-native-sqlite-storage: ^5.0.0
|
||||
react-native-url-polyfill: ^1.3.0
|
||||
react-native-vector-icons: ^7.1.0
|
||||
|
@ -6422,7 +6443,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/fs-extra@npm:^9.0.11, @types/fs-extra@npm:^9.0.6":
|
||||
"@types/fs-extra@npm:^9.0.11, @types/fs-extra@npm:^9.0.13, @types/fs-extra@npm:^9.0.6":
|
||||
version: 9.0.13
|
||||
resolution: "@types/fs-extra@npm:9.0.13"
|
||||
dependencies:
|
||||
|
@ -6583,13 +6604,13 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"@types/jsdom@npm:^16.2.4":
|
||||
version: 16.2.14
|
||||
resolution: "@types/jsdom@npm:16.2.14"
|
||||
version: 16.2.15
|
||||
resolution: "@types/jsdom@npm:16.2.15"
|
||||
dependencies:
|
||||
"@types/node": "*"
|
||||
"@types/parse5": "*"
|
||||
"@types/parse5": ^6.0.3
|
||||
"@types/tough-cookie": "*"
|
||||
checksum: 12bb926fa74ea07c0ba0bfd5bf185ac0fd771b28666a5e8784b9af4bb96bb0c51fc5f494eff7da1d3cd804e4757f640a23c344c1cd5d188f95ab0ab51770d88b
|
||||
checksum: e038335321bef42ebf220aaf597e186e2eec8de6107ce7a70de1c046a84c1fbb42d454e195a20383a6870b18c7ef6fa6b73812a626f88a4a2ef1f711d2e2e13c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -6810,7 +6831,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/parse5@npm:*":
|
||||
"@types/parse5@npm:*, @types/parse5@npm:^6.0.3":
|
||||
version: 6.0.3
|
||||
resolution: "@types/parse5@npm:6.0.3"
|
||||
checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7
|
||||
|
@ -10412,9 +10433,9 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"caniuse-lite@npm:^1.0.30001359":
|
||||
version: 1.0.30001363
|
||||
resolution: "caniuse-lite@npm:1.0.30001363"
|
||||
checksum: 8dfcb2fa97724349cbbe61d988810bd90bfb40106a289ed6613188fa96dd1f5885c7e9924e46bb30a641bd1579ec34096fdc2b21b47d8500f8a2bfb0db069323
|
||||
version: 1.0.30001365
|
||||
resolution: "caniuse-lite@npm:1.0.30001365"
|
||||
checksum: 5d043006e9bd9de1ae06c0e12c31997f0ed26f889f47ea6403dc2d08f46a5bd4bf0fe1a5b1099561fc447201ddf13083f277de68829e77fd238ff2af8c05e0a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -14235,9 +14256,9 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"electron-to-chromium@npm:^1.4.172":
|
||||
version: 1.4.184
|
||||
resolution: "electron-to-chromium@npm:1.4.184"
|
||||
checksum: 9bcbe2b2405d9907fa40fc1472074cf591027de1dc447c3f3c6a2a6fa7d4525c68d0943e66054e55f57b5b15e83c2e10521fe9c1481e4322f28ff9e5b240fd53
|
||||
version: 1.4.186
|
||||
resolution: "electron-to-chromium@npm:1.4.186"
|
||||
checksum: 9f87db963070473702c0a999dc4066fdd12abff0b2b98dfae1c7492b62fe3feb42bae64ff7fd837e4e347dab043a411e82cab64ada902726b782c60bf9fc40de
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -20467,22 +20488,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-environment-jsdom@npm:^28.1.1":
|
||||
version: 28.1.2
|
||||
resolution: "jest-environment-jsdom@npm:28.1.2"
|
||||
dependencies:
|
||||
"@jest/environment": ^28.1.2
|
||||
"@jest/fake-timers": ^28.1.2
|
||||
"@jest/types": ^28.1.1
|
||||
"@types/jsdom": ^16.2.4
|
||||
"@types/node": "*"
|
||||
jest-mock: ^28.1.1
|
||||
jest-util: ^28.1.1
|
||||
jsdom: ^19.0.0
|
||||
checksum: 73388b5cde4ce4b49cdb36746211b46c416a75b070837faefd4c907fe5095b2a7b197f753e10ee110c4b8f43571ffc277b65b3ca48f01ec0fbc74525274a19fc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-environment-jsdom@npm:^28.1.3":
|
||||
version: 28.1.3
|
||||
resolution: "jest-environment-jsdom@npm:28.1.3"
|
||||
|
@ -21220,21 +21225,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-util@npm:^28.0.0, jest-util@npm:^28.1.1":
|
||||
version: 28.1.1
|
||||
resolution: "jest-util@npm:28.1.1"
|
||||
dependencies:
|
||||
"@jest/types": ^28.1.1
|
||||
"@types/node": "*"
|
||||
chalk: ^4.0.0
|
||||
ci-info: ^3.2.0
|
||||
graceful-fs: ^4.2.9
|
||||
picomatch: ^2.2.3
|
||||
checksum: bca1601099d6a4c3c4ba997b8c035a698f23b9b04a0a284a427113f7d0399f7402ba9f4d73812328e6777bf952bf93dfe3d3edda6380a6ca27cdc02768d601e0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-util@npm:^28.1.3":
|
||||
"jest-util@npm:^28.0.0, jest-util@npm:^28.1.3":
|
||||
version: 28.1.3
|
||||
resolution: "jest-util@npm:28.1.3"
|
||||
dependencies:
|
||||
|
@ -21248,6 +21239,20 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-util@npm:^28.1.1":
|
||||
version: 28.1.1
|
||||
resolution: "jest-util@npm:28.1.1"
|
||||
dependencies:
|
||||
"@jest/types": ^28.1.1
|
||||
"@types/node": "*"
|
||||
chalk: ^4.0.0
|
||||
ci-info: ^3.2.0
|
||||
graceful-fs: ^4.2.9
|
||||
picomatch: ^2.2.3
|
||||
checksum: bca1601099d6a4c3c4ba997b8c035a698f23b9b04a0a284a427113f7d0399f7402ba9f4d73812328e6777bf952bf93dfe3d3edda6380a6ca27cdc02768d601e0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-validate@npm:^26.5.2, jest-validate@npm:^26.6.2":
|
||||
version: 26.6.2
|
||||
resolution: "jest-validate@npm:26.6.2"
|
||||
|
@ -25162,9 +25167,9 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"node-releases@npm:^2.0.5":
|
||||
version: 2.0.5
|
||||
resolution: "node-releases@npm:2.0.5"
|
||||
checksum: e85d949addd19f8827f32569d2be5751e7812ccf6cc47879d49f79b5234ff4982225e39a3929315f96370823b070640fb04d79fc0ddec8b515a969a03493a42f
|
||||
version: 2.0.6
|
||||
resolution: "node-releases@npm:2.0.6"
|
||||
checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -28116,12 +28121,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-native-side-menu@npm:^1.1.3":
|
||||
version: 1.1.3
|
||||
resolution: "react-native-side-menu@npm:1.1.3"
|
||||
"react-native-side-menu-updated@npm:^1.3.2":
|
||||
version: 1.3.2
|
||||
resolution: "react-native-side-menu-updated@npm:1.3.2"
|
||||
dependencies:
|
||||
prop-types: ^15.5.10
|
||||
checksum: 8064708149c964bddfef345e61c64639fd219bcd8da2d14acb3031bcd572f6951b088e1dfbbb0cf40717e117ba894e5d30eb628be629875360c1d374e1e05077
|
||||
checksum: 5d7ae7d2b372c80d9f7a3472f945daa6c11b43f00193ebec92fdb40ee853e86f522686736aa6a510a4fb09479c8eb7e4f14b53ad117d7e23749cd58c3c9d6cb7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -29490,6 +29495,7 @@ __metadata:
|
|||
resolution: "root@workspace:."
|
||||
dependencies:
|
||||
"@seiyab/eslint-plugin-react-hooks": ^4.5.1-alpha.5
|
||||
"@types/fs-extra": ^9.0.13
|
||||
"@typescript-eslint/eslint-plugin": ^4.6.0
|
||||
"@typescript-eslint/parser": ^4.6.0
|
||||
cspell: ^5.20.0
|
||||
|
|
Loading…
Reference in New Issue