diff --git a/.hgignore b/.hgignore
index d014d059..916e8f8c 100644
--- a/.hgignore
+++ b/.hgignore
@@ -43,3 +43,5 @@ DynamicBibleIonic/bin
DynamicBibleIonic/.vscode
DynamicBibleUtility/.vs
DynamicBibleIonic/platforms/android/release-signing.properties
+syntax: regexp
+npm-debug.log.*
diff --git a/DynamicBibleIonic/DynamicBibleIonic.njsproj b/DynamicBibleIonic/DynamicBibleIonic.njsproj
index 3488d84d..772dfdf7 100644
--- a/DynamicBibleIonic/DynamicBibleIonic.njsproj
+++ b/DynamicBibleIonic/DynamicBibleIonic.njsproj
@@ -58,12 +58,13 @@
-
+
+
diff --git a/DynamicBibleIonic/package.json b/DynamicBibleIonic/package.json
index f1420d43..6f60c7d3 100644
--- a/DynamicBibleIonic/package.json
+++ b/DynamicBibleIonic/package.json
@@ -1,70 +1,71 @@
-{
- "version": "3.0.0",
- "name": "dynamicbible",
- "author": "Jason Wall",
- "homepage": "http://dynamicbible.com/",
- "private": true,
- "config": {
- "ionic_source_map": "source-map"
- },
- "scripts": {
- "clean": "ionic-app-scripts clean",
- "build": "ionic-app-scripts build",
- "ionic:build": "ionic-app-scripts build",
- "ionic:serve": "ionic-app-scripts serve",
- "start": "ionic serve",
- "lab": "ionic serve --lab",
- "test": "ng test",
- "test-coverage": "ng test --code-coverage"
- },
- "dependencies": {
- "@angular/common": "2.2.1",
- "@angular/compiler": "2.2.1",
- "@angular/compiler-cli": "2.2.1",
- "@angular/core": "2.2.1",
- "@angular/forms": "2.2.1",
- "@angular/http": "2.2.1",
- "@angular/platform-browser": "2.2.1",
- "@angular/platform-browser-dynamic": "2.2.1",
- "@angular/platform-server": "2.2.1",
- "@ionic/storage": "1.1.7",
- "@types/jasmine": "^2.5.38",
- "ionic-angular": "2.0.0",
- "ionic-native": "2.2.11",
- "ionicons": "3.0.0",
- "rxjs": "5.0.0-beta.12",
- "sw-toolbox": "3.4.0",
- "zone.js": "0.6.26"
- },
- "devDependencies": {
- "@ionic/app-scripts": "1.0.0",
- "@types/jasmine": "2.5.38",
- "@types/node": "6.0.42",
- "angular-cli": "1.0.0-beta.24",
- "codecov": "1.0.1",
- "jasmine-core": "2.5.2",
- "jasmine-spec-reporter": "2.7.0",
- "karma": "1.3.0",
- "karma-chrome-launcher": "2.0.0",
- "karma-cli": "1.0.1",
- "karma-jasmine": "1.1.0",
- "karma-mocha-reporter": "2.2.1",
- "karma-remap-istanbul": "0.2.2",
- "protractor": "4.0.13",
- "protractor-jasmine2-screenshot-reporter": "0.3.2",
- "ts-node": "1.7.2",
- "tslint": "4.1.1",
- "tslint-eslint-rules": "3.2.0",
- "typescript": "2.0.9"
- },
- "cordovaPlugins": [
- "cordova-plugin-whitelist",
- "cordova-plugin-statusbar",
- "cordova-plugin-console",
- "cordova-plugin-device",
- "cordova-plugin-splashscreen",
- "ionic-plugin-keyboard"
- ],
- "cordovaPlatforms": [],
- "description": "Dynamic Bible: A bible made for studying scripture"
-}
+{
+ "version": "3.0.0",
+ "name": "dynamicbible",
+ "author": "Jason Wall",
+ "homepage": "http://dynamicbible.com/",
+ "private": true,
+ "config": {
+ "ionic_source_map": "source-map"
+ },
+ "scripts": {
+ "clean": "ionic-app-scripts clean",
+ "build": "ionic-app-scripts build",
+ "ionic:build": "ionic-app-scripts build",
+ "ionic:serve": "ionic-app-scripts serve",
+ "start": "ionic serve",
+ "lab": "ionic serve --lab",
+ "test": "ng test",
+ "test-coverage": "ng test --code-coverage"
+ },
+ "dependencies": {
+ "@angular/common": "2.2.1",
+ "@angular/compiler": "2.2.1",
+ "@angular/compiler-cli": "2.2.1",
+ "@angular/core": "2.2.1",
+ "@angular/forms": "2.2.1",
+ "@angular/http": "2.2.1",
+ "@angular/platform-browser": "2.2.1",
+ "@angular/platform-browser-dynamic": "2.2.1",
+ "@angular/platform-server": "2.2.1",
+ "@ionic/storage": "1.1.7",
+ "@types/jasmine": "^2.5.38",
+ "ionic-angular": "2.0.0",
+ "ionic-native": "2.2.11",
+ "ionicons": "3.0.0",
+ "rxjs": "5.0.0-beta.12",
+ "sw-toolbox": "3.4.0",
+ "zone.js": "0.6.26"
+ },
+ "devDependencies": {
+ "@ionic/app-scripts": "1.0.0",
+ "@types/jasmine": "2.5.38",
+ "@types/node": "6.0.42",
+ "angular-cli": "1.0.0-beta.24",
+ "codecov": "1.0.1",
+ "jasmine-core": "2.5.2",
+ "jasmine-spec-reporter": "2.7.0",
+ "karma": "1.3.0",
+ "karma-chrome-launcher": "2.0.0",
+ "karma-cli": "1.0.1",
+ "karma-jasmine": "1.1.0",
+ "karma-mocha-reporter": "2.2.1",
+ "karma-remap-istanbul": "0.2.2",
+ "protractor": "4.0.13",
+ "protractor-jasmine2-screenshot-reporter": "0.3.2",
+ "ts-node": "1.7.2",
+ "tslint": "4.1.1",
+ "tslint-eslint-rules": "3.2.0",
+ "typescript": "2.0.9"
+ },
+ "cordovaPlugins": [
+ "cordova-plugin-whitelist",
+ "cordova-plugin-statusbar",
+ "cordova-plugin-console",
+ "cordova-plugin-device",
+ "cordova-plugin-splashscreen",
+ "ionic-plugin-keyboard"
+ ],
+ "cordovaPlatforms": [],
+ "description": "Dynamic Bible: A bible made for studying scripture"
+, "-vs-binding":{"AfterBuild":["ionic:serve"]}
+}
diff --git a/DynamicBibleIonic/src/app/app.module.ts b/DynamicBibleIonic/src/app/app.module.ts
index 4c1c5199..d5c86029 100644
--- a/DynamicBibleIonic/src/app/app.module.ts
+++ b/DynamicBibleIonic/src/app/app.module.ts
@@ -8,6 +8,7 @@ import { MyApp } from './app.component';
import { SearchPage } from "../pages/search/search";
import { SettingsPage } from "../pages/settings/settings";
+import { HelpPage } from "../pages/help/help";
import { ComponentLoader } from "../components/component-loader/component-loader";
import { Passage } from "../components/passage/passage";
@@ -22,6 +23,7 @@ import { ErrorMessage } from '../components/error-message/error-message';
MyApp,
SearchPage,
SettingsPage,
+ HelpPage,
ComponentLoader,
Passage,
Strongs,
@@ -39,6 +41,7 @@ import { ErrorMessage } from '../components/error-message/error-message';
MyApp,
SearchPage,
SettingsPage,
+ HelpPage,
Passage,
Strongs,
StrongsModal,
diff --git a/DynamicBibleIonic/src/components/error/error.ts b/DynamicBibleIonic/src/components/error/error.ts
index dc2c0e7f..eb4fa540 100644
--- a/DynamicBibleIonic/src/components/error/error.ts
+++ b/DynamicBibleIonic/src/components/error/error.ts
@@ -1,4 +1,4 @@
-import { EventEmitter, Component, Input, Output } from "@angular/core";
+import { EventEmitter, Component, Input, Output, ElementRef } from "@angular/core";
import { CardItem } from "../../pages/search/search";
@Component({
@@ -13,12 +13,24 @@ export class Error
@Input()
cardItem: CardItem;
- constructor()
+ constructor(private elementRef: ElementRef)
{
}
close()
{
- this.onClose.emit(this.cardItem);
+ let d = 275;
+ this.elementRef.nativeElement.parentElement.animate({
+ transform: ['none', 'translate3d(110%, 0, 0)']
+ }, {
+ fill: 'forwards',
+ duration: d,
+ iterations: 1,
+ easing: 'ease-in-out',
+ });
+ setTimeout(() =>
+ {
+ this.onClose.emit(this.cardItem);
+ }, d);
}
}
\ No newline at end of file
diff --git a/DynamicBibleIonic/src/components/passage/passage.ts b/DynamicBibleIonic/src/components/passage/passage.ts
index 79a32c55..44e29984 100644
--- a/DynamicBibleIonic/src/components/passage/passage.ts
+++ b/DynamicBibleIonic/src/components/passage/passage.ts
@@ -1,4 +1,4 @@
-import { Component, EventEmitter, Output, Input, OnInit } from "@angular/core";
+import { Component, EventEmitter, Output, Input, OnInit, ElementRef } from "@angular/core";
import { OpenData, CardItem } from "../../pages/search/search";
import { BiblePassageResult, BibleService } from '../../services/bible-service';
import { Reference } from '../../libs/Reference';
@@ -23,7 +23,7 @@ export class Passage implements OnInit
data: BiblePassageResult;
- constructor(private bibleService: BibleService)
+ constructor(private bibleService: BibleService, private elementRef: ElementRef)
{
}
@@ -35,7 +35,19 @@ export class Passage implements OnInit
close()
{
- this.onClose.emit(this.cardItem);
+ let d = 275;
+ this.elementRef.nativeElement.parentElement.animate({
+ transform: ['none', 'translate3d(110%, 0, 0)']
+ }, {
+ fill: 'forwards',
+ duration: d,
+ iterations: 1,
+ easing: 'ease-in-out',
+ });
+ setTimeout(() =>
+ {
+ this.onClose.emit(this.cardItem);
+ }, d);
}
openStrongs(strongs: string)
diff --git a/DynamicBibleIonic/src/components/strongs/strongs.ts b/DynamicBibleIonic/src/components/strongs/strongs.ts
index 8465f795..b7ffa3a4 100644
--- a/DynamicBibleIonic/src/components/strongs/strongs.ts
+++ b/DynamicBibleIonic/src/components/strongs/strongs.ts
@@ -1,4 +1,4 @@
-import { HostListener, EventEmitter, Component, Input, Output, OnInit, AfterViewChecked } from "@angular/core";
+import { HostListener, EventEmitter, Component, Input, Output, OnInit, AfterViewChecked, ElementRef } from "@angular/core";
import { Reference } from '../../libs/Reference';
import { OpenData, CardItem } from "../../pages/search/search";
import { StrongsResult, StrongsService } from '../../services/strongs-service';
@@ -21,7 +21,7 @@ export class Strongs implements AfterViewChecked, OnInit
data: StrongsResult;
- constructor(private strongsService: StrongsService)
+ constructor(private strongsService: StrongsService, private elementRef: ElementRef)
{
}
@@ -52,8 +52,20 @@ export class Strongs implements AfterViewChecked, OnInit
}
close()
- {
- this.onClose.emit(this.cardItem);
+ {
+ let d = 275;
+ this.elementRef.nativeElement.parentElement.animate({
+ transform: ['none', 'translate3d(110%, 0, 0)']
+ }, {
+ fill: 'forwards',
+ duration: d,
+ iterations: 1,
+ easing: 'ease-in-out',
+ });
+ setTimeout(() =>
+ {
+ this.onClose.emit(this.cardItem);
+ }, d);
}
openItem(p: string)
diff --git a/DynamicBibleIonic/src/components/words/words.ts b/DynamicBibleIonic/src/components/words/words.ts
index 27c53b52..fb2c05d9 100644
--- a/DynamicBibleIonic/src/components/words/words.ts
+++ b/DynamicBibleIonic/src/components/words/words.ts
@@ -1,5 +1,5 @@
///
-import { HostListener, EventEmitter, Component, Input, Output, AfterViewChecked, OnInit } from "@angular/core";
+import { HostListener, EventEmitter, Component, Input, Output, AfterViewChecked, OnInit, ElementRef } from "@angular/core";
import { Reference } from '../../libs/Reference';
import { OpenData, CardItem } from "../../pages/search/search";
import { WordLookupResult, WordService } from '../../services/word-service';
@@ -24,7 +24,7 @@ export class Words implements AfterViewChecked, OnInit
data: WordLookupResult;
- constructor(private wordService: WordService)
+ constructor(private wordService: WordService, private elementRef: ElementRef)
{
}
@@ -38,10 +38,8 @@ export class Words implements AfterViewChecked, OnInit
if (wr.scrollWidth < 500) // 1 col
{
- if (len < 6) // 5 rows
- $(el).css("height", len * 44.4 + 25);
- else
- $(el).css("height", 250);
+ // 5 rows
+ len < 6 ? $(el).css("height", len * 44.4 + 25) : $(el).css("height", 250);
}
else if (wr.scrollWidth < 699) // 2 col
{
@@ -87,14 +85,26 @@ export class Words implements AfterViewChecked, OnInit
ngOnInit(): void
{
- this.wordService.getResultAsPromise(this.cardItem.qry).then(data =>
+ this.wordService.getResultAsPromise(this.cardItem.qry).then(data =>
this.data = data
);
}
close()
{
- this.onClose.emit(this.cardItem);
+ let d = 275;
+ this.elementRef.nativeElement.parentElement.animate({
+ transform: ['none', 'translate3d(110%, 0, 0)']
+ }, {
+ fill: 'forwards',
+ duration: d,
+ iterations: 1,
+ easing: 'ease-in-out',
+ });
+ setTimeout(() =>
+ {
+ this.onClose.emit(this.cardItem);
+ }, d);
}
makePassage(p: string)
diff --git a/DynamicBibleIonic/src/index.html b/DynamicBibleIonic/src/index.html
index a67fab80..d7157b60 100644
--- a/DynamicBibleIonic/src/index.html
+++ b/DynamicBibleIonic/src/index.html
@@ -1,41 +1,35 @@
-
-
-
-
- Dynamic Bible
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Dynamic Bible
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DynamicBibleIonic/src/pages/help/help.html b/DynamicBibleIonic/src/pages/help/help.html
new file mode 100644
index 00000000..f13db1f0
--- /dev/null
+++ b/DynamicBibleIonic/src/pages/help/help.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ Settings
+
+
+
+ How to search for a verse
+
+Dynamic Bible doesn't yet have a verse picker. If you need a verse picker, hang on, we're diligently working on that feature. In the mean time, to bring up a passage,
+just type in a reference. Dynamic Bible will recognize many abbreviations of books, and can handle ranges within a book. Here are a few examples to get you started:
+
+
+John 3:16
+Jn 3:16
+Jn 3:16-17
+John 3:16-4:4
+Jn 3-4
+Jn 3:1-* (this will get all the verses in the chapter. the * char can be used in verse ranges, but not chapter ranges.)
+
+
+We currently don't support ranges that cross book boundaries.
+
\ No newline at end of file
diff --git a/DynamicBibleIonic/src/pages/help/help.scss b/DynamicBibleIonic/src/pages/help/help.scss
new file mode 100644
index 00000000..ee78e1c3
--- /dev/null
+++ b/DynamicBibleIonic/src/pages/help/help.scss
@@ -0,0 +1,3 @@
+page-settings {
+
+}
diff --git a/DynamicBibleIonic/src/pages/help/help.ts b/DynamicBibleIonic/src/pages/help/help.ts
new file mode 100644
index 00000000..fe397f45
--- /dev/null
+++ b/DynamicBibleIonic/src/pages/help/help.ts
@@ -0,0 +1,13 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'help',
+ templateUrl: 'help.html'
+})
+export class HelpPage
+{
+ constructor()
+ {
+ }
+
+}
\ No newline at end of file
diff --git a/DynamicBibleIonic/src/services/pages-service.ts b/DynamicBibleIonic/src/services/pages-service.ts
index 0cf6e1c8..75ec22ee 100644
--- a/DynamicBibleIonic/src/services/pages-service.ts
+++ b/DynamicBibleIonic/src/services/pages-service.ts
@@ -2,6 +2,8 @@ import { Injectable } from "@angular/core";
import { Storage } from '@ionic/storage';
import { SearchPage } from "../pages/search/search";
import { SettingsPage } from "../pages/settings/settings";
+import { HelpPage } from "../pages/help/help";
+
import { SavedPage } from "../libs/UserProfile";
@Injectable()
@@ -14,7 +16,8 @@ export class PagesService
{
this.pages = [
{ title: 'Search', component: SearchPage, params: { queries: [], title: "Search" }, icon: "search" },
- { title: 'Settings', component: SettingsPage, params: {}, icon: "settings" }
+ { title: 'Settings', component: SettingsPage, params: {}, icon: "settings" },
+ { title: 'Help', component: HelpPage, params: {}, icon: "help-circle" }
];
this.savedPages = [];
}
diff --git a/DynamicBibleIonic/www/index.html b/DynamicBibleIonic/www/index.html
index a67fab80..d7157b60 100644
--- a/DynamicBibleIonic/www/index.html
+++ b/DynamicBibleIonic/www/index.html
@@ -1,41 +1,35 @@
-
-
-
-
- Dynamic Bible
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Dynamic Bible
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DynamicBibleIonic/www/lib/web-animations.min.js b/DynamicBibleIonic/www/lib/web-animations.min.js
new file mode 100644
index 00000000..580111ee
--- /dev/null
+++ b/DynamicBibleIonic/www/lib/web-animations.min.js
@@ -0,0 +1,17 @@
+// Copyright 2014 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+!function(a,b){var c={},d={},e={},f=null;!function(a,b){function c(a){if("number"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=x}function e(){return a.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function f(b,c,e){var f=new d;return c&&(f.fill="both",f.duration="auto"),"number"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if("auto"!=b[c]){if(("number"==typeof f[c]||"duration"==c)&&("number"!=typeof b[c]||isNaN(b[c])))return;if("fill"==c&&v.indexOf(b[c])==-1)return;if("direction"==c&&w.indexOf(b[c])==-1)return;if("playbackRate"==c&&1!==b[c]&&a.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return"number"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return a<0||a>1||c<0||c>1?x:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(e<=0){var g=0;return a>0?g=b/a:!b&&c>0&&(g=d/c),g*e}if(e>=1){var h=0;return c<1?h=(d-1)/(c-1):1==c&&a<1&&(h=(b-1)/(a-1)),1+h*(e-1)}for(var i=0,j=1;i=1)return 1;var d=1/a;return c+=b*d,c-c%d}}function k(a){C||(C=document.createElement("div").style),C.animationTimingFunction="",C.animationTimingFunction=a;var b=C.animationTimingFunction;if(""==b&&e())throw new TypeError(a+" is not a valid value for easing");return b}function l(a){if("linear"==a)return x;var b=E.exec(a);if(b)return i.apply(this,b.slice(1).map(Number));var c=F.exec(a);if(c)return j(Number(c[1]),{start:y,middle:z,end:A}[c[2]]);var d=B[a];return d?d:x}function m(a){return Math.abs(n(a)/a.playbackRate)}function n(a){return 0===a.duration||0===a.iterations?0:a.duration*a.iterations}function o(a,b,c){if(null==b)return G;var d=c.delay+a+c.endDelay;return b=Math.min(c.delay+a,d)?I:J}function p(a,b,c,d,e){switch(d){case H:return"backwards"==b||"both"==b?0:null;case J:return c-e;case I:return"forwards"==b||"both"==b?a:null;case G:return null}}function q(a,b,c,d,e){var f=e;return 0===a?b!==H&&(f+=c):f+=d/a,f}function r(a,b,c,d,e,f){var g=a===1/0?b%1:a%1;return 0!==g||c!==I||0===d||0===e&&0!==f||(g=1),g}function s(a,b,c,d){return a===I&&b===1/0?1/0:1===c?Math.floor(d)-1:Math.floor(d)}function t(a,b,c){var d=a;if("normal"!==a&&"reverse"!==a){var e=b;"alternate-reverse"===a&&(e+=1),d="normal",e!==1/0&&e%2!==0&&(d="reverse")}return"normal"===d?c:1-c}function u(a,b,c){var d=o(a,b,c),e=p(a,c.fill,b,d,c.delay);if(null===e)return null;var f=q(c.duration,d,c.iterations,e,c.iterationStart),g=r(f,c.iterationStart,d,c.iterations,e,c.duration),h=s(d,c.iterations,g,f),i=t(c.direction,h,g);return c._easingFunction(i)}var v="backwards|forwards|both|none".split("|"),w="reverse|alternate|alternate-reverse".split("|"),x=function(a){return a};d.prototype={_setMember:function(b,c){this["_"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember("delay",a)},get delay(){return this._delay},set endDelay(a){this._setMember("endDelay",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember("fill",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",a)},get iterationStart(){return this._iterationStart},set duration(a){if("auto"!=a&&(isNaN(a)||a<0)&&e())throw new TypeError("duration must be non-negative or auto, received: "+a);this._setMember("duration",a)},get duration(){return this._duration},set direction(a){this._setMember("direction",a)},get direction(){return this._direction},set easing(a){this._easingFunction=l(k(a)),this._setMember("easing",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterations must be non-negative, received: "+a);this._setMember("iterations",a)},get iterations(){return this._iterations}};var y=1,z=.5,A=0,B={ease:i(.25,.1,.25,1),"ease-in":i(.42,0,1,1),"ease-out":i(0,0,.58,1),"ease-in-out":i(.42,0,.58,1),"step-start":j(1,y),"step-middle":j(1,z),"step-end":j(1,A)},C=null,D="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",E=new RegExp("cubic-bezier\\("+D+","+D+","+D+","+D+"\\)"),F=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,G=0,H=1,I=2,J=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=m,a.calculateIterationProgress=u,a.calculatePhase=o,a.normalizeEasing=k,a.parseEasingFunction=l}(c,f),function(a,b){function c(a,b){return a in k?k[a][b]||b:b}function d(a){return"display"===a||0===a.lastIndexOf("animation",0)||0===a.lastIndexOf("transition",0)}function e(a,b,e){if(!d(a)){var f=h[a];if(f){i.style[a]=b;for(var g in f){var j=f[g],k=i.style[j];e[j]=c(j,k)}}else e[a]=c(a,b)}}function f(a){var b=[];for(var c in a)if(!(c in["easing","offset","composite"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;g1&&null==d[0].offset&&(d[0].offset=0);for(var b=0,c=d[0].offset,e=1;e1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==d){if("add"==f||"accumulate"==f)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=f)throw new TypeError("Invalid composite mode "+f+".")}else f="easing"==d?a.normalizeEasing(f):""+f;e(d,f,c)}return void 0==c.offset&&(c.offset=null),void 0==c.easing&&(c.easing="linear"),c}),g=!0,h=-(1/0),i=0;i=0&&a.offset<=1}),g||c(),d}var h={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},i=document.createElementNS("http://www.w3.org/1999/xhtml","div"),j={thin:"1px",medium:"3px",thick:"5px"},k={borderBottomWidth:j,borderLeftWidth:j,borderRightWidth:j,borderTopWidth:j,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:j,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};a.convertToArrayForm=f,a.normalizeKeyframes=g}(c,f),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?"are":"is",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),!(g=a.applyFrom&&cthis._surrogateStyle.length;)this._length--,Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,value:void 0})},_set:function(a,b){this._style[a]=b,this._isAnimatedProperty[a]=!0},_clear:function(a){this._style[a]=this._surrogateStyle[a],delete this._isAnimatedProperty[a]}};for(var i in g)d.prototype[i]=function(a,b){return function(){var c=this._surrogateStyle[a].apply(this._surrogateStyle,arguments);return b&&(this._isAnimatedProperty[arguments[0]]||this._style[a].apply(this._style,arguments),this._updateIndices()),c}}(i,i in h);for(var j in document.documentElement.style)j in f||j in g||!function(a){c(d.prototype,a,{get:function(){return this._surrogateStyle[a]},set:function(b){this._surrogateStyle[a]=b,this._updateIndices(),this._isAnimatedProperty[a]||(this._style[a]=b)}})}(j);a.apply=function(b,c,d){e(b),b.style._set(a.propertyName(c),d)},a.clear=function(b,c){b._webAnimationsPatchedStyle&&b.style._clear(a.propertyName(c))}}(d,f),function(a){window.Element.prototype.animate=function(b,c){var d="";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if("number"==typeof a&&"number"==typeof b)return a*(1-d)+b*d;if("boolean"==typeof a&&"boolean"==typeof b)return d<.5?a:b;if(a.length==b.length){for(var e=[],f=0;f0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(a,!0),b.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var c=this.currentTime;this._playbackRate=a,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)),null!=c&&(this.currentTime=c)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),b.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){"function"==typeof b&&"finish"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if("finish"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var a=this._effect._target;return a._activeAnimations||(a._activeAnimations=[]),a._activeAnimations},_markTarget:function(){var a=this._targetAnimations();a.indexOf(this)===-1&&a.push(this)},_unmarkTarget:function(){var a=this._targetAnimations(),b=a.indexOf(this);b!==-1&&a.splice(b,1)}}}(c,d,f),function(a,b,c){function d(a){var b=j;j=[],a1e-4?(w=.5/Math.sqrt(y),x=[(s[2][1]-s[1][2])*w,(s[0][2]-s[2][0])*w,(s[1][0]-s[0][1])*w,.25/w]):s[0][0]>s[1][1]&&s[0][0]>s[2][2]?(w=2*Math.sqrt(1+s[0][0]-s[1][1]-s[2][2]),x=[.25*w,(s[0][1]+s[1][0])/w,(s[0][2]+s[2][0])/w,(s[2][1]-s[1][2])/w]):s[1][1]>s[2][2]?(w=2*Math.sqrt(1+s[1][1]-s[0][0]-s[2][2]),x=[(s[0][1]+s[1][0])/w,.25*w,(s[1][2]+s[2][1])/w,(s[0][2]-s[2][0])/w]):(w=2*Math.sqrt(1+s[2][2]-s[0][0]-s[1][1]),x=[(s[0][2]+s[2][0])/w,(s[1][2]+s[2][1])/w,.25*w,(s[1][0]-s[0][1])/w]),[r,t,u,x,n]}return j}();a.dot=c,a.makeMatrixDecomposition=h}(d,f),function(a){function b(a,b){var c=a.exec(b);if(c)return c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]}function c(a,b){b=b.replace(/^\s*/,"");var c=a(b);if(c)return[c[0],c[1].replace(/^\s*/,"")]}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],g=b(d,e),!g||""==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;dd?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){var d=a(c);return d?d:[b,c]}}function i(b,c){for(var d=[],e=0;e=1?b:"visible"}]}a.addPropertiesHandler(String,c,["visibility"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle="#000",f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle="#fff",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;d<3;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),"rgba("+b.join(",")+")"}]}var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");e.width=e.height=1;var f=e.getContext("2d");a.addPropertiesHandler(c,d,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(a){return c[a]=null,"U"+a});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g1?"calc("+c+")":c}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(a){var b=l(a);if(b&&""==b[1])return b[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\)/))],b);if(d&&4==d[0].length)return d[0]}function e(b,c){return"auto"==b||"auto"==c?[!0,!1,function(d){var e=d?b:c;if("auto"==e)return"auto";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return"rect("+a+")"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,", ");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,["clip"])}(d,f),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(b=b.toLowerCase().trim(),"none"==b)return[];for(var c,d=/\s*(\w+)\(([^)]*)\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(","),j=h[0];if(j.length900||b%100!==0))return b}function c(b){return b=100*Math.round(b/100),b=a.clamp(100,900,b),400===b?"normal":700===b?"bold":String(b)}function d(a,b){return[a,b,c]}a.addPropertiesHandler(b,d,["font-weight"])}(d),function(a){function b(a){var b={};for(var c in a)b[c]=-a[c];return b}function c(b){return a.consumeToken(/^(left|center|right|top|bottom)\b/i,b)||a.consumeLengthOrPercent(b)}function d(b,d){var e=a.consumeRepeated(c,/^/,d);if(e&&""==e[1]){var f=e[0];if(f[0]=f[0]||"center",f[1]=f[1]||"center",3==b&&(f[2]=f[2]||{px:0}),f.length==b){if(/top|bottom/.test(f[0])||/left|right/.test(f[1])){var h=f[0];f[0]=f[1],f[1]=h}if(/left|right|center|Object/.test(f[0])&&/top|bottom|center|Object/.test(f[1]))return f.map(function(a){return"object"==typeof a?a:g[a]})}}}function e(d){var e=a.consumeRepeated(c,/^/,d);if(e){for(var f=e[0],h=[{"%":50},{"%":50}],i=0,j=!1,k=0;k=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue("opacity"),f="0"==e?"1":"0";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue("opacity")==f}catch(a){}finally{c&&c.cancel()}if(!d){var g=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),g.call(this,b,c)}}}(c),b.true=a}({},function(){return this}());
+//# sourceMappingURL=web-animations.min.js.map
\ No newline at end of file