├── .gitignore ├── README.md ├── kotlin-angular-app-parent └── pom.xml ├── kotlin-angular-core-test ├── package.json ├── pom.xml ├── src │ └── main │ │ └── kotlin │ │ └── ng │ │ ├── api │ │ └── core │ │ │ └── testing │ │ │ ├── ComponentFixture.kt │ │ │ ├── TestBed.kt │ │ │ └── async.kt │ │ └── core │ │ └── testing │ │ └── testing.kt └── yarn.lock ├── kotlin-angular-core ├── package.json ├── pom.xml ├── src │ ├── lib │ │ └── js │ │ │ ├── core-js │ │ │ ├── shim.js │ │ │ └── shim.min.js │ │ │ ├── ng.common.js │ │ │ ├── ng.compiler.js │ │ │ ├── ng.core.js │ │ │ ├── ng.forms.js │ │ │ ├── ng.http.js │ │ │ ├── ng.platform-browser-dynamic.js │ │ │ ├── ng.platform-browser.js │ │ │ ├── ng.router.js │ │ │ └── zone.js │ └── main │ │ └── kotlin │ │ └── ng │ │ ├── api │ │ ├── Component.kt │ │ ├── ComponentReference.kt │ │ ├── DirectModuleReference.kt │ │ ├── Metadata.kt │ │ ├── Module.kt │ │ ├── ModuleReference.kt │ │ ├── Provider.kt │ │ ├── ProviderReference.kt │ │ ├── Reference.kt │ │ ├── core │ │ │ └── OnInit.kt │ │ ├── forms │ │ │ └── FormsModule.kt │ │ ├── http │ │ │ ├── Header.kt │ │ │ ├── Headers.kt │ │ │ ├── Http.kt │ │ │ ├── HttpModule.kt │ │ │ └── Response.kt │ │ ├── platformBrowser │ │ │ └── BrowserModule.kt │ │ ├── platformBrowserDynamic │ │ │ └── platformBrowserDynamic.kt │ │ └── router │ │ │ ├── Location.kt │ │ │ ├── Params.kt │ │ │ ├── Router.kt │ │ │ └── RouterModule.kt │ │ ├── core │ │ ├── ChangeDetectorRef.kt │ │ ├── ClassBuilder.kt │ │ ├── ClassDefinition.kt │ │ ├── Component.kt │ │ ├── ComponentOptions.kt │ │ ├── ComponentRef.kt │ │ ├── DebugElement.kt │ │ ├── DebugNode.kt │ │ ├── ElementRef.kt │ │ ├── EmbeddedViewRef.kt │ │ ├── EventEmitter.kt │ │ ├── Injectable.kt │ │ ├── Injector.kt │ │ ├── NgModule.kt │ │ ├── NgModuleOptions.kt │ │ ├── NgZone.kt │ │ ├── PlatformRef.kt │ │ ├── ViewRef.kt │ │ └── core.kt │ │ ├── forms │ │ └── forms.kt │ │ ├── http │ │ └── http.kt │ │ ├── platformBrowser │ │ └── platformBrowser.kt │ │ ├── platformBrowserDynamic │ │ └── platformBrowserDynamic.kt │ │ └── router │ │ ├── router-extensions.kt │ │ └── router.kt └── yarn.lock ├── kotlin-angular-dependencies └── pom.xml ├── kotlin-angular-in-memory-web-api ├── package.json ├── pom.xml ├── src │ └── main │ │ └── kotlin │ │ └── ng │ │ ├── api │ │ └── inMemoryWebApi │ │ │ ├── InMemoryData.kt │ │ │ ├── InMemoryDbService.kt │ │ │ └── InMemoryWebApiModule.kt │ │ └── inMemoryWebApi │ │ └── inMemoryWebApi.kt └── yarn.lock ├── kotlin-angular-lib-parent └── pom.xml ├── kotlin-angular-parent └── pom.xml ├── kotlin-angular-sample ├── pom.xml └── src │ ├── main │ ├── kotlin │ │ └── com │ │ │ └── github │ │ │ └── crunc │ │ │ └── angular │ │ │ └── sample │ │ │ ├── AppModule.kt │ │ │ ├── AppRoutingModule.kt │ │ │ ├── Hero.kt │ │ │ ├── components │ │ │ ├── AppComponent.kt │ │ │ ├── DashboardComponent.kt │ │ │ ├── HeroDetailComponent.kt │ │ │ └── HeroesComponent.kt │ │ │ ├── main.kt │ │ │ ├── routes.kt │ │ │ └── services │ │ │ ├── HeroService.kt │ │ │ └── InMemoryDataService.kt │ └── resources │ │ ├── components │ │ ├── AppComponent.css │ │ ├── AppComponent.html │ │ ├── DashboardComponent.css │ │ ├── DashboardComponent.html │ │ ├── HeroDetailComponent.css │ │ ├── HeroDetailComponent.html │ │ ├── HeroesComponent.css │ │ └── HeroesComponent.html │ │ ├── index.html │ │ └── styles.css │ └── test │ └── kotlin │ └── com │ └── github │ └── crunc │ └── angular │ └── sample │ └── components │ └── HeroDetailComponentSpec.kt └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | # Node 2 | 3 | /**/node_modules/ 4 | 5 | # Maven 6 | 7 | /**/target/ 8 | 9 | # Gradle 10 | 11 | /**/.gradle/ 12 | /**/build/ 13 | /**/gradlew 14 | /**/gradlew.bat 15 | 16 | # IntelliJ 17 | 18 | /**/*.iml 19 | /**/.idea/ 20 | 21 | # Eclipse 22 | 23 | /**/bin/ 24 | /**/tmp/ 25 | /**/.classpath 26 | /**/.metadata/ 27 | /**/.project 28 | /**/.settings/ 29 | /**/.springBeans 30 | 31 | # Mac OS 32 | 33 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kotling Angular 2 | 3 | Angular 2 for Kotlin -------------------------------------------------------------------------------- /kotlin-angular-app-parent/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | kotlin-angular-app-parent 7 | pom 8 | 9 | 10 | com.github.crunc 11 | kotlin-angular-parent 12 | 2.4.8-SNAPSHOT 13 | ../kotlin-angular-parent 14 | 15 | 16 | Kotlin Angular App Parent 17 | Parent POM for Kotlin Angular Apps 18 | 19 | 20 | 21 | 22 | org.apache.maven.plugins 23 | maven-dependency-plugin 24 | 25 | 26 | unpack-js-dependencies 27 | prepare-package 28 | 29 | unpack-dependencies 30 | 31 | 32 | **/*.js,**/*.js.map 33 | ${project.build.outputDirectory} 34 | false 35 | true 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /kotlin-angular-core-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kotlin-angular-test", 3 | "version": "2.4.8", 4 | "private": true, 5 | "dependencies": { 6 | "@angular/core": "2.4.8", 7 | "zone.js": "0.7.7" 8 | } 9 | } -------------------------------------------------------------------------------- /kotlin-angular-core-test/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | kotlin-angular-core-test 8 | 9 | 10 | kotlin-angular-lib-parent 11 | com.github.crunc 12 | 2.4.8-SNAPSHOT 13 | ../kotlin-angular-lib-parent 14 | 15 | 16 | Kotlin Angular Core Test 17 | 18 | 19 | 20 | com.github.crunc 21 | kotlin-jasmine-core 22 | 23 | 24 | com.github.crunc 25 | kotlin-angular-core 26 | 27 | 28 | 29 | 30 | 31 | 32 | ${node_modules}/@angular/core/bundles 33 | ${project.build.libOutputDirectory}/angular 34 | 35 | core-testing.umd.js 36 | 37 | 38 | 39 | ${node_modules}/zone.js/dist 40 | ${project.build.libOutputDirectory}/zone.js 41 | 42 | async-test.js 43 | jasmine-patch.js 44 | proxy.js 45 | sync-test.js 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /kotlin-angular-core-test/src/main/kotlin/ng/api/core/testing/ComponentFixture.kt: -------------------------------------------------------------------------------- 1 | package ng.api.core.testing 2 | 3 | class ComponentFixture internal constructor(private val _fixture: ng.core.testing.ComponentFixture) { 4 | 5 | val debugElement get() = _fixture.debugElement 6 | } -------------------------------------------------------------------------------- /kotlin-angular-core-test/src/main/kotlin/ng/api/core/testing/TestBed.kt: -------------------------------------------------------------------------------- 1 | package ng.api.core.testing 2 | 3 | import ng.api.ComponentReference 4 | import ng.api.toTarget 5 | import kotlin.js.Promise 6 | 7 | class TestBed internal constructor(private val _testBed: ng.core.testing.TestBed) { 8 | 9 | fun compileComponents(): Promise { 10 | return _testBed.compileComponents() 11 | } 12 | 13 | companion object { 14 | 15 | fun configureTestingModule( 16 | declarations: Array> = emptyArray() 17 | ): TestBed { 18 | 19 | val options: dynamic = js("({})") 20 | 21 | if (!declarations.isEmpty()) { 22 | options.declarations = declarations.toTarget() 23 | } 24 | 25 | return TestBed(ng.core.testing.TestBed.configureTestingModule(options)) 26 | } 27 | 28 | fun createComponent(reference: ComponentReference): ComponentFixture { 29 | val fixture = ng.core.testing.TestBed.createComponent(reference.target) 30 | return ComponentFixture(fixture) 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /kotlin-angular-core-test/src/main/kotlin/ng/api/core/testing/async.kt: -------------------------------------------------------------------------------- 1 | package ng.api.core.testing 2 | 3 | import kotlin.js.Promise 4 | 5 | fun async(work: () -> Unit): () -> Promise { 6 | return ng.core.testing.async(work) 7 | } 8 | -------------------------------------------------------------------------------- /kotlin-angular-core-test/src/main/kotlin/ng/core/testing/testing.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule("ng") 2 | @file:JsQualifier("core.testing") 3 | @file:JsNonModule 4 | 5 | package ng.core.testing 6 | 7 | import ng.core.* 8 | import kotlin.js.* 9 | 10 | external internal fun async(work: () -> Unit): () -> Promise 11 | 12 | external interface TestingModuleOptions { 13 | val declarations: Array> 14 | } 15 | 16 | external internal class TestBed { 17 | 18 | companion object { 19 | fun configureTestingModule(options: dynamic): TestBed 20 | fun createComponent(reference: JsClass): ComponentFixture 21 | } 22 | 23 | fun compileComponents(): Promise 24 | } 25 | 26 | external internal class ComponentFixture(componentRef: ComponentRef, ngZone: NgZone, _autoDetect: Boolean) { 27 | 28 | val componentRef: ComponentRef 29 | val ngZone: NgZone 30 | val changeDetectorRef: ChangeDetectorRef 31 | val elementRef: ElementRef 32 | val debugElement: DebugElement 33 | val componentInstance: T 34 | val nativeElement: Any 35 | 36 | fun detectChanges(): Unit 37 | fun detectChanges(checkNoChanges: Boolean): Unit 38 | fun checkNoChanges(): Unit 39 | fun autoDetectChanges(): Unit 40 | fun autoDetectChanges(autoDetect: Boolean) 41 | fun isStable(): Boolean 42 | fun whenStable(): Promise 43 | fun destroy(): Unit 44 | } 45 | -------------------------------------------------------------------------------- /kotlin-angular-core-test/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@angular/core@2.4.8": 6 | version "2.4.8" 7 | resolved "@angular-core-2.4.8.tgz#bf1a4fc324827516e6c3222047a9b2cbdaee6976" 8 | 9 | zone.js@0.7.7: 10 | version "0.7.7" 11 | resolved zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620 12 | -------------------------------------------------------------------------------- /kotlin-angular-core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kotlin-angular-core", 3 | "version": "2.4.8", 4 | "private": true, 5 | "dependencies": { 6 | "@angular/common": "2.4.8", 7 | "@angular/compiler": "2.4.8", 8 | "@angular/core": "2.4.8", 9 | "@angular/forms": "2.4.8", 10 | "@angular/http": "2.4.8", 11 | "@angular/platform-browser": "2.4.8", 12 | "@angular/platform-browser-dynamic": "2.4.8", 13 | "@angular/router": "3.4.8", 14 | "core-js": "2.4.1", 15 | "zone.js": "0.7.7" 16 | } 17 | } -------------------------------------------------------------------------------- /kotlin-angular-core/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | kotlin-angular-core 7 | jar 8 | 9 | 10 | com.github.crunc 11 | kotlin-angular-lib-parent 12 | 2.4.8-SNAPSHOT 13 | ../kotlin-angular-lib-parent 14 | 15 | 16 | Kotlin Angular Core 17 | @angular/core for Kotlin 18 | 19 | 20 | 21 | com.github.crunc 22 | kotlin-rxjs 23 | 24 | 25 | 26 | 27 | 28 | 29 | ${basedir}/src/lib/js 30 | ${project.build.libOutputDirectory} 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/lib/js/core-js/shim.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * core-js 2.4.1 3 | * https://github.com/zloirock/core-js 4 | * License: http://rock.mit-license.org 5 | * © 2016 Denis Pushkarev 6 | */ 7 | !function(a,b,c){"use strict";!function(a){function __webpack_require__(c){if(b[c])return b[c].exports;var d=b[c]={exports:{},id:c,loaded:!1};return a[c].call(d.exports,d,d.exports,__webpack_require__),d.loaded=!0,d.exports}var b={};return __webpack_require__.m=a,__webpack_require__.c=b,__webpack_require__.p="",__webpack_require__(0)}([function(a,b,c){c(1),c(50),c(51),c(52),c(54),c(55),c(58),c(59),c(60),c(61),c(62),c(63),c(64),c(65),c(66),c(68),c(70),c(72),c(74),c(77),c(78),c(79),c(83),c(86),c(87),c(88),c(89),c(91),c(92),c(93),c(94),c(95),c(97),c(99),c(100),c(101),c(103),c(104),c(105),c(107),c(108),c(109),c(111),c(112),c(113),c(114),c(115),c(116),c(117),c(118),c(119),c(120),c(121),c(122),c(123),c(124),c(126),c(130),c(131),c(132),c(133),c(137),c(139),c(140),c(141),c(142),c(143),c(144),c(145),c(146),c(147),c(148),c(149),c(150),c(151),c(152),c(158),c(159),c(161),c(162),c(163),c(167),c(168),c(169),c(170),c(171),c(173),c(174),c(175),c(176),c(179),c(181),c(182),c(183),c(185),c(187),c(189),c(190),c(191),c(193),c(194),c(195),c(196),c(203),c(206),c(207),c(209),c(210),c(211),c(212),c(213),c(214),c(215),c(216),c(217),c(218),c(219),c(220),c(222),c(223),c(224),c(225),c(226),c(227),c(228),c(229),c(231),c(234),c(235),c(237),c(238),c(239),c(240),c(241),c(242),c(243),c(244),c(245),c(246),c(247),c(249),c(250),c(251),c(252),c(253),c(254),c(255),c(256),c(258),c(259),c(261),c(262),c(263),c(264),c(267),c(268),c(269),c(270),c(271),c(272),c(273),c(274),c(276),c(277),c(278),c(279),c(280),c(281),c(282),c(283),c(284),c(285),c(286),c(287),a.exports=c(288)},function(a,b,d){var e=d(2),f=d(3),g=d(4),h=d(6),i=d(16),j=d(20).KEY,k=d(5),l=d(21),m=d(22),n=d(17),o=d(23),p=d(24),q=d(25),r=d(27),s=d(40),t=d(43),u=d(10),v=d(30),w=d(14),x=d(15),y=d(44),z=d(47),A=d(49),B=d(9),C=d(28),D=A.f,E=B.f,F=z.f,G=e.Symbol,H=e.JSON,I=H&&H.stringify,J="prototype",K=o("_hidden"),L=o("toPrimitive"),M={}.propertyIsEnumerable,N=l("symbol-registry"),O=l("symbols"),P=l("op-symbols"),Q=Object[J],R="function"==typeof G,S=e.QObject,T=!S||!S[J]||!S[J].findChild,U=g&&k(function(){return 7!=y(E({},"a",{get:function(){return E(this,"a",{value:7}).a}})).a})?function(a,b,c){var d=D(Q,b);d&&delete Q[b],E(a,b,c),d&&a!==Q&&E(Q,b,d)}:E,V=function(a){var b=O[a]=y(G[J]);return b._k=a,b},W=R&&"symbol"==typeof G.iterator?function(a){return"symbol"==typeof a}:function(a){return a instanceof G},X=function defineProperty(a,b,c){return a===Q&&X(P,b,c),u(a),b=w(b,!0),u(c),f(O,b)?(c.enumerable?(f(a,K)&&a[K][b]&&(a[K][b]=!1),c=y(c,{enumerable:x(0,!1)})):(f(a,K)||E(a,K,x(1,{})),a[K][b]=!0),U(a,b,c)):E(a,b,c)},Y=function defineProperties(a,b){u(a);for(var c,d=s(b=v(b)),e=0,f=d.length;f>e;)X(a,c=d[e++],b[c]);return a},Z=function create(a,b){return b===c?y(a):Y(y(a),b)},$=function propertyIsEnumerable(a){var b=M.call(this,a=w(a,!0));return!(this===Q&&f(O,a)&&!f(P,a))&&(!(b||!f(this,a)||!f(O,a)||f(this,K)&&this[K][a])||b)},_=function getOwnPropertyDescriptor(a,b){if(a=v(a),b=w(b,!0),a!==Q||!f(O,b)||f(P,b)){var c=D(a,b);return!c||!f(O,b)||f(a,K)&&a[K][b]||(c.enumerable=!0),c}},aa=function getOwnPropertyNames(a){for(var b,c=F(v(a)),d=[],e=0;c.length>e;)f(O,b=c[e++])||b==K||b==j||d.push(b);return d},ba=function getOwnPropertySymbols(a){for(var b,c=a===Q,d=F(c?P:v(a)),e=[],g=0;d.length>g;)!f(O,b=d[g++])||c&&!f(Q,b)||e.push(O[b]);return e};R||(G=function Symbol(){if(this instanceof G)throw TypeError("Symbol is not a constructor!");var a=n(arguments.length>0?arguments[0]:c),b=function(c){this===Q&&b.call(P,c),f(this,K)&&f(this[K],a)&&(this[K][a]=!1),U(this,a,x(1,c))};return g&&T&&U(Q,a,{configurable:!0,set:b}),V(a)},i(G[J],"toString",function toString(){return this._k}),A.f=_,B.f=X,d(48).f=z.f=aa,d(42).f=$,d(41).f=ba,g&&!d(26)&&i(Q,"propertyIsEnumerable",$,!0),p.f=function(a){return V(o(a))}),h(h.G+h.W+h.F*!R,{Symbol:G});for(var ca="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),da=0;ca.length>da;)o(ca[da++]);for(var ca=C(o.store),da=0;ca.length>da;)q(ca[da++]);h(h.S+h.F*!R,"Symbol",{"for":function(a){return f(N,a+="")?N[a]:N[a]=G(a)},keyFor:function keyFor(a){if(W(a))return r(N,a);throw TypeError(a+" is not a symbol!")},useSetter:function(){T=!0},useSimple:function(){T=!1}}),h(h.S+h.F*!R,"Object",{create:Z,defineProperty:X,defineProperties:Y,getOwnPropertyDescriptor:_,getOwnPropertyNames:aa,getOwnPropertySymbols:ba}),H&&h(h.S+h.F*(!R||k(function(){var a=G();return"[null]"!=I([a])||"{}"!=I({a:a})||"{}"!=I(Object(a))})),"JSON",{stringify:function stringify(a){if(a!==c&&!W(a)){for(var b,d,e=[a],f=1;arguments.length>f;)e.push(arguments[f++]);return b=e[1],"function"==typeof b&&(d=b),!d&&t(b)||(b=function(a,b){if(d&&(b=d.call(this,a,b)),!W(b))return b}),e[1]=b,I.apply(H,e)}}}),G[J][L]||d(8)(G[J],L,G[J].valueOf),m(G,"Symbol"),m(Math,"Math",!0),m(e.JSON,"JSON",!0)},function(a,c){var d=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof b&&(b=d)},function(a,b){var c={}.hasOwnProperty;a.exports=function(a,b){return c.call(a,b)}},function(a,b,c){a.exports=!c(5)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b,d){var e=d(2),f=d(7),g=d(8),h=d(16),i=d(18),j="prototype",k=function(a,b,d){var l,m,n,o,p=a&k.F,q=a&k.G,r=a&k.S,s=a&k.P,t=a&k.B,u=q?e:r?e[b]||(e[b]={}):(e[b]||{})[j],v=q?f:f[b]||(f[b]={}),w=v[j]||(v[j]={});q&&(d=b);for(l in d)m=!p&&u&&u[l]!==c,n=(m?u:d)[l],o=t&&m?i(n,e):s&&"function"==typeof n?i(Function.call,n):n,u&&h(u,l,n,a&k.U),v[l]!=n&&g(v,l,o),s&&w[l]!=n&&(w[l]=n)};e.core=f,k.F=1,k.G=2,k.S=4,k.P=8,k.B=16,k.W=32,k.U=64,k.R=128,a.exports=k},function(b,c){var d=b.exports={version:"2.4.0"};"number"==typeof a&&(a=d)},function(a,b,c){var d=c(9),e=c(15);a.exports=c(4)?function(a,b,c){return d.f(a,b,e(1,c))}:function(a,b,c){return a[b]=c,a}},function(a,b,c){var d=c(10),e=c(12),f=c(14),g=Object.defineProperty;b.f=c(4)?Object.defineProperty:function defineProperty(a,b,c){if(d(a),b=f(b,!0),d(c),e)try{return g(a,b,c)}catch(h){}if("get"in c||"set"in c)throw TypeError("Accessors not supported!");return"value"in c&&(a[b]=c.value),a}},function(a,b,c){var d=c(11);a.exports=function(a){if(!d(a))throw TypeError(a+" is not an object!");return a}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b,c){a.exports=!c(4)&&!c(5)(function(){return 7!=Object.defineProperty(c(13)("div"),"a",{get:function(){return 7}}).a})},function(a,b,c){var d=c(11),e=c(2).document,f=d(e)&&d(e.createElement);a.exports=function(a){return f?e.createElement(a):{}}},function(a,b,c){var d=c(11);a.exports=function(a,b){if(!d(a))return a;var c,e;if(b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a)))return e;if("function"==typeof(c=a.valueOf)&&!d(e=c.call(a)))return e;if(!b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a)))return e;throw TypeError("Can't convert object to primitive value")}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(a,b,c){var d=c(2),e=c(8),f=c(3),g=c(17)("src"),h="toString",i=Function[h],j=(""+i).split(h);c(7).inspectSource=function(a){return i.call(a)},(a.exports=function(a,b,c,h){var i="function"==typeof c;i&&(f(c,"name")||e(c,"name",b)),a[b]!==c&&(i&&(f(c,g)||e(c,g,a[b]?""+a[b]:j.join(String(b)))),a===d?a[b]=c:h?a[b]?a[b]=c:e(a,b,c):(delete a[b],e(a,b,c)))})(Function.prototype,h,function toString(){return"function"==typeof this&&this[g]||i.call(this)})},function(a,b){var d=0,e=Math.random();a.exports=function(a){return"Symbol(".concat(a===c?"":a,")_",(++d+e).toString(36))}},function(a,b,d){var e=d(19);a.exports=function(a,b,d){if(e(a),b===c)return a;switch(d){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b,c){var d=c(17)("meta"),e=c(11),f=c(3),g=c(9).f,h=0,i=Object.isExtensible||function(){return!0},j=!c(5)(function(){return i(Object.preventExtensions({}))}),k=function(a){g(a,d,{value:{i:"O"+ ++h,w:{}}})},l=function(a,b){if(!e(a))return"symbol"==typeof a?a:("string"==typeof a?"S":"P")+a;if(!f(a,d)){if(!i(a))return"F";if(!b)return"E";k(a)}return a[d].i},m=function(a,b){if(!f(a,d)){if(!i(a))return!0;if(!b)return!1;k(a)}return a[d].w},n=function(a){return j&&o.NEED&&i(a)&&!f(a,d)&&k(a),a},o=a.exports={KEY:d,NEED:!1,fastKey:l,getWeak:m,onFreeze:n}},function(a,b,c){var d=c(2),e="__core-js_shared__",f=d[e]||(d[e]={});a.exports=function(a){return f[a]||(f[a]={})}},function(a,b,c){var d=c(9).f,e=c(3),f=c(23)("toStringTag");a.exports=function(a,b,c){a&&!e(a=c?a:a.prototype,f)&&d(a,f,{configurable:!0,value:b})}},function(a,b,c){var d=c(21)("wks"),e=c(17),f=c(2).Symbol,g="function"==typeof f,h=a.exports=function(a){return d[a]||(d[a]=g&&f[a]||(g?f:e)("Symbol."+a))};h.store=d},function(a,b,c){b.f=c(23)},function(a,b,c){var d=c(2),e=c(7),f=c(26),g=c(24),h=c(9).f;a.exports=function(a){var b=e.Symbol||(e.Symbol=f?{}:d.Symbol||{});"_"==a.charAt(0)||a in b||h(b,a,{value:g.f(a)})}},function(a,b){a.exports=!1},function(a,b,c){var d=c(28),e=c(30);a.exports=function(a,b){for(var c,f=e(a),g=d(f),h=g.length,i=0;h>i;)if(f[c=g[i++]]===b)return c}},function(a,b,c){var d=c(29),e=c(39);a.exports=Object.keys||function keys(a){return d(a,e)}},function(a,b,c){var d=c(3),e=c(30),f=c(34)(!1),g=c(38)("IE_PROTO");a.exports=function(a,b){var c,h=e(a),i=0,j=[];for(c in h)c!=g&&d(h,c)&&j.push(c);for(;b.length>i;)d(h,c=b[i++])&&(~f(j,c)||j.push(c));return j}},function(a,b,c){var d=c(31),e=c(33);a.exports=function(a){return d(e(a))}},function(a,b,c){var d=c(32);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==d(a)?a.split(""):Object(a)}},function(a,b){var c={}.toString;a.exports=function(a){return c.call(a).slice(8,-1)}},function(a,b){a.exports=function(a){if(a==c)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(30),e=c(35),f=c(37);a.exports=function(a){return function(b,c,g){var h,i=d(b),j=e(i.length),k=f(g,j);if(a&&c!=c){for(;j>k;)if(h=i[k++],h!=h)return!0}else for(;j>k;k++)if((a||k in i)&&i[k]===c)return a||k||0;return!a&&-1}}},function(a,b,c){var d=c(36),e=Math.min;a.exports=function(a){return a>0?e(d(a),9007199254740991):0}},function(a,b){var c=Math.ceil,d=Math.floor;a.exports=function(a){return isNaN(a=+a)?0:(a>0?d:c)(a)}},function(a,b,c){var d=c(36),e=Math.max,f=Math.min;a.exports=function(a,b){return a=d(a),a<0?e(a+b,0):f(a,b)}},function(a,b,c){var d=c(21)("keys"),e=c(17);a.exports=function(a){return d[a]||(d[a]=e(a))}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,b,c){var d=c(28),e=c(41),f=c(42);a.exports=function(a){var b=d(a),c=e.f;if(c)for(var g,h=c(a),i=f.f,j=0;h.length>j;)i.call(a,g=h[j++])&&b.push(g);return b}},function(a,b){b.f=Object.getOwnPropertySymbols},function(a,b){b.f={}.propertyIsEnumerable},function(a,b,c){var d=c(32);a.exports=Array.isArray||function isArray(a){return"Array"==d(a)}},function(a,b,d){var e=d(10),f=d(45),g=d(39),h=d(38)("IE_PROTO"),i=function(){},j="prototype",k=function(){var a,b=d(13)("iframe"),c=g.length,e="<",f=">";for(b.style.display="none",d(46).appendChild(b),b.src="javascript:",a=b.contentWindow.document,a.open(),a.write(e+"script"+f+"document.F=Object"+e+"/script"+f),a.close(),k=a.F;c--;)delete k[j][g[c]];return k()};a.exports=Object.create||function create(a,b){var d;return null!==a?(i[j]=e(a),d=new i,i[j]=null,d[h]=a):d=k(),b===c?d:f(d,b)}},function(a,b,c){var d=c(9),e=c(10),f=c(28);a.exports=c(4)?Object.defineProperties:function defineProperties(a,b){e(a);for(var c,g=f(b),h=g.length,i=0;h>i;)d.f(a,c=g[i++],b[c]);return a}},function(a,b,c){a.exports=c(2).document&&document.documentElement},function(a,b,c){var d=c(30),e=c(48).f,f={}.toString,g="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],h=function(a){try{return e(a)}catch(b){return g.slice()}};a.exports.f=function getOwnPropertyNames(a){return g&&"[object Window]"==f.call(a)?h(a):e(d(a))}},function(a,b,c){var d=c(29),e=c(39).concat("length","prototype");b.f=Object.getOwnPropertyNames||function getOwnPropertyNames(a){return d(a,e)}},function(a,b,c){var d=c(42),e=c(15),f=c(30),g=c(14),h=c(3),i=c(12),j=Object.getOwnPropertyDescriptor;b.f=c(4)?j:function getOwnPropertyDescriptor(a,b){if(a=f(a),b=g(b,!0),i)try{return j(a,b)}catch(c){}if(h(a,b))return e(!d.f.call(a,b),a[b])}},function(a,b,c){var d=c(6);d(d.S+d.F*!c(4),"Object",{defineProperty:c(9).f})},function(a,b,c){var d=c(6);d(d.S+d.F*!c(4),"Object",{defineProperties:c(45)})},function(a,b,c){var d=c(30),e=c(49).f;c(53)("getOwnPropertyDescriptor",function(){return function getOwnPropertyDescriptor(a,b){return e(d(a),b)}})},function(a,b,c){var d=c(6),e=c(7),f=c(5);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),"Object",g)}},function(a,b,c){var d=c(6);d(d.S,"Object",{create:c(44)})},function(a,b,c){var d=c(56),e=c(57);c(53)("getPrototypeOf",function(){return function getPrototypeOf(a){return e(d(a))}})},function(a,b,c){var d=c(33);a.exports=function(a){return Object(d(a))}},function(a,b,c){var d=c(3),e=c(56),f=c(38)("IE_PROTO"),g=Object.prototype;a.exports=Object.getPrototypeOf||function(a){return a=e(a),d(a,f)?a[f]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?g:null}},function(a,b,c){var d=c(56),e=c(28);c(53)("keys",function(){return function keys(a){return e(d(a))}})},function(a,b,c){c(53)("getOwnPropertyNames",function(){return c(47).f})},function(a,b,c){var d=c(11),e=c(20).onFreeze;c(53)("freeze",function(a){return function freeze(b){return a&&d(b)?a(e(b)):b}})},function(a,b,c){var d=c(11),e=c(20).onFreeze;c(53)("seal",function(a){return function seal(b){return a&&d(b)?a(e(b)):b}})},function(a,b,c){var d=c(11),e=c(20).onFreeze;c(53)("preventExtensions",function(a){return function preventExtensions(b){return a&&d(b)?a(e(b)):b}})},function(a,b,c){var d=c(11);c(53)("isFrozen",function(a){return function isFrozen(b){return!d(b)||!!a&&a(b)}})},function(a,b,c){var d=c(11);c(53)("isSealed",function(a){return function isSealed(b){return!d(b)||!!a&&a(b)}})},function(a,b,c){var d=c(11);c(53)("isExtensible",function(a){return function isExtensible(b){return!!d(b)&&(!a||a(b))}})},function(a,b,c){var d=c(6);d(d.S+d.F,"Object",{assign:c(67)})},function(a,b,c){var d=c(28),e=c(41),f=c(42),g=c(56),h=c(31),i=Object.assign;a.exports=!i||c(5)(function(){var a={},b={},c=Symbol(),d="abcdefghijklmnopqrst";return a[c]=7,d.split("").forEach(function(a){b[a]=a}),7!=i({},a)[c]||Object.keys(i({},b)).join("")!=d})?function assign(a,b){for(var c=g(a),i=arguments.length,j=1,k=e.f,l=f.f;i>j;)for(var m,n=h(arguments[j++]),o=k?d(n).concat(k(n)):d(n),p=o.length,q=0;p>q;)l.call(n,m=o[q++])&&(c[m]=n[m]);return c}:i},function(a,b,c){var d=c(6);d(d.S,"Object",{is:c(69)})},function(a,b){a.exports=Object.is||function is(a,b){return a===b?0!==a||1/a===1/b:a!=a&&b!=b}},function(a,b,c){var d=c(6);d(d.S,"Object",{setPrototypeOf:c(71).set})},function(a,b,d){var e=d(11),f=d(10),g=function(a,b){if(f(a),!e(b)&&null!==b)throw TypeError(b+": can't set as prototype!")};a.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(a,b,c){try{c=d(18)(Function.call,d(49).f(Object.prototype,"__proto__").set,2),c(a,[]),b=!(a instanceof Array)}catch(e){b=!0}return function setPrototypeOf(a,d){return g(a,d),b?a.__proto__=d:c(a,d),a}}({},!1):c),check:g}},function(a,b,c){var d=c(73),e={};e[c(23)("toStringTag")]="z",e+""!="[object z]"&&c(16)(Object.prototype,"toString",function toString(){return"[object "+d(this)+"]"},!0)},function(a,b,d){var e=d(32),f=d(23)("toStringTag"),g="Arguments"==e(function(){return arguments}()),h=function(a,b){try{return a[b]}catch(c){}};a.exports=function(a){var b,d,i;return a===c?"Undefined":null===a?"Null":"string"==typeof(d=h(b=Object(a),f))?d:g?e(b):"Object"==(i=e(b))&&"function"==typeof b.callee?"Arguments":i}},function(a,b,c){var d=c(6);d(d.P,"Function",{bind:c(75)})},function(a,b,c){var d=c(19),e=c(11),f=c(76),g=[].slice,h={},i=function(a,b,c){if(!(b in h)){for(var d=[],e=0;e2){b=s?b.trim():m(b,3);var c,d,e,f=b.charCodeAt(0);if(43===f||45===f){if(c=b.charCodeAt(2),88===c||120===c)return NaN}else if(48===f){switch(b.charCodeAt(1)){case 66:case 98:d=2,e=49;break;case 79:case 111:d=8,e=55;break;default:return+b}for(var g,i=b.slice(2),j=0,k=i.length;je)return NaN;return parseInt(i,d)}}return+b};if(!o(" 0o1")||!o("0b1")||o("+0x1")){o=function Number(a){var b=arguments.length<1?0:a,c=this;return c instanceof o&&(r?i(function(){q.valueOf.call(c)}):f(c)!=n)?g(new p(t(b)),c,o):t(b)};for(var u,v=c(4)?j(p):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;v.length>w;w++)e(p,u=v[w])&&!e(o,u)&&l(o,u,k(p,u));o.prototype=q,q.constructor=o,c(16)(d,n,o)}},function(a,b,c){var d=c(11),e=c(71).set;a.exports=function(a,b,c){var f,g=b.constructor;return g!==c&&"function"==typeof g&&(f=g.prototype)!==c.prototype&&d(f)&&e&&e(a,f),a}},function(a,b,c){var d=c(6),e=c(33),f=c(5),g=c(82),h="["+g+"]",i="​…",j=RegExp("^"+h+h+"*"),k=RegExp(h+h+"*$"),l=function(a,b,c){var e={},h=f(function(){return!!g[a]()||i[a]()!=i}),j=e[a]=h?b(m):g[a];c&&(e[c]=j),d(d.P+d.F*h,"String",e)},m=l.trim=function(a,b){return a=String(e(a)),1&b&&(a=a.replace(j,"")),2&b&&(a=a.replace(k,"")),a};a.exports=l},function(a,b){a.exports="\t\n\x0B\f\r   ᠎              \u2028\u2029\ufeff"},function(a,b,c){var d=c(6),e=c(36),f=c(84),g=c(85),h=1..toFixed,i=Math.floor,j=[0,0,0,0,0,0],k="Number.toFixed: incorrect invocation!",l="0",m=function(a,b){for(var c=-1,d=b;++c<6;)d+=a*j[c],j[c]=d%1e7,d=i(d/1e7)},n=function(a){for(var b=6,c=0;--b>=0;)c+=j[b],j[b]=i(c/a),c=c%a*1e7},o=function(){for(var a=6,b="";--a>=0;)if(""!==b||0===a||0!==j[a]){var c=String(j[a]);b=""===b?c:b+g.call(l,7-c.length)+c}return b},p=function(a,b,c){return 0===b?c:b%2===1?p(a,b-1,c*a):p(a*a,b/2,c)},q=function(a){for(var b=0,c=a;c>=4096;)b+=12,c/=4096;for(;c>=2;)b+=1,c/=2;return b};d(d.P+d.F*(!!h&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c(5)(function(){h.call({})})),"Number",{toFixed:function toFixed(a){var b,c,d,h,i=f(this,k),j=e(a),r="",s=l;if(j<0||j>20)throw RangeError(k);if(i!=i)return"NaN";if(i<=-1e21||i>=1e21)return String(i);if(i<0&&(r="-",i=-i),i>1e-21)if(b=q(i*p(2,69,1))-69,c=b<0?i*p(2,-b,1):i/p(2,b,1),c*=4503599627370496,b=52-b,b>0){for(m(0,c),d=j;d>=7;)m(1e7,0),d-=7;for(m(p(10,d,1),0),d=b-1;d>=23;)n(1<<23),d-=23;n(1<0?(h=s.length,s=r+(h<=j?"0."+g.call(l,j-h)+s:s.slice(0,h-j)+"."+s.slice(h-j))):s=r+s,s}})},function(a,b,c){var d=c(32);a.exports=function(a,b){if("number"!=typeof a&&"Number"!=d(a))throw TypeError(b);return+a}},function(a,b,c){var d=c(36),e=c(33);a.exports=function repeat(a){var b=String(e(this)),c="",f=d(a);if(f<0||f==1/0)throw RangeError("Count can't be negative");for(;f>0;(f>>>=1)&&(b+=b))1&f&&(c+=b);return c}},function(a,b,d){var e=d(6),f=d(5),g=d(84),h=1..toPrecision;e(e.P+e.F*(f(function(){return"1"!==h.call(1,c)})||!f(function(){h.call({})})),"Number",{toPrecision:function toPrecision(a){var b=g(this,"Number#toPrecision: incorrect invocation!");return a===c?h.call(b):h.call(b,a)}})},function(a,b,c){var d=c(6);d(d.S,"Number",{EPSILON:Math.pow(2,-52)})},function(a,b,c){var d=c(6),e=c(2).isFinite;d(d.S,"Number",{isFinite:function isFinite(a){return"number"==typeof a&&e(a)}})},function(a,b,c){var d=c(6);d(d.S,"Number",{isInteger:c(90)})},function(a,b,c){var d=c(11),e=Math.floor;a.exports=function isInteger(a){return!d(a)&&isFinite(a)&&e(a)===a}},function(a,b,c){var d=c(6);d(d.S,"Number",{isNaN:function isNaN(a){return a!=a}})},function(a,b,c){var d=c(6),e=c(90),f=Math.abs;d(d.S,"Number",{isSafeInteger:function isSafeInteger(a){return e(a)&&f(a)<=9007199254740991}})},function(a,b,c){var d=c(6);d(d.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(a,b,c){var d=c(6);d(d.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(a,b,c){var d=c(6),e=c(96);d(d.S+d.F*(Number.parseFloat!=e),"Number",{parseFloat:e})},function(a,b,c){var d=c(2).parseFloat,e=c(81).trim;a.exports=1/d(c(82)+"-0")!==-(1/0)?function parseFloat(a){var b=e(String(a),3),c=d(b);return 0===c&&"-"==b.charAt(0)?-0:c}:d},function(a,b,c){var d=c(6),e=c(98);d(d.S+d.F*(Number.parseInt!=e),"Number",{parseInt:e})},function(a,b,c){var d=c(2).parseInt,e=c(81).trim,f=c(82),g=/^[\-+]?0[xX]/;a.exports=8!==d(f+"08")||22!==d(f+"0x16")?function parseInt(a,b){var c=e(String(a),3);return d(c,b>>>0||(g.test(c)?16:10))}:d},function(a,b,c){var d=c(6),e=c(98);d(d.G+d.F*(parseInt!=e),{parseInt:e})},function(a,b,c){var d=c(6),e=c(96);d(d.G+d.F*(parseFloat!=e),{parseFloat:e})},function(a,b,c){var d=c(6),e=c(102),f=Math.sqrt,g=Math.acosh;d(d.S+d.F*!(g&&710==Math.floor(g(Number.MAX_VALUE))&&g(1/0)==1/0),"Math",{acosh:function acosh(a){return(a=+a)<1?NaN:a>94906265.62425156?Math.log(a)+Math.LN2:e(a-1+f(a-1)*f(a+1))}})},function(a,b){a.exports=Math.log1p||function log1p(a){return(a=+a)>-1e-8&&a<1e-8?a-a*a/2:Math.log(1+a)}},function(a,b,c){function asinh(a){return isFinite(a=+a)&&0!=a?a<0?-asinh(-a):Math.log(a+Math.sqrt(a*a+1)):a}var d=c(6),e=Math.asinh;d(d.S+d.F*!(e&&1/e(0)>0),"Math",{asinh:asinh})},function(a,b,c){var d=c(6),e=Math.atanh;d(d.S+d.F*!(e&&1/e(-0)<0),"Math",{atanh:function atanh(a){return 0==(a=+a)?a:Math.log((1+a)/(1-a))/2}})},function(a,b,c){var d=c(6),e=c(106);d(d.S,"Math",{cbrt:function cbrt(a){return e(a=+a)*Math.pow(Math.abs(a),1/3)}})},function(a,b){a.exports=Math.sign||function sign(a){return 0==(a=+a)||a!=a?a:a<0?-1:1}},function(a,b,c){var d=c(6);d(d.S,"Math",{clz32:function clz32(a){return(a>>>=0)?31-Math.floor(Math.log(a+.5)*Math.LOG2E):32}})},function(a,b,c){var d=c(6),e=Math.exp;d(d.S,"Math",{cosh:function cosh(a){return(e(a=+a)+e(-a))/2}})},function(a,b,c){var d=c(6),e=c(110);d(d.S+d.F*(e!=Math.expm1),"Math",{expm1:e})},function(a,b){var c=Math.expm1;a.exports=!c||c(10)>22025.465794806718||c(10)<22025.465794806718||c(-2e-17)!=-2e-17?function expm1(a){return 0==(a=+a)?a:a>-1e-6&&a<1e-6?a+a*a/2:Math.exp(a)-1}:c},function(a,b,c){var d=c(6),e=c(106),f=Math.pow,g=f(2,-52),h=f(2,-23),i=f(2,127)*(2-h),j=f(2,-126),k=function(a){return a+1/g-1/g};d(d.S,"Math",{fround:function fround(a){var b,c,d=Math.abs(a),f=e(a);return di||c!=c?f*(1/0):f*c)}})},function(a,b,c){var d=c(6),e=Math.abs;d(d.S,"Math",{hypot:function hypot(a,b){for(var c,d,f=0,g=0,h=arguments.length,i=0;g0?(d=c/i,f+=d*d):f+=c;return i===1/0?1/0:i*Math.sqrt(f)}})},function(a,b,c){var d=c(6),e=Math.imul;d(d.S+d.F*c(5)(function(){return e(4294967295,5)!=-5||2!=e.length}),"Math",{imul:function imul(a,b){var c=65535,d=+a,e=+b,f=c&d,g=c&e;return 0|f*g+((c&d>>>16)*g+f*(c&e>>>16)<<16>>>0)}})},function(a,b,c){var d=c(6);d(d.S,"Math",{log10:function log10(a){return Math.log(a)/Math.LN10}})},function(a,b,c){var d=c(6);d(d.S,"Math",{log1p:c(102)})},function(a,b,c){var d=c(6);d(d.S,"Math",{log2:function log2(a){return Math.log(a)/Math.LN2}})},function(a,b,c){var d=c(6);d(d.S,"Math",{sign:c(106)})},function(a,b,c){var d=c(6),e=c(110),f=Math.exp;d(d.S+d.F*c(5)(function(){return!Math.sinh(-2e-17)!=-2e-17}),"Math",{sinh:function sinh(a){return Math.abs(a=+a)<1?(e(a)-e(-a))/2:(f(a-1)-f(-a-1))*(Math.E/2)}})},function(a,b,c){var d=c(6),e=c(110),f=Math.exp;d(d.S,"Math",{tanh:function tanh(a){var b=e(a=+a),c=e(-a);return b==1/0?1:c==1/0?-1:(b-c)/(f(a)+f(-a))}})},function(a,b,c){var d=c(6);d(d.S,"Math",{trunc:function trunc(a){return(a>0?Math.floor:Math.ceil)(a)}})},function(a,b,c){var d=c(6),e=c(37),f=String.fromCharCode,g=String.fromCodePoint;d(d.S+d.F*(!!g&&1!=g.length),"String",{fromCodePoint:function fromCodePoint(a){for(var b,c=[],d=arguments.length,g=0;d>g;){if(b=+arguments[g++],e(b,1114111)!==b)throw RangeError(b+" is not a valid code point");c.push(b<65536?f(b):f(((b-=65536)>>10)+55296,b%1024+56320))}return c.join("")}})},function(a,b,c){var d=c(6),e=c(30),f=c(35);d(d.S,"String",{raw:function raw(a){for(var b=e(a.raw),c=f(b.length),d=arguments.length,g=[],h=0;c>h;)g.push(String(b[h++])),h=k?a?"":c:(g=i.charCodeAt(j),g<55296||g>56319||j+1===k||(h=i.charCodeAt(j+1))<56320||h>57343?a?i.charAt(j):g:a?i.slice(j,j+2):(g-55296<<10)+(h-56320)+65536)}}},function(a,b,d){var e=d(6),f=d(35),g=d(127),h="endsWith",i=""[h];e(e.P+e.F*d(129)(h),"String",{endsWith:function endsWith(a){var b=g(this,a,h),d=arguments.length>1?arguments[1]:c,e=f(b.length),j=d===c?e:Math.min(f(d),e),k=String(a);return i?i.call(b,k,j):b.slice(j-k.length,j)===k}})},function(a,b,c){var d=c(128),e=c(33);a.exports=function(a,b,c){if(d(b))throw TypeError("String#"+c+" doesn't accept regex!");return String(e(a))}},function(a,b,d){var e=d(11),f=d(32),g=d(23)("match");a.exports=function(a){var b;return e(a)&&((b=a[g])!==c?!!b:"RegExp"==f(a))}},function(a,b,c){var d=c(23)("match");a.exports=function(a){var b=/./;try{"/./"[a](b)}catch(c){try{return b[d]=!1,!"/./"[a](b)}catch(e){}}return!0}},function(a,b,d){var e=d(6),f=d(127),g="includes";e(e.P+e.F*d(129)(g),"String",{includes:function includes(a){return!!~f(this,a,g).indexOf(a,arguments.length>1?arguments[1]:c)}})},function(a,b,c){var d=c(6);d(d.P,"String",{repeat:c(85)})},function(a,b,d){var e=d(6),f=d(35),g=d(127),h="startsWith",i=""[h];e(e.P+e.F*d(129)(h),"String",{startsWith:function startsWith(a){var b=g(this,a,h),d=f(Math.min(arguments.length>1?arguments[1]:c,b.length)),e=String(a);return i?i.call(b,e,d):b.slice(d,d+e.length)===e}})},function(a,b,d){var e=d(125)(!0);d(134)(String,"String",function(a){this._t=String(a),this._i=0},function(){var a,b=this._t,d=this._i;return d>=b.length?{value:c,done:!0}:(a=e(b,d),this._i+=a.length,{value:a,done:!1})})},function(a,b,d){var e=d(26),f=d(6),g=d(16),h=d(8),i=d(3),j=d(135),k=d(136),l=d(22),m=d(57),n=d(23)("iterator"),o=!([].keys&&"next"in[].keys()),p="@@iterator",q="keys",r="values",s=function(){return this};a.exports=function(a,b,d,t,u,v,w){k(d,b,t);var x,y,z,A=function(a){if(!o&&a in E)return E[a];switch(a){case q:return function keys(){return new d(this,a)};case r:return function values(){return new d(this,a)}}return function entries(){return new d(this,a)}},B=b+" Iterator",C=u==r,D=!1,E=a.prototype,F=E[n]||E[p]||u&&E[u],G=F||A(u),H=u?C?A("entries"):G:c,I="Array"==b?E.entries||F:F;if(I&&(z=m(I.call(new a)),z!==Object.prototype&&(l(z,B,!0),e||i(z,n)||h(z,n,s))),C&&F&&F.name!==r&&(D=!0,G=function values(){return F.call(this)}),e&&!w||!o&&!D&&E[n]||h(E,n,G),j[b]=G,j[B]=s,u)if(x={values:C?G:A(r),keys:v?G:A(q),entries:H},w)for(y in x)y in E||g(E,y,x[y]);else f(f.P+f.F*(o||D),b,x);return x}},function(a,b){a.exports={}},function(a,b,c){var d=c(44),e=c(15),f=c(22),g={};c(8)(g,c(23)("iterator"),function(){return this}),a.exports=function(a,b,c){a.prototype=d(g,{next:e(1,c)}),f(a,b+" Iterator")}},function(a,b,c){c(138)("anchor",function(a){return function anchor(b){return a(this,"a","name",b)}})},function(a,b,c){var d=c(6),e=c(5),f=c(33),g=/"/g,h=function(a,b,c,d){var e=String(f(a)),h="<"+b;return""!==c&&(h+=" "+c+'="'+String(d).replace(g,""")+'"'),h+">"+e+""};a.exports=function(a,b){var c={};c[a]=b(h),d(d.P+d.F*e(function(){var b=""[a]('"');return b!==b.toLowerCase()||b.split('"').length>3}),"String",c)}},function(a,b,c){c(138)("big",function(a){return function big(){return a(this,"big","","")}})},function(a,b,c){c(138)("blink",function(a){return function blink(){return a(this,"blink","","")}})},function(a,b,c){c(138)("bold",function(a){return function bold(){return a(this,"b","","")}})},function(a,b,c){c(138)("fixed",function(a){return function fixed(){return a(this,"tt","","")}})},function(a,b,c){c(138)("fontcolor",function(a){return function fontcolor(b){return a(this,"font","color",b)}})},function(a,b,c){c(138)("fontsize",function(a){return function fontsize(b){return a(this,"font","size",b)}})},function(a,b,c){c(138)("italics",function(a){return function italics(){return a(this,"i","","")}})},function(a,b,c){c(138)("link",function(a){return function link(b){return a(this,"a","href",b)}})},function(a,b,c){c(138)("small",function(a){return function small(){return a(this,"small","","")}})},function(a,b,c){c(138)("strike",function(a){return function strike(){return a(this,"strike","","")}})},function(a,b,c){c(138)("sub",function(a){return function sub(){return a(this,"sub","","")}})},function(a,b,c){c(138)("sup",function(a){return function sup(){return a(this,"sup","","")}})},function(a,b,c){var d=c(6);d(d.S,"Array",{isArray:c(43)})},function(a,b,d){var e=d(18),f=d(6),g=d(56),h=d(153),i=d(154),j=d(35),k=d(155),l=d(156);f(f.S+f.F*!d(157)(function(a){Array.from(a)}),"Array",{from:function from(a){var b,d,f,m,n=g(a),o="function"==typeof this?this:Array,p=arguments.length,q=p>1?arguments[1]:c,r=q!==c,s=0,t=l(n);if(r&&(q=e(q,p>2?arguments[2]:c,2)),t==c||o==Array&&i(t))for(b=j(n.length),d=new o(b);b>s;s++)k(d,s,r?q(n[s],s):n[s]);else for(m=t.call(n),d=new o;!(f=m.next()).done;s++)k(d,s,r?h(m,q,[f.value,s],!0):f.value);return d.length=s,d}})},function(a,b,d){var e=d(10);a.exports=function(a,b,d,f){try{return f?b(e(d)[0],d[1]):b(d)}catch(g){var h=a["return"];throw h!==c&&e(h.call(a)),g}}},function(a,b,d){var e=d(135),f=d(23)("iterator"),g=Array.prototype;a.exports=function(a){return a!==c&&(e.Array===a||g[f]===a)}},function(a,b,c){var d=c(9),e=c(15);a.exports=function(a,b,c){b in a?d.f(a,b,e(0,c)):a[b]=c}},function(a,b,d){var e=d(73),f=d(23)("iterator"),g=d(135);a.exports=d(7).getIteratorMethod=function(a){if(a!=c)return a[f]||a["@@iterator"]||g[e(a)]}},function(a,b,c){var d=c(23)("iterator"),e=!1; 8 | try{var f=[7][d]();f["return"]=function(){e=!0},Array.from(f,function(){throw 2})}catch(g){}a.exports=function(a,b){if(!b&&!e)return!1;var c=!1;try{var f=[7],g=f[d]();g.next=function(){return{done:c=!0}},f[d]=function(){return g},a(f)}catch(h){}return c}},function(a,b,c){var d=c(6),e=c(155);d(d.S+d.F*c(5)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),"Array",{of:function of(){for(var a=0,b=arguments.length,c=new("function"==typeof this?this:Array)(b);b>a;)e(c,a,arguments[a++]);return c.length=b,c}})},function(a,b,d){var e=d(6),f=d(30),g=[].join;e(e.P+e.F*(d(31)!=Object||!d(160)(g)),"Array",{join:function join(a){return g.call(f(this),a===c?",":a)}})},function(a,b,c){var d=c(5);a.exports=function(a,b){return!!a&&d(function(){b?a.call(null,function(){},1):a.call(null)})}},function(a,b,d){var e=d(6),f=d(46),g=d(32),h=d(37),i=d(35),j=[].slice;e(e.P+e.F*d(5)(function(){f&&j.call(f)}),"Array",{slice:function slice(a,b){var d=i(this.length),e=g(this);if(b=b===c?d:b,"Array"==e)return j.call(this,a,b);for(var f=h(a,d),k=h(b,d),l=i(k-f),m=Array(l),n=0;nw;w++)if((n||w in t)&&(q=t[w],r=u(q,w,s),a))if(d)x[w]=r;else if(r)switch(a){case 3:return!0;case 5:return q;case 6:return w;case 2:x.push(q)}else if(l)return!1;return m?-1:k||l?l:x}}},function(a,b,c){var d=c(166);a.exports=function(a,b){return new(d(a))(b)}},function(a,b,d){var e=d(11),f=d(43),g=d(23)("species");a.exports=function(a){var b;return f(a)&&(b=a.constructor,"function"!=typeof b||b!==Array&&!f(b.prototype)||(b=c),e(b)&&(b=b[g],null===b&&(b=c))),b===c?Array:b}},function(a,b,c){var d=c(6),e=c(164)(1);d(d.P+d.F*!c(160)([].map,!0),"Array",{map:function map(a){return e(this,a,arguments[1])}})},function(a,b,c){var d=c(6),e=c(164)(2);d(d.P+d.F*!c(160)([].filter,!0),"Array",{filter:function filter(a){return e(this,a,arguments[1])}})},function(a,b,c){var d=c(6),e=c(164)(3);d(d.P+d.F*!c(160)([].some,!0),"Array",{some:function some(a){return e(this,a,arguments[1])}})},function(a,b,c){var d=c(6),e=c(164)(4);d(d.P+d.F*!c(160)([].every,!0),"Array",{every:function every(a){return e(this,a,arguments[1])}})},function(a,b,c){var d=c(6),e=c(172);d(d.P+d.F*!c(160)([].reduce,!0),"Array",{reduce:function reduce(a){return e(this,a,arguments.length,arguments[1],!1)}})},function(a,b,c){var d=c(19),e=c(56),f=c(31),g=c(35);a.exports=function(a,b,c,h,i){d(b);var j=e(a),k=f(j),l=g(j.length),m=i?l-1:0,n=i?-1:1;if(c<2)for(;;){if(m in k){h=k[m],m+=n;break}if(m+=n,i?m<0:l<=m)throw TypeError("Reduce of empty array with no initial value")}for(;i?m>=0:l>m;m+=n)m in k&&(h=b(h,k[m],m,j));return h}},function(a,b,c){var d=c(6),e=c(172);d(d.P+d.F*!c(160)([].reduceRight,!0),"Array",{reduceRight:function reduceRight(a){return e(this,a,arguments.length,arguments[1],!0)}})},function(a,b,c){var d=c(6),e=c(34)(!1),f=[].indexOf,g=!!f&&1/[1].indexOf(1,-0)<0;d(d.P+d.F*(g||!c(160)(f)),"Array",{indexOf:function indexOf(a){return g?f.apply(this,arguments)||0:e(this,a,arguments[1])}})},function(a,b,c){var d=c(6),e=c(30),f=c(36),g=c(35),h=[].lastIndexOf,i=!!h&&1/[1].lastIndexOf(1,-0)<0;d(d.P+d.F*(i||!c(160)(h)),"Array",{lastIndexOf:function lastIndexOf(a){if(i)return h.apply(this,arguments)||0;var b=e(this),c=g(b.length),d=c-1;for(arguments.length>1&&(d=Math.min(d,f(arguments[1]))),d<0&&(d=c+d);d>=0;d--)if(d in b&&b[d]===a)return d||0;return-1}})},function(a,b,c){var d=c(6);d(d.P,"Array",{copyWithin:c(177)}),c(178)("copyWithin")},function(a,b,d){var e=d(56),f=d(37),g=d(35);a.exports=[].copyWithin||function copyWithin(a,b){var d=e(this),h=g(d.length),i=f(a,h),j=f(b,h),k=arguments.length>2?arguments[2]:c,l=Math.min((k===c?h:f(k,h))-j,h-i),m=1;for(j0;)j in d?d[i]=d[j]:delete d[i],i+=m,j+=m;return d}},function(a,b,d){var e=d(23)("unscopables"),f=Array.prototype;f[e]==c&&d(8)(f,e,{}),a.exports=function(a){f[e][a]=!0}},function(a,b,c){var d=c(6);d(d.P,"Array",{fill:c(180)}),c(178)("fill")},function(a,b,d){var e=d(56),f=d(37),g=d(35);a.exports=function fill(a){for(var b=e(this),d=g(b.length),h=arguments.length,i=f(h>1?arguments[1]:c,d),j=h>2?arguments[2]:c,k=j===c?d:f(j,d);k>i;)b[i++]=a;return b}},function(a,b,d){var e=d(6),f=d(164)(5),g="find",h=!0;g in[]&&Array(1)[g](function(){h=!1}),e(e.P+e.F*h,"Array",{find:function find(a){return f(this,a,arguments.length>1?arguments[1]:c)}}),d(178)(g)},function(a,b,d){var e=d(6),f=d(164)(6),g="findIndex",h=!0;g in[]&&Array(1)[g](function(){h=!1}),e(e.P+e.F*h,"Array",{findIndex:function findIndex(a){return f(this,a,arguments.length>1?arguments[1]:c)}}),d(178)(g)},function(a,b,d){var e=d(178),f=d(184),g=d(135),h=d(30);a.exports=d(134)(Array,"Array",function(a,b){this._t=h(a),this._i=0,this._k=b},function(){var a=this._t,b=this._k,d=this._i++;return!a||d>=a.length?(this._t=c,f(1)):"keys"==b?f(0,d):"values"==b?f(0,a[d]):f(0,[d,a[d]])},"values"),g.Arguments=g.Array,e("keys"),e("values"),e("entries")},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(a,b,c){c(186)("Array")},function(a,b,c){var d=c(2),e=c(9),f=c(4),g=c(23)("species");a.exports=function(a){var b=d[a];f&&b&&!b[g]&&e.f(b,g,{configurable:!0,get:function(){return this}})}},function(a,b,d){var e=d(2),f=d(80),g=d(9).f,h=d(48).f,i=d(128),j=d(188),k=e.RegExp,l=k,m=k.prototype,n=/a/g,o=/a/g,p=new k(n)!==n;if(d(4)&&(!p||d(5)(function(){return o[d(23)("match")]=!1,k(n)!=n||k(o)==o||"/a/i"!=k(n,"i")}))){k=function RegExp(a,b){var d=this instanceof k,e=i(a),g=b===c;return!d&&e&&a.constructor===k&&g?a:f(p?new l(e&&!g?a.source:a,b):l((e=a instanceof k)?a.source:a,e&&g?j.call(a):b),d?this:m,k)};for(var q=(function(a){a in k||g(k,a,{configurable:!0,get:function(){return l[a]},set:function(b){l[a]=b}})}),r=h(l),s=0;r.length>s;)q(r[s++]);m.constructor=k,k.prototype=m,d(16)(e,"RegExp",k)}d(186)("RegExp")},function(a,b,c){var d=c(10);a.exports=function(){var a=d(this),b="";return a.global&&(b+="g"),a.ignoreCase&&(b+="i"),a.multiline&&(b+="m"),a.unicode&&(b+="u"),a.sticky&&(b+="y"),b}},function(a,b,d){d(190);var e=d(10),f=d(188),g=d(4),h="toString",i=/./[h],j=function(a){d(16)(RegExp.prototype,h,a,!0)};d(5)(function(){return"/a/b"!=i.call({source:"a",flags:"b"})})?j(function toString(){var a=e(this);return"/".concat(a.source,"/","flags"in a?a.flags:!g&&a instanceof RegExp?f.call(a):c)}):i.name!=h&&j(function toString(){return i.call(this)})},function(a,b,c){c(4)&&"g"!=/./g.flags&&c(9).f(RegExp.prototype,"flags",{configurable:!0,get:c(188)})},function(a,b,d){d(192)("match",1,function(a,b,d){return[function match(d){var e=a(this),f=d==c?c:d[b];return f!==c?f.call(d,e):new RegExp(d)[b](String(e))},d]})},function(a,b,c){var d=c(8),e=c(16),f=c(5),g=c(33),h=c(23);a.exports=function(a,b,c){var i=h(a),j=c(g,i,""[a]),k=j[0],l=j[1];f(function(){var b={};return b[i]=function(){return 7},7!=""[a](b)})&&(e(String.prototype,a,k),d(RegExp.prototype,i,2==b?function(a,b){return l.call(a,this,b)}:function(a){return l.call(a,this)}))}},function(a,b,d){d(192)("replace",2,function(a,b,d){return[function replace(e,f){var g=a(this),h=e==c?c:e[b];return h!==c?h.call(e,g,f):d.call(String(g),e,f)},d]})},function(a,b,d){d(192)("search",1,function(a,b,d){return[function search(d){var e=a(this),f=d==c?c:d[b];return f!==c?f.call(d,e):new RegExp(d)[b](String(e))},d]})},function(a,b,d){d(192)("split",2,function(a,b,e){var f=d(128),g=e,h=[].push,i="split",j="length",k="lastIndex";if("c"=="abbc"[i](/(b)*/)[1]||4!="test"[i](/(?:)/,-1)[j]||2!="ab"[i](/(?:ab)*/)[j]||4!="."[i](/(.?)(.?)/)[j]||"."[i](/()()/)[j]>1||""[i](/.?/)[j]){var l=/()??/.exec("")[1]===c;e=function(a,b){var d=String(this);if(a===c&&0===b)return[];if(!f(a))return g.call(d,a,b);var e,i,m,n,o,p=[],q=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(a.sticky?"y":""),r=0,s=b===c?4294967295:b>>>0,t=new RegExp(a.source,q+"g");for(l||(e=new RegExp("^"+t.source+"$(?!\\s)",q));(i=t.exec(d))&&(m=i.index+i[0][j],!(m>r&&(p.push(d.slice(r,i.index)),!l&&i[j]>1&&i[0].replace(e,function(){for(o=1;o1&&i.index=s)));)t[k]===i.index&&t[k]++;return r===d[j]?!n&&t.test("")||p.push(""):p.push(d.slice(r)),p[j]>s?p.slice(0,s):p}}else"0"[i](c,0)[j]&&(e=function(a,b){return a===c&&0===b?[]:g.call(this,a,b)});return[function split(d,f){var g=a(this),h=d==c?c:d[b];return h!==c?h.call(d,g,f):e.call(String(g),d,f)},e]})},function(a,b,d){var e,f,g,h=d(26),i=d(2),j=d(18),k=d(73),l=d(6),m=d(11),n=d(19),o=d(197),p=d(198),q=d(199),r=d(200).set,s=d(201)(),t="Promise",u=i.TypeError,v=i.process,w=i[t],v=i.process,x="process"==k(v),y=function(){},z=!!function(){try{var a=w.resolve(1),b=(a.constructor={})[d(23)("species")]=function(a){a(y,y)};return(x||"function"==typeof PromiseRejectionEvent)&&a.then(y)instanceof b}catch(c){}}(),A=function(a,b){return a===b||a===w&&b===g},B=function(a){var b;return!(!m(a)||"function"!=typeof(b=a.then))&&b},C=function(a){return A(w,a)?new D(a):new f(a)},D=f=function(a){var b,d;this.promise=new a(function(a,e){if(b!==c||d!==c)throw u("Bad Promise constructor");b=a,d=e}),this.resolve=n(b),this.reject=n(d)},E=function(a){try{a()}catch(b){return{error:b}}},F=function(a,b){if(!a._n){a._n=!0;var c=a._c;s(function(){for(var d=a._v,e=1==a._s,f=0,g=function(b){var c,f,g=e?b.ok:b.fail,h=b.resolve,i=b.reject,j=b.domain;try{g?(e||(2==a._h&&I(a),a._h=1),g===!0?c=d:(j&&j.enter(),c=g(d),j&&j.exit()),c===b.promise?i(u("Promise-chain cycle")):(f=B(c))?f.call(c,h,i):h(c)):i(d)}catch(k){i(k)}};c.length>f;)g(c[f++]);a._c=[],a._n=!1,b&&!a._h&&G(a)})}},G=function(a){r.call(i,function(){var b,d,e,f=a._v;if(H(a)&&(b=E(function(){x?v.emit("unhandledRejection",f,a):(d=i.onunhandledrejection)?d({promise:a,reason:f}):(e=i.console)&&e.error&&e.error("Unhandled promise rejection",f)}),a._h=x||H(a)?2:1),a._a=c,b)throw b.error})},H=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if(b=c[d++],b.fail||!H(b.promise))return!1;return!0},I=function(a){r.call(i,function(){var b;x?v.emit("rejectionHandled",a):(b=i.onrejectionhandled)&&b({promise:a,reason:a._v})})},J=function(a){var b=this;b._d||(b._d=!0,b=b._w||b,b._v=a,b._s=2,b._a||(b._a=b._c.slice()),F(b,!0))},K=function(a){var b,c=this;if(!c._d){c._d=!0,c=c._w||c;try{if(c===a)throw u("Promise can't be resolved itself");(b=B(a))?s(function(){var d={_w:c,_d:!1};try{b.call(a,j(K,d,1),j(J,d,1))}catch(e){J.call(d,e)}}):(c._v=a,c._s=1,F(c,!1))}catch(d){J.call({_w:c,_d:!1},d)}}};z||(w=function Promise(a){o(this,w,t,"_h"),n(a),e.call(this);try{a(j(K,this,1),j(J,this,1))}catch(b){J.call(this,b)}},e=function Promise(a){this._c=[],this._a=c,this._s=0,this._d=!1,this._v=c,this._h=0,this._n=!1},e.prototype=d(202)(w.prototype,{then:function then(a,b){var d=C(q(this,w));return d.ok="function"!=typeof a||a,d.fail="function"==typeof b&&b,d.domain=x?v.domain:c,this._c.push(d),this._a&&this._a.push(d),this._s&&F(this,!1),d.promise},"catch":function(a){return this.then(c,a)}}),D=function(){var a=new e;this.promise=a,this.resolve=j(K,a,1),this.reject=j(J,a,1)}),l(l.G+l.W+l.F*!z,{Promise:w}),d(22)(w,t),d(186)(t),g=d(7)[t],l(l.S+l.F*!z,t,{reject:function reject(a){var b=C(this),c=b.reject;return c(a),b.promise}}),l(l.S+l.F*(h||!z),t,{resolve:function resolve(a){if(a instanceof w&&A(a.constructor,this))return a;var b=C(this),c=b.resolve;return c(a),b.promise}}),l(l.S+l.F*!(z&&d(157)(function(a){w.all(a)["catch"](y)})),t,{all:function all(a){var b=this,d=C(b),e=d.resolve,f=d.reject,g=E(function(){var d=[],g=0,h=1;p(a,!1,function(a){var i=g++,j=!1;d.push(c),h++,b.resolve(a).then(function(a){j||(j=!0,d[i]=a,--h||e(d))},f)}),--h||e(d)});return g&&f(g.error),d.promise},race:function race(a){var b=this,c=C(b),d=c.reject,e=E(function(){p(a,!1,function(a){b.resolve(a).then(c.resolve,d)})});return e&&d(e.error),c.promise}})},function(a,b){a.exports=function(a,b,d,e){if(!(a instanceof b)||e!==c&&e in a)throw TypeError(d+": incorrect invocation!");return a}},function(a,b,c){var d=c(18),e=c(153),f=c(154),g=c(10),h=c(35),i=c(156),j={},k={},b=a.exports=function(a,b,c,l,m){var n,o,p,q,r=m?function(){return a}:i(a),s=d(c,l,b?2:1),t=0;if("function"!=typeof r)throw TypeError(a+" is not iterable!");if(f(r)){for(n=h(a.length);n>t;t++)if(q=b?s(g(o=a[t])[0],o[1]):s(a[t]),q===j||q===k)return q}else for(p=r.call(a);!(o=p.next()).done;)if(q=e(p,s,o.value,b),q===j||q===k)return q};b.BREAK=j,b.RETURN=k},function(a,b,d){var e=d(10),f=d(19),g=d(23)("species");a.exports=function(a,b){var d,h=e(a).constructor;return h===c||(d=e(h)[g])==c?b:f(d)}},function(a,b,c){var d,e,f,g=c(18),h=c(76),i=c(46),j=c(13),k=c(2),l=k.process,m=k.setImmediate,n=k.clearImmediate,o=k.MessageChannel,p=0,q={},r="onreadystatechange",s=function(){var a=+this;if(q.hasOwnProperty(a)){var b=q[a];delete q[a],b()}},t=function(a){s.call(a.data)};m&&n||(m=function setImmediate(a){for(var b=[],c=1;arguments.length>c;)b.push(arguments[c++]);return q[++p]=function(){h("function"==typeof a?a:Function(a),b)},d(p),p},n=function clearImmediate(a){delete q[a]},"process"==c(32)(l)?d=function(a){l.nextTick(g(s,a,1))}:o?(e=new o,f=e.port2,e.port1.onmessage=t,d=g(f.postMessage,f,1)):k.addEventListener&&"function"==typeof postMessage&&!k.importScripts?(d=function(a){k.postMessage(a+"","*")},k.addEventListener("message",t,!1)):d=r in j("script")?function(a){i.appendChild(j("script"))[r]=function(){i.removeChild(this),s.call(a)}}:function(a){setTimeout(g(s,a,1),0)}),a.exports={set:m,clear:n}},function(a,b,d){var e=d(2),f=d(200).set,g=e.MutationObserver||e.WebKitMutationObserver,h=e.process,i=e.Promise,j="process"==d(32)(h);a.exports=function(){var a,b,d,k=function(){var e,f;for(j&&(e=h.domain)&&e.exit();a;){f=a.fn,a=a.next;try{f()}catch(g){throw a?d():b=c,g}}b=c,e&&e.enter()};if(j)d=function(){h.nextTick(k)};else if(g){var l=!0,m=document.createTextNode("");new g(k).observe(m,{characterData:!0}),d=function(){m.data=l=!l}}else if(i&&i.resolve){var n=i.resolve();d=function(){n.then(k)}}else d=function(){f.call(e,k)};return function(e){var f={fn:e,next:c};b&&(b.next=f),a||(a=f,d()),b=f}}},function(a,b,c){var d=c(16);a.exports=function(a,b,c){for(var e in b)d(a,e,b[e],c);return a}},function(a,b,d){var e=d(204);a.exports=d(205)("Map",function(a){return function Map(){return a(this,arguments.length>0?arguments[0]:c)}},{get:function get(a){var b=e.getEntry(this,a);return b&&b.v},set:function set(a,b){return e.def(this,0===a?0:a,b)}},e,!0)},function(a,b,d){var e=d(9).f,f=d(44),g=d(202),h=d(18),i=d(197),j=d(33),k=d(198),l=d(134),m=d(184),n=d(186),o=d(4),p=d(20).fastKey,q=o?"_s":"size",r=function(a,b){var c,d=p(b);if("F"!==d)return a._i[d];for(c=a._f;c;c=c.n)if(c.k==b)return c};a.exports={getConstructor:function(a,b,d,l){var m=a(function(a,e){i(a,m,b,"_i"),a._i=f(null),a._f=c,a._l=c,a[q]=0,e!=c&&k(e,d,a[l],a)});return g(m.prototype,{clear:function clear(){for(var a=this,b=a._i,d=a._f;d;d=d.n)d.r=!0,d.p&&(d.p=d.p.n=c),delete b[d.i];a._f=a._l=c,a[q]=0},"delete":function(a){var b=this,c=r(b,a);if(c){var d=c.n,e=c.p;delete b._i[c.i],c.r=!0,e&&(e.n=d),d&&(d.p=e),b._f==c&&(b._f=d),b._l==c&&(b._l=e),b[q]--}return!!c},forEach:function forEach(a){i(this,m,"forEach");for(var b,d=h(a,arguments.length>1?arguments[1]:c,3);b=b?b.n:this._f;)for(d(b.v,b.k,this);b&&b.r;)b=b.p},has:function has(a){return!!r(this,a)}}),o&&e(m.prototype,"size",{get:function(){return j(this[q])}}),m},def:function(a,b,d){var e,f,g=r(a,b);return g?g.v=d:(a._l=g={i:f=p(b,!0),k:b,v:d,p:e=a._l,n:c,r:!1},a._f||(a._f=g),e&&(e.n=g),a[q]++,"F"!==f&&(a._i[f]=g)),a},getEntry:r,setStrong:function(a,b,d){l(a,b,function(a,b){this._t=a,this._k=b,this._l=c},function(){for(var a=this,b=a._k,d=a._l;d&&d.r;)d=d.p;return a._t&&(a._l=d=d?d.n:a._t._f)?"keys"==b?m(0,d.k):"values"==b?m(0,d.v):m(0,[d.k,d.v]):(a._t=c,m(1))},d?"entries":"values",!d,!0),n(b)}}},function(a,b,d){var e=d(2),f=d(6),g=d(16),h=d(202),i=d(20),j=d(198),k=d(197),l=d(11),m=d(5),n=d(157),o=d(22),p=d(80);a.exports=function(a,b,d,q,r,s){var t=e[a],u=t,v=r?"set":"add",w=u&&u.prototype,x={},y=function(a){var b=w[a];g(w,a,"delete"==a?function(a){return!(s&&!l(a))&&b.call(this,0===a?0:a)}:"has"==a?function has(a){return!(s&&!l(a))&&b.call(this,0===a?0:a)}:"get"==a?function get(a){return s&&!l(a)?c:b.call(this,0===a?0:a)}:"add"==a?function add(a){return b.call(this,0===a?0:a),this}:function set(a,c){return b.call(this,0===a?0:a,c),this})};if("function"==typeof u&&(s||w.forEach&&!m(function(){(new u).entries().next()}))){var z=new u,A=z[v](s?{}:-0,1)!=z,B=m(function(){z.has(1)}),C=n(function(a){new u(a)}),D=!s&&m(function(){for(var a=new u,b=5;b--;)a[v](b,b);return!a.has(-0)});C||(u=b(function(b,d){k(b,u,a);var e=p(new t,b,u);return d!=c&&j(d,r,e[v],e),e}),u.prototype=w,w.constructor=u),(B||D)&&(y("delete"),y("has"),r&&y("get")),(D||A)&&y(v),s&&w.clear&&delete w.clear}else u=q.getConstructor(b,a,r,v),h(u.prototype,d),i.NEED=!0;return o(u,a),x[a]=u,f(f.G+f.W+f.F*(u!=t),x),s||q.setStrong(u,a,r),u}},function(a,b,d){var e=d(204);a.exports=d(205)("Set",function(a){return function Set(){return a(this,arguments.length>0?arguments[0]:c)}},{add:function add(a){return e.def(this,a=0===a?0:a,a)}},e)},function(a,b,d){var e,f=d(164)(0),g=d(16),h=d(20),i=d(67),j=d(208),k=d(11),l=h.getWeak,m=Object.isExtensible,n=j.ufstore,o={},p=function(a){return function WeakMap(){return a(this,arguments.length>0?arguments[0]:c)}},q={get:function get(a){if(k(a)){var b=l(a);return b===!0?n(this).get(a):b?b[this._i]:c}},set:function set(a,b){return j.def(this,a,b)}},r=a.exports=d(205)("WeakMap",p,q,j,!0,!0);7!=(new r).set((Object.freeze||Object)(o),7).get(o)&&(e=j.getConstructor(p),i(e.prototype,q),h.NEED=!0,f(["delete","has","get","set"],function(a){var b=r.prototype,c=b[a];g(b,a,function(b,d){if(k(b)&&!m(b)){this._f||(this._f=new e);var f=this._f[a](b,d);return"set"==a?this:f}return c.call(this,b,d)})}))},function(a,b,d){var e=d(202),f=d(20).getWeak,g=d(10),h=d(11),i=d(197),j=d(198),k=d(164),l=d(3),m=k(5),n=k(6),o=0,p=function(a){return a._l||(a._l=new q)},q=function(){this.a=[]},r=function(a,b){return m(a.a,function(a){return a[0]===b})};q.prototype={get:function(a){var b=r(this,a);if(b)return b[1]},has:function(a){return!!r(this,a)},set:function(a,b){var c=r(this,a);c?c[1]=b:this.a.push([a,b])},"delete":function(a){var b=n(this.a,function(b){return b[0]===a});return~b&&this.a.splice(b,1),!!~b}},a.exports={getConstructor:function(a,b,d,g){var k=a(function(a,e){i(a,k,b,"_i"),a._i=o++,a._l=c,e!=c&&j(e,d,a[g],a)});return e(k.prototype,{"delete":function(a){if(!h(a))return!1;var b=f(a);return b===!0?p(this)["delete"](a):b&&l(b,this._i)&&delete b[this._i]},has:function has(a){if(!h(a))return!1;var b=f(a);return b===!0?p(this).has(a):b&&l(b,this._i)}}),k},def:function(a,b,c){var d=f(g(b),!0);return d===!0?p(a).set(b,c):d[a._i]=c,a},ufstore:p}},function(a,b,d){var e=d(208);d(205)("WeakSet",function(a){return function WeakSet(){return a(this,arguments.length>0?arguments[0]:c)}},{add:function add(a){return e.def(this,a,!0)}},e,!1,!0)},function(a,b,c){var d=c(6),e=c(19),f=c(10),g=(c(2).Reflect||{}).apply,h=Function.apply;d(d.S+d.F*!c(5)(function(){g(function(){})}),"Reflect",{apply:function apply(a,b,c){var d=e(a),i=f(c);return g?g(d,b,i):h.call(d,b,i)}})},function(a,b,c){var d=c(6),e=c(44),f=c(19),g=c(10),h=c(11),i=c(5),j=c(75),k=(c(2).Reflect||{}).construct,l=i(function(){function F(){}return!(k(function(){},[],F)instanceof F)}),m=!i(function(){k(function(){})});d(d.S+d.F*(l||m),"Reflect",{construct:function construct(a,b){f(a),g(b);var c=arguments.length<3?a:f(arguments[2]);if(m&&!l)return k(a,b,c);if(a==c){switch(b.length){case 0:return new a;case 1:return new a(b[0]);case 2:return new a(b[0],b[1]);case 3:return new a(b[0],b[1],b[2]);case 4:return new a(b[0],b[1],b[2],b[3])}var d=[null];return d.push.apply(d,b),new(j.apply(a,d))}var i=c.prototype,n=e(h(i)?i:Object.prototype),o=Function.apply.call(a,n,b);return h(o)?o:n}})},function(a,b,c){var d=c(9),e=c(6),f=c(10),g=c(14);e(e.S+e.F*c(5)(function(){Reflect.defineProperty(d.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function defineProperty(a,b,c){f(a),b=g(b,!0),f(c);try{return d.f(a,b,c),!0}catch(e){return!1}}})},function(a,b,c){var d=c(6),e=c(49).f,f=c(10);d(d.S,"Reflect",{deleteProperty:function deleteProperty(a,b){var c=e(f(a),b);return!(c&&!c.configurable)&&delete a[b]}})},function(a,b,d){var e=d(6),f=d(10),g=function(a){this._t=f(a),this._i=0;var b,c=this._k=[];for(b in a)c.push(b)};d(136)(g,"Object",function(){var a,b=this,d=b._k;do if(b._i>=d.length)return{value:c,done:!0};while(!((a=d[b._i++])in b._t));return{value:a,done:!1}}),e(e.S,"Reflect",{enumerate:function enumerate(a){return new g(a)}})},function(a,b,d){function get(a,b){var d,h,k=arguments.length<3?a:arguments[2];return j(a)===k?a[b]:(d=e.f(a,b))?g(d,"value")?d.value:d.get!==c?d.get.call(k):c:i(h=f(a))?get(h,b,k):void 0}var e=d(49),f=d(57),g=d(3),h=d(6),i=d(11),j=d(10);h(h.S,"Reflect",{get:get})},function(a,b,c){var d=c(49),e=c(6),f=c(10);e(e.S,"Reflect",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(a,b){return d.f(f(a),b)}})},function(a,b,c){var d=c(6),e=c(57),f=c(10);d(d.S,"Reflect",{getPrototypeOf:function getPrototypeOf(a){return e(f(a))}})},function(a,b,c){var d=c(6);d(d.S,"Reflect",{has:function has(a,b){return b in a}})},function(a,b,c){var d=c(6),e=c(10),f=Object.isExtensible;d(d.S,"Reflect",{isExtensible:function isExtensible(a){return e(a),!f||f(a)}})},function(a,b,c){var d=c(6);d(d.S,"Reflect",{ownKeys:c(221)})},function(a,b,c){var d=c(48),e=c(41),f=c(10),g=c(2).Reflect;a.exports=g&&g.ownKeys||function ownKeys(a){var b=d.f(f(a)),c=e.f;return c?b.concat(c(a)):b}},function(a,b,c){var d=c(6),e=c(10),f=Object.preventExtensions;d(d.S,"Reflect",{preventExtensions:function preventExtensions(a){e(a);try{return f&&f(a),!0}catch(b){return!1}}})},function(a,b,d){function set(a,b,d){var i,m,n=arguments.length<4?a:arguments[3],o=f.f(k(a),b);if(!o){if(l(m=g(a)))return set(m,b,d,n);o=j(0)}return h(o,"value")?!(o.writable===!1||!l(n))&&(i=f.f(n,b)||j(0),i.value=d,e.f(n,b,i),!0):o.set!==c&&(o.set.call(n,d),!0)}var e=d(9),f=d(49),g=d(57),h=d(3),i=d(6),j=d(15),k=d(10),l=d(11);i(i.S,"Reflect",{set:set})},function(a,b,c){var d=c(6),e=c(71);e&&d(d.S,"Reflect",{setPrototypeOf:function setPrototypeOf(a,b){e.check(a,b);try{return e.set(a,b),!0}catch(c){return!1}}})},function(a,b,c){var d=c(6);d(d.S,"Date",{now:function(){return(new Date).getTime()}})},function(a,b,c){var d=c(6),e=c(56),f=c(14);d(d.P+d.F*c(5)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function toJSON(a){var b=e(this),c=f(b);return"number"!=typeof c||isFinite(c)?b.toISOString():null}})},function(a,b,c){var d=c(6),e=c(5),f=Date.prototype.getTime,g=function(a){return a>9?a:"0"+a};d(d.P+d.F*(e(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!e(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function toISOString(){if(!isFinite(f.call(this)))throw RangeError("Invalid time value");var a=this,b=a.getUTCFullYear(),c=a.getUTCMilliseconds(),d=b<0?"-":b>9999?"+":"";return d+("00000"+Math.abs(b)).slice(d?-6:-4)+"-"+g(a.getUTCMonth()+1)+"-"+g(a.getUTCDate())+"T"+g(a.getUTCHours())+":"+g(a.getUTCMinutes())+":"+g(a.getUTCSeconds())+"."+(c>99?c:"0"+g(c))+"Z"}})},function(a,b,c){var d=Date.prototype,e="Invalid Date",f="toString",g=d[f],h=d.getTime;new Date(NaN)+""!=e&&c(16)(d,f,function toString(){var a=h.call(this);return a===a?g.call(this):e})},function(a,b,c){var d=c(23)("toPrimitive"),e=Date.prototype;d in e||c(8)(e,d,c(230))},function(a,b,c){var d=c(10),e=c(14),f="number";a.exports=function(a){if("string"!==a&&a!==f&&"default"!==a)throw TypeError("Incorrect hint");return e(d(this),a!=f)}},function(a,b,d){var e=d(6),f=d(232),g=d(233),h=d(10),i=d(37),j=d(35),k=d(11),l=d(2).ArrayBuffer,m=d(199),n=g.ArrayBuffer,o=g.DataView,p=f.ABV&&l.isView,q=n.prototype.slice,r=f.VIEW,s="ArrayBuffer";e(e.G+e.W+e.F*(l!==n),{ArrayBuffer:n}),e(e.S+e.F*!f.CONSTR,s,{isView:function isView(a){return p&&p(a)||k(a)&&r in a}}),e(e.P+e.U+e.F*d(5)(function(){return!new n(2).slice(1,c).byteLength}),s,{slice:function slice(a,b){if(q!==c&&b===c)return q.call(h(this),a);for(var d=h(this).byteLength,e=i(a,d),f=i(b===c?d:b,d),g=new(m(this,n))(j(f-e)),k=new o(this),l=new o(g),p=0;e>1,k=23===b?E(2,-24)-E(2,-77):0,l=0,m=a<0||0===a&&1/a<0?1:0;for(a=D(a),a!=a||a===B?(e=a!=a?1:0,d=i):(d=F(G(a)/H),a*(f=E(2,-d))<1&&(d--,f*=2),a+=d+j>=1?k/f:k*E(2,1-j),a*f>=2&&(d++,f/=2),d+j>=i?(e=0,d=i):d+j>=1?(e=(a*f-1)*E(2,b),d+=j):(e=a*E(2,j-1)*E(2,b),d=0));b>=8;g[l++]=255&e,e/=256,b-=8);for(d=d<0;g[l++]=255&d,d/=256,h-=8);return g[--l]|=128*m,g},P=function(a,b,c){var d,e=8*c-b-1,f=(1<>1,h=e-7,i=c-1,j=a[i--],k=127&j;for(j>>=7;h>0;k=256*k+a[i],i--,h-=8);for(d=k&(1<<-h)-1,k>>=-h,h+=b;h>0;d=256*d+a[i],i--,h-=8);if(0===k)k=1-g;else{if(k===f)return d?NaN:j?-B:B;d+=E(2,b),k-=g}return(j?-1:1)*d*E(2,k-b)},Q=function(a){return a[3]<<24|a[2]<<16|a[1]<<8|a[0]},R=function(a){return[255&a]},S=function(a){return[255&a,a>>8&255]},T=function(a){return[255&a,a>>8&255,a>>16&255,a>>24&255]},U=function(a){return O(a,52,8)},V=function(a){return O(a,23,4)},W=function(a,b,c){p(a[u],b,{get:function(){return this[c]}})},X=function(a,b,c,d){var e=+c,f=m(e);if(e!=f||f<0||f+b>a[M])throw A(w);var g=a[L]._b,h=f+a[N],i=g.slice(h,h+b);return d?i:i.reverse()},Y=function(a,b,c,d,e,f){var g=+c,h=m(g);if(g!=h||h<0||h+b>a[M])throw A(w);for(var i=a[L]._b,j=h+a[N],k=d(+e),l=0;lba;)($=aa[ba++])in x||i(x,$,C[$]);g||(_.constructor=x)}var ca=new y(new x(2)),da=y[u].setInt8;ca.setInt8(0,2147483648),ca.setInt8(1,2147483649),!ca.getInt8(0)&&ca.getInt8(1)||j(y[u],{setInt8:function setInt8(a,b){da.call(this,a,b<<24>>24)},setUint8:function setUint8(a,b){da.call(this,a,b<<24>>24)}},!0)}else x=function ArrayBuffer(a){var b=Z(this,a);this._b=q.call(Array(b),0),this[M]=b},y=function DataView(a,b,d){l(this,y,t),l(a,x,t);var e=a[M],f=m(b);if(f<0||f>e)throw A("Wrong offset!");if(d=d===c?e-f:n(d),f+d>e)throw A(v);this[L]=a,this[N]=f,this[M]=d},f&&(W(x,J,"_l"),W(y,I,"_b"),W(y,J,"_l"),W(y,K,"_o")),j(y[u],{getInt8:function getInt8(a){return X(this,1,a)[0]<<24>>24},getUint8:function getUint8(a){return X(this,1,a)[0]},getInt16:function getInt16(a){var b=X(this,2,a,arguments[1]);return(b[1]<<8|b[0])<<16>>16},getUint16:function getUint16(a){var b=X(this,2,a,arguments[1]);return b[1]<<8|b[0]},getInt32:function getInt32(a){return Q(X(this,4,a,arguments[1]))},getUint32:function getUint32(a){return Q(X(this,4,a,arguments[1]))>>>0},getFloat32:function getFloat32(a){return P(X(this,4,a,arguments[1]),23,4)},getFloat64:function getFloat64(a){return P(X(this,8,a,arguments[1]),52,8)},setInt8:function setInt8(a,b){Y(this,1,a,R,b)},setUint8:function setUint8(a,b){Y(this,1,a,R,b)},setInt16:function setInt16(a,b){Y(this,2,a,S,b,arguments[2])},setUint16:function setUint16(a,b){Y(this,2,a,S,b,arguments[2])},setInt32:function setInt32(a,b){Y(this,4,a,T,b,arguments[2])},setUint32:function setUint32(a,b){Y(this,4,a,T,b,arguments[2])},setFloat32:function setFloat32(a,b){Y(this,4,a,V,b,arguments[2])},setFloat64:function setFloat64(a,b){Y(this,8,a,U,b,arguments[2])}});r(x,s),r(y,t),i(y[u],h.VIEW,!0),b[s]=x,b[t]=y},function(a,b,c){var d=c(6);d(d.G+d.W+d.F*!c(232).ABV,{DataView:c(233).DataView})},function(a,b,c){c(236)("Int8",1,function(a){return function Int8Array(b,c,d){return a(this,b,c,d)}})},function(a,b,d){if(d(4)){var e=d(26),f=d(2),g=d(5),h=d(6),i=d(232),j=d(233),k=d(18),l=d(197),m=d(15),n=d(8),o=d(202),p=d(36),q=d(35),r=d(37),s=d(14),t=d(3),u=d(69),v=d(73),w=d(11),x=d(56),y=d(154),z=d(44),A=d(57),B=d(48).f,C=d(156),D=d(17),E=d(23),F=d(164),G=d(34),H=d(199),I=d(183),J=d(135),K=d(157),L=d(186),M=d(180),N=d(177),O=d(9),P=d(49),Q=O.f,R=P.f,S=f.RangeError,T=f.TypeError,U=f.Uint8Array,V="ArrayBuffer",W="Shared"+V,X="BYTES_PER_ELEMENT",Y="prototype",Z=Array[Y],$=j.ArrayBuffer,_=j.DataView,aa=F(0),ba=F(2),ca=F(3),da=F(4),ea=F(5),fa=F(6),ga=G(!0),ha=G(!1),ia=I.values,ja=I.keys,ka=I.entries,la=Z.lastIndexOf,ma=Z.reduce,na=Z.reduceRight,oa=Z.join,pa=Z.sort,qa=Z.slice,ra=Z.toString,sa=Z.toLocaleString,ta=E("iterator"),ua=E("toStringTag"),va=D("typed_constructor"),wa=D("def_constructor"),xa=i.CONSTR,ya=i.TYPED,za=i.VIEW,Aa="Wrong length!",Ba=F(1,function(a,b){return Ha(H(a,a[wa]),b)}),Ca=g(function(){return 1===new U(new Uint16Array([1]).buffer)[0]}),Da=!!U&&!!U[Y].set&&g(function(){new U(1).set({})}),Ea=function(a,b){if(a===c)throw T(Aa);var d=+a,e=q(a);if(b&&!u(d,e))throw S(Aa);return e},Fa=function(a,b){var c=p(a);if(c<0||c%b)throw S("Wrong offset!");return c},Ga=function(a){if(w(a)&&ya in a)return a;throw T(a+" is not a typed array!")},Ha=function(a,b){if(!(w(a)&&va in a))throw T("It is not a typed array constructor!");return new a(b)},Ia=function(a,b){return Ja(H(a,a[wa]),b)},Ja=function(a,b){for(var c=0,d=b.length,e=Ha(a,d);d>c;)e[c]=b[c++];return e},Ka=function(a,b,c){Q(a,b,{get:function(){return this._d[c]}})},La=function from(a){var b,d,e,f,g,h,i=x(a),j=arguments.length,l=j>1?arguments[1]:c,m=l!==c,n=C(i);if(n!=c&&!y(n)){for(h=n.call(i),e=[],b=0;!(g=h.next()).done;b++)e.push(g.value);i=e}for(m&&j>2&&(l=k(l,arguments[2],2)),b=0,d=q(i.length),f=Ha(this,d);d>b;b++)f[b]=m?l(i[b],b):i[b];return f},Ma=function of(){for(var a=0,b=arguments.length,c=Ha(this,b);b>a;)c[a]=arguments[a++];return c},Na=!!U&&g(function(){sa.call(new U(1))}),Oa=function toLocaleString(){return sa.apply(Na?qa.call(Ga(this)):Ga(this),arguments)},Pa={copyWithin:function copyWithin(a,b){return N.call(Ga(this),a,b,arguments.length>2?arguments[2]:c)},every:function every(a){return da(Ga(this),a,arguments.length>1?arguments[1]:c)},fill:function fill(a){return M.apply(Ga(this),arguments)},filter:function filter(a){return Ia(this,ba(Ga(this),a,arguments.length>1?arguments[1]:c))},find:function find(a){return ea(Ga(this),a,arguments.length>1?arguments[1]:c)},findIndex:function findIndex(a){return fa(Ga(this),a,arguments.length>1?arguments[1]:c)},forEach:function forEach(a){aa(Ga(this),a,arguments.length>1?arguments[1]:c)},indexOf:function indexOf(a){return ha(Ga(this),a,arguments.length>1?arguments[1]:c)},includes:function includes(a){return ga(Ga(this),a,arguments.length>1?arguments[1]:c)},join:function join(a){return oa.apply(Ga(this),arguments)},lastIndexOf:function lastIndexOf(a){ 9 | return la.apply(Ga(this),arguments)},map:function map(a){return Ba(Ga(this),a,arguments.length>1?arguments[1]:c)},reduce:function reduce(a){return ma.apply(Ga(this),arguments)},reduceRight:function reduceRight(a){return na.apply(Ga(this),arguments)},reverse:function reverse(){for(var a,b=this,c=Ga(b).length,d=Math.floor(c/2),e=0;e1?arguments[1]:c)},sort:function sort(a){return pa.call(Ga(this),a)},subarray:function subarray(a,b){var d=Ga(this),e=d.length,f=r(a,e);return new(H(d,d[wa]))(d.buffer,d.byteOffset+f*d.BYTES_PER_ELEMENT,q((b===c?e:r(b,e))-f))}},Qa=function slice(a,b){return Ia(this,qa.call(Ga(this),a,b))},Ra=function set(a){Ga(this);var b=Fa(arguments[1],1),c=this.length,d=x(a),e=q(d.length),f=0;if(e+b>c)throw S(Aa);for(;f255?255:255&d),e.v[p](c*b+e.o,d,Ca)},E=function(a,b){Q(a,b,{get:function(){return C(this,b)},set:function(a){return D(this,b,a)},enumerable:!0})};u?(r=d(function(a,d,e,f){l(a,r,k,"_d");var g,h,i,j,m=0,o=0;if(w(d)){if(!(d instanceof $||(j=v(d))==V||j==W))return ya in d?Ja(r,d):La.call(r,d);g=d,o=Fa(e,b);var p=d.byteLength;if(f===c){if(p%b)throw S(Aa);if(h=p-o,h<0)throw S(Aa)}else if(h=q(f)*b,h+o>p)throw S(Aa);i=h/b}else i=Ea(d,!0),h=i*b,g=new $(h);for(n(a,"_d",{b:g,o:o,l:h,e:i,v:new _(g)});m1?arguments[1]:c)}}),d(178)("includes")},function(a,b,c){var d=c(6),e=c(125)(!0);d(d.P,"String",{at:function at(a){return e(this,a)}})},function(a,b,d){var e=d(6),f=d(248);e(e.P,"String",{padStart:function padStart(a){return f(this,a,arguments.length>1?arguments[1]:c,!0)}})},function(a,b,d){var e=d(35),f=d(85),g=d(33);a.exports=function(a,b,d,h){var i=String(g(a)),j=i.length,k=d===c?" ":String(d),l=e(b);if(l<=j||""==k)return i;var m=l-j,n=f.call(k,Math.ceil(m/k.length));return n.length>m&&(n=n.slice(0,m)),h?n+i:i+n}},function(a,b,d){var e=d(6),f=d(248);e(e.P,"String",{padEnd:function padEnd(a){return f(this,a,arguments.length>1?arguments[1]:c,!1)}})},function(a,b,c){c(81)("trimLeft",function(a){return function trimLeft(){return a(this,1)}},"trimStart")},function(a,b,c){c(81)("trimRight",function(a){return function trimRight(){return a(this,2)}},"trimEnd")},function(a,b,c){var d=c(6),e=c(33),f=c(35),g=c(128),h=c(188),i=RegExp.prototype,j=function(a,b){this._r=a,this._s=b};c(136)(j,"RegExp String",function next(){var a=this._r.exec(this._s);return{value:a,done:null===a}}),d(d.P,"String",{matchAll:function matchAll(a){if(e(this),!g(a))throw TypeError(a+" is not a regexp!");var b=String(this),c="flags"in i?String(a.flags):h.call(a),d=new RegExp(a.source,~c.indexOf("g")?c:"g"+c);return d.lastIndex=f(a.lastIndex),new j(d,b)}})},function(a,b,c){c(25)("asyncIterator")},function(a,b,c){c(25)("observable")},function(a,b,c){var d=c(6),e=c(221),f=c(30),g=c(49),h=c(155);d(d.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(a){for(var b,c=f(a),d=g.f,i=e(c),j={},k=0;i.length>k;)h(j,b=i[k++],d(c,b));return j}})},function(a,b,c){var d=c(6),e=c(257)(!1);d(d.S,"Object",{values:function values(a){return e(a)}})},function(a,b,c){var d=c(28),e=c(30),f=c(42).f;a.exports=function(a){return function(b){for(var c,g=e(b),h=d(g),i=h.length,j=0,k=[];i>j;)f.call(g,c=h[j++])&&k.push(a?[c,g[c]]:g[c]);return k}}},function(a,b,c){var d=c(6),e=c(257)(!0);d(d.S,"Object",{entries:function entries(a){return e(a)}})},function(a,b,c){var d=c(6),e=c(56),f=c(19),g=c(9);c(4)&&d(d.P+c(260),"Object",{__defineGetter__:function __defineGetter__(a,b){g.f(e(this),a,{get:f(b),enumerable:!0,configurable:!0})}})},function(a,b,c){a.exports=c(26)||!c(5)(function(){var a=Math.random();__defineSetter__.call(null,a,function(){}),delete c(2)[a]})},function(a,b,c){var d=c(6),e=c(56),f=c(19),g=c(9);c(4)&&d(d.P+c(260),"Object",{__defineSetter__:function __defineSetter__(a,b){g.f(e(this),a,{set:f(b),enumerable:!0,configurable:!0})}})},function(a,b,c){var d=c(6),e=c(56),f=c(14),g=c(57),h=c(49).f;c(4)&&d(d.P+c(260),"Object",{__lookupGetter__:function __lookupGetter__(a){var b,c=e(this),d=f(a,!0);do if(b=h(c,d))return b.get;while(c=g(c))}})},function(a,b,c){var d=c(6),e=c(56),f=c(14),g=c(57),h=c(49).f;c(4)&&d(d.P+c(260),"Object",{__lookupSetter__:function __lookupSetter__(a){var b,c=e(this),d=f(a,!0);do if(b=h(c,d))return b.set;while(c=g(c))}})},function(a,b,c){var d=c(6);d(d.P+d.R,"Map",{toJSON:c(265)("Map")})},function(a,b,c){var d=c(73),e=c(266);a.exports=function(a){return function toJSON(){if(d(this)!=a)throw TypeError(a+"#toJSON isn't generic");return e(this)}}},function(a,b,c){var d=c(198);a.exports=function(a,b){var c=[];return d(a,!1,c.push,c,b),c}},function(a,b,c){var d=c(6);d(d.P+d.R,"Set",{toJSON:c(265)("Set")})},function(a,b,c){var d=c(6);d(d.S,"System",{global:c(2)})},function(a,b,c){var d=c(6),e=c(32);d(d.S,"Error",{isError:function isError(a){return"Error"===e(a)}})},function(a,b,c){var d=c(6);d(d.S,"Math",{iaddh:function iaddh(a,b,c,d){var e=a>>>0,f=b>>>0,g=c>>>0;return f+(d>>>0)+((e&g|(e|g)&~(e+g>>>0))>>>31)|0}})},function(a,b,c){var d=c(6);d(d.S,"Math",{isubh:function isubh(a,b,c,d){var e=a>>>0,f=b>>>0,g=c>>>0;return f-(d>>>0)-((~e&g|~(e^g)&e-g>>>0)>>>31)|0}})},function(a,b,c){var d=c(6);d(d.S,"Math",{imulh:function imulh(a,b){var c=65535,d=+a,e=+b,f=d&c,g=e&c,h=d>>16,i=e>>16,j=(h*g>>>0)+(f*g>>>16);return h*i+(j>>16)+((f*i>>>0)+(j&c)>>16)}})},function(a,b,c){var d=c(6);d(d.S,"Math",{umulh:function umulh(a,b){var c=65535,d=+a,e=+b,f=d&c,g=e&c,h=d>>>16,i=e>>>16,j=(h*g>>>0)+(f*g>>>16);return h*i+(j>>>16)+((f*i>>>0)+(j&c)>>>16)}})},function(a,b,c){var d=c(275),e=c(10),f=d.key,g=d.set;d.exp({defineMetadata:function defineMetadata(a,b,c,d){g(a,b,e(c),f(d))}})},function(a,b,d){var e=d(203),f=d(6),g=d(21)("metadata"),h=g.store||(g.store=new(d(207))),i=function(a,b,d){var f=h.get(a);if(!f){if(!d)return c;h.set(a,f=new e)}var g=f.get(b);if(!g){if(!d)return c;f.set(b,g=new e)}return g},j=function(a,b,d){var e=i(b,d,!1);return e!==c&&e.has(a)},k=function(a,b,d){var e=i(b,d,!1);return e===c?c:e.get(a)},l=function(a,b,c,d){i(c,d,!0).set(a,b)},m=function(a,b){var c=i(a,b,!1),d=[];return c&&c.forEach(function(a,b){d.push(b)}),d},n=function(a){return a===c||"symbol"==typeof a?a:String(a)},o=function(a){f(f.S,"Reflect",a)};a.exports={store:h,map:i,has:j,get:k,set:l,keys:m,key:n,exp:o}},function(a,b,d){var e=d(275),f=d(10),g=e.key,h=e.map,i=e.store;e.exp({deleteMetadata:function deleteMetadata(a,b){var d=arguments.length<3?c:g(arguments[2]),e=h(f(b),d,!1);if(e===c||!e["delete"](a))return!1;if(e.size)return!0;var j=i.get(b);return j["delete"](d),!!j.size||i["delete"](b)}})},function(a,b,d){var e=d(275),f=d(10),g=d(57),h=e.has,i=e.get,j=e.key,k=function(a,b,d){var e=h(a,b,d);if(e)return i(a,b,d);var f=g(b);return null!==f?k(a,f,d):c};e.exp({getMetadata:function getMetadata(a,b){return k(a,f(b),arguments.length<3?c:j(arguments[2]))}})},function(a,b,d){var e=d(206),f=d(266),g=d(275),h=d(10),i=d(57),j=g.keys,k=g.key,l=function(a,b){var c=j(a,b),d=i(a);if(null===d)return c;var g=l(d,b);return g.length?c.length?f(new e(c.concat(g))):g:c};g.exp({getMetadataKeys:function getMetadataKeys(a){return l(h(a),arguments.length<2?c:k(arguments[1]))}})},function(a,b,d){var e=d(275),f=d(10),g=e.get,h=e.key;e.exp({getOwnMetadata:function getOwnMetadata(a,b){return g(a,f(b),arguments.length<3?c:h(arguments[2]))}})},function(a,b,d){var e=d(275),f=d(10),g=e.keys,h=e.key;e.exp({getOwnMetadataKeys:function getOwnMetadataKeys(a){return g(f(a),arguments.length<2?c:h(arguments[1]))}})},function(a,b,d){var e=d(275),f=d(10),g=d(57),h=e.has,i=e.key,j=function(a,b,c){var d=h(a,b,c);if(d)return!0;var e=g(b);return null!==e&&j(a,e,c)};e.exp({hasMetadata:function hasMetadata(a,b){return j(a,f(b),arguments.length<3?c:i(arguments[2]))}})},function(a,b,d){var e=d(275),f=d(10),g=e.has,h=e.key;e.exp({hasOwnMetadata:function hasOwnMetadata(a,b){return g(a,f(b),arguments.length<3?c:h(arguments[2]))}})},function(a,b,d){var e=d(275),f=d(10),g=d(19),h=e.key,i=e.set;e.exp({metadata:function metadata(a,b){return function decorator(d,e){i(a,b,(e!==c?f:g)(d),h(e))}}})},function(a,b,c){var d=c(6),e=c(201)(),f=c(2).process,g="process"==c(32)(f);d(d.G,{asap:function asap(a){var b=g&&f.domain;e(b?b.bind(a):a)}})},function(a,b,d){var e=d(6),f=d(2),g=d(7),h=d(201)(),i=d(23)("observable"),j=d(19),k=d(10),l=d(197),m=d(202),n=d(8),o=d(198),p=o.RETURN,q=function(a){return null==a?c:j(a)},r=function(a){var b=a._c;b&&(a._c=c,b())},s=function(a){return a._o===c},t=function(a){s(a)||(a._o=c,r(a))},u=function(a,b){k(a),this._c=c,this._o=a,a=new v(this);try{var d=b(a),e=d;null!=d&&("function"==typeof d.unsubscribe?d=function(){e.unsubscribe()}:j(d),this._c=d)}catch(f){return void a.error(f)}s(this)&&r(this)};u.prototype=m({},{unsubscribe:function unsubscribe(){t(this)}});var v=function(a){this._s=a};v.prototype=m({},{next:function next(a){var b=this._s;if(!s(b)){var c=b._o;try{var d=q(c.next);if(d)return d.call(c,a)}catch(e){try{t(b)}finally{throw e}}}},error:function error(a){var b=this._s;if(s(b))throw a;var d=b._o;b._o=c;try{var e=q(d.error);if(!e)throw a;a=e.call(d,a)}catch(f){try{r(b)}finally{throw f}}return r(b),a},complete:function complete(a){var b=this._s;if(!s(b)){var d=b._o;b._o=c;try{var e=q(d.complete);a=e?e.call(d,a):c}catch(f){try{r(b)}finally{throw f}}return r(b),a}}});var w=function Observable(a){l(this,w,"Observable","_f")._f=j(a)};m(w.prototype,{subscribe:function subscribe(a){return new u(a,this._f)},forEach:function forEach(a){var b=this;return new(g.Promise||f.Promise)(function(c,d){j(a);var e=b.subscribe({next:function(b){try{return a(b)}catch(c){d(c),e.unsubscribe()}},error:d,complete:c})})}}),m(w,{from:function from(a){var b="function"==typeof this?this:w,c=q(k(a)[i]);if(c){var d=k(c.call(a));return d.constructor===b?d:new b(function(a){return d.subscribe(a)})}return new b(function(b){var c=!1;return h(function(){if(!c){try{if(o(a,!1,function(a){if(b.next(a),c)return p})===p)return}catch(d){if(c)throw d;return void b.error(d)}b.complete()}}),function(){c=!0}})},of:function of(){for(var a=0,b=arguments.length,c=Array(b);ag;)(c[g]=arguments[g++])===h&&(i=!0);return function(){var d,f=this,g=arguments.length,j=0,k=0;if(!i&&!g)return e(a,c,f);if(d=c.slice(),i)for(;b>j;j++)d[j]===h&&(d[j]=arguments[k++]);for(;g>k;)d.push(arguments[k++]);return e(a,d,f)}}},function(a,b,c){a.exports=c(2)}]),"undefined"!=typeof module&&module.exports?module.exports=a:"function"==typeof define&&define.amd?define(function(){return a}):b.core=a}(1,1); 10 | //# sourceMappingURL=shim.min.js.map -------------------------------------------------------------------------------- /kotlin-angular-core/src/lib/js/ng.platform-browser-dynamic.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Angular v2.4.8 3 | * (c) 2010-2017 Google, Inc. https://angular.io/ 4 | * License: MIT 5 | */ 6 | (function (global, factory) { 7 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/compiler'), require('@angular/core'), require('@angular/platform-browser')) : 8 | typeof define === 'function' && define.amd ? define(['exports', '@angular/compiler', '@angular/core', '@angular/platform-browser'], factory) : 9 | (factory((global.ng = global.ng || {}, global.ng.platformBrowserDynamic = global.ng.platformBrowserDynamic || {}),global.ng.compiler,global.ng.core,global.ng.platformBrowser)); 10 | }(this, function (exports,_angular_compiler,_angular_core,_angular_platformBrowser) { 'use strict'; 11 | 12 | var INTERNAL_BROWSER_PLATFORM_PROVIDERS = _angular_platformBrowser.__platform_browser_private__.INTERNAL_BROWSER_PLATFORM_PROVIDERS; 13 | 14 | var __extends = (this && this.__extends) || function (d, b) { 15 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 16 | function __() { this.constructor = d; } 17 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 18 | }; 19 | var ResourceLoaderImpl = (function (_super) { 20 | __extends(ResourceLoaderImpl, _super); 21 | function ResourceLoaderImpl() { 22 | _super.apply(this, arguments); 23 | } 24 | ResourceLoaderImpl.prototype.get = function (url) { 25 | var resolve; 26 | var reject; 27 | var promise = new Promise(function (res, rej) { 28 | resolve = res; 29 | reject = rej; 30 | }); 31 | var xhr = new XMLHttpRequest(); 32 | xhr.open('GET', url, true); 33 | xhr.responseType = 'text'; 34 | xhr.onload = function () { 35 | // responseText is the old-school way of retrieving response (supported by IE8 & 9) 36 | // response/responseType properties were introduced in ResourceLoader Level2 spec (supported 37 | // by IE10) 38 | var response = xhr.response || xhr.responseText; 39 | // normalize IE9 bug (http://bugs.jquery.com/ticket/1450) 40 | var status = xhr.status === 1223 ? 204 : xhr.status; 41 | // fix status code when it is 0 (0 status is undocumented). 42 | // Occurs when accessing file resources or on Android 4.1 stock browser 43 | // while retrieving files from application cache. 44 | if (status === 0) { 45 | status = response ? 200 : 0; 46 | } 47 | if (200 <= status && status <= 300) { 48 | resolve(response); 49 | } 50 | else { 51 | reject("Failed to load " + url); 52 | } 53 | }; 54 | xhr.onerror = function () { reject("Failed to load " + url); }; 55 | xhr.send(); 56 | return promise; 57 | }; 58 | ResourceLoaderImpl.decorators = [ 59 | { type: _angular_core.Injectable }, 60 | ]; 61 | /** @nocollapse */ 62 | ResourceLoaderImpl.ctorParameters = function () { return []; }; 63 | return ResourceLoaderImpl; 64 | }(_angular_compiler.ResourceLoader)); 65 | 66 | var INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS = [ 67 | INTERNAL_BROWSER_PLATFORM_PROVIDERS, 68 | { 69 | provide: _angular_core.COMPILER_OPTIONS, 70 | useValue: { providers: [{ provide: _angular_compiler.ResourceLoader, useClass: ResourceLoaderImpl }] }, 71 | multi: true 72 | }, 73 | ]; 74 | 75 | /** 76 | * @license 77 | * Copyright Google Inc. All Rights Reserved. 78 | * 79 | * Use of this source code is governed by an MIT-style license that can be 80 | * found in the LICENSE file at https://angular.io/license 81 | */ 82 | var globalScope; 83 | if (typeof window === 'undefined') { 84 | if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { 85 | // TODO: Replace any with WorkerGlobalScope from lib.webworker.d.ts #3492 86 | globalScope = self; 87 | } 88 | else { 89 | globalScope = global; 90 | } 91 | } 92 | else { 93 | globalScope = window; 94 | } 95 | // Need to declare a new variable for global here since TypeScript 96 | // exports the original value of the symbol. 97 | var _global = globalScope; 98 | // TODO: remove calls to assert in production environment 99 | // Note: Can't just export this and import in in other files 100 | // as `assert` is a reserved keyword in Dart 101 | _global.assert = function assert(condition) { 102 | // TODO: to be fixed properly via #2830, noop for now 103 | }; 104 | 105 | /** 106 | * @license 107 | * Copyright Google Inc. All Rights Reserved. 108 | * 109 | * Use of this source code is governed by an MIT-style license that can be 110 | * found in the LICENSE file at https://angular.io/license 111 | */ 112 | var __extends$1 = (this && this.__extends) || function (d, b) { 113 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 114 | function __() { this.constructor = d; } 115 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 116 | }; 117 | /** 118 | * An implementation of ResourceLoader that uses a template cache to avoid doing an actual 119 | * ResourceLoader. 120 | * 121 | * The template cache needs to be built and loaded into window.$templateCache 122 | * via a separate mechanism. 123 | */ 124 | var CachedResourceLoader = (function (_super) { 125 | __extends$1(CachedResourceLoader, _super); 126 | function CachedResourceLoader() { 127 | _super.call(this); 128 | this._cache = _global.$templateCache; 129 | if (this._cache == null) { 130 | throw new Error('CachedResourceLoader: Template cache was not found in $templateCache.'); 131 | } 132 | } 133 | CachedResourceLoader.prototype.get = function (url) { 134 | if (this._cache.hasOwnProperty(url)) { 135 | return Promise.resolve(this._cache[url]); 136 | } 137 | else { 138 | return Promise.reject('CachedResourceLoader: Did not find cached template for ' + url); 139 | } 140 | }; 141 | return CachedResourceLoader; 142 | }(_angular_compiler.ResourceLoader)); 143 | 144 | var __platform_browser_dynamic_private__ = { 145 | INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS: INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 146 | ResourceLoaderImpl: ResourceLoaderImpl 147 | }; 148 | 149 | /** 150 | * @stable 151 | */ 152 | var VERSION = new _angular_core.Version('2.4.8'); 153 | 154 | /** 155 | * @experimental 156 | */ 157 | var RESOURCE_CACHE_PROVIDER = [{ provide: _angular_compiler.ResourceLoader, useClass: CachedResourceLoader }]; 158 | /** 159 | * @stable 160 | */ 161 | var platformBrowserDynamic = _angular_core.createPlatformFactory(_angular_compiler.platformCoreDynamic, 'browserDynamic', INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS); 162 | 163 | exports.RESOURCE_CACHE_PROVIDER = RESOURCE_CACHE_PROVIDER; 164 | exports.platformBrowserDynamic = platformBrowserDynamic; 165 | exports.VERSION = VERSION; 166 | exports.__platform_browser_dynamic_private__ = __platform_browser_dynamic_private__; 167 | 168 | })); -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/Component.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | import ng.core.ComponentOptions 4 | import kotlin.reflect.KClass 5 | import kotlin.reflect.KProperty 6 | 7 | abstract class Component( 8 | type: KClass, 9 | inject: Array> = emptyArray(), 10 | val moduleId: String? = null, 11 | val selector: String, 12 | val template: String? = null, 13 | val templateUrl: String? = null, 14 | val styles: Array = emptyArray(), 15 | val styleUrls: Array = emptyArray(), 16 | val inputs: Array> = emptyArray() 17 | ) : Metadata, ComponentReference { 18 | 19 | override val target: JsClass = create( 20 | type = type.js, 21 | inject = inject.toTarget(), 22 | moduleId = moduleId, 23 | selector = selector, 24 | template = template, 25 | templateUrl = templateUrl, 26 | styles = styles, 27 | styleUrls = styleUrls, 28 | inputs = createInputs(inputs) 29 | ) 30 | 31 | companion object { 32 | 33 | fun create( 34 | type: JsClass, 35 | inject: Array> = emptyArray(), 36 | moduleId: String? = null, 37 | selector: String, 38 | template: String? = null, 39 | templateUrl: String? = null, 40 | styles: Array = emptyArray(), 41 | styleUrls: Array = emptyArray(), 42 | inputs: Array = emptyArray() 43 | ): JsClass { 44 | 45 | return ng.core.Component( 46 | ComponentOptions( 47 | moduleId = moduleId, 48 | selector = selector, 49 | template = template, 50 | templateUrl = templateUrl, 51 | styles = styles, 52 | styleUrls = styleUrls, 53 | inputs = inputs 54 | ) 55 | ).Class( 56 | ng.core.ClassDefinition(constructor = inject.plus(type)) 57 | ) 58 | } 59 | 60 | private fun createInputs(inputs: Array>): Array 61 | = inputs.map(KProperty<*>::name).toTypedArray() 62 | } 63 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/ComponentReference.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | import kotlin.reflect.KClass 4 | 5 | interface ComponentReference : Reference { 6 | 7 | companion object { 8 | 9 | fun of(target: JsClass): ComponentReference { 10 | return object : ComponentReference { 11 | override val target = target 12 | } 13 | } 14 | 15 | fun of(target: KClass): ComponentReference = of(target.js) 16 | } 17 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/DirectModuleReference.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | abstract class DirectModuleReference(override val target: JsClass) : ModuleReference { 4 | 5 | // constructor(target: JsClass): this(target as JsClass) 6 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/Metadata.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | interface Metadata : Reference -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/Module.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | import ng.core.NgModuleOptions 4 | import kotlin.reflect.KClass 5 | 6 | abstract class Module( 7 | type: KClass, 8 | providers: Array> = emptyArray(), 9 | declarations: Array> = emptyArray(), 10 | imports: Array> = emptyArray(), 11 | exports: Array> = emptyArray(), 12 | entryComponents: Array> = emptyArray(), 13 | bootstrap: Array> = emptyArray() 14 | ) : Metadata, ModuleReference { 15 | 16 | override val target: JsClass = create( 17 | type = type.js, 18 | providers = providers.toTarget(), 19 | declarations = declarations.toTarget(), 20 | imports = imports.toTarget(), 21 | exports = exports.toTarget(), 22 | entryComponents = entryComponents.toTarget(), 23 | bootstrap = bootstrap.toTarget() 24 | ) 25 | 26 | companion object { 27 | 28 | fun create( 29 | type: JsClass, 30 | providers: Array> = emptyArray(), 31 | declarations: Array> = emptyArray(), 32 | imports: Array> = emptyArray(), 33 | exports: Array> = emptyArray(), 34 | entryComponents: Array> = emptyArray(), 35 | bootstrap: Array> = emptyArray() 36 | ): JsClass { 37 | return ng.core.NgModule( 38 | NgModuleOptions( 39 | providers = providers, 40 | declarations = declarations, 41 | imports = imports, 42 | exports = exports, 43 | entryComponents = entryComponents, 44 | bootstrap = bootstrap 45 | ) 46 | ).Class(ng.core.ClassDefinition(type)) 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/ModuleReference.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | import kotlin.reflect.KClass 4 | 5 | interface ModuleReference : Reference { 6 | 7 | companion object { 8 | 9 | fun of(target: JsClass): ModuleReference { 10 | return object : ModuleReference { 11 | override val target = target 12 | } 13 | } 14 | 15 | fun of(target: KClass): ModuleReference 16 | = of(target.js) 17 | } 18 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/Provider.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | import ng.core.ClassDefinition 4 | import kotlin.reflect.KClass 5 | 6 | abstract class Provider internal constructor( 7 | type: KClass, 8 | injectInternal: Array> 9 | ) : Metadata, ProviderReference { 10 | 11 | constructor(type: KClass) : 12 | this(type, emptyArray>()) 13 | 14 | constructor(type: KClass, inject: Array>) : 15 | this(type, inject.map(ProviderReference<*>::target).toTypedArray()) 16 | 17 | override val target: JsClass = ng.core.Injectable() 18 | .Class(ClassDefinition(constructor = createCtor(type, injectInternal))) 19 | 20 | private fun createCtor(type: KClass, inject: Array>): Array> 21 | = inject.plus(type.js) 22 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/ProviderReference.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | import kotlin.reflect.KClass 4 | 5 | interface ProviderReference : Reference { 6 | 7 | companion object { 8 | 9 | fun of(target: JsClass): ProviderReference { 10 | return object : ProviderReference { 11 | override val target = target 12 | } 13 | } 14 | 15 | fun of(target: KClass): ProviderReference = of(target.js) 16 | } 17 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/Reference.kt: -------------------------------------------------------------------------------- 1 | package ng.api 2 | 3 | interface Reference { 4 | val target: JsClass 5 | } 6 | 7 | fun > Array.toTarget(): Array> 8 | = map { reference -> reference.target }.toTypedArray() -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/core/OnInit.kt: -------------------------------------------------------------------------------- 1 | package ng.api.core 2 | 3 | interface OnInit { 4 | fun ngOnInit() 5 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/forms/FormsModule.kt: -------------------------------------------------------------------------------- 1 | package ng.api.forms 2 | 3 | import ng.api.ModuleReference 4 | 5 | class FormsModule { 6 | 7 | companion object : ModuleReference { 8 | override val target: JsClass = ng.forms.FormsModule::class.js as JsClass 9 | } 10 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/http/Header.kt: -------------------------------------------------------------------------------- 1 | package ng.api.http 2 | 3 | class Header (val name: String, private val values: Array) { 4 | 5 | constructor(name:String, vararg values: String) : this(name, values) 6 | 7 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/http/Headers.kt: -------------------------------------------------------------------------------- 1 | package ng.api.http 2 | 3 | class Headers internal constructor(private val _headers: ng.http.Headers) { 4 | 5 | operator fun get(name:String): Header 6 | = Header(name, _headers.getAll(name)) 7 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/http/Http.kt: -------------------------------------------------------------------------------- 1 | package ng.api.http 2 | 3 | import ng.api.Provider 4 | import rxjs.Observable 5 | 6 | class Http internal constructor(private val http: ng.http.Http) { 7 | 8 | companion object : Provider( 9 | type = Http::class, 10 | injectInternal = arrayOf(ng.http.Http::class.js) 11 | ) 12 | 13 | fun get(url: String): Observable = http.get(url).map(this::mapResponse) 14 | 15 | private fun mapResponse(response: ng.http.Response): Response { 16 | return Response(response) 17 | } 18 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/http/HttpModule.kt: -------------------------------------------------------------------------------- 1 | package ng.api.http 2 | 3 | import ng.api.Module 4 | import ng.api.ModuleReference 5 | 6 | class HttpModule { 7 | 8 | companion object : Module( 9 | type = HttpModule::class, 10 | imports = arrayOf(ModuleReference.of(ng.http.HttpModule::class)), 11 | exports = arrayOf(ModuleReference.of(ng.http.HttpModule::class)), 12 | providers = arrayOf(Http) 13 | ) 14 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/http/Response.kt: -------------------------------------------------------------------------------- 1 | package ng.api.http 2 | 3 | class Response internal constructor(private val _response: ng.http.Response) { 4 | 5 | val status: Int get() = _response.status 6 | val ok: Boolean get() = _response.ok 7 | val statusText: String get() = _response.statusText 8 | val headers: Headers get() = Headers(_response.headers) 9 | 10 | inline fun body(): T { 11 | return json() 12 | } 13 | 14 | fun json(): dynamic = _response.json() 15 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/platformBrowser/BrowserModule.kt: -------------------------------------------------------------------------------- 1 | package ng.api.platformBrowser 2 | 3 | import ng.api.ModuleReference 4 | 5 | class BrowserModule { 6 | 7 | companion object : ModuleReference { 8 | override val target: JsClass = ng.platformBrowser.BrowserModule::class.js as JsClass 9 | } 10 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/platformBrowserDynamic/platformBrowserDynamic.kt: -------------------------------------------------------------------------------- 1 | package ng.api.platformBrowserDynamic 2 | 3 | import ng.api.ModuleReference 4 | 5 | interface PlatformBrowserDynamic { 6 | fun bootstrapModule(module: ModuleReference) 7 | } 8 | 9 | fun platformBrowserDynamic(): PlatformBrowserDynamic { 10 | 11 | val platformRef = ng.platformBrowserDynamic.platformBrowserDynamic() 12 | 13 | return object : PlatformBrowserDynamic { 14 | override fun bootstrapModule(module: ModuleReference) { 15 | platformRef.bootstrapModule(module.target) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/router/Location.kt: -------------------------------------------------------------------------------- 1 | package ng.api.router 2 | 3 | class Location { 4 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/router/Params.kt: -------------------------------------------------------------------------------- 1 | package ng.api.router 2 | 3 | interface Params { 4 | 5 | operator fun get(name: String): T 6 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/router/Router.kt: -------------------------------------------------------------------------------- 1 | package ng.api.router 2 | 3 | import ng.api.Provider 4 | import kotlin.js.Promise 5 | 6 | @Suppress("UnsafeCastFromDynamic") 7 | class Router internal constructor(private val router: ng.router.Router) { 8 | 9 | companion object : Provider( 10 | type = Router::class, 11 | injectInternal = arrayOf(ng.router.Router::class.js) 12 | ) 13 | 14 | fun navigate(commands: Array<*>): Promise { 15 | return this.router.navigate(commands = commands.map { it -> it as Any }.toTypedArray()) 16 | } 17 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/api/router/RouterModule.kt: -------------------------------------------------------------------------------- 1 | package ng.api.router 2 | 3 | import ng.api.ComponentReference 4 | import ng.api.DirectModuleReference 5 | import ng.api.Module 6 | import ng.api.ModuleReference 7 | 8 | class Route( 9 | val path: String, 10 | val redirectTo: String? = null, 11 | val pathMatch: String? = null, 12 | val component: ComponentReference<*>? = null 13 | ) 14 | 15 | typealias Routes = Array 16 | 17 | private val RouterModuleRef = ModuleReference.of(ng.router.RouterModule::class.js) 18 | 19 | class RouterModule { 20 | 21 | companion object : DirectModuleReference(ng.router.RouterModule::class.js) { 22 | 23 | private fun routeOptions(route: Route): dynamic { 24 | val opts: dynamic = js("({})") 25 | 26 | opts["path"] = route.path 27 | 28 | if (route.redirectTo != null) { 29 | opts["redirectTo"] = route.redirectTo 30 | } 31 | 32 | if (route.pathMatch != null) { 33 | opts["pathMatch"] = route.pathMatch 34 | } 35 | 36 | if (route.component != null) { 37 | opts["component"] = route.component.target 38 | } 39 | 40 | return opts 41 | } 42 | 43 | fun forRoot(routes: Routes): ModuleReference<*> { 44 | 45 | val opts = routes.map(RouterModule.Companion::routeOptions).toTypedArray() 46 | 47 | val module: JsClass = Module.create( 48 | type = RouterModule::class.js, 49 | providers = arrayOf(Router.target), 50 | imports = arrayOf(ng.router.RouterModule.forRoot(opts)), 51 | exports = arrayOf(ng.router.RouterModule::class.js) 52 | ) 53 | 54 | return ModuleReference.of(module) 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/ChangeDetectorRef.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external open class ChangeDetectorRef { 7 | fun markForCheck(): Unit 8 | fun detach(): Unit 9 | fun detectChanges(): Unit 10 | fun checkNoChanges(): Unit 11 | fun reattach(): Unit 12 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/ClassBuilder.kt: -------------------------------------------------------------------------------- 1 | package ng.core 2 | 3 | external interface ClassBuilder { 4 | fun Class(definition: ClassDefinition): JsClass 5 | } 6 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/ClassDefinition.kt: -------------------------------------------------------------------------------- 1 | package ng.core 2 | 3 | class ClassDefinition(val constructor: Array>) { 4 | constructor(type: JsClass) : this(arrayOf(type)) 5 | } 6 | 7 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/Component.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external fun Component(options: ComponentOptions): ClassBuilder 7 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/ComponentOptions.kt: -------------------------------------------------------------------------------- 1 | package ng.core 2 | 3 | class ComponentOptions( 4 | val moduleId: String? = null, 5 | val selector: String, 6 | val template: String? = null, 7 | val templateUrl: String? = null, 8 | val styles: Array = emptyArray(), 9 | val styleUrls: Array = emptyArray(), 10 | val inputs: Array = emptyArray() 11 | ) -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/ComponentRef.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external class ComponentRef { 7 | val location: ElementRef 8 | val injector: Injector 9 | val instance: C 10 | val hostView: ViewRef 11 | val changeDetectorRef: ChangeDetectorRef 12 | val componentType: JsClass 13 | fun destroy(): Unit 14 | fun onDestroy(callback: () -> Unit): Unit 15 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/DebugElement.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external class DebugElement(nativeNode: Any, parent: Any, _debugInfo: dynamic) : DebugNode { 7 | val name: String 8 | val properties: dynamic 9 | val attributes: dynamic 10 | val classes: dynamic 11 | val styles: dynamic 12 | val childNodes: Array 13 | val nativeElement: Any 14 | val children: Array 15 | 16 | fun addChild(child: DebugNode) 17 | fun removeChild(child: DebugNode) 18 | fun insertChildrenAfter(child: DebugNode, newChildren: Array) 19 | fun query(predicate: (DebugElement) -> Boolean): DebugElement 20 | fun queryAll(predicate: (DebugElement) -> Boolean): Array 21 | fun queryAllNodes(predicate: (DebugNode) -> Boolean): Array 22 | fun triggerEventHandler(eventName: String, eventObj: Any) 23 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/DebugNode.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | import org.w3c.dom.events.EventListener 7 | 8 | external open class DebugNode(nativeNode: Any, parent: DebugNode, _debugInfo: dynamic) { 9 | val nativeNode: Any 10 | val listeners: Array 11 | val parent: DebugElement 12 | val injector: Injector 13 | val componentInstance: Any 14 | val context: Any 15 | val references: dynamic 16 | val providerTokens: Array 17 | val source: String 18 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/ElementRef.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external class ElementRef(nativeElement: Any) { 7 | val nativeElement: Any 8 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/EmbeddedViewRef.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external class EmbeddedViewRef : ViewRef { 7 | val context: C 8 | val rootNodes: Array 9 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/EventEmitter.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | import rxjs.Subject 7 | 8 | external class EventEmitter(isAsync: Boolean) : Subject { 9 | 10 | constructor() 11 | 12 | fun emit(value: T?) 13 | } 14 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/Injectable.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external fun Injectable(): ClassBuilder -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/Injector.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external class Injector { 7 | 8 | companion object { 9 | val THROW_IF_NOT_FOUND: Any 10 | val NULL: Injector 11 | } 12 | 13 | fun get(token: Any): Any 14 | fun get(token: Any, notFoundValue: Any): Any 15 | } 16 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/NgModule.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external fun NgModule(options: NgModuleOptions): ClassBuilder 7 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/NgModuleOptions.kt: -------------------------------------------------------------------------------- 1 | package ng.core 2 | 3 | class NgModuleOptions( 4 | val providers: Array> = emptyArray(), 5 | val declarations: Array> = emptyArray(), 6 | val imports: Array> = emptyArray(), 7 | val exports: Array> = emptyArray(), 8 | val entryComponents: Array> = emptyArray(), 9 | val bootstrap: Array> = emptyArray() 10 | ) -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/NgZone.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external class NgZone(options: dynamic) { 7 | 8 | companion object { 9 | fun isInAngularZone(): Boolean 10 | fun assertInAngularZone(): Unit 11 | fun assertNotInAngularZone(): Unit 12 | } 13 | 14 | fun run(fn: () -> Any): Any 15 | fun runGuarded(fn: () -> Any): Any 16 | fun runOutsideAngular(fn: () -> Any): Any 17 | val onUnstable: EventEmitter 18 | val onMicrotaskEmpty: EventEmitter 19 | val onStable: EventEmitter 20 | val onError: EventEmitter 21 | val isStable: Boolean 22 | val hasPendingMicrotasks: Boolean 23 | val hasPendingMacrotasks: Boolean 24 | } 25 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/PlatformRef.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | import kotlin.js.* 7 | 8 | external interface PlatformRef { 9 | fun bootstrapModule(moduleRef: JsClass): Promise 10 | } 11 | 12 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/ViewRef.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule(NgCoreModule) 2 | @file:JsNonModule 3 | 4 | package ng.core 5 | 6 | external open class ViewRef : ChangeDetectorRef { 7 | val destroyed: Boolean 8 | fun destroy(): Unit 9 | fun onDestroy(callback: () -> Unit): Any 10 | } -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/core/core.kt: -------------------------------------------------------------------------------- 1 | package ng.core 2 | 3 | internal const val NgCoreModule = "ng.core" -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/forms/forms.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule("ng.forms") 2 | @file:JsNonModule 3 | 4 | package ng.forms 5 | 6 | external internal class FormsModule 7 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/http/http.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule("ng.http") 2 | @file:JsNonModule 3 | 4 | package ng.http 5 | 6 | import rxjs.Observable 7 | 8 | external internal enum class RequestMethod { 9 | Get, 10 | Post, 11 | Put, 12 | Delete, 13 | Options, 14 | Head, 15 | Patch 16 | } 17 | 18 | external internal enum class ContentType { 19 | NONE, 20 | JSON, 21 | FORM, 22 | FORM_DATA, 23 | TEXT, 24 | BLOB, 25 | ARRAY_BUFFER 26 | } 27 | 28 | external internal enum class ResponseContentType { 29 | Text, 30 | Json, 31 | ArrayBuffer, 32 | Blobs 33 | } 34 | 35 | external internal enum class ResponseType { 36 | Basic, 37 | Cors, 38 | Default, 39 | Error, 40 | Opaque, 41 | } 42 | 43 | external internal class Headers() { 44 | 45 | constructor(headers: Headers) 46 | constructor(headers: dynamic) 47 | 48 | fun append(name: String, value: String): Unit 49 | fun delete(name: String): Unit 50 | fun forEach(fn: (values: Array, name: String, headers: Map>) -> Unit): Unit 51 | fun get(name: String): String 52 | fun has(name: String): Boolean 53 | fun keys(): Array 54 | fun set(name: String, vararg value: String): Unit 55 | fun values(): Array> 56 | fun toJSON(): dynamic 57 | fun getAll(name: String): Array 58 | 59 | companion object { 60 | fun fromResponseHeaderString(headersString: String): Headers 61 | } 62 | } 63 | 64 | external internal open class Body { 65 | fun json(): dynamic 66 | fun text(): String 67 | fun arrayBuffer(): dynamic 68 | fun blob(): dynamic 69 | } 70 | 71 | external internal class RequestOptions( 72 | method: RequestMethod = definedExternally, 73 | url: String = definedExternally, 74 | search: String = definedExternally, 75 | body: Any = definedExternally, 76 | headers: Headers = definedExternally, 77 | withCredentials: Boolean = definedExternally, 78 | responseType: ResponseContentType = definedExternally 79 | ) { 80 | val method: RequestMethod 81 | val url: String 82 | val search: String? 83 | val body: Any? 84 | val headers: Headers? 85 | val withCredentials: Boolean? 86 | val responseType: ResponseContentType 87 | } 88 | 89 | external internal class Request(options: RequestOptions) : Body { 90 | val method: RequestMethod 91 | val headers: Headers 92 | val url: String 93 | val withCredentials: Boolean 94 | val responseType: ResponseContentType 95 | fun detectContentType(): ContentType 96 | fun detectContentTypeFromBody(): ContentType 97 | fun getBody(): Any 98 | } 99 | 100 | external internal class ResponseOptions( 101 | body: Any = definedExternally, 102 | status: Int = definedExternally, 103 | statusText: String = definedExternally, 104 | headers: Headers = definedExternally, 105 | type: ResponseType = definedExternally, 106 | url: String = definedExternally 107 | ) { 108 | val body: Any 109 | val status: Int 110 | val statusText: String 111 | val headers: Headers 112 | val type: ResponseType 113 | val url: String 114 | } 115 | 116 | external internal class Response(options: ResponseOptions) : Body { 117 | val status: Int 118 | val ok: Boolean 119 | val statusText: String 120 | val headers: Headers 121 | val type: ResponseType 122 | val url: String 123 | } 124 | 125 | external internal class Http { 126 | 127 | /* constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions) */ 128 | 129 | fun request(request: Request): Observable 130 | fun request(url: String, options: RequestOptions): Observable 131 | fun get(url: String): Observable 132 | fun get(url: String, options: RequestOptions): Observable 133 | fun post(url: String, body: Any): Observable 134 | fun post(url: String, body: Any, options: RequestOptions): Observable 135 | fun put(url: String, body: Any): Observable 136 | fun put(url: String, body: Any, options: RequestOptions): Observable 137 | fun delete(url: String): Observable 138 | fun delete(url: String, options: RequestOptions): Observable 139 | fun patch(url: String, body: Any): Observable 140 | fun patch(url: String, body: Any, options: RequestOptions): Observable 141 | fun head(url: String): Observable 142 | fun head(url: String, options: RequestOptions): Observable 143 | fun options(url: String): Observable 144 | fun options(url: String, options: RequestOptions): Observable 145 | } 146 | 147 | external internal class HttpModule 148 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/platformBrowser/platformBrowser.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule("ng.platformBrowser") 2 | @file:JsNonModule 3 | 4 | package ng.platformBrowser 5 | 6 | external internal class BrowserModule 7 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/platformBrowserDynamic/platformBrowserDynamic.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule("ng.platformBrowserDynamic") 2 | @file:JsNonModule 3 | 4 | package ng.platformBrowserDynamic 5 | 6 | import ng.core.PlatformRef 7 | 8 | external internal fun platformBrowserDynamic(): PlatformRef 9 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/router/router-extensions.kt: -------------------------------------------------------------------------------- 1 | package ng.router 2 | 3 | import ng.api.ProviderReference 4 | import rxjs.Observable 5 | 6 | val ActivatedRouteRef: ProviderReference 7 | get() = ProviderReference.of(ActivatedRoute::class.js) 8 | 9 | interface Params { 10 | 11 | fun get(name: String): String? 12 | fun string(name: String): String? 13 | fun int(name: String): Int? 14 | fun number(name: String): Number? 15 | } 16 | 17 | val ActivatedRoute.params: Observable get() { 18 | 19 | return _params.map { obj: dynamic -> 20 | 21 | object : Params { 22 | 23 | @Suppress("UnsafeCastFromDynamic") 24 | override fun get(name: String): String? 25 | = obj[name] 26 | 27 | override fun string(name: String): String? 28 | = get(name) 29 | 30 | override fun int(name: String): Int? 31 | = get(name)?.toInt() 32 | 33 | override fun number(name: String): Number? 34 | = int(name) as Number 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /kotlin-angular-core/src/main/kotlin/ng/router/router.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule("ng.router") 2 | @file:JsNonModule 3 | 4 | package ng.router 5 | 6 | import rxjs.Observable 7 | import kotlin.js.* 8 | 9 | external internal class RouterModule { 10 | 11 | companion object { 12 | internal fun forRoot(routes: dynamic): JsClass<*> 13 | } 14 | } 15 | 16 | external internal class Router { 17 | 18 | fun navigate(commands: Array): Promise 19 | } 20 | 21 | external class ActivatedRoute { 22 | 23 | val snapshot: ActivatedRouteSnapshot 24 | @JsName("params") internal val _params: Observable 25 | } 26 | 27 | external class ActivatedRouteSnapshot { 28 | 29 | val params: dynamic 30 | val queryParams: dynamic 31 | } -------------------------------------------------------------------------------- /kotlin-angular-core/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@angular/common@2.4.8": 6 | version "2.4.8" 7 | resolved "@angular-common-2.4.8.tgz#e45a77a9d852c8e7135053ff38cf805435458c48" 8 | 9 | "@angular/compiler@2.4.8": 10 | version "2.4.8" 11 | resolved "@angular-compiler-2.4.8.tgz#fa788fc8bed9f322b040af2b9a06a70991390e23" 12 | 13 | "@angular/core@2.4.8": 14 | version "2.4.8" 15 | resolved "@angular-core-2.4.8.tgz#bf1a4fc324827516e6c3222047a9b2cbdaee6976" 16 | 17 | "@angular/forms@2.4.8": 18 | version "2.4.8" 19 | resolved "@angular-forms-2.4.8.tgz#51512a801aaf3a1eba7bce2b22694537b93f047f" 20 | 21 | "@angular/http@2.4.8": 22 | version "2.4.8" 23 | resolved "@angular-http-2.4.8.tgz#e81ac8e4db836ed813edc4ffa137596cd5836baf" 24 | 25 | "@angular/platform-browser-dynamic@2.4.8": 26 | version "2.4.8" 27 | resolved "@angular-platform-browser-dynamic-2.4.8.tgz#86059fe930489d1ca0056a5aba0b4420414759f5" 28 | 29 | "@angular/platform-browser@2.4.8": 30 | version "2.4.8" 31 | resolved "@angular-platform-browser-2.4.8.tgz#686bc82d9188e354181699640777237ed79122ed" 32 | 33 | "@angular/router@3.4.8": 34 | version "3.4.8" 35 | resolved "@angular-router-3.4.8.tgz#d569099359848a3f708df87f685c98d37621ab97" 36 | 37 | core-js@2.4.1: 38 | version "2.4.1" 39 | resolved core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e 40 | 41 | rxjs@5.2.0: 42 | version "5.2.0" 43 | resolved rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b 44 | dependencies: 45 | symbol-observable "^1.0.1" 46 | 47 | symbol-observable@^1.0.1: 48 | version "1.0.4" 49 | resolved symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d 50 | 51 | zone.js@0.7.7: 52 | version "0.7.7" 53 | resolved zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620 54 | -------------------------------------------------------------------------------- /kotlin-angular-dependencies/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | kotlin-angular-dependencies 8 | pom 9 | 10 | 11 | kotlin-angular 12 | com.github.crunc 13 | 2.4.8-SNAPSHOT 14 | 15 | 16 | Kotlin Angular Dependencies 17 | Dependency Management for Kotlin Angular Projects 18 | 19 | 20 | 1.1.1 21 | 2.4.8-SNAPSHOT 22 | 0.3.1-SNAPSHOT 23 | 5.2.0-SNAPSHOT 24 | 2.5.2-SNAPSHOT 25 | 0.9.13 26 | 27 | v7.1.0 28 | v0.21.3 29 | 30 | ${kotlin.version} 31 | ${kotlin-jasmine.version} 32 | 1.4 33 | ${dokka.version} 34 | 3.0.2 35 | 3.0.0 36 | 3.0.0 37 | 38 | 39 | 40 | 41 | 42 | org.jetbrains.kotlin 43 | kotlin-stdlib-js 44 | ${kotlin.version} 45 | 46 | 47 | org.jetbrains.kotlin 48 | kotlin-compiler 49 | ${kotlin.version} 50 | 51 | 52 | 53 | com.github.crunc 54 | kotlin-rxjs 55 | ${kotlin-rxjs.version} 56 | 57 | 58 | com.github.crunc 59 | kotlin-angular-core 60 | ${kotlin-angular.version} 61 | 62 | 63 | com.github.crunc 64 | kotlin-angular-core-test 65 | ${kotlin-angular.version} 66 | 67 | 68 | com.github.crunc 69 | kotlin-angular-in-memory-web-api 70 | ${kotlin-angular-in-memory-web-api.version} 71 | 72 | 73 | com.github.crunc 74 | kotlin-jasmine-core 75 | ${kotlin-jasmine.version} 76 | 77 | 78 | 79 | 80 | 81 | 82 | jcenter 83 | JCenter 84 | https://jcenter.bintray.com/ 85 | 86 | true 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | org.jetbrains.kotlin 96 | kotlin-maven-plugin 97 | ${kotlin-maven-plugin.version} 98 | 99 | 100 | org.apache.maven.plugins 101 | maven-jar-plugin 102 | ${maven-jar-plugin.version} 103 | 104 | 105 | org.apache.maven.plugins 106 | maven-dependency-plugin 107 | ${maven-dependency-plugin.version} 108 | 109 | 110 | org.apache.maven.plugins 111 | maven-clean-plugin 112 | ${maven-clean-plugin.version} 113 | 114 | 115 | com.github.crunc 116 | kotlin-jasmine-maven-plugin 117 | ${kotlin-jasmine-maven-plugin.version} 118 | 119 | 120 | com.github.eirslett 121 | frontend-maven-plugin 122 | ${frontend-maven-plugin.version} 123 | 124 | 125 | org.jetbrains.dokka 126 | dokka-maven-plugin 127 | ${dokka.version} 128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /kotlin-angular-in-memory-web-api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kotlin-angular-in-memory-web-api", 3 | "version": "0.3.1", 4 | "private": true, 5 | "dependencies": { 6 | "angular-in-memory-web-api": "0.3.1" 7 | } 8 | } -------------------------------------------------------------------------------- /kotlin-angular-in-memory-web-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | kotlin-angular-in-memory-web-api 7 | 0.3.1-SNAPSHOT 8 | jar 9 | 10 | 11 | com.github.crunc 12 | kotlin-angular-lib-parent 13 | 2.4.8-SNAPSHOT 14 | ../kotlin-angular-lib-parent 15 | 16 | 17 | Kotlin Angular in-memory web API 18 | angular-in-memory-web-api for Kotlin 19 | 20 | 21 | 22 | com.github.crunc 23 | kotlin-angular-core 24 | 25 | 26 | 27 | 28 | 29 | 30 | ${node_modules}/angular-in-memory-web-api/bundles 31 | ${project.build.libOutputDirectory}/angular-in-memory-web-api 32 | 33 | in-memory-web-api.umd.js 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /kotlin-angular-in-memory-web-api/src/main/kotlin/ng/api/inMemoryWebApi/InMemoryData.kt: -------------------------------------------------------------------------------- 1 | package ng.api.inMemoryWebApi 2 | 3 | class InMemoryData private constructor(val collections: Array) { 4 | 5 | constructor(name: String, supplier: () -> Array) 6 | : this(arrayOf(Collection(name, supplier()))) 7 | 8 | fun and(name: String, supplier: () -> Array): InMemoryData 9 | = InMemoryData(collections + Collection(name, supplier())) 10 | } 11 | 12 | class Collection(val name: String, val values: Array) -------------------------------------------------------------------------------- /kotlin-angular-in-memory-web-api/src/main/kotlin/ng/api/inMemoryWebApi/InMemoryDbService.kt: -------------------------------------------------------------------------------- 1 | package ng.api.inMemoryWebApi 2 | 3 | import kotlin.js.Json 4 | 5 | abstract class InMemoryDbService { 6 | 7 | abstract fun createDb(): Json 8 | } 9 | 10 | -------------------------------------------------------------------------------- /kotlin-angular-in-memory-web-api/src/main/kotlin/ng/api/inMemoryWebApi/InMemoryWebApiModule.kt: -------------------------------------------------------------------------------- 1 | package ng.api.inMemoryWebApi 2 | 3 | import ng.api.DirectModuleReference 4 | import ng.api.Module 5 | import ng.api.ModuleReference 6 | import kotlin.reflect.KClass 7 | 8 | class InMemoryWebApiModule { 9 | 10 | companion object : DirectModuleReference(ng.inMemoryWebApi.InMemoryWebApiModule::class.js) { 11 | 12 | fun forRoot( 13 | dbCreator: KClass, 14 | options: Options? = null 15 | ): ModuleReference { 16 | 17 | val forRoot = when (options) { 18 | is Options -> ng.inMemoryWebApi.InMemoryWebApiModule.forRoot(dbCreator.js, asOptions(options)) 19 | else -> ng.inMemoryWebApi.InMemoryWebApiModule.forRoot(dbCreator.js) 20 | } 21 | 22 | val ref = Module.create( 23 | type = InMemoryWebApiModule::class.js, 24 | imports = arrayOf(forRoot), 25 | exports = arrayOf(ng.inMemoryWebApi.InMemoryWebApiModule::class.js) 26 | ) 27 | 28 | return ModuleReference.Companion.of(ref) 29 | } 30 | 31 | private fun asOptions(options: Options): dynamic { 32 | 33 | val opts: dynamic = Any() 34 | 35 | if (options.delay is Number) { 36 | opts.delay = options.delay 37 | } 38 | 39 | return opts 40 | } 41 | } 42 | 43 | inner class Options( 44 | val delay: Number? = null 45 | ) 46 | } -------------------------------------------------------------------------------- /kotlin-angular-in-memory-web-api/src/main/kotlin/ng/inMemoryWebApi/inMemoryWebApi.kt: -------------------------------------------------------------------------------- 1 | @file:JsModule("ng") 2 | @file:JsQualifier("inMemoryWebApi") 3 | @file:JsNonModule 4 | 5 | package ng.inMemoryWebApi 6 | 7 | external internal abstract class InMemoryDbService { 8 | 9 | abstract fun createDb(): dynamic 10 | } 11 | 12 | external internal class InMemoryWebApiModule { 13 | 14 | companion object { 15 | fun forRoot(dbCreator: JsClass): JsClass 16 | fun forRoot(dbCreator: JsClass, options: dynamic): JsClass 17 | } 18 | } -------------------------------------------------------------------------------- /kotlin-angular-in-memory-web-api/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | angular-in-memory-web-api@0.3.1: 6 | version "0.3.1" 7 | resolved angular-in-memory-web-api-0.3.1.tgz#3b2fe5965c3183df32081c2874ac113a827e86e3 8 | -------------------------------------------------------------------------------- /kotlin-angular-lib-parent/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | kotlin-angular-lib-parent 7 | pom 8 | 9 | 10 | com.github.crunc 11 | kotlin-angular-parent 12 | 2.4.8-SNAPSHOT 13 | ../kotlin-angular-parent 14 | 15 | 16 | Kotlin Angular Library Parent 17 | Parent POM for Kotlin Angular Libraries 18 | 19 | 20 | ${project.build.outputDirectory} 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /kotlin-angular-parent/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | kotlin-angular-parent 7 | pom 8 | 9 | 10 | com.github.crunc 11 | kotlin-angular-dependencies 12 | 2.4.8-SNAPSHOT 13 | ../kotlin-angular-dependencies 14 | 15 | 16 | Kotlin Angular Parent 17 | Parent POM for Kotlin Angular Projects 18 | 19 | 20 | UTF-8 21 | UTF-8 22 | ${project.basedir}/src/main/kotlin 23 | ${project.basedir}/src/test/kotlin 24 | ${project.build.directory}/js 25 | ${project.build.directory}/test-js 26 | ${project.basedir}/src/main/resources 27 | ${project.basedir}/src/test/resources 28 | ${project.artifactId}.js 29 | ${project.build.outputDirectory}/${project.build.outputFileName} 30 | ${project.artifactId}-test.js 31 | ${project.build.testOutputDirectory}/${project.build.testOutputFileName} 32 | 33 | ${kotlin.version} 34 | 3.0.2 35 | 36 | ${basedir}/node_modules 37 | 38 | 39 | 40 | 41 | org.jetbrains.kotlin 42 | kotlin-stdlib-js 43 | 44 | 45 | 46 | 47 | ${project.build.sourceDirectory} 48 | ${project.build.testSourceDirectory} 49 | ${project.build.outputDirectory} 50 | ${project.build.testOutputDirectory} 51 | 52 | 53 | ${project.build.resourceDirectory} 54 | ${project.build.outputDirectory} 55 | 56 | 57 | 58 | 59 | ${project.build.testResourceDirectory} 60 | ${project.build.testOutputDirectory} 61 | 62 | 63 | ${project.build.resourceDirectory} 64 | ${project.build.testOutputDirectory} 65 | 66 | 67 | 68 | 69 | org.jetbrains.kotlin 70 | kotlin-maven-plugin 71 | 72 | 73 | compile 74 | compile 75 | 76 | js 77 | 78 | 79 | umd 80 | true 81 | true 82 | ${project.build.outputFile} 83 | 84 | 85 | 86 | test-compile 87 | test-compile 88 | 89 | test-js 90 | 91 | 92 | umd 93 | true 94 | true 95 | ${project.build.testOutputFile} 96 | 97 | 98 | 99 | 100 | 101 | org.jetbrains.dokka 102 | dokka-maven-plugin 103 | 104 | 105 | dokka 106 | pre-site 107 | 108 | dokka 109 | javadoc 110 | 111 | 112 | 113 | 114 | 115 | org.apache.maven.plugins 116 | maven-jar-plugin 117 | 118 | ${project.build.outputDirectory} 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | node-and-yarn 127 | 128 | 129 | package.json 130 | 131 | 132 | 133 | 134 | 135 | org.apache.maven.plugins 136 | maven-clean-plugin 137 | 138 | 139 | 140 | ${node_modules} 141 | false 142 | 143 | 144 | 145 | 146 | 147 | com.github.eirslett 148 | frontend-maven-plugin 149 | 150 | 151 | install-node-and-yarn 152 | generate-resources 153 | 154 | install-node-and-yarn 155 | 156 | 157 | ${project.build.directory} 158 | ${node.version} 159 | ${yarn.version} 160 | 161 | 162 | 163 | yarn-install 164 | generate-resources 165 | 166 | yarn 167 | 168 | 169 | ${project.build.directory} 170 | install 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | karma-test 180 | 181 | true 182 | 183 | 184 | 185 | 186 | org.apache.maven.plugins 187 | maven-dependency-plugin 188 | 189 | 190 | unpack-js-test-dependencies 191 | generate-test-resources 192 | 193 | unpack-dependencies 194 | 195 | 196 | **/*.js,**/*.js.map 197 | ${project.build.testOutputDirectory} 198 | false 199 | true 200 | 201 | 202 | 203 | 204 | 205 | com.github.crunc 206 | kotlin-jasmine-maven-plugin 207 | 208 | 209 | generate-karma-conf 210 | generate-test-resources 211 | 212 | generate-karma-test 213 | 214 | 215 | 216 | 217 | 218 | com.github.eirslett 219 | frontend-maven-plugin 220 | 221 | 222 | install-node-and-yarn-karma 223 | pre-integration-test 224 | 225 | install-node-and-yarn 226 | 227 | 228 | ${project.build.testOutputDirectory} 229 | ${project.build.testOutputDirectory} 230 | ${node.version} 231 | ${yarn.version} 232 | 233 | 234 | 235 | yarn-install-karma 236 | pre-integration-test 237 | 238 | yarn 239 | 240 | 241 | ${project.build.testOutputDirectory} 242 | ${project.build.testOutputDirectory} 243 | install 244 | 245 | 246 | 247 | karma-tests 248 | integration-test 249 | 250 | karma 251 | 252 | 253 | ${project.build.testOutputDirectory} 254 | ${project.build.testOutputDirectory} 255 | ${project.build.testOutputDirectory}/karma.conf.js 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | -------------------------------------------------------------------------------- /kotlin-angular-sample/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | kotlin-angular-sample 7 | jar 8 | 9 | 10 | com.github.crunc 11 | kotlin-angular-app-parent 12 | 2.4.8-SNAPSHOT 13 | ../kotlin-angular-app-parent 14 | 15 | 16 | Kotlin Angular Sample 17 | Tour of Heroes sample Application with Kotlin 18 | 19 | 20 | 21 | com.github.crunc 22 | kotlin-angular-core 23 | 24 | 25 | com.github.crunc 26 | kotlin-angular-in-memory-web-api 27 | 28 | 29 | com.github.crunc 30 | kotlin-angular-core-test 31 | test 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/AppModule.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample 2 | 3 | import com.github.crunc.angular.sample.components.AppComponent 4 | import com.github.crunc.angular.sample.components.DashboardComponent 5 | import com.github.crunc.angular.sample.components.HeroDetailComponent 6 | import com.github.crunc.angular.sample.components.HeroesComponent 7 | import com.github.crunc.angular.sample.services.HeroService 8 | import com.github.crunc.angular.sample.services.InMemoryDataService 9 | import ng.api.Module 10 | import ng.api.forms.FormsModule 11 | import ng.api.http.HttpModule 12 | import ng.api.inMemoryWebApi.InMemoryWebApiModule 13 | import ng.api.platformBrowser.BrowserModule 14 | 15 | class AppModule { 16 | 17 | companion object : Module( 18 | type = AppModule::class, 19 | imports = arrayOf( 20 | BrowserModule, 21 | FormsModule, 22 | HttpModule, 23 | InMemoryWebApiModule.forRoot(InMemoryDataService::class), 24 | AppRoutingModule 25 | ), 26 | providers = arrayOf(HeroService), 27 | declarations = arrayOf( 28 | AppComponent, 29 | DashboardComponent, 30 | HeroesComponent, 31 | HeroDetailComponent 32 | ), 33 | bootstrap = arrayOf(AppComponent) 34 | ) 35 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/AppRoutingModule.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample 2 | 3 | import ng.api.Module 4 | import ng.api.router.RouterModule 5 | 6 | class AppRoutingModule { 7 | 8 | companion object : Module( 9 | type = AppRoutingModule::class, 10 | imports = arrayOf(RouterModule.forRoot(ROUTES)), 11 | exports = arrayOf(RouterModule) 12 | ) 13 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/Hero.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample 2 | 3 | class Hero( 4 | val id: Number, 5 | val name: String 6 | ) -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/components/AppComponent.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample.components 2 | 3 | import ng.api.Component 4 | 5 | class AppComponent { 6 | 7 | companion object : Component( 8 | type = AppComponent::class, 9 | selector = "my-app", 10 | templateUrl = "components/AppComponent.html", 11 | styleUrls = arrayOf("components/AppComponent.css") 12 | ) 13 | 14 | val title = "Tour of Heroes" 15 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/components/DashboardComponent.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample.components 2 | 3 | import com.github.crunc.angular.sample.Hero 4 | import com.github.crunc.angular.sample.services.HeroService 5 | import ng.api.Component 6 | import ng.api.core.OnInit 7 | 8 | class DashboardComponent(private val heroService: HeroService) : OnInit { 9 | 10 | companion object : Component( 11 | type = DashboardComponent::class, 12 | inject = arrayOf(HeroService), 13 | selector = "my-dashboard", 14 | templateUrl = "components/DashboardComponent.html", 15 | styleUrls = arrayOf("components/DashboardComponent.css") 16 | ) 17 | 18 | var heroes: Array = emptyArray() 19 | 20 | override fun ngOnInit() { 21 | heroService.getHeroes().subscribe { result -> 22 | heroes = result.slice(IntRange(1, 5)) 23 | .toTypedArray() 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/components/HeroDetailComponent.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample.components 2 | 3 | import com.github.crunc.angular.sample.Hero 4 | import com.github.crunc.angular.sample.services.HeroService 5 | import ng.api.Component 6 | import ng.api.core.OnInit 7 | import ng.router.ActivatedRoute 8 | import ng.router.ActivatedRouteRef 9 | import ng.router.params 10 | import rxjs.nonNull 11 | 12 | class HeroDetailComponent( 13 | private val heroService: HeroService, 14 | private val route: ActivatedRoute 15 | ) : OnInit { 16 | 17 | companion object : Component( 18 | type = HeroDetailComponent::class, 19 | inject = arrayOf(HeroService, ActivatedRouteRef), 20 | selector = "my-hero-detail", 21 | templateUrl = "components/HeroDetailComponent.html", 22 | styleUrls = arrayOf("components/HeroDetailComponent.css"), 23 | inputs = arrayOf(HeroDetailComponent::hero) 24 | ) 25 | 26 | var hero: Hero? = null 27 | 28 | 29 | override fun ngOnInit() { 30 | route.params 31 | .map { params -> params.number("id") } 32 | .nonNull() 33 | .switchMap { id -> heroService.getHero(id) } 34 | .subscribe { hero -> this.hero = hero } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/components/HeroesComponent.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample.components 2 | 3 | import com.github.crunc.angular.sample.Hero 4 | import com.github.crunc.angular.sample.services.HeroService 5 | import ng.api.Component 6 | import ng.api.core.OnInit 7 | import ng.api.router.Router 8 | 9 | class HeroesComponent( 10 | private val heroService: HeroService, 11 | private val router: Router 12 | ) : OnInit { 13 | 14 | companion object : Component( 15 | type = HeroesComponent::class, 16 | inject = arrayOf(HeroService, Router), 17 | selector = "my-heroes", 18 | templateUrl = "components/HeroesComponent.html", 19 | styleUrls = arrayOf("components/HeroesComponent.css") 20 | ) 21 | 22 | var heroes: Array = arrayOf() 23 | var selectedHero: Hero? = null 24 | 25 | private fun getHeroes() { 26 | 27 | heroService.getAllHeroes() 28 | .subscribe { hero -> console.log("Hero: $hero") } 29 | 30 | heroService.getHeroes().subscribe { result -> 31 | heroes = result 32 | } 33 | } 34 | 35 | override fun ngOnInit() { 36 | getHeroes() 37 | } 38 | 39 | val onSelect = { hero: Hero -> 40 | this.selectedHero = hero 41 | } 42 | 43 | val gotoDetail = { 44 | router.navigate(arrayOf("/detail", selectedHero?.id)) 45 | } 46 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/main.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample 2 | 3 | import ng.api.platformBrowserDynamic.platformBrowserDynamic 4 | 5 | fun main(args: Array) { 6 | platformBrowserDynamic().bootstrapModule(AppModule) 7 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/routes.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample 2 | 3 | import com.github.crunc.angular.sample.components.DashboardComponent 4 | import com.github.crunc.angular.sample.components.HeroDetailComponent 5 | import com.github.crunc.angular.sample.components.HeroesComponent 6 | import ng.api.router.Route 7 | 8 | val ROUTES = arrayOf( 9 | Route(path = "", redirectTo = "/dashboard", pathMatch = "full"), 10 | Route(path = "dashboard", component = DashboardComponent), 11 | Route(path = "detail/:id", component = HeroDetailComponent), 12 | Route(path = "heroes", component = HeroesComponent) 13 | ) 14 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/services/HeroService.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample.services 2 | 3 | import com.github.crunc.angular.sample.Hero 4 | import ng.api.Provider 5 | import ng.api.http.Http 6 | import rxjs.Observable 7 | 8 | class HeroService(private val http: Http) { 9 | 10 | companion object : Provider( 11 | type = HeroService::class, 12 | inject = arrayOf(Http) 13 | ) 14 | 15 | fun getHeroes(): Observable> { 16 | return http.get("api/heroes") 17 | .map { res -> res.json()["data"] } 18 | } 19 | 20 | fun getAllHeroes(): Observable = getHeroes() 21 | .mergeMap(Observable.Companion::from) 22 | 23 | fun getHero(heroId: Number): Observable = getAllHeroes() 24 | .first { hero -> 25 | hero.id == heroId 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/kotlin/com/github/crunc/angular/sample/services/InMemoryDataService.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample.services 2 | 3 | import ng.api.inMemoryWebApi.InMemoryDbService 4 | import kotlin.js.Json 5 | import kotlin.js.json 6 | 7 | class InMemoryDataService : InMemoryDbService() { 8 | override fun createDb(): Json = json( 9 | "heroes" to arrayOf( 10 | json("id" to 11, "name" to "Mr. Nice"), 11 | json("id" to 12, "name" to "Narco"), 12 | json("id" to 13, "name" to "Bombasto"), 13 | json("id" to 14, "name" to "Celeritas"), 14 | json("id" to 15, "name" to "Magneta"), 15 | json("id" to 16, "name" to "RubberMan"), 16 | json("id" to 17, "name" to "Dynama"), 17 | json("id" to 18, "name" to "Dr IQ"), 18 | json("id" to 19, "name" to "Magma"), 19 | json("id" to 20, "name" to "Tornado") 20 | ) 21 | ) 22 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/AppComponent.css: -------------------------------------------------------------------------------- 1 | .selected { 2 | background-color: #CFD8DC !important; 3 | color: white; 4 | } 5 | .heroes { 6 | margin: 0 0 2em 0; 7 | list-style-type: none; 8 | padding: 0; 9 | width: 15em; 10 | } 11 | .heroes li { 12 | cursor: pointer; 13 | position: relative; 14 | left: 0; 15 | background-color: #EEE; 16 | margin: .5em; 17 | padding: .3em 0; 18 | height: 1.6em; 19 | border-radius: 4px; 20 | } 21 | .heroes li.selected:hover { 22 | background-color: #BBD8DC !important; 23 | color: white; 24 | } 25 | .heroes li:hover { 26 | color: #607D8B; 27 | background-color: #DDD; 28 | left: .1em; 29 | } 30 | .heroes .text { 31 | position: relative; 32 | top: -3px; 33 | } 34 | .heroes .badge { 35 | display: inline-block; 36 | font-size: small; 37 | color: white; 38 | padding: 0.8em 0.7em 0 0.7em; 39 | background-color: #607D8B; 40 | line-height: 1em; 41 | position: relative; 42 | left: -1px; 43 | top: -4px; 44 | height: 1.8em; 45 | margin-right: .8em; 46 | border-radius: 4px 0 0 4px; 47 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/AppComponent.html: -------------------------------------------------------------------------------- 1 |

{{title}}

2 | 6 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/DashboardComponent.css: -------------------------------------------------------------------------------- 1 | [class*='col-'] { 2 | float: left; 3 | padding-right: 20px; 4 | padding-bottom: 20px; 5 | } 6 | [class*='col-']:last-of-type { 7 | padding-right: 0; 8 | } 9 | a { 10 | text-decoration: none; 11 | } 12 | *, *:after, *:before { 13 | -webkit-box-sizing: border-box; 14 | -moz-box-sizing: border-box; 15 | box-sizing: border-box; 16 | } 17 | h3 { 18 | text-align: center; margin-bottom: 0; 19 | } 20 | h4 { 21 | position: relative; 22 | } 23 | .grid { 24 | margin: 0; 25 | } 26 | .col-1-4 { 27 | width: 25%; 28 | } 29 | .module { 30 | padding: 20px; 31 | text-align: center; 32 | color: #eee; 33 | max-height: 120px; 34 | min-width: 120px; 35 | background-color: #607D8B; 36 | border-radius: 2px; 37 | } 38 | .module:hover { 39 | background-color: #EEE; 40 | cursor: pointer; 41 | color: #607d8b; 42 | } 43 | .grid-pad { 44 | padding: 10px 0; 45 | } 46 | .grid-pad > [class*='col-']:last-of-type { 47 | padding-right: 20px; 48 | } 49 | @media (max-width: 600px) { 50 | .module { 51 | font-size: 10px; 52 | max-height: 75px; } 53 | } 54 | @media (max-width: 1024px) { 55 | .grid { 56 | margin: 0; 57 | } 58 | .module { 59 | min-width: 60px; 60 | } 61 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/DashboardComponent.html: -------------------------------------------------------------------------------- 1 |

Top Heroes

2 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/HeroDetailComponent.css: -------------------------------------------------------------------------------- 1 | label { 2 | display: inline-block; 3 | width: 3em; 4 | margin: .5em 0; 5 | color: #607D8B; 6 | font-weight: bold; 7 | } 8 | input { 9 | height: 2em; 10 | font-size: 1em; 11 | padding-left: .4em; 12 | } 13 | button { 14 | margin-top: 20px; 15 | font-family: Arial; 16 | background-color: #eee; 17 | border: none; 18 | padding: 5px 10px; 19 | border-radius: 4px; 20 | cursor: pointer; cursor: hand; 21 | } 22 | button:hover { 23 | background-color: #cfd8dc; 24 | } 25 | button:disabled { 26 | background-color: #eee; 27 | color: #ccc; 28 | cursor: auto; 29 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/HeroDetailComponent.html: -------------------------------------------------------------------------------- 1 |
2 |

{{hero.name}} details!

3 |
4 | {{hero.id}} 5 |
6 |
7 | 8 | 9 |
10 |
-------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/HeroesComponent.css: -------------------------------------------------------------------------------- 1 | .selected { 2 | background-color: #CFD8DC !important; 3 | color: white; 4 | } 5 | .heroes { 6 | margin: 0 0 2em 0; 7 | list-style-type: none; 8 | padding: 0; 9 | width: 15em; 10 | } 11 | .heroes li { 12 | cursor: pointer; 13 | position: relative; 14 | left: 0; 15 | background-color: #EEE; 16 | margin: .5em; 17 | padding: .3em 0; 18 | height: 1.6em; 19 | border-radius: 4px; 20 | } 21 | .heroes li:hover { 22 | color: #607D8B; 23 | background-color: #DDD; 24 | left: .1em; 25 | } 26 | .heroes li.selected:hover { 27 | background-color: #BBD8DC !important; 28 | color: white; 29 | } 30 | .heroes .text { 31 | position: relative; 32 | top: -3px; 33 | } 34 | .heroes .badge { 35 | display: inline-block; 36 | font-size: small; 37 | color: white; 38 | padding: 0.8em 0.7em 0 0.7em; 39 | background-color: #607D8B; 40 | line-height: 1em; 41 | position: relative; 42 | left: -1px; 43 | top: -4px; 44 | height: 1.8em; 45 | margin-right: .8em; 46 | border-radius: 4px 0 0 4px; 47 | } 48 | button { 49 | font-family: Arial; 50 | background-color: #eee; 51 | border: none; 52 | padding: 5px 10px; 53 | border-radius: 4px; 54 | cursor: pointer; 55 | cursor: hand; 56 | } 57 | button:hover { 58 | background-color: #cfd8dc; 59 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/components/HeroesComponent.html: -------------------------------------------------------------------------------- 1 |

My Heroes

2 |
    3 |
  • 6 | {{hero.id}} {{hero.name}} 7 |
  • 8 |
9 |
10 |

11 | {{selectedHero.name | uppercase}} is my hero 12 |

13 | 14 |
15 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Tour of Heroes 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /kotlin-angular-sample/src/main/resources/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | h2, h3 { 7 | color: #444; 8 | font-family: Arial, Helvetica, sans-serif; 9 | font-weight: lighter; 10 | } 11 | body { 12 | margin: 2em; 13 | } 14 | body, input[text], button { 15 | color: #888; 16 | font-family: Cambria, Georgia; 17 | } 18 | a { 19 | cursor: pointer; 20 | cursor: hand; 21 | } 22 | button { 23 | font-family: Arial; 24 | background-color: #eee; 25 | border: none; 26 | padding: 5px 10px; 27 | border-radius: 4px; 28 | cursor: pointer; 29 | cursor: hand; 30 | } 31 | button:hover { 32 | background-color: #cfd8dc; 33 | } 34 | button:disabled { 35 | background-color: #eee; 36 | color: #aaa; 37 | cursor: auto; 38 | } 39 | 40 | /* Navigation link styles */ 41 | nav a { 42 | padding: 5px 10px; 43 | text-decoration: none; 44 | margin-right: 10px; 45 | margin-top: 10px; 46 | display: inline-block; 47 | background-color: #eee; 48 | border-radius: 4px; 49 | } 50 | nav a:visited, a:link { 51 | color: #607D8B; 52 | } 53 | nav a:hover { 54 | color: #039be5; 55 | background-color: #CFD8DC; 56 | } 57 | nav a.active { 58 | color: #039be5; 59 | } 60 | 61 | /* items class */ 62 | .items { 63 | margin: 0 0 2em 0; 64 | list-style-type: none; 65 | padding: 0; 66 | width: 24em; 67 | } 68 | .items li { 69 | cursor: pointer; 70 | position: relative; 71 | left: 0; 72 | background-color: #EEE; 73 | margin: .5em; 74 | padding: .3em 0; 75 | height: 1.6em; 76 | border-radius: 4px; 77 | } 78 | .items li:hover { 79 | color: #607D8B; 80 | background-color: #DDD; 81 | left: .1em; 82 | } 83 | .items li.selected { 84 | background-color: #CFD8DC; 85 | color: white; 86 | } 87 | .items li.selected:hover { 88 | background-color: #BBD8DC; 89 | } 90 | .items .text { 91 | position: relative; 92 | top: -3px; 93 | } 94 | .items .badge { 95 | display: inline-block; 96 | font-size: small; 97 | color: white; 98 | padding: 0.8em 0.7em 0 0.7em; 99 | background-color: #607D8B; 100 | line-height: 1em; 101 | position: relative; 102 | left: -1px; 103 | top: -4px; 104 | height: 1.8em; 105 | margin-right: .8em; 106 | border-radius: 4px 0 0 4px; 107 | } 108 | /* everywhere else */ 109 | * { 110 | font-family: Arial, Helvetica, sans-serif; 111 | } -------------------------------------------------------------------------------- /kotlin-angular-sample/src/test/kotlin/com/github/crunc/angular/sample/components/HeroDetailComponentSpec.kt: -------------------------------------------------------------------------------- 1 | package com.github.crunc.angular.sample.components 2 | 3 | import jasmine.beforeEach 4 | import jasmine.describe 5 | import jasmine.it 6 | import ng.api.core.testing.TestBed 7 | import ng.api.core.testing.async 8 | 9 | val spec = describe("HeroDetailComponent") { 10 | 11 | beforeEach { -> 12 | async { 13 | TestBed.configureTestingModule( 14 | declarations = arrayOf(HeroDetailComponent) 15 | ).compileComponents() 16 | } 17 | } 18 | 19 | it("should run") { -> 20 | console.log("running...") 21 | } 22 | } -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.github.crunc 7 | kotlin-angular 8 | 2.4.8-SNAPSHOT 9 | pom 10 | 11 | Kotlin Angular 12 | Kotlin Angular 13 | 14 | 15 | https://github.com/Crunc/kotlin-angular.git 16 | scm:git:git@github.com:Crunc/kotlin-angular.git 17 | scm:git:git@github.com:Crunc/kotlin-angular.git 18 | 19 | 20 | 21 | kotlin-angular-dependencies 22 | kotlin-angular-parent 23 | kotlin-angular-lib-parent 24 | kotlin-angular-app-parent 25 | kotlin-angular-core 26 | kotlin-angular-core-test 27 | kotlin-angular-in-memory-web-api 28 | kotlin-angular-sample 29 | 30 | 31 | 32 | --------------------------------------------------------------------------------