feat(DomController): add DomController provider using stencil queue

This commit is contained in:
Adam Bradley
2018-04-12 11:12:12 -05:00
parent b1778102fc
commit bceece7bc1
12 changed files with 489 additions and 1719 deletions

View File

@@ -2020,7 +2020,7 @@
},
"onetime": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},
@@ -2135,7 +2135,7 @@
},
"onetime": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},
@@ -2335,7 +2335,7 @@
},
"onetime": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},

View File

File diff suppressed because one or more lines are too long

View File

@@ -13,8 +13,15 @@ export class DomController {
}
function getQueue() {
const ionic = (window as any).Ionic;
return ionic.queue;
const Ionic = (window as any).Ionic;
if (Ionic && Ionic.queue) {
return Ionic.queue;
}
return {
read: (cb: any) => window.requestAnimationFrame(cb),
write: (cb: any) => window.requestAnimationFrame(cb)
};
}
export type RafCallback = { (timeStamp?: number): void };

View File

@@ -32,7 +32,7 @@
"requires": {
"ajv": "5.5.2",
"chokidar": "1.7.0",
"rxjs": "5.5.7",
"rxjs": "5.5.9",
"source-map": "0.5.7"
},
"dependencies": {
@@ -47,6 +47,15 @@
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.3.1"
}
},
"rxjs": {
"version": "5.5.9",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.9.tgz",
"integrity": "sha512-DHG9AHmCmgaFWgjBcXp6NxFDmh3MvIA62GqTWmLnTzr/3oZ6h5hLD8NA+9j+GF0jEwklNIpI4KuuyLG8UWMEvQ==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
}
}
},
@@ -57,13 +66,24 @@
"dev": true,
"requires": {
"@ngtools/json-schema": "1.2.0",
"rxjs": "5.5.7"
"rxjs": "5.5.9"
},
"dependencies": {
"rxjs": {
"version": "5.5.9",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.9.tgz",
"integrity": "sha512-DHG9AHmCmgaFWgjBcXp6NxFDmh3MvIA62GqTWmLnTzr/3oZ6h5hLD8NA+9j+GF0jEwklNIpI4KuuyLG8UWMEvQ==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
}
}
},
"@angular/animations": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.9.tgz",
"integrity": "sha512-H/3fMs4PhYjKoA81II6D0PHifDrqlKet2u/EXzUBq3ehXby+N/0GBzqsBYwPeU5pTye7WPFfW+5sgoJpN8Ye6Q==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.0.0-rc.3.tgz",
"integrity": "sha512-uUx8n3rnORn3pVb1sPiPYRhCETsaLLLeygPKlfqcTqdO8/hUEdumGI0hfrn0rW8qK2x2Pwxvz2qNPkn4iGgwTg==",
"requires": {
"tslib": "1.9.0"
}
@@ -117,7 +137,7 @@
"postcss-url": "7.3.1",
"raw-loader": "0.5.1",
"resolve": "1.6.0",
"rxjs": "5.5.7",
"rxjs": "5.5.9",
"sass-loader": "6.0.7",
"semver": "5.5.0",
"silent-error": "1.1.0",
@@ -133,20 +153,31 @@
"webpack-merge": "4.1.2",
"webpack-sources": "1.1.0",
"webpack-subresource-integrity": "1.0.4"
},
"dependencies": {
"rxjs": {
"version": "5.5.9",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.9.tgz",
"integrity": "sha512-DHG9AHmCmgaFWgjBcXp6NxFDmh3MvIA62GqTWmLnTzr/3oZ6h5hLD8NA+9j+GF0jEwklNIpI4KuuyLG8UWMEvQ==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
}
}
},
"@angular/common": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.9.tgz",
"integrity": "sha512-g2hPcI0fnT4TV+Fd+1IohjuqBxPvxwyH9IzTn8PkU9X2M+F6cHCUvHxL1sWI2sF8pYcaHzVjq9WClym10X36Lg==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.0-rc.3.tgz",
"integrity": "sha512-arc0LoT2opge2CDUXufN+TIjTUUx+N46MSWW1sKiLUzbK38E2nZ4S1RHoVDR6P7c6ruKMmaqZFJkOn6wd5Oi0w==",
"requires": {
"tslib": "1.9.0"
}
},
"@angular/compiler": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.9.tgz",
"integrity": "sha512-mN+ofInk8y/tk2TCJZx8RrGdOKdrfunoCair7tfDy4XoQJE90waGfaYWo07hYU+UYwLhrg19m2Czy6rIDciUJA==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.0-rc.3.tgz",
"integrity": "sha512-ZRsAtThpSrXKQ0N64Wa7ovDXXQ333uyRKUqApNo0NskvWwURiiBU9gACR4KmJmBRo4PUyITkFnyOM+6QMFDGQQ==",
"requires": {
"tslib": "1.9.0"
}
@@ -172,25 +203,25 @@
}
},
"@angular/core": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.9.tgz",
"integrity": "sha512-cvHBJGtasrIoARvbLFyHaOsiWKVwMNrrSTZLwrlyHP8oYzkDrE0qKGer6QCqyKt+51hF53cgWEffGzM/u/0wYg==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.0-rc.3.tgz",
"integrity": "sha512-zB6bpFNx6Iefko6HKYMSKjyB0XJj8yAgK1G/Ozzb+hbSMmkVi+HetG4v0WXg4sn2mD5NGxj+7qz7tGAzhlBgdA==",
"requires": {
"tslib": "1.9.0"
}
},
"@angular/forms": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.9.tgz",
"integrity": "sha512-zyIOiZV/FAm1iVZWTk3Joz6Jt096hbhfDbBUrssmuiTKi9dU6rWG+Z4b88zStqulKe3HFVZkgdixWlminG8nKA==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.0-rc.3.tgz",
"integrity": "sha512-YtXrhXzee77L3YrBY60Zgd9OV90CCKWv4uUTldeSKcjFYremgmRqQy73+V2eE9akTLiKseLTaVYdntTINUL8IQ==",
"requires": {
"tslib": "1.9.0"
}
},
"@angular/http": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.9.tgz",
"integrity": "sha512-DKjgIk+Dp0Xv1ieG8LawvUnL4dYZp1KroAq5cfKuO9EojP0zM3tUvBtw2vbPLsHYma7g7ZMjOoAbzVxtmTBZqw==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/http/-/http-6.0.0-rc.3.tgz",
"integrity": "sha512-PN8W2OSeptAIJ5/CeZNGdRiTVHjuYfFSB+ZgBeWhQVBmIV5Lp5iTNDcGslEB9diMkJSNsh/jYtcA0YAFhirYhw==",
"requires": {
"tslib": "1.9.0"
}
@@ -202,25 +233,25 @@
"dev": true
},
"@angular/platform-browser": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.9.tgz",
"integrity": "sha512-P6iviRTuLsLRuqtZNOO0fd4cjTo8DWsDCecwntUlI08R3kH5qeqvqarTzlw/4oD+wBzZY6bfb89JyY+n5XbX3Q==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.0-rc.3.tgz",
"integrity": "sha512-uMUAImcIbunqp9DKRSqokeAYWlyYFrqQAUpJNTeksUO9zkP2rPXlUi8ogZtEybHCc9XuoByC+UgC2IOMtmS82g==",
"requires": {
"tslib": "1.9.0"
}
},
"@angular/platform-browser-dynamic": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.9.tgz",
"integrity": "sha512-8C3MtyguJKDTT8FcHIRDlBxswcIdpfugOf4S2t94pVedCr4h9w2da/lcfwJKUISw1aKjfA77Sl8TDUhoS8ymmQ==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.0-rc.3.tgz",
"integrity": "sha512-q5ZUvgGUuIVKx9I9++ovKXRssu5czNzr/1jgfzvh72a2+s5aVyVB8Zd164pdS6GSvi8lyApSNPBnBlRROHklbg==",
"requires": {
"tslib": "1.9.0"
}
},
"@angular/router": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.9.tgz",
"integrity": "sha512-NtDbFK0EA1rfFc+5Dqd5mIv8E1Wcc5rDUnSty4cX2V+HxTEZvQ9DRdpO2Q0abWU5siXyqponuPHJzF08OVGyNA==",
"version": "6.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.0-rc.3.tgz",
"integrity": "sha512-H621WrhkGayCZlr7f6V2czVAZPPXCeAXqsGjt5MWgB+MzpPP/+lrqKMhku9ZDE0OrlDucU2g34oipGoh0tJW2g==",
"requires": {
"tslib": "1.9.0"
}
@@ -275,9 +306,20 @@
"integrity": "sha512-7aVP4994Hu8vRdTTohXkfGWEwLhrdNP3EZnWyBootm5zshWqlQojUGweZe5zwewsKcixeVOiy2YtW+aI4aGSLA==",
"dev": true,
"requires": {
"rxjs": "5.5.7",
"rxjs": "5.5.9",
"semver": "5.5.0",
"semver-intersect": "1.3.1"
},
"dependencies": {
"rxjs": {
"version": "5.5.9",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.9.tgz",
"integrity": "sha512-DHG9AHmCmgaFWgjBcXp6NxFDmh3MvIA62GqTWmLnTzr/3oZ6h5hLD8NA+9j+GF0jEwklNIpI4KuuyLG8UWMEvQ==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
}
}
},
"@types/jasmine": {
@@ -7810,11 +7852,11 @@
}
},
"rxjs": {
"version": "5.5.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.7.tgz",
"integrity": "sha512-Hxo2ac8gRQjwjtKgukMIwBRbq5+KAeEV5hXM4obYBOAghev41bDQWgFH4svYiU9UnQ5kNww2LgfyBdevCd2HXA==",
"version": "6.0.0-terrific-rc.3",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0-terrific-rc.3.tgz",
"integrity": "sha512-CRpXVpRbuBsgbnTi/KjgYJ8/C1IXaeFL8obHtbxQrPorfhRPGEkIvbuQ+sTQnw9slszhRLrPz9EhmuGrVP8kYQ==",
"requires": {
"symbol-observable": "1.0.1"
"tslib": "1.9.0"
}
},
"safe-buffer": {
@@ -8887,7 +8929,8 @@
"symbol-observable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
"integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ="
"integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
"dev": true
},
"tapable": {
"version": "0.2.8",

View File

@@ -12,21 +12,21 @@
"e2e": "ng e2e"
},
"dependencies": {
"@angular/animations": "latest",
"@angular/common": "latest",
"@angular/compiler": "latest",
"@angular/core": "latest",
"@angular/forms": "latest",
"@angular/http": "latest",
"@angular/platform-browser": "latest",
"@angular/platform-browser-dynamic": "latest",
"@angular/router": "latest",
"@angular/animations": "^6.0.0-rc.3",
"@angular/common": "^6.0.0-rc.3",
"@angular/compiler": "^6.0.0-rc.3",
"@angular/core": "^6.0.0-rc.3",
"@angular/forms": "^6.0.0-rc.3",
"@angular/http": "^6.0.0-rc.3",
"@angular/platform-browser": "^6.0.0-rc.3",
"@angular/platform-browser-dynamic": "^6.0.0-rc.3",
"@angular/router": "^6.0.0-rc.3",
"@ionic/angular": "next",
"body-parser": "^1.18.2",
"core-js": "^2.4.1",
"express": "^4.16.2",
"rxjs": "^5.5.2",
"zone.js": "^0.8.14"
"rxjs": "^6.0.0-terrific-rc.3",
"zone.js": "^0.8.20"
},
"devDependencies": {
"@angular/cli": "latest",

View File

@@ -1,4 +1,5 @@
import { Component } from '@angular/core';
import { DomController } from '@ionic/angular';
@Component({
selector: 'app-card-page',
@@ -60,8 +61,27 @@ import { Component } from '@angular/core';
`
})
export class CardPageComponent {
constructor() {
constructor(public domCtrl: DomController) {
this.domControllerTest('constructor');
}
ngOnInit() {
this.domControllerTest('ngOnInit');
setTimeout(() => {
this.domControllerTest('setTimeout');
}, 5000);
}
domControllerTest(test: string) {
this.domCtrl.read(readTimeStamp => {
console.log('DomController read:', test, readTimeStamp);
this.domCtrl.write(writeTimeStamp => {
console.log('DomController write:', test, writeTimeStamp);
});
});
}
toggleColor() {

View File

@@ -1,7 +1,7 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { IonicModule, DomController } from '@ionic/angular';
import { CardPageComponent } from './card-page.component';
import { CardRoutingModule } from './card-routing.module';
@@ -11,6 +11,11 @@ import { CardRoutingModule } from './card-routing.module';
IonicModule,
CardRoutingModule
],
declarations: [CardPageComponent]
declarations: [
CardPageComponent
],
providers: [
DomController
]
})
export class CardModule { }

View File

@@ -1,12 +1,11 @@
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class PostTestService {
constructor(private http: HttpClient) { }
post(data: any): Observable<any> {
post(data: any) {
return this.http.post('http://localhost:5000/test', data);
}
}

View File

@@ -24,7 +24,7 @@
"@angular/platform-browser": ["../../../node_modules/@angular/platform-browser/"],
"@angular/platform-browser-dynamic": ["../../../node_modules/@angular/platform-browser-dynamic/"],
"@angular/router": ["../../../node_modules/@angular/router/"],
"rxjs": ["../../../node_modules/@angular/rxjs/"],
"rxjs": ["../../../node_modules/rxjs/"],
"@ionic/angular": ["../../../"]
}
}