mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Merge remote-tracking branch 'origin/master' into merge-6.2.1-release-in-master
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,6 +16,7 @@ package-lock.json
|
||||
.DS_Store
|
||||
.nsbuildinfo
|
||||
tsdoc-metadata.json
|
||||
thumbs.db
|
||||
|
||||
# IDEs and editors
|
||||
/.idea
|
||||
|
||||
@@ -7,6 +7,9 @@ script:
|
||||
- npm run setup
|
||||
- npm run unit-test
|
||||
|
||||
# public API changes check
|
||||
- npm run api-extractor-ci
|
||||
|
||||
# circular references check
|
||||
- cd tests && npm i
|
||||
- node_modules/.bin/webpack --env.android
|
||||
|
||||
@@ -69,6 +69,7 @@ git checkout -b <my-fix-branch> master
|
||||
- Rebase your changes to the latest master: `git pull --rebase upstream master`.
|
||||
- Ensure all unit test are green for Android and iOS. Check [running unit tests](DevelopmentWorkflow.md#running-unit-tests).
|
||||
- Ensure your changes pass tslint validation. (run `npm run tslint` in the root of the repo).
|
||||
- If you've made changes to a public API, make sure you update and add the `api-reports/NativeScript.api.md` file to the PR. (run `npm run api-extractor` to update the api-report and definitions).
|
||||
|
||||
6. Push your fork. If you have rebased you might have to use force-push your branch:
|
||||
```
|
||||
|
||||
@@ -19,7 +19,7 @@ Check out the links below to get started:
|
||||
|
||||
## For CTOs
|
||||
|
||||
Making the right technology choices is key to success. Our [CTO’s guide to NativeScript](https://www.nativescript.org/ctos-guide) helps you understand why NativeScript is the right choice for your next mobile project.
|
||||
Making the right technology choices is the key to success. Our [CTO’s guide to NativeScript](https://www.nativescript.org/ctos-guide) helps you understand why NativeScript is the right choice for your next mobile project.
|
||||
|
||||
## Getting Started and Installation
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ extract_snippets() {
|
||||
|
||||
npm install markdown-snippet-injector
|
||||
|
||||
for SNIPPET_DIR in {tests/app,apps/app,tns-core-modules} ; do
|
||||
for SNIPPET_DIR in {tests/app,apps/app,nativescript-core} ; do
|
||||
echo "Extracting snippets from: $SNIPPET_DIR"
|
||||
node "$BIN" --root="$SNIPPET_DIR" --target="$TARGET_DIR" \
|
||||
--sourceext=".js|.ts|.xml|.html|.css"
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"rulesDirectory": [
|
||||
"@nativescript/tslint-rules"
|
||||
],
|
||||
"rules": {
|
||||
"arrow-return-shorthand": true,
|
||||
"class-name": true,
|
||||
@@ -9,6 +12,7 @@
|
||||
"jsdoc-format": false,
|
||||
"max-line-length": [false, 120],
|
||||
"newline-before-return": true,
|
||||
"no-android-resources": true,
|
||||
"no-arg": true,
|
||||
"no-bitwise": false,
|
||||
"no-consecutive-blank-lines": true,
|
||||
|
||||
@@ -247,14 +247,3 @@ export class NetworkDomainDebugger implements inspectorCommandTypes.NetworkDomai
|
||||
return resourceData;
|
||||
}
|
||||
}
|
||||
|
||||
@inspectorCommands.DomainDispatcher("Runtime")
|
||||
export class RuntimeDomainDebugger {
|
||||
constructor() {
|
||||
__inspectorSendEvent(`{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"http://main.xml","name":"","auxData":{"isDefault":true,"frameId":"${frameId}"}}}}`);
|
||||
}
|
||||
|
||||
compileScript(): { scriptId?: string, exceptionDetails?: Object } {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"main": "index",
|
||||
"types": "index.d.ts",
|
||||
"description": "Telerik NativeScript Core Modules",
|
||||
"version": "6.2.1",
|
||||
"version": "6.3.0",
|
||||
"homepage": "https://www.nativescript.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -58,19 +58,16 @@ export function _getStyleProperties(): CssProperty<any, any>[] {
|
||||
return getPropertiesFromMap(cssSymbolPropertyMap) as CssProperty<any, any>[];
|
||||
}
|
||||
|
||||
const cssVariableExpressionRegexp = /\bvar\(\s*(--[^,\s]+?)(?:\s*,\s*(.+))?\s*\)/;
|
||||
const cssVariableAllExpressionsRegexp = /\bvar\(\s*(--[^,\s]+?)(?:\s*,\s*(.+))?\s*\)/g;
|
||||
|
||||
export function isCssVariable(property: string) {
|
||||
return /^--[^,\s]+?$/.test(property);
|
||||
}
|
||||
|
||||
export function isCssCalcExpression(value: string) {
|
||||
return /\bcalc\(/.test(value);
|
||||
return value.includes("calc(");
|
||||
}
|
||||
|
||||
export function isCssVariableExpression(value: string) {
|
||||
return cssVariableExpressionRegexp.test(value);
|
||||
return value.includes("var(--");
|
||||
}
|
||||
|
||||
export function _evaluateCssVariableExpression(view: ViewBase, cssName: string, value: string): string {
|
||||
@@ -90,26 +87,28 @@ export function _evaluateCssVariableExpression(view: ViewBase, cssName: string,
|
||||
while (lastValue !== output) {
|
||||
lastValue = output;
|
||||
|
||||
output = output.replace(cssVariableAllExpressionsRegexp, (matchStr, cssVariableName: string, fallbackStr: string) => {
|
||||
const cssVariableValue = view.style.getCssVariable(cssVariableName);
|
||||
if (cssVariableValue !== null) {
|
||||
return cssVariableValue;
|
||||
const idx = output.lastIndexOf("var(");
|
||||
if (idx === -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (fallbackStr) {
|
||||
// css-variable not found, using fallback-string.
|
||||
const fallbackOutput = _evaluateCssVariableExpression(view, cssName, fallbackStr);
|
||||
if (fallbackOutput) {
|
||||
// If the fallback have multiple values, return the first of them.
|
||||
return fallbackOutput.split(",")[0];
|
||||
}
|
||||
const endIdx = output.indexOf(")", idx);
|
||||
if (endIdx === -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Couldn't find a value for the css-variable or the fallback, return "unset"
|
||||
traceWrite(`Failed to get value for css-variable "${cssVariableName}" used in "${cssName}"=[${value}] to ${view}`, traceCategories.Style, traceMessageType.error);
|
||||
const matched = output.substring(idx + 4, endIdx).split(",").map((v) => v.trim()).filter((v) => !!v);
|
||||
const cssVariableName = matched.shift();
|
||||
let cssVariableValue = view.style.getCssVariable(cssVariableName);
|
||||
if (cssVariableValue === null && matched.length) {
|
||||
cssVariableValue = _evaluateCssVariableExpression(view, cssName, matched.join(", ")).split(",")[0];
|
||||
}
|
||||
|
||||
return "unset";
|
||||
});
|
||||
if (!cssVariableValue) {
|
||||
cssVariableValue = "unset";
|
||||
}
|
||||
|
||||
output = `${output.substring(0, idx)}${cssVariableValue}${output.substring(endIdx + 1)}`;
|
||||
}
|
||||
|
||||
return output;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"@microsoft/api-extractor": "^7.5.0",
|
||||
"@nativescript/tslint-rules": "0.0.5",
|
||||
"@types/chai": "^4.0.4",
|
||||
"@types/mocha": "^2.2.42",
|
||||
"@types/node": "~10.12.18",
|
||||
@@ -47,6 +48,7 @@
|
||||
"unit-test-watch": "mocha-typescript-watch -p unit-tests/tsconfig.json --opts unit-tests/mocha.opts",
|
||||
"dev-link-tns-core-modules-widgets": "(cd tns-core-modules-widgets/dist/package && npm link) && (cd nativescript-core && npm i ../tns-core-modules-widgets/dist/package --save)",
|
||||
"api-extractor": "api-extractor run --local --verbose && (cd nativescript-core && cat nativescript-core.header nativescript-core.d.ts > tmp_file && mv tmp_file nativescript-core.d.ts)",
|
||||
"api-extractor-ci": "api-extractor run --verbose",
|
||||
"typedoc": "npm run api-extractor && typedoc --tsconfig tsconfig.typedoc.json",
|
||||
"typedoc-dev": "npm run typedoc && cd bin/dist/apiref && npx http-server",
|
||||
"build-core": "sh ./build/build-core.sh",
|
||||
|
||||
@@ -1789,6 +1789,7 @@ export function test_nested_css_calc_and_variables() {
|
||||
|
||||
const cssVarName = `--my-width-factor-base-${Date.now()}`;
|
||||
const cssVarName2 = `--my-width-factor-${Date.now()}`;
|
||||
const undefinedCssVarName = `--my-undefined-variable-${Date.now()}`;
|
||||
|
||||
const stack = new stackModule.StackLayout();
|
||||
stack.css = `
|
||||
@@ -1809,6 +1810,10 @@ export function test_nested_css_calc_and_variables() {
|
||||
StackLayout.nested {
|
||||
${cssVarName2}: calc(var(${cssVarName}) * 2);
|
||||
}
|
||||
|
||||
StackLayout.nested-fallback {
|
||||
width: calc(calc(var(${undefinedCssVarName}, 16) / 2) * 2));
|
||||
}
|
||||
`;
|
||||
|
||||
const label = new labelModule.Label();
|
||||
@@ -1841,6 +1846,9 @@ export function test_nested_css_calc_and_variables() {
|
||||
|
||||
stack.className = "nested";
|
||||
TKUnit.assertDeepEqual(stack.width, { unit: "%", value: 1 }, "Stack - width === 100%");
|
||||
|
||||
stack.className = "nested-fallback";
|
||||
TKUnit.assertDeepEqual(stack.width, 16, "Stack - width === 16");
|
||||
}
|
||||
|
||||
export function test_css_variable_is_applied_to_normal_properties() {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"main": "index",
|
||||
"types": "index.d.ts",
|
||||
"description": "Telerik NativeScript Core Modules",
|
||||
"version": "6.2.1",
|
||||
"version": "6.3.0",
|
||||
"homepage": "https://www.nativescript.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
// Not needed. Only added for back-compatibility as some apps refer to this file. d
|
||||
// Not needed. Only added for back-compatibility as some apps refer to this file.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tns-core-modules-widgets",
|
||||
"version": "6.2.1",
|
||||
"version": "6.3.0",
|
||||
"description": "Native widgets used in the NativeScript framework.",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tns-platform-declarations",
|
||||
"version": "6.2.1",
|
||||
"version": "6.3.0",
|
||||
"description": "Platform-specific TypeScript declarations for NativeScript for accessing native objects",
|
||||
"main": "",
|
||||
"scripts": {
|
||||
|
||||
Reference in New Issue
Block a user