From ea22eb9c202d82c74e26534e3683efe9fe5bfb95 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Mon, 6 Mar 2017 14:01:22 +0200 Subject: [PATCH] refactoring circular imports --- tests/.vscode/launch.json | 10 +- tests/app/http-tests.ts | 8 +- .../app/ui/button/button-tests-native.ios.ts | 6 +- tests/app/ui/helper.ts | 16 + tests/app/ui/image/image-tests.ts | 5 +- tests/app/ui/label/label-tests-native.ios.ts | 4 +- tests/app/ui/label/label-tests.ts | 4 +- .../search-bar/search-bar-tests-native.ios.ts | 4 +- .../text-field/text-field-tests-native.ios.ts | 8 +- .../text-view/text-view-tests-native.ios.ts | 6 +- .../application/application-common.ts | 3 +- .../data/observable/observable.ts | 8 +- tns-core-modules/declarations.d.ts | 2 +- tns-core-modules/http/http-request.android.ts | 38 +- tns-core-modules/http/http-request.d.ts | 5 +- tns-core-modules/http/http-request.ios.ts | 37 +- tns-core-modules/http/http.d.ts | 1 + tns-core-modules/http/http.ts | 13 - .../image-source/image-source-common.ts | 63 - .../image-source/image-source.android.ts | 73 +- .../image-source/image-source.ios.ts | 123 +- tns-core-modules/tns-core-modules.d.ts | 7 +- .../ui/action-bar/action-bar-common.ts | 25 +- .../ui/action-bar/action-bar.android.ts | 14 +- .../ui/action-bar/action-bar.d.ts | 7 +- .../ui/action-bar/action-bar.ios.ts | 15 +- .../activity-indicator.ios.ts | 3 +- .../ui/animation/animation-common.ts | 14 +- .../ui/animation/animation.android.ts | 7 +- .../ui/animation/animation.ios.ts | 10 +- .../ui/animation/keyframe-animation.ts | 23 +- tns-core-modules/ui/builder/builder.ts | 82 +- .../ui/builder/component-builder.ts | 43 +- tns-core-modules/ui/button/button.android.ts | 5 +- tns-core-modules/ui/core/bindable.d.ts | 10 + tns-core-modules/ui/core/bindable.ts | 80 +- tns-core-modules/ui/core/properties.d.ts | 138 +- tns-core-modules/ui/core/properties.ts | 9 +- .../{definitions.d.ts => core/view-base.d.ts} | 150 +- tns-core-modules/ui/core/view-base.ts | 134 +- tns-core-modules/ui/core/view-common.ts | 1227 +---------------- tns-core-modules/ui/core/view.android.ts | 161 +-- tns-core-modules/ui/core/view.d.ts | 207 +-- tns-core-modules/ui/core/view.ios.ts | 22 +- .../ui/date-picker/date-picker.ios.ts | 12 +- tns-core-modules/ui/dialogs/dialogs-common.ts | 44 +- tns-core-modules/ui/frame/frame-common.ts | 49 +- tns-core-modules/ui/frame/frame.android.ts | 12 +- tns-core-modules/ui/frame/frame.ios.ts | 28 +- .../ui/gestures/gestures-common.ts | 3 - .../ui/gestures/gestures.android.ts | 9 +- tns-core-modules/ui/gestures/gestures.ios.ts | 15 +- tns-core-modules/ui/label/label.ios.ts | 3 +- .../ui/list-picker/list-picker.android.ts | 1 - .../ui/list-view/list-view-common.ts | 4 +- tns-core-modules/ui/page/page.ios.ts | 3 +- .../ui/search-bar/search-bar.android.ts | 5 +- .../ui/search-bar/search-bar.ios.ts | 5 +- .../ui/segmented-bar/segmented-bar.android.ts | 5 +- .../ui/segmented-bar/segmented-bar.ios.ts | 5 +- tns-core-modules/ui/slider/slider.android.ts | 14 +- tns-core-modules/ui/slider/slider.ios.ts | 6 +- .../ui/styling/background-common.ts | 6 +- tns-core-modules/ui/styling/background.d.ts | 3 +- tns-core-modules/ui/styling/background.ios.ts | 3 +- .../ui/styling/style-properties.d.ts | 151 ++ .../ui/styling/style-properties.ts | 1054 ++++++++++++++ tns-core-modules/ui/styling/style-scope.ts | 3 +- tns-core-modules/ui/styling/style.d.ts | 6 +- tns-core-modules/ui/styling/style.ts | 14 +- .../ui/tab-view/tab-view.android.ts | 14 +- tns-core-modules/ui/tab-view/tab-view.ios.ts | 8 +- .../ui/text-base/text-base.android.ts | 8 +- .../ui/text-base/text-base.ios.ts | 7 +- .../ui/text-field/text-field.ios.ts | 4 +- .../ui/text-view/text-view.ios.ts | 6 +- .../ui/time-picker/time-picker.ios.ts | 16 +- .../ui/transition/transition.android.ts | 11 +- .../ui/transition/transition.d.ts | 2 +- tns-core-modules/ui/utils.ios.ts | 2 +- tns-core-modules/utils/utils.d.ts | 28 +- tns-core-modules/utils/utils.ios.ts | 18 +- 82 files changed, 2229 insertions(+), 2188 deletions(-) delete mode 100644 tns-core-modules/image-source/image-source-common.ts rename tns-core-modules/ui/{definitions.d.ts => core/view-base.d.ts} (55%) create mode 100644 tns-core-modules/ui/styling/style-properties.d.ts create mode 100644 tns-core-modules/ui/styling/style-properties.ts diff --git a/tests/.vscode/launch.json b/tests/.vscode/launch.json index f0ef4397b..c0c6c021b 100644 --- a/tests/.vscode/launch.json +++ b/tests/.vscode/launch.json @@ -9,7 +9,10 @@ "appRoot": "${workspaceRoot}", "sourceMaps": true, "watch": true, - "stopOnEntry": true + "stopOnEntry": true, + "tnsArgs": [ + "--sync-all-files" + ] }, { "name": "Attach on iOS", @@ -28,7 +31,10 @@ "appRoot": "${workspaceRoot}", "sourceMaps": true, "watch": true, - "stopOnEntry": true + "stopOnEntry": false, + "tnsArgs": [ + "--sync-all-files" + ] }, { "name": "Attach on Android", diff --git a/tests/app/http-tests.ts b/tests/app/http-tests.ts index 0ab0f3265..8d0751a54 100644 --- a/tests/app/http-tests.ts +++ b/tests/app/http-tests.ts @@ -3,6 +3,8 @@ import * as TKUnit from "./TKUnit"; import * as http from "http"; import * as types from "utils/types"; import * as fs from "file-system"; +import { addHeader } from "http/http-request"; + require("globals"); // >> http-require @@ -512,10 +514,10 @@ export var test_request_headersWithSameKeyAddedProperly = function (done) { var value1 = "value1"; var value2 = "value2"; - var headers = {}; + var headers: http.Headers = {}; - (http).addHeader(headers, keyName, value1); - (http).addHeader(headers, keyName, value2); + addHeader(headers, keyName, value1); + addHeader(headers, keyName, value2); try { TKUnit.assertTrue(Array.isArray(headers[keyName])); diff --git a/tests/app/ui/button/button-tests-native.ios.ts b/tests/app/ui/button/button-tests-native.ios.ts index 0074829fd..84e61ad84 100644 --- a/tests/app/ui/button/button-tests-native.ios.ts +++ b/tests/app/ui/button/button-tests-native.ios.ts @@ -1,7 +1,7 @@ import * as buttonModule from "ui/button"; import * as colorModule from "color"; -import * as utilsModule from "utils/utils"; import * as enums from "ui/enums"; +import { getColor } from "../helper"; export function getNativeText(button: buttonModule.Button): string { return button.ios.titleForState(UIControlState.Normal); @@ -16,11 +16,11 @@ export function getNativeFontSize(button: buttonModule.Button): number { } export function getNativeColor(button: buttonModule.Button): colorModule.Color { - return utilsModule.ios.getColor(button.ios.titleColorForState(UIControlState.Normal)); + return getColor(button.ios.titleColorForState(UIControlState.Normal)); } export function getNativeBackgroundColor(button: buttonModule.Button): colorModule.Color { - return utilsModule.ios.getColor(button.ios.backgroundColor); + return getColor(button.ios.backgroundColor); } export function getNativeTextAlignment(button: buttonModule.Button): string { diff --git a/tests/app/ui/helper.ts b/tests/app/ui/helper.ts index b0322e52a..f6aa7f1a8 100644 --- a/tests/app/ui/helper.ts +++ b/tests/app/ui/helper.ts @@ -11,12 +11,28 @@ import * as formattedStringModule from "text/formatted-string"; import * as spanModule from "text/span"; import { ActionBar } from "ui/action-bar"; import { unsetValue } from "ui/core/view"; +import { Color } from "color"; var DELTA = 0.1; export var ASYNC = 0.2; export var MEMORY_ASYNC = 2; +export function getColor(uiColor: UIColor): Color { + var redRef = new interop.Reference(); + var greenRef = new interop.Reference(); + var blueRef = new interop.Reference(); + var alphaRef = new interop.Reference(); + + uiColor.getRedGreenBlueAlpha(redRef, greenRef, blueRef, alphaRef); + var red = redRef.value * 255; + var green = greenRef.value * 255; + var blue = blueRef.value * 255; + var alpha = alphaRef.value * 255; + + return new Color(alpha, red, green, blue); +} + function clearPage(): void { let newPage = getCurrentPage(); if (!newPage) { diff --git a/tests/app/ui/image/image-tests.ts b/tests/app/ui/image/image-tests.ts index 9ff5d13e7..ac6f8ebb2 100644 --- a/tests/app/ui/image/image-tests.ts +++ b/tests/app/ui/image/image-tests.ts @@ -5,6 +5,7 @@ import { isIOS, isAndroid } from "platform"; import { PropertyChangeData } from "data/observable"; import * as utils from "utils/utils"; import * as TKUnit from "../../TKUnit"; +import { getColor } from "../helper"; // >> img-require import * as ImageModule from "ui/image"; @@ -384,7 +385,7 @@ export const test_tintColor = function () { TKUnit.assert(tintColor === null, "tintColor expected to be set to null"); } else if (image.ios) { - const imageColor = utils.ios.getColor(testImage.ios.tintColor); + const imageColor = getColor(testImage.ios.tintColor); TKUnit.assert(!imageColor.equals(colorRed), "imageColor expected to be different than tintColor"); } image.tintColor = colorRed; @@ -393,7 +394,7 @@ export const test_tintColor = function () { TKUnit.assert(testImage.android.getColorFilter() !== null, "tintColor expected to be set to a nonnull value"); } else if (image.ios) { - const imageColor = utils.ios.getColor(testImage.ios.tintColor); + const imageColor = getColor(testImage.ios.tintColor); TKUnit.assert(imageColor.equals(colorRed), "tintColor expected to be set to: " + colorRed); } }; diff --git a/tests/app/ui/label/label-tests-native.ios.ts b/tests/app/ui/label/label-tests-native.ios.ts index 5f6332bda..1e5994e54 100644 --- a/tests/app/ui/label/label-tests-native.ios.ts +++ b/tests/app/ui/label/label-tests-native.ios.ts @@ -1,7 +1,7 @@ import * as labelModule from "ui/label"; import * as enums from "ui/enums"; import * as colorModule from "color"; -import * as utilsModule from "utils/utils"; +import { getColor } from "../helper"; export function getNativeTextAlignment(label: labelModule.Label): string { switch (label.ios.textAlignment) { @@ -22,5 +22,5 @@ export function getNativeBackgroundColor(label: labelModule.Label): colorModule. return undefined; } var uiColor = UIColor.colorWithCGColor(layer.backgroundColor); - return utilsModule.ios.getColor(uiColor); + return getColor(uiColor); } diff --git a/tests/app/ui/label/label-tests.ts b/tests/app/ui/label/label-tests.ts index cd7ddb986..b5a608dc7 100644 --- a/tests/app/ui/label/label-tests.ts +++ b/tests/app/ui/label/label-tests.ts @@ -239,13 +239,13 @@ export class LabelTest extends testModule.UITest { actualTextSize = testLabel.ios.font.pointSize; TKUnit.assertEqual(actualTextSize, fontSize, "Wrong native FontSize"); - normalColor = utils.ios.getColor(testLabel.ios.textColor); + normalColor = helper.getColor(testLabel.ios.textColor); expColor = new colorModule.Color(color); TKUnit.assertEqual(normalColor.hex, expColor.hex); const cgColor = (testLabel.ios).layer.backgroundColor; const uiColor = UIColor.colorWithCGColor(cgColor); - actualBackgroundColor = utils.ios.getColor(uiColor); + actualBackgroundColor = helper.getColor(uiColor); expBackgroundColor = new colorModule.Color(backgroundColor); TKUnit.assertEqual(actualBackgroundColor.hex, expBackgroundColor.hex); } diff --git a/tests/app/ui/search-bar/search-bar-tests-native.ios.ts b/tests/app/ui/search-bar/search-bar-tests-native.ios.ts index 91b31528a..778d1969a 100644 --- a/tests/app/ui/search-bar/search-bar-tests-native.ios.ts +++ b/tests/app/ui/search-bar/search-bar-tests-native.ios.ts @@ -1,9 +1,9 @@ import { SearchBar } from "ui/search-bar"; import { Color } from "color"; -import * as utils from "utils/utils"; +import { getColor } from "../helper"; export function getNativeHintColor(searchBar: SearchBar): Color { - return (searchBar)._placeholderLabel ? utils.ios.getColor((searchBar)._placeholderLabel.textColor) : undefined; + return (searchBar)._placeholderLabel ? getColor((searchBar)._placeholderLabel.textColor) : undefined; } export function getNativeFontSize(searchBar: SearchBar): number { return (searchBar)._textField ? (searchBar)._textField.font.pointSize : undefined; diff --git a/tests/app/ui/text-field/text-field-tests-native.ios.ts b/tests/app/ui/text-field/text-field-tests-native.ios.ts index af1d2fad1..bb79dd3f8 100644 --- a/tests/app/ui/text-field/text-field-tests-native.ios.ts +++ b/tests/app/ui/text-field/text-field-tests-native.ios.ts @@ -1,6 +1,6 @@ import * as textFieldModule from "ui/text-field"; import * as colorModule from "color"; -import * as utilsModule from "utils/utils"; +import { getColor } from "../helper"; import * as enums from "ui/enums"; export function getNativeText(textField: textFieldModule.TextField): string { @@ -20,15 +20,15 @@ export function getNativeFontSize(textField: textFieldModule.TextField): number } export function getNativeColor(textField: textFieldModule.TextField): colorModule.Color { - return utilsModule.ios.getColor(textField.ios.textColor); + return getColor(textField.ios.textColor); } export function getNativePlaceholderColor(textField: textFieldModule.TextField): colorModule.Color { - return utilsModule.ios.getColor(textField.ios.attributedPlaceholder.attributeAtIndexEffectiveRange(NSForegroundColorAttributeName, 0, null)); + return getColor(textField.ios.attributedPlaceholder.attributeAtIndexEffectiveRange(NSForegroundColorAttributeName, 0, null)); } export function getNativeBackgroundColor(textField: textFieldModule.TextField): colorModule.Color { - return utilsModule.ios.getColor(textField.ios.backgroundColor); + return getColor(textField.ios.backgroundColor); } export function getNativeTextAlignment(textField: textFieldModule.TextField): string { diff --git a/tests/app/ui/text-view/text-view-tests-native.ios.ts b/tests/app/ui/text-view/text-view-tests-native.ios.ts index 37f08425c..e25c2cfdd 100644 --- a/tests/app/ui/text-view/text-view-tests-native.ios.ts +++ b/tests/app/ui/text-view/text-view-tests-native.ios.ts @@ -1,6 +1,6 @@ import * as textViewModule from "ui/text-view"; import * as colorModule from "color"; -import * as utilsModule from "utils/utils"; +import { getColor } from "../helper"; import * as enums from "ui/enums"; export function getNativeText(textView: textViewModule.TextView): string { @@ -25,11 +25,11 @@ export function getNativeFontSize(textView: textViewModule.TextView): number { } export function getNativeColor(textView: textViewModule.TextView): colorModule.Color { - return utilsModule.ios.getColor(textView.ios.textColor); + return getColor(textView.ios.textColor); } export function getNativeBackgroundColor(textView: textViewModule.TextView): colorModule.Color { - return utilsModule.ios.getColor(textView.ios.backgroundColor); + return getColor(textView.ios.backgroundColor); } export function getNativeTextAlignment(textView: textViewModule.TextView): string { diff --git a/tns-core-modules/application/application-common.ts b/tns-core-modules/application/application-common.ts index 92980204e..76b67ebe1 100644 --- a/tns-core-modules/application/application-common.ts +++ b/tns-core-modules/application/application-common.ts @@ -14,7 +14,6 @@ import "globals"; import { NativeScriptError, UnhandledErrorEventData, iOSApplication, AndroidApplication, CssChangedEventData } from "application"; import { NavigationEntry } from "ui/frame"; -import "../bundle-entry-points"; export const launchEvent = "launch"; export const suspendEvent = "suspend"; @@ -62,4 +61,4 @@ export function addCss(cssText: string): void { global.__onUncaughtError = function (error: NativeScriptError) { events.notify({ eventName: uncaughtErrorEvent, object: app, android: error, ios: error, error: error }); -} +} \ No newline at end of file diff --git a/tns-core-modules/data/observable/observable.ts b/tns-core-modules/data/observable/observable.ts index 9ff1d92e4..973d8b03d 100644 --- a/tns-core-modules/data/observable/observable.ts +++ b/tns-core-modules/data/observable/observable.ts @@ -185,16 +185,16 @@ export class Observable implements ObservableDefinition { } class ObservableFromObject extends Observable { - public _map: Map = new Map(); + public _map = {}; public set(name: string, value: any) { - const currentValue = this._map.get(name); + const currentValue = this._map[name]; if (currentValue === value) { return; } const newValue = WrappedValue.unwrap(value); - this._map.set(name, newValue); + this._map[name] = newValue; this.notifyPropertyChange(name, newValue); } } @@ -202,7 +202,7 @@ class ObservableFromObject extends Observable { function defineNewProperty(target: ObservableFromObject, propertyName: string): void { Object.defineProperty(target, propertyName, { get: function () { - return target._map.get(propertyName); + return target._map[propertyName]; }, set: function (value) { target.set(propertyName, value); diff --git a/tns-core-modules/declarations.d.ts b/tns-core-modules/declarations.d.ts index 289ceecae..076cd2504 100644 --- a/tns-core-modules/declarations.d.ts +++ b/tns-core-modules/declarations.d.ts @@ -116,4 +116,4 @@ interface Array { //Dialogs declare function alert(message?: any): void; -declare function confirm(message?: string): boolean; +declare function confirm(message?: string): boolean; \ No newline at end of file diff --git a/tns-core-modules/http/http-request.android.ts b/tns-core-modules/http/http-request.android.ts index 7235ab1fa..f5faa1b6e 100644 --- a/tns-core-modules/http/http-request.android.ts +++ b/tns-core-modules/http/http-request.android.ts @@ -6,7 +6,12 @@ import * as platformModule from "platform"; import * as fsModule from "file-system"; // this is imported for definition purposes only -import * as http from "http"; +import { Headers, HttpRequestOptions, HttpResponse } from "http"; + +export const enum HttpResponseEncoding { + UTF8, + GBK +} function parseJSON(source: string): any { var src = source.trim(); @@ -58,7 +63,7 @@ function onRequestComplete(requestId: number, result: org.nativescript.widgets.A } // read the headers - var headers: http.Headers = {}; + var headers: Headers = {}; if (result.headers) { var jHeaders = result.headers; var length = jHeaders.size(); @@ -66,15 +71,14 @@ function onRequestComplete(requestId: number, result: org.nativescript.widgets.A var pair: org.nativescript.widgets.Async.Http.KeyValuePair; for (i = 0; i < length; i++) { pair = jHeaders.get(i); - - (http).addHeader(headers, pair.key, pair.value); + addHeader(headers, pair.key, pair.value); } } callbacks.resolveCallback({ content: { raw: result.raw, - toString: (encoding?: http.HttpResponseEncoding) => { + toString: (encoding?: HttpResponseEncoding) => { let str: string; if (encoding) { str = decodeResponse(result.raw, encoding); @@ -87,7 +91,7 @@ function onRequestComplete(requestId: number, result: org.nativescript.widgets.A throw new Error("Response content may not be converted to string"); } }, - toJSON: (encoding?: http.HttpResponseEncoding) => { + toJSON: (encoding?: HttpResponseEncoding) => { let str: string; if (encoding) { str = decodeResponse(result.raw, encoding); @@ -136,7 +140,7 @@ function onRequestComplete(requestId: number, result: org.nativescript.widgets.A }); } -function buildJavaOptions(options: http.HttpRequestOptions) { +function buildJavaOptions(options: HttpRequestOptions) { if (typeof options.url !== "string") { throw new Error("Http request must provide a valid url."); } @@ -179,13 +183,13 @@ function buildJavaOptions(options: http.HttpRequestOptions) { return javaOptions; } -export function request(options: http.HttpRequestOptions): Promise { +export function request(options: HttpRequestOptions): Promise { if (options === undefined || options === null) { // TODO: Shouldn't we throw an error here - defensive programming return; } - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { try { // initialize the options var javaOptions = buildJavaOptions(options); @@ -210,10 +214,22 @@ export function request(options: http.HttpRequestOptions): Promiseheaders[key]).push(value); + } else { + let values: string[] = [headers[key]]; + values.push(value); + headers[key] = values; + } +} \ No newline at end of file diff --git a/tns-core-modules/http/http-request.d.ts b/tns-core-modules/http/http-request.d.ts index 3d68c3b22..f810c340e 100644 --- a/tns-core-modules/http/http-request.d.ts +++ b/tns-core-modules/http/http-request.d.ts @@ -1,6 +1,7 @@ //@private declare module "http/http-request" { - import * as http from "http"; - export var request: (options: http.HttpRequestOptions) => Promise; + import { HttpResponse, HttpRequestOptions, Headers } from "http"; + export var request: (options: HttpRequestOptions) => Promise; + export function addHeader(headers: Headers, key: string, value: string): void; } diff --git a/tns-core-modules/http/http-request.ios.ts b/tns-core-modules/http/http-request.ios.ts index 37e6ec227..3fb889d05 100644 --- a/tns-core-modules/http/http-request.ios.ts +++ b/tns-core-modules/http/http-request.ios.ts @@ -2,7 +2,7 @@ * iOS specific http request implementation. */ -import * as http from "http"; +import { HttpRequestOptions, HttpResponse, Headers } from "http"; import * as types from "utils/types"; import * as imageSourceModule from "image-source"; @@ -13,6 +13,11 @@ import getter = utils.ios.getter; import * as domainDebugger from "./../debugger/debugger"; +export const enum HttpResponseEncoding { + UTF8, + GBK +} + var device = utils.ios.getter(UIDevice, UIDevice.currentDevice).userInterfaceIdiom === UIUserInterfaceIdiom.Phone ? "Phone" : "Pad"; var GET = "GET"; @@ -59,8 +64,8 @@ function ensureImageSource() { } } -export function request(options: http.HttpRequestOptions): Promise { - return new Promise((resolve, reject) => { +export function request(options: HttpRequestOptions): Promise { + return new Promise((resolve, reject) => { try { var network = domainDebugger.getNetwork(); @@ -101,12 +106,12 @@ export function request(options: http.HttpRequestOptions): Promise { - (http).addHeader(headers, key, value); + addHeader(headers, key, value); }); } @@ -128,10 +133,8 @@ export function request(options: http.HttpRequestOptions): Promise { return NSDataToString(data, encoding); }, - toJSON: (encoding?: http.HttpResponseEncoding) => { - return parseJSON(NSDataToString(data, encoding)); - }, + toString: (encoding?: any) => NSDataToString(data, encoding), + toJSON: (encoding?: any) => parseJSON(NSDataToString(data, encoding)), toImage: () => { ensureImageSource(); return new Promise((resolve, reject) => { @@ -180,10 +183,22 @@ export function request(options: http.HttpRequestOptions): Promiseheaders[key]).push(value); + } else { + let values: string[] = [headers[key]]; + values.push(value); + headers[key] = values; + } +} \ No newline at end of file diff --git a/tns-core-modules/http/http.d.ts b/tns-core-modules/http/http.d.ts index ad3e1851c..e0ae98335 100644 --- a/tns-core-modules/http/http.d.ts +++ b/tns-core-modules/http/http.d.ts @@ -122,6 +122,7 @@ declare module "http" { UTF8, GBK } + /** * Encapsulates the content of an HttpResponse. */ diff --git a/tns-core-modules/http/http.ts b/tns-core-modules/http/http.ts index 3a00e60ce..f5299b61a 100644 --- a/tns-core-modules/http/http.ts +++ b/tns-core-modules/http/http.ts @@ -1,6 +1,5 @@ import * as image from "image-source"; import * as httpRequest from "http/http-request"; -import * as dts from "http"; global.moduleMerge(httpRequest, exports); @@ -50,16 +49,4 @@ export function getFile(arg: any, destinationFilePath?: string): Promise { } }, e => reject(e)); }); -} - -export function addHeader(headers: dts.Headers, key: string, value: string): void{ - if(!headers[key]) { - headers[key] = value; - } else if (Array.isArray(headers[key])){ - (headers[key]).push(value); - } else { - let values: string[] = [headers[key]]; - values.push(value); - headers[key] = values; - } } \ No newline at end of file diff --git a/tns-core-modules/image-source/image-source-common.ts b/tns-core-modules/image-source/image-source-common.ts deleted file mode 100644 index c754b1723..000000000 --- a/tns-core-modules/image-source/image-source-common.ts +++ /dev/null @@ -1,63 +0,0 @@ -import * as utils from "utils/utils"; -import * as httpModule from "http"; -import * as imageAssetModule from "image-asset"; - -var http: typeof httpModule; -function ensureHttp() { - if (!http) { - http = require("http"); - } -} - -// This is used for definition purposes only, it does not generate JavaScript for it. -import * as definition from "image-source"; - -export function fromAsset(asset: imageAssetModule.ImageAsset): Promise { - let image = new definition.ImageSource(); - return image.fromAsset(asset); -} - -export function fromResource(name: string): definition.ImageSource { - var image = new definition.ImageSource(); - return image.loadFromResource(name) ? image : null; -} - -export function fromFile(path: string): definition.ImageSource { - var image = new definition.ImageSource(); - return image.loadFromFile(path) ? image : null; -} - -export function fromData(data: any): definition.ImageSource { - var image = new definition.ImageSource(); - return image.loadFromData(data) ? image : null; -} - -export function fromBase64(source: string): definition.ImageSource { - var image = new definition.ImageSource(); - return image.loadFromBase64(source) ? image : null; -} - -export function fromNativeSource(source: any): definition.ImageSource { - var image = new definition.ImageSource(); - return image.setNativeSource(source) ? image : null; -} - -export function fromUrl(url: string): Promise { - ensureHttp(); - return http.getImage(url); -} - -export function fromFileOrResource(path: string): definition.ImageSource { - if (!isFileOrResourcePath(path)) { - throw new Error("Path \"" + "\" is not a valid file or resource."); - } - - if (path.indexOf(utils.RESOURCE_PREFIX) === 0) { - return fromResource(path.substr(utils.RESOURCE_PREFIX.length)); - } - return fromFile(path); -} - -export function isFileOrResourcePath(path: string): boolean { - return utils.isFileOrResourcePath(path); -} \ No newline at end of file diff --git a/tns-core-modules/image-source/image-source.android.ts b/tns-core-modules/image-source/image-source.android.ts index 6eaa0c7f4..108addfa6 100644 --- a/tns-core-modules/image-source/image-source.android.ts +++ b/tns-core-modules/image-source/image-source.android.ts @@ -1,11 +1,22 @@ -import { ImageSource as ImageSourceDeifinition } from "image-source"; - -export * from "./image-source-common"; -import * as fs from "file-system"; -import * as imageAssetModule from "image-asset"; +// Definitions. +import { ImageSource as ImageSourceDefinition } from "image-source"; +import { ImageAsset } from "image-asset"; +import * as httpModule from "http"; +// Types. +import { path as fsPath, knownFolders } from "file-system"; +import { isFileOrResourcePath, RESOURCE_PREFIX } from "utils/utils"; import { getNativeApplication } from "application"; +export { isFileOrResourcePath }; + +let http: typeof httpModule; +function ensureHttp() { + if (!http) { + http = require("http"); + } +} + let application: android.app.Application; let resources: android.content.res.Resources; @@ -24,11 +35,11 @@ function getResources() { return resources; } -export class ImageSource implements ImageSourceDeifinition { +export class ImageSource implements ImageSourceDefinition { public android: android.graphics.Bitmap; public ios: UIImage; - public fromAsset(asset: imageAssetModule.ImageAsset): Promise { + public fromAsset(asset: ImageAsset): Promise { return new Promise((resolve, reject) => { asset.getImageAsync((image, err) => { if (image) { @@ -87,7 +98,7 @@ export class ImageSource implements ImageSourceDeifinition { public loadFromFile(path: string): boolean { let fileName = typeof path === "string" ? path.trim() : ""; if (fileName.indexOf("~/") === 0) { - fileName = fs.path.join(fs.knownFolders.currentApp().path, fileName.replace("~/", "")); + fileName = fsPath.join(knownFolders.currentApp().path, fileName.replace("~/", "")); } this.setRotationAngleFromFile(fileName); @@ -198,4 +209,50 @@ function getTargetFormat(format: "png" | "jpeg" | "jpg"): android.graphics.Bitma default: return android.graphics.Bitmap.CompressFormat.PNG; } +} + +export function fromAsset(asset: ImageAsset): Promise { + const image = new ImageSource(); + return image.fromAsset(asset); +} + +export function fromResource(name: string): ImageSource { + const image = new ImageSource(); + return image.loadFromResource(name) ? image : null; +} + +export function fromFile(path: string): ImageSource { + const image = new ImageSource(); + return image.loadFromFile(path) ? image : null; +} + +export function fromData(data: any): ImageSource { + const image = new ImageSource(); + return image.loadFromData(data) ? image : null; +} + +export function fromBase64(source: string): ImageSource { + const image = new ImageSource(); + return image.loadFromBase64(source) ? image : null; +} + +export function fromNativeSource(source: any): ImageSource { + const image = new ImageSource(); + return image.setNativeSource(source) ? image : null; +} + +export function fromUrl(url: string): Promise { + ensureHttp(); + return http.getImage(url); +} + +export function fromFileOrResource(path: string): ImageSource { + if (!isFileOrResourcePath(path)) { + throw new Error("Path \"" + "\" is not a valid file or resource."); + } + + if (path.indexOf(RESOURCE_PREFIX) === 0) { + return fromResource(path.substr(RESOURCE_PREFIX.length)); + } + return fromFile(path); } \ No newline at end of file diff --git a/tns-core-modules/image-source/image-source.ios.ts b/tns-core-modules/image-source/image-source.ios.ts index 3ddcf5258..ea2497650 100644 --- a/tns-core-modules/image-source/image-source.ios.ts +++ b/tns-core-modules/image-source/image-source.ios.ts @@ -1,21 +1,30 @@ -import * as definition from "image-source"; -import * as types from "utils/types"; -import * as fs from "file-system"; -import * as common from "./image-source-common"; -import * as enums from "ui/enums"; -import * as imageAssetModule from "image-asset"; +// Definitions. +import { ImageSource as ImageSourceDefinition } from "image-source"; +import { ImageAsset } from "image-asset"; +import * as httpModule from "http"; -global.moduleMerge(common, exports); +// Types. +import { path as fsPath, knownFolders } from "file-system"; +import { isFileOrResourcePath, RESOURCE_PREFIX } from "utils/utils"; -export class ImageSource implements definition.ImageSource { +export { isFileOrResourcePath }; + +let http: typeof httpModule; +function ensureHttp() { + if (!http) { + http = require("http"); + } +} + +export class ImageSource implements ImageSourceDefinition { public android: android.graphics.Bitmap; public ios: UIImage; - public fromAsset(asset: imageAssetModule.ImageAsset) { - return new Promise((resolve, reject) => { + public fromAsset(asset: ImageAsset) { + return new Promise((resolve, reject) => { asset.getImageAsync((image, err) => { if (image) { - resolve(common.fromNativeSource(image)); + resolve(fromNativeSource(image)); } else { reject(err); @@ -50,26 +59,14 @@ export class ImageSource implements definition.ImageSource { } public loadFromFile(path: string): boolean { - var fileName = types.isString(path) ? path.trim() : ""; - - if (fileName.indexOf("~/") === 0) { - fileName = fs.path.join(fs.knownFolders.currentApp().path, fileName.replace("~/", "")); - } - - this.ios = UIImage.imageWithContentsOfFile(fileName); + this.ios = UIImage.imageWithContentsOfFile(getFileName(path)); return this.ios != null; } public fromFile(path: string): Promise { return new Promise((resolve, reject) => { try { - var fileName = types.isString(path) ? path.trim() : ""; - - if (fileName.indexOf("~/") === 0) { - fileName = fs.path.join(fs.knownFolders.currentApp().path, fileName.replace("~/", "")); - } - - (UIImage).tns_decodeImageWidthContentsOfFileCompletion(fileName, image => { + (UIImage).tns_decodeImageWidthContentsOfFileCompletion(getFileName(path), image => { this.ios = image; resolve(true); }); @@ -98,8 +95,8 @@ export class ImageSource implements definition.ImageSource { } public loadFromBase64(source: string): boolean { - if (types.isString(source)) { - var data = NSData.alloc().initWithBase64EncodedStringOptions(source, NSDataBase64DecodingOptions.IgnoreUnknownCharacters); + if (typeof source === "string") { + const data = NSData.alloc().initWithBase64EncodedStringOptions(source, NSDataBase64DecodingOptions.IgnoreUnknownCharacters); this.ios = UIImage.imageWithData(data); } @@ -128,13 +125,12 @@ export class ImageSource implements definition.ImageSource { return source != null; } - public saveToFile(path: string, format: string, quality?: number): boolean { + public saveToFile(path: string, format: "png" | "jpeg" | "jpg", quality?: number): boolean { if (!this.ios) { return false; } - var data = getImageData(this.ios, format, quality); - + const data = getImageData(this.ios, format, quality); if (data) { return data.writeToFileAtomically(path, true); } @@ -142,14 +138,13 @@ export class ImageSource implements definition.ImageSource { return false; } - public toBase64String(format: string, quality?: number): string { - var res = null; + public toBase64String(format: "png" | "jpeg" | "jpg", quality?: number): string { + let res = null; if (!this.ios) { return res; } - var data = getImageData(this.ios, format, quality); - + const data = getImageData(this.ios, format, quality); if (data) { res = data.base64Encoding(); } @@ -179,15 +174,69 @@ export class ImageSource implements definition.ImageSource { } } -function getImageData(instance: UIImage, format: string, quality = 1.0): NSData { +function getFileName(path: string): string { + let fileName = typeof path === "string" ? path.trim() : ""; + if (fileName.indexOf("~/") === 0) { + fileName = fsPath.join(knownFolders.currentApp().path, fileName.replace("~/", "")); + } + return fileName; +} + +function getImageData(instance: UIImage, format: "png" | "jpeg" | "jpg", quality = 1.0): NSData { var data = null; switch (format) { - case enums.ImageFormat.png: // PNG + case "png": // PNG data = UIImagePNGRepresentation(instance); break; - case enums.ImageFormat.jpeg || enums.ImageFormat.jpg: // JPEG + case "jpeg" || "jpg": // JPEG data = UIImageJPEGRepresentation(instance, quality); break; } return data; +} + +export function fromAsset(asset: ImageAsset): Promise { + const image = new ImageSource(); + return image.fromAsset(asset); +} + +export function fromResource(name: string): ImageSource { + const image = new ImageSource(); + return image.loadFromResource(name) ? image : null; +} + +export function fromFile(path: string): ImageSource { + const image = new ImageSource(); + return image.loadFromFile(path) ? image : null; +} + +export function fromData(data: any): ImageSource { + const image = new ImageSource(); + return image.loadFromData(data) ? image : null; +} + +export function fromBase64(source: string): ImageSource { + const image = new ImageSource(); + return image.loadFromBase64(source) ? image : null; +} + +export function fromNativeSource(source: any): ImageSource { + const image = new ImageSource(); + return image.setNativeSource(source) ? image : null; +} + +export function fromUrl(url: string): Promise { + ensureHttp(); + return http.getImage(url); +} + +export function fromFileOrResource(path: string): ImageSource { + if (!isFileOrResourcePath(path)) { + throw new Error("Path \"" + "\" is not a valid file or resource."); + } + + if (path.indexOf(RESOURCE_PREFIX) === 0) { + return fromResource(path.substr(RESOURCE_PREFIX.length)); + } + return fromFile(path); } \ No newline at end of file diff --git a/tns-core-modules/tns-core-modules.d.ts b/tns-core-modules/tns-core-modules.d.ts index 13c79f3bb..1a4fdaece 100644 --- a/tns-core-modules/tns-core-modules.d.ts +++ b/tns-core-modules/tns-core-modules.d.ts @@ -28,7 +28,8 @@ /// /// /// -/// +/// +/// /// /// /// @@ -43,6 +44,7 @@ /// /// /// +/// /// /// /// @@ -78,6 +80,7 @@ /// /// /// +/// /// /// /// @@ -96,4 +99,4 @@ /// /// /// -/// +/// \ No newline at end of file diff --git a/tns-core-modules/ui/action-bar/action-bar-common.ts b/tns-core-modules/ui/action-bar/action-bar-common.ts index c5092ad73..7e0276169 100644 --- a/tns-core-modules/ui/action-bar/action-bar-common.ts +++ b/tns-core-modules/ui/action-bar/action-bar-common.ts @@ -2,13 +2,12 @@ ActionBar as ActionBarDefinition, ActionItems as ActionItemsDefinition, ActionItem as ActionItemDefinition, - IOSActionItemSettings, AndroidActionItemSettings, AndroidActionBarSettings, - NavigationButton + NavigationButton, IOSActionItemSettings, AndroidActionItemSettings, AndroidActionBarSettings } from "ui/action-bar"; export * from "ui/core/view"; -import { View, ViewBase, Property, unsetValue, horizontalAlignmentProperty, verticalAlignmentProperty, HorizontalAlignment, VerticalAlignment } from "ui/core/view"; +import { View, ViewBase, Property, unsetValue, horizontalAlignmentProperty, verticalAlignmentProperty } from "ui/core/view"; export module knownCollections { export var actionItems = "actionItems"; @@ -63,8 +62,8 @@ export class ActionBarBase extends View implements ActionBarDefinition { this._titleView = value; if (this._titleView) { - this._titleView.style[horizontalAlignmentProperty.cssName] = HorizontalAlignment.CENTER; - this._titleView.style[verticalAlignmentProperty.cssName] = VerticalAlignment.MIDDLE; + this._titleView.style[horizontalAlignmentProperty.cssName] = "center"; + this._titleView.style[verticalAlignmentProperty.cssName] = "middle"; this._addView(this._titleView); } @@ -108,18 +107,6 @@ export class ActionBarBase extends View implements ActionBarDefinition { } } - public _addChildFromBuilder(name: string, value: any) { - if (value instanceof NavigationButton) { - this.navigationButton = value; - } - else if (value instanceof ActionItemDefinition) { - this.actionItems.addItem(value); - } - else if (value instanceof View) { - this.titleView = value; - } - } - public eachChildView(callback: (child: View) => boolean) { const titleView = this.titleView; if (titleView) { @@ -267,8 +254,8 @@ export class ActionItemBase extends ViewBase implements ActionItemDefinition { if (this._actionView) { this._addView(this._actionView); - this._actionView.style[horizontalAlignmentProperty.cssName] = HorizontalAlignment.CENTER; - this._actionView.style[verticalAlignmentProperty.cssName] = VerticalAlignment.MIDDLE; + this._actionView.style[horizontalAlignmentProperty.cssName] = "center"; + this._actionView.style[verticalAlignmentProperty.cssName] = "middle"; } if (this._actionBar) { diff --git a/tns-core-modules/ui/action-bar/action-bar.android.ts b/tns-core-modules/ui/action-bar/action-bar.android.ts index afadeb302..693979bd5 100644 --- a/tns-core-modules/ui/action-bar/action-bar.android.ts +++ b/tns-core-modules/ui/action-bar/action-bar.android.ts @@ -99,7 +99,7 @@ export class AndroidActionBarSettings implements AndroidActionBarSettingsDefinit } export class NavigationButton extends ActionItem { - + // } export class ActionBar extends ActionBarBase { @@ -123,6 +123,18 @@ export class ActionBar extends ActionBarBase { return this._toolbar; } + public _addChildFromBuilder(name: string, value: any) { + if (value instanceof NavigationButton) { + this.navigationButton = value; + } + else if (value instanceof ActionItem) { + this.actionItems.addItem(value); + } + else if (value instanceof View) { + this.titleView = value; + } + } + public _createNativeView() { initializeMenuItemClickListener(); this._toolbar = new android.support.v7.widget.Toolbar(this._context); diff --git a/tns-core-modules/ui/action-bar/action-bar.d.ts b/tns-core-modules/ui/action-bar/action-bar.d.ts index 4642a05f5..9db9dcc00 100644 --- a/tns-core-modules/ui/action-bar/action-bar.d.ts +++ b/tns-core-modules/ui/action-bar/action-bar.d.ts @@ -2,12 +2,12 @@ * Contains the action bar related classes. */ declare module "ui/action-bar" { - import { EventData, ViewBase, View, AddArrayFromBuilder, AddChildFromBuilder } from "ui/core/view"; + import { EventData, ViewBase, View } from "ui/core/view"; /** * Provides an abstraction over the ActionBar (android) and NavigationBar (iOS). */ - export class ActionBar extends View implements AddArrayFromBuilder, AddChildFromBuilder { + export class ActionBar extends View { /** * Gets or sets the action bar title. @@ -42,9 +42,6 @@ declare module "ui/action-bar" { //@private _isEmpty(): boolean; //@endprivate - - _addArrayFromBuilder(name: string, value: Array): void; - _addChildFromBuilder(name: string, value: any): void; } /** diff --git a/tns-core-modules/ui/action-bar/action-bar.ios.ts b/tns-core-modules/ui/action-bar/action-bar.ios.ts index 3c7f6fb8b..374d6fe97 100644 --- a/tns-core-modules/ui/action-bar/action-bar.ios.ts +++ b/tns-core-modules/ui/action-bar/action-bar.ios.ts @@ -1,7 +1,6 @@ import { IOSActionItemSettings, ActionItem as ActionItemDefinition } from "ui/action-bar"; -import { ActionItemBase, ActionBarBase, isVisible, View, colorProperty, backgroundColorProperty, backgroundInternalProperty, layout } from "./action-bar-common"; +import { ActionItemBase, ActionBarBase, isVisible, View, colorProperty, backgroundColorProperty, backgroundInternalProperty, layout, Color } from "./action-bar-common"; import { ImageSource, fromFileOrResource } from "image-source"; -import { Color } from "color"; export * from "./action-bar-common"; @@ -60,6 +59,18 @@ export class ActionBar extends ActionBarBase { return null; } + public _addChildFromBuilder(name: string, value: any) { + if (value instanceof NavigationButton) { + this.navigationButton = value; + } + else if (value instanceof ActionItem) { + this.actionItems.addItem(value); + } + else if (value instanceof View) { + this.titleView = value; + } + } + public update() { const page = this.page; // Page should be attached to frame to update the action bar. diff --git a/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts b/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts index 3b36084ad..342643274 100644 --- a/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts +++ b/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts @@ -1,5 +1,4 @@ -import { ActivityIndicatorBase, busyProperty, colorProperty } from "./activity-indicator-common"; -import { Color } from "color"; +import { ActivityIndicatorBase, busyProperty, colorProperty, Color } from "./activity-indicator-common"; export * from "./activity-indicator-common"; diff --git a/tns-core-modules/ui/animation/animation-common.ts b/tns-core-modules/ui/animation/animation-common.ts index 96c8a6dcf..5b99ba0db 100644 --- a/tns-core-modules/ui/animation/animation-common.ts +++ b/tns-core-modules/ui/animation/animation-common.ts @@ -1,16 +1,20 @@ -import { +// Definitions. +import { CubicBezierAnimationCurve as CubicBezierAnimationCurveDefinition, AnimationPromise as AnimationPromiseDefinition, Animation as AnimationBaseDefinition, AnimationDefinition, Pair } from "ui/animation"; +import { View } from "ui/core/view"; + +// Types. +import { Color } from "color"; +import { isEnabled as traceEnabled, write as traceWrite, categories as traceCategories } from "trace"; + +export { Color, traceEnabled, traceWrite, traceCategories }; export { AnimationPromise } from "ui/animation"; -import { View, Color, traceEnabled, traceWrite, traceCategories } from "ui/core/view"; - -export * from "ui/core/view"; - export module Properties { export var opacity = "opacity"; export var backgroundColor = "backgroundColor"; diff --git a/tns-core-modules/ui/animation/animation.android.ts b/tns-core-modules/ui/animation/animation.android.ts index 330a22083..274eb9b66 100644 --- a/tns-core-modules/ui/animation/animation.android.ts +++ b/tns-core-modules/ui/animation/animation.android.ts @@ -1,10 +1,9 @@ import { AnimationDefinition } from "ui/animation"; +import { AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, Color, traceWrite, traceEnabled, traceCategories } from "./animation-common"; import { - AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, opacityProperty, backgroundColorProperty, rotateProperty, - translateXProperty, translateYProperty, - scaleXProperty, scaleYProperty, Color, traceWrite, traceEnabled, traceCategories -} from "./animation-common"; + translateXProperty, translateYProperty, scaleXProperty, scaleYProperty +} from "ui/styling/style-properties"; import { CacheLayerType, layout } from "utils/utils"; import lazy from "utils/lazy"; diff --git a/tns-core-modules/ui/animation/animation.ios.ts b/tns-core-modules/ui/animation/animation.ios.ts index 2aea2e088..3f72b0c97 100644 --- a/tns-core-modules/ui/animation/animation.ios.ts +++ b/tns-core-modules/ui/animation/animation.ios.ts @@ -1,9 +1,11 @@ import { AnimationDefinition } from "ui/animation"; +import { View } from "ui/core/view"; + +import { AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, traceWrite, traceEnabled, traceCategories } from "./animation-common"; import { - AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, View, opacityProperty, backgroundColorProperty, rotateProperty, - translateXProperty, translateYProperty, - scaleXProperty, scaleYProperty, traceEnabled, traceWrite, traceCategories, Length -} from "./animation-common"; + Length, opacityProperty, backgroundColorProperty, rotateProperty, + translateXProperty, translateYProperty, scaleXProperty, scaleYProperty +} from "ui/styling/style-properties"; import { ios } from "utils/utils"; diff --git a/tns-core-modules/ui/animation/keyframe-animation.ts b/tns-core-modules/ui/animation/keyframe-animation.ts index 7f8b4dd36..75a89965c 100644 --- a/tns-core-modules/ui/animation/keyframe-animation.ts +++ b/tns-core-modules/ui/animation/keyframe-animation.ts @@ -1,3 +1,4 @@ +// Definitions. import { KeyframeDeclaration as KeyframeDeclarationDefinition, KeyframeInfo as KeyframeInfoDefinition, @@ -5,19 +6,17 @@ import { KeyframeAnimation as KeyframeAnimationDefinition } from "ui/animation/keyframe-animation"; -import { - View, - backgroundColorProperty, - scaleXProperty, - scaleYProperty, - translateXProperty, - translateYProperty, - rotateProperty, - opacityProperty, - unsetValue, - Color -} from "ui/core/view"; +import { View, Color } from "ui/core/view"; + +// Types. +import { unsetValue } from "ui/core/properties"; import { Animation } from "ui/animation"; +import { + backgroundColorProperty, + scaleXProperty, scaleYProperty, + translateXProperty, translateYProperty, + rotateProperty, opacityProperty +} from "ui/styling/style-properties"; export class KeyframeDeclaration implements KeyframeDeclarationDefinition { public property: string; diff --git a/tns-core-modules/ui/builder/builder.ts b/tns-core-modules/ui/builder/builder.ts index 50a185350..6a20cf5bd 100644 --- a/tns-core-modules/ui/builder/builder.ts +++ b/tns-core-modules/ui/builder/builder.ts @@ -1,15 +1,20 @@ -import { debug, ScopeError, SourceError, Source } from "utils/debug"; +// Definitions. +import { LoadOptions } from "ui/builder"; +import { View, ViewBase, Template, KeyedTemplate } from "ui/core/view"; + +// Types. +import { debug, ScopeError, SourceError, Source } from "utils/debug"; import * as xml from "xml"; -import { View, Template, KeyedTemplate } from "ui/core/view"; import { File, path, knownFolders } from "file-system"; -import { isString, isFunction, isDefined } from "utils/types"; +import { isString, isDefined } from "utils/types"; import { ComponentModule, setPropertyValue, getComponentModule } from "ui/builder/component-builder"; import { platformNames, device } from "platform"; -import { LoadOptions } from "ui/builder"; -import { Page } from "ui/page"; import { resolveFileName } from "file-system/file-name-resolver"; import * as traceModule from "trace"; +const ios = platformNames.ios.toLowerCase(); +const android = platformNames.android.toLowerCase(); + const defaultNameSpaceMatcher = /tns\.xsd$/i; var trace: typeof traceModule; @@ -20,22 +25,15 @@ function ensureTrace() { } export function parse(value: string | Template, context: any): View { - if (isString(value)) { - var viewToReturn: View; - - if (context instanceof View) { - context = getExports(context); - } - - var componentModule = parseInternal(value, context); - - if (componentModule) { - viewToReturn = componentModule.component; - } - - return viewToReturn; - } else if (isFunction(value)) { + if (typeof value === "function") { return (