@24i/bigscreen-sdk 1.0.4-alpha.2098 → 1.0.4-alpha.2106
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/package.json +5 -5
- package/packages/create-package/dist/createPackage.js +66 -0
- package/packages/create-package/dist/createPackage.js.map +1 -0
- package/packages/create-package/dist/index.js +5 -0
- package/packages/create-package/dist/index.js.map +1 -0
- package/packages/create-package/dist/questionnaire/questions.js +35 -0
- package/packages/create-package/dist/questionnaire/questions.js.map +1 -0
- package/packages/create-package/dist/settings/Settings.js +10 -0
- package/packages/create-package/dist/settings/Settings.js.map +1 -0
- package/packages/create-package/dist/types.js +3 -0
- package/packages/create-package/dist/types.js.map +1 -0
- package/packages/developer-tools/src/EnvironmentSelection/EnvironmentList.tsx +7 -12
- package/packages/developer-tools/src/EnvironmentSelection/EnvironmentListItem.tsx +27 -14
- package/packages/developer-tools/src/EnvironmentSelection/sizes.1080.ts +3 -7
- package/packages/developer-tools/src/EnvironmentSelection/sizes.ts +3 -7
- package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.scss +24 -4
- package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.1080.scss +1 -1
- package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.scss +2 -2
- package/packages/driver-base/src/loadObject.ts +1 -1
- package/packages/focus/src/Layout/Base.tsx +0 -1
- package/packages/focus/src/Layout/Horizontal.ts +3 -13
- package/packages/focus/src/Layout/Matrix.tsx +24 -3
- package/packages/focus/src/Layout/__test__/isRtl.spec.ts +23 -0
- package/packages/focus/src/Layout/isRtl.ts +12 -0
- package/packages/focus/src/Layout/types.ts +1 -0
- package/packages/jsx/src/forwardRef.ts +2 -2
- package/packages/keyboard/src/AndroidKeyboard/Keyboard.tsx +7 -0
- package/packages/keyboard/src/DefaultKeyboard/Keyboard.tsx +1 -0
- package/packages/keyboard/src/KeyboardBase.tsx +1 -0
- package/packages/keyboard/src/MobiKeyboard/Keyboard.tsx +11 -0
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +9 -0
- package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.tsx +3 -0
- package/packages/mouse-navigation/src/ArrowNavigation/index.tsx +1 -1
- package/packages/rnv-build-engine/dist/src/constants/buildSchemes.js +14 -0
- package/packages/rnv-build-engine/dist/src/constants/index.js +7 -0
- package/packages/rnv-build-engine/dist/src/constants/platforms.js +14 -0
- package/packages/rnv-build-engine/dist/src/engine.js +94 -0
- package/packages/rnv-build-engine/dist/src/index.js +26 -0
- package/packages/rnv-build-engine/dist/src/resolvers/index.js +29 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveBaseUrl.js +31 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveBuildFileExtension.js +12 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveBuildFileName.js +36 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveBuildVersion.js +42 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveBuildVersionOffset.js +34 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveDeployLocations.js +79 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveGenericRnvConfig.js +47 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveHbbtvDeployConfig.js +13 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveHbbtvDeployUrl.js +11 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveHbbtvRemoteBuildDirRelativePath.js +24 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveSupportedPlatforms.js +5 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveUsedFlavours.js +23 -0
- package/packages/rnv-build-engine/dist/src/resolvers/resolveZippedPlatformBuildsRelativeFilePath.js +14 -0
- package/packages/rnv-build-engine/dist/src/scripts/buildAllWithScheme.js +25 -0
- package/packages/rnv-build-engine/dist/src/scripts/generateDeployUrls/formatTableDataSpaces.js +30 -0
- package/packages/rnv-build-engine/dist/src/scripts/generateDeployUrls/generateDeployUrls.js +90 -0
- package/packages/rnv-build-engine/dist/src/scripts/generateDeployUrls/index.js +4 -0
- package/packages/rnv-build-engine/dist/src/scripts/generateDeployUrls/makeTableDataByScheme.js +63 -0
- package/packages/rnv-build-engine/dist/src/scripts/gitReleaser/afterVersionBump.js +18 -0
- package/packages/rnv-build-engine/dist/src/scripts/gitReleaser/beforeVersionBump.js +12 -0
- package/packages/rnv-build-engine/dist/src/scripts/gitReleaser/checkReleaseNotes.js +16 -0
- package/packages/rnv-build-engine/dist/src/scripts/gitReleaser/pushRelease.js +31 -0
- package/packages/rnv-build-engine/dist/src/scripts/gitReleaser/pushReleaseCandidate.js +6 -0
- package/packages/rnv-build-engine/dist/src/scripts/gitReleaser/pushReleaseNotes.js +37 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/deleteSourceMaps.js +11 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/deployToAppCenter.js +83 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/githubRelease.js +128 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/notifySlack/generateWebhoook.js +65 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/notifySlack/makePayload.js +85 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/notifySlack/notifySlack.js +44 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/notifySlack/slackBlockKitBuilder.js +39 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/sentryRelease.js +85 -0
- package/packages/rnv-build-engine/dist/src/scripts/release/urlsMarkdown.js +62 -0
- package/packages/rnv-build-engine/dist/src/scripts/releaseAllWithScheme.js +79 -0
- package/packages/rnv-build-engine/dist/src/scripts/utils/cmdUtils.js +12 -0
- package/packages/rnv-build-engine/dist/src/scripts/utils/fsUtils.js +33 -0
- package/packages/rnv-build-engine/dist/src/scripts/utils/generateIcons.js +29 -0
- package/packages/rnv-build-engine/dist/src/scripts/utils/gitUtils.js +78 -0
- package/packages/rnv-build-engine/dist/src/scripts/utils/index.js +27 -0
- package/packages/rnv-build-engine/dist/src/scripts/utils/stringUtils.js +5 -0
- package/packages/rnv-build-engine/dist/src/sdks/index.js +42 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-tizen/index.js +13 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-tizen/sdkTizen.js +168 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/index.js +14 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/registerSdkPath.js +14 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/sdk-installer/index.js +5 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/sdk-installer/sdkInstaller.js +37 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/sdk-installer/services/clean.js +11 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/sdk-installer/services/download.js +76 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/sdk-installer/services/index.js +11 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/sdk-installer/services/install.js +23 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-utils/sdk-installer/services/unzip.js +12 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-webos/index.js +13 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-webos/sdkWebos.js +80 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-webpack/index.js +13 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-webpack/sdkWebpack.js +6 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-xbox/index.js +13 -0
- package/packages/rnv-build-engine/dist/src/sdks/sdk-xbox/sdkXbox.js +221 -0
- package/packages/rnv-build-engine/dist/src/tasks/deploy/aswS3/aws.js +22 -0
- package/packages/rnv-build-engine/dist/src/tasks/deploy/aswS3/deployS3.js +71 -0
- package/packages/rnv-build-engine/dist/src/tasks/deploy/hbbtv/deployHbbtv.js +94 -0
- package/packages/rnv-build-engine/dist/src/tasks/engineTasks.js +24 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.build.js +91 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.configure.js +42 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.configureSoft.js +30 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.deploy.js +40 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.hooks.run.js +70 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.package.js +18 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.platform.configure.js +37 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.project.configure.js +116 -0
- package/packages/rnv-build-engine/dist/src/tasks/task.rnv.start.js +73 -0
- package/packages/rnv-build-engine/dist/src/types/c.js +2 -0
- package/packages/rnv-build-engine/dist/src/types/constants.js +2 -0
- package/packages/rnv-build-engine/dist/src/types/index.js +2 -0
- package/packages/rnv-build-engine/dist/src/utils/forEachSupportedPlatformFlavour.js +24 -0
- package/packages/rnv-build-engine/dist/src/utils/generatePngSpriteMap.js +78 -0
- package/packages/rnv-build-engine/dist/src/utils/generateSvgSpriteMap.js +113 -0
- package/packages/rnv-build-engine/dist/src/utils/mergeSvgAndPngIcons.js +65 -0
- package/packages/rnv-build-engine/dist/src/utils/replaceRelevantStringsInConfig/index.js +5 -0
- package/packages/rnv-build-engine/dist/src/utils/replaceRelevantStringsInConfig/replaceRelevantStringsInConfig.js +31 -0
- package/packages/rnv-build-engine/dist/src/utils/replaceRelevantStringsInConfig/replaceTemplateString.js +40 -0
- package/packages/rnv-build-engine/dist/src/utils/zipBuildsByPlatforms.js +61 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/template.js +87 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/utils/extendSass.js +29 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/utils/joinStrings.js +5 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/webpack.base.js +234 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/webpack.config.dev.js +6 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/webpack.config.prod.js +6 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/webpack.extend.js +8 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/webpackConfigAdapter.js +100 -0
- package/packages/rnv-build-engine/dist/templates/platforms/_shared/webpackPlatformProps.js +8 -0
- package/packages/rnv-build-engine/dist/templates/platforms/hbbtv/webpackPlatformProps.js +24 -0
- package/packages/rnv-build-engine/dist/templates/platforms/tizen/project/.project +24 -0
- package/packages/rnv-build-engine/dist/templates/platforms/tizen/project/.tproject +12 -0
- package/packages/rnv-build-engine/dist/templates/platforms/tizen/project/config.xml +17 -0
- package/packages/rnv-build-engine/dist/templates/platforms/webos/project/.project +35 -0
- package/packages/rnv-build-engine/dist/templates/platforms/webos/project/appinfo.json +19 -0
- package/packages/rnv-build-engine/dist/templates/platforms/webos/webpackPlatformProps.js +8 -0
- package/packages/types-bigscreen-jsx/index.d.ts +1 -1
- package/packages/utils/src/textUtils.ts +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@24i/bigscreen-sdk",
|
|
3
|
-
"version": "1.0.4-alpha.
|
|
3
|
+
"version": "1.0.4-alpha.2106",
|
|
4
4
|
"description": "SmartApps BIGscreen SDK monorepo",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@types/jest": "^28.1.6",
|
|
58
58
|
"@types/minimist": "^1.2.2",
|
|
59
59
|
"@types/node": "^18.6.3",
|
|
60
|
-
"@types/react": "^18.0.
|
|
60
|
+
"@types/react": "^18.0.18",
|
|
61
61
|
"babel-jest": "^28.1.2",
|
|
62
62
|
"chalk": "^4.1.2",
|
|
63
63
|
"coveralls": "^3.1.0",
|
|
@@ -71,12 +71,12 @@
|
|
|
71
71
|
"jest-environment-jsdom": "^28.1.2",
|
|
72
72
|
"minimist": "^1.2.6",
|
|
73
73
|
"patch-package": "^6.2.1",
|
|
74
|
-
"sass": "^1.54.
|
|
74
|
+
"sass": "^1.54.8",
|
|
75
75
|
"sass-true": "^6.1.0",
|
|
76
|
-
"ts-jest": "^28.0.
|
|
76
|
+
"ts-jest": "^28.0.8",
|
|
77
77
|
"ts-node": "^10.8.2",
|
|
78
78
|
"tsconfig-paths-jest": "0.0.1",
|
|
79
|
-
"typescript": "^4.
|
|
79
|
+
"typescript": "^4.8.2"
|
|
80
80
|
},
|
|
81
81
|
"exports": {
|
|
82
82
|
"./adobe-heartbeat": "./packages/adobe-heartbeat/src/index.ts",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.main = void 0;
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const fse = require("fs-extra");
|
|
8
|
+
const chalk = require("chalk");
|
|
9
|
+
const minimist = require("minimist");
|
|
10
|
+
const questions_1 = require("./questionnaire/questions");
|
|
11
|
+
const Settings_1 = require("./settings/Settings");
|
|
12
|
+
async function isDirectoryEmpty(dirPath) {
|
|
13
|
+
const files = await fs.promises.readdir(dirPath);
|
|
14
|
+
return !files.length;
|
|
15
|
+
}
|
|
16
|
+
async function copyTemplateFiles(templateDir, targetDir) {
|
|
17
|
+
return fse.copy(templateDir, targetDir);
|
|
18
|
+
}
|
|
19
|
+
function updatePackageJsonFile(filePath, options) {
|
|
20
|
+
let data = fs.readFileSync(filePath, 'utf8');
|
|
21
|
+
const keywords = options.keywords.map((word) => `"${word}"`).join(', ');
|
|
22
|
+
data = data.replace(/("name": ")(.*)(")/, `$1${options.name}$3`);
|
|
23
|
+
data = data.replace(/("version": ")(.*)(")/, `$1${options.version}$3`);
|
|
24
|
+
data = data.replace(/("description": ")(.*)(")/, `$1${options.description}$3`);
|
|
25
|
+
data = data.replace(/("keywords": \[)(.*)(\])/, `$1${keywords}$3`);
|
|
26
|
+
data = data.replace(/("author": ")(.*)(")/, `$1${options.author}$3`);
|
|
27
|
+
fs.writeFileSync(filePath, data);
|
|
28
|
+
}
|
|
29
|
+
function parseArguments(rawArgv) {
|
|
30
|
+
const argv = minimist(rawArgv.slice(2));
|
|
31
|
+
const dirName = argv._[0];
|
|
32
|
+
if (!dirName) {
|
|
33
|
+
console.error('Error: Missing package name');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
dirName,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async function main() {
|
|
41
|
+
const { dirName: destDirName } = parseArguments(process.argv);
|
|
42
|
+
const destDir = path.join(process.cwd(), 'packages/', destDirName);
|
|
43
|
+
if (fs.existsSync(destDir)) {
|
|
44
|
+
console.error(`Error: Target directory "${destDir}" already exists`);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
48
|
+
const isDirEmpty = await isDirectoryEmpty(destDir);
|
|
49
|
+
if (!isDirEmpty) {
|
|
50
|
+
console.error(`Error: Target directory "${destDir}" is not empty.`);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
const settings = Object.assign({}, Settings_1.Settings);
|
|
54
|
+
settings.name = `${Settings_1.Settings.name}${destDirName}`.toLowerCase();
|
|
55
|
+
const details = await (0, questions_1.promptPackageDetails)(settings);
|
|
56
|
+
const templateDir = path.join(__dirname, '..', 'templates/typescript');
|
|
57
|
+
await copyTemplateFiles(templateDir, destDir);
|
|
58
|
+
const packageJsonFile = path.join(destDir, 'package.json');
|
|
59
|
+
updatePackageJsonFile(packageJsonFile, details);
|
|
60
|
+
const docsSymlinkTarget = path.join('../../../packages/', destDirName, '/README.md');
|
|
61
|
+
const docsSymlinkPath = path.join(process.cwd(), 'docs/packages/', destDirName, '/README.md');
|
|
62
|
+
await fse.ensureSymlink(docsSymlinkTarget, docsSymlinkPath);
|
|
63
|
+
console.log(`${chalk.green('Success')}, package has been initialized!`);
|
|
64
|
+
}
|
|
65
|
+
exports.main = main;
|
|
66
|
+
//# sourceMappingURL=createPackage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPackage.js","sourceRoot":"","sources":["../src/createPackage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,mDAAuC;AAEvC,IAAA,oBAAI,GAAE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.promptPackageDetails = void 0;
|
|
4
|
+
const inquirer = require("inquirer");
|
|
5
|
+
async function promptPackageDetails(defaultValues) {
|
|
6
|
+
return inquirer.prompt([
|
|
7
|
+
{
|
|
8
|
+
type: 'input',
|
|
9
|
+
name: 'name',
|
|
10
|
+
message: 'Package name:',
|
|
11
|
+
default: defaultValues.name,
|
|
12
|
+
}, {
|
|
13
|
+
type: 'input',
|
|
14
|
+
name: 'version',
|
|
15
|
+
message: 'Version:',
|
|
16
|
+
default: defaultValues.version,
|
|
17
|
+
}, {
|
|
18
|
+
type: 'input',
|
|
19
|
+
name: 'description',
|
|
20
|
+
message: 'Description:',
|
|
21
|
+
}, {
|
|
22
|
+
type: 'input',
|
|
23
|
+
name: 'keywords',
|
|
24
|
+
message: 'Keywords:',
|
|
25
|
+
filter: (ans) => ans.split(/[\s,]+/),
|
|
26
|
+
}, {
|
|
27
|
+
type: 'input',
|
|
28
|
+
name: 'author',
|
|
29
|
+
message: 'Author:',
|
|
30
|
+
default: defaultValues.author,
|
|
31
|
+
},
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
exports.promptPackageDetails = promptPackageDetails;
|
|
35
|
+
//# sourceMappingURL=questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/questionnaire/questions.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAWrC,KAAK,UAAU,oBAAoB,CAAC,aAA4C;IAC5E,OAAO,QAAQ,CAAC,MAAM,CAAC;QACnB;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,aAAa,CAAC,IAAI;SAC9B,EAAE;YACC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,aAAa,CAAC,OAAO;SACjC,EAAE;YACC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,cAAc;SAC1B,EAAE;YACC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;SACvC,EAAE;YACC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,aAAa,CAAC,MAAM;SAChC;KACJ,CAAC,CAAC;AACP,CAAC;AAEQ,oDAAoB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Settings = void 0;
|
|
4
|
+
const Settings = {
|
|
5
|
+
name: '@24i/smartapps-bigscreen-',
|
|
6
|
+
version: '0.0.1',
|
|
7
|
+
author: '24i',
|
|
8
|
+
};
|
|
9
|
+
exports.Settings = Settings;
|
|
10
|
+
//# sourceMappingURL=Settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/settings/Settings.ts"],"names":[],"mappings":";;;AAAA,MAAM,QAAQ,GAAG;IACb,IAAI,EAAE,2BAA2B;IACjC,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,KAAK;CAChB,CAAC;AAEO,4BAAQ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Component, createRef, Reference } from '@24i/bigscreen-sdk/jsx';
|
|
2
2
|
import { stopEvent } from '@24i/bigscreen-sdk/utils';
|
|
3
3
|
import { BasicList } from '@24i/bigscreen-sdk/list/Basic';
|
|
4
|
-
import { device } from '@24i/bigscreen-sdk/device';
|
|
5
4
|
import { BACK } from '@24i/bigscreen-sdk/device/keymap';
|
|
6
5
|
import { reloadApp } from '../utils/reload';
|
|
7
6
|
import { EnvironmentListItem } from './EnvironmentListItem';
|
|
@@ -25,14 +24,12 @@ export class EnvironmentList extends Component<Props> {
|
|
|
25
24
|
getPaddingTop() {
|
|
26
25
|
const { data } = this.props;
|
|
27
26
|
const {
|
|
28
|
-
|
|
27
|
+
paddingCountThreshold, height, scrollStep, defaultPaddingTop,
|
|
29
28
|
} = sizes;
|
|
30
|
-
if (data.length
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
return defaultPaddingTop;
|
|
29
|
+
if (data.length > paddingCountThreshold) return defaultPaddingTop;
|
|
30
|
+
return Math.round(
|
|
31
|
+
(height - scrollStep * data.length) / 2,
|
|
32
|
+
);
|
|
36
33
|
}
|
|
37
34
|
|
|
38
35
|
onKeyDown = (event: KeyboardEvent) => {
|
|
@@ -40,8 +37,6 @@ export class EnvironmentList extends Component<Props> {
|
|
|
40
37
|
stopEvent(event);
|
|
41
38
|
const { onClose } = this.props;
|
|
42
39
|
onClose();
|
|
43
|
-
} else if (device.isDirectionalArrow(event)) {
|
|
44
|
-
stopEvent(event); // No leaking out. Might result in something focusing below the modal
|
|
45
40
|
}
|
|
46
41
|
};
|
|
47
42
|
|
|
@@ -57,7 +52,7 @@ export class EnvironmentList extends Component<Props> {
|
|
|
57
52
|
|
|
58
53
|
render() {
|
|
59
54
|
const { data, leadingEllipses } = this.props;
|
|
60
|
-
const { visibleItems,
|
|
55
|
+
const { visibleItems, scrollStep } = sizes;
|
|
61
56
|
return (
|
|
62
57
|
<div
|
|
63
58
|
ref={this.div}
|
|
@@ -86,7 +81,7 @@ export class EnvironmentList extends Component<Props> {
|
|
|
86
81
|
);
|
|
87
82
|
}}
|
|
88
83
|
visibleItems={visibleItems}
|
|
89
|
-
firstScrollStep={
|
|
84
|
+
firstScrollStep={scrollStep}
|
|
90
85
|
scrollStep={scrollStep}
|
|
91
86
|
/>
|
|
92
87
|
</div>
|
|
@@ -3,8 +3,12 @@ import { getDisplayToggler } from '@24i/bigscreen-sdk/utils/displayToggler';
|
|
|
3
3
|
import { Item } from '@24i/bigscreen-sdk/list/interface';
|
|
4
4
|
import { Interactable } from '@24i/bigscreen-sdk/interactable';
|
|
5
5
|
import { trimWithLeadingEllipsis } from '@24i/bigscreen-sdk/utils/textUtils';
|
|
6
|
+
import { addClass } from '@24i/bigscreen-sdk/utils/addClass';
|
|
7
|
+
import { removeClass } from '@24i/bigscreen-sdk/utils/removeClass';
|
|
6
8
|
import { ItemData } from './types';
|
|
7
9
|
|
|
10
|
+
const ACTIVE_CLASS = 'active';
|
|
11
|
+
|
|
8
12
|
type Props = {
|
|
9
13
|
onPress: (environment: string) => void,
|
|
10
14
|
leadingEllipses?: boolean;
|
|
@@ -13,7 +17,7 @@ type Props = {
|
|
|
13
17
|
export class EnvironmentListItem extends Component<Props> implements Item<ItemData> {
|
|
14
18
|
itemRef = createRef<HTMLDivElement>();
|
|
15
19
|
|
|
16
|
-
labelRef = createRef<
|
|
20
|
+
labelRef = createRef<HTMLDivElement>();
|
|
17
21
|
|
|
18
22
|
value: string;
|
|
19
23
|
|
|
@@ -53,11 +57,16 @@ export class EnvironmentListItem extends Component<Props> implements Item<ItemDa
|
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
|
|
56
|
-
updateData({ label, value }: ItemData) {
|
|
60
|
+
updateData({ label, value, active }: ItemData) {
|
|
57
61
|
if (value !== this.value) {
|
|
58
62
|
this.value = value;
|
|
59
63
|
setText(this.labelRef, label);
|
|
60
64
|
this.trimRows();
|
|
65
|
+
if (active) {
|
|
66
|
+
addClass(this.itemRef, ACTIVE_CLASS);
|
|
67
|
+
} else {
|
|
68
|
+
removeClass(this.itemRef, ACTIVE_CLASS);
|
|
69
|
+
}
|
|
61
70
|
}
|
|
62
71
|
}
|
|
63
72
|
|
|
@@ -66,27 +75,31 @@ export class EnvironmentListItem extends Component<Props> implements Item<ItemDa
|
|
|
66
75
|
}
|
|
67
76
|
|
|
68
77
|
render() {
|
|
69
|
-
const { active, label, leadingEllipses
|
|
78
|
+
const { active, label, leadingEllipses } = this.props;
|
|
79
|
+
const itemEllipsesClass = `${
|
|
80
|
+
leadingEllipses ? 'leading-ellipses-list-item' : 'normal-ellipses-list-item'
|
|
81
|
+
}`;
|
|
82
|
+
const activeClass = `${active ? ACTIVE_CLASS : ''}`;
|
|
70
83
|
return (
|
|
71
84
|
<Interactable
|
|
72
85
|
ref={this.itemRef}
|
|
73
|
-
className={`environment-list-item
|
|
86
|
+
className={`environment-list-item ${itemEllipsesClass} ${activeClass}`}
|
|
74
87
|
onPress={this.onPress}
|
|
75
88
|
>
|
|
76
|
-
{
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
<
|
|
84
|
-
className=
|
|
89
|
+
{active && (
|
|
90
|
+
<div
|
|
91
|
+
className={
|
|
92
|
+
`checkmark ${leadingEllipses ? 'leading-ellipses-checkmark' : ''}`
|
|
93
|
+
}
|
|
94
|
+
/>
|
|
95
|
+
)}
|
|
96
|
+
<div
|
|
97
|
+
className="label"
|
|
85
98
|
ref={this.labelRef}
|
|
86
99
|
dir="auto"
|
|
87
100
|
>
|
|
88
101
|
{label}
|
|
89
|
-
</
|
|
102
|
+
</div>
|
|
90
103
|
</Interactable>
|
|
91
104
|
);
|
|
92
105
|
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export const height = 1080;
|
|
2
|
-
export const defaultPaddingTop =
|
|
3
|
-
|
|
4
|
-
export const
|
|
5
|
-
export const listItemMargin = 16;
|
|
6
|
-
|
|
7
|
-
export const visibleItems = 11;
|
|
8
|
-
export const firstScrollStep = 112;
|
|
2
|
+
export const defaultPaddingTop = 92;
|
|
3
|
+
export const paddingCountThreshold = 8;
|
|
4
|
+
export const visibleItems = 10;
|
|
9
5
|
export const scrollStep = 112;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export const height = 720;
|
|
2
|
-
export const defaultPaddingTop =
|
|
3
|
-
|
|
4
|
-
export const
|
|
5
|
-
export const listItemMargin = 11;
|
|
6
|
-
|
|
7
|
-
export const visibleItems = 11;
|
|
8
|
-
export const firstScrollStep = 75;
|
|
2
|
+
export const defaultPaddingTop = 61;
|
|
3
|
+
export const paddingCountThreshold = 8;
|
|
4
|
+
export const visibleItems = 10;
|
|
9
5
|
export const scrollStep = 75;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@import '@24i/bigscreen-sdk/sass-utils/ellipsis';
|
|
2
|
+
|
|
1
3
|
@mixin mask-svg-icon($icon-url) {
|
|
2
4
|
-webkit-mask-image: url($icon-url);
|
|
3
5
|
-webkit-mask-size: $checkmark-size;
|
|
@@ -41,6 +43,7 @@
|
|
|
41
43
|
padding-right: $environment-config-name-padding-right;
|
|
42
44
|
line-height: $environment-config-name-height;
|
|
43
45
|
height: $environment-config-name-height;
|
|
46
|
+
white-space: nowrap;
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
|
|
@@ -83,6 +86,7 @@
|
|
|
83
86
|
background-color: #fff;
|
|
84
87
|
height: $checkmark-size;
|
|
85
88
|
width: $checkmark-size;
|
|
89
|
+
visibility: hidden;
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
.leading-ellipses-checkmark {
|
|
@@ -95,10 +99,6 @@
|
|
|
95
99
|
font-size: $label-font-size;
|
|
96
100
|
font-weight: 400;
|
|
97
101
|
color: #8f8f8f;
|
|
98
|
-
|
|
99
|
-
&.active {
|
|
100
|
-
color: #fff;
|
|
101
|
-
}
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
&:focus {
|
|
@@ -108,10 +108,30 @@
|
|
|
108
108
|
color: #fff;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
+
|
|
112
|
+
&.active {
|
|
113
|
+
.checkmark {
|
|
114
|
+
visibility: visible;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.label {
|
|
118
|
+
color: #fff;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
&.display-none {
|
|
123
|
+
visibility: hidden;
|
|
124
|
+
}
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
.leading-ellipses-list-item {
|
|
114
128
|
height: auto;
|
|
115
129
|
}
|
|
130
|
+
|
|
131
|
+
.normal-ellipses-list-item {
|
|
132
|
+
.label {
|
|
133
|
+
@include ellipsis;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
116
136
|
}
|
|
117
137
|
}
|
|
@@ -14,7 +14,7 @@ $environment-list-width: 479px;
|
|
|
14
14
|
|
|
15
15
|
$environment-list-item-border-radius: 40px;
|
|
16
16
|
$environment-list-item-padding: 16px 34px;
|
|
17
|
-
$environment-list-item-margin: 16px 71px;
|
|
17
|
+
$environment-list-item-margin: 16px 0 16px 71px;
|
|
18
18
|
$environment-list-item-line-height: 48px;
|
|
19
19
|
$environment-list-item-height: 80px;
|
|
20
20
|
|
|
@@ -14,9 +14,9 @@ $environment-list-width: 319px;
|
|
|
14
14
|
|
|
15
15
|
$environment-list-item-border-radius: 27px;
|
|
16
16
|
$environment-list-item-padding: 11px 23px;
|
|
17
|
-
$environment-list-item-margin: 11px 47px;
|
|
17
|
+
$environment-list-item-margin: 11px 0 11px 47px;
|
|
18
18
|
$environment-list-item-line-height: 32px;
|
|
19
|
-
$environment-list-item-height:
|
|
19
|
+
$environment-list-item-height: 54px;
|
|
20
20
|
|
|
21
21
|
$checkmark-top: 13px;
|
|
22
22
|
$checkmark-left: -48px;
|
|
@@ -19,7 +19,7 @@ export const loadObject = <T extends HTMLObjectElement>(
|
|
|
19
19
|
object.type = type;
|
|
20
20
|
forEach(Object.entries(attributes), ([name, value]) => {
|
|
21
21
|
if (name === 'style') {
|
|
22
|
-
object.style.cssText = value;
|
|
22
|
+
object.style.cssText = value as string;
|
|
23
23
|
} else {
|
|
24
24
|
// @ts-ignore - skipping readonly check
|
|
25
25
|
object[name] = value;
|
|
@@ -9,7 +9,6 @@ export type Props = SharedProps & {
|
|
|
9
9
|
focusableChildren: Array<Reference>,
|
|
10
10
|
onFocusChanged?: (focused: Reference, index: number) => any,
|
|
11
11
|
onBeforeFocusChange?: (focused: Reference, index: number) => any,
|
|
12
|
-
dir?: 'auto' | 'ltr' | 'rtl',
|
|
13
12
|
};
|
|
14
13
|
|
|
15
14
|
export interface ILayout {
|
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
import { LEFT, RIGHT } from '@24i/bigscreen-sdk/device/keymap';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
const isHorizontalRtl = (dir: Props['dir']) => {
|
|
6
|
-
switch (dir) {
|
|
7
|
-
case 'rtl': return true;
|
|
8
|
-
case 'ltr': return false;
|
|
9
|
-
case 'auto':
|
|
10
|
-
default:
|
|
11
|
-
return isRtl();
|
|
12
|
-
}
|
|
13
|
-
};
|
|
2
|
+
import { getLayoutBase, ILayout } from './Base';
|
|
3
|
+
import { isRtl } from './isRtl';
|
|
14
4
|
|
|
15
5
|
const onKeyDown = (e: KeyboardEvent, layout: ILayout) => {
|
|
16
|
-
if (!
|
|
6
|
+
if (!isRtl(layout.props.dir)) {
|
|
17
7
|
if (LEFT.is(e)) layout.backward(e);
|
|
18
8
|
if (RIGHT.is(e)) layout.forward(e);
|
|
19
9
|
} else {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Component, Reference, createRef, DeclareProps } from '@24i/bigscreen-sdk/jsx';
|
|
2
2
|
import { device } from '@24i/bigscreen-sdk/device';
|
|
3
|
+
import { LEFT, RIGHT } from '@24i/bigscreen-sdk/device/keymap';
|
|
3
4
|
import { noop } from '@24i/bigscreen-sdk/utils/noop';
|
|
4
5
|
import { stopEvent } from '@24i/bigscreen-sdk/utils/stopEvent';
|
|
5
6
|
import { IFocusable } from '../IFocusable';
|
|
7
|
+
import { isRtl } from './isRtl';
|
|
6
8
|
import { Errors, hasValidDomRef } from './constants';
|
|
7
9
|
import { SharedProps } from './types';
|
|
8
10
|
|
|
@@ -34,7 +36,8 @@ export class Matrix extends Component<Props> implements IFocusable {
|
|
|
34
36
|
onFocusChanged: noop,
|
|
35
37
|
onBeforeFocusChange: noop,
|
|
36
38
|
circular: CircularDirection.NONE,
|
|
37
|
-
|
|
39
|
+
dir: 'auto',
|
|
40
|
+
} as const;
|
|
38
41
|
|
|
39
42
|
declare props: DeclareProps<Props, typeof Matrix.defaultProps>;
|
|
40
43
|
|
|
@@ -56,9 +59,9 @@ export class Matrix extends Component<Props> implements IFocusable {
|
|
|
56
59
|
|
|
57
60
|
onKeyDown = (e: KeyboardEvent) => {
|
|
58
61
|
let newIndex: Index2D | null = null;
|
|
59
|
-
if (
|
|
62
|
+
if (this.isDirectionLeft(e)) {
|
|
60
63
|
newIndex = this.moveHorizontaly('left');
|
|
61
|
-
} else if (
|
|
64
|
+
} else if (this.isDirectionRight(e)) {
|
|
62
65
|
newIndex = this.moveHorizontaly('right');
|
|
63
66
|
} else if (device.isDirectionUp(e)) {
|
|
64
67
|
newIndex = this.moveVerticaly('up');
|
|
@@ -109,6 +112,24 @@ export class Matrix extends Component<Props> implements IFocusable {
|
|
|
109
112
|
return false;
|
|
110
113
|
}
|
|
111
114
|
|
|
115
|
+
isDirectionLeft(event: KeyboardEvent) {
|
|
116
|
+
const { dir } = this.props;
|
|
117
|
+
const rtl = isRtl(dir);
|
|
118
|
+
return (
|
|
119
|
+
(!rtl && LEFT.is(event))
|
|
120
|
+
|| (rtl && RIGHT.is(event))
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
isDirectionRight(event: KeyboardEvent) {
|
|
125
|
+
const { dir } = this.props;
|
|
126
|
+
const rtl = isRtl(dir);
|
|
127
|
+
return (
|
|
128
|
+
(!rtl && RIGHT.is(event))
|
|
129
|
+
|| (rtl && LEFT.is(event))
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
112
133
|
moveForwards = (isCircular: boolean) => (x: number, length: number) => {
|
|
113
134
|
if (x === length - 1) {
|
|
114
135
|
return isCircular ? 0 : length - 1;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as i18n from '@24i/bigscreen-sdk/i18n';
|
|
2
|
+
import { isRtl } from '../isRtl';
|
|
3
|
+
import { SharedProps } from '../types';
|
|
4
|
+
|
|
5
|
+
describe('isRtl', () => {
|
|
6
|
+
const mockIsRtl = jest.spyOn(i18n, 'isRtl');
|
|
7
|
+
|
|
8
|
+
it.each([
|
|
9
|
+
{ focusDir: 'ltr', langDir: 'ltr', expectedIsRtl: false },
|
|
10
|
+
{ focusDir: 'rtl', langDir: 'ltr', expectedIsRtl: true },
|
|
11
|
+
{ focusDir: 'auto', langDir: 'ltr', expectedIsRtl: false },
|
|
12
|
+
{ focusDir: undefined, langDir: 'ltr', expectedIsRtl: false },
|
|
13
|
+
{ focusDir: 'ltr', langDir: 'rtl', expectedIsRtl: false },
|
|
14
|
+
{ focusDir: 'rtl', langDir: 'rtl', expectedIsRtl: true },
|
|
15
|
+
{ focusDir: 'auto', langDir: 'rtl', expectedIsRtl: true },
|
|
16
|
+
{ focusDir: undefined, langDir: 'rtl', expectedIsRtl: true },
|
|
17
|
+
])('should for $focusDir focus and $langDir language return $expectedIsRtl', ({
|
|
18
|
+
focusDir, langDir, expectedIsRtl,
|
|
19
|
+
}) => {
|
|
20
|
+
mockIsRtl.mockReturnValue(langDir === 'rtl');
|
|
21
|
+
expect(isRtl(focusDir as SharedProps['dir'])).toBe(expectedIsRtl);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isRtl as isLangRtl } from '@24i/bigscreen-sdk/i18n';
|
|
2
|
+
import { SharedProps } from './types';
|
|
3
|
+
|
|
4
|
+
export const isRtl = (dir: SharedProps['dir']) => {
|
|
5
|
+
switch (dir) {
|
|
6
|
+
case 'rtl': return true;
|
|
7
|
+
case 'ltr': return false;
|
|
8
|
+
case 'auto':
|
|
9
|
+
default:
|
|
10
|
+
return isLangRtl();
|
|
11
|
+
}
|
|
12
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ForwardedRefComponent, FunctionComponentWithRef } from './types';
|
|
1
|
+
import { ForwardedRefComponent, FunctionComponentWithRef, Props } from './types';
|
|
2
2
|
|
|
3
|
-
export const forwardRef = <T>(
|
|
3
|
+
export const forwardRef = <T extends Props>(
|
|
4
4
|
reffedComponent: FunctionComponentWithRef<T>,
|
|
5
5
|
): ForwardedRefComponent<T> => {
|
|
6
6
|
(reffedComponent as ForwardedRefComponent<T>).isForwardedRef = true;
|
|
@@ -71,6 +71,7 @@ export class Keyboard extends QwertyKeyboardBase {
|
|
|
71
71
|
ref={this.matrix}
|
|
72
72
|
domRef={this.keyboardWrapper}
|
|
73
73
|
matrix={this.focusMatrices.normal}
|
|
74
|
+
dir="ltr"
|
|
74
75
|
>
|
|
75
76
|
<div className={`${KEYBOARD_ROW} row-numbers`}>
|
|
76
77
|
{map(NORMAL[0], this.generateKey)}
|
|
@@ -96,6 +97,7 @@ export class Keyboard extends QwertyKeyboardBase {
|
|
|
96
97
|
ref={this.keyRefs.special}
|
|
97
98
|
className="key key-special"
|
|
98
99
|
onPress={this.onSpecial}
|
|
100
|
+
dir="auto"
|
|
99
101
|
>
|
|
100
102
|
{texts.toSpecialLayout}
|
|
101
103
|
</Interactable>
|
|
@@ -103,6 +105,7 @@ export class Keyboard extends QwertyKeyboardBase {
|
|
|
103
105
|
ref={this.keyRefs.shift}
|
|
104
106
|
className="key key-shift"
|
|
105
107
|
onPress={() => this.onShift()}
|
|
108
|
+
dir="auto"
|
|
106
109
|
>
|
|
107
110
|
{texts.shift}
|
|
108
111
|
</Interactable>
|
|
@@ -131,6 +134,7 @@ export class Keyboard extends QwertyKeyboardBase {
|
|
|
131
134
|
ref={this.keyRefs.done}
|
|
132
135
|
className="key key-done"
|
|
133
136
|
onPress={() => this.onDone()}
|
|
137
|
+
dir="auto"
|
|
134
138
|
>
|
|
135
139
|
{texts.done}
|
|
136
140
|
</Interactable>
|
|
@@ -158,6 +162,7 @@ export class Keyboard extends QwertyKeyboardBase {
|
|
|
158
162
|
ref={this.matrix}
|
|
159
163
|
domRef={this.keyboardWrapper}
|
|
160
164
|
matrix={this.focusMatrices.special}
|
|
165
|
+
dir="ltr"
|
|
161
166
|
>
|
|
162
167
|
<div className={`${KEYBOARD_ROW} row-numbers`}>
|
|
163
168
|
{map(SPECIAL[0], this.generateKey)}
|
|
@@ -186,6 +191,7 @@ export class Keyboard extends QwertyKeyboardBase {
|
|
|
186
191
|
ref={this.keyRefs.special}
|
|
187
192
|
className="key key-special"
|
|
188
193
|
onPress={this.onQWERTY}
|
|
194
|
+
dir="auto"
|
|
189
195
|
>
|
|
190
196
|
{texts.toNormalLayout}
|
|
191
197
|
</Interactable>
|
|
@@ -215,6 +221,7 @@ export class Keyboard extends QwertyKeyboardBase {
|
|
|
215
221
|
ref={this.keyRefs.done}
|
|
216
222
|
className="key key-done"
|
|
217
223
|
onPress={() => this.onDone()}
|
|
224
|
+
dir="auto"
|
|
218
225
|
>
|
|
219
226
|
{texts.done}
|
|
220
227
|
</Interactable>
|