@grapecity/wijmo.cloud 5.20261.48 → 5.20261.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -169,7 +169,7 @@ Submit questions to our team of [Wijmo Experts](https://developer.mescius.com/fo
169
169
 
170
170
  ## Wijmo CN
171
171
 
172
- **注意:从 2027v1 开始,Wijmo 的 npm 包将仅在 @mescius 作用域下发布。在 2026 年期间仍在使用 @grapecity 作用域的用户,需要迁移到 @mescius。**
172
+ **注意:从 2027v1 开始,@grapecity域下的所有Wijmo包将停止维护,请迁移到 @grapecity-software。**
173
173
 
174
174
  ---
175
175
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20261.48
3
+ * Wijmo Library 5.20261.52
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
13
 
14
- "use strict";var __importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)Object.hasOwnProperty.call(e,s)&&(t[s]=e[s]);t.default=e;return t};Object.defineProperty(exports,"__esModule",{value:!0});const wijmo_1=require("@grapecity/wijmo"),selfModule=__importStar(require("@grapecity/wijmo.cloud"));class OAuth2{constructor(e,t,s,i){this.userChanged=new wijmo_1.Event;this.error=new wijmo_1.Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,s);else{const i=document.createElement("script");i.src="https://apis.google.com/js/api.js";i.onload=()=>this._gapiLoaded(e,t,s);document.head.appendChild(i)}wijmo_1.copy(this,i)}get user(){const e=this._auth();if(e&&e.isSignedIn.get()){const t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null}get accessToken(){const e=this._gapi.auth.getToken();return e?e.access_token:null}get idToken(){const e=this._gapi.auth.getToken();return e?e.id_token:null}signIn(){this._auth().signIn().then(e=>{},e=>{"popup_closed_by_user"!=e&&this.onError(new OAuthError(e))})}signOut(){this._auth().signOut()}onUserChanged(e){this.userChanged.raise(this,e)}onError(e){this.error.raise(this,e)}_gapiLoaded(e,t,s){this._gapi=window.gapi;const i=this._gapi;wijmo_1.assert(i,"Failed to load google gapi.");i.load("client:auth2",()=>{let r=s&&s.length?s.join(" "):"";r=r||"https://www.googleapis.com/auth/userinfo.email";i.client.init({apiKey:e,clientId:t,scope:r}).then(()=>{this._auth().isSignedIn.listen(()=>{this.onUserChanged()});this.onUserChanged()},e=>{this.onError(new OAuthError(e))})})}_auth(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null}}exports.OAuth2=OAuth2;class OAuthError extends wijmo_1.EventArgs{constructor(e){super();this._error=e}get error(){return this._error}}exports.OAuthError=OAuthError;class Snapshot extends wijmo_1.CollectionView{constructor(e,t){super();this._loading=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.hasPendingChangesChanged=new wijmo_1.Event;this._checkType("CollectionReference",e,"firestore","doc","onSnapshot");this._collection=e;wijmo_1.copy(this,t);this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get query(){return this._query}set query(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(){if(this.deferCommits&&this.hasPendingChanges){const e=this._collection.firestore.batch();this.itemsEdited.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.update(s,i)});this.itemsAdded.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.set(s,i)});this.itemsRemoved.forEach(t=>{const s=this._getItemDoc(t);e.delete(s)});e.commit().then(()=>{this.clearChanges();this._getData(!0)}).catch(e=>this._raiseError(e,!0))}}cancelChanges(){if(this.deferCommits){this.clearChanges();this._getData(!0)}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;e&&this._collection.add(this._getItemData(e)).catch(e=>this._raiseError(e,!0))}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._getItemDoc(e),s=this._getItemData(e);t.update(s).catch(e=>this._raiseError(e,!0))}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){this._getItemDoc(e).delete().catch(e=>this._raiseError(e,!0))}super.remove(e)}_raiseError(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getItemDoc(e){const t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)}_getItemData(e){const t={},s=this.calculatedFields;for(var i in e)s&&i in s||"$META"!=i&&(t[i]=e[i]);return t}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new wijmo_1.CancelEventArgs)){this._unsubscribe&&this._unsubscribe();this._unsubscribe=this._getQuery().onSnapshot(t=>{const s=[],i=e||!this._loading?this.currentPosition:null;t.forEach(e=>{s.push(Object.assign({$META:{id:e.id}},e.data()))});this.sourceCollection=s;null!=i&&this.moveCurrentToPosition(i);if(this._loading){this._loading=!1;this.onLoaded()}},e=>this._raiseError(e,!0))}},wijmo_1.Control._REFRESH_INTERVAL)}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_checkType(e,t,...s){if(null!=t)for(let i=0;i<s.length;i++){const r=s[i];null==t[r]&&wijmo_1.assert(!1,`Expected "${e}" but the value does not have "${r}".`)}}_getQuery(){return this._query||this._collection}}exports.Snapshot=Snapshot;class FirestoreErrorEventArgs extends wijmo_1.CancelEventArgs{constructor(e){super();this._error=e}get error(){return this._error}get message(){return this._error.message}}exports.FirestoreErrorEventArgs=FirestoreErrorEventArgs;class Sheet extends wijmo_1.CollectionView{constructor(e,t,s){super();this._loading=!1;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this._gSheet=e;this._title=t;this._id=s;this._getData();e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this._getData(!0)})}get googleSheet(){return this._gSheet}get title(){return this._title}load(e){this._getData(e)}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}commitNew(){const e=this.currentAddItem;e&&this._saveItem(e);super.commitNew()}commitEdit(){const e=this.currentEditItem;e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)&&this._saveItem(e);super.commitEdit()}remove(e){if(e&&e!=this.currentAddItem){const t=this.sourceCollection.indexOf(e);wijmo_1.assert(t>-1,"Item not found.");const s=t+1;wijmo_1.assert(null!=this._id,"Sheet doesn't have an ID ? ");const i=this.googleSheet,r=i._getUrl(":batchUpdate");wijmo_1.httpRequest(r,{method:"POST",requestHeaders:i._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:s,endIndex:s+1}}}]},error:e=>this._handleError(e,!1)})}super.remove(e)}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._loading=!0;this._itemKeys=null;if(this.onLoading(new wijmo_1.CancelEventArgs)){const t=this.currentPosition,s=this.googleSheet,i=s._getUrl(`/values/${this.title}!2:2`);wijmo_1.httpRequest(i,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:i=>{const r=JSON.parse(i.responseText).values[0],o=s._getUrl("/values/"+this.title);wijmo_1.httpRequest(o,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:s=>{const i=JSON.parse(s.responseText).values;this.sourceCollection=this._parseData(i,r);e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._handleError(e,!1)})},error:e=>this._handleError(e,!1)})}},wijmo_1.Control._REFRESH_INTERVAL)}_parseData(e,t){const s=[];let i=e[0],r=!0;for(let e=0;e<i.length&&r;e++){const t=i[e];t&&wijmo_1.isString(t)&&i.indexOf(t)==e||(r=!1)}if(r)e.splice(0,1);else{const e=[];for(let t=0;t<i.length;t++)e.push(this._toSheetHeader(t));i=e}this._itemKeys=i;const o=[],n=this._gSheet.columnDataTypes,a=wijmo_1.DataType;i.forEach(e=>{let t=a.Object;n&&n.forEach(s=>{s.pattern.test(e)&&(t=s.dataType)});o.push(t)});e.forEach(e=>{const r={};i.forEach((s,i)=>{let n=e[i],h=t[i],l=o[i];l==a.Object&&wijmo_1.isNumber(n)&&wijmo_1.isString(h)&&h.length&&(l=a.Date);l!=a.Object&&(n=l==a.Date&&wijmo_1.isNumber(n)?new Date(86400*(n-25568)*1e3):wijmo_1.changeType(n,l));r[s]=n});s.push(r)});return s}_toSheetHeader(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)}_saveItem(e){const t=this.sourceCollection.indexOf(e);wijmo_1.assert(t>-1,"Item not found?");const s=[];this._itemKeys.forEach(t=>{const i=e[t];s.push(null!=i?i.toString():"")});let i=this.googleSheet,r=(t+2).toString(),o=`${this.title}!A${r}:Z${r}`,n=i._getUrl("/values/"+o);n+=(n.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";wijmo_1.httpRequest(n,{method:"PUT",requestHeaders:i._getRequestHeaders(),data:{range:o,values:[s]},error:e=>this._handleError(e,!0)})}_handleError(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)}}exports.Sheet=Sheet;class GoogleSheet{constructor(e,t,s){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new wijmo_1.ObservableArray;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.accessTokenChanged=new wijmo_1.Event;this._sheetId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,s);this._getSheetInfo()}get sheetId(){return this._sheetId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}}get columnDataTypes(){return this._colTypes}set columnDataTypes(e){this._colTypes=e}get sheets(){return this._sheets}getSheet(e){for(let t=0;t<this._sheets.length;t++){const s=this._sheets[t];if(s.title==e)return s}return null}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e)}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("sheets"==e&&wijmo_1.isArray(t)){t.forEach(e=>{const t=new Sheet(this,e);this.sheets.push(t)});return!0}return!1}_getUrl(e){let t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t}_getRequestHeaders(){const e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e}_getSheetInfo(){this._loading=!0;this.onLoading();wijmo_1.httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:e=>{const t=JSON.parse(e.responseText),s=t.sheets;this.sheets.length?this.sheets.forEach(e=>{for(let t=0;t<s.length;t++){const i=s[t].properties;if(i.title==e.title){e._id=i.sheetId;break}}wijmo_1.assert(null!=e._id,`Could not find sheet "${e.title}".`)}):t.sheets.forEach(e=>{const t=e.properties;if("GRID"==t.sheetType){const e=new Sheet(this,t.title,t.sheetId);this.sheets.push(e)}})},error:e=>{this.onError(new wijmo_1.RequestErrorEventArgs(e))},complete:e=>{this._loading=!1;this.onLoaded()}})}}exports.GoogleSheet=GoogleSheet;class Firestore{constructor(e,t,s){this._projectId="";this._collections=new wijmo_1.ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new wijmo_1.Event;this._projectId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,s)}get projectId(){return this._projectId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}}get idToken(){return this._idToken}set idToken(e){if(e!=this._idToken){this._idToken=wijmo_1.asString(e);if(this._idToken){const e="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;wijmo_1.httpRequest(e,{method:"POST",data:{requestUri:window.location.href,postBody:`id_token=${this._idToken}&providerId=google.com`,returnSecureToken:!0,returnIdpCredential:!0},success:e=>{const t=JSON.parse(e.responseText);this._fbToken=t.idToken;this.onAccessTokenChanged()},error:e=>{this._fbToken="";this.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}}get collections(){return this._collections}getCollection(e){const t=this._collections;for(let s=0;s<t.length;s++){const i=t[s];if(i.name==e)return i}return null}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("collections"==e&&wijmo_1.isArray(t)){t.forEach(e=>{const t=new Collection(this,e);this.collections.push(t)});return!0}return!1}}exports.Firestore=Firestore;function softGridFilter(){return wijmo_1._getModule("wijmo.grid.filter")}exports.softGridFilter=softGridFilter;class Collection extends wijmo_1.CollectionView{constructor(e,t,s){super();this._loading=!1;this._sortOnServer=!1;this._pageOnServer=!1;this._filterOnServer=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this._orderBy=[];this._fieldFilters=[];this._limit=0;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.hasPendingChangesChanged=new wijmo_1.Event;this._store=e;this._name=t;wijmo_1.copy(this,s);this.sortDescriptions.collectionChanged.addHandler(()=>{this.sortOnServer&&!this.hasPendingChanges&&this._getData(!0)});e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this.load()});this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get store(){return this._store}get name(){return this._name}get fields(){return this._fields}set fields(e){if(e!=this._fields){this._fields=wijmo_1.asArray(e);this._getData(!0)}}get limit(){return this._limit}set limit(e){if(e!=this._limit){this._limit=wijmo_1.asInt(e);this._getData(!0)}}get sortOnServer(){return this._sortOnServer}set sortOnServer(e){if(e!=this._sortOnServer){this._sortOnServer=wijmo_1.asBoolean(e);this._getData(!0)}}get pageOnServer(){return this._pageOnServer}set pageOnServer(e){if(e!=this._pageOnServer){this._pageOnServer=wijmo_1.asBoolean(e);this._getData(!0)}}get filterOnServer(){return this._filterOnServer}set filterOnServer(e){if(e!=this._filterOnServer){this._filterOnServer=wijmo_1.asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=wijmo_1.culture.FlexGridFilter);if(this._filterOnServer){const e=wijmo_1.culture.FlexGridFilter;e.stringOperators=e.numberOperators}else wijmo_1.culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(e){if(this.deferCommits){const t=[];this.itemsEdited.forEach(e=>{t.push({update:this._itemToDoc(e)})});this.itemsAdded.forEach(e=>{const s=this._itemToDoc(e);s.name=`projects/${this.store.projectId}/databases/(default)/documents/${this.name}/${this._generateID()}`;t.push({update:s})});this.itemsRemoved.forEach(e=>{t.push({delete:e.$META.name})});t.length&&wijmo_1.httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText);wijmo_1.httpRequest(this._getUrl(":commit"),{method:"POST",data:{writes:t,transaction:i.transaction},requestHeaders:this._getRequestHeaders(),success:e=>{this.clearChanges();this.load()},complete:t=>{wijmo_1.isFunction(e)&&e(t)},error:e=>this._raiseError(e,!0)})},error:e=>this._raiseError(e,!0)})}}cancelChanges(){if(this.deferCommits){this.clearChanges();this.load()}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}select(...e){this.fields=e;return this}orderBy(e,t=!0){e?this._orderBy.push(new wijmo_1.SortDescription(wijmo_1.asString(e),wijmo_1.asBoolean(t))):this._orderBy=[];this._getData(!1);return this}where(e,t,s){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";wijmo_1.assert(wijmo_1.isArray(s),"IN operator requires array values.");break;default:wijmo_1.assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(let s=0;s<this._fieldFilters.length;s++){const i=this._fieldFilters[s].fieldFilter;if(i.field.fieldPath==e&&i.op==t){this._fieldFilters.splice(s,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(s)}})}else this._fieldFilters=[];this._getData(!1);return this}getSubCollection(e,t,s){wijmo_1.assert(wijmo_1.isObject(e)&&null!=e.$META,"invalid parent item");const i=new Collection(this.store,t,s);i._parentItem=e;return i}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}get totalItemCount(){const e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0}set totalItemCount(e){this._totalCount=wijmo_1.asInt(e)}get pageCount(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1}get pageSize(){return this._pgSz}set pageSize(e){if(e!=this._pgSz){this._pgSz=wijmo_1.asInt(e);if(this.pageOnServer){this._pgIdx=wijmo_1.clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}}onPageChanging(e){super.onPageChanging(e);!e.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?e.cancel=!0:this._getData(!0));return!e.cancel}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;if(e){const t=this._itemToDoc(e);wijmo_1.httpRequest(this._getUrl(),{method:"POST",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),success:t=>{const s=JSON.parse(t.responseText);this._saveDocName(s,e);wijmo_1.isNumber(this._totalCount)&&this._totalCount++},error:e=>this._raiseError(e,!0)})}}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._itemToDoc(e);wijmo_1.httpRequest(this._getUrl(t),{method:"PATCH",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),error:e=>this._raiseError(e,!0)})}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){const t=this._itemToDoc(e);wijmo_1.httpRequest(this._getUrl(t),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:e=>{wijmo_1.isNumber(this._totalCount)&&this._totalCount--},error:e=>this._raiseError(e,!0)})}super.remove(e)}updateFilterDefinition(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}}_getPageView(){return this.pageOnServer?this._view:super._getPageView()}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new wijmo_1.CancelEventArgs)){const t=this.currentPosition;wijmo_1.httpRequest(this._getUrl(":runQuery"),{method:"POST",data:this._getQuery(),requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText),r=this._parseData(i),o=this.pageSize;if(this.pageOnServer&&o&&r.length<o){const e=i[0].skippedResults||0;this._totalCount=e+r.length;if(0==r.length&&this.pageIndex>0){this.moveToLastPage();return}}this.sourceCollection=r;e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._raiseError(e,!1)})}},wijmo_1.Control._REFRESH_INTERVAL)}_getQuery(){const e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map(e=>({fieldPath:e}))});let t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});const s=[];t&&t.length&&t.forEach(e=>{const t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&s.push({field:t.field.fieldPath,asc:!0})});this._orderBy.forEach(e=>{s.push({field:e.property,asc:e.ascending})});!s.length&&this.sortOnServer&&this.sortDescriptions.forEach(e=>{s.push({field:e.property,asc:e.ascending})});s.length&&(e.orderBy=s.map(e=>({field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"})));const i=this.pageSize;if(this.pageOnServer&&i){e.limit=i;e.offset=i*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}}_parseData(e){const t=[];wijmo_1.isArray(e)&&e.forEach(e=>{const s=this._docToItem(e);s&&t.push(s)});return t}_raiseError(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)}_saveDocName(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1}_docToItem(e){e.name||(e=e.document);if(!e||!e.name)return null;const t={};this._saveDocName(e,t);for(const s in e.fields)t[s]=this._getDocValue(e.fields[s]);return t}_getDocValue(e){let t=null;for(const s in e){t=e[s];switch(s){case"integerValue":t=parseInt(t);break;case"timestampValue":t=new Date(t);break;case"mapValue":{const e={};for(const s in t.fields)e[s]=this._getDocValue(t.fields[s]);t=e;break}case"arrayValue":t=t.values?t.values.map(e=>this._getDocValue(e)):[]}}return t}_itemToDoc(e){const t={},s=e.$META,i=this.calculatedFields;s&&s.name&&(t.name=s.name);t.fields={};for(const s in e)i&&s in i||"$META"!=s&&(t.fields[s]=this._getValueObject(e[s]));return t}_getValueObject(e){const t={},s=wijmo_1.DataType;switch(wijmo_1.getType(e)){case s.String:t.stringValue=e;break;case s.Boolean:t.booleanValue=e;break;case s.Date:t.timestampValue=e.toJSON();break;case s.Number:e==Math.round(e)?t.integerValue=e.toString():t.doubleValue=e;break;case s.Array:t.arrayValue={values:e.map(e=>this._getValueObject(e))};break;case s.Object:{const s={};for(const t in e)s[t]=this._getValueObject(e[t]);t.mapValue={fields:s};break}default:wijmo_1.assert(!1,"failed to create value object.")}return t}_getRequestHeaders(){const e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e}_getUrl(e){const t="https://firestore.googleapis.com/v1/";if(wijmo_1.isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:`projects/${this.store.projectId}/databases/(default)/documents`)+e}_getQueryFilters(){const e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(let s=0;s<t.grid.columns.length;s++){const i=t.grid.columns[s],r=t.getColumnFilter(i,!1);if(r&&r.isActive){r.conditionFilter&&r.conditionFilter.isActive?this._getQueryConditionFilter(e,r.conditionFilter):r.valueFilter&&r.valueFilter.isActive&&this._getQueryValueFilter(e,r.valueFilter);break}}return e}_getQueryConditionFilter(e,t){const s=t.column.binding,i=this._getQuerySimpleFilter(t.condition1,s),r=this._getQuerySimpleFilter(t.condition2,s);i&&r&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[i,r]}}):i?e.push(i):r&&e.push(r)}_getQuerySimpleFilter(e,t){if(e.isActive){const s=softGridFilter().Operator;return e.operator==s.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null}_getFilterOperator(e){const t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}wijmo_1.assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")}_getQueryValueFilter(e,t){const s=t.column,i=s.dataMap,r=[];for(const e in t.showValues){let t=wijmo_1.changeType(e,s.dataType,s.format);i&&wijmo_1.isString(t)&&(t=i.getKeyValue(t));r.push(t);if(r.length>=10)break}r.length&&e.push({fieldFilter:{field:{fieldPath:s.binding},op:"IN",value:this._getValueObject(r)}})}}Collection._filterCulture=null;exports.Collection=Collection;wijmo_1._registerModule("wijmo.cloud",selfModule);
14
+ "use strict";var __importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)Object.hasOwnProperty.call(e,s)&&(t[s]=e[s]);t.default=e;return t};Object.defineProperty(exports,"__esModule",{value:!0});const wijmo_1=require("@grapecity/wijmo"),selfModule=__importStar(require("@grapecity/wijmo.cloud"));class OAuth2{constructor(e,t,s,i){this.userChanged=new wijmo_1.Event;this.error=new wijmo_1.Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,s);else{const i=document.createElement("script");i.src="https://apis.google.com/js/api.js";i.onload=()=>this._gapiLoaded(e,t,s);document.head.appendChild(i)}wijmo_1.copy(this,i)}get user(){const e=this._auth();if(e&&e.isSignedIn.get()){const t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null}get accessToken(){const e=this._gapi.auth.getToken();return e?e.access_token:null}get idToken(){const e=this._gapi.auth.getToken();return e?e.id_token:null}signIn(){this._auth().signIn().then(e=>{},e=>{"popup_closed_by_user"!=e&&this.onError(new OAuthError(e))})}signOut(){this._auth().signOut()}onUserChanged(e){this.userChanged.raise(this,e)}onError(e){this.error.raise(this,e)}_gapiLoaded(e,t,s){this._gapi=window.gapi;const i=this._gapi;wijmo_1.assert(i,"Failed to load google gapi.");i.load("client:auth2",()=>{let r=s&&s.length?s.join(" "):"";r=r||"https://www.googleapis.com/auth/userinfo.email";i.client.init({apiKey:e,clientId:t,scope:r}).then(()=>{this._auth().isSignedIn.listen(()=>{this.onUserChanged()});this.onUserChanged()},e=>{this.onError(new OAuthError(e))})})}_auth(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null}}exports.OAuth2=OAuth2;class OAuthError extends wijmo_1.EventArgs{constructor(e){super();this._error=e}get error(){return this._error}}exports.OAuthError=OAuthError;class Snapshot extends wijmo_1.CollectionView{constructor(e,t){super();this._loading=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.hasPendingChangesChanged=new wijmo_1.Event;this._checkType("CollectionReference",e,"firestore","doc","onSnapshot");this._collection=e;wijmo_1.copy(this,t);this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get query(){return this._query}set query(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(){if(this.deferCommits&&this.hasPendingChanges){const e=this._collection.firestore.batch();this.itemsEdited.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.update(s,i)});this.itemsAdded.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.set(s,i)});this.itemsRemoved.forEach(t=>{const s=this._getItemDoc(t);e.delete(s)});e.commit().then(()=>{this.clearChanges();this._getData(!0)}).catch(e=>this._raiseError(e,!0))}}cancelChanges(){if(this.deferCommits){this.clearChanges();this._getData(!0)}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}get newItemIndex(){return-1}set newItemIndex(e){}insertAt(){}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;e&&this._collection.add(this._getItemData(e)).catch(e=>this._raiseError(e,!0))}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._getItemDoc(e),s=this._getItemData(e);t.update(s).catch(e=>this._raiseError(e,!0))}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){this._getItemDoc(e).delete().catch(e=>this._raiseError(e,!0))}super.remove(e)}_raiseError(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getItemDoc(e){const t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)}_getItemData(e){const t={},s=this.calculatedFields;for(var i in e)s&&i in s||"$META"!=i&&(t[i]=e[i]);return t}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new wijmo_1.CancelEventArgs)){this._unsubscribe&&this._unsubscribe();this._unsubscribe=this._getQuery().onSnapshot(t=>{const s=[],i=e||!this._loading?this.currentPosition:null;t.forEach(e=>{s.push(Object.assign({$META:{id:e.id}},e.data()))});this.sourceCollection=s;null!=i&&this.moveCurrentToPosition(i);if(this._loading){this._loading=!1;this.onLoaded()}},e=>this._raiseError(e,!0))}},wijmo_1.Control._REFRESH_INTERVAL)}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_checkType(e,t,...s){if(null!=t)for(let i=0;i<s.length;i++){const r=s[i];null==t[r]&&wijmo_1.assert(!1,`Expected "${e}" but the value does not have "${r}".`)}}_getQuery(){return this._query||this._collection}}exports.Snapshot=Snapshot;class FirestoreErrorEventArgs extends wijmo_1.CancelEventArgs{constructor(e){super();this._error=e}get error(){return this._error}get message(){return this._error.message}}exports.FirestoreErrorEventArgs=FirestoreErrorEventArgs;class Sheet extends wijmo_1.CollectionView{constructor(e,t,s){super();this._loading=!1;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this._gSheet=e;this._title=t;this._id=s;this._getData();e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this._getData(!0)})}get googleSheet(){return this._gSheet}get title(){return this._title}load(e){this._getData(e)}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}get newItemIndex(){return-1}set newItemIndex(e){}insertAt(){}commitNew(){const e=this.currentAddItem;e&&this._saveItem(e);super.commitNew()}commitEdit(){const e=this.currentEditItem;e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)&&this._saveItem(e);super.commitEdit()}remove(e){if(e&&e!=this.currentAddItem){const t=this.sourceCollection.indexOf(e);wijmo_1.assert(t>-1,"Item not found.");const s=t+1;wijmo_1.assert(null!=this._id,"Sheet doesn't have an ID ? ");const i=this.googleSheet,r=i._getUrl(":batchUpdate");wijmo_1.httpRequest(r,{method:"POST",requestHeaders:i._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:s,endIndex:s+1}}}]},error:e=>this._handleError(e,!1)})}super.remove(e)}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._loading=!0;this._itemKeys=null;if(this.onLoading(new wijmo_1.CancelEventArgs)){const t=this.currentPosition,s=this.googleSheet,i=s._getUrl(`/values/${this.title}!2:2`);wijmo_1.httpRequest(i,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:i=>{const r=JSON.parse(i.responseText).values[0],o=s._getUrl("/values/"+this.title);wijmo_1.httpRequest(o,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:s=>{const i=JSON.parse(s.responseText).values;this.sourceCollection=this._parseData(i,r);e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._handleError(e,!1)})},error:e=>this._handleError(e,!1)})}},wijmo_1.Control._REFRESH_INTERVAL)}_parseData(e,t){const s=[];let i=e[0],r=!0;for(let e=0;e<i.length&&r;e++){const t=i[e];t&&wijmo_1.isString(t)&&i.indexOf(t)==e||(r=!1)}if(r)e.splice(0,1);else{const e=[];for(let t=0;t<i.length;t++)e.push(this._toSheetHeader(t));i=e}this._itemKeys=i;const o=[],n=this._gSheet.columnDataTypes,a=wijmo_1.DataType;i.forEach(e=>{let t=a.Object;n&&n.forEach(s=>{s.pattern.test(e)&&(t=s.dataType)});o.push(t)});e.forEach(e=>{const r={};i.forEach((s,i)=>{let n=e[i],h=t[i],l=o[i];l==a.Object&&wijmo_1.isNumber(n)&&wijmo_1.isString(h)&&h.length&&(l=a.Date);l!=a.Object&&(n=l==a.Date&&wijmo_1.isNumber(n)?new Date(86400*(n-25568)*1e3):wijmo_1.changeType(n,l));r[s]=n});s.push(r)});return s}_toSheetHeader(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)}_saveItem(e){const t=this.sourceCollection.indexOf(e);wijmo_1.assert(t>-1,"Item not found?");const s=[];this._itemKeys.forEach(t=>{const i=e[t];s.push(null!=i?i.toString():"")});let i=this.googleSheet,r=(t+2).toString(),o=`${this.title}!A${r}:Z${r}`,n=i._getUrl("/values/"+o);n+=(n.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";wijmo_1.httpRequest(n,{method:"PUT",requestHeaders:i._getRequestHeaders(),data:{range:o,values:[s]},error:e=>this._handleError(e,!0)})}_handleError(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)}}exports.Sheet=Sheet;class GoogleSheet{constructor(e,t,s){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new wijmo_1.ObservableArray;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.accessTokenChanged=new wijmo_1.Event;this._sheetId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,s);this._getSheetInfo()}get sheetId(){return this._sheetId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}}get columnDataTypes(){return this._colTypes}set columnDataTypes(e){this._colTypes=e}get sheets(){return this._sheets}getSheet(e){for(let t=0;t<this._sheets.length;t++){const s=this._sheets[t];if(s.title==e)return s}return null}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e)}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("sheets"==e&&wijmo_1.isArray(t)){t.forEach(e=>{const t=new Sheet(this,e);this.sheets.push(t)});return!0}return!1}_getUrl(e){let t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t}_getRequestHeaders(){const e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e}_getSheetInfo(){this._loading=!0;this.onLoading();wijmo_1.httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:e=>{const t=JSON.parse(e.responseText),s=t.sheets;this.sheets.length?this.sheets.forEach(e=>{for(let t=0;t<s.length;t++){const i=s[t].properties;if(i.title==e.title){e._id=i.sheetId;break}}wijmo_1.assert(null!=e._id,`Could not find sheet "${e.title}".`)}):t.sheets.forEach(e=>{const t=e.properties;if("GRID"==t.sheetType){const e=new Sheet(this,t.title,t.sheetId);this.sheets.push(e)}})},error:e=>{this.onError(new wijmo_1.RequestErrorEventArgs(e))},complete:e=>{this._loading=!1;this.onLoaded()}})}}exports.GoogleSheet=GoogleSheet;class Firestore{constructor(e,t,s){this._projectId="";this._collections=new wijmo_1.ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new wijmo_1.Event;this._projectId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,s)}get projectId(){return this._projectId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}}get idToken(){return this._idToken}set idToken(e){if(e!=this._idToken){this._idToken=wijmo_1.asString(e);if(this._idToken){const e="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;wijmo_1.httpRequest(e,{method:"POST",data:{requestUri:window.location.href,postBody:`id_token=${this._idToken}&providerId=google.com`,returnSecureToken:!0,returnIdpCredential:!0},success:e=>{const t=JSON.parse(e.responseText);this._fbToken=t.idToken;this.onAccessTokenChanged()},error:e=>{this._fbToken="";this.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}}get collections(){return this._collections}getCollection(e){const t=this._collections;for(let s=0;s<t.length;s++){const i=t[s];if(i.name==e)return i}return null}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("collections"==e&&wijmo_1.isArray(t)){t.forEach(e=>{const t=new Collection(this,e);this.collections.push(t)});return!0}return!1}}exports.Firestore=Firestore;function softGridFilter(){return wijmo_1._getModule("wijmo.grid.filter")}exports.softGridFilter=softGridFilter;class Collection extends wijmo_1.CollectionView{constructor(e,t,s){super();this._loading=!1;this._sortOnServer=!1;this._pageOnServer=!1;this._filterOnServer=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this._orderBy=[];this._fieldFilters=[];this._limit=0;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.hasPendingChangesChanged=new wijmo_1.Event;this._store=e;this._name=t;wijmo_1.copy(this,s);this.sortDescriptions.collectionChanged.addHandler(()=>{this.sortOnServer&&!this.hasPendingChanges&&this._getData(!0)});e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this.load()});this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get store(){return this._store}get name(){return this._name}get fields(){return this._fields}set fields(e){if(e!=this._fields){this._fields=wijmo_1.asArray(e);this._getData(!0)}}get limit(){return this._limit}set limit(e){if(e!=this._limit){this._limit=wijmo_1.asInt(e);this._getData(!0)}}get sortOnServer(){return this._sortOnServer}set sortOnServer(e){if(e!=this._sortOnServer){this._sortOnServer=wijmo_1.asBoolean(e);this._getData(!0)}}get pageOnServer(){return this._pageOnServer}set pageOnServer(e){if(e!=this._pageOnServer){this._pageOnServer=wijmo_1.asBoolean(e);this._getData(!0)}}get filterOnServer(){return this._filterOnServer}set filterOnServer(e){if(e!=this._filterOnServer){this._filterOnServer=wijmo_1.asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=wijmo_1.culture.FlexGridFilter);if(this._filterOnServer){const e=wijmo_1.culture.FlexGridFilter;e.stringOperators=e.numberOperators}else wijmo_1.culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(e){if(this.deferCommits){const t=[];this.itemsEdited.forEach(e=>{t.push({update:this._itemToDoc(e)})});this.itemsAdded.forEach(e=>{const s=this._itemToDoc(e);s.name=`projects/${this.store.projectId}/databases/(default)/documents/${this.name}/${this._generateID()}`;t.push({update:s})});this.itemsRemoved.forEach(e=>{t.push({delete:e.$META.name})});t.length&&wijmo_1.httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText);wijmo_1.httpRequest(this._getUrl(":commit"),{method:"POST",data:{writes:t,transaction:i.transaction},requestHeaders:this._getRequestHeaders(),success:e=>{this.clearChanges();this.load()},complete:t=>{wijmo_1.isFunction(e)&&e(t)},error:e=>this._raiseError(e,!0)})},error:e=>this._raiseError(e,!0)})}}cancelChanges(){if(this.deferCommits){this.clearChanges();this.load()}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}select(...e){this.fields=e;return this}orderBy(e,t=!0){e?this._orderBy.push(new wijmo_1.SortDescription(wijmo_1.asString(e),wijmo_1.asBoolean(t))):this._orderBy=[];this._getData(!1);return this}where(e,t,s){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";wijmo_1.assert(wijmo_1.isArray(s),"IN operator requires array values.");break;default:wijmo_1.assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(let s=0;s<this._fieldFilters.length;s++){const i=this._fieldFilters[s].fieldFilter;if(i.field.fieldPath==e&&i.op==t){this._fieldFilters.splice(s,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(s)}})}else this._fieldFilters=[];this._getData(!1);return this}getSubCollection(e,t,s){wijmo_1.assert(wijmo_1.isObject(e)&&null!=e.$META,"invalid parent item");const i=new Collection(this.store,t,s);i._parentItem=e;return i}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}get totalItemCount(){const e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0}set totalItemCount(e){this._totalCount=wijmo_1.asInt(e)}get pageCount(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1}get pageSize(){return this._pgSz}set pageSize(e){if(e!=this._pgSz){this._pgSz=wijmo_1.asInt(e);if(this.pageOnServer){this._pgIdx=wijmo_1.clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}}onPageChanging(e){super.onPageChanging(e);!e.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?e.cancel=!0:this._getData(!0));return!e.cancel}get newItemIndex(){return-1}set newItemIndex(e){}insertAt(){}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;if(e){const t=this._itemToDoc(e);wijmo_1.httpRequest(this._getUrl(),{method:"POST",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),success:t=>{const s=JSON.parse(t.responseText);this._saveDocName(s,e);wijmo_1.isNumber(this._totalCount)&&this._totalCount++},error:e=>this._raiseError(e,!0)})}}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._itemToDoc(e);wijmo_1.httpRequest(this._getUrl(t),{method:"PATCH",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),error:e=>this._raiseError(e,!0)})}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){const t=this._itemToDoc(e);wijmo_1.httpRequest(this._getUrl(t),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:e=>{wijmo_1.isNumber(this._totalCount)&&this._totalCount--},error:e=>this._raiseError(e,!0)})}super.remove(e)}updateFilterDefinition(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}}_getPageView(){return this.pageOnServer?this._view:super._getPageView()}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new wijmo_1.CancelEventArgs)){const t=this.currentPosition;wijmo_1.httpRequest(this._getUrl(":runQuery"),{method:"POST",data:this._getQuery(),requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText),r=this._parseData(i),o=this.pageSize;if(this.pageOnServer&&o&&r.length<o){const e=i[0].skippedResults||0;this._totalCount=e+r.length;if(0==r.length&&this.pageIndex>0){this.moveToLastPage();return}}this.sourceCollection=r;e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._raiseError(e,!1)})}},wijmo_1.Control._REFRESH_INTERVAL)}_getQuery(){const e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map(e=>({fieldPath:e}))});let t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});const s=[];t&&t.length&&t.forEach(e=>{const t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&s.push({field:t.field.fieldPath,asc:!0})});this._orderBy.forEach(e=>{s.push({field:e.property,asc:e.ascending})});!s.length&&this.sortOnServer&&this.sortDescriptions.forEach(e=>{s.push({field:e.property,asc:e.ascending})});s.length&&(e.orderBy=s.map(e=>({field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"})));const i=this.pageSize;if(this.pageOnServer&&i){e.limit=i;e.offset=i*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}}_parseData(e){const t=[];wijmo_1.isArray(e)&&e.forEach(e=>{const s=this._docToItem(e);s&&t.push(s)});return t}_raiseError(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)}_saveDocName(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1}_docToItem(e){e.name||(e=e.document);if(!e||!e.name)return null;const t={};this._saveDocName(e,t);for(const s in e.fields)t[s]=this._getDocValue(e.fields[s]);return t}_getDocValue(e){let t=null;for(const s in e){t=e[s];switch(s){case"integerValue":t=parseInt(t);break;case"timestampValue":t=new Date(t);break;case"mapValue":{const e={};for(const s in t.fields)e[s]=this._getDocValue(t.fields[s]);t=e;break}case"arrayValue":t=t.values?t.values.map(e=>this._getDocValue(e)):[]}}return t}_itemToDoc(e){const t={},s=e.$META,i=this.calculatedFields;s&&s.name&&(t.name=s.name);t.fields={};for(const s in e)i&&s in i||"$META"!=s&&(t.fields[s]=this._getValueObject(e[s]));return t}_getValueObject(e){const t={},s=wijmo_1.DataType;switch(wijmo_1.getType(e)){case s.String:t.stringValue=e;break;case s.Boolean:t.booleanValue=e;break;case s.Date:t.timestampValue=e.toJSON();break;case s.Number:e==Math.round(e)?t.integerValue=e.toString():t.doubleValue=e;break;case s.Array:t.arrayValue={values:e.map(e=>this._getValueObject(e))};break;case s.Object:{const s={};for(const t in e)s[t]=this._getValueObject(e[t]);t.mapValue={fields:s};break}default:wijmo_1.assert(!1,"failed to create value object.")}return t}_getRequestHeaders(){const e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e}_getUrl(e){const t="https://firestore.googleapis.com/v1/";if(wijmo_1.isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:`projects/${this.store.projectId}/databases/(default)/documents`)+e}_getQueryFilters(){const e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(let s=0;s<t.grid.columns.length;s++){const i=t.grid.columns[s],r=t.getColumnFilter(i,!1);if(r&&r.isActive){r.conditionFilter&&r.conditionFilter.isActive?this._getQueryConditionFilter(e,r.conditionFilter):r.valueFilter&&r.valueFilter.isActive&&this._getQueryValueFilter(e,r.valueFilter);break}}return e}_getQueryConditionFilter(e,t){const s=t.column.binding,i=this._getQuerySimpleFilter(t.condition1,s),r=this._getQuerySimpleFilter(t.condition2,s);i&&r&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[i,r]}}):i?e.push(i):r&&e.push(r)}_getQuerySimpleFilter(e,t){if(e.isActive){const s=softGridFilter().Operator;return e.operator==s.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null}_getFilterOperator(e){const t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}wijmo_1.assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")}_getQueryValueFilter(e,t){const s=t.column,i=s.dataMap,r=[];for(const e in t.showValues){let t=wijmo_1.changeType(e,s.dataType,s.format);i&&wijmo_1.isString(t)&&(t=i.getKeyValue(t));r.push(t);if(r.length>=10)break}r.length&&e.push({fieldFilter:{field:{fieldPath:s.binding},op:"IN",value:this._getValueObject(r)}})}}Collection._filterCulture=null;exports.Collection=Collection;wijmo_1._registerModule("wijmo.cloud",selfModule);
package/es2015-esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20261.48
3
+ * Wijmo Library 5.20261.52
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
13
 
14
- import{_getModule,ObservableArray,Event,EventArgs,isArray,asString,copy,httpRequest,Control,CollectionView,DataType,SortDescription,CancelEventArgs,RequestErrorEventArgs,assert,getType,clamp,changeType,culture,isObject,isString,isFunction,isNumber,asBoolean,asInt,asArray,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/wijmo.cloud";export class OAuth2{constructor(e,t,s,i){this.userChanged=new Event;this.error=new Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,s);else{const i=document.createElement("script");i.src="https://apis.google.com/js/api.js";i.onload=()=>this._gapiLoaded(e,t,s);document.head.appendChild(i)}copy(this,i)}get user(){const e=this._auth();if(e&&e.isSignedIn.get()){const t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null}get accessToken(){const e=this._gapi.auth.getToken();return e?e.access_token:null}get idToken(){const e=this._gapi.auth.getToken();return e?e.id_token:null}signIn(){this._auth().signIn().then(e=>{},e=>{"popup_closed_by_user"!=e&&this.onError(new OAuthError(e))})}signOut(){this._auth().signOut()}onUserChanged(e){this.userChanged.raise(this,e)}onError(e){this.error.raise(this,e)}_gapiLoaded(e,t,s){this._gapi=window.gapi;const i=this._gapi;assert(i,"Failed to load google gapi.");i.load("client:auth2",()=>{let r=s&&s.length?s.join(" "):"";r=r||"https://www.googleapis.com/auth/userinfo.email";i.client.init({apiKey:e,clientId:t,scope:r}).then(()=>{this._auth().isSignedIn.listen(()=>{this.onUserChanged()});this.onUserChanged()},e=>{this.onError(new OAuthError(e))})})}_auth(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null}}export class OAuthError extends EventArgs{constructor(e){super();this._error=e}get error(){return this._error}}export class Snapshot extends CollectionView{constructor(e,t){super();this._loading=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.hasPendingChangesChanged=new Event;this._checkType("CollectionReference",e,"firestore","doc","onSnapshot");this._collection=e;copy(this,t);this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get query(){return this._query}set query(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(){if(this.deferCommits&&this.hasPendingChanges){const e=this._collection.firestore.batch();this.itemsEdited.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.update(s,i)});this.itemsAdded.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.set(s,i)});this.itemsRemoved.forEach(t=>{const s=this._getItemDoc(t);e.delete(s)});e.commit().then(()=>{this.clearChanges();this._getData(!0)}).catch(e=>this._raiseError(e,!0))}}cancelChanges(){if(this.deferCommits){this.clearChanges();this._getData(!0)}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;e&&this._collection.add(this._getItemData(e)).catch(e=>this._raiseError(e,!0))}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._getItemDoc(e),s=this._getItemData(e);t.update(s).catch(e=>this._raiseError(e,!0))}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){this._getItemDoc(e).delete().catch(e=>this._raiseError(e,!0))}super.remove(e)}_raiseError(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getItemDoc(e){const t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)}_getItemData(e){const t={},s=this.calculatedFields;for(var i in e)s&&i in s||"$META"!=i&&(t[i]=e[i]);return t}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new CancelEventArgs)){this._unsubscribe&&this._unsubscribe();this._unsubscribe=this._getQuery().onSnapshot(t=>{const s=[],i=e||!this._loading?this.currentPosition:null;t.forEach(e=>{s.push(Object.assign({$META:{id:e.id}},e.data()))});this.sourceCollection=s;null!=i&&this.moveCurrentToPosition(i);if(this._loading){this._loading=!1;this.onLoaded()}},e=>this._raiseError(e,!0))}},Control._REFRESH_INTERVAL)}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_checkType(e,t,...s){if(null!=t)for(let i=0;i<s.length;i++){const r=s[i];null==t[r]&&assert(!1,`Expected "${e}" but the value does not have "${r}".`)}}_getQuery(){return this._query||this._collection}}export class FirestoreErrorEventArgs extends CancelEventArgs{constructor(e){super();this._error=e}get error(){return this._error}get message(){return this._error.message}}export class Sheet extends CollectionView{constructor(e,t,s){super();this._loading=!1;this.loading=new Event;this.loaded=new Event;this.error=new Event;this._gSheet=e;this._title=t;this._id=s;this._getData();e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this._getData(!0)})}get googleSheet(){return this._gSheet}get title(){return this._title}load(e){this._getData(e)}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}commitNew(){const e=this.currentAddItem;e&&this._saveItem(e);super.commitNew()}commitEdit(){const e=this.currentEditItem;e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)&&this._saveItem(e);super.commitEdit()}remove(e){if(e&&e!=this.currentAddItem){const t=this.sourceCollection.indexOf(e);assert(t>-1,"Item not found.");const s=t+1;assert(null!=this._id,"Sheet doesn't have an ID ? ");const i=this.googleSheet,r=i._getUrl(":batchUpdate");httpRequest(r,{method:"POST",requestHeaders:i._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:s,endIndex:s+1}}}]},error:e=>this._handleError(e,!1)})}super.remove(e)}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._loading=!0;this._itemKeys=null;if(this.onLoading(new CancelEventArgs)){const t=this.currentPosition,s=this.googleSheet,i=s._getUrl(`/values/${this.title}!2:2`);httpRequest(i,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:i=>{const r=JSON.parse(i.responseText).values[0],n=s._getUrl("/values/"+this.title);httpRequest(n,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:s=>{const i=JSON.parse(s.responseText).values;this.sourceCollection=this._parseData(i,r);e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._handleError(e,!1)})},error:e=>this._handleError(e,!1)})}},Control._REFRESH_INTERVAL)}_parseData(e,t){const s=[];let i=e[0],r=!0;for(let e=0;e<i.length&&r;e++){const t=i[e];t&&isString(t)&&i.indexOf(t)==e||(r=!1)}if(r)e.splice(0,1);else{const e=[];for(let t=0;t<i.length;t++)e.push(this._toSheetHeader(t));i=e}this._itemKeys=i;const n=[],o=this._gSheet.columnDataTypes,a=DataType;i.forEach(e=>{let t=a.Object;o&&o.forEach(s=>{s.pattern.test(e)&&(t=s.dataType)});n.push(t)});e.forEach(e=>{const r={};i.forEach((s,i)=>{let o=e[i],h=t[i],l=n[i];l==a.Object&&isNumber(o)&&isString(h)&&h.length&&(l=a.Date);l!=a.Object&&(o=l==a.Date&&isNumber(o)?new Date(86400*(o-25568)*1e3):changeType(o,l));r[s]=o});s.push(r)});return s}_toSheetHeader(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)}_saveItem(e){const t=this.sourceCollection.indexOf(e);assert(t>-1,"Item not found?");const s=[];this._itemKeys.forEach(t=>{const i=e[t];s.push(null!=i?i.toString():"")});let i=this.googleSheet,r=(t+2).toString(),n=`${this.title}!A${r}:Z${r}`,o=i._getUrl("/values/"+n);o+=(o.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";httpRequest(o,{method:"PUT",requestHeaders:i._getRequestHeaders(),data:{range:n,values:[s]},error:e=>this._handleError(e,!0)})}_handleError(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)}}export class GoogleSheet{constructor(e,t,s){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new ObservableArray;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.accessTokenChanged=new Event;this._sheetId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,s);this._getSheetInfo()}get sheetId(){return this._sheetId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}}get columnDataTypes(){return this._colTypes}set columnDataTypes(e){this._colTypes=e}get sheets(){return this._sheets}getSheet(e){for(let t=0;t<this._sheets.length;t++){const s=this._sheets[t];if(s.title==e)return s}return null}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e)}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("sheets"==e&&isArray(t)){t.forEach(e=>{const t=new Sheet(this,e);this.sheets.push(t)});return!0}return!1}_getUrl(e){let t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t}_getRequestHeaders(){const e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e}_getSheetInfo(){this._loading=!0;this.onLoading();httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:e=>{const t=JSON.parse(e.responseText),s=t.sheets;this.sheets.length?this.sheets.forEach(e=>{for(let t=0;t<s.length;t++){const i=s[t].properties;if(i.title==e.title){e._id=i.sheetId;break}}assert(null!=e._id,`Could not find sheet "${e.title}".`)}):t.sheets.forEach(e=>{const t=e.properties;if("GRID"==t.sheetType){const e=new Sheet(this,t.title,t.sheetId);this.sheets.push(e)}})},error:e=>{this.onError(new RequestErrorEventArgs(e))},complete:e=>{this._loading=!1;this.onLoaded()}})}}export class Firestore{constructor(e,t,s){this._projectId="";this._collections=new ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new Event;this._projectId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,s)}get projectId(){return this._projectId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}}get idToken(){return this._idToken}set idToken(e){if(e!=this._idToken){this._idToken=asString(e);if(this._idToken){const e="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;httpRequest(e,{method:"POST",data:{requestUri:window.location.href,postBody:`id_token=${this._idToken}&providerId=google.com`,returnSecureToken:!0,returnIdpCredential:!0},success:e=>{const t=JSON.parse(e.responseText);this._fbToken=t.idToken;this.onAccessTokenChanged()},error:e=>{this._fbToken="";this.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}}get collections(){return this._collections}getCollection(e){const t=this._collections;for(let s=0;s<t.length;s++){const i=t[s];if(i.name==e)return i}return null}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("collections"==e&&isArray(t)){t.forEach(e=>{const t=new Collection(this,e);this.collections.push(t)});return!0}return!1}}export function softGridFilter(){return _getModule("wijmo.grid.filter")}export class Collection extends CollectionView{constructor(e,t,s){super();this._loading=!1;this._sortOnServer=!1;this._pageOnServer=!1;this._filterOnServer=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this._orderBy=[];this._fieldFilters=[];this._limit=0;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.hasPendingChangesChanged=new Event;this._store=e;this._name=t;copy(this,s);this.sortDescriptions.collectionChanged.addHandler(()=>{this.sortOnServer&&!this.hasPendingChanges&&this._getData(!0)});e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this.load()});this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get store(){return this._store}get name(){return this._name}get fields(){return this._fields}set fields(e){if(e!=this._fields){this._fields=asArray(e);this._getData(!0)}}get limit(){return this._limit}set limit(e){if(e!=this._limit){this._limit=asInt(e);this._getData(!0)}}get sortOnServer(){return this._sortOnServer}set sortOnServer(e){if(e!=this._sortOnServer){this._sortOnServer=asBoolean(e);this._getData(!0)}}get pageOnServer(){return this._pageOnServer}set pageOnServer(e){if(e!=this._pageOnServer){this._pageOnServer=asBoolean(e);this._getData(!0)}}get filterOnServer(){return this._filterOnServer}set filterOnServer(e){if(e!=this._filterOnServer){this._filterOnServer=asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=culture.FlexGridFilter);if(this._filterOnServer){const e=culture.FlexGridFilter;e.stringOperators=e.numberOperators}else culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(e){if(this.deferCommits){const t=[];this.itemsEdited.forEach(e=>{t.push({update:this._itemToDoc(e)})});this.itemsAdded.forEach(e=>{const s=this._itemToDoc(e);s.name=`projects/${this.store.projectId}/databases/(default)/documents/${this.name}/${this._generateID()}`;t.push({update:s})});this.itemsRemoved.forEach(e=>{t.push({delete:e.$META.name})});t.length&&httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText);httpRequest(this._getUrl(":commit"),{method:"POST",data:{writes:t,transaction:i.transaction},requestHeaders:this._getRequestHeaders(),success:e=>{this.clearChanges();this.load()},complete:t=>{isFunction(e)&&e(t)},error:e=>this._raiseError(e,!0)})},error:e=>this._raiseError(e,!0)})}}cancelChanges(){if(this.deferCommits){this.clearChanges();this.load()}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}select(...e){this.fields=e;return this}orderBy(e,t=!0){e?this._orderBy.push(new SortDescription(asString(e),asBoolean(t))):this._orderBy=[];this._getData(!1);return this}where(e,t,s){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";assert(isArray(s),"IN operator requires array values.");break;default:assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(let s=0;s<this._fieldFilters.length;s++){const i=this._fieldFilters[s].fieldFilter;if(i.field.fieldPath==e&&i.op==t){this._fieldFilters.splice(s,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(s)}})}else this._fieldFilters=[];this._getData(!1);return this}getSubCollection(e,t,s){assert(isObject(e)&&null!=e.$META,"invalid parent item");const i=new Collection(this.store,t,s);i._parentItem=e;return i}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}get totalItemCount(){const e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0}set totalItemCount(e){this._totalCount=asInt(e)}get pageCount(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1}get pageSize(){return this._pgSz}set pageSize(e){if(e!=this._pgSz){this._pgSz=asInt(e);if(this.pageOnServer){this._pgIdx=clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}}onPageChanging(e){super.onPageChanging(e);!e.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?e.cancel=!0:this._getData(!0));return!e.cancel}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;if(e){const t=this._itemToDoc(e);httpRequest(this._getUrl(),{method:"POST",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),success:t=>{const s=JSON.parse(t.responseText);this._saveDocName(s,e);isNumber(this._totalCount)&&this._totalCount++},error:e=>this._raiseError(e,!0)})}}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._itemToDoc(e);httpRequest(this._getUrl(t),{method:"PATCH",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),error:e=>this._raiseError(e,!0)})}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){const t=this._itemToDoc(e);httpRequest(this._getUrl(t),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:e=>{isNumber(this._totalCount)&&this._totalCount--},error:e=>this._raiseError(e,!0)})}super.remove(e)}updateFilterDefinition(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}}_getPageView(){return this.pageOnServer?this._view:super._getPageView()}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new CancelEventArgs)){const t=this.currentPosition;httpRequest(this._getUrl(":runQuery"),{method:"POST",data:this._getQuery(),requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText),r=this._parseData(i),n=this.pageSize;if(this.pageOnServer&&n&&r.length<n){const e=i[0].skippedResults||0;this._totalCount=e+r.length;if(0==r.length&&this.pageIndex>0){this.moveToLastPage();return}}this.sourceCollection=r;e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._raiseError(e,!1)})}},Control._REFRESH_INTERVAL)}_getQuery(){const e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map(e=>({fieldPath:e}))});let t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});const s=[];t&&t.length&&t.forEach(e=>{const t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&s.push({field:t.field.fieldPath,asc:!0})});this._orderBy.forEach(e=>{s.push({field:e.property,asc:e.ascending})});!s.length&&this.sortOnServer&&this.sortDescriptions.forEach(e=>{s.push({field:e.property,asc:e.ascending})});s.length&&(e.orderBy=s.map(e=>({field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"})));const i=this.pageSize;if(this.pageOnServer&&i){e.limit=i;e.offset=i*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}}_parseData(e){const t=[];isArray(e)&&e.forEach(e=>{const s=this._docToItem(e);s&&t.push(s)});return t}_raiseError(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)}_saveDocName(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1}_docToItem(e){e.name||(e=e.document);if(!e||!e.name)return null;const t={};this._saveDocName(e,t);for(const s in e.fields)t[s]=this._getDocValue(e.fields[s]);return t}_getDocValue(e){let t=null;for(const s in e){t=e[s];switch(s){case"integerValue":t=parseInt(t);break;case"timestampValue":t=new Date(t);break;case"mapValue":{const e={};for(const s in t.fields)e[s]=this._getDocValue(t.fields[s]);t=e;break}case"arrayValue":t=t.values?t.values.map(e=>this._getDocValue(e)):[]}}return t}_itemToDoc(e){const t={},s=e.$META,i=this.calculatedFields;s&&s.name&&(t.name=s.name);t.fields={};for(const s in e)i&&s in i||"$META"!=s&&(t.fields[s]=this._getValueObject(e[s]));return t}_getValueObject(e){const t={},s=DataType;switch(getType(e)){case s.String:t.stringValue=e;break;case s.Boolean:t.booleanValue=e;break;case s.Date:t.timestampValue=e.toJSON();break;case s.Number:e==Math.round(e)?t.integerValue=e.toString():t.doubleValue=e;break;case s.Array:t.arrayValue={values:e.map(e=>this._getValueObject(e))};break;case s.Object:{const s={};for(const t in e)s[t]=this._getValueObject(e[t]);t.mapValue={fields:s};break}default:assert(!1,"failed to create value object.")}return t}_getRequestHeaders(){const e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e}_getUrl(e){const t="https://firestore.googleapis.com/v1/";if(isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:`projects/${this.store.projectId}/databases/(default)/documents`)+e}_getQueryFilters(){const e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(let s=0;s<t.grid.columns.length;s++){const i=t.grid.columns[s],r=t.getColumnFilter(i,!1);if(r&&r.isActive){r.conditionFilter&&r.conditionFilter.isActive?this._getQueryConditionFilter(e,r.conditionFilter):r.valueFilter&&r.valueFilter.isActive&&this._getQueryValueFilter(e,r.valueFilter);break}}return e}_getQueryConditionFilter(e,t){const s=t.column.binding,i=this._getQuerySimpleFilter(t.condition1,s),r=this._getQuerySimpleFilter(t.condition2,s);i&&r&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[i,r]}}):i?e.push(i):r&&e.push(r)}_getQuerySimpleFilter(e,t){if(e.isActive){const s=softGridFilter().Operator;return e.operator==s.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null}_getFilterOperator(e){const t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")}_getQueryValueFilter(e,t){const s=t.column,i=s.dataMap,r=[];for(const e in t.showValues){let t=changeType(e,s.dataType,s.format);i&&isString(t)&&(t=i.getKeyValue(t));r.push(t);if(r.length>=10)break}r.length&&e.push({fieldFilter:{field:{fieldPath:s.binding},op:"IN",value:this._getValueObject(r)}})}}Collection._filterCulture=null;_registerModule("wijmo.cloud",selfModule);
14
+ import{_getModule,ObservableArray,Event,EventArgs,isArray,asString,copy,httpRequest,Control,CollectionView,DataType,SortDescription,CancelEventArgs,RequestErrorEventArgs,assert,getType,clamp,changeType,culture,isObject,isString,isFunction,isNumber,asBoolean,asInt,asArray,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/wijmo.cloud";export class OAuth2{constructor(e,t,s,i){this.userChanged=new Event;this.error=new Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,s);else{const i=document.createElement("script");i.src="https://apis.google.com/js/api.js";i.onload=()=>this._gapiLoaded(e,t,s);document.head.appendChild(i)}copy(this,i)}get user(){const e=this._auth();if(e&&e.isSignedIn.get()){const t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null}get accessToken(){const e=this._gapi.auth.getToken();return e?e.access_token:null}get idToken(){const e=this._gapi.auth.getToken();return e?e.id_token:null}signIn(){this._auth().signIn().then(e=>{},e=>{"popup_closed_by_user"!=e&&this.onError(new OAuthError(e))})}signOut(){this._auth().signOut()}onUserChanged(e){this.userChanged.raise(this,e)}onError(e){this.error.raise(this,e)}_gapiLoaded(e,t,s){this._gapi=window.gapi;const i=this._gapi;assert(i,"Failed to load google gapi.");i.load("client:auth2",()=>{let r=s&&s.length?s.join(" "):"";r=r||"https://www.googleapis.com/auth/userinfo.email";i.client.init({apiKey:e,clientId:t,scope:r}).then(()=>{this._auth().isSignedIn.listen(()=>{this.onUserChanged()});this.onUserChanged()},e=>{this.onError(new OAuthError(e))})})}_auth(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null}}export class OAuthError extends EventArgs{constructor(e){super();this._error=e}get error(){return this._error}}export class Snapshot extends CollectionView{constructor(e,t){super();this._loading=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.hasPendingChangesChanged=new Event;this._checkType("CollectionReference",e,"firestore","doc","onSnapshot");this._collection=e;copy(this,t);this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get query(){return this._query}set query(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(){if(this.deferCommits&&this.hasPendingChanges){const e=this._collection.firestore.batch();this.itemsEdited.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.update(s,i)});this.itemsAdded.forEach(t=>{const s=this._getItemDoc(t),i=this._getItemData(t);e.set(s,i)});this.itemsRemoved.forEach(t=>{const s=this._getItemDoc(t);e.delete(s)});e.commit().then(()=>{this.clearChanges();this._getData(!0)}).catch(e=>this._raiseError(e,!0))}}cancelChanges(){if(this.deferCommits){this.clearChanges();this._getData(!0)}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}get newItemIndex(){return-1}set newItemIndex(e){}insertAt(){}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;e&&this._collection.add(this._getItemData(e)).catch(e=>this._raiseError(e,!0))}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._getItemDoc(e),s=this._getItemData(e);t.update(s).catch(e=>this._raiseError(e,!0))}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){this._getItemDoc(e).delete().catch(e=>this._raiseError(e,!0))}super.remove(e)}_raiseError(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getItemDoc(e){const t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)}_getItemData(e){const t={},s=this.calculatedFields;for(var i in e)s&&i in s||"$META"!=i&&(t[i]=e[i]);return t}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new CancelEventArgs)){this._unsubscribe&&this._unsubscribe();this._unsubscribe=this._getQuery().onSnapshot(t=>{const s=[],i=e||!this._loading?this.currentPosition:null;t.forEach(e=>{s.push(Object.assign({$META:{id:e.id}},e.data()))});this.sourceCollection=s;null!=i&&this.moveCurrentToPosition(i);if(this._loading){this._loading=!1;this.onLoaded()}},e=>this._raiseError(e,!0))}},Control._REFRESH_INTERVAL)}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_checkType(e,t,...s){if(null!=t)for(let i=0;i<s.length;i++){const r=s[i];null==t[r]&&assert(!1,`Expected "${e}" but the value does not have "${r}".`)}}_getQuery(){return this._query||this._collection}}export class FirestoreErrorEventArgs extends CancelEventArgs{constructor(e){super();this._error=e}get error(){return this._error}get message(){return this._error.message}}export class Sheet extends CollectionView{constructor(e,t,s){super();this._loading=!1;this.loading=new Event;this.loaded=new Event;this.error=new Event;this._gSheet=e;this._title=t;this._id=s;this._getData();e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this._getData(!0)})}get googleSheet(){return this._gSheet}get title(){return this._title}load(e){this._getData(e)}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}get newItemIndex(){return-1}set newItemIndex(e){}insertAt(){}commitNew(){const e=this.currentAddItem;e&&this._saveItem(e);super.commitNew()}commitEdit(){const e=this.currentEditItem;e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)&&this._saveItem(e);super.commitEdit()}remove(e){if(e&&e!=this.currentAddItem){const t=this.sourceCollection.indexOf(e);assert(t>-1,"Item not found.");const s=t+1;assert(null!=this._id,"Sheet doesn't have an ID ? ");const i=this.googleSheet,r=i._getUrl(":batchUpdate");httpRequest(r,{method:"POST",requestHeaders:i._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:s,endIndex:s+1}}}]},error:e=>this._handleError(e,!1)})}super.remove(e)}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._loading=!0;this._itemKeys=null;if(this.onLoading(new CancelEventArgs)){const t=this.currentPosition,s=this.googleSheet,i=s._getUrl(`/values/${this.title}!2:2`);httpRequest(i,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:i=>{const r=JSON.parse(i.responseText).values[0],n=s._getUrl("/values/"+this.title);httpRequest(n,{requestHeaders:s._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:s=>{const i=JSON.parse(s.responseText).values;this.sourceCollection=this._parseData(i,r);e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._handleError(e,!1)})},error:e=>this._handleError(e,!1)})}},Control._REFRESH_INTERVAL)}_parseData(e,t){const s=[];let i=e[0],r=!0;for(let e=0;e<i.length&&r;e++){const t=i[e];t&&isString(t)&&i.indexOf(t)==e||(r=!1)}if(r)e.splice(0,1);else{const e=[];for(let t=0;t<i.length;t++)e.push(this._toSheetHeader(t));i=e}this._itemKeys=i;const n=[],o=this._gSheet.columnDataTypes,a=DataType;i.forEach(e=>{let t=a.Object;o&&o.forEach(s=>{s.pattern.test(e)&&(t=s.dataType)});n.push(t)});e.forEach(e=>{const r={};i.forEach((s,i)=>{let o=e[i],h=t[i],l=n[i];l==a.Object&&isNumber(o)&&isString(h)&&h.length&&(l=a.Date);l!=a.Object&&(o=l==a.Date&&isNumber(o)?new Date(86400*(o-25568)*1e3):changeType(o,l));r[s]=o});s.push(r)});return s}_toSheetHeader(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)}_saveItem(e){const t=this.sourceCollection.indexOf(e);assert(t>-1,"Item not found?");const s=[];this._itemKeys.forEach(t=>{const i=e[t];s.push(null!=i?i.toString():"")});let i=this.googleSheet,r=(t+2).toString(),n=`${this.title}!A${r}:Z${r}`,o=i._getUrl("/values/"+n);o+=(o.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";httpRequest(o,{method:"PUT",requestHeaders:i._getRequestHeaders(),data:{range:n,values:[s]},error:e=>this._handleError(e,!0)})}_handleError(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)}}export class GoogleSheet{constructor(e,t,s){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new ObservableArray;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.accessTokenChanged=new Event;this._sheetId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,s);this._getSheetInfo()}get sheetId(){return this._sheetId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}}get columnDataTypes(){return this._colTypes}set columnDataTypes(e){this._colTypes=e}get sheets(){return this._sheets}getSheet(e){for(let t=0;t<this._sheets.length;t++){const s=this._sheets[t];if(s.title==e)return s}return null}get isLoading(){return this._loading}onLoading(e){this.loading.raise(this,e)}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("sheets"==e&&isArray(t)){t.forEach(e=>{const t=new Sheet(this,e);this.sheets.push(t)});return!0}return!1}_getUrl(e){let t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t}_getRequestHeaders(){const e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e}_getSheetInfo(){this._loading=!0;this.onLoading();httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:e=>{const t=JSON.parse(e.responseText),s=t.sheets;this.sheets.length?this.sheets.forEach(e=>{for(let t=0;t<s.length;t++){const i=s[t].properties;if(i.title==e.title){e._id=i.sheetId;break}}assert(null!=e._id,`Could not find sheet "${e.title}".`)}):t.sheets.forEach(e=>{const t=e.properties;if("GRID"==t.sheetType){const e=new Sheet(this,t.title,t.sheetId);this.sheets.push(e)}})},error:e=>{this.onError(new RequestErrorEventArgs(e))},complete:e=>{this._loading=!1;this.onLoaded()}})}}export class Firestore{constructor(e,t,s){this._projectId="";this._collections=new ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new Event;this._projectId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,s)}get projectId(){return this._projectId}get apiKey(){return this._apiKey}get accessToken(){return this._accessToken}set accessToken(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}}get idToken(){return this._idToken}set idToken(e){if(e!=this._idToken){this._idToken=asString(e);if(this._idToken){const e="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;httpRequest(e,{method:"POST",data:{requestUri:window.location.href,postBody:`id_token=${this._idToken}&providerId=google.com`,returnSecureToken:!0,returnIdpCredential:!0},success:e=>{const t=JSON.parse(e.responseText);this._fbToken=t.idToken;this.onAccessTokenChanged()},error:e=>{this._fbToken="";this.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}}get collections(){return this._collections}getCollection(e){const t=this._collections;for(let s=0;s<t.length;s++){const i=t[s];if(i.name==e)return i}return null}onAccessTokenChanged(e){this.accessTokenChanged.raise(this,e)}_copy(e,t){if("collections"==e&&isArray(t)){t.forEach(e=>{const t=new Collection(this,e);this.collections.push(t)});return!0}return!1}}export function softGridFilter(){return _getModule("wijmo.grid.filter")}export class Collection extends CollectionView{constructor(e,t,s){super();this._loading=!1;this._sortOnServer=!1;this._pageOnServer=!1;this._filterOnServer=!1;this._deferCommits=!1;this._hasPendingChanges=!1;this._orderBy=[];this._fieldFilters=[];this._limit=0;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.hasPendingChangesChanged=new Event;this._store=e;this._name=t;copy(this,s);this.sortDescriptions.collectionChanged.addHandler(()=>{this.sortOnServer&&!this.hasPendingChanges&&this._getData(!0)});e.accessTokenChanged.addHandler(()=>{e.accessToken&&!this.items.length&&this.load()});this.itemsEdited.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsAdded.collectionChanged.addHandler(this._updateHasChanges,this);this.itemsRemoved.collectionChanged.addHandler(this._updateHasChanges,this);this._getData()}get store(){return this._store}get name(){return this._name}get fields(){return this._fields}set fields(e){if(e!=this._fields){this._fields=asArray(e);this._getData(!0)}}get limit(){return this._limit}set limit(e){if(e!=this._limit){this._limit=asInt(e);this._getData(!0)}}get sortOnServer(){return this._sortOnServer}set sortOnServer(e){if(e!=this._sortOnServer){this._sortOnServer=asBoolean(e);this._getData(!0)}}get pageOnServer(){return this._pageOnServer}set pageOnServer(e){if(e!=this._pageOnServer){this._pageOnServer=asBoolean(e);this._getData(!0)}}get filterOnServer(){return this._filterOnServer}set filterOnServer(e){if(e!=this._filterOnServer){this._filterOnServer=asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=culture.FlexGridFilter);if(this._filterOnServer){const e=culture.FlexGridFilter;e.stringOperators=e.numberOperators}else culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}}get deferCommits(){return this._deferCommits}set deferCommits(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)}commitChanges(e){if(this.deferCommits){const t=[];this.itemsEdited.forEach(e=>{t.push({update:this._itemToDoc(e)})});this.itemsAdded.forEach(e=>{const s=this._itemToDoc(e);s.name=`projects/${this.store.projectId}/databases/(default)/documents/${this.name}/${this._generateID()}`;t.push({update:s})});this.itemsRemoved.forEach(e=>{t.push({delete:e.$META.name})});t.length&&httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText);httpRequest(this._getUrl(":commit"),{method:"POST",data:{writes:t,transaction:i.transaction},requestHeaders:this._getRequestHeaders(),success:e=>{this.clearChanges();this.load()},complete:t=>{isFunction(e)&&e(t)},error:e=>this._raiseError(e,!0)})},error:e=>this._raiseError(e,!0)})}}cancelChanges(){if(this.deferCommits){this.clearChanges();this.load()}}get hasPendingChanges(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)}get isLoading(){return this._loading}load(e){this._getData(e)}select(...e){this.fields=e;return this}orderBy(e,t=!0){e?this._orderBy.push(new SortDescription(asString(e),asBoolean(t))):this._orderBy=[];this._getData(!1);return this}where(e,t,s){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";assert(isArray(s),"IN operator requires array values.");break;default:assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(let s=0;s<this._fieldFilters.length;s++){const i=this._fieldFilters[s].fieldFilter;if(i.field.fieldPath==e&&i.op==t){this._fieldFilters.splice(s,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(s)}})}else this._fieldFilters=[];this._getData(!1);return this}getSubCollection(e,t,s){assert(isObject(e)&&null!=e.$META,"invalid parent item");const i=new Collection(this.store,t,s);i._parentItem=e;return i}onLoading(e){this.loading.raise(this,e);return!e.cancel}onLoaded(e){this.loaded.raise(this,e)}onError(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel}onHasPendingChangesChanged(e){this.hasPendingChangesChanged.raise(this,e)}get totalItemCount(){const e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0}set totalItemCount(e){this._totalCount=asInt(e)}get pageCount(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1}get pageSize(){return this._pgSz}set pageSize(e){if(e!=this._pgSz){this._pgSz=asInt(e);if(this.pageOnServer){this._pgIdx=clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}}onPageChanging(e){super.onPageChanging(e);!e.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?e.cancel=!0:this._getData(!0));return!e.cancel}get newItemIndex(){return-1}set newItemIndex(e){}insertAt(){}commitNew(){if(!this.deferCommits){const e=this.currentAddItem;if(e){const t=this._itemToDoc(e);httpRequest(this._getUrl(),{method:"POST",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),success:t=>{const s=JSON.parse(t.responseText);this._saveDocName(s,e);isNumber(this._totalCount)&&this._totalCount++},error:e=>this._raiseError(e,!0)})}}super.commitNew()}commitEdit(){if(!this.deferCommits){const e=this.currentEditItem;if(e&&!this.currentAddItem&&this._getChangedFields(e,this._edtClone)){const t=this._itemToDoc(e);httpRequest(this._getUrl(t),{method:"PATCH",data:{fields:t.fields},requestHeaders:this._getRequestHeaders(),error:e=>this._raiseError(e,!0)})}}super.commitEdit()}remove(e){if(!this.deferCommits&&e&&e!=this.currentAddItem){const t=this._itemToDoc(e);httpRequest(this._getUrl(t),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:e=>{isNumber(this._totalCount)&&this._totalCount--},error:e=>this._raiseError(e,!0)})}super.remove(e)}updateFilterDefinition(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}}_getPageView(){return this.pageOnServer?this._view:super._getPageView()}_generateID(){let e="";for(;e.length<20;)e+=Math.random().toString(36).substr(2,5);return e}_updateHasChanges(){const e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}}_getData(e){this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout(()=>{this._toGetData=null;this._loading=!0;if(this.onLoading(new CancelEventArgs)){const t=this.currentPosition;httpRequest(this._getUrl(":runQuery"),{method:"POST",data:this._getQuery(),requestHeaders:this._getRequestHeaders(),success:s=>{const i=JSON.parse(s.responseText),r=this._parseData(i),n=this.pageSize;if(this.pageOnServer&&n&&r.length<n){const e=i[0].skippedResults||0;this._totalCount=e+r.length;if(0==r.length&&this.pageIndex>0){this.moveToLastPage();return}}this.sourceCollection=r;e&&this.moveCurrentToPosition(t);this._loading=!1;this.onLoaded()},error:e=>this._raiseError(e,!1)})}},Control._REFRESH_INTERVAL)}_getQuery(){const e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map(e=>({fieldPath:e}))});let t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});const s=[];t&&t.length&&t.forEach(e=>{const t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&s.push({field:t.field.fieldPath,asc:!0})});this._orderBy.forEach(e=>{s.push({field:e.property,asc:e.ascending})});!s.length&&this.sortOnServer&&this.sortDescriptions.forEach(e=>{s.push({field:e.property,asc:e.ascending})});s.length&&(e.orderBy=s.map(e=>({field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"})));const i=this.pageSize;if(this.pageOnServer&&i){e.limit=i;e.offset=i*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}}_parseData(e){const t=[];isArray(e)&&e.forEach(e=>{const s=this._docToItem(e);s&&t.push(s)});return t}_raiseError(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)}_saveDocName(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1}_docToItem(e){e.name||(e=e.document);if(!e||!e.name)return null;const t={};this._saveDocName(e,t);for(const s in e.fields)t[s]=this._getDocValue(e.fields[s]);return t}_getDocValue(e){let t=null;for(const s in e){t=e[s];switch(s){case"integerValue":t=parseInt(t);break;case"timestampValue":t=new Date(t);break;case"mapValue":{const e={};for(const s in t.fields)e[s]=this._getDocValue(t.fields[s]);t=e;break}case"arrayValue":t=t.values?t.values.map(e=>this._getDocValue(e)):[]}}return t}_itemToDoc(e){const t={},s=e.$META,i=this.calculatedFields;s&&s.name&&(t.name=s.name);t.fields={};for(const s in e)i&&s in i||"$META"!=s&&(t.fields[s]=this._getValueObject(e[s]));return t}_getValueObject(e){const t={},s=DataType;switch(getType(e)){case s.String:t.stringValue=e;break;case s.Boolean:t.booleanValue=e;break;case s.Date:t.timestampValue=e.toJSON();break;case s.Number:e==Math.round(e)?t.integerValue=e.toString():t.doubleValue=e;break;case s.Array:t.arrayValue={values:e.map(e=>this._getValueObject(e))};break;case s.Object:{const s={};for(const t in e)s[t]=this._getValueObject(e[t]);t.mapValue={fields:s};break}default:assert(!1,"failed to create value object.")}return t}_getRequestHeaders(){const e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e}_getUrl(e){const t="https://firestore.googleapis.com/v1/";if(isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:`projects/${this.store.projectId}/databases/(default)/documents`)+e}_getQueryFilters(){const e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(let s=0;s<t.grid.columns.length;s++){const i=t.grid.columns[s],r=t.getColumnFilter(i,!1);if(r&&r.isActive){r.conditionFilter&&r.conditionFilter.isActive?this._getQueryConditionFilter(e,r.conditionFilter):r.valueFilter&&r.valueFilter.isActive&&this._getQueryValueFilter(e,r.valueFilter);break}}return e}_getQueryConditionFilter(e,t){const s=t.column.binding,i=this._getQuerySimpleFilter(t.condition1,s),r=this._getQuerySimpleFilter(t.condition2,s);i&&r&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[i,r]}}):i?e.push(i):r&&e.push(r)}_getQuerySimpleFilter(e,t){if(e.isActive){const s=softGridFilter().Operator;return e.operator==s.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null}_getFilterOperator(e){const t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")}_getQueryValueFilter(e,t){const s=t.column,i=s.dataMap,r=[];for(const e in t.showValues){let t=changeType(e,s.dataType,s.format);i&&isString(t)&&(t=i.getKeyValue(t));r.push(t);if(r.length>=10)break}r.length&&e.push({fieldFilter:{field:{fieldPath:s.binding},op:"IN",value:this._getValueObject(r)}})}}Collection._filterCulture=null;_registerModule("wijmo.cloud",selfModule);
package/es5-esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20261.48
3
+ * Wijmo Library 5.20261.52
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
13
 
14
- var __extends=this&&this.__extends||function(){var extendStatics=function(e,t){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};return function(e,t){extendStatics(e,t);function __(){this.constructor=e}e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++){t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)};import{_getModule,ObservableArray,Event,EventArgs,isArray,asString,copy,httpRequest,Control,CollectionView,DataType,SortDescription,CancelEventArgs,RequestErrorEventArgs,assert,getType,clamp,changeType,culture,isObject,isString,isFunction,isNumber,asBoolean,asInt,asArray,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/wijmo.cloud";var OAuth2=function(){function OAuth2(e,t,r,o){var n=this;this.userChanged=new Event;this.error=new Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,r);else{var i=document.createElement("script");i.src="https://apis.google.com/js/api.js";i.onload=function(){return n._gapiLoaded(e,t,r)};document.head.appendChild(i)}copy(this,o)}Object.defineProperty(OAuth2.prototype,"user",{get:function(){var e=this._auth();if(e&&e.isSignedIn.get()){var t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"accessToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.access_token:null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"idToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.id_token:null},enumerable:!0,configurable:!0});OAuth2.prototype.signIn=function(){var e=this;this._auth().signIn().then((function(e){}),(function(t){"popup_closed_by_user"!=t&&e.onError(new OAuthError(t))}))};OAuth2.prototype.signOut=function(){this._auth().signOut()};OAuth2.prototype.onUserChanged=function(e){this.userChanged.raise(this,e)};OAuth2.prototype.onError=function(e){this.error.raise(this,e)};OAuth2.prototype._gapiLoaded=function(e,t,r){var o=this;this._gapi=window.gapi;var n=this._gapi;assert(n,"Failed to load google gapi.");n.load("client:auth2",(function(){var i=r&&r.length?r.join(" "):"";i=i||"https://www.googleapis.com/auth/userinfo.email";n.client.init({apiKey:e,clientId:t,scope:i}).then((function(){o._auth().isSignedIn.listen((function(){o.onUserChanged()}));o.onUserChanged()}),(function(e){o.onError(new OAuthError(e))}))}))};OAuth2.prototype._auth=function(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null};return OAuth2}();export{OAuth2};var OAuthError=function(e){__extends(OAuthError,e);function OAuthError(t){var r=e.call(this)||this;r._error=t;return r}Object.defineProperty(OAuthError.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});return OAuthError}(EventArgs);export{OAuthError};var Snapshot=function(e){__extends(Snapshot,e);function Snapshot(t,r){var o=e.call(this)||this;o._loading=!1;o._deferCommits=!1;o._hasPendingChanges=!1;o.loading=new Event;o.loaded=new Event;o.error=new Event;o.hasPendingChangesChanged=new Event;o._checkType("CollectionReference",t,"firestore","doc","onSnapshot");o._collection=t;copy(o,r);o.itemsEdited.collectionChanged.addHandler(o._updateHasChanges,o);o.itemsAdded.collectionChanged.addHandler(o._updateHasChanges,o);o.itemsRemoved.collectionChanged.addHandler(o._updateHasChanges,o);o._getData();return o}Object.defineProperty(Snapshot.prototype,"query",{get:function(){return this._query},set:function(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Snapshot.prototype.commitChanges=function(){var e=this;if(this.deferCommits&&this.hasPendingChanges){var t=this._collection.firestore.batch();this.itemsEdited.forEach((function(r){var o=e._getItemDoc(r),n=e._getItemData(r);t.update(o,n)}));this.itemsAdded.forEach((function(r){var o=e._getItemDoc(r),n=e._getItemData(r);t.set(o,n)}));this.itemsRemoved.forEach((function(r){var o=e._getItemDoc(r);t.delete(o)}));t.commit().then((function(){e.clearChanges();e._getData(!0)})).catch((function(t){return e._raiseError(t,!0)}))}};Snapshot.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this._getData(!0)}};Object.defineProperty(Snapshot.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Snapshot.prototype.load=function(e){this._getData(e)};Snapshot.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Snapshot.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Snapshot.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Snapshot.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Snapshot.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var r=this.currentAddItem;r&&this._collection.add(this._getItemData(r)).catch((function(e){return t._raiseError(e,!0)}))}e.prototype.commitNew.call(this)};Snapshot.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var r=this.currentEditItem;if(r&&!this.currentAddItem&&this._getChangedFields(r,this._edtClone)){var o=this._getItemDoc(r),n=this._getItemData(r);o.update(n).catch((function(e){return t._raiseError(e,!0)}))}}e.prototype.commitEdit.call(this)};Snapshot.prototype.remove=function(t){var r=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){this._getItemDoc(t).delete().catch((function(e){return r._raiseError(e,!0)}))}e.prototype.remove.call(this,t)};Snapshot.prototype._raiseError=function(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)};Snapshot.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Snapshot.prototype._getItemDoc=function(e){var t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)};Snapshot.prototype._getItemData=function(e){var t={},r=this.calculatedFields;for(var o in e)r&&o in r||"$META"!=o&&(t[o]=e[o]);return t};Snapshot.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new CancelEventArgs)){t._unsubscribe&&t._unsubscribe();t._unsubscribe=t._getQuery().onSnapshot((function(r){var o=[],n=e||!t._loading?t.currentPosition:null;r.forEach((function(e){o.push(__assign({$META:{id:e.id}},e.data()))}));t.sourceCollection=o;null!=n&&t.moveCurrentToPosition(n);if(t._loading){t._loading=!1;t.onLoaded()}}),(function(e){return t._raiseError(e,!0)}))}}),Control._REFRESH_INTERVAL)};Snapshot.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Snapshot.prototype._checkType=function(e,t){for(var r=[],o=2;o<arguments.length;o++)r[o-2]=arguments[o];if(null!=t)for(var n=0;n<r.length;n++){var i=r[n];null==t[i]&&assert(!1,'Expected "'+e+'" but the value does not have "'+i+'".')}};Snapshot.prototype._getQuery=function(){return this._query||this._collection};return Snapshot}(CollectionView);export{Snapshot};var FirestoreErrorEventArgs=function(e){__extends(FirestoreErrorEventArgs,e);function FirestoreErrorEventArgs(t){var r=e.call(this)||this;r._error=t;return r}Object.defineProperty(FirestoreErrorEventArgs.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});Object.defineProperty(FirestoreErrorEventArgs.prototype,"message",{get:function(){return this._error.message},enumerable:!0,configurable:!0});return FirestoreErrorEventArgs}(CancelEventArgs);export{FirestoreErrorEventArgs};var Sheet=function(e){__extends(Sheet,e);function Sheet(t,r,o){var n=e.call(this)||this;n._loading=!1;n.loading=new Event;n.loaded=new Event;n.error=new Event;n._gSheet=t;n._title=r;n._id=o;n._getData();t.accessTokenChanged.addHandler((function(){t.accessToken&&!n.items.length&&n._getData(!0)}));return n}Object.defineProperty(Sheet.prototype,"googleSheet",{get:function(){return this._gSheet},enumerable:!0,configurable:!0});Object.defineProperty(Sheet.prototype,"title",{get:function(){return this._title},enumerable:!0,configurable:!0});Sheet.prototype.load=function(e){this._getData(e)};Object.defineProperty(Sheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Sheet.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Sheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Sheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Sheet.prototype.commitNew=function(){var t=this.currentAddItem;t&&this._saveItem(t);e.prototype.commitNew.call(this)};Sheet.prototype.commitEdit=function(){var t=this.currentEditItem;t&&!this.currentAddItem&&this._getChangedFields(t,this._edtClone)&&this._saveItem(t);e.prototype.commitEdit.call(this)};Sheet.prototype.remove=function(t){var r=this;if(t&&t!=this.currentAddItem){var o=this.sourceCollection.indexOf(t);assert(o>-1,"Item not found.");var n=o+1;assert(null!=this._id,"Sheet doesn't have an ID ? ");var i=this.googleSheet,s=i._getUrl(":batchUpdate");httpRequest(s,{method:"POST",requestHeaders:i._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:n,endIndex:n+1}}}]},error:function(e){return r._handleError(e,!1)}})}e.prototype.remove.call(this,t)};Sheet.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._loading=!0;t._itemKeys=null;if(t.onLoading(new CancelEventArgs)){var r=t.currentPosition,o=t.googleSheet,n=o._getUrl("/values/"+t.title+"!2:2");httpRequest(n,{requestHeaders:o._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:function(n){var i=JSON.parse(n.responseText).values[0],s=o._getUrl("/values/"+t.title);httpRequest(s,{requestHeaders:o._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:function(o){var n=JSON.parse(o.responseText).values;t.sourceCollection=t._parseData(n,i);e&&t.moveCurrentToPosition(r);t._loading=!1;t.onLoaded()},error:function(e){return t._handleError(e,!1)}})},error:function(e){return t._handleError(e,!1)}})}}),Control._REFRESH_INTERVAL)};Sheet.prototype._parseData=function(e,t){for(var r=[],o=e[0],n=!0,i=0;i<o.length&&n;i++){var s=o[i];s&&isString(s)&&o.indexOf(s)==i||(n=!1)}if(n)e.splice(0,1);else{var a=[];for(i=0;i<o.length;i++)a.push(this._toSheetHeader(i));o=a}this._itemKeys=o;var l=[],h=this._gSheet.columnDataTypes,c=DataType;o.forEach((function(e){var t=c.Object;h&&h.forEach((function(r){r.pattern.test(e)&&(t=r.dataType)}));l.push(t)}));e.forEach((function(e){var n={};o.forEach((function(r,o){var i=e[o],s=t[o],a=l[o];a==c.Object&&isNumber(i)&&isString(s)&&s.length&&(a=c.Date);a!=c.Object&&(i=a==c.Date&&isNumber(i)?new Date(86400*(i-25568)*1e3):changeType(i,a));n[r]=i}));r.push(n)}));return r};Sheet.prototype._toSheetHeader=function(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)};Sheet.prototype._saveItem=function(e){var t=this,r=this.sourceCollection.indexOf(e);assert(r>-1,"Item not found?");var o=[];this._itemKeys.forEach((function(t){var r=e[t];o.push(null!=r?r.toString():"")}));var n=this.googleSheet,i=(r+2).toString(),s=this.title+"!A"+i+":Z"+i,a=n._getUrl("/values/"+s);a+=(a.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";httpRequest(a,{method:"PUT",requestHeaders:n._getRequestHeaders(),data:{range:s,values:[o]},error:function(e){return t._handleError(e,!0)}})};Sheet.prototype._handleError=function(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)};return Sheet}(CollectionView);export{Sheet};var GoogleSheet=function(){function GoogleSheet(e,t,r){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new ObservableArray;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.accessTokenChanged=new Event;this._sheetId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,r);this._getSheetInfo()}Object.defineProperty(GoogleSheet.prototype,"sheetId",{get:function(){return this._sheetId},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"columnDataTypes",{get:function(){return this._colTypes},set:function(e){this._colTypes=e},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"sheets",{get:function(){return this._sheets},enumerable:!0,configurable:!0});GoogleSheet.prototype.getSheet=function(e){for(var t=0;t<this._sheets.length;t++){var r=this._sheets[t];if(r.title==e)return r}return null};Object.defineProperty(GoogleSheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});GoogleSheet.prototype.onLoading=function(e){this.loading.raise(this,e)};GoogleSheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};GoogleSheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};GoogleSheet.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};GoogleSheet.prototype._copy=function(e,t){var r=this;if("sheets"==e&&isArray(t)){t.forEach((function(e){var t=new Sheet(r,e);r.sheets.push(t)}));return!0}return!1};GoogleSheet.prototype._getUrl=function(e){var t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t};GoogleSheet.prototype._getRequestHeaders=function(){var e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e};GoogleSheet.prototype._getSheetInfo=function(){var e=this;this._loading=!0;this.onLoading();httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:function(t){var r=JSON.parse(t.responseText),o=r.sheets;e.sheets.length?e.sheets.forEach((function(e){for(var t=0;t<o.length;t++){var r=o[t].properties;if(r.title==e.title){e._id=r.sheetId;break}}assert(null!=e._id,'Could not find sheet "'+e.title+'".')})):r.sheets.forEach((function(t){var r=t.properties;if("GRID"==r.sheetType){var o=new Sheet(e,r.title,r.sheetId);e.sheets.push(o)}}))},error:function(t){e.onError(new RequestErrorEventArgs(t))},complete:function(t){e._loading=!1;e.onLoaded()}})};return GoogleSheet}();export{GoogleSheet};var Firestore=function(){function Firestore(e,t,r){this._projectId="";this._collections=new ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new Event;this._projectId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,r)}Object.defineProperty(Firestore.prototype,"projectId",{get:function(){return this._projectId},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"idToken",{get:function(){return this._idToken},set:function(e){var t=this;if(e!=this._idToken){this._idToken=asString(e);if(this._idToken){var r="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;httpRequest(r,{method:"POST",data:{requestUri:window.location.href,postBody:"id_token="+this._idToken+"&providerId=google.com",returnSecureToken:!0,returnIdpCredential:!0},success:function(e){var r=JSON.parse(e.responseText);t._fbToken=r.idToken;t.onAccessTokenChanged()},error:function(e){t._fbToken="";t.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"collections",{get:function(){return this._collections},enumerable:!0,configurable:!0});Firestore.prototype.getCollection=function(e){for(var t=this._collections,r=0;r<t.length;r++){var o=t[r];if(o.name==e)return o}return null};Firestore.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};Firestore.prototype._copy=function(e,t){var r=this;if("collections"==e&&isArray(t)){t.forEach((function(e){var t=new Collection(r,e);r.collections.push(t)}));return!0}return!1};return Firestore}();export{Firestore};export function softGridFilter(){return _getModule("wijmo.grid.filter")}var Collection=function(e){__extends(Collection,e);function Collection(t,r,o){var n=e.call(this)||this;n._loading=!1;n._sortOnServer=!1;n._pageOnServer=!1;n._filterOnServer=!1;n._deferCommits=!1;n._hasPendingChanges=!1;n._orderBy=[];n._fieldFilters=[];n._limit=0;n.loading=new Event;n.loaded=new Event;n.error=new Event;n.hasPendingChangesChanged=new Event;n._store=t;n._name=r;copy(n,o);n.sortDescriptions.collectionChanged.addHandler((function(){n.sortOnServer&&!n.hasPendingChanges&&n._getData(!0)}));t.accessTokenChanged.addHandler((function(){t.accessToken&&!n.items.length&&n.load()}));n.itemsEdited.collectionChanged.addHandler(n._updateHasChanges,n);n.itemsAdded.collectionChanged.addHandler(n._updateHasChanges,n);n.itemsRemoved.collectionChanged.addHandler(n._updateHasChanges,n);n._getData();return n}Object.defineProperty(Collection.prototype,"store",{get:function(){return this._store},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"fields",{get:function(){return this._fields},set:function(e){if(e!=this._fields){this._fields=asArray(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"limit",{get:function(){return this._limit},set:function(e){if(e!=this._limit){this._limit=asInt(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"sortOnServer",{get:function(){return this._sortOnServer},set:function(e){if(e!=this._sortOnServer){this._sortOnServer=asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageOnServer",{get:function(){return this._pageOnServer},set:function(e){if(e!=this._pageOnServer){this._pageOnServer=asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"filterOnServer",{get:function(){return this._filterOnServer},set:function(e){if(e!=this._filterOnServer){this._filterOnServer=asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=culture.FlexGridFilter);if(this._filterOnServer){var t=culture.FlexGridFilter;t.stringOperators=t.numberOperators}else culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Collection.prototype.commitChanges=function(e){var t=this;if(this.deferCommits){var r=[];this.itemsEdited.forEach((function(e){r.push({update:t._itemToDoc(e)})}));this.itemsAdded.forEach((function(e){var o=t._itemToDoc(e);o.name="projects/"+t.store.projectId+"/databases/(default)/documents/"+t.name+"/"+t._generateID();r.push({update:o})}));this.itemsRemoved.forEach((function(e){r.push({delete:e.$META.name})}));r.length&&httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:function(o){var n=JSON.parse(o.responseText);httpRequest(t._getUrl(":commit"),{method:"POST",data:{writes:r,transaction:n.transaction},requestHeaders:t._getRequestHeaders(),success:function(e){t.clearChanges();t.load()},complete:function(t){isFunction(e)&&e(t)},error:function(e){return t._raiseError(e,!0)}})},error:function(e){return t._raiseError(e,!0)}})}};Collection.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this.load()}};Object.defineProperty(Collection.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Collection.prototype.load=function(e){this._getData(e)};Collection.prototype.select=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.fields=e;return this};Collection.prototype.orderBy=function(e,t){void 0===t&&(t=!0);e?this._orderBy.push(new SortDescription(asString(e),asBoolean(t))):this._orderBy=[];this._getData(!1);return this};Collection.prototype.where=function(e,t,r){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";assert(isArray(r),"IN operator requires array values.");break;default:assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(var o=0;o<this._fieldFilters.length;o++){var n=this._fieldFilters[o].fieldFilter;if(n.field.fieldPath==e&&n.op==t){this._fieldFilters.splice(o,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(r)}})}else this._fieldFilters=[];this._getData(!1);return this};Collection.prototype.getSubCollection=function(e,t,r){assert(isObject(e)&&null!=e.$META,"invalid parent item");var o=new Collection(this.store,t,r);o._parentItem=e;return o};Collection.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Collection.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Collection.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Collection.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Object.defineProperty(Collection.prototype,"totalItemCount",{get:function(){var e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0},set:function(e){this._totalCount=asInt(e)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageCount",{get:function(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageSize",{get:function(){return this._pgSz},set:function(e){if(e!=this._pgSz){this._pgSz=asInt(e);if(this.pageOnServer){this._pgIdx=clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}},enumerable:!0,configurable:!0});Collection.prototype.onPageChanging=function(t){e.prototype.onPageChanging.call(this,t);!t.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?t.cancel=!0:this._getData(!0));return!t.cancel};Collection.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var r=this.currentAddItem;if(r){var o=this._itemToDoc(r);httpRequest(this._getUrl(),{method:"POST",data:{fields:o.fields},requestHeaders:this._getRequestHeaders(),success:function(e){var o=JSON.parse(e.responseText);t._saveDocName(o,r);isNumber(t._totalCount)&&t._totalCount++},error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitNew.call(this)};Collection.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var r=this.currentEditItem;if(r&&!this.currentAddItem&&this._getChangedFields(r,this._edtClone)){var o=this._itemToDoc(r);httpRequest(this._getUrl(o),{method:"PATCH",data:{fields:o.fields},requestHeaders:this._getRequestHeaders(),error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitEdit.call(this)};Collection.prototype.remove=function(t){var r=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){var o=this._itemToDoc(t);httpRequest(this._getUrl(o),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:function(e){isNumber(r._totalCount)&&r._totalCount--},error:function(e){return r._raiseError(e,!0)}})}e.prototype.remove.call(this,t)};Collection.prototype.updateFilterDefinition=function(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}};Collection.prototype._getPageView=function(){return this.pageOnServer?this._view:e.prototype._getPageView.call(this)};Collection.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Collection.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Collection.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new CancelEventArgs)){var r=t.currentPosition;httpRequest(t._getUrl(":runQuery"),{method:"POST",data:t._getQuery(),requestHeaders:t._getRequestHeaders(),success:function(o){var n=JSON.parse(o.responseText),i=t._parseData(n),s=t.pageSize;if(t.pageOnServer&&s&&i.length<s){var a=n[0].skippedResults||0;t._totalCount=a+i.length;if(0==i.length&&t.pageIndex>0){t.moveToLastPage();return}}t.sourceCollection=i;e&&t.moveCurrentToPosition(r);t._loading=!1;t.onLoaded()},error:function(e){return t._raiseError(e,!1)}})}}),Control._REFRESH_INTERVAL)};Collection.prototype._getQuery=function(){var e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map((function(e){return{fieldPath:e}}))});var t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});var r=[];t&&t.length&&t.forEach((function(e){var t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&r.push({field:t.field.fieldPath,asc:!0})}));this._orderBy.forEach((function(e){r.push({field:e.property,asc:e.ascending})}));!r.length&&this.sortOnServer&&this.sortDescriptions.forEach((function(e){r.push({field:e.property,asc:e.ascending})}));r.length&&(e.orderBy=r.map((function(e){return{field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"}})));var o=this.pageSize;if(this.pageOnServer&&o){e.limit=o;e.offset=o*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}};Collection.prototype._parseData=function(e){var t=this,r=[];isArray(e)&&e.forEach((function(e){var o=t._docToItem(e);o&&r.push(o)}));return r};Collection.prototype._raiseError=function(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)};Collection.prototype._saveDocName=function(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1};Collection.prototype._docToItem=function(e){e.name||(e=e.document);if(!e||!e.name)return null;var t={};this._saveDocName(e,t);for(var r in e.fields)t[r]=this._getDocValue(e.fields[r]);return t};Collection.prototype._getDocValue=function(e){var t=this,r=null;for(var o in e){r=e[o];switch(o){case"integerValue":r=parseInt(r);break;case"timestampValue":r=new Date(r);break;case"mapValue":var n={};for(var i in r.fields)n[i]=this._getDocValue(r.fields[i]);r=n;break;case"arrayValue":r=r.values?r.values.map((function(e){return t._getDocValue(e)})):[]}}return r};Collection.prototype._itemToDoc=function(e){var t={},r=e.$META,o=this.calculatedFields;r&&r.name&&(t.name=r.name);t.fields={};for(var n in e)o&&n in o||"$META"!=n&&(t.fields[n]=this._getValueObject(e[n]));return t};Collection.prototype._getValueObject=function(e){var t=this,r={},o=DataType;switch(getType(e)){case o.String:r.stringValue=e;break;case o.Boolean:r.booleanValue=e;break;case o.Date:r.timestampValue=e.toJSON();break;case o.Number:e==Math.round(e)?r.integerValue=e.toString():r.doubleValue=e;break;case o.Array:r.arrayValue={values:e.map((function(e){return t._getValueObject(e)}))};break;case o.Object:var n={};for(var i in e)n[i]=this._getValueObject(e[i]);r.mapValue={fields:n};break;default:assert(!1,"failed to create value object.")}return r};Collection.prototype._getRequestHeaders=function(){var e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e};Collection.prototype._getUrl=function(e){var t="https://firestore.googleapis.com/v1/";if(isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:"projects/"+this.store.projectId+"/databases/(default)/documents")+e};Collection.prototype._getQueryFilters=function(){var e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(var r=0;r<t.grid.columns.length;r++){var o=t.grid.columns[r],n=t.getColumnFilter(o,!1);if(n&&n.isActive){n.conditionFilter&&n.conditionFilter.isActive?this._getQueryConditionFilter(e,n.conditionFilter):n.valueFilter&&n.valueFilter.isActive&&this._getQueryValueFilter(e,n.valueFilter);break}}return e};Collection.prototype._getQueryConditionFilter=function(e,t){var r=t.column.binding,o=this._getQuerySimpleFilter(t.condition1,r),n=this._getQuerySimpleFilter(t.condition2,r);o&&n&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[o,n]}}):o?e.push(o):n&&e.push(n)};Collection.prototype._getQuerySimpleFilter=function(e,t){if(e.isActive){var r=softGridFilter().Operator;return e.operator==r.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null};Collection.prototype._getFilterOperator=function(e){var t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")};Collection.prototype._getQueryValueFilter=function(e,t){var r=t.column,o=r.dataMap,n=[];for(var i in t.showValues){var s=changeType(i,r.dataType,r.format);o&&isString(s)&&(s=o.getKeyValue(s));n.push(s);if(n.length>=10)break}n.length&&e.push({fieldFilter:{field:{fieldPath:r.binding},op:"IN",value:this._getValueObject(n)}})};Collection._filterCulture=null;return Collection}(CollectionView);export{Collection};_registerModule("wijmo.cloud",selfModule);
14
+ var __extends=this&&this.__extends||function(){var extendStatics=function(e,t){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};return function(e,t){extendStatics(e,t);function __(){this.constructor=e}e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++){t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)};import{_getModule,ObservableArray,Event,EventArgs,isArray,asString,copy,httpRequest,Control,CollectionView,DataType,SortDescription,CancelEventArgs,RequestErrorEventArgs,assert,getType,clamp,changeType,culture,isObject,isString,isFunction,isNumber,asBoolean,asInt,asArray,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/wijmo.cloud";var OAuth2=function(){function OAuth2(e,t,r,o){var n=this;this.userChanged=new Event;this.error=new Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,r);else{var i=document.createElement("script");i.src="https://apis.google.com/js/api.js";i.onload=function(){return n._gapiLoaded(e,t,r)};document.head.appendChild(i)}copy(this,o)}Object.defineProperty(OAuth2.prototype,"user",{get:function(){var e=this._auth();if(e&&e.isSignedIn.get()){var t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"accessToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.access_token:null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"idToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.id_token:null},enumerable:!0,configurable:!0});OAuth2.prototype.signIn=function(){var e=this;this._auth().signIn().then((function(e){}),(function(t){"popup_closed_by_user"!=t&&e.onError(new OAuthError(t))}))};OAuth2.prototype.signOut=function(){this._auth().signOut()};OAuth2.prototype.onUserChanged=function(e){this.userChanged.raise(this,e)};OAuth2.prototype.onError=function(e){this.error.raise(this,e)};OAuth2.prototype._gapiLoaded=function(e,t,r){var o=this;this._gapi=window.gapi;var n=this._gapi;assert(n,"Failed to load google gapi.");n.load("client:auth2",(function(){var i=r&&r.length?r.join(" "):"";i=i||"https://www.googleapis.com/auth/userinfo.email";n.client.init({apiKey:e,clientId:t,scope:i}).then((function(){o._auth().isSignedIn.listen((function(){o.onUserChanged()}));o.onUserChanged()}),(function(e){o.onError(new OAuthError(e))}))}))};OAuth2.prototype._auth=function(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null};return OAuth2}();export{OAuth2};var OAuthError=function(e){__extends(OAuthError,e);function OAuthError(t){var r=e.call(this)||this;r._error=t;return r}Object.defineProperty(OAuthError.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});return OAuthError}(EventArgs);export{OAuthError};var Snapshot=function(e){__extends(Snapshot,e);function Snapshot(t,r){var o=e.call(this)||this;o._loading=!1;o._deferCommits=!1;o._hasPendingChanges=!1;o.loading=new Event;o.loaded=new Event;o.error=new Event;o.hasPendingChangesChanged=new Event;o._checkType("CollectionReference",t,"firestore","doc","onSnapshot");o._collection=t;copy(o,r);o.itemsEdited.collectionChanged.addHandler(o._updateHasChanges,o);o.itemsAdded.collectionChanged.addHandler(o._updateHasChanges,o);o.itemsRemoved.collectionChanged.addHandler(o._updateHasChanges,o);o._getData();return o}Object.defineProperty(Snapshot.prototype,"query",{get:function(){return this._query},set:function(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Snapshot.prototype.commitChanges=function(){var e=this;if(this.deferCommits&&this.hasPendingChanges){var t=this._collection.firestore.batch();this.itemsEdited.forEach((function(r){var o=e._getItemDoc(r),n=e._getItemData(r);t.update(o,n)}));this.itemsAdded.forEach((function(r){var o=e._getItemDoc(r),n=e._getItemData(r);t.set(o,n)}));this.itemsRemoved.forEach((function(r){var o=e._getItemDoc(r);t.delete(o)}));t.commit().then((function(){e.clearChanges();e._getData(!0)})).catch((function(t){return e._raiseError(t,!0)}))}};Snapshot.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this._getData(!0)}};Object.defineProperty(Snapshot.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Snapshot.prototype.load=function(e){this._getData(e)};Snapshot.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Snapshot.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Snapshot.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Snapshot.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Object.defineProperty(Snapshot.prototype,"newItemIndex",{get:function(){return-1},set:function(e){},enumerable:!0,configurable:!0});Snapshot.prototype.insertAt=function(){};Snapshot.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var r=this.currentAddItem;r&&this._collection.add(this._getItemData(r)).catch((function(e){return t._raiseError(e,!0)}))}e.prototype.commitNew.call(this)};Snapshot.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var r=this.currentEditItem;if(r&&!this.currentAddItem&&this._getChangedFields(r,this._edtClone)){var o=this._getItemDoc(r),n=this._getItemData(r);o.update(n).catch((function(e){return t._raiseError(e,!0)}))}}e.prototype.commitEdit.call(this)};Snapshot.prototype.remove=function(t){var r=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){this._getItemDoc(t).delete().catch((function(e){return r._raiseError(e,!0)}))}e.prototype.remove.call(this,t)};Snapshot.prototype._raiseError=function(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)};Snapshot.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Snapshot.prototype._getItemDoc=function(e){var t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)};Snapshot.prototype._getItemData=function(e){var t={},r=this.calculatedFields;for(var o in e)r&&o in r||"$META"!=o&&(t[o]=e[o]);return t};Snapshot.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new CancelEventArgs)){t._unsubscribe&&t._unsubscribe();t._unsubscribe=t._getQuery().onSnapshot((function(r){var o=[],n=e||!t._loading?t.currentPosition:null;r.forEach((function(e){o.push(__assign({$META:{id:e.id}},e.data()))}));t.sourceCollection=o;null!=n&&t.moveCurrentToPosition(n);if(t._loading){t._loading=!1;t.onLoaded()}}),(function(e){return t._raiseError(e,!0)}))}}),Control._REFRESH_INTERVAL)};Snapshot.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Snapshot.prototype._checkType=function(e,t){for(var r=[],o=2;o<arguments.length;o++)r[o-2]=arguments[o];if(null!=t)for(var n=0;n<r.length;n++){var i=r[n];null==t[i]&&assert(!1,'Expected "'+e+'" but the value does not have "'+i+'".')}};Snapshot.prototype._getQuery=function(){return this._query||this._collection};return Snapshot}(CollectionView);export{Snapshot};var FirestoreErrorEventArgs=function(e){__extends(FirestoreErrorEventArgs,e);function FirestoreErrorEventArgs(t){var r=e.call(this)||this;r._error=t;return r}Object.defineProperty(FirestoreErrorEventArgs.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});Object.defineProperty(FirestoreErrorEventArgs.prototype,"message",{get:function(){return this._error.message},enumerable:!0,configurable:!0});return FirestoreErrorEventArgs}(CancelEventArgs);export{FirestoreErrorEventArgs};var Sheet=function(e){__extends(Sheet,e);function Sheet(t,r,o){var n=e.call(this)||this;n._loading=!1;n.loading=new Event;n.loaded=new Event;n.error=new Event;n._gSheet=t;n._title=r;n._id=o;n._getData();t.accessTokenChanged.addHandler((function(){t.accessToken&&!n.items.length&&n._getData(!0)}));return n}Object.defineProperty(Sheet.prototype,"googleSheet",{get:function(){return this._gSheet},enumerable:!0,configurable:!0});Object.defineProperty(Sheet.prototype,"title",{get:function(){return this._title},enumerable:!0,configurable:!0});Sheet.prototype.load=function(e){this._getData(e)};Object.defineProperty(Sheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Sheet.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Sheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Sheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Object.defineProperty(Sheet.prototype,"newItemIndex",{get:function(){return-1},set:function(e){},enumerable:!0,configurable:!0});Sheet.prototype.insertAt=function(){};Sheet.prototype.commitNew=function(){var t=this.currentAddItem;t&&this._saveItem(t);e.prototype.commitNew.call(this)};Sheet.prototype.commitEdit=function(){var t=this.currentEditItem;t&&!this.currentAddItem&&this._getChangedFields(t,this._edtClone)&&this._saveItem(t);e.prototype.commitEdit.call(this)};Sheet.prototype.remove=function(t){var r=this;if(t&&t!=this.currentAddItem){var o=this.sourceCollection.indexOf(t);assert(o>-1,"Item not found.");var n=o+1;assert(null!=this._id,"Sheet doesn't have an ID ? ");var i=this.googleSheet,s=i._getUrl(":batchUpdate");httpRequest(s,{method:"POST",requestHeaders:i._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:n,endIndex:n+1}}}]},error:function(e){return r._handleError(e,!1)}})}e.prototype.remove.call(this,t)};Sheet.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._loading=!0;t._itemKeys=null;if(t.onLoading(new CancelEventArgs)){var r=t.currentPosition,o=t.googleSheet,n=o._getUrl("/values/"+t.title+"!2:2");httpRequest(n,{requestHeaders:o._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:function(n){var i=JSON.parse(n.responseText).values[0],s=o._getUrl("/values/"+t.title);httpRequest(s,{requestHeaders:o._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:function(o){var n=JSON.parse(o.responseText).values;t.sourceCollection=t._parseData(n,i);e&&t.moveCurrentToPosition(r);t._loading=!1;t.onLoaded()},error:function(e){return t._handleError(e,!1)}})},error:function(e){return t._handleError(e,!1)}})}}),Control._REFRESH_INTERVAL)};Sheet.prototype._parseData=function(e,t){for(var r=[],o=e[0],n=!0,i=0;i<o.length&&n;i++){var s=o[i];s&&isString(s)&&o.indexOf(s)==i||(n=!1)}if(n)e.splice(0,1);else{var a=[];for(i=0;i<o.length;i++)a.push(this._toSheetHeader(i));o=a}this._itemKeys=o;var l=[],c=this._gSheet.columnDataTypes,h=DataType;o.forEach((function(e){var t=h.Object;c&&c.forEach((function(r){r.pattern.test(e)&&(t=r.dataType)}));l.push(t)}));e.forEach((function(e){var n={};o.forEach((function(r,o){var i=e[o],s=t[o],a=l[o];a==h.Object&&isNumber(i)&&isString(s)&&s.length&&(a=h.Date);a!=h.Object&&(i=a==h.Date&&isNumber(i)?new Date(86400*(i-25568)*1e3):changeType(i,a));n[r]=i}));r.push(n)}));return r};Sheet.prototype._toSheetHeader=function(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)};Sheet.prototype._saveItem=function(e){var t=this,r=this.sourceCollection.indexOf(e);assert(r>-1,"Item not found?");var o=[];this._itemKeys.forEach((function(t){var r=e[t];o.push(null!=r?r.toString():"")}));var n=this.googleSheet,i=(r+2).toString(),s=this.title+"!A"+i+":Z"+i,a=n._getUrl("/values/"+s);a+=(a.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";httpRequest(a,{method:"PUT",requestHeaders:n._getRequestHeaders(),data:{range:s,values:[o]},error:function(e){return t._handleError(e,!0)}})};Sheet.prototype._handleError=function(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)};return Sheet}(CollectionView);export{Sheet};var GoogleSheet=function(){function GoogleSheet(e,t,r){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new ObservableArray;this.loading=new Event;this.loaded=new Event;this.error=new Event;this.accessTokenChanged=new Event;this._sheetId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,r);this._getSheetInfo()}Object.defineProperty(GoogleSheet.prototype,"sheetId",{get:function(){return this._sheetId},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"columnDataTypes",{get:function(){return this._colTypes},set:function(e){this._colTypes=e},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"sheets",{get:function(){return this._sheets},enumerable:!0,configurable:!0});GoogleSheet.prototype.getSheet=function(e){for(var t=0;t<this._sheets.length;t++){var r=this._sheets[t];if(r.title==e)return r}return null};Object.defineProperty(GoogleSheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});GoogleSheet.prototype.onLoading=function(e){this.loading.raise(this,e)};GoogleSheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};GoogleSheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};GoogleSheet.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};GoogleSheet.prototype._copy=function(e,t){var r=this;if("sheets"==e&&isArray(t)){t.forEach((function(e){var t=new Sheet(r,e);r.sheets.push(t)}));return!0}return!1};GoogleSheet.prototype._getUrl=function(e){var t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t};GoogleSheet.prototype._getRequestHeaders=function(){var e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e};GoogleSheet.prototype._getSheetInfo=function(){var e=this;this._loading=!0;this.onLoading();httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:function(t){var r=JSON.parse(t.responseText),o=r.sheets;e.sheets.length?e.sheets.forEach((function(e){for(var t=0;t<o.length;t++){var r=o[t].properties;if(r.title==e.title){e._id=r.sheetId;break}}assert(null!=e._id,'Could not find sheet "'+e.title+'".')})):r.sheets.forEach((function(t){var r=t.properties;if("GRID"==r.sheetType){var o=new Sheet(e,r.title,r.sheetId);e.sheets.push(o)}}))},error:function(t){e.onError(new RequestErrorEventArgs(t))},complete:function(t){e._loading=!1;e.onLoaded()}})};return GoogleSheet}();export{GoogleSheet};var Firestore=function(){function Firestore(e,t,r){this._projectId="";this._collections=new ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new Event;this._projectId=asString(e,!1);this._apiKey=asString(t,!1);copy(this,r)}Object.defineProperty(Firestore.prototype,"projectId",{get:function(){return this._projectId},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"idToken",{get:function(){return this._idToken},set:function(e){var t=this;if(e!=this._idToken){this._idToken=asString(e);if(this._idToken){var r="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;httpRequest(r,{method:"POST",data:{requestUri:window.location.href,postBody:"id_token="+this._idToken+"&providerId=google.com",returnSecureToken:!0,returnIdpCredential:!0},success:function(e){var r=JSON.parse(e.responseText);t._fbToken=r.idToken;t.onAccessTokenChanged()},error:function(e){t._fbToken="";t.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"collections",{get:function(){return this._collections},enumerable:!0,configurable:!0});Firestore.prototype.getCollection=function(e){for(var t=this._collections,r=0;r<t.length;r++){var o=t[r];if(o.name==e)return o}return null};Firestore.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};Firestore.prototype._copy=function(e,t){var r=this;if("collections"==e&&isArray(t)){t.forEach((function(e){var t=new Collection(r,e);r.collections.push(t)}));return!0}return!1};return Firestore}();export{Firestore};export function softGridFilter(){return _getModule("wijmo.grid.filter")}var Collection=function(e){__extends(Collection,e);function Collection(t,r,o){var n=e.call(this)||this;n._loading=!1;n._sortOnServer=!1;n._pageOnServer=!1;n._filterOnServer=!1;n._deferCommits=!1;n._hasPendingChanges=!1;n._orderBy=[];n._fieldFilters=[];n._limit=0;n.loading=new Event;n.loaded=new Event;n.error=new Event;n.hasPendingChangesChanged=new Event;n._store=t;n._name=r;copy(n,o);n.sortDescriptions.collectionChanged.addHandler((function(){n.sortOnServer&&!n.hasPendingChanges&&n._getData(!0)}));t.accessTokenChanged.addHandler((function(){t.accessToken&&!n.items.length&&n.load()}));n.itemsEdited.collectionChanged.addHandler(n._updateHasChanges,n);n.itemsAdded.collectionChanged.addHandler(n._updateHasChanges,n);n.itemsRemoved.collectionChanged.addHandler(n._updateHasChanges,n);n._getData();return n}Object.defineProperty(Collection.prototype,"store",{get:function(){return this._store},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"fields",{get:function(){return this._fields},set:function(e){if(e!=this._fields){this._fields=asArray(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"limit",{get:function(){return this._limit},set:function(e){if(e!=this._limit){this._limit=asInt(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"sortOnServer",{get:function(){return this._sortOnServer},set:function(e){if(e!=this._sortOnServer){this._sortOnServer=asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageOnServer",{get:function(){return this._pageOnServer},set:function(e){if(e!=this._pageOnServer){this._pageOnServer=asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"filterOnServer",{get:function(){return this._filterOnServer},set:function(e){if(e!=this._filterOnServer){this._filterOnServer=asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=culture.FlexGridFilter);if(this._filterOnServer){var t=culture.FlexGridFilter;t.stringOperators=t.numberOperators}else culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Collection.prototype.commitChanges=function(e){var t=this;if(this.deferCommits){var r=[];this.itemsEdited.forEach((function(e){r.push({update:t._itemToDoc(e)})}));this.itemsAdded.forEach((function(e){var o=t._itemToDoc(e);o.name="projects/"+t.store.projectId+"/databases/(default)/documents/"+t.name+"/"+t._generateID();r.push({update:o})}));this.itemsRemoved.forEach((function(e){r.push({delete:e.$META.name})}));r.length&&httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:function(o){var n=JSON.parse(o.responseText);httpRequest(t._getUrl(":commit"),{method:"POST",data:{writes:r,transaction:n.transaction},requestHeaders:t._getRequestHeaders(),success:function(e){t.clearChanges();t.load()},complete:function(t){isFunction(e)&&e(t)},error:function(e){return t._raiseError(e,!0)}})},error:function(e){return t._raiseError(e,!0)}})}};Collection.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this.load()}};Object.defineProperty(Collection.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Collection.prototype.load=function(e){this._getData(e)};Collection.prototype.select=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.fields=e;return this};Collection.prototype.orderBy=function(e,t){void 0===t&&(t=!0);e?this._orderBy.push(new SortDescription(asString(e),asBoolean(t))):this._orderBy=[];this._getData(!1);return this};Collection.prototype.where=function(e,t,r){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";assert(isArray(r),"IN operator requires array values.");break;default:assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(var o=0;o<this._fieldFilters.length;o++){var n=this._fieldFilters[o].fieldFilter;if(n.field.fieldPath==e&&n.op==t){this._fieldFilters.splice(o,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(r)}})}else this._fieldFilters=[];this._getData(!1);return this};Collection.prototype.getSubCollection=function(e,t,r){assert(isObject(e)&&null!=e.$META,"invalid parent item");var o=new Collection(this.store,t,r);o._parentItem=e;return o};Collection.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Collection.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Collection.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Collection.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Object.defineProperty(Collection.prototype,"totalItemCount",{get:function(){var e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0},set:function(e){this._totalCount=asInt(e)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageCount",{get:function(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageSize",{get:function(){return this._pgSz},set:function(e){if(e!=this._pgSz){this._pgSz=asInt(e);if(this.pageOnServer){this._pgIdx=clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}},enumerable:!0,configurable:!0});Collection.prototype.onPageChanging=function(t){e.prototype.onPageChanging.call(this,t);!t.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?t.cancel=!0:this._getData(!0));return!t.cancel};Object.defineProperty(Collection.prototype,"newItemIndex",{get:function(){return-1},set:function(e){},enumerable:!0,configurable:!0});Collection.prototype.insertAt=function(){};Collection.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var r=this.currentAddItem;if(r){var o=this._itemToDoc(r);httpRequest(this._getUrl(),{method:"POST",data:{fields:o.fields},requestHeaders:this._getRequestHeaders(),success:function(e){var o=JSON.parse(e.responseText);t._saveDocName(o,r);isNumber(t._totalCount)&&t._totalCount++},error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitNew.call(this)};Collection.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var r=this.currentEditItem;if(r&&!this.currentAddItem&&this._getChangedFields(r,this._edtClone)){var o=this._itemToDoc(r);httpRequest(this._getUrl(o),{method:"PATCH",data:{fields:o.fields},requestHeaders:this._getRequestHeaders(),error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitEdit.call(this)};Collection.prototype.remove=function(t){var r=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){var o=this._itemToDoc(t);httpRequest(this._getUrl(o),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:function(e){isNumber(r._totalCount)&&r._totalCount--},error:function(e){return r._raiseError(e,!0)}})}e.prototype.remove.call(this,t)};Collection.prototype.updateFilterDefinition=function(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}};Collection.prototype._getPageView=function(){return this.pageOnServer?this._view:e.prototype._getPageView.call(this)};Collection.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Collection.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Collection.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new CancelEventArgs)){var r=t.currentPosition;httpRequest(t._getUrl(":runQuery"),{method:"POST",data:t._getQuery(),requestHeaders:t._getRequestHeaders(),success:function(o){var n=JSON.parse(o.responseText),i=t._parseData(n),s=t.pageSize;if(t.pageOnServer&&s&&i.length<s){var a=n[0].skippedResults||0;t._totalCount=a+i.length;if(0==i.length&&t.pageIndex>0){t.moveToLastPage();return}}t.sourceCollection=i;e&&t.moveCurrentToPosition(r);t._loading=!1;t.onLoaded()},error:function(e){return t._raiseError(e,!1)}})}}),Control._REFRESH_INTERVAL)};Collection.prototype._getQuery=function(){var e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map((function(e){return{fieldPath:e}}))});var t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});var r=[];t&&t.length&&t.forEach((function(e){var t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&r.push({field:t.field.fieldPath,asc:!0})}));this._orderBy.forEach((function(e){r.push({field:e.property,asc:e.ascending})}));!r.length&&this.sortOnServer&&this.sortDescriptions.forEach((function(e){r.push({field:e.property,asc:e.ascending})}));r.length&&(e.orderBy=r.map((function(e){return{field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"}})));var o=this.pageSize;if(this.pageOnServer&&o){e.limit=o;e.offset=o*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}};Collection.prototype._parseData=function(e){var t=this,r=[];isArray(e)&&e.forEach((function(e){var o=t._docToItem(e);o&&r.push(o)}));return r};Collection.prototype._raiseError=function(e,t){this.onError(new RequestErrorEventArgs(e));t&&this._getData(!0)};Collection.prototype._saveDocName=function(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1};Collection.prototype._docToItem=function(e){e.name||(e=e.document);if(!e||!e.name)return null;var t={};this._saveDocName(e,t);for(var r in e.fields)t[r]=this._getDocValue(e.fields[r]);return t};Collection.prototype._getDocValue=function(e){var t=this,r=null;for(var o in e){r=e[o];switch(o){case"integerValue":r=parseInt(r);break;case"timestampValue":r=new Date(r);break;case"mapValue":var n={};for(var i in r.fields)n[i]=this._getDocValue(r.fields[i]);r=n;break;case"arrayValue":r=r.values?r.values.map((function(e){return t._getDocValue(e)})):[]}}return r};Collection.prototype._itemToDoc=function(e){var t={},r=e.$META,o=this.calculatedFields;r&&r.name&&(t.name=r.name);t.fields={};for(var n in e)o&&n in o||"$META"!=n&&(t.fields[n]=this._getValueObject(e[n]));return t};Collection.prototype._getValueObject=function(e){var t=this,r={},o=DataType;switch(getType(e)){case o.String:r.stringValue=e;break;case o.Boolean:r.booleanValue=e;break;case o.Date:r.timestampValue=e.toJSON();break;case o.Number:e==Math.round(e)?r.integerValue=e.toString():r.doubleValue=e;break;case o.Array:r.arrayValue={values:e.map((function(e){return t._getValueObject(e)}))};break;case o.Object:var n={};for(var i in e)n[i]=this._getValueObject(e[i]);r.mapValue={fields:n};break;default:assert(!1,"failed to create value object.")}return r};Collection.prototype._getRequestHeaders=function(){var e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e};Collection.prototype._getUrl=function(e){var t="https://firestore.googleapis.com/v1/";if(isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:"projects/"+this.store.projectId+"/databases/(default)/documents")+e};Collection.prototype._getQueryFilters=function(){var e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(var r=0;r<t.grid.columns.length;r++){var o=t.grid.columns[r],n=t.getColumnFilter(o,!1);if(n&&n.isActive){n.conditionFilter&&n.conditionFilter.isActive?this._getQueryConditionFilter(e,n.conditionFilter):n.valueFilter&&n.valueFilter.isActive&&this._getQueryValueFilter(e,n.valueFilter);break}}return e};Collection.prototype._getQueryConditionFilter=function(e,t){var r=t.column.binding,o=this._getQuerySimpleFilter(t.condition1,r),n=this._getQuerySimpleFilter(t.condition2,r);o&&n&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[o,n]}}):o?e.push(o):n&&e.push(n)};Collection.prototype._getQuerySimpleFilter=function(e,t){if(e.isActive){var r=softGridFilter().Operator;return e.operator==r.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null};Collection.prototype._getFilterOperator=function(e){var t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")};Collection.prototype._getQueryValueFilter=function(e,t){var r=t.column,o=r.dataMap,n=[];for(var i in t.showValues){var s=changeType(i,r.dataType,r.format);o&&isString(s)&&(s=o.getKeyValue(s));n.push(s);if(n.length>=10)break}n.length&&e.push({fieldFilter:{field:{fieldPath:r.binding},op:"IN",value:this._getValueObject(n)}})};Collection._filterCulture=null;return Collection}(CollectionView);export{Collection};_registerModule("wijmo.cloud",selfModule);
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20261.48
3
+ * Wijmo Library 5.20261.52
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -354,6 +354,8 @@ export declare class Snapshot extends CollectionView {
354
354
  * Raises the {@link hasPendingChangesChanged} event.
355
355
  */
356
356
  onHasPendingChangesChanged(e?: EventArgs): void;
357
+ newItemIndex: number;
358
+ insertAt(): void;
357
359
  /**
358
360
  * Override {@link commitNew} to add the new item to the database.
359
361
  */
@@ -485,6 +487,8 @@ export declare class Sheet extends CollectionView {
485
487
  * @param e {@link RequestErrorEventArgs} that contains information about the error.
486
488
  */
487
489
  onError(e: RequestErrorEventArgs): boolean;
490
+ newItemIndex: number;
491
+ insertAt(): void;
488
492
  /**
489
493
  * Override {@link commitNew} to add the new item to the database.
490
494
  */
@@ -1155,6 +1159,8 @@ export declare class Collection extends CollectionView {
1155
1159
  * @param e {@link PageChangingEventArgs} that contains the event data.
1156
1160
  */
1157
1161
  onPageChanging(e: PageChangingEventArgs): boolean;
1162
+ newItemIndex: number;
1163
+ insertAt(): void;
1158
1164
  /**
1159
1165
  * Override {@link commitNew} to add the new item to the database.
1160
1166
  */
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20261.48
3
+ * Wijmo Library 5.20261.52
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
13
 
14
- "use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(e,t){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])})(e,t)};return function(e,t){extendStatics(e,t);function __(){this.constructor=e}e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,o=1,r=arguments.length;o<r;o++){t=arguments[o];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e}).apply(this,arguments)},__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.hasOwnProperty.call(e,o)&&(t[o]=e[o]);t.default=e;return t};Object.defineProperty(exports,"__esModule",{value:!0});var wijmo_1=require("@grapecity/wijmo"),selfModule=__importStar(require("@grapecity/wijmo.cloud")),OAuth2=function(){function OAuth2(e,t,o,r){var i=this;this.userChanged=new wijmo_1.Event;this.error=new wijmo_1.Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,o);else{var n=document.createElement("script");n.src="https://apis.google.com/js/api.js";n.onload=function(){return i._gapiLoaded(e,t,o)};document.head.appendChild(n)}wijmo_1.copy(this,r)}Object.defineProperty(OAuth2.prototype,"user",{get:function(){var e=this._auth();if(e&&e.isSignedIn.get()){var t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"accessToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.access_token:null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"idToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.id_token:null},enumerable:!0,configurable:!0});OAuth2.prototype.signIn=function(){var e=this;this._auth().signIn().then((function(e){}),(function(t){"popup_closed_by_user"!=t&&e.onError(new OAuthError(t))}))};OAuth2.prototype.signOut=function(){this._auth().signOut()};OAuth2.prototype.onUserChanged=function(e){this.userChanged.raise(this,e)};OAuth2.prototype.onError=function(e){this.error.raise(this,e)};OAuth2.prototype._gapiLoaded=function(e,t,o){var r=this;this._gapi=window.gapi;var i=this._gapi;wijmo_1.assert(i,"Failed to load google gapi.");i.load("client:auth2",(function(){var n=o&&o.length?o.join(" "):"";n=n||"https://www.googleapis.com/auth/userinfo.email";i.client.init({apiKey:e,clientId:t,scope:n}).then((function(){r._auth().isSignedIn.listen((function(){r.onUserChanged()}));r.onUserChanged()}),(function(e){r.onError(new OAuthError(e))}))}))};OAuth2.prototype._auth=function(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null};return OAuth2}();exports.OAuth2=OAuth2;var OAuthError=function(e){__extends(OAuthError,e);function OAuthError(t){var o=e.call(this)||this;o._error=t;return o}Object.defineProperty(OAuthError.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});return OAuthError}(wijmo_1.EventArgs);exports.OAuthError=OAuthError;var Snapshot=function(e){__extends(Snapshot,e);function Snapshot(t,o){var r=e.call(this)||this;r._loading=!1;r._deferCommits=!1;r._hasPendingChanges=!1;r.loading=new wijmo_1.Event;r.loaded=new wijmo_1.Event;r.error=new wijmo_1.Event;r.hasPendingChangesChanged=new wijmo_1.Event;r._checkType("CollectionReference",t,"firestore","doc","onSnapshot");r._collection=t;wijmo_1.copy(r,o);r.itemsEdited.collectionChanged.addHandler(r._updateHasChanges,r);r.itemsAdded.collectionChanged.addHandler(r._updateHasChanges,r);r.itemsRemoved.collectionChanged.addHandler(r._updateHasChanges,r);r._getData();return r}Object.defineProperty(Snapshot.prototype,"query",{get:function(){return this._query},set:function(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Snapshot.prototype.commitChanges=function(){var e=this;if(this.deferCommits&&this.hasPendingChanges){var t=this._collection.firestore.batch();this.itemsEdited.forEach((function(o){var r=e._getItemDoc(o),i=e._getItemData(o);t.update(r,i)}));this.itemsAdded.forEach((function(o){var r=e._getItemDoc(o),i=e._getItemData(o);t.set(r,i)}));this.itemsRemoved.forEach((function(o){var r=e._getItemDoc(o);t.delete(r)}));t.commit().then((function(){e.clearChanges();e._getData(!0)})).catch((function(t){return e._raiseError(t,!0)}))}};Snapshot.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this._getData(!0)}};Object.defineProperty(Snapshot.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Snapshot.prototype.load=function(e){this._getData(e)};Snapshot.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Snapshot.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Snapshot.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Snapshot.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Snapshot.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var o=this.currentAddItem;o&&this._collection.add(this._getItemData(o)).catch((function(e){return t._raiseError(e,!0)}))}e.prototype.commitNew.call(this)};Snapshot.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var o=this.currentEditItem;if(o&&!this.currentAddItem&&this._getChangedFields(o,this._edtClone)){var r=this._getItemDoc(o),i=this._getItemData(o);r.update(i).catch((function(e){return t._raiseError(e,!0)}))}}e.prototype.commitEdit.call(this)};Snapshot.prototype.remove=function(t){var o=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){this._getItemDoc(t).delete().catch((function(e){return o._raiseError(e,!0)}))}e.prototype.remove.call(this,t)};Snapshot.prototype._raiseError=function(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)};Snapshot.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Snapshot.prototype._getItemDoc=function(e){var t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)};Snapshot.prototype._getItemData=function(e){var t={},o=this.calculatedFields;for(var r in e)o&&r in o||"$META"!=r&&(t[r]=e[r]);return t};Snapshot.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new wijmo_1.CancelEventArgs)){t._unsubscribe&&t._unsubscribe();t._unsubscribe=t._getQuery().onSnapshot((function(o){var r=[],i=e||!t._loading?t.currentPosition:null;o.forEach((function(e){r.push(__assign({$META:{id:e.id}},e.data()))}));t.sourceCollection=r;null!=i&&t.moveCurrentToPosition(i);if(t._loading){t._loading=!1;t.onLoaded()}}),(function(e){return t._raiseError(e,!0)}))}}),wijmo_1.Control._REFRESH_INTERVAL)};Snapshot.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Snapshot.prototype._checkType=function(e,t){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];if(null!=t)for(var i=0;i<o.length;i++){var n=o[i];null==t[n]&&wijmo_1.assert(!1,'Expected "'+e+'" but the value does not have "'+n+'".')}};Snapshot.prototype._getQuery=function(){return this._query||this._collection};return Snapshot}(wijmo_1.CollectionView);exports.Snapshot=Snapshot;var FirestoreErrorEventArgs=function(e){__extends(FirestoreErrorEventArgs,e);function FirestoreErrorEventArgs(t){var o=e.call(this)||this;o._error=t;return o}Object.defineProperty(FirestoreErrorEventArgs.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});Object.defineProperty(FirestoreErrorEventArgs.prototype,"message",{get:function(){return this._error.message},enumerable:!0,configurable:!0});return FirestoreErrorEventArgs}(wijmo_1.CancelEventArgs);exports.FirestoreErrorEventArgs=FirestoreErrorEventArgs;var Sheet=function(e){__extends(Sheet,e);function Sheet(t,o,r){var i=e.call(this)||this;i._loading=!1;i.loading=new wijmo_1.Event;i.loaded=new wijmo_1.Event;i.error=new wijmo_1.Event;i._gSheet=t;i._title=o;i._id=r;i._getData();t.accessTokenChanged.addHandler((function(){t.accessToken&&!i.items.length&&i._getData(!0)}));return i}Object.defineProperty(Sheet.prototype,"googleSheet",{get:function(){return this._gSheet},enumerable:!0,configurable:!0});Object.defineProperty(Sheet.prototype,"title",{get:function(){return this._title},enumerable:!0,configurable:!0});Sheet.prototype.load=function(e){this._getData(e)};Object.defineProperty(Sheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Sheet.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Sheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Sheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Sheet.prototype.commitNew=function(){var t=this.currentAddItem;t&&this._saveItem(t);e.prototype.commitNew.call(this)};Sheet.prototype.commitEdit=function(){var t=this.currentEditItem;t&&!this.currentAddItem&&this._getChangedFields(t,this._edtClone)&&this._saveItem(t);e.prototype.commitEdit.call(this)};Sheet.prototype.remove=function(t){var o=this;if(t&&t!=this.currentAddItem){var r=this.sourceCollection.indexOf(t);wijmo_1.assert(r>-1,"Item not found.");var i=r+1;wijmo_1.assert(null!=this._id,"Sheet doesn't have an ID ? ");var n=this.googleSheet,s=n._getUrl(":batchUpdate");wijmo_1.httpRequest(s,{method:"POST",requestHeaders:n._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:i,endIndex:i+1}}}]},error:function(e){return o._handleError(e,!1)}})}e.prototype.remove.call(this,t)};Sheet.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._loading=!0;t._itemKeys=null;if(t.onLoading(new wijmo_1.CancelEventArgs)){var o=t.currentPosition,r=t.googleSheet,i=r._getUrl("/values/"+t.title+"!2:2");wijmo_1.httpRequest(i,{requestHeaders:r._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:function(i){var n=JSON.parse(i.responseText).values[0],s=r._getUrl("/values/"+t.title);wijmo_1.httpRequest(s,{requestHeaders:r._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:function(r){var i=JSON.parse(r.responseText).values;t.sourceCollection=t._parseData(i,n);e&&t.moveCurrentToPosition(o);t._loading=!1;t.onLoaded()},error:function(e){return t._handleError(e,!1)}})},error:function(e){return t._handleError(e,!1)}})}}),wijmo_1.Control._REFRESH_INTERVAL)};Sheet.prototype._parseData=function(e,t){for(var o=[],r=e[0],i=!0,n=0;n<r.length&&i;n++){var s=r[n];s&&wijmo_1.isString(s)&&r.indexOf(s)==n||(i=!1)}if(i)e.splice(0,1);else{var a=[];for(n=0;n<r.length;n++)a.push(this._toSheetHeader(n));r=a}this._itemKeys=r;var l=[],h=this._gSheet.columnDataTypes,c=wijmo_1.DataType;r.forEach((function(e){var t=c.Object;h&&h.forEach((function(o){o.pattern.test(e)&&(t=o.dataType)}));l.push(t)}));e.forEach((function(e){var i={};r.forEach((function(o,r){var n=e[r],s=t[r],a=l[r];a==c.Object&&wijmo_1.isNumber(n)&&wijmo_1.isString(s)&&s.length&&(a=c.Date);a!=c.Object&&(n=a==c.Date&&wijmo_1.isNumber(n)?new Date(86400*(n-25568)*1e3):wijmo_1.changeType(n,a));i[o]=n}));o.push(i)}));return o};Sheet.prototype._toSheetHeader=function(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)};Sheet.prototype._saveItem=function(e){var t=this,o=this.sourceCollection.indexOf(e);wijmo_1.assert(o>-1,"Item not found?");var r=[];this._itemKeys.forEach((function(t){var o=e[t];r.push(null!=o?o.toString():"")}));var i=this.googleSheet,n=(o+2).toString(),s=this.title+"!A"+n+":Z"+n,a=i._getUrl("/values/"+s);a+=(a.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";wijmo_1.httpRequest(a,{method:"PUT",requestHeaders:i._getRequestHeaders(),data:{range:s,values:[r]},error:function(e){return t._handleError(e,!0)}})};Sheet.prototype._handleError=function(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)};return Sheet}(wijmo_1.CollectionView);exports.Sheet=Sheet;var GoogleSheet=function(){function GoogleSheet(e,t,o){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new wijmo_1.ObservableArray;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.accessTokenChanged=new wijmo_1.Event;this._sheetId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,o);this._getSheetInfo()}Object.defineProperty(GoogleSheet.prototype,"sheetId",{get:function(){return this._sheetId},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"columnDataTypes",{get:function(){return this._colTypes},set:function(e){this._colTypes=e},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"sheets",{get:function(){return this._sheets},enumerable:!0,configurable:!0});GoogleSheet.prototype.getSheet=function(e){for(var t=0;t<this._sheets.length;t++){var o=this._sheets[t];if(o.title==e)return o}return null};Object.defineProperty(GoogleSheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});GoogleSheet.prototype.onLoading=function(e){this.loading.raise(this,e)};GoogleSheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};GoogleSheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};GoogleSheet.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};GoogleSheet.prototype._copy=function(e,t){var o=this;if("sheets"==e&&wijmo_1.isArray(t)){t.forEach((function(e){var t=new Sheet(o,e);o.sheets.push(t)}));return!0}return!1};GoogleSheet.prototype._getUrl=function(e){var t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t};GoogleSheet.prototype._getRequestHeaders=function(){var e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e};GoogleSheet.prototype._getSheetInfo=function(){var e=this;this._loading=!0;this.onLoading();wijmo_1.httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:function(t){var o=JSON.parse(t.responseText),r=o.sheets;e.sheets.length?e.sheets.forEach((function(e){for(var t=0;t<r.length;t++){var o=r[t].properties;if(o.title==e.title){e._id=o.sheetId;break}}wijmo_1.assert(null!=e._id,'Could not find sheet "'+e.title+'".')})):o.sheets.forEach((function(t){var o=t.properties;if("GRID"==o.sheetType){var r=new Sheet(e,o.title,o.sheetId);e.sheets.push(r)}}))},error:function(t){e.onError(new wijmo_1.RequestErrorEventArgs(t))},complete:function(t){e._loading=!1;e.onLoaded()}})};return GoogleSheet}();exports.GoogleSheet=GoogleSheet;var Firestore=function(){function Firestore(e,t,o){this._projectId="";this._collections=new wijmo_1.ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new wijmo_1.Event;this._projectId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,o)}Object.defineProperty(Firestore.prototype,"projectId",{get:function(){return this._projectId},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"idToken",{get:function(){return this._idToken},set:function(e){var t=this;if(e!=this._idToken){this._idToken=wijmo_1.asString(e);if(this._idToken){var o="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;wijmo_1.httpRequest(o,{method:"POST",data:{requestUri:window.location.href,postBody:"id_token="+this._idToken+"&providerId=google.com",returnSecureToken:!0,returnIdpCredential:!0},success:function(e){var o=JSON.parse(e.responseText);t._fbToken=o.idToken;t.onAccessTokenChanged()},error:function(e){t._fbToken="";t.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"collections",{get:function(){return this._collections},enumerable:!0,configurable:!0});Firestore.prototype.getCollection=function(e){for(var t=this._collections,o=0;o<t.length;o++){var r=t[o];if(r.name==e)return r}return null};Firestore.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};Firestore.prototype._copy=function(e,t){var o=this;if("collections"==e&&wijmo_1.isArray(t)){t.forEach((function(e){var t=new Collection(o,e);o.collections.push(t)}));return!0}return!1};return Firestore}();exports.Firestore=Firestore;function softGridFilter(){return wijmo_1._getModule("wijmo.grid.filter")}exports.softGridFilter=softGridFilter;var Collection=function(e){__extends(Collection,e);function Collection(t,o,r){var i=e.call(this)||this;i._loading=!1;i._sortOnServer=!1;i._pageOnServer=!1;i._filterOnServer=!1;i._deferCommits=!1;i._hasPendingChanges=!1;i._orderBy=[];i._fieldFilters=[];i._limit=0;i.loading=new wijmo_1.Event;i.loaded=new wijmo_1.Event;i.error=new wijmo_1.Event;i.hasPendingChangesChanged=new wijmo_1.Event;i._store=t;i._name=o;wijmo_1.copy(i,r);i.sortDescriptions.collectionChanged.addHandler((function(){i.sortOnServer&&!i.hasPendingChanges&&i._getData(!0)}));t.accessTokenChanged.addHandler((function(){t.accessToken&&!i.items.length&&i.load()}));i.itemsEdited.collectionChanged.addHandler(i._updateHasChanges,i);i.itemsAdded.collectionChanged.addHandler(i._updateHasChanges,i);i.itemsRemoved.collectionChanged.addHandler(i._updateHasChanges,i);i._getData();return i}Object.defineProperty(Collection.prototype,"store",{get:function(){return this._store},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"fields",{get:function(){return this._fields},set:function(e){if(e!=this._fields){this._fields=wijmo_1.asArray(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"limit",{get:function(){return this._limit},set:function(e){if(e!=this._limit){this._limit=wijmo_1.asInt(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"sortOnServer",{get:function(){return this._sortOnServer},set:function(e){if(e!=this._sortOnServer){this._sortOnServer=wijmo_1.asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageOnServer",{get:function(){return this._pageOnServer},set:function(e){if(e!=this._pageOnServer){this._pageOnServer=wijmo_1.asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"filterOnServer",{get:function(){return this._filterOnServer},set:function(e){if(e!=this._filterOnServer){this._filterOnServer=wijmo_1.asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=wijmo_1.culture.FlexGridFilter);if(this._filterOnServer){var t=wijmo_1.culture.FlexGridFilter;t.stringOperators=t.numberOperators}else wijmo_1.culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Collection.prototype.commitChanges=function(e){var t=this;if(this.deferCommits){var o=[];this.itemsEdited.forEach((function(e){o.push({update:t._itemToDoc(e)})}));this.itemsAdded.forEach((function(e){var r=t._itemToDoc(e);r.name="projects/"+t.store.projectId+"/databases/(default)/documents/"+t.name+"/"+t._generateID();o.push({update:r})}));this.itemsRemoved.forEach((function(e){o.push({delete:e.$META.name})}));o.length&&wijmo_1.httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:function(r){var i=JSON.parse(r.responseText);wijmo_1.httpRequest(t._getUrl(":commit"),{method:"POST",data:{writes:o,transaction:i.transaction},requestHeaders:t._getRequestHeaders(),success:function(e){t.clearChanges();t.load()},complete:function(t){wijmo_1.isFunction(e)&&e(t)},error:function(e){return t._raiseError(e,!0)}})},error:function(e){return t._raiseError(e,!0)}})}};Collection.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this.load()}};Object.defineProperty(Collection.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Collection.prototype.load=function(e){this._getData(e)};Collection.prototype.select=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.fields=e;return this};Collection.prototype.orderBy=function(e,t){void 0===t&&(t=!0);e?this._orderBy.push(new wijmo_1.SortDescription(wijmo_1.asString(e),wijmo_1.asBoolean(t))):this._orderBy=[];this._getData(!1);return this};Collection.prototype.where=function(e,t,o){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";wijmo_1.assert(wijmo_1.isArray(o),"IN operator requires array values.");break;default:wijmo_1.assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(var r=0;r<this._fieldFilters.length;r++){var i=this._fieldFilters[r].fieldFilter;if(i.field.fieldPath==e&&i.op==t){this._fieldFilters.splice(r,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(o)}})}else this._fieldFilters=[];this._getData(!1);return this};Collection.prototype.getSubCollection=function(e,t,o){wijmo_1.assert(wijmo_1.isObject(e)&&null!=e.$META,"invalid parent item");var r=new Collection(this.store,t,o);r._parentItem=e;return r};Collection.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Collection.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Collection.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Collection.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Object.defineProperty(Collection.prototype,"totalItemCount",{get:function(){var e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0},set:function(e){this._totalCount=wijmo_1.asInt(e)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageCount",{get:function(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageSize",{get:function(){return this._pgSz},set:function(e){if(e!=this._pgSz){this._pgSz=wijmo_1.asInt(e);if(this.pageOnServer){this._pgIdx=wijmo_1.clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}},enumerable:!0,configurable:!0});Collection.prototype.onPageChanging=function(t){e.prototype.onPageChanging.call(this,t);!t.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?t.cancel=!0:this._getData(!0));return!t.cancel};Collection.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var o=this.currentAddItem;if(o){var r=this._itemToDoc(o);wijmo_1.httpRequest(this._getUrl(),{method:"POST",data:{fields:r.fields},requestHeaders:this._getRequestHeaders(),success:function(e){var r=JSON.parse(e.responseText);t._saveDocName(r,o);wijmo_1.isNumber(t._totalCount)&&t._totalCount++},error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitNew.call(this)};Collection.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var o=this.currentEditItem;if(o&&!this.currentAddItem&&this._getChangedFields(o,this._edtClone)){var r=this._itemToDoc(o);wijmo_1.httpRequest(this._getUrl(r),{method:"PATCH",data:{fields:r.fields},requestHeaders:this._getRequestHeaders(),error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitEdit.call(this)};Collection.prototype.remove=function(t){var o=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){var r=this._itemToDoc(t);wijmo_1.httpRequest(this._getUrl(r),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:function(e){wijmo_1.isNumber(o._totalCount)&&o._totalCount--},error:function(e){return o._raiseError(e,!0)}})}e.prototype.remove.call(this,t)};Collection.prototype.updateFilterDefinition=function(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}};Collection.prototype._getPageView=function(){return this.pageOnServer?this._view:e.prototype._getPageView.call(this)};Collection.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Collection.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Collection.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new wijmo_1.CancelEventArgs)){var o=t.currentPosition;wijmo_1.httpRequest(t._getUrl(":runQuery"),{method:"POST",data:t._getQuery(),requestHeaders:t._getRequestHeaders(),success:function(r){var i=JSON.parse(r.responseText),n=t._parseData(i),s=t.pageSize;if(t.pageOnServer&&s&&n.length<s){var a=i[0].skippedResults||0;t._totalCount=a+n.length;if(0==n.length&&t.pageIndex>0){t.moveToLastPage();return}}t.sourceCollection=n;e&&t.moveCurrentToPosition(o);t._loading=!1;t.onLoaded()},error:function(e){return t._raiseError(e,!1)}})}}),wijmo_1.Control._REFRESH_INTERVAL)};Collection.prototype._getQuery=function(){var e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map((function(e){return{fieldPath:e}}))});var t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});var o=[];t&&t.length&&t.forEach((function(e){var t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&o.push({field:t.field.fieldPath,asc:!0})}));this._orderBy.forEach((function(e){o.push({field:e.property,asc:e.ascending})}));!o.length&&this.sortOnServer&&this.sortDescriptions.forEach((function(e){o.push({field:e.property,asc:e.ascending})}));o.length&&(e.orderBy=o.map((function(e){return{field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"}})));var r=this.pageSize;if(this.pageOnServer&&r){e.limit=r;e.offset=r*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}};Collection.prototype._parseData=function(e){var t=this,o=[];wijmo_1.isArray(e)&&e.forEach((function(e){var r=t._docToItem(e);r&&o.push(r)}));return o};Collection.prototype._raiseError=function(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)};Collection.prototype._saveDocName=function(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1};Collection.prototype._docToItem=function(e){e.name||(e=e.document);if(!e||!e.name)return null;var t={};this._saveDocName(e,t);for(var o in e.fields)t[o]=this._getDocValue(e.fields[o]);return t};Collection.prototype._getDocValue=function(e){var t=this,o=null;for(var r in e){o=e[r];switch(r){case"integerValue":o=parseInt(o);break;case"timestampValue":o=new Date(o);break;case"mapValue":var i={};for(var n in o.fields)i[n]=this._getDocValue(o.fields[n]);o=i;break;case"arrayValue":o=o.values?o.values.map((function(e){return t._getDocValue(e)})):[]}}return o};Collection.prototype._itemToDoc=function(e){var t={},o=e.$META,r=this.calculatedFields;o&&o.name&&(t.name=o.name);t.fields={};for(var i in e)r&&i in r||"$META"!=i&&(t.fields[i]=this._getValueObject(e[i]));return t};Collection.prototype._getValueObject=function(e){var t=this,o={},r=wijmo_1.DataType;switch(wijmo_1.getType(e)){case r.String:o.stringValue=e;break;case r.Boolean:o.booleanValue=e;break;case r.Date:o.timestampValue=e.toJSON();break;case r.Number:e==Math.round(e)?o.integerValue=e.toString():o.doubleValue=e;break;case r.Array:o.arrayValue={values:e.map((function(e){return t._getValueObject(e)}))};break;case r.Object:var i={};for(var n in e)i[n]=this._getValueObject(e[n]);o.mapValue={fields:i};break;default:wijmo_1.assert(!1,"failed to create value object.")}return o};Collection.prototype._getRequestHeaders=function(){var e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e};Collection.prototype._getUrl=function(e){var t="https://firestore.googleapis.com/v1/";if(wijmo_1.isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:"projects/"+this.store.projectId+"/databases/(default)/documents")+e};Collection.prototype._getQueryFilters=function(){var e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(var o=0;o<t.grid.columns.length;o++){var r=t.grid.columns[o],i=t.getColumnFilter(r,!1);if(i&&i.isActive){i.conditionFilter&&i.conditionFilter.isActive?this._getQueryConditionFilter(e,i.conditionFilter):i.valueFilter&&i.valueFilter.isActive&&this._getQueryValueFilter(e,i.valueFilter);break}}return e};Collection.prototype._getQueryConditionFilter=function(e,t){var o=t.column.binding,r=this._getQuerySimpleFilter(t.condition1,o),i=this._getQuerySimpleFilter(t.condition2,o);r&&i&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[r,i]}}):r?e.push(r):i&&e.push(i)};Collection.prototype._getQuerySimpleFilter=function(e,t){if(e.isActive){var o=softGridFilter().Operator;return e.operator==o.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null};Collection.prototype._getFilterOperator=function(e){var t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}wijmo_1.assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")};Collection.prototype._getQueryValueFilter=function(e,t){var o=t.column,r=o.dataMap,i=[];for(var n in t.showValues){var s=wijmo_1.changeType(n,o.dataType,o.format);r&&wijmo_1.isString(s)&&(s=r.getKeyValue(s));i.push(s);if(i.length>=10)break}i.length&&e.push({fieldFilter:{field:{fieldPath:o.binding},op:"IN",value:this._getValueObject(i)}})};Collection._filterCulture=null;return Collection}(wijmo_1.CollectionView);exports.Collection=Collection;wijmo_1._registerModule("wijmo.cloud",selfModule);
14
+ "use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(e,t){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])})(e,t)};return function(e,t){extendStatics(e,t);function __(){this.constructor=e}e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,o=1,r=arguments.length;o<r;o++){t=arguments[o];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e}).apply(this,arguments)},__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.hasOwnProperty.call(e,o)&&(t[o]=e[o]);t.default=e;return t};Object.defineProperty(exports,"__esModule",{value:!0});var wijmo_1=require("@grapecity/wijmo"),selfModule=__importStar(require("@grapecity/wijmo.cloud")),OAuth2=function(){function OAuth2(e,t,o,r){var i=this;this.userChanged=new wijmo_1.Event;this.error=new wijmo_1.Event;this._gapi=window.gapi;if(this._gapi)this._gapiLoaded(e,t,o);else{var n=document.createElement("script");n.src="https://apis.google.com/js/api.js";n.onload=function(){return i._gapiLoaded(e,t,o)};document.head.appendChild(n)}wijmo_1.copy(this,r)}Object.defineProperty(OAuth2.prototype,"user",{get:function(){var e=this._auth();if(e&&e.isSignedIn.get()){var t=e.currentUser.get().getBasicProfile();return{id:t.getId(),name:t.getName(),firstName:t.getGivenName(),lastName:t.getFamilyName(),imageUrl:t.getImageUrl(),eMail:t.getEmail()}}return null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"accessToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.access_token:null},enumerable:!0,configurable:!0});Object.defineProperty(OAuth2.prototype,"idToken",{get:function(){var e=this._gapi.auth.getToken();return e?e.id_token:null},enumerable:!0,configurable:!0});OAuth2.prototype.signIn=function(){var e=this;this._auth().signIn().then((function(e){}),(function(t){"popup_closed_by_user"!=t&&e.onError(new OAuthError(t))}))};OAuth2.prototype.signOut=function(){this._auth().signOut()};OAuth2.prototype.onUserChanged=function(e){this.userChanged.raise(this,e)};OAuth2.prototype.onError=function(e){this.error.raise(this,e)};OAuth2.prototype._gapiLoaded=function(e,t,o){var r=this;this._gapi=window.gapi;var i=this._gapi;wijmo_1.assert(i,"Failed to load google gapi.");i.load("client:auth2",(function(){var n=o&&o.length?o.join(" "):"";n=n||"https://www.googleapis.com/auth/userinfo.email";i.client.init({apiKey:e,clientId:t,scope:n}).then((function(){r._auth().isSignedIn.listen((function(){r.onUserChanged()}));r.onUserChanged()}),(function(e){r.onError(new OAuthError(e))}))}))};OAuth2.prototype._auth=function(){return this._gapi&&this._gapi.auth2?this._gapi.auth2.getAuthInstance():null};return OAuth2}();exports.OAuth2=OAuth2;var OAuthError=function(e){__extends(OAuthError,e);function OAuthError(t){var o=e.call(this)||this;o._error=t;return o}Object.defineProperty(OAuthError.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});return OAuthError}(wijmo_1.EventArgs);exports.OAuthError=OAuthError;var Snapshot=function(e){__extends(Snapshot,e);function Snapshot(t,o){var r=e.call(this)||this;r._loading=!1;r._deferCommits=!1;r._hasPendingChanges=!1;r.loading=new wijmo_1.Event;r.loaded=new wijmo_1.Event;r.error=new wijmo_1.Event;r.hasPendingChangesChanged=new wijmo_1.Event;r._checkType("CollectionReference",t,"firestore","doc","onSnapshot");r._collection=t;wijmo_1.copy(r,o);r.itemsEdited.collectionChanged.addHandler(r._updateHasChanges,r);r.itemsAdded.collectionChanged.addHandler(r._updateHasChanges,r);r.itemsRemoved.collectionChanged.addHandler(r._updateHasChanges,r);r._getData();return r}Object.defineProperty(Snapshot.prototype,"query",{get:function(){return this._query},set:function(e){if(e!=this._query){this._checkType("Query",e,"firestore","onSnapshot");this._query=e;this._getData()}},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Snapshot.prototype.commitChanges=function(){var e=this;if(this.deferCommits&&this.hasPendingChanges){var t=this._collection.firestore.batch();this.itemsEdited.forEach((function(o){var r=e._getItemDoc(o),i=e._getItemData(o);t.update(r,i)}));this.itemsAdded.forEach((function(o){var r=e._getItemDoc(o),i=e._getItemData(o);t.set(r,i)}));this.itemsRemoved.forEach((function(o){var r=e._getItemDoc(o);t.delete(r)}));t.commit().then((function(){e.clearChanges();e._getData(!0)})).catch((function(t){return e._raiseError(t,!0)}))}};Snapshot.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this._getData(!0)}};Object.defineProperty(Snapshot.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Snapshot.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Snapshot.prototype.load=function(e){this._getData(e)};Snapshot.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Snapshot.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Snapshot.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Snapshot.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Object.defineProperty(Snapshot.prototype,"newItemIndex",{get:function(){return-1},set:function(e){},enumerable:!0,configurable:!0});Snapshot.prototype.insertAt=function(){};Snapshot.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var o=this.currentAddItem;o&&this._collection.add(this._getItemData(o)).catch((function(e){return t._raiseError(e,!0)}))}e.prototype.commitNew.call(this)};Snapshot.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var o=this.currentEditItem;if(o&&!this.currentAddItem&&this._getChangedFields(o,this._edtClone)){var r=this._getItemDoc(o),i=this._getItemData(o);r.update(i).catch((function(e){return t._raiseError(e,!0)}))}}e.prototype.commitEdit.call(this)};Snapshot.prototype.remove=function(t){var o=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){this._getItemDoc(t).delete().catch((function(e){return o._raiseError(e,!0)}))}e.prototype.remove.call(this,t)};Snapshot.prototype._raiseError=function(e,t){this.onError(new FirestoreErrorEventArgs(e));t&&this._getData(!0)};Snapshot.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Snapshot.prototype._getItemDoc=function(e){var t=e&&e.$META?e.$META.id:this._generateID();return this._collection.doc(t)};Snapshot.prototype._getItemData=function(e){var t={},o=this.calculatedFields;for(var r in e)o&&r in o||"$META"!=r&&(t[r]=e[r]);return t};Snapshot.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new wijmo_1.CancelEventArgs)){t._unsubscribe&&t._unsubscribe();t._unsubscribe=t._getQuery().onSnapshot((function(o){var r=[],i=e||!t._loading?t.currentPosition:null;o.forEach((function(e){r.push(__assign({$META:{id:e.id}},e.data()))}));t.sourceCollection=r;null!=i&&t.moveCurrentToPosition(i);if(t._loading){t._loading=!1;t.onLoaded()}}),(function(e){return t._raiseError(e,!0)}))}}),wijmo_1.Control._REFRESH_INTERVAL)};Snapshot.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Snapshot.prototype._checkType=function(e,t){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];if(null!=t)for(var i=0;i<o.length;i++){var n=o[i];null==t[n]&&wijmo_1.assert(!1,'Expected "'+e+'" but the value does not have "'+n+'".')}};Snapshot.prototype._getQuery=function(){return this._query||this._collection};return Snapshot}(wijmo_1.CollectionView);exports.Snapshot=Snapshot;var FirestoreErrorEventArgs=function(e){__extends(FirestoreErrorEventArgs,e);function FirestoreErrorEventArgs(t){var o=e.call(this)||this;o._error=t;return o}Object.defineProperty(FirestoreErrorEventArgs.prototype,"error",{get:function(){return this._error},enumerable:!0,configurable:!0});Object.defineProperty(FirestoreErrorEventArgs.prototype,"message",{get:function(){return this._error.message},enumerable:!0,configurable:!0});return FirestoreErrorEventArgs}(wijmo_1.CancelEventArgs);exports.FirestoreErrorEventArgs=FirestoreErrorEventArgs;var Sheet=function(e){__extends(Sheet,e);function Sheet(t,o,r){var i=e.call(this)||this;i._loading=!1;i.loading=new wijmo_1.Event;i.loaded=new wijmo_1.Event;i.error=new wijmo_1.Event;i._gSheet=t;i._title=o;i._id=r;i._getData();t.accessTokenChanged.addHandler((function(){t.accessToken&&!i.items.length&&i._getData(!0)}));return i}Object.defineProperty(Sheet.prototype,"googleSheet",{get:function(){return this._gSheet},enumerable:!0,configurable:!0});Object.defineProperty(Sheet.prototype,"title",{get:function(){return this._title},enumerable:!0,configurable:!0});Sheet.prototype.load=function(e){this._getData(e)};Object.defineProperty(Sheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Sheet.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Sheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Sheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Object.defineProperty(Sheet.prototype,"newItemIndex",{get:function(){return-1},set:function(e){},enumerable:!0,configurable:!0});Sheet.prototype.insertAt=function(){};Sheet.prototype.commitNew=function(){var t=this.currentAddItem;t&&this._saveItem(t);e.prototype.commitNew.call(this)};Sheet.prototype.commitEdit=function(){var t=this.currentEditItem;t&&!this.currentAddItem&&this._getChangedFields(t,this._edtClone)&&this._saveItem(t);e.prototype.commitEdit.call(this)};Sheet.prototype.remove=function(t){var o=this;if(t&&t!=this.currentAddItem){var r=this.sourceCollection.indexOf(t);wijmo_1.assert(r>-1,"Item not found.");var i=r+1;wijmo_1.assert(null!=this._id,"Sheet doesn't have an ID ? ");var n=this.googleSheet,s=n._getUrl(":batchUpdate");wijmo_1.httpRequest(s,{method:"POST",requestHeaders:n._getRequestHeaders(),data:{requests:[{deleteDimension:{range:{sheetId:this._id,dimension:"ROWS",startIndex:i,endIndex:i+1}}}]},error:function(e){return o._handleError(e,!1)}})}e.prototype.remove.call(this,t)};Sheet.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._loading=!0;t._itemKeys=null;if(t.onLoading(new wijmo_1.CancelEventArgs)){var o=t.currentPosition,r=t.googleSheet,i=r._getUrl("/values/"+t.title+"!2:2");wijmo_1.httpRequest(i,{requestHeaders:r._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"FORMATTED_STRING"},success:function(i){var n=JSON.parse(i.responseText).values[0],s=r._getUrl("/values/"+t.title);wijmo_1.httpRequest(s,{requestHeaders:r._getRequestHeaders(),data:{valueRenderOption:"UNFORMATTED_VALUE",dateTimeRenderOption:"SERIAL_NUMBER"},success:function(r){var i=JSON.parse(r.responseText).values;t.sourceCollection=t._parseData(i,n);e&&t.moveCurrentToPosition(o);t._loading=!1;t.onLoaded()},error:function(e){return t._handleError(e,!1)}})},error:function(e){return t._handleError(e,!1)}})}}),wijmo_1.Control._REFRESH_INTERVAL)};Sheet.prototype._parseData=function(e,t){for(var o=[],r=e[0],i=!0,n=0;n<r.length&&i;n++){var s=r[n];s&&wijmo_1.isString(s)&&r.indexOf(s)==n||(i=!1)}if(i)e.splice(0,1);else{var a=[];for(n=0;n<r.length;n++)a.push(this._toSheetHeader(n));r=a}this._itemKeys=r;var l=[],h=this._gSheet.columnDataTypes,c=wijmo_1.DataType;r.forEach((function(e){var t=c.Object;h&&h.forEach((function(o){o.pattern.test(e)&&(t=o.dataType)}));l.push(t)}));e.forEach((function(e){var i={};r.forEach((function(o,r){var n=e[r],s=t[r],a=l[r];a==c.Object&&wijmo_1.isNumber(n)&&wijmo_1.isString(s)&&s.length&&(a=c.Date);a!=c.Object&&(n=a==c.Date&&wijmo_1.isNumber(n)?new Date(86400*(n-25568)*1e3):wijmo_1.changeType(n,a));i[o]=n}));o.push(i)}));return o};Sheet.prototype._toSheetHeader=function(e){return e<26?String.fromCharCode(65+e):this._toSheetHeader(Math.floor(e/26)-1)+this._toSheetHeader(e%26)};Sheet.prototype._saveItem=function(e){var t=this,o=this.sourceCollection.indexOf(e);wijmo_1.assert(o>-1,"Item not found?");var r=[];this._itemKeys.forEach((function(t){var o=e[t];r.push(null!=o?o.toString():"")}));var i=this.googleSheet,n=(o+2).toString(),s=this.title+"!A"+n+":Z"+n,a=i._getUrl("/values/"+s);a+=(a.indexOf("?key=")>-1?"&":"?")+"valueInputOption=USER_ENTERED";wijmo_1.httpRequest(a,{method:"PUT",requestHeaders:i._getRequestHeaders(),data:{range:s,values:[r]},error:function(e){return t._handleError(e,!0)}})};Sheet.prototype._handleError=function(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)};return Sheet}(wijmo_1.CollectionView);exports.Sheet=Sheet;var GoogleSheet=function(){function GoogleSheet(e,t,o){this._sheetId="";this._accessToken="";this._apiKey="";this._loading=!1;this._sheets=new wijmo_1.ObservableArray;this.loading=new wijmo_1.Event;this.loaded=new wijmo_1.Event;this.error=new wijmo_1.Event;this.accessTokenChanged=new wijmo_1.Event;this._sheetId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,o);this._getSheetInfo()}Object.defineProperty(GoogleSheet.prototype,"sheetId",{get:function(){return this._sheetId},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"columnDataTypes",{get:function(){return this._colTypes},set:function(e){this._colTypes=e},enumerable:!0,configurable:!0});Object.defineProperty(GoogleSheet.prototype,"sheets",{get:function(){return this._sheets},enumerable:!0,configurable:!0});GoogleSheet.prototype.getSheet=function(e){for(var t=0;t<this._sheets.length;t++){var o=this._sheets[t];if(o.title==e)return o}return null};Object.defineProperty(GoogleSheet.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});GoogleSheet.prototype.onLoading=function(e){this.loading.raise(this,e)};GoogleSheet.prototype.onLoaded=function(e){this.loaded.raise(this,e)};GoogleSheet.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};GoogleSheet.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};GoogleSheet.prototype._copy=function(e,t){var o=this;if("sheets"==e&&wijmo_1.isArray(t)){t.forEach((function(e){var t=new Sheet(o,e);o.sheets.push(t)}));return!0}return!1};GoogleSheet.prototype._getUrl=function(e){var t="https://sheets.googleapis.com/v4/spreadsheets/"+this.sheetId;e&&(t+=e);this.apiKey&&(t+="?key="+this.apiKey);return t};GoogleSheet.prototype._getRequestHeaders=function(){var e={"Content-Type":"application/json"};this.accessToken&&(e.Authorization="Bearer "+this.accessToken);return e};GoogleSheet.prototype._getSheetInfo=function(){var e=this;this._loading=!0;this.onLoading();wijmo_1.httpRequest(this._getUrl(),{requestHeaders:this._getRequestHeaders(),data:{fields:"sheets.properties"},success:function(t){var o=JSON.parse(t.responseText),r=o.sheets;e.sheets.length?e.sheets.forEach((function(e){for(var t=0;t<r.length;t++){var o=r[t].properties;if(o.title==e.title){e._id=o.sheetId;break}}wijmo_1.assert(null!=e._id,'Could not find sheet "'+e.title+'".')})):o.sheets.forEach((function(t){var o=t.properties;if("GRID"==o.sheetType){var r=new Sheet(e,o.title,o.sheetId);e.sheets.push(r)}}))},error:function(t){e.onError(new wijmo_1.RequestErrorEventArgs(t))},complete:function(t){e._loading=!1;e.onLoaded()}})};return GoogleSheet}();exports.GoogleSheet=GoogleSheet;var Firestore=function(){function Firestore(e,t,o){this._projectId="";this._collections=new wijmo_1.ObservableArray;this._accessToken="";this._idToken="";this._fbToken="";this._apiKey="";this.accessTokenChanged=new wijmo_1.Event;this._projectId=wijmo_1.asString(e,!1);this._apiKey=wijmo_1.asString(t,!1);wijmo_1.copy(this,o)}Object.defineProperty(Firestore.prototype,"projectId",{get:function(){return this._projectId},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"apiKey",{get:function(){return this._apiKey},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"accessToken",{get:function(){return this._accessToken},set:function(e){if(e!=this._accessToken){this._accessToken=wijmo_1.asString(e);this.onAccessTokenChanged()}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"idToken",{get:function(){return this._idToken},set:function(e){var t=this;if(e!=this._idToken){this._idToken=wijmo_1.asString(e);if(this._idToken){var o="https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key="+this._apiKey;wijmo_1.httpRequest(o,{method:"POST",data:{requestUri:window.location.href,postBody:"id_token="+this._idToken+"&providerId=google.com",returnSecureToken:!0,returnIdpCredential:!0},success:function(e){var o=JSON.parse(e.responseText);t._fbToken=o.idToken;t.onAccessTokenChanged()},error:function(e){t._fbToken="";t.onAccessTokenChanged()}})}else{this._fbToken="";this.onAccessTokenChanged()}}},enumerable:!0,configurable:!0});Object.defineProperty(Firestore.prototype,"collections",{get:function(){return this._collections},enumerable:!0,configurable:!0});Firestore.prototype.getCollection=function(e){for(var t=this._collections,o=0;o<t.length;o++){var r=t[o];if(r.name==e)return r}return null};Firestore.prototype.onAccessTokenChanged=function(e){this.accessTokenChanged.raise(this,e)};Firestore.prototype._copy=function(e,t){var o=this;if("collections"==e&&wijmo_1.isArray(t)){t.forEach((function(e){var t=new Collection(o,e);o.collections.push(t)}));return!0}return!1};return Firestore}();exports.Firestore=Firestore;function softGridFilter(){return wijmo_1._getModule("wijmo.grid.filter")}exports.softGridFilter=softGridFilter;var Collection=function(e){__extends(Collection,e);function Collection(t,o,r){var i=e.call(this)||this;i._loading=!1;i._sortOnServer=!1;i._pageOnServer=!1;i._filterOnServer=!1;i._deferCommits=!1;i._hasPendingChanges=!1;i._orderBy=[];i._fieldFilters=[];i._limit=0;i.loading=new wijmo_1.Event;i.loaded=new wijmo_1.Event;i.error=new wijmo_1.Event;i.hasPendingChangesChanged=new wijmo_1.Event;i._store=t;i._name=o;wijmo_1.copy(i,r);i.sortDescriptions.collectionChanged.addHandler((function(){i.sortOnServer&&!i.hasPendingChanges&&i._getData(!0)}));t.accessTokenChanged.addHandler((function(){t.accessToken&&!i.items.length&&i.load()}));i.itemsEdited.collectionChanged.addHandler(i._updateHasChanges,i);i.itemsAdded.collectionChanged.addHandler(i._updateHasChanges,i);i.itemsRemoved.collectionChanged.addHandler(i._updateHasChanges,i);i._getData();return i}Object.defineProperty(Collection.prototype,"store",{get:function(){return this._store},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"fields",{get:function(){return this._fields},set:function(e){if(e!=this._fields){this._fields=wijmo_1.asArray(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"limit",{get:function(){return this._limit},set:function(e){if(e!=this._limit){this._limit=wijmo_1.asInt(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"sortOnServer",{get:function(){return this._sortOnServer},set:function(e){if(e!=this._sortOnServer){this._sortOnServer=wijmo_1.asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageOnServer",{get:function(){return this._pageOnServer},set:function(e){if(e!=this._pageOnServer){this._pageOnServer=wijmo_1.asBoolean(e);this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"filterOnServer",{get:function(){return this._filterOnServer},set:function(e){if(e!=this._filterOnServer){this._filterOnServer=wijmo_1.asBoolean(e);if(softGridFilter()){null==Collection._filterCulture&&(Collection._filterCulture=wijmo_1.culture.FlexGridFilter);if(this._filterOnServer){var t=wijmo_1.culture.FlexGridFilter;t.stringOperators=t.numberOperators}else wijmo_1.culture.FlexGridFilter=Collection._filterCulture}this._getData(!0)}},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"deferCommits",{get:function(){return this._deferCommits},set:function(e){this._deferCommits=wijmo_1.asBoolean(e);this.deferCommits&&(this.trackChanges=!0)},enumerable:!0,configurable:!0});Collection.prototype.commitChanges=function(e){var t=this;if(this.deferCommits){var o=[];this.itemsEdited.forEach((function(e){o.push({update:t._itemToDoc(e)})}));this.itemsAdded.forEach((function(e){var r=t._itemToDoc(e);r.name="projects/"+t.store.projectId+"/databases/(default)/documents/"+t.name+"/"+t._generateID();o.push({update:r})}));this.itemsRemoved.forEach((function(e){o.push({delete:e.$META.name})}));o.length&&wijmo_1.httpRequest(this._getUrl(":beginTransaction"),{method:"POST",requestHeaders:this._getRequestHeaders(),success:function(r){var i=JSON.parse(r.responseText);wijmo_1.httpRequest(t._getUrl(":commit"),{method:"POST",data:{writes:o,transaction:i.transaction},requestHeaders:t._getRequestHeaders(),success:function(e){t.clearChanges();t.load()},complete:function(t){wijmo_1.isFunction(e)&&e(t)},error:function(e){return t._raiseError(e,!0)}})},error:function(e){return t._raiseError(e,!0)}})}};Collection.prototype.cancelChanges=function(){if(this.deferCommits){this.clearChanges();this.load()}};Object.defineProperty(Collection.prototype,"hasPendingChanges",{get:function(){return!!this.deferCommits&&(this.itemsAdded.length>0||this.itemsEdited.length>0||this.itemsRemoved.length>0)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"isLoading",{get:function(){return this._loading},enumerable:!0,configurable:!0});Collection.prototype.load=function(e){this._getData(e)};Collection.prototype.select=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.fields=e;return this};Collection.prototype.orderBy=function(e,t){void 0===t&&(t=!0);e?this._orderBy.push(new wijmo_1.SortDescription(wijmo_1.asString(e),wijmo_1.asBoolean(t))):this._orderBy=[];this._getData(!1);return this};Collection.prototype.where=function(e,t,o){if(e){switch(t.toUpperCase()){case"==":t="EQUAL";break;case"!=":t="NOT_EQUAL";break;case">":t="GREATER_THAN";break;case">=":t="GREATER_THAN_OR_EQUAL";break;case"<":t="LESS_THAN";break;case"<=":t="LESS_THAN_OR_EQUAL";break;case"IN":t="IN";wijmo_1.assert(wijmo_1.isArray(o),"IN operator requires array values.");break;default:wijmo_1.assert(!1,"Unknown operator (should be ==, !=, >, >=, <, <=, or IN).")}for(var r=0;r<this._fieldFilters.length;r++){var i=this._fieldFilters[r].fieldFilter;if(i.field.fieldPath==e&&i.op==t){this._fieldFilters.splice(r,1);break}}this._fieldFilters.push({fieldFilter:{field:{fieldPath:e},op:t,value:this._getValueObject(o)}})}else this._fieldFilters=[];this._getData(!1);return this};Collection.prototype.getSubCollection=function(e,t,o){wijmo_1.assert(wijmo_1.isObject(e)&&null!=e.$META,"invalid parent item");var r=new Collection(this.store,t,o);r._parentItem=e;return r};Collection.prototype.onLoading=function(e){this.loading.raise(this,e);return!e.cancel};Collection.prototype.onLoaded=function(e){this.loaded.raise(this,e)};Collection.prototype.onError=function(e){if(this._loading){this._loading=!1;this.onLoaded()}this.error.raise(this,e);return!e.cancel};Collection.prototype.onHasPendingChangesChanged=function(e){this.hasPendingChangesChanged.raise(this,e)};Object.defineProperty(Collection.prototype,"totalItemCount",{get:function(){var e=this._totalCount;return this.pageOnServer?null!=e?e:1e9:this._view?this._view.length:0},set:function(e){this._totalCount=wijmo_1.asInt(e)},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageCount",{get:function(){return this.pageSize?Math.ceil(this.totalItemCount/this.pageSize):1},enumerable:!0,configurable:!0});Object.defineProperty(Collection.prototype,"pageSize",{get:function(){return this._pgSz},set:function(e){if(e!=this._pgSz){this._pgSz=wijmo_1.asInt(e);if(this.pageOnServer){this._pgIdx=wijmo_1.clamp(this._pgIdx,0,this.pageCount-1);this._getData(!0)}else this.refresh()}},enumerable:!0,configurable:!0});Collection.prototype.onPageChanging=function(t){e.prototype.onPageChanging.call(this,t);!t.cancel&&this.pageOnServer&&(0==this.pageIndex&&0==this.items.length?t.cancel=!0:this._getData(!0));return!t.cancel};Object.defineProperty(Collection.prototype,"newItemIndex",{get:function(){return-1},set:function(e){},enumerable:!0,configurable:!0});Collection.prototype.insertAt=function(){};Collection.prototype.commitNew=function(){var t=this;if(!this.deferCommits){var o=this.currentAddItem;if(o){var r=this._itemToDoc(o);wijmo_1.httpRequest(this._getUrl(),{method:"POST",data:{fields:r.fields},requestHeaders:this._getRequestHeaders(),success:function(e){var r=JSON.parse(e.responseText);t._saveDocName(r,o);wijmo_1.isNumber(t._totalCount)&&t._totalCount++},error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitNew.call(this)};Collection.prototype.commitEdit=function(){var t=this;if(!this.deferCommits){var o=this.currentEditItem;if(o&&!this.currentAddItem&&this._getChangedFields(o,this._edtClone)){var r=this._itemToDoc(o);wijmo_1.httpRequest(this._getUrl(r),{method:"PATCH",data:{fields:r.fields},requestHeaders:this._getRequestHeaders(),error:function(e){return t._raiseError(e,!0)}})}}e.prototype.commitEdit.call(this)};Collection.prototype.remove=function(t){var o=this;if(!this.deferCommits&&t&&t!=this.currentAddItem){var r=this._itemToDoc(t);wijmo_1.httpRequest(this._getUrl(r),{method:"DELETE",requestHeaders:this._getRequestHeaders(),success:function(e){wijmo_1.isNumber(o._totalCount)&&o._totalCount--},error:function(e){return o._raiseError(e,!0)}})}e.prototype.remove.call(this,t)};Collection.prototype.updateFilterDefinition=function(e){this._filterProvider=null;if(this.filterOnServer&&softGridFilter()&&e instanceof softGridFilter().FlexGridFilter){this._filterProvider=e;this._totalCount=null;this.moveCurrentToFirst();this._getData(!0)}};Collection.prototype._getPageView=function(){return this.pageOnServer?this._view:e.prototype._getPageView.call(this)};Collection.prototype._generateID=function(){for(var e="";e.length<20;)e+=Math.random().toString(36).substr(2,5);return e};Collection.prototype._updateHasChanges=function(){var e=this.hasPendingChanges;if(e!=this._hasPendingChanges){this._hasPendingChanges=e;this.onHasPendingChangesChanged()}};Collection.prototype._getData=function(e){var t=this;this._toGetData&&clearTimeout(this._toGetData);this._toGetData=setTimeout((function(){t._toGetData=null;t._loading=!0;if(t.onLoading(new wijmo_1.CancelEventArgs)){var o=t.currentPosition;wijmo_1.httpRequest(t._getUrl(":runQuery"),{method:"POST",data:t._getQuery(),requestHeaders:t._getRequestHeaders(),success:function(r){var i=JSON.parse(r.responseText),n=t._parseData(i),s=t.pageSize;if(t.pageOnServer&&s&&n.length<s){var a=i[0].skippedResults||0;t._totalCount=a+n.length;if(0==n.length&&t.pageIndex>0){t.moveToLastPage();return}}t.sourceCollection=n;e&&t.moveCurrentToPosition(o);t._loading=!1;t.onLoaded()},error:function(e){return t._raiseError(e,!1)}})}}),wijmo_1.Control._REFRESH_INTERVAL)};Collection.prototype._getQuery=function(){var e={from:[{collectionId:this.name}]};this.fields&&this.fields.length&&(e.select={fields:this.fields.map((function(e){return{fieldPath:e}}))});var t=this._fieldFilters;!t.length&&this._filterProvider&&this.filterOnServer&&(t=this._getQueryFilters());t&&t.length&&(e.where=1==t.length?t[0]:{compositeFilter:{filters:t,op:"AND"}});var o=[];t&&t.length&&t.forEach((function(e){var t=e.fieldFilter;"IN"!=t.op&&"EQUAL"!=t.op&&o.push({field:t.field.fieldPath,asc:!0})}));this._orderBy.forEach((function(e){o.push({field:e.property,asc:e.ascending})}));!o.length&&this.sortOnServer&&this.sortDescriptions.forEach((function(e){o.push({field:e.property,asc:e.ascending})}));o.length&&(e.orderBy=o.map((function(e){return{field:{fieldPath:e.field},direction:e.asc?"ASCENDING":"DESCENDING"}})));var r=this.pageSize;if(this.pageOnServer&&r){e.limit=r;e.offset=r*this.pageIndex}!e.limit&&this.limit>0&&(e.limit=this.limit);return{structuredQuery:e}};Collection.prototype._parseData=function(e){var t=this,o=[];wijmo_1.isArray(e)&&e.forEach((function(e){var r=t._docToItem(e);r&&o.push(r)}));return o};Collection.prototype._raiseError=function(e,t){this.onError(new wijmo_1.RequestErrorEventArgs(e));t&&this._getData(!0)};Collection.prototype._saveDocName=function(e,t){if(e.name&&!t.$META){t.$META={name:e.name};return!0}return!1};Collection.prototype._docToItem=function(e){e.name||(e=e.document);if(!e||!e.name)return null;var t={};this._saveDocName(e,t);for(var o in e.fields)t[o]=this._getDocValue(e.fields[o]);return t};Collection.prototype._getDocValue=function(e){var t=this,o=null;for(var r in e){o=e[r];switch(r){case"integerValue":o=parseInt(o);break;case"timestampValue":o=new Date(o);break;case"mapValue":var i={};for(var n in o.fields)i[n]=this._getDocValue(o.fields[n]);o=i;break;case"arrayValue":o=o.values?o.values.map((function(e){return t._getDocValue(e)})):[]}}return o};Collection.prototype._itemToDoc=function(e){var t={},o=e.$META,r=this.calculatedFields;o&&o.name&&(t.name=o.name);t.fields={};for(var i in e)r&&i in r||"$META"!=i&&(t.fields[i]=this._getValueObject(e[i]));return t};Collection.prototype._getValueObject=function(e){var t=this,o={},r=wijmo_1.DataType;switch(wijmo_1.getType(e)){case r.String:o.stringValue=e;break;case r.Boolean:o.booleanValue=e;break;case r.Date:o.timestampValue=e.toJSON();break;case r.Number:e==Math.round(e)?o.integerValue=e.toString():o.doubleValue=e;break;case r.Array:o.arrayValue={values:e.map((function(e){return t._getValueObject(e)}))};break;case r.Object:var i={};for(var n in e)i[n]=this._getValueObject(e[n]);o.mapValue={fields:i};break;default:wijmo_1.assert(!1,"failed to create value object.")}return o};Collection.prototype._getRequestHeaders=function(){var e={},t=this.store._fbToken||this.store.accessToken;t&&(e.Authorization="Bearer "+t);return e};Collection.prototype._getUrl=function(e){var t="https://firestore.googleapis.com/v1/";if(wijmo_1.isObject(e)&&e.name)return t+e.name;e||(e="/"+this.name);return t+(this._parentItem?this._parentItem.$META.name:"projects/"+this.store.projectId+"/databases/(default)/documents")+e};Collection.prototype._getQueryFilters=function(){var e=[],t=this._filterProvider;if(softGridFilter()&&t instanceof softGridFilter().FlexGridFilter)for(var o=0;o<t.grid.columns.length;o++){var r=t.grid.columns[o],i=t.getColumnFilter(r,!1);if(i&&i.isActive){i.conditionFilter&&i.conditionFilter.isActive?this._getQueryConditionFilter(e,i.conditionFilter):i.valueFilter&&i.valueFilter.isActive&&this._getQueryValueFilter(e,i.valueFilter);break}}return e};Collection.prototype._getQueryConditionFilter=function(e,t){var o=t.column.binding,r=this._getQuerySimpleFilter(t.condition1,o),i=this._getQuerySimpleFilter(t.condition2,o);r&&i&&t.and?e.push({compositeFilter:{op:t.and?"AND":"OR",filters:[r,i]}}):r?e.push(r):i&&e.push(i)};Collection.prototype._getQuerySimpleFilter=function(e,t){if(e.isActive){var o=softGridFilter().Operator;return e.operator==o.BW?{compositeFilter:{op:"AND",filters:[{fieldFilter:{field:{fieldPath:t},op:"GREATER_THAN_OR_EQUAL",value:this._getValueObject(e.value)}},{fieldFilter:{field:{fieldPath:t},op:"LESS_THAN",value:this._getValueObject(e.value+"")}}]}}:{fieldFilter:{field:{fieldPath:t},op:this._getFilterOperator(e.operator),value:this._getValueObject(e.value)}}}return null};Collection.prototype._getFilterOperator=function(e){var t=softGridFilter().Operator;switch(e){case t.EQ:return"EQUAL";case t.NE:return"NOT_EQUAL";case t.GE:return"GREATER_THAN_OR_EQUAL";case t.GT:return"GREATER_THAN";case t.LE:return"LESS_THAN_OR_EQUAL";case t.LT:return"LESS_THAN"}wijmo_1.assert(!1,t[e]+" operator not supported (use EQ, NE, GT, GE, LT, or LE)")};Collection.prototype._getQueryValueFilter=function(e,t){var o=t.column,r=o.dataMap,i=[];for(var n in t.showValues){var s=wijmo_1.changeType(n,o.dataType,o.format);r&&wijmo_1.isString(s)&&(s=r.getKeyValue(s));i.push(s);if(i.length>=10)break}i.length&&e.push({fieldFilter:{field:{fieldPath:o.binding},op:"IN",value:this._getValueObject(i)}})};Collection._filterCulture=null;return Collection}(wijmo_1.CollectionView);exports.Collection=Collection;wijmo_1._registerModule("wijmo.cloud",selfModule);
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@grapecity/wijmo.cloud",
3
- "version": "5.20261.48",
3
+ "version": "5.20261.52",
4
4
  "description": "UI library for pure JS, Angular, React, Vue and more...",
5
5
  "author": "MESCIUS inc",
6
6
  "license": "Commercial",
7
7
  "main": "./index.js",
8
8
  "types": "./index.d.ts",
9
9
  "dependencies": {
10
- "@grapecity/wijmo": "5.20261.48",
11
- "@grapecity/wijmo.grid": "5.20261.48",
12
- "@grapecity/wijmo.grid.filter": "5.20261.48"
10
+ "@grapecity/wijmo": "5.20261.52",
11
+ "@grapecity/wijmo.grid": "5.20261.52",
12
+ "@grapecity/wijmo.grid.filter": "5.20261.52"
13
13
  },
14
14
  "homepage": "https://developer.mescius.com/wijmo",
15
15
  "bugs": {