diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj
index e52657c78..df52b4a5a 100644
--- a/CrossPlatformModules.csproj
+++ b/CrossPlatformModules.csproj
@@ -1623,11 +1623,7 @@
component-builder.d.ts
-
- template-builder.d.ts
-
-
@@ -2119,7 +2115,7 @@
False
-
+
\ No newline at end of file
diff --git a/application/application-common.ts b/application/application-common.ts
index 377c8cdf9..70c099870 100644
--- a/application/application-common.ts
+++ b/application/application-common.ts
@@ -1,9 +1,9 @@
require("globals");
import definition = require("application");
-import fs = require("file-system");
-import styleScope = require("ui/styling/style-scope");
import observable = require("data/observable");
import frame = require("ui/frame");
+import * as fileSystemModule from "file-system";
+import * as styleScopeModule from "ui/styling/style-scope";
var events = new observable.Observable();
global.moduleMerge(events, exports);
@@ -41,6 +41,9 @@ export var ios = undefined;
export function loadCss() {
if (definition.cssFile) {
+ var fs: typeof fileSystemModule = require("file-system");
+ var styleScope: typeof styleScopeModule = require("ui/styling/style-scope");
+
var cssFileName = fs.path.join(fs.knownFolders.currentApp().path, definition.cssFile);
if (fs.File.exists(cssFileName)) {
var file = fs.File.fromPath(cssFileName);
diff --git a/application/application.android.ts b/application/application.android.ts
index 7b501d7fc..895f253f2 100644
--- a/application/application.android.ts
+++ b/application/application.android.ts
@@ -1,10 +1,9 @@
import appModule = require("./application-common");
import dts = require("application");
import frame = require("ui/frame");
-import types = require("utils/types");
import observable = require("data/observable");
-import enums = require("ui/enums");
-import fileResolverModule = require("file-system/file-name-resolver");
+import * as typesModule from "utils/types";
+import * as fileResolverModule from "file-system/file-name-resolver";
global.moduleMerge(appModule, exports);
@@ -306,6 +305,8 @@ class BroadcastReceiver extends android.content.BroadcastReceiver {
}
global.__onUncaughtError = function (error: Error) {
+ var types: typeof typesModule = require("utils/types");
+
// TODO: Obsolete this
if (types.isFunction(exports.onUncaughtError)) {
exports.onUncaughtError(error);
@@ -331,6 +332,8 @@ function onConfigurationChanged(context: android.content.Context, intent: androi
if (currentOrientation !== orientation) {
currentOrientation = orientation;
+ var enums = require("ui/enums");
+
var newValue;
switch (orientation) {
case android.content.res.Configuration.ORIENTATION_LANDSCAPE:
@@ -344,7 +347,7 @@ function onConfigurationChanged(context: android.content.Context, intent: androi
break;
}
- exports.notify( {
+ exports.notify({
eventName: dts.orientationChangedEvent,
android: context,
newValue: newValue,
@@ -358,8 +361,10 @@ global.__onLiveSync = function () {
return;
}
+ var fileResolver: typeof fileResolverModule = require("file-system/file-name-resolver");
+
// Clear file resolver cache to respect newly added files.
- fileResolverModule.clearCache();
+ fileResolver.clearCache();
// Reload app.css in case it was changed.
appModule.loadCss();
diff --git a/application/application.ios.ts b/application/application.ios.ts
index 4f2dc6241..983659665 100644
--- a/application/application.ios.ts
+++ b/application/application.ios.ts
@@ -1,13 +1,12 @@
-import appModule = require("./application-common");
+import common = require("./application-common");
import frame = require("ui/frame");
-import types = require("utils/types");
-import view = require("ui/core/view");
import definition = require("application");
-import enums = require("ui/enums");
-import uiUtils = require("ui/utils");
-import fileResolverModule = require("file-system/file-name-resolver");
+import * as uiUtilsModule from "ui/utils";
+import * as typesModule from "utils/types";
+import * as fileResolverModule from "file-system/file-name-resolver";
+import * as enumsModule from "ui/enums";
-global.moduleMerge(appModule, exports);
+global.moduleMerge(common, exports);
class Responder extends UIResponder {
//
@@ -15,7 +14,7 @@ class Responder extends UIResponder {
class Window extends UIWindow {
- private _content: view.View;
+ private _content;
initWithFrame(frame: CGRect): UIWindow {
var window = super.initWithFrame(frame);
@@ -25,14 +24,16 @@ class Window extends UIWindow {
return window;
}
- public get content(): view.View {
+ public get content() {
return this._content;
}
- public set content(value: view.View) {
+ public set content(value) {
this._content = value;
}
public layoutSubviews(): void {
+ var uiUtils: typeof uiUtilsModule = require("ui/utils");
+
uiUtils.ios._layoutRootView(this._content, UIScreen.mainScreen().bounds);
}
}
@@ -113,7 +114,7 @@ class IOSApplication implements definition.iOSApplication {
}
exports.notify({
- eventName: definition.launchEvent,
+ eventName: exports.launchEvent,
object: this,
ios: notification.userInfo && notification.userInfo.objectForKey("UIApplicationLaunchOptionsLocalNotificationKey") || null
});
@@ -121,9 +122,9 @@ class IOSApplication implements definition.iOSApplication {
var topFrame = frame.topmost();
if (!topFrame) {
// try to navigate to the mainEntry/Module (if specified)
- var navParam = definition.mainEntry;
+ var navParam = exports.mainEntry;
if (!navParam) {
- navParam = definition.mainModule;
+ navParam = exports.mainModule;
}
if (navParam) {
@@ -147,7 +148,7 @@ class IOSApplication implements definition.iOSApplication {
exports.onResume();
}
- exports.notify({ eventName: definition.resumeEvent, object: this, ios: UIApplication.sharedApplication() });
+ exports.notify({ eventName: exports.resumeEvent, object: this, ios: UIApplication.sharedApplication() });
}
private didEnterBackground(notification: NSNotification) {
@@ -155,7 +156,7 @@ class IOSApplication implements definition.iOSApplication {
exports.onSuspend();
}
- exports.notify({ eventName: definition.suspendEvent, object: this, ios: UIApplication.sharedApplication() });
+ exports.notify({ eventName: exports.suspendEvent, object: this, ios: UIApplication.sharedApplication() });
}
private willTerminate(notification: NSNotification) {
@@ -163,7 +164,7 @@ class IOSApplication implements definition.iOSApplication {
exports.onExit();
}
- exports.notify({ eventName: definition.exitEvent, object: this, ios: UIApplication.sharedApplication() });
+ exports.notify({ eventName: exports.exitEvent, object: this, ios: UIApplication.sharedApplication() });
}
private didReceiveMemoryWarning(notification: NSNotification) {
@@ -171,7 +172,7 @@ class IOSApplication implements definition.iOSApplication {
exports.onLowMemory();
}
- exports.notify({ eventName: definition.lowMemoryEvent, object: this, android: undefined, ios: UIApplication.sharedApplication() });
+ exports.notify({ eventName: exports.lowMemoryEvent, object: this, android: undefined, ios: UIApplication.sharedApplication() });
}
private orientationDidChange(notification: NSNotification) {
@@ -180,6 +181,8 @@ class IOSApplication implements definition.iOSApplication {
if (this._currentOrientation !== orientation) {
this._currentOrientation = orientation;
+ var enums: typeof enumsModule = require("ui/enums");
+
var newValue;
switch (orientation) {
case UIDeviceOrientation.UIDeviceOrientationLandscapeRight:
@@ -196,7 +199,7 @@ class IOSApplication implements definition.iOSApplication {
}
exports.notify({
- eventName: definition.orientationChangedEvent,
+ eventName: exports.orientationChangedEvent,
ios: this,
newValue: newValue,
object: this
@@ -210,19 +213,21 @@ var iosApp = new IOSApplication();
exports.ios = iosApp;
global.__onUncaughtError = function (error: Error) {
+ var types: typeof typesModule = require("utils/types");
+
// TODO: This should be obsoleted
if (types.isFunction(exports.onUncaughtError)) {
exports.onUncaughtError(error);
}
- definition.notify({ eventName: definition.uncaughtErrorEvent, object: definition.ios, ios: error });
+ exports.notify({ eventName: exports.uncaughtErrorEvent, object: exports.ios, ios: error });
}
var started: boolean = false;
exports.start = function () {
if (!started) {
started = true;
- appModule.loadCss();
+ exports.loadCss();
UIApplicationMain(0, null, null, exports.ios && exports.ios.delegate ? NSStringFromClass(exports.ios.delegate) : NSStringFromClass(Responder));
} else {
throw new Error("iOS Application already started!");
@@ -234,11 +239,13 @@ global.__onLiveSync = function () {
return;
}
+ var fileResolver: typeof fileResolverModule = require("file-system/file-name-resolver");
+
// Clear file resolver cache to respect newly added files.
- fileResolverModule.clearCache();
+ fileResolver.clearCache();
// Reload app.css in case it was changed.
- appModule.loadCss();
+ exports.loadCss();
// Reload current page.
frame.reloadPage();
diff --git a/apps/tests/app/app.ts b/apps/tests/app/app.ts
index bc1bc3cc5..d3330cd84 100644
--- a/apps/tests/app/app.ts
+++ b/apps/tests/app/app.ts
@@ -1,4 +1,12 @@
-import application = require("application");
+var start;
+if (typeof NSDate !== "undefined") {
+ start = NSDate.date();
+}
+else {
+ start = java.lang.System.currentTimeMillis();
+}
+
+import application = require("application");
// Specify custom UIApplicationDelegate.
/*
@@ -129,4 +137,14 @@ if (application.android) {
});
}
+var time;
+if (typeof NSDate !== "undefined") {
+ time = NSDate.date().timeIntervalSinceDate(start) * 1000;
+}
+else {
+ time = java.lang.System.currentTimeMillis() - start;
+}
+
+console.log(`TIME TO LOAD APP: ${time} ms`);
+
application.start();
diff --git a/camera/camera.android.ts b/camera/camera.android.ts
index aa3e8157c..0d7bb80ac 100644
--- a/camera/camera.android.ts
+++ b/camera/camera.android.ts
@@ -1,16 +1,18 @@
-import imageSource = require("image-source");
-import appModule = require("application");
-import fileSystem = require("file-system");
-import utils = require("utils/utils");
-import types = require("utils/types");
-import definition = require("camera");
-import common = require("./camera-common");
+import * as typesModule from "utils/types";
+import * as utilsModule from "utils/utils";
+import * as fileSystemModule from "file-system";
+import * as applicationModule from "application";
+import * as imageSourceModule from "image-source";
+import * as cameraCommonModule from "./camera-common";
var REQUEST_IMAGE_CAPTURE = 3453;
-export var takePicture = function (options?: definition.CameraOptions): Promise {
- return new Promise((resolve, reject) => {
+export var takePicture = function (options?): Promise {
+ return new Promise((resolve, reject) => {
try {
+ var types: typeof typesModule = require("utils/types");
+ var utils: typeof utilsModule = require("utils/utils");
+
var density = utils.layout.getDisplayDensity();
if (options) {
var reqWidth = options.width ? options.width * density : 0;
@@ -19,12 +21,17 @@ export var takePicture = function (options?: definition.CameraOptions): Promise<
}
var takePictureIntent = new android.content.Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
var dateStamp = createDateTimeStamp();
+
+ var fileSystem: typeof fileSystemModule = require("file-system");
+
var tempPicturePath = fileSystem.path.join(utils.ad.getApplicationContext().getExternalFilesDir(null).getAbsolutePath(), "cameraPicture_" + dateStamp + ".jpg");
var nativeFile = new java.io.File(tempPicturePath);
var tempPictureUri = android.net.Uri.fromFile(nativeFile);
takePictureIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, tempPictureUri);
if (takePictureIntent.resolveActivity(utils.ad.getApplicationContext().getPackageManager()) != null) {
+ var appModule: typeof applicationModule = require("application");
+
var previousResult = appModule.android.onActivityResult;
appModule.android.onActivityResult = (requestCode: number, resultCode: number, data: android.content.Intent) => {
appModule.android.onActivityResult = previousResult;
@@ -42,6 +49,9 @@ export var takePicture = function (options?: definition.CameraOptions): Promise<
var scaledSizeImage = null;
if (reqHeight > 0 && reqWidth > 0) {
if (shouldKeepAspectRatio) {
+
+ var common: typeof cameraCommonModule = require("./camera-common");
+
var aspectSafeSize = common.getAspectSafeDimensions(bitmap.getWidth(), bitmap.getHeight(), reqWidth, reqHeight);
scaledSizeImage = android.graphics.Bitmap.createScaledBitmap(bitmap, aspectSafeSize.width, aspectSafeSize.height, true);
}
@@ -52,6 +62,9 @@ export var takePicture = function (options?: definition.CameraOptions): Promise<
else {
scaledSizeImage = bitmap;
}
+
+ var imageSource: typeof imageSourceModule = require("image-source");
+
resolve(imageSource.fromNativeSource(scaledSizeImage));
}
};
@@ -72,21 +85,21 @@ var calculateInSampleSize = function (imageWidth, imageHeight, reqWidth, reqHeig
if (imageWidth > reqWidth && imageHeight > reqHeight) {
var halfWidth = imageWidth / 2;
var halfHeight = imageHeight / 2;
- while((halfWidth / sampleSize) > reqWidth && (halfHeight / sampleSize) > reqHeight) {
+ while ((halfWidth / sampleSize) > reqWidth && (halfHeight / sampleSize) > reqHeight) {
sampleSize *= 2;
}
}
return sampleSize;
}
-var createDateTimeStamp = function() {
+var createDateTimeStamp = function () {
var result = "";
var date = new Date();
- result = (date.getDate() < 10 ? "0" + date.getDate().toString() : date.getDate().toString())+
- ((date.getMonth() + 1) < 10 ? "0" + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString()) +
- date.getFullYear().toString() +
- date.getHours().toString() +
- date.getMinutes().toString() +
- date.getSeconds().toString();
+ result = (date.getDate() < 10 ? "0" + date.getDate().toString() : date.getDate().toString()) +
+ ((date.getMonth() + 1) < 10 ? "0" + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString()) +
+ date.getFullYear().toString() +
+ date.getHours().toString() +
+ date.getMinutes().toString() +
+ date.getSeconds().toString();
return result;
}
\ No newline at end of file
diff --git a/camera/camera.ios.ts b/camera/camera.ios.ts
index 77c8c36d2..0b1b11ac3 100644
--- a/camera/camera.ios.ts
+++ b/camera/camera.ios.ts
@@ -1,8 +1,7 @@
-import imageSource = require("image-source");
-import frame = require("ui/frame");
-import definition = require("camera");
-import common = require("./camera-common");
-import types = require("utils/types");
+var types = require("utils/types");
+import * as cameraCommonModule from "./camera-common";
+import * as imageSourceModule from "image-source";
+import * as frameModule from "ui/frame";
class UIImagePickerControllerDelegateImpl extends NSObject implements UIImagePickerControllerDelegate {
public static ObjCProtocols = [UIImagePickerControllerDelegate];
@@ -11,22 +10,23 @@ class UIImagePickerControllerDelegateImpl extends NSObject implements UIImagePic
return super.new();
}
- private _callback: (result?: imageSource.ImageSource) => void;
+ private _callback: (result?) => void;
private _width: number;
private _height: number;
private _keepAspectRatio: boolean;
- public initWithCallback(callback: (result?: imageSource.ImageSource) => void): UIImagePickerControllerDelegateImpl {
+ public initWithCallback(callback: (result?) => void): UIImagePickerControllerDelegateImpl {
this._callback = callback;
return this;
}
- public initWithCallbackAndOptions(callback: (result?: imageSource.ImageSource) => void, options?): UIImagePickerControllerDelegateImpl {
+ public initWithCallbackAndOptions(callback: (result?) => void, options?): UIImagePickerControllerDelegateImpl {
this._callback = callback;
if (options) {
this._width = options.width;
this._height = options.height;
+
this._keepAspectRatio = types.isNullOrUndefined(options.keepAspectRatio) ? true : options.keepAspectRatio;
}
return this;
@@ -40,6 +40,8 @@ class UIImagePickerControllerDelegateImpl extends NSObject implements UIImagePic
if (this._width || this._height) {
var newSize = null;
if (this._keepAspectRatio) {
+ var common: typeof cameraCommonModule = require("./camera-common");
+
var aspectSafeSize = common.getAspectSafeDimensions(source.size.width, source.size.height, this._width, this._height);
newSize = CGSizeMake(aspectSafeSize.width, aspectSafeSize.height);
}
@@ -52,6 +54,8 @@ class UIImagePickerControllerDelegateImpl extends NSObject implements UIImagePic
UIGraphicsEndImageContext();
}
+ var imageSource: typeof imageSourceModule = require("image-source");
+
var imageSourceResult = image ? imageSource.fromNativeSource(image) : imageSource.fromNativeSource(source);
if (this._callback) {
@@ -71,8 +75,8 @@ class UIImagePickerControllerDelegateImpl extends NSObject implements UIImagePic
var listener;
-export var takePicture = function (options?: definition.CameraOptions): Promise {
- return new Promise((resolve, reject) => {
+export var takePicture = function (options): Promise {
+ return new Promise((resolve, reject) => {
listener = null;
var imagePickerController = new UIImagePickerController();
var reqWidth = 0;
@@ -101,6 +105,8 @@ export var takePicture = function (options?: definition.CameraOptions): Promise<
imagePickerController.modalPresentationStyle = UIModalPresentationStyle.UIModalPresentationCurrentContext;
+ var frame: typeof frameModule = require("ui/frame");
+
var topMostFrame = frame.topmost();
if (topMostFrame) {
var viewController: UIViewController = topMostFrame.currentPage && topMostFrame.currentPage.ios;
diff --git a/file-system/file-system-access.android.ts b/file-system/file-system-access.android.ts
index 5fd9e4ed1..383553d99 100644
--- a/file-system/file-system-access.android.ts
+++ b/file-system/file-system-access.android.ts
@@ -1,6 +1,6 @@
import textModule = require("text");
-import types = require("utils/types");
import utils = require("utils/utils");
+import * as typesModule from "utils/types";
export class FileSystemAccess {
private _pathSeparator = java.io.File.separator.toString();
@@ -194,6 +194,8 @@ export class FileSystemAccess {
public readText(path: string, onError?: (error: any) => any, encoding?: any) {
try {
+ var types: typeof typesModule = require("utils/types");
+
var javaFile = new java.io.File(path);
var stream = new java.io.FileInputStream(javaFile);
diff --git a/file-system/file-system-access.ios.ts b/file-system/file-system-access.ios.ts
index b38650089..4e8bfd049 100644
--- a/file-system/file-system-access.ios.ts
+++ b/file-system/file-system-access.ios.ts
@@ -1,5 +1,5 @@
-import utilsModule = require("utils/utils");
-import textModule = require("text");
+import textModule = require("text");
+import * as utilsModule from "utils/utils";
// TODO: Implement all the APIs receiving callback using async blocks
// TODO: Check whether we need try/catch blocks for the iOS implementation
@@ -161,8 +161,10 @@ export class FileSystemAccess {
}
public concatPath(left: string, right: string): string {
+ var utils: typeof utilsModule = require("utils/utils");
+
// TODO: This probably is not efficient, we may try concatenation with the "/" character
- var nsArray = utilsModule.ios.collections.jsArrayToNSArray([left, right]);
+ var nsArray = utils.ios.collections.jsArrayToNSArray([left, right]);
var nsString = NSString.pathWithComponents(nsArray);
return nsString.toString();
diff --git a/http/http-request.android.ts b/http/http-request.android.ts
index e32469af3..2535fa2d6 100644
--- a/http/http-request.android.ts
+++ b/http/http-request.android.ts
@@ -1,13 +1,13 @@
/**
* Android specific http request implementation.
*/
-import imageSource = require("image-source");
import types = require("utils/types");
-import utils = require("utils/utils");
+import * as utilsModule from "utils/utils";
+import * as imageSourceModule from "image-source";
+import * as platformModule from "platform";
// this is imported for definition purposes only
import http = require("http");
-import platform = require("platform");
var requestIdCounter = 0;
var pendingRequests = {};
@@ -51,9 +51,15 @@ function onRequestComplete(requestId: number, result: com.tns.Async.Http.Request
throw new Error("Response content may not be converted to string");
}
},
- toJSON: () => { return utils.parseJSON(result.responseAsString); },
+ toJSON: () => {
+ var utils: typeof utilsModule = require("utils/utils");
+
+ return utils.parseJSON(result.responseAsString);
+ },
toImage: () => {
- return new Promise((resolveImage, rejectImage) => {
+ var imageSource: typeof imageSourceModule = require("image-source");
+
+ return new Promise((resolveImage, rejectImage) => {
if (result.responseAsImage != null) {
resolveImage(imageSource.fromNativeSource(result.responseAsImage));
}
@@ -98,6 +104,8 @@ function buildJavaOptions(options: http.HttpRequestOptions) {
javaOptions.headers = arrayList;
}
+ var platform: typeof platformModule = require("platform");
+
// pass the maximum available image size to the request options in case we need a bitmap conversion
var screen = platform.screen.mainScreen;
javaOptions.screenWidth = screen.widthPixels;
diff --git a/http/http-request.ios.ts b/http/http-request.ios.ts
index ca1827d7b..5fcbb310b 100644
--- a/http/http-request.ios.ts
+++ b/http/http-request.ios.ts
@@ -2,9 +2,9 @@
* iOS specific http request implementation.
*/
import http = require("http");
-import imageSource = require("image-source");
-import types = require("utils/types");
-import utils = require("utils/utils");
+import * as typesModule from "utils/types";
+import * as imageSourceModule from "image-source";
+import * as utilsModule from "utils/utils";
var GET = "GET";
var USER_AGENT_HEADER = "User-Agent";
@@ -14,6 +14,8 @@ export function request(options: http.HttpRequestOptions): Promise((resolve, reject) => {
try {
+ var types: typeof typesModule = require("utils/types");
+
var sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration();
var queue = NSOperationQueue.mainQueue();
var session = NSURLSession.sessionWithConfigurationDelegateDelegateQueue(
@@ -61,9 +63,13 @@ export function request(options: http.HttpRequestOptions): Promise { return NSDataToString(data); },
toJSON: () => {
+ var utils: typeof utilsModule = require("utils/utils");
+
return utils.parseJSON(NSDataToString(data));
},
toImage: () => {
+ var imageSource: typeof imageSourceModule = require("image-source");
+
if (UIImage.imageWithData["async"]) {
return UIImage.imageWithData["async"](UIImage, [data])
.then(image => {
@@ -77,7 +83,7 @@ export function request(options: http.HttpRequestOptions): Promise((resolveImage, rejectImage) => {
+ return new Promise((resolveImage, rejectImage) => {
var img = imageSource.fromData(data);
if (img instanceof imageSource.ImageSource) {
resolveImage(img);
diff --git a/image-source/image-source-common.ts b/image-source/image-source-common.ts
index 06a56d203..1607ec044 100644
--- a/image-source/image-source-common.ts
+++ b/image-source/image-source-common.ts
@@ -1,5 +1,5 @@
-import http = require("http");
-import utils = require("utils/utils");
+import utils = require("utils/utils");
+import * as httpModule from "http";
// This is used for definition purposes only, it does not generate JavaScript for it.
import definition = require("image-source");
@@ -30,6 +30,7 @@ export function fromNativeSource(source: any): definition.ImageSource {
}
export function fromUrl(url: string): Promise {
+ var http: typeof httpModule = require("http");
return http.getImage(url);
}
diff --git a/image-source/image-source.android.ts b/image-source/image-source.android.ts
index 50506e2a7..4ed6ffb0b 100644
--- a/image-source/image-source.android.ts
+++ b/image-source/image-source.android.ts
@@ -1,9 +1,9 @@
import types = require("utils/types");
-import fs = require("file-system");
import definition = require("image-source");
import common = require("./image-source-common");
-import enums = require("ui/enums");
-import utils = require("utils/utils");
+import * as utilsModule from "utils/utils";
+import * as fileSystemModule from "file-system";
+import * as enumsModule from "ui/enums";
global.moduleMerge(common, exports);
@@ -14,6 +14,8 @@ export class ImageSource implements definition.ImageSource {
public loadFromResource(name: string): boolean {
this.android = null;
+ var utils: typeof utilsModule = require("utils/utils");
+
var res = utils.ad.getApplicationContext().getResources();
if (res) {
var identifier: number = res.getIdentifier(name, 'drawable', utils.ad.getApplication().getPackageName());
@@ -30,6 +32,8 @@ export class ImageSource implements definition.ImageSource {
}
public loadFromFile(path: string): boolean {
+ var fs: typeof fileSystemModule = require("file-system");
+
var fileName = types.isString(path) ? path.trim() : "";
if (fileName.indexOf("~/") === 0) {
fileName = fs.path.join(fs.knownFolders.currentApp().path, fileName.replace("~/", ""));
@@ -108,6 +112,8 @@ export class ImageSource implements definition.ImageSource {
}
function getTargetFromat(format: string): android.graphics.Bitmap.CompressFormat {
+ var enums: typeof enumsModule = require("ui/enums");
+
switch (format) {
case enums.ImageFormat.jpeg:
return android.graphics.Bitmap.CompressFormat.JPEG;
diff --git a/location/location-common.ts b/location/location-common.ts
index e8413c7e1..d18d3f2b4 100644
--- a/location/location-common.ts
+++ b/location/location-common.ts
@@ -1,6 +1,6 @@
-import timer = require("timer");
-//import locationManagerModule = require("location/location-manager");
+//import locationManagerModule = require("location/location-manager");
import defModule = require("location");
+import * as timerModule from "timer";
var defaultGetLocationTimeout = 20000;
@@ -54,6 +54,9 @@ export var getLocation = function (options?: defModule.Options): Promise new Date().valueOf()) {
diff --git a/location/location.ios.ts b/location/location.ios.ts
index 6b5b6b85b..5172ca72b 100644
--- a/location/location.ios.ts
+++ b/location/location.ios.ts
@@ -1,5 +1,4 @@
-import enums = require("ui/enums");
-import locationModule = require("location");
+import locationModule = require("location");
import common = require("./location-common");
global.moduleMerge(common, exports);
@@ -123,6 +122,8 @@ export class LocationManager implements locationModule.LocationManager {
constructor() {
//super();
+ var enums = require("ui/enums");
+
this.desiredAccuracy = enums.Accuracy.any;
this.updateDistance = kCLDistanceFilterNone;
var iosLocManager = new CLLocationManager();
diff --git a/platform/platform.android.ts b/platform/platform.android.ts
index 148d5bcab..7025b94d0 100644
--- a/platform/platform.android.ts
+++ b/platform/platform.android.ts
@@ -1,7 +1,7 @@
/* tslint:disable:class-name */
import definition = require("platform");
-import enums = require("ui/enums");
import utils = require("utils/utils");
+import * as enumsModule from "ui/enums";
export module platformNames {
export var android = "Android";
@@ -60,6 +60,7 @@ export class device implements definition.device {
static get deviceType(): string {
if (!device._deviceType) {
var dips = Math.min(screen.mainScreen.widthPixels, screen.mainScreen.heightPixels) / screen.mainScreen.scale;
+ var enums: typeof enumsModule = require("ui/enums");
// If the device has more than 600 dips it is considered to be a tablet.
if (dips >= device.MIN_TABLET_PIXELS) {
diff --git a/platform/platform.ios.ts b/platform/platform.ios.ts
index d5e0c3a32..c7cf1815d 100644
--- a/platform/platform.ios.ts
+++ b/platform/platform.ios.ts
@@ -1,6 +1,5 @@
/* tslint:disable:class-name */
import definition = require("platform");
-import enums = require("ui/enums");
export module platformNames {
export var android = "Android";
@@ -51,6 +50,8 @@ export class device implements definition.device {
static get deviceType(): string {
if (!device._deviceType) {
+ var enums = require("ui/enums");
+
if (UIDevice.currentDevice().userInterfaceIdiom === UIUserInterfaceIdiom.UIUserInterfaceIdiomPhone) {
device._deviceType = enums.DeviceType.Phone;
}
diff --git a/trace/trace.ts b/trace/trace.ts
index 7d8173771..9cafde5d3 100644
--- a/trace/trace.ts
+++ b/trace/trace.ts
@@ -1,5 +1,5 @@
import definition = require("trace");
-import types = require("utils/types");
+import * as typesModule from "utils/types";
var _enabled = false;
var _categories = {};
@@ -137,6 +137,8 @@ class ConsoleWriter implements definition.TraceWriter {
return;
}
+ var types: typeof typesModule = require("utils/types");
+
var msgType;
if (types.isUndefined(type)) {
msgType = messageType.log;
diff --git a/ui/action-bar/action-bar-common.ts b/ui/action-bar/action-bar-common.ts
index dd680fdb6..3c1c7cfa8 100644
--- a/ui/action-bar/action-bar-common.ts
+++ b/ui/action-bar/action-bar-common.ts
@@ -5,8 +5,8 @@ import dependencyObservable = require("ui/core/dependency-observable");
import enums = require("ui/enums");
import proxy = require("ui/core/proxy");
import view = require("ui/core/view");
-import style = require("../styling/style");
-import observable = require("ui/core/dependency-observable");
+import * as styleModule from "../styling/style";
+import * as dependencyObservableModule from "ui/core/dependency-observable";
var ACTION_ITEMS = "actionItems";
@@ -65,6 +65,9 @@ export class ActionBar extends view.View implements dts.ActionBar {
}
set titleView(value: view.View) {
if (this._titleView !== value) {
+ var style: typeof styleModule = require("../styling/style");
+ var observable: typeof dependencyObservableModule = require("ui/core/dependency-observable");
+
if (this._titleView) {
this._removeView(this._titleView);
this._titleView.style._resetValue(style.horizontalAlignmentProperty, observable.ValueSource.Inherited);
diff --git a/ui/action-bar/action-bar.android.ts b/ui/action-bar/action-bar.android.ts
index 229124511..f7e8aa55a 100644
--- a/ui/action-bar/action-bar.android.ts
+++ b/ui/action-bar/action-bar.android.ts
@@ -1,13 +1,13 @@
import common = require("./action-bar-common");
-import trace = require("trace");
import frame = require("ui/frame");
import types = require("utils/types");
-import utils = require("utils/utils");
-import imageSource = require("image-source");
import enums = require("ui/enums");
import application = require("application");
import dts = require("ui/action-bar");
import view = require("ui/core/view");
+import * as traceModule from "trace";
+import * as utilsModule from "utils/utils";
+import * as imageSourceModule from "image-source";
const R_ID_HOME = 0x0102002c;
const ACTION_ITEM_ID_OFFSET = 1000;
@@ -301,6 +301,9 @@ export class ActionBar extends common.ActionBar {
if (this._toolbar && child._nativeView) {
this._toolbar.removeView(child._nativeView);
+
+ var trace: typeof traceModule = require("trace");
+
trace.notifyEvent(child, "childInLayoutRemovedFromNativeVisualTree");
}
}
@@ -311,6 +314,8 @@ function getDrawableOrResourceId(icon: string, resources: android.content.res.Re
return undefined;
}
+ var utils: typeof utilsModule = require("utils/utils");
+
if (icon.indexOf(utils.RESOURCE_PREFIX) === 0) {
var resourceId: number = resources.getIdentifier(icon.substr(utils.RESOURCE_PREFIX.length), 'drawable', application.android.packageName);
if (resourceId > 0) {
@@ -319,6 +324,9 @@ function getDrawableOrResourceId(icon: string, resources: android.content.res.Re
}
else {
var drawable: android.graphics.drawable.BitmapDrawable;
+
+ var imageSource: typeof imageSourceModule = require("image-source");
+
var is = imageSource.fromFileOrResource(icon);
if (is) {
drawable = new android.graphics.drawable.BitmapDrawable(is.android);
diff --git a/ui/activity-indicator/activity-indicator.android.ts b/ui/activity-indicator/activity-indicator.android.ts
index d1202f6d2..3fca5407f 100644
--- a/ui/activity-indicator/activity-indicator.android.ts
+++ b/ui/activity-indicator/activity-indicator.android.ts
@@ -1,7 +1,7 @@
import aiCommon = require("./activity-indicator-common");
import dependencyObservable = require("ui/core/dependency-observable");
import proxy = require("ui/core/proxy");
-import enums = require("ui/enums");
+import * as enumsModule from "ui/enums";
function onBusyPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var indicator = data.object;
@@ -9,6 +9,8 @@ function onBusyPropertyChanged(data: dependencyObservable.PropertyChangeData) {
return;
}
+ var enums: typeof enumsModule = require("ui/enums");
+
if (indicator.visibility === enums.Visibility.visible) {
indicator.android.setVisibility(data.newValue ? android.view.View.VISIBLE : android.view.View.INVISIBLE);
}
diff --git a/ui/animation/animation-common.ts b/ui/animation/animation-common.ts
index 00fd63fbf..2272a4deb 100644
--- a/ui/animation/animation-common.ts
+++ b/ui/animation/animation-common.ts
@@ -1,6 +1,6 @@
import definition = require("ui/animation");
import viewModule = require("ui/core/view");
-import trace = require("trace");
+import * as traceModule from "trace";
export module Properties {
export var opacity = "opacity";
@@ -56,6 +56,8 @@ export class Animation implements definition.Animation {
throw new Error("No animation definitions specified");
}
+ var trace : typeof traceModule = require("trace");
+
trace.write("Analyzing " + animationDefinitions.length + " animation definitions...", trace.categories.Animation);
this._propertyAnimations = new Array();
var i = 0;
diff --git a/ui/builder/builder.ts b/ui/builder/builder.ts
index 573ec2d20..94fa4ed3b 100644
--- a/ui/builder/builder.ts
+++ b/ui/builder/builder.ts
@@ -9,6 +9,7 @@ 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";
export function parse(value: string | Template, context: any): View {
if (isString(value)) {
@@ -87,6 +88,8 @@ function loadCustomComponent(componentPath: string, componentName?: string, attr
if (parentPage) {
parentPage.addCssFile(cssFilePath);
} else {
+ var trace: typeof traceModule = require("trace");
+
trace.write("CSS file found but no page specified. Please specify page in the options!", trace.categories.Error, trace.messageType.error);
}
}
@@ -185,7 +188,7 @@ namespace xml2ui {
var xmlParser = new xml.XmlParser((args: xml.ParserEvent) => {
try {
this.next(args);
- } catch(e) {
+ } catch (e) {
throw this.error(e, args.position);
}
}, (e, p) => {
@@ -219,7 +222,7 @@ namespace xml2ui {
private currentPlatformContext: string;
public parse(args: xml.ParserEvent) {
- if (args.eventType === xml.ParserEventType.StartElement) {
+ if (args.eventType === xml.ParserEventType.StartElement) {
if (PlatformFilter.isPlatform(args.elementName)) {
if (this.currentPlatformContext) {
@@ -269,7 +272,7 @@ namespace xml2ui {
this.args.forEach((args: xml.ParserEvent) => {
try {
this.next(args);
- } catch(e) {
+ } catch (e) {
throw this.error(e, args.position);
}
});
@@ -293,7 +296,7 @@ namespace xml2ui {
private state: XmlStateConsumer;
constructor(state: XmlStateConsumer) {
- this.state = state;
+ this.state = state;
}
parse(args: xml.ParserEvent) {
@@ -542,5 +545,5 @@ namespace xml2ui {
name: string;
items?: Array;
}
- }
+ }
}
diff --git a/ui/builder/component-builder.ts b/ui/builder/component-builder.ts
index f408f32ee..de0ee391d 100644
--- a/ui/builder/component-builder.ts
+++ b/ui/builder/component-builder.ts
@@ -1,11 +1,11 @@
import {isString, isDefined, isFunction} from "utils/types";
-import {device} from "platform";
import {Page} from "ui/page";
import {View, isEventOrGesture} from "ui/core/view";
import {ComponentModule} from "ui/builder/component-builder";
import {File, Folder, path, knownFolders} from "file-system";
import {getBindingOptions, bindingConstants} from "./binding-builder";
-import {ScopeError} from "utils/debug";
+import * as debugModule from "utils/debug";
+import * as platformModule from "platform";
//the imports below are needed for special property registration
import "ui/layouts/dock-layout";
@@ -61,7 +61,8 @@ export function getComponentModule(elementName: string, namespace: string, attri
// Create instance of the component.
instance = new instanceType();
} catch (ex) {
- throw new ScopeError(ex, "Module '" + moduleId + "' not found for element '" + (namespace ? namespace + ":" : "") + elementName + "'.");
+ var debug: typeof debugModule = require("utils/debug");
+ throw new debug.ScopeError(ex, "Module '" + moduleId + "' not found for element '" + (namespace ? namespace + ":" : "") + elementName + "'.");
}
if (attributes) {
@@ -107,7 +108,10 @@ export function getComponentModule(elementName: string, namespace: string, attri
if (attr.indexOf(":") !== -1) {
var platformName = attr.split(":")[0].trim();
- if (platformName.toLowerCase() === device.os.toLowerCase()) {
+
+ var platform: typeof platformModule = require("platform");
+
+ if (platformName.toLowerCase() === platform.device.os.toLowerCase()) {
attr = attr.split(":")[1].trim();
} else {
continue;
diff --git a/ui/button/button-common.ts b/ui/button/button-common.ts
index 223ff6047..5f7192209 100644
--- a/ui/button/button-common.ts
+++ b/ui/button/button-common.ts
@@ -4,8 +4,8 @@ import definition = require("ui/button");
import proxy = require("ui/core/proxy");
import formattedString = require("text/formatted-string");
import observable = require("data/observable");
-import weakEvents = require("ui/core/weak-event-listener");
-import enums = require("ui/enums");
+import * as weakEventListenerModule from "ui/core/weak-event-listener";
+import * as enumsModule from "ui/enums";
var textProperty = new dependencyObservable.Property(
"text",
@@ -65,6 +65,8 @@ export class Button extends view.View implements definition.Button {
set formattedText(value: formattedString.FormattedString) {
if (this.formattedText !== value) {
+ var weakEvents: typeof weakEventListenerModule = require("ui/core/weak-event-listener");
+
if (this.formattedText) {
weakEvents.removeWeakEventListener(this.formattedText, observable.Observable.propertyChangeEvent, this.onFormattedTextChanged, this);
}
@@ -126,6 +128,8 @@ export class Button extends view.View implements definition.Button {
function onTextWrapPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var v = data.object;
+ var enums : typeof enumsModule = require("ui/enums");
+
v.style.whiteSpace = data.newValue ? enums.WhiteSpace.normal : enums.WhiteSpace.nowrap;
}
diff --git a/ui/button/button.android.ts b/ui/button/button.android.ts
index 163e1b04a..3a98dd718 100644
--- a/ui/button/button.android.ts
+++ b/ui/button/button.android.ts
@@ -1,7 +1,5 @@
import common = require("./button-common");
import utils = require("utils/utils")
-import dependencyObservable = require("ui/core/dependency-observable");
-import proxy = require("ui/core/proxy");
global.moduleMerge(common, exports);
diff --git a/ui/button/button.ios.ts b/ui/button/button.ios.ts
index e7c78abc9..7e8172ba6 100644
--- a/ui/button/button.ios.ts
+++ b/ui/button/button.ios.ts
@@ -1,7 +1,5 @@
import common = require("./button-common");
import stateChanged = require("ui/core/control-state-change");
-import dependencyObservable = require("ui/core/dependency-observable");
-import proxy = require("ui/core/proxy");
class TapHandlerImpl extends NSObject {
private _owner: WeakRef