diff --git a/dist/main.js b/dist/main.js index c84eee7..4e0415a 100644 --- a/dist/main.js +++ b/dist/main.js @@ -414,7 +414,12 @@ module.exports = var resourceIndex = resourceIndexes[resourceName]; var searchString = searchState[resourceName].text; - store.dispatch(actions.indexResource(resourceName, resourceIndex, resource)); + store.dispatch(actions.indexResource({ + fieldNamesOrIndexFunction: resourceIndex, + resourceName: resourceName, + resources: resource, + state: nextState + })); store.dispatch(actions.search(resourceName)(searchString)); } } @@ -1230,15 +1235,21 @@ module.exports = /** * Builds a searchable index of a set of resources. * - * @param resourceName Uniquely identifies the resource (eg. "databases") * @param fieldNamesOrIndexFunction This value is passed to reduxSearch() factory during initialization * It is either an Array of searchable fields (to be auto-indexed) * Or a custom index function to be called with a :resources object and an :indexDocument callback + * @param resourceName Uniquely identifies the resource (eg. "databases") * @param resources Map of resource uid to resource (Object) + * @param state State object to be passed to custom resource-indexing functions */ }, { key: 'indexResource', - value: function indexResource(resourceName, fieldNamesOrIndexFunction, resources) { + value: function indexResource(_ref) { + var fieldNamesOrIndexFunction = _ref.fieldNamesOrIndexFunction; + var resourceName = _ref.resourceName; + var resources = _ref.resources; + var state = _ref.state; + var search = new _jsWorkerSearch2['default'](); if (Array.isArray(fieldNamesOrIndexFunction)) { @@ -1263,7 +1274,8 @@ module.exports = } else if (fieldNamesOrIndexFunction instanceof Function) { fieldNamesOrIndexFunction({ indexDocument: search.indexDocument, - resources: resources + resources: resources, + state: state }); } else { throw Error('Expected resource index to be either an Array of fields or an index function'); diff --git a/dist/main.js.map b/dist/main.js.map index 7232906..09afe20 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap d875b5a17a955f485c80","webpack:///./src/index.js","webpack:///./src/selectors.js","webpack:///./src/actions.js","webpack:///./src/constants.js","webpack:///./src/reduxSearch.js","webpack:///./~/redux/lib/index.js","webpack:///./~/redux/lib/createStore.js","webpack:///./~/redux/lib/utils/isPlainObject.js","webpack:///./~/redux/lib/utils/combineReducers.js","webpack:///./~/process/browser.js","webpack:///./~/redux/lib/utils/mapValues.js","webpack:///./~/redux/lib/utils/pick.js","webpack:///./~/redux/lib/utils/bindActionCreators.js","webpack:///./~/redux/lib/utils/applyMiddleware.js","webpack:///./~/redux/lib/utils/compose.js","webpack:///./src/searchMiddleware.js","webpack:///./src/SearchApi.js","webpack:///./~/js-worker-search/dist/js-worker-search.js","webpack:///./src/reducer.js"],"names":[],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;sCClCO,CAAa;;oCACG,CAAW;;wCACV,CAAe;;;;oCACnB,EAAW;;;;sCACT,EAAa;;;;;SAIjC,0BAA0B;SAC1B,kBAAkB;SAClB,OAAO;SACP,WAAW;SACD,kBAAkB;SAC5B,SAAS,0B;;;;;;;;;;;;;;;;;;;;ACdJ,UAAS,0BAA0B,CAAE,KAAK,EAAE;AACjD,UAAO,KAAK,CAAC,MAAM;EACpB;;;;;;;;;;;AAUM,UAAS,kBAAkB,CAAE,IAKnC,EAAU;OAJT,cAAc,GADoB,IAKnC,CAJC,cAAc;OACd,YAAY,GAFsB,IAKnC,CAHC,YAAY;OACZ,gBAAgB,GAHkB,IAKnC,CAFC,gBAAgB;kCAHkB,IAKnC,CADC,mBAAmB;OAAnB,mBAAmB,4CAAG,0BAA0B;;AAEhD,UAAO;AACL,SAAI,EAAE,eAAe,CAAC,EAAE,YAAY,EAAZ,YAAY,EAAE,mBAAmB,EAAnB,mBAAmB,EAAE,CAAC;AAC5D,WAAM,EAAE,iBAAiB,CAAC,EAAE,cAAc,EAAd,cAAc,EAAE,YAAY,EAAZ,YAAY,EAAE,gBAAgB,EAAhB,gBAAgB,EAAE,mBAAmB,EAAnB,mBAAmB,EAAE,CAAC;AAClG,qBAAgB,EAAE,2BAA2B,CAAC,EAAE,YAAY,EAAZ,YAAY,EAAE,mBAAmB,EAAnB,mBAAmB,EAAE,CAAC;IACrF;EACF;;;;;;;;;AAQM,UAAS,eAAe,CAAE,KAGhC,EAAY;OAFX,YAAY,GADmB,KAGhC,CAFC,YAAY;mCADmB,KAGhC,CADC,mBAAmB;OAAnB,mBAAmB,6CAAG,0BAA0B;;AAEhD,UAAO,SAAS,YAAY,CAAE,KAAK,EAAE;AACnC,YAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI;IACrD;EACF;;;;;AAKD,UAAS,oBAAoB,CAAE,QAAQ,EAAE;AACvC,UAAO,QAAQ,CAAC,GAAG,YAAY,QAAQ,GACnC,YAAE;YAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAAA,GACtB,YAAE;YAAI,QAAQ,CAAC,EAAE,CAAC;IAAA;EACvB;;;;;;;;;;;;AAWM,UAAS,iBAAiB,CAAE,KAKlC,EAAY;OAJX,cAAc,GADmB,KAKlC,CAJC,cAAc;OACd,YAAY,GAFqB,KAKlC,CAHC,YAAY;OACZ,gBAAgB,GAHiB,KAKlC,CAFC,gBAAgB;mCAHiB,KAKlC,CADC,mBAAmB;OAAnB,mBAAmB,6CAAG,0BAA0B;;AAEhD,OAAM,wBAAwB,GAAG,2BAA2B,CAAC,EAAE,YAAY,EAAZ,YAAY,EAAE,mBAAmB,EAAnB,mBAAmB,EAAE,CAAC;;AAEnG,UAAO,SAAS,cAAc,CAAE,KAAK,EAAE;AACrC,SAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC;AAC9C,SAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC;;AAEtD,YAAO,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvE;EACF;;;;;;;;;;AASM,UAAS,2BAA2B,CAAE,KAG5C,EAAY;OAFX,YAAY,GAD+B,KAG5C,CAFC,YAAY;mCAD+B,KAG5C,CADC,mBAAmB;OAAnB,mBAAmB,6CAAG,0BAA0B;;AAEhD,UAAO,SAAS,cAAc,CAAE,KAAK,EAAE;AACrC,YAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM;IACvD;;;;;;;;;;;;;;;;;sCCjFI,CAAa;;AAEb,UAAS,SAAS,CAAE,MAAc,EAAU;AACjD,UAAO;uCAAI,IAAI;AAAJ,WAAI;;;YAAM;AACnB,WAAI,uBAAY;AAChB,cAAO,EAAE;AACP,eAAM,EAAN,MAAM;AACN,aAAI,EAAJ,IAAI;QACL;MACF;IAAC;EACH;;AACM,KAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;;AAC5C,KAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;;AAChD,KAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;;;;AAEhD,UAAS,MAAM,CAAE,YAAoB,EAAY;AACtD,UAAO,SAAS,cAAc,CAAE,IAAY,EAAU;AACpD,YAAO;AACL,WAAI,mBAAQ;AACZ,cAAO,EAAE;AACP,YAAG,EAAE,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACtC,eAAM,EAAE;AACN,eAAI,mBAAQ;AACZ,kBAAO,EAAE;AACP,yBAAY,EAAZ,YAAY;AACZ,iBAAI,EAAJ,IAAI;YACL;UACF;QACF;MACF;IACF;EACF;;AAEM,UAAS,aAAa,CAAE,YAAoB,EAAY;AAC7D,UAAO,SAAS,wBAAwB,CAAE,MAAqB,EAAU;AACvE,YAAO;AACL,WAAI,2BAAgB;AACpB,cAAO,EAAE;AACP,qBAAY,EAAZ,YAAY;AACZ,eAAM,EAAN,MAAM;QACP;MACF;IACF;EACF;;AAEM,UAAS,mBAAmB,CAAE,aAA4B,EAAU;AACzE,UAAO;AACL,SAAI,iCAAsB;AAC1B,YAAO,EAAE;AACP,oBAAa,EAAb,aAAa;MACd;IACF;;;;;;;;;;;;AC3DI,KAAM,UAAU,GAAG,mBAAmB;;AACtC,KAAM,qBAAqB,GAAG,mCAAmC;;;;AAGjE,KAAM,MAAM,GAAG,sBAAsB;;AACrC,KAAM,oBAAoB,GAAG,mCAAmC;;AAChE,KAAM,cAAc,GAAG,6BAA6B;;AACpD,KAAM,MAAM,GAAG,sBAAsB;;;;;;;;;;;;sBCqBpB,WAAW;;;;;;kCA7BH,CAAO;;sCACI,CAAa;;oCAC/B,CAAW;;KAAxB,OAAO;;sCACmB,CAAa;;6CACtB,EAAoB;;;;sCAC3B,EAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBpB,UAAS,WAAW,GAK3B;oEAAJ,EAAE;;mCAJJ,eAAe;OAAf,eAAe,wCAAG,EAAE;OACpB,gBAAgB,QAAhB,gBAAgB;6BAChB,SAAS;OAAT,SAAS,kCAAG,4BAAe;uCAC3B,mBAAmB;OAAnB,mBAAmB;;AAEnB,UAAO,qBAAW;YAAI,UAAC,OAAO,EAAE,YAAY,EAAK;AAC/C,WAAM,KAAK,GAAG,4BACZ,mCAAiB,SAAS,CAAC,CAC5B,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;;AAErC,YAAK,CAAC,MAAM,GAAG,SAAS;AACxB,YAAK,kCAAuB,GAAG,mBAAmB;;AAElD,WAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;AAClD,YAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;;AAE1D,gBAAS,CAAC,SAAS,CAAC,UAAC,KAA8B,EAAK;aAAjC,MAAM,GAAR,KAA8B,CAA5B,MAAM;aAAE,YAAY,GAAtB,KAA8B,CAApB,YAAY;aAAE,IAAI,GAA5B,KAA8B,CAAN,IAAI;;;;AAG/C,cAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5D,EAAE,eAAK,EAAI;;AAEV,eAAM,KAAK;QACZ,CAAC;;;AAGF,WAAI,gBAAgB,EAAE;;AACpB,eAAI,gBAAgB,GAAG,EAAE;;AAEzB,gBAAK,CAAC,SAAS,CAAC,YAAM;AACpB,iBAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE;AAClC,iBAAM,WAAW,GAAG,KAAK,kCAAuB,CAAC,SAAS,CAAC;;AAE3D,kBAAK,IAAI,YAAY,IAAI,eAAe,EAAE;AACxC,mBAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC;;;AAG1D,mBAAI,gBAAgB,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;AAC/C,iCAAgB,CAAC,YAAY,CAAC,GAAG,QAAQ;;AAEzC,qBAAM,aAAa,GAAG,eAAe,CAAC,YAAY,CAAC;AACnD,qBAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI;;AAEnD,sBAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC5E,sBAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC3D;cACF;YACF,CAAC;;QACH;;AAED,cAAO,KAAK;MACb;IAAA;EACF;;;;;;;;AClFD;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,6C;;;;;;AC9BA;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA,YAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,IAAI;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe;AACf;AACA;AACA;AACA,eAAc,yBAAyB;AACvC;;AAEA;AACA;AACA;AACA,aAAY,yBAAyB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AClKA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,IAAI;AACf,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,qC;;;;;;AC9BA;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qEAAoE;AACpE;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C,sCAAsC;;AAEjF;AACA;AACA;;AAEA;AACA,oCAAmC,aAAa;AAChD;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qC;;;;;;;AClIA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU;;;;;;;AC1FtC;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG,IAAI;AACP;;AAEA,qC;;;;;;ACnBA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;A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EF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,yBAAwB,mGAAmG;;AAE3H,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;AACV;AACA;;AAEA;AACA;AACA,WAAU;AACV,SAAQ;;AAER;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA,WAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,8CAA6C,YAAY;AACzD;;AAEA,yBAAwB,YAAY;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAQ,GAAG;AACX;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,mCAAkC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEnjB;AACA;AACA,GAAE;;AAEF,yBAAwB,mGAAmG;;AAE3H,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;;AAEA;;AAEA;AACA,yFAAwF,mBAAmB;AAC3G;;AAEA;;AAEA;AACA;;AAEA;AACA,kGAAiG,mBAAmB;AACpH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,mCAAkC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEnjB;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,yBAAwB,mGAAmG;;AAE3H,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4BAA2B,uCAAuC;AAClE;AACA;AACA;AACA;AACA;;AAEA,4BAA2B,2CAA2C;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB;;AAErB;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAqC,EAAE;AACvC,oBAAmB;AACnB;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;;AAEA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","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap d875b5a17a955f485c80\n **/","/* @flow */\nimport {\n defaultSearchStateSelector,\n getSearchSelectors\n} from './selectors'\nimport { search } from './actions'\nimport reduxSearch from './reduxSearch'\nimport reducer from './reducer'\nimport SearchApi from './SearchApi'\n\nexport default reduxSearch\nexport {\n defaultSearchStateSelector,\n getSearchSelectors,\n reducer,\n reduxSearch,\n search as createSearchAction,\n SearchApi\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","/** @flow */\n\n/** Default state selector */\nexport function defaultSearchStateSelector (state) {\n return state.search\n}\n\n/**\n * Creates convenience selectors for the specified resource.\n *\n * @param filterFunction Custom filter function for resources that are computed (not basic maps)\n * @param resourceName eg \"databases\"\n * @param resourceSelector Returns an iterable resouce map for a given, searchable resource.\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getSearchSelectors ({\n filterFunction,\n resourceName,\n resourceSelector,\n searchStateSelector = defaultSearchStateSelector\n}): Object {\n return {\n text: getTextSelector({ resourceName, searchStateSelector }),\n result: getResultSelector({ filterFunction, resourceName, resourceSelector, searchStateSelector }),\n unfilteredResult: getUnfilteredResultSelector({ resourceName, searchStateSelector })\n }\n}\n\n/**\n * Returns the current search text for a given searchable resource.\n *\n * @param resourceName eg \"databases\"\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getTextSelector ({\n resourceName,\n searchStateSelector = defaultSearchStateSelector\n}): Function {\n return function textSelector (state) {\n return searchStateSelector(state)[resourceName].text\n }\n}\n\n/**\n * Creates a default filter function capable of handling Maps and Objects.\n */\nfunction createFilterFunction (resource) {\n return resource.has instanceof Function\n ? id => resource.has(id)\n : id => resource[id]\n}\n\n/**\n * Returns the current result list for a given searchable resource.\n * This list is pre-filtered to ensure that all ids exist within the current resource collection.\n *\n * @param filterFunction Custom filter function for resources that are computed (not basic maps)\n * @param resourceName eg \"databases\"\n * @param resourceSelector Returns an iterable resouce map for a given, searchable resource.\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getResultSelector ({\n filterFunction,\n resourceName,\n resourceSelector,\n searchStateSelector = defaultSearchStateSelector\n}): Function {\n const unfilteredResultSelector = getUnfilteredResultSelector({ resourceName, searchStateSelector })\n\n return function resultSelector (state) {\n const result = unfilteredResultSelector(state)\n const resource = resourceSelector(resourceName, state)\n\n return result.filter(filterFunction || createFilterFunction(resource))\n }\n}\n\n/**\n * Returns the current result list for a given searchable resource.\n * This list is not pre-filtered; see issue #29 for more backstory.\n *\n * @param resourceName eg \"databases\"\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getUnfilteredResultSelector ({\n resourceName,\n searchStateSelector = defaultSearchStateSelector\n}): Function {\n return function resultSelector (state) {\n return searchStateSelector(state)[resourceName].result\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/selectors.js\n **/","/**\n * @flow\n */\nimport {\n ACTION,\n INITIALIZE_RESOURCES,\n SEARCH_API,\n SEARCH,\n RECEIVE_RESULT\n} from './constants'\n\nexport function searchAPI (method: string): Object {\n return (...args) => ({\n type: SEARCH_API,\n payload: {\n method,\n args\n }\n })\n}\nexport const defineIndex = searchAPI('defineIndex')\nexport const indexResource = searchAPI('indexResource')\nexport const performSearch = searchAPI('performSearch')\n\nexport function search (resourceName: string): Function {\n return function searchResource (text: string): Object {\n return {\n type: ACTION,\n payload: {\n api: performSearch(resourceName, text),\n action: {\n type: SEARCH,\n payload: {\n resourceName,\n text\n }\n }\n }\n }\n }\n}\n\nexport function receiveResult (resourceName: string): Function {\n return function receiveResultForResource (result: Array): Object {\n return {\n type: RECEIVE_RESULT,\n payload: {\n resourceName,\n result\n }\n }\n }\n}\n\nexport function initializeResources (resourceNames: Array): Object {\n return {\n type: INITIALIZE_RESOURCES,\n payload: {\n resourceNames\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/actions.js\n **/","/** @flow */\nexport const SEARCH_API = '@@reduxSearch/API'\nexport const SEARCH_STATE_SELECTOR = '@@reduxSearch/searchStateSelector'\n\n// Action constants\nexport const ACTION = '@@reduxSearch/action'\nexport const INITIALIZE_RESOURCES = '@@reduxSearch/initializeResources'\nexport const RECEIVE_RESULT = '@@reduxSearch/receiveResult'\nexport const SEARCH = '@@reduxSearch/search'\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/constants.js\n **/","import { applyMiddleware } from 'redux'\nimport { defaultSearchStateSelector } from './selectors'\nimport * as actions from './actions'\nimport { SEARCH_STATE_SELECTOR } from './constants'\nimport searchMiddleware from './searchMiddleware'\nimport SearchApi from './SearchApi'\n\n/**\n * Creates higher-order search store to be composed with other store enhancers.\n * This function accepts the following, optional parameters (via a params Object):\n * • resourceIndexes:\n * Maps searchable resources to search configurations.\n * Configurations must be one of the following types:\n * (1) an array of searchable field names (eg. [\"name\", \"description\"])\n * (2) a custom indexing function (eg. ({ resources: Iterable, indexDocument: Function }))\n * • resourceSelector:\n * Selector responsible for returning an iterable resouce map for a given, searchable resource.\n * This function should be capable of returning a map for each resource listed in :resourceIndexes.\n * Its signature should look like this: (resourceName: string, state: Object): Iterable\n * If this value is specified then the search index will be automatically built/updated whenever resources change.\n * Ommit this property if you wish to manage the search index manually.\n * • Search:\n * Observable Search API.\n * Defaults to redux-search-supplied SearchApi but can be overriden for testing purposes.\n * Refer to SearchApi.js for more information if you choose to override this.\n * • searchStateSelector:\n * Selects the search sub-state within the state store.\n * Default implementation provided; override if you add searchReducer() to a node other than :search.\n */\nexport default function reduxSearch ({\n resourceIndexes = {},\n resourceSelector,\n searchApi = new SearchApi(),\n searchStateSelector = defaultSearchStateSelector\n} = {}) {\n return createStore => (reducer, initialState) => {\n const store = applyMiddleware(\n searchMiddleware(searchApi)\n )(createStore)(reducer, initialState)\n\n store.search = searchApi\n store[SEARCH_STATE_SELECTOR] = searchStateSelector\n\n const resourceNames = Object.keys(resourceIndexes)\n store.dispatch(actions.initializeResources(resourceNames))\n\n searchApi.subscribe(({ result, resourceName, text }) => {\n // Here we handle item responses\n // It can be fancier, but at its core this is all it is\n store.dispatch(actions.receiveResult(resourceName)(result))\n }, error => {\n // TODO: Somehow handle error; redux-router lets you pass a callback\n throw error\n })\n\n // Auto-index if a :resourceSelector has been provided\n if (resourceSelector) {\n let currentResources = {}\n\n store.subscribe(() => {\n const nextState = store.getState()\n const searchState = store[SEARCH_STATE_SELECTOR](nextState)\n\n for (let resourceName in resourceIndexes) {\n const resource = resourceSelector(resourceName, nextState)\n\n // Only rebuild the search index for resources that have changed\n if (currentResources[resourceName] !== resource) {\n currentResources[resourceName] = resource\n\n const resourceIndex = resourceIndexes[resourceName]\n const searchString = searchState[resourceName].text\n\n store.dispatch(actions.indexResource(resourceName, resourceIndex, resource))\n store.dispatch(actions.search(resourceName)(searchString))\n }\n }\n })\n }\n\n return store\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reduxSearch.js\n **/","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createStore = require('./createStore');\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _utilsCombineReducers = require('./utils/combineReducers');\n\nvar _utilsCombineReducers2 = _interopRequireDefault(_utilsCombineReducers);\n\nvar _utilsBindActionCreators = require('./utils/bindActionCreators');\n\nvar _utilsBindActionCreators2 = _interopRequireDefault(_utilsBindActionCreators);\n\nvar _utilsApplyMiddleware = require('./utils/applyMiddleware');\n\nvar _utilsApplyMiddleware2 = _interopRequireDefault(_utilsApplyMiddleware);\n\nvar _utilsCompose = require('./utils/compose');\n\nvar _utilsCompose2 = _interopRequireDefault(_utilsCompose);\n\nexports.createStore = _createStore2['default'];\nexports.combineReducers = _utilsCombineReducers2['default'];\nexports.bindActionCreators = _utilsBindActionCreators2['default'];\nexports.applyMiddleware = _utilsApplyMiddleware2['default'];\nexports.compose = _utilsCompose2['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/index.js\n ** module id = 6\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = createStore;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utilsIsPlainObject = require('./utils/isPlainObject');\n\nvar _utilsIsPlainObject2 = _interopRequireDefault(_utilsIsPlainObject);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar ActionTypes = {\n INIT: '@@redux/INIT'\n};\n\nexports.ActionTypes = ActionTypes;\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [initialState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, initialState) {\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = initialState;\n var listeners = [];\n var isDispatching = false;\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n listeners.push(listener);\n var isSubscribed = true;\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!_utilsIsPlainObject2['default'](action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n listeners.slice().forEach(function (listener) {\n return listener();\n });\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n };\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/createStore.js\n ** module id = 7\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = isPlainObject;\nvar fnToString = function fnToString(fn) {\n return Function.prototype.toString.call(fn);\n};\nvar objStringValue = fnToString(Object);\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\n\nfunction isPlainObject(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n var proto = typeof obj.constructor === 'function' ? Object.getPrototypeOf(obj) : Object.prototype;\n\n if (proto === null) {\n return true;\n }\n\n var constructor = proto.constructor;\n\n return typeof constructor === 'function' && constructor instanceof constructor && fnToString(constructor) === objStringValue;\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/isPlainObject.js\n ** module id = 8\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = combineReducers;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createStore = require('../createStore');\n\nvar _isPlainObject = require('./isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _mapValues = require('./mapValues');\n\nvar _mapValues2 = _interopRequireDefault(_mapValues);\n\nvar _pick = require('./pick');\n\nvar _pick2 = _interopRequireDefault(_pick);\n\n/* eslint-disable no-console */\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Reducer \"' + key + '\" returned undefined handling ' + actionName + '. ' + 'To ignore an action, you must explicitly return the previous state.';\n}\n\nfunction getUnexpectedStateKeyWarningMessage(inputState, outputState, action) {\n var reducerKeys = Object.keys(outputState);\n var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'initialState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!_isPlainObject2['default'](inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + ({}).toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return reducerKeys.indexOf(key) < 0;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerSanity(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: _createStore.ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\nfunction combineReducers(reducers) {\n var finalReducers = _pick2['default'](reducers, function (val) {\n return typeof val === 'function';\n });\n var sanityError;\n\n try {\n assertReducerSanity(finalReducers);\n } catch (e) {\n sanityError = e;\n }\n\n var defaultState = _mapValues2['default'](finalReducers, function () {\n return undefined;\n });\n\n return function combination(state, action) {\n if (state === undefined) state = defaultState;\n\n if (sanityError) {\n throw sanityError;\n }\n\n var hasChanged = false;\n var finalState = _mapValues2['default'](finalReducers, function (reducer, key) {\n var previousStateForKey = state[key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(key, action);\n throw new Error(errorMessage);\n }\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n return nextStateForKey;\n });\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateKeyWarningMessage(state, finalState, action);\n if (warningMessage) {\n console.error(warningMessage);\n }\n }\n\n return hasChanged ? finalState : state;\n };\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/combineReducers.js\n ** module id = 9\n ** module chunks = 0\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 10\n ** module chunks = 0\n **/","/**\n * Applies a function to every key-value pair inside an object.\n *\n * @param {Object} obj The source object.\n * @param {Function} fn The mapper function that receives the value and the key.\n * @returns {Object} A new object that contains the mapped values for the keys.\n */\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = mapValues;\n\nfunction mapValues(obj, fn) {\n return Object.keys(obj).reduce(function (result, key) {\n result[key] = fn(obj[key], key);\n return result;\n }, {});\n}\n\nmodule.exports = exports[\"default\"];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/mapValues.js\n ** module id = 11\n ** module chunks = 0\n **/","/**\n * Picks key-value pairs from an object where values satisfy a predicate.\n *\n * @param {Object} obj The object to pick from.\n * @param {Function} fn The predicate the values must satisfy to be copied.\n * @returns {Object} The object with the values that satisfied the predicate.\n */\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = pick;\n\nfunction pick(obj, fn) {\n return Object.keys(obj).reduce(function (result, key) {\n if (fn(obj[key])) {\n result[key] = obj[key];\n }\n return result;\n }, {});\n}\n\nmodule.exports = exports[\"default\"];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/pick.js\n ** module id = 12\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = bindActionCreators;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _mapValues = require('./mapValues');\n\nvar _mapValues2 = _interopRequireDefault(_mapValues);\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null || actionCreators === undefined) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n return _mapValues2['default'](actionCreators, function (actionCreator) {\n return bindActionCreator(actionCreator, dispatch);\n });\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/bindActionCreators.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = applyMiddleware;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _compose = require('./compose');\n\nvar _compose2 = _interopRequireDefault(_compose);\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (next) {\n return function (reducer, initialState) {\n var store = next(reducer, initialState);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/applyMiddleware.js\n ** module id = 14\n ** module chunks = 0\n **/","/**\n * Composes single-argument functions from right to left.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing functions from right to\n * left. For example, compose(f, g, h) is identical to arg => f(g(h(arg))).\n */\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = compose;\n\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return function (arg) {\n return funcs.reduceRight(function (composed, f) {\n return f(composed);\n }, arg);\n };\n}\n\nmodule.exports = exports[\"default\"];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/compose.js\n ** module id = 15\n ** module chunks = 0\n **/","import {\n ACTION,\n SEARCH_API\n} from './constants'\n\n/**\n * Middleware for interacting with the search API\n * @param {Search} Search object\n */\nexport default function searchMiddleware (search: Object): Function {\n return ({ dispatch }) => next => action => {\n const { payload } = action\n if (action.type === SEARCH_API) {\n const { method, args } = payload\n return search[method](...args)\n } else if (action.type === ACTION) {\n next(payload.action)\n return dispatch(payload.api)\n } else {\n return next(action)\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/searchMiddleware.js\n **/","/** @flow */\nimport Search from 'js-worker-search'\n\n/**\n * Observable that manages communication between redux-search middleware and the Search utility.\n * This class maps resource names to search indicies and manages subscribers.\n */\nexport default class SubscribableSearchApi {\n\n /**\n * Constructor.\n */\n constructor () {\n this._resourceToSearchMap = {}\n\n // Subscribers\n this._onErrorSubscribers = []\n this._onNextSubscribers = []\n }\n\n /**\n * Subscribe to Search events.\n * Subscribers will be notified each time a Search is performed.\n *\n * Successful searches will call :onNext with the following parameters:\n * >result: An array of uids matching the search\n * >text: Search string\n * >resourceName: Identifies the resource that was searched\n *\n * Failed searches (searches that result in an Error) will call :onError with an Error parameter.\n *\n * This method returns a callback that can be used to unsubscribe from Search events.\n * Just invoke the function without any parameters to unsubscribe.\n */\n subscribe (onNext, onError) {\n this._onNextSubscribers.push(onNext)\n this._onErrorSubscribers.push(onError)\n\n return function dispose () {\n this._onNextSubscribers = this._onNextSubscribers.filter(\n subscriber => subscriber !== onNext\n )\n this._onErrorSubscribers = this._onErrorSubscribers.filter(\n subscriber => subscriber !== onError\n )\n }\n }\n\n /**\n * Builds a searchable index of a set of resources.\n *\n * @param resourceName Uniquely identifies the resource (eg. \"databases\")\n * @param fieldNamesOrIndexFunction This value is passed to reduxSearch() factory during initialization\n * It is either an Array of searchable fields (to be auto-indexed)\n * Or a custom index function to be called with a :resources object and an :indexDocument callback\n * @param resources Map of resource uid to resource (Object)\n */\n indexResource (resourceName, fieldNamesOrIndexFunction, resources) {\n const search = new Search()\n\n if (Array.isArray(fieldNamesOrIndexFunction)) {\n if (resources.forEach instanceof Function) {\n resources.forEach(resource => {\n fieldNamesOrIndexFunction.forEach(field => {\n search.indexDocument(resource.id, resource[field] || '')\n })\n })\n } else {\n for (var key in resources) {\n let resource = resources[key]\n fieldNamesOrIndexFunction.forEach(field => {\n search.indexDocument(resource.id, resource[field] || '')\n })\n }\n }\n } else if (fieldNamesOrIndexFunction instanceof Function) {\n fieldNamesOrIndexFunction({\n indexDocument: search.indexDocument,\n resources\n })\n } else {\n throw Error('Expected resource index to be either an Array of fields or an index function')\n }\n\n this._resourceToSearchMap[resourceName] = search\n }\n\n /**\n * Searches a resource and returns a Promise to be resolved with an array of uids that match the search string.\n * Upon completion (or failure) this method also notifies all current subscribers.\n *\n * @param resourceName Uniquely identifies the resource (eg. \"databases\")\n * @param text Search string\n */\n async performSearch (resourceName, text) {\n try {\n const search = this._resourceToSearchMap[resourceName]\n const result = await search.search(text)\n\n this._notifyNext({\n result,\n text,\n resourceName\n })\n\n return result\n } catch (error) {\n this._notifyError(error)\n\n throw error\n }\n }\n\n /** Notify all subscribes of :onError */\n _notifyError (error) {\n this._onErrorSubscribers.forEach(\n subscriber => subscriber(error)\n )\n }\n\n /** Notify all subscribes of :onNext */\n _notifyNext (data) {\n this._onNextSubscribers.forEach(\n subscriber => subscriber(data)\n )\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/SearchApi.js\n **/","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = undefined;\n\t\n\tvar _SearchApi = __webpack_require__(2);\n\t\n\tvar _SearchApi2 = _interopRequireDefault(_SearchApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _SearchApi2.default;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _util = __webpack_require__(3);\n\t\n\tvar _util2 = _interopRequireDefault(_util);\n\t\n\tvar _worker = __webpack_require__(6);\n\t\n\tvar _worker2 = _interopRequireDefault(_worker);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Search API that uses web workers when available.\n\t * Indexing and searching is performed in the UI thread as a fallback when web workers aren't supported.\n\t */\n\t\n\tvar SearchApi = (function () {\n\t function SearchApi() {\n\t _classCallCheck(this, SearchApi);\n\t\n\t // Based on https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers\n\t // But with added check for Node environment\n\t if (typeof window !== 'undefined' && window.Worker) {\n\t this._search = new _worker2.default();\n\t } else {\n\t this._search = new _util2.default();\n\t }\n\t\n\t // Prevent methods from losing context when passed around.\n\t this.indexDocument = this.indexDocument.bind(this);\n\t\n\t if (!(typeof this.indexDocument === 'function')) {\n\t throw new TypeError('Value of \"this.indexDocument\" violates contract, expected (any, string) => SearchApi got ' + (this.indexDocument === null ? 'null' : _typeof(this.indexDocument) === 'object' && this.indexDocument.constructor ? this.indexDocument.constructor.name || '[Unknown Object]' : _typeof(this.indexDocument)));\n\t }\n\t\n\t this.search = this.search.bind(this);\n\t\n\t if (!(typeof this.search === 'function')) {\n\t throw new TypeError('Value of \"this.search\" violates contract, expected (string) => Promise got ' + (this.search === null ? 'null' : _typeof(this.search) === 'object' && this.search.constructor ? this.search.constructor.name || '[Unknown Object]' : _typeof(this.search)));\n\t }\n\t }\n\t\n\t /**\n\t * Adds or updates a uid in the search index and associates it with the specified text.\n\t * Note that at this time uids can only be added or updated in the index, not removed.\n\t *\n\t * @param uid Uniquely identifies a searchable object\n\t * @param text Text to associate with uid\n\t */\n\t\n\t _createClass(SearchApi, [{\n\t key: 'indexDocument',\n\t value: function indexDocument(uid, text) {\n\t function _ref(_id) {\n\t if (!(_id instanceof SearchApi)) {\n\t throw new TypeError('Function return value violates contract, expected SearchApi got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\n\t }\n\t\n\t return _id;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t this._search.indexDocument(uid, text);\n\t\n\t return _ref(this);\n\t }\n\t\n\t /**\n\t * Searches the current index for the specified query text.\n\t * Only uids matching all of the words within the text will be accepted.\n\t * If an empty query string is provided all indexed uids will be returned.\n\t *\n\t * Document searches are case-insensitive (e.g. \"search\" will match \"Search\").\n\t * Document searches use substring matching (e.g. \"na\" and \"me\" will both match \"name\").\n\t *\n\t * @param query Searchable query text\n\t * @return Promise to be resolved with an Array of matching uids\n\t */\n\t\n\t }, {\n\t key: 'search',\n\t value: function search(query) {\n\t function _ref2(_id2) {\n\t if (!(_id2 instanceof Promise)) {\n\t throw new TypeError('Function return value violates contract, expected Promise got ' + (_id2 === null ? 'null' : (typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)));\n\t }\n\t\n\t return _id2;\n\t }\n\t\n\t if (!(typeof query === 'string')) {\n\t throw new TypeError('Value of argument \"query\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\n\t }\n\t\n\t // Promise.resolve handles both synchronous and web-worker Search utilities\n\t return _ref2(Promise.resolve(this._search.search(query)));\n\t }\n\t }]);\n\t\n\t return SearchApi;\n\t})();\n\t\n\texports.default = SearchApi;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = undefined;\n\t\n\tvar _SearchUtility = __webpack_require__(4);\n\t\n\tvar _SearchUtility2 = _interopRequireDefault(_SearchUtility);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _SearchUtility2.default;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _SearchIndex = __webpack_require__(5);\n\t\n\tvar _SearchIndex2 = _interopRequireDefault(_SearchIndex);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Synchronous client-side full-text search utility.\n\t * Forked from JS search (github.com/bvaughn/js-search).\n\t */\n\t\n\tvar SearchUtility = (function () {\n\t\n\t /**\n\t * Constructor.\n\t */\n\t\n\t function SearchUtility() {\n\t _classCallCheck(this, SearchUtility);\n\t\n\t this.searchIndex = new _SearchIndex2.default();\n\t this.uids = {};\n\t }\n\t\n\t /**\n\t * Adds or updates a uid in the search index and associates it with the specified text.\n\t * Note that at this time uids can only be added or updated in the index, not removed.\n\t *\n\t * @param uid Uniquely identifies a searchable object\n\t * @param text Text to associate with uid\n\t */\n\t\n\t _createClass(SearchUtility, [{\n\t key: 'indexDocument',\n\t value: function indexDocument(uid, text) {\n\t var _this = this;\n\t\n\t function _ref(_id) {\n\t if (!(_id instanceof SearchUtility)) {\n\t throw new TypeError('Function return value violates contract, expected SearchUtility got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\n\t }\n\t\n\t return _id;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t this.uids[uid] = true;\n\t\n\t var fieldTokens = this._tokenize(this._sanitize(text));\n\t\n\t if (!(Array.isArray(fieldTokens) && fieldTokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Value of variable \"fieldTokens\" violates contract, expected Array got ' + (fieldTokens === null ? 'null' : (typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)) === 'object' && fieldTokens.constructor ? fieldTokens.constructor.name || '[Unknown Object]' : typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)));\n\t }\n\t\n\t fieldTokens.forEach(function (fieldToken) {\n\t var expandedTokens = _this._expandToken(fieldToken);\n\t\n\t if (!(Array.isArray(expandedTokens) && expandedTokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Value of variable \"expandedTokens\" violates contract, expected Array got ' + (expandedTokens === null ? 'null' : (typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)) === 'object' && expandedTokens.constructor ? expandedTokens.constructor.name || '[Unknown Object]' : typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)));\n\t }\n\t\n\t expandedTokens.forEach(function (expandedToken) {\n\t return _this.searchIndex.indexDocument(expandedToken, uid);\n\t });\n\t });\n\t\n\t return _ref(this);\n\t }\n\t\n\t /**\n\t * Searches the current index for the specified query text.\n\t * Only uids matching all of the words within the text will be accepted.\n\t * If an empty query string is provided all indexed uids will be returned.\n\t *\n\t * Document searches are case-insensitive (e.g. \"search\" will match \"Search\").\n\t * Document searches use substring matching (e.g. \"na\" and \"me\" will both match \"name\").\n\t *\n\t * @param query Searchable query text\n\t * @return Array of uids\n\t */\n\t\n\t }, {\n\t key: 'search',\n\t value: function search(query) {\n\t function _ref2(_id2) {\n\t if (!Array.isArray(_id2)) {\n\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id2 === null ? 'null' : (typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)));\n\t }\n\t\n\t return _id2;\n\t }\n\t\n\t if (!(typeof query === 'string')) {\n\t throw new TypeError('Value of argument \"query\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\n\t }\n\t\n\t if (!query) {\n\t return _ref2(Object.keys(this.uids));\n\t } else {\n\t var tokens = this._tokenize(this._sanitize(query));\n\t\n\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Value of variable \"tokens\" violates contract, expected Array got ' + (tokens === null ? 'null' : (typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)));\n\t }\n\t\n\t return _ref2(this.searchIndex.search(tokens));\n\t }\n\t }\n\t\n\t /**\n\t * Index strategy based on 'all-substrings-index-strategy.ts' in github.com/bvaughn/js-search/\n\t *\n\t * @private\n\t */\n\t\n\t }, {\n\t key: '_expandToken',\n\t value: function _expandToken(token) {\n\t function _ref3(_id3) {\n\t if (!(Array.isArray(_id3) && _id3.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id3 === null ? 'null' : (typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)) === 'object' && _id3.constructor ? _id3.constructor.name || '[Unknown Object]' : typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)));\n\t }\n\t\n\t return _id3;\n\t }\n\t\n\t if (!(typeof token === 'string')) {\n\t throw new TypeError('Value of argument \"token\" violates contract, expected string got ' + (token === null ? 'null' : (typeof token === 'undefined' ? 'undefined' : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === 'undefined' ? 'undefined' : _typeof(token)));\n\t }\n\t\n\t var expandedTokens = [];\n\t\n\t for (var i = 0, length = token.length; i < length; ++i) {\n\t var prefixString = '';\n\t\n\t for (var j = i; j < length; ++j) {\n\t prefixString += token.charAt(j);\n\t\n\t if (!(typeof prefixString === 'string')) {\n\t throw new TypeError('Value of variable \"prefixString\" violates contract, expected string got ' + (prefixString === null ? 'null' : (typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)) === 'object' && prefixString.constructor ? prefixString.constructor.name || '[Unknown Object]' : typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)));\n\t }\n\t\n\t expandedTokens.push(prefixString);\n\t }\n\t }\n\t\n\t return _ref3(expandedTokens);\n\t }\n\t\n\t /**\n\t * @private\n\t */\n\t\n\t }, {\n\t key: '_sanitize',\n\t value: function _sanitize(string) {\n\t function _ref4(_id4) {\n\t if (!(typeof _id4 === 'string')) {\n\t throw new TypeError('Function return value violates contract, expected string got ' + (_id4 === null ? 'null' : (typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)) === 'object' && _id4.constructor ? _id4.constructor.name || '[Unknown Object]' : typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)));\n\t }\n\t\n\t return _id4;\n\t }\n\t\n\t if (!(typeof string === 'string')) {\n\t throw new TypeError('Value of argument \"string\" violates contract, expected string got ' + (string === null ? 'null' : (typeof string === 'undefined' ? 'undefined' : _typeof(string)) === 'object' && string.constructor ? string.constructor.name || '[Unknown Object]' : typeof string === 'undefined' ? 'undefined' : _typeof(string)));\n\t }\n\t\n\t return _ref4(string.trim().toLocaleLowerCase());\n\t }\n\t\n\t /**\n\t * @private\n\t */\n\t\n\t }, {\n\t key: '_tokenize',\n\t value: function _tokenize(text) {\n\t function _ref5(_id5) {\n\t if (!(Array.isArray(_id5) && _id5.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id5 === null ? 'null' : (typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)) === 'object' && _id5.constructor ? _id5.constructor.name || '[Unknown Object]' : typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)));\n\t }\n\t\n\t return _id5;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t return _ref5(text.split(/\\s+/).filter(function (text) {\n\t return text;\n\t })); // Remove empty tokens\n\t }\n\t }]);\n\t\n\t return SearchUtility;\n\t})();\n\t\n\texports.default = SearchUtility;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Maps search tokens to uids.\n\t * This structure is used by the Search class to optimize search operations.\n\t * Forked from JS search (github.com/bvaughn/js-search).\n\t */\n\t\n\tvar SearchIndex = (function () {\n\t function SearchIndex() {\n\t _classCallCheck(this, SearchIndex);\n\t\n\t this.tokenToUidMap = {};\n\t }\n\t\n\t /**\n\t * Maps the specified token to a uid.\n\t *\n\t * @param token Searchable token (e.g. \"road\")\n\t * @param uid Identifies a document within the searchable corpus\n\t */\n\t\n\t _createClass(SearchIndex, [{\n\t key: \"indexDocument\",\n\t value: function indexDocument(token, uid) {\n\t if (!(typeof token === 'string')) {\n\t throw new TypeError(\"Value of argument \\\"token\\\" violates contract, expected string got \" + (token === null ? 'null' : (typeof token === \"undefined\" ? \"undefined\" : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === \"undefined\" ? \"undefined\" : _typeof(token)));\n\t }\n\t\n\t if (!this.tokenToUidMap[token]) {\n\t this.tokenToUidMap[token] = {};\n\t }\n\t\n\t this.tokenToUidMap[token][uid] = uid;\n\t }\n\t\n\t /**\n\t * Finds uids that have been mapped to the set of tokens specified.\n\t * Only uids that have been mapped to all tokens will be returned.\n\t *\n\t * @param tokens Array of searchable tokens (e.g. [\"long\", \"road\"])\n\t * @return Array of uids that have been associated with the set of search tokens\n\t */\n\t\n\t }, {\n\t key: \"search\",\n\t value: function search(tokens) {\n\t var _this = this;\n\t\n\t function _ref2(_id2) {\n\t if (!Array.isArray(_id2)) {\n\t throw new TypeError(\"Function return value violates contract, expected Array got \" + (_id2 === null ? 'null' : (typeof _id2 === \"undefined\" ? \"undefined\" : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === \"undefined\" ? \"undefined\" : _typeof(_id2)));\n\t }\n\t\n\t return _id2;\n\t }\n\t\n\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError(\"Value of argument \\\"tokens\\\" violates contract, expected Array got \" + (tokens === null ? 'null' : (typeof tokens === \"undefined\" ? \"undefined\" : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === \"undefined\" ? \"undefined\" : _typeof(tokens)));\n\t }\n\t\n\t var uidMap = {};\n\t\n\t if (!(uidMap != null && (typeof uidMap === \"undefined\" ? \"undefined\" : _typeof(uidMap)) === 'object')) {\n\t throw new TypeError(\"Value of variable \\\"uidMap\\\" violates contract, expected { [uid: any]: any\\n} got \" + (uidMap === null ? 'null' : (typeof uidMap === \"undefined\" ? \"undefined\" : _typeof(uidMap)) === 'object' && uidMap.constructor ? uidMap.constructor.name || '[Unknown Object]' : typeof uidMap === \"undefined\" ? \"undefined\" : _typeof(uidMap)));\n\t }\n\t\n\t var initialized = false;\n\t\n\t tokens.forEach(function (token) {\n\t var currentUidMap = _this.tokenToUidMap[token] || {};\n\t\n\t if (!(currentUidMap != null && (typeof currentUidMap === \"undefined\" ? \"undefined\" : _typeof(currentUidMap)) === 'object')) {\n\t throw new TypeError(\"Value of variable \\\"currentUidMap\\\" violates contract, expected { [uid: any]: any\\n} got \" + (currentUidMap === null ? 'null' : (typeof currentUidMap === \"undefined\" ? \"undefined\" : _typeof(currentUidMap)) === 'object' && currentUidMap.constructor ? currentUidMap.constructor.name || '[Unknown Object]' : typeof currentUidMap === \"undefined\" ? \"undefined\" : _typeof(currentUidMap)));\n\t }\n\t\n\t if (!initialized) {\n\t initialized = true;\n\t\n\t for (var _uid in currentUidMap) {\n\t uidMap[_uid] = currentUidMap[_uid];\n\t }\n\t } else {\n\t for (var _uid2 in uidMap) {\n\t if (!currentUidMap[_uid2]) {\n\t delete uidMap[_uid2];\n\t }\n\t }\n\t }\n\t });\n\t\n\t var uids = [];\n\t\n\t if (!Array.isArray(uids)) {\n\t throw new TypeError(\"Value of variable \\\"uids\\\" violates contract, expected Array got \" + (uids === null ? 'null' : (typeof uids === \"undefined\" ? \"undefined\" : _typeof(uids)) === 'object' && uids.constructor ? uids.constructor.name || '[Unknown Object]' : typeof uids === \"undefined\" ? \"undefined\" : _typeof(uids)));\n\t }\n\t\n\t for (var _uid3 in uidMap) {\n\t uids.push(uidMap[_uid3]);\n\t }\n\t\n\t return _ref2(uids);\n\t }\n\t }]);\n\t\n\t return SearchIndex;\n\t})();\n\t\n\texports.default = SearchIndex;\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = undefined;\n\t\n\tvar _SearchWorkerLoader = __webpack_require__(7);\n\t\n\tvar _SearchWorkerLoader2 = _interopRequireDefault(_SearchWorkerLoader);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _SearchWorkerLoader2.default;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _uuid = __webpack_require__(8);\n\t\n\tvar _uuid2 = _interopRequireDefault(_uuid);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Client side, full text search utility.\n\t * This interface exposes web worker search capabilities to the UI thread.\n\t */\n\t\n\tvar SearchWorkerLoader = (function () {\n\t\n\t /**\n\t * Constructor.\n\t */\n\t\n\t function SearchWorkerLoader(WorkerClass) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, SearchWorkerLoader);\n\t\n\t // Defer worker import until construction to avoid testing error:\n\t // Error: Cannot find module 'worker!./[workername]'\n\t if (!WorkerClass) {\n\t WorkerClass = __webpack_require__(10);\n\t }\n\t\n\t // Maintain context if references are passed around\n\t this.indexDocument = this.indexDocument.bind(this);\n\t\n\t if (!(typeof this.indexDocument === 'function')) {\n\t throw new TypeError('Value of \"this.indexDocument\" violates contract, expected (any, string) => SearchWorkerLoader got ' + (this.indexDocument === null ? 'null' : _typeof(this.indexDocument) === 'object' && this.indexDocument.constructor ? this.indexDocument.constructor.name || '[Unknown Object]' : _typeof(this.indexDocument)));\n\t }\n\t\n\t this.search = this.search.bind(this);\n\t\n\t if (!(typeof this.search === 'function')) {\n\t throw new TypeError('Value of \"this.search\" violates contract, expected (string) => Promise got ' + (this.search === null ? 'null' : _typeof(this.search) === 'object' && this.search.constructor ? this.search.constructor.name || '[Unknown Object]' : _typeof(this.search)));\n\t }\n\t\n\t this.callbackQueue = [];\n\t this.callbackIdMap = {};\n\t\n\t this.worker = new WorkerClass();\n\t this.worker.onerror = function (event) {\n\t var _event$data = event.data;\n\t var callbackId = _event$data.callbackId;\n\t var error = _event$data.error;\n\t\n\t _this._updateQueue({ callbackId: callbackId, error: error });\n\t };\n\t this.worker.onmessage = function (event) {\n\t var _event$data2 = event.data;\n\t var callbackId = _event$data2.callbackId;\n\t var results = _event$data2.results;\n\t\n\t _this._updateQueue({ callbackId: callbackId, results: results });\n\t };\n\t }\n\t\n\t /**\n\t * Adds or updates a uid in the search index and associates it with the specified text.\n\t * Note that at this time uids can only be added or updated in the index, not removed.\n\t *\n\t * @param uid Uniquely identifies a searchable object\n\t * @param text Text to associate with uid\n\t */\n\t\n\t _createClass(SearchWorkerLoader, [{\n\t key: 'indexDocument',\n\t value: function indexDocument(uid, text) {\n\t function _ref(_id) {\n\t if (!(_id instanceof SearchWorkerLoader)) {\n\t throw new TypeError('Function return value violates contract, expected SearchWorkerLoader got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\n\t }\n\t\n\t return _id;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t this.worker.postMessage({\n\t method: 'indexDocument',\n\t text: text,\n\t uid: uid\n\t });\n\t\n\t return _ref(this);\n\t }\n\t\n\t /**\n\t * Searches the current index for the specified query text.\n\t * Only uids matching all of the words within the text will be accepted.\n\t * If an empty query string is provided all indexed uids will be returned.\n\t *\n\t * Document searches are case-insensitive (e.g. \"search\" will match \"Search\").\n\t * Document searches use substring matching (e.g. \"na\" and \"me\" will both match \"name\").\n\t *\n\t * @param query Searchable query text\n\t * @return Promise to be resolved with an array of uids\n\t */\n\t\n\t }, {\n\t key: 'search',\n\t value: function search(query) {\n\t var _this2 = this;\n\t\n\t if (!(typeof query === 'string')) {\n\t throw new TypeError('Value of argument \"query\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\n\t }\n\t\n\t return new Promise(function (resolve, reject) {\n\t var callbackId = _uuid2.default.v4();\n\t var data = { callbackId: callbackId, reject: reject, resolve: resolve };\n\t\n\t _this2.worker.postMessage({\n\t method: 'search',\n\t query: query,\n\t callbackId: callbackId\n\t });\n\t\n\t _this2.callbackQueue.push(data);\n\t _this2.callbackIdMap[callbackId] = data;\n\t });\n\t }\n\t\n\t /**\n\t * Updates the queue and flushes any completed promises that are ready.\n\t */\n\t\n\t }, {\n\t key: '_updateQueue',\n\t value: function _updateQueue(_ref3) {\n\t var callbackId = _ref3.callbackId;\n\t var error = _ref3.error;\n\t var results = _ref3.results;\n\t\n\t var target = this.callbackIdMap[callbackId];\n\t target.complete = true;\n\t target.error = error;\n\t target.results = results;\n\t\n\t while (this.callbackQueue.length) {\n\t var data = this.callbackQueue[0];\n\t\n\t if (!data.complete) {\n\t break;\n\t }\n\t\n\t this.callbackQueue.shift();\n\t\n\t delete this.callbackIdMap[data.callbackId];\n\t\n\t if (data.error) {\n\t data.reject(data.error);\n\t } else {\n\t data.resolve(data.results);\n\t }\n\t }\n\t }\n\t }]);\n\t\n\t return SearchWorkerLoader;\n\t})();\n\t\n\texports.default = SearchWorkerLoader;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// uuid.js\n\t//\n\t// Copyright (c) 2010-2012 Robert Kieffer\n\t// MIT License - http://opensource.org/licenses/mit-license.php\n\t\n\t// Unique ID creation requires a high quality random # generator. We feature\n\t// detect to determine the best RNG source, normalizing to a function that\n\t// returns 128-bits of randomness, since that's what's usually required\n\tvar _rng = __webpack_require__(9);\n\t\n\t// Maps for number <-> hex string conversion\n\tvar _byteToHex = [];\n\tvar _hexToByte = {};\n\tfor (var i = 0; i < 256; i++) {\n\t _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n\t _hexToByte[_byteToHex[i]] = i;\n\t}\n\t\n\t// **`parse()` - Parse a UUID into it's component bytes**\n\tfunction parse(s, buf, offset) {\n\t var i = (buf && offset) || 0, ii = 0;\n\t\n\t buf = buf || [];\n\t s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {\n\t if (ii < 16) { // Don't overflow!\n\t buf[i + ii++] = _hexToByte[oct];\n\t }\n\t });\n\t\n\t // Zero out remaining bytes if string was short\n\t while (ii < 16) {\n\t buf[i + ii++] = 0;\n\t }\n\t\n\t return buf;\n\t}\n\t\n\t// **`unparse()` - Convert UUID byte array (ala parse()) into a string**\n\tfunction unparse(buf, offset) {\n\t var i = offset || 0, bth = _byteToHex;\n\t return bth[buf[i++]] + bth[buf[i++]] +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] +\n\t bth[buf[i++]] + bth[buf[i++]] +\n\t bth[buf[i++]] + bth[buf[i++]];\n\t}\n\t\n\t// **`v1()` - Generate time-based UUID**\n\t//\n\t// Inspired by https://github.com/LiosK/UUID.js\n\t// and http://docs.python.org/library/uuid.html\n\t\n\t// random #'s we need to init node and clockseq\n\tvar _seedBytes = _rng();\n\t\n\t// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n\tvar _nodeId = [\n\t _seedBytes[0] | 0x01,\n\t _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]\n\t];\n\t\n\t// Per 4.2.2, randomize (14 bit) clockseq\n\tvar _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\t\n\t// Previous uuid creation time\n\tvar _lastMSecs = 0, _lastNSecs = 0;\n\t\n\t// See https://github.com/broofa/node-uuid for API details\n\tfunction v1(options, buf, offset) {\n\t var i = buf && offset || 0;\n\t var b = buf || [];\n\t\n\t options = options || {};\n\t\n\t var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\t\n\t // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n\t // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n\t // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n\t // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\t var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\t\n\t // Per 4.2.1.2, use count of uuid's generated during the current clock\n\t // cycle to simulate higher resolution clock\n\t var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\t\n\t // Time since last uuid creation (in msecs)\n\t var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\t\n\t // Per 4.2.1.2, Bump clockseq on clock regression\n\t if (dt < 0 && options.clockseq === undefined) {\n\t clockseq = clockseq + 1 & 0x3fff;\n\t }\n\t\n\t // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n\t // time interval\n\t if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n\t nsecs = 0;\n\t }\n\t\n\t // Per 4.2.1.2 Throw error if too many uuids are requested\n\t if (nsecs >= 10000) {\n\t throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n\t }\n\t\n\t _lastMSecs = msecs;\n\t _lastNSecs = nsecs;\n\t _clockseq = clockseq;\n\t\n\t // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\t msecs += 12219292800000;\n\t\n\t // `time_low`\n\t var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n\t b[i++] = tl >>> 24 & 0xff;\n\t b[i++] = tl >>> 16 & 0xff;\n\t b[i++] = tl >>> 8 & 0xff;\n\t b[i++] = tl & 0xff;\n\t\n\t // `time_mid`\n\t var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n\t b[i++] = tmh >>> 8 & 0xff;\n\t b[i++] = tmh & 0xff;\n\t\n\t // `time_high_and_version`\n\t b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\t b[i++] = tmh >>> 16 & 0xff;\n\t\n\t // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\t b[i++] = clockseq >>> 8 | 0x80;\n\t\n\t // `clock_seq_low`\n\t b[i++] = clockseq & 0xff;\n\t\n\t // `node`\n\t var node = options.node || _nodeId;\n\t for (var n = 0; n < 6; n++) {\n\t b[i + n] = node[n];\n\t }\n\t\n\t return buf ? buf : unparse(b);\n\t}\n\t\n\t// **`v4()` - Generate random UUID**\n\t\n\t// See https://github.com/broofa/node-uuid for API details\n\tfunction v4(options, buf, offset) {\n\t // Deprecated - 'format' argument, as supported in v1.2\n\t var i = buf && offset || 0;\n\t\n\t if (typeof(options) == 'string') {\n\t buf = options == 'binary' ? new Array(16) : null;\n\t options = null;\n\t }\n\t options = options || {};\n\t\n\t var rnds = options.random || (options.rng || _rng)();\n\t\n\t // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\t rnds[6] = (rnds[6] & 0x0f) | 0x40;\n\t rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\t\n\t // Copy bytes to buffer, if provided\n\t if (buf) {\n\t for (var ii = 0; ii < 16; ii++) {\n\t buf[i + ii] = rnds[ii];\n\t }\n\t }\n\t\n\t return buf || unparse(rnds);\n\t}\n\t\n\t// Export public API\n\tvar uuid = v4;\n\tuuid.v1 = v1;\n\tuuid.v4 = v4;\n\tuuid.parse = parse;\n\tuuid.unparse = unparse;\n\t\n\tmodule.exports = uuid;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\n\tvar rng;\n\t\n\tif (global.crypto && crypto.getRandomValues) {\n\t // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto\n\t // Moderately fast, high quality\n\t var _rnds8 = new Uint8Array(16);\n\t rng = function whatwgRNG() {\n\t crypto.getRandomValues(_rnds8);\n\t return _rnds8;\n\t };\n\t}\n\t\n\tif (!rng) {\n\t // Math.random()-based (RNG)\n\t //\n\t // If all else fails, use Math.random(). It's fast, but is of unspecified\n\t // quality.\n\t var _rnds = new Array(16);\n\t rng = function() {\n\t for (var i = 0, r; i < 16; i++) {\n\t if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n\t _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n\t }\n\t\n\t return _rnds;\n\t };\n\t}\n\t\n\tmodule.exports = rng;\n\t\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = function() {\n\t\treturn __webpack_require__(11)(\"/******/ (function(modules) { // webpackBootstrap\\n/******/ \\t// The module cache\\n/******/ \\tvar installedModules = {};\\n/******/\\n/******/ \\t// The require function\\n/******/ \\tfunction __webpack_require__(moduleId) {\\n/******/\\n/******/ \\t\\t// Check if module is in cache\\n/******/ \\t\\tif(installedModules[moduleId])\\n/******/ \\t\\t\\treturn installedModules[moduleId].exports;\\n/******/\\n/******/ \\t\\t// Create a new module (and put it into the cache)\\n/******/ \\t\\tvar module = installedModules[moduleId] = {\\n/******/ \\t\\t\\texports: {},\\n/******/ \\t\\t\\tid: moduleId,\\n/******/ \\t\\t\\tloaded: false\\n/******/ \\t\\t};\\n/******/\\n/******/ \\t\\t// Execute the module function\\n/******/ \\t\\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n/******/\\n/******/ \\t\\t// Flag the module as loaded\\n/******/ \\t\\tmodule.loaded = true;\\n/******/\\n/******/ \\t\\t// Return the exports of the module\\n/******/ \\t\\treturn module.exports;\\n/******/ \\t}\\n/******/\\n/******/\\n/******/ \\t// expose the modules object (__webpack_modules__)\\n/******/ \\t__webpack_require__.m = modules;\\n/******/\\n/******/ \\t// expose the module cache\\n/******/ \\t__webpack_require__.c = installedModules;\\n/******/\\n/******/ \\t// __webpack_public_path__\\n/******/ \\t__webpack_require__.p = \\\"\\\";\\n/******/\\n/******/ \\t// Load entry module and return exports\\n/******/ \\treturn __webpack_require__(0);\\n/******/ })\\n/************************************************************************/\\n/******/ ([\\n/* 0 */\\n/***/ function(module, exports, __webpack_require__) {\\n\\n\\t'use strict';\\n\\t\\n\\tvar _util = __webpack_require__(1);\\n\\t\\n\\tvar _util2 = _interopRequireDefault(_util);\\n\\t\\n\\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\t\\n\\t/**\\n\\t * Search entry point to web worker.\\n\\t * Builds search index and performs searches on separate thread from the ui.\\n\\t */\\n\\t\\n\\tvar searchUtility = new _util2.default();\\n\\t\\n\\tself.addEventListener('message', function (event) {\\n\\t var data = event.data;\\n\\t var method = data.method;\\n\\t\\n\\t switch (method) {\\n\\t case 'indexDocument':\\n\\t var uid = data.uid;\\n\\t var text = data.text;\\n\\t\\n\\t searchUtility.indexDocument(uid, text);\\n\\t break;\\n\\t case 'search':\\n\\t var callbackId = data.callbackId;\\n\\t var query = data.query;\\n\\t\\n\\t var results = searchUtility.search(query);\\n\\t\\n\\t self.postMessage({ callbackId: callbackId, results: results });\\n\\t break;\\n\\t }\\n\\t}, false);\\n\\n/***/ },\\n/* 1 */\\n/***/ function(module, exports, __webpack_require__) {\\n\\n\\t'use strict';\\n\\t\\n\\tObject.defineProperty(exports, \\\"__esModule\\\", {\\n\\t value: true\\n\\t});\\n\\texports.default = undefined;\\n\\t\\n\\tvar _SearchUtility = __webpack_require__(2);\\n\\t\\n\\tvar _SearchUtility2 = _interopRequireDefault(_SearchUtility);\\n\\t\\n\\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\t\\n\\texports.default = _SearchUtility2.default;\\n\\n/***/ },\\n/* 2 */\\n/***/ function(module, exports, __webpack_require__) {\\n\\n\\t'use strict';\\n\\t\\n\\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\\n\\t\\n\\tObject.defineProperty(exports, \\\"__esModule\\\", {\\n\\t value: true\\n\\t});\\n\\t\\n\\tvar _SearchIndex = __webpack_require__(3);\\n\\t\\n\\tvar _SearchIndex2 = _interopRequireDefault(_SearchIndex);\\n\\t\\n\\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\t\\n\\tfunction _typeof(obj) { return obj && typeof Symbol !== \\\"undefined\\\" && obj.constructor === Symbol ? \\\"symbol\\\" : typeof obj; }\\n\\t\\n\\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\t\\n\\t/**\\n\\t * Synchronous client-side full-text search utility.\\n\\t * Forked from JS search (github.com/bvaughn/js-search).\\n\\t */\\n\\t\\n\\tvar SearchUtility = (function () {\\n\\t\\n\\t /**\\n\\t * Constructor.\\n\\t */\\n\\t\\n\\t function SearchUtility() {\\n\\t _classCallCheck(this, SearchUtility);\\n\\t\\n\\t this.searchIndex = new _SearchIndex2.default();\\n\\t this.uids = {};\\n\\t }\\n\\t\\n\\t /**\\n\\t * Adds or updates a uid in the search index and associates it with the specified text.\\n\\t * Note that at this time uids can only be added or updated in the index, not removed.\\n\\t *\\n\\t * @param uid Uniquely identifies a searchable object\\n\\t * @param text Text to associate with uid\\n\\t */\\n\\t\\n\\t _createClass(SearchUtility, [{\\n\\t key: 'indexDocument',\\n\\t value: function indexDocument(uid, text) {\\n\\t var _this = this;\\n\\t\\n\\t function _ref(_id) {\\n\\t if (!(_id instanceof SearchUtility)) {\\n\\t throw new TypeError('Function return value violates contract, expected SearchUtility got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\\n\\t }\\n\\t\\n\\t return _id;\\n\\t }\\n\\t\\n\\t if (!(typeof text === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"text\\\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\\n\\t }\\n\\t\\n\\t this.uids[uid] = true;\\n\\t\\n\\t var fieldTokens = this._tokenize(this._sanitize(text));\\n\\t\\n\\t if (!(Array.isArray(fieldTokens) && fieldTokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Value of variable \\\"fieldTokens\\\" violates contract, expected Array got ' + (fieldTokens === null ? 'null' : (typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)) === 'object' && fieldTokens.constructor ? fieldTokens.constructor.name || '[Unknown Object]' : typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)));\\n\\t }\\n\\t\\n\\t fieldTokens.forEach(function (fieldToken) {\\n\\t var expandedTokens = _this._expandToken(fieldToken);\\n\\t\\n\\t if (!(Array.isArray(expandedTokens) && expandedTokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Value of variable \\\"expandedTokens\\\" violates contract, expected Array got ' + (expandedTokens === null ? 'null' : (typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)) === 'object' && expandedTokens.constructor ? expandedTokens.constructor.name || '[Unknown Object]' : typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)));\\n\\t }\\n\\t\\n\\t expandedTokens.forEach(function (expandedToken) {\\n\\t return _this.searchIndex.indexDocument(expandedToken, uid);\\n\\t });\\n\\t });\\n\\t\\n\\t return _ref(this);\\n\\t }\\n\\t\\n\\t /**\\n\\t * Searches the current index for the specified query text.\\n\\t * Only uids matching all of the words within the text will be accepted.\\n\\t * If an empty query string is provided all indexed uids will be returned.\\n\\t *\\n\\t * Document searches are case-insensitive (e.g. \\\"search\\\" will match \\\"Search\\\").\\n\\t * Document searches use substring matching (e.g. \\\"na\\\" and \\\"me\\\" will both match \\\"name\\\").\\n\\t *\\n\\t * @param query Searchable query text\\n\\t * @return Array of uids\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: 'search',\\n\\t value: function search(query) {\\n\\t function _ref2(_id2) {\\n\\t if (!Array.isArray(_id2)) {\\n\\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id2 === null ? 'null' : (typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)));\\n\\t }\\n\\t\\n\\t return _id2;\\n\\t }\\n\\t\\n\\t if (!(typeof query === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"query\\\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\\n\\t }\\n\\t\\n\\t if (!query) {\\n\\t return _ref2(Object.keys(this.uids));\\n\\t } else {\\n\\t var tokens = this._tokenize(this._sanitize(query));\\n\\t\\n\\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Value of variable \\\"tokens\\\" violates contract, expected Array got ' + (tokens === null ? 'null' : (typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)));\\n\\t }\\n\\t\\n\\t return _ref2(this.searchIndex.search(tokens));\\n\\t }\\n\\t }\\n\\t\\n\\t /**\\n\\t * Index strategy based on 'all-substrings-index-strategy.ts' in github.com/bvaughn/js-search/\\n\\t *\\n\\t * @private\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: '_expandToken',\\n\\t value: function _expandToken(token) {\\n\\t function _ref3(_id3) {\\n\\t if (!(Array.isArray(_id3) && _id3.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id3 === null ? 'null' : (typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)) === 'object' && _id3.constructor ? _id3.constructor.name || '[Unknown Object]' : typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)));\\n\\t }\\n\\t\\n\\t return _id3;\\n\\t }\\n\\t\\n\\t if (!(typeof token === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"token\\\" violates contract, expected string got ' + (token === null ? 'null' : (typeof token === 'undefined' ? 'undefined' : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === 'undefined' ? 'undefined' : _typeof(token)));\\n\\t }\\n\\t\\n\\t var expandedTokens = [];\\n\\t\\n\\t for (var i = 0, length = token.length; i < length; ++i) {\\n\\t var prefixString = '';\\n\\t\\n\\t for (var j = i; j < length; ++j) {\\n\\t prefixString += token.charAt(j);\\n\\t\\n\\t if (!(typeof prefixString === 'string')) {\\n\\t throw new TypeError('Value of variable \\\"prefixString\\\" violates contract, expected string got ' + (prefixString === null ? 'null' : (typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)) === 'object' && prefixString.constructor ? prefixString.constructor.name || '[Unknown Object]' : typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)));\\n\\t }\\n\\t\\n\\t expandedTokens.push(prefixString);\\n\\t }\\n\\t }\\n\\t\\n\\t return _ref3(expandedTokens);\\n\\t }\\n\\t\\n\\t /**\\n\\t * @private\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: '_sanitize',\\n\\t value: function _sanitize(string) {\\n\\t function _ref4(_id4) {\\n\\t if (!(typeof _id4 === 'string')) {\\n\\t throw new TypeError('Function return value violates contract, expected string got ' + (_id4 === null ? 'null' : (typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)) === 'object' && _id4.constructor ? _id4.constructor.name || '[Unknown Object]' : typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)));\\n\\t }\\n\\t\\n\\t return _id4;\\n\\t }\\n\\t\\n\\t if (!(typeof string === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"string\\\" violates contract, expected string got ' + (string === null ? 'null' : (typeof string === 'undefined' ? 'undefined' : _typeof(string)) === 'object' && string.constructor ? string.constructor.name || '[Unknown Object]' : typeof string === 'undefined' ? 'undefined' : _typeof(string)));\\n\\t }\\n\\t\\n\\t return _ref4(string.trim().toLocaleLowerCase());\\n\\t }\\n\\t\\n\\t /**\\n\\t * @private\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: '_tokenize',\\n\\t value: function _tokenize(text) {\\n\\t function _ref5(_id5) {\\n\\t if (!(Array.isArray(_id5) && _id5.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id5 === null ? 'null' : (typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)) === 'object' && _id5.constructor ? _id5.constructor.name || '[Unknown Object]' : typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)));\\n\\t }\\n\\t\\n\\t return _id5;\\n\\t }\\n\\t\\n\\t if (!(typeof text === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"text\\\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\\n\\t }\\n\\t\\n\\t return _ref5(text.split(/\\\\s+/).filter(function (text) {\\n\\t return text;\\n\\t })); // Remove empty tokens\\n\\t }\\n\\t }]);\\n\\t\\n\\t return SearchUtility;\\n\\t})();\\n\\t\\n\\texports.default = SearchUtility;\\n\\n/***/ },\\n/* 3 */\\n/***/ function(module, exports) {\\n\\n\\t\\\"use strict\\\";\\n\\t\\n\\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\\n\\t\\n\\tObject.defineProperty(exports, \\\"__esModule\\\", {\\n\\t value: true\\n\\t});\\n\\t\\n\\tfunction _typeof(obj) { return obj && typeof Symbol !== \\\"undefined\\\" && obj.constructor === Symbol ? \\\"symbol\\\" : typeof obj; }\\n\\t\\n\\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\t\\n\\t/**\\n\\t * Maps search tokens to uids.\\n\\t * This structure is used by the Search class to optimize search operations.\\n\\t * Forked from JS search (github.com/bvaughn/js-search).\\n\\t */\\n\\t\\n\\tvar SearchIndex = (function () {\\n\\t function SearchIndex() {\\n\\t _classCallCheck(this, SearchIndex);\\n\\t\\n\\t this.tokenToUidMap = {};\\n\\t }\\n\\t\\n\\t /**\\n\\t * Maps the specified token to a uid.\\n\\t *\\n\\t * @param token Searchable token (e.g. \\\"road\\\")\\n\\t * @param uid Identifies a document within the searchable corpus\\n\\t */\\n\\t\\n\\t _createClass(SearchIndex, [{\\n\\t key: \\\"indexDocument\\\",\\n\\t value: function indexDocument(token, uid) {\\n\\t if (!(typeof token === 'string')) {\\n\\t throw new TypeError(\\\"Value of argument \\\\\\\"token\\\\\\\" violates contract, expected string got \\\" + (token === null ? 'null' : (typeof token === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(token)));\\n\\t }\\n\\t\\n\\t if (!this.tokenToUidMap[token]) {\\n\\t this.tokenToUidMap[token] = {};\\n\\t }\\n\\t\\n\\t this.tokenToUidMap[token][uid] = uid;\\n\\t }\\n\\t\\n\\t /**\\n\\t * Finds uids that have been mapped to the set of tokens specified.\\n\\t * Only uids that have been mapped to all tokens will be returned.\\n\\t *\\n\\t * @param tokens Array of searchable tokens (e.g. [\\\"long\\\", \\\"road\\\"])\\n\\t * @return Array of uids that have been associated with the set of search tokens\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: \\\"search\\\",\\n\\t value: function search(tokens) {\\n\\t var _this = this;\\n\\t\\n\\t function _ref2(_id2) {\\n\\t if (!Array.isArray(_id2)) {\\n\\t throw new TypeError(\\\"Function return value violates contract, expected Array got \\\" + (_id2 === null ? 'null' : (typeof _id2 === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(_id2)));\\n\\t }\\n\\t\\n\\t return _id2;\\n\\t }\\n\\t\\n\\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError(\\\"Value of argument \\\\\\\"tokens\\\\\\\" violates contract, expected Array got \\\" + (tokens === null ? 'null' : (typeof tokens === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(tokens)));\\n\\t }\\n\\t\\n\\t var uidMap = {};\\n\\t\\n\\t if (!(uidMap != null && (typeof uidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uidMap)) === 'object')) {\\n\\t throw new TypeError(\\\"Value of variable \\\\\\\"uidMap\\\\\\\" violates contract, expected { [uid: any]: any\\\\n} got \\\" + (uidMap === null ? 'null' : (typeof uidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uidMap)) === 'object' && uidMap.constructor ? uidMap.constructor.name || '[Unknown Object]' : typeof uidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uidMap)));\\n\\t }\\n\\t\\n\\t var initialized = false;\\n\\t\\n\\t tokens.forEach(function (token) {\\n\\t var currentUidMap = _this.tokenToUidMap[token] || {};\\n\\t\\n\\t if (!(currentUidMap != null && (typeof currentUidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(currentUidMap)) === 'object')) {\\n\\t throw new TypeError(\\\"Value of variable \\\\\\\"currentUidMap\\\\\\\" violates contract, expected { [uid: any]: any\\\\n} got \\\" + (currentUidMap === null ? 'null' : (typeof currentUidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(currentUidMap)) === 'object' && currentUidMap.constructor ? currentUidMap.constructor.name || '[Unknown Object]' : typeof currentUidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(currentUidMap)));\\n\\t }\\n\\t\\n\\t if (!initialized) {\\n\\t initialized = true;\\n\\t\\n\\t for (var _uid in currentUidMap) {\\n\\t uidMap[_uid] = currentUidMap[_uid];\\n\\t }\\n\\t } else {\\n\\t for (var _uid2 in uidMap) {\\n\\t if (!currentUidMap[_uid2]) {\\n\\t delete uidMap[_uid2];\\n\\t }\\n\\t }\\n\\t }\\n\\t });\\n\\t\\n\\t var uids = [];\\n\\t\\n\\t if (!Array.isArray(uids)) {\\n\\t throw new TypeError(\\\"Value of variable \\\\\\\"uids\\\\\\\" violates contract, expected Array got \\\" + (uids === null ? 'null' : (typeof uids === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uids)) === 'object' && uids.constructor ? uids.constructor.name || '[Unknown Object]' : typeof uids === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uids)));\\n\\t }\\n\\t\\n\\t for (var _uid3 in uidMap) {\\n\\t uids.push(uidMap[_uid3]);\\n\\t }\\n\\t\\n\\t return _ref2(uids);\\n\\t }\\n\\t }]);\\n\\t\\n\\t return SearchIndex;\\n\\t})();\\n\\t\\n\\texports.default = SearchIndex;\\n\\n/***/ }\\n/******/ ]);\\n//# sourceMappingURL=b93146b1722737f6c785.worker.js.map\", __webpack_require__.p + \"b93146b1722737f6c785.worker.js\");\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t// http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string\r\n\t\r\n\tvar URL = window.URL || window.webkitURL;\r\n\tmodule.exports = function(content, url) {\r\n\t\ttry {\r\n\t\t\ttry {\r\n\t\t\t\tvar blob;\r\n\t\t\t\ttry { // BlobBuilder = Deprecated, but widely implemented\r\n\t\t\t\t\tvar BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\r\n\t\t\t\t\tblob = new BlobBuilder();\r\n\t\t\t\t\tblob.append(content);\r\n\t\t\t\t\tblob = blob.getBlob();\r\n\t\t\t\t} catch(e) { // The proposed API\r\n\t\t\t\t\tblob = new Blob([content]);\r\n\t\t\t\t}\r\n\t\t\t\treturn new Worker(URL.createObjectURL(blob));\r\n\t\t\t} catch(e) {\r\n\t\t\t\treturn new Worker('data:application/javascript,' + encodeURIComponent(content));\r\n\t\t\t}\r\n\t\t} catch(e) {\r\n\t\t\treturn new Worker(url);\r\n\t\t}\r\n\t}\n\n/***/ }\n/******/ ]);\n//# sourceMappingURL=js-worker-search.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-worker-search/dist/js-worker-search.js\n ** module id = 18\n ** module chunks = 0\n **/","/** @flow */\nimport {\n INITIALIZE_RESOURCES,\n RECEIVE_RESULT,\n SEARCH\n} from './constants'\n\n/**\n * The user must add this reducer to their app store/tree.\n * By default it is assumed that this reducer will be added at :search.\n * If you use another location you must pass a custom :searchStateSelector to reduxSearch().\n */\nexport default function searchReducer (state = {}, { payload, type }) {\n if (handlers.hasOwnProperty(type)) {\n return handlers[type](state, payload)\n } else {\n return state\n }\n}\n\n/**\n * Search state reducers.\n */\nexport const handlers = {\n [INITIALIZE_RESOURCES] (state, { resourceNames }) {\n return resourceNames.reduce((result, resourceName) => {\n result[resourceName] = {\n isSearching: false,\n result: [],\n text: ''\n }\n return result\n }, { ...state })\n },\n\n [RECEIVE_RESULT] (state, { resourceName, result }) {\n return {\n ...state,\n [resourceName]: {\n ...state[resourceName],\n isSearching: false,\n result\n }\n }\n },\n\n [SEARCH] (state, { resourceName, text }) {\n return {\n ...state,\n [resourceName]: {\n ...state[resourceName],\n isSearching: true,\n text\n }\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reducer.js\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap aa90ab3e45b84c002324","webpack:///./src/index.js","webpack:///./src/selectors.js","webpack:///./src/actions.js","webpack:///./src/constants.js","webpack:///./src/reduxSearch.js","webpack:///./~/redux/lib/index.js","webpack:///./~/redux/lib/createStore.js","webpack:///./~/redux/lib/utils/isPlainObject.js","webpack:///./~/redux/lib/utils/combineReducers.js","webpack:///./~/process/browser.js","webpack:///./~/redux/lib/utils/mapValues.js","webpack:///./~/redux/lib/utils/pick.js","webpack:///./~/redux/lib/utils/bindActionCreators.js","webpack:///./~/redux/lib/utils/applyMiddleware.js","webpack:///./~/redux/lib/utils/compose.js","webpack:///./src/searchMiddleware.js","webpack:///./src/SearchApi.js","webpack:///./~/js-worker-search/dist/js-worker-search.js","webpack:///./src/reducer.js"],"names":[],"mappings":"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A;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,6C;;;;;;AC9BA;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA,YAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,IAAI;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe;AACf;AACA;AACA;AACA,eAAc,yBAAyB;AACvC;;AAEA;AACA;AACA;AACA,aAAY,yBAAyB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AClKA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,IAAI;AACf,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,qC;;;;;;AC9BA;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qEAAoE;AACpE;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C,sCAAsC;;AAEjF;AACA;AACA;;AAEA;AACA,oCAAmC,aAAa;AAChD;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qC;;;;;;;AClIA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU;;;;;;;AC1FtC;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG,IAAI;AACP;;AAEA,qC;;;;;;A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AI,UAAU,CAAC,IAAI,CAAC;QAAA,CAC/B;MACF;;;UAxHkB,qBAAqB;;;sBAArB,qBAAqB;;;;;;;ACP1C;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;;AAEA;;;AAGA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,mCAAkC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEnjB;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,yBAAwB,mGAAmG;;AAE3H,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;;A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ACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4BAA2B,uCAAuC;AAClE;AACA;AACA;AACA;AACA;;AAEA,4BAA2B,2CAA2C;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB;;AAErB;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAqC,EAAE;AACvC,oBAAmB;AACnB;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,8BAA6B,4BAA4B,aAAa,EAAE;;AAExE,QAAO;AACP;AACA;;AAEA;AACA,gEAA+D,2FAA2F,mGAAmG,+JAA+J,qIAAqI,4BAA4B,8EAA8E,0JAA0J,yFAAyF,iGAAiG,cAAc,gIAAgI,uGAAuG,2FAA2F,yGAAyG,YAAY,2JAA2J,mBAAmB,2CAA2C,mDAAmD,8CAA8C,uCAAuC,gBAAgB,EAAE,2LAA2L,2DAA2D,4BAA4B,+BAA+B,2BAA2B,0DAA0D,+BAA+B,qDAAqD,gBAAgB,iEAAiE,iCAAiC,wDAAwD,gCAAgC,2CAA2C,EAAE,gBAAgB,OAAO,KAAK,SAAS,WAAW,kEAAkE,mBAAmB,wDAAwD,sBAAsB,EAAE,gCAAgC,oDAAoD,qEAAqE,8CAA8C,uCAAuC,gBAAgB,EAAE,kDAAkD,WAAW,kEAAkE,mBAAmB,yCAAyC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,yDAAyD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE,IAAI,wDAAwD,sBAAsB,EAAE,kDAAkD,iEAAiE,8CAA8C,uCAAuC,gBAAgB,EAAE,+BAA+B,uGAAuG,EAAE,yDAAyD,0CAA0C,4DAA4D,EAAE,EAAE,gLAAgL,+EAA+E,6CAA6C,2DAA2D,uBAAuB,OAAO,yWAAyW,+EAA+E,2BAA2B,kCAAkC,kDAAkD,uUAAuU,aAAa,2BAA2B,WAAW,gDAAgD,0UAA0U,WAAW,oCAAoC,qEAAqE,qFAAqF,4CAA4C,WAAW,KAAK,yYAAyY,WAAW,yDAAyD,gEAAgE,6FAA6F,8CAA8C,aAAa,KAAK,maAAma,aAAa,iEAAiE,yEAAyE,aAAa,EAAE,WAAW,EAAE,gCAAgC,SAAS,2iBAA2iB,GAAG,6DAA6D,gCAAgC,uCAAuC,2UAA2U,aAAa,4BAA4B,WAAW,iDAAiD,kVAAkV,WAAW,2BAA2B,iDAAiD,WAAW,OAAO,+DAA+D,6EAA6E,8CAA8C,aAAa,KAAK,mWAAmW,aAAa,8DAA8D,WAAW,SAAS,wKAAwK,GAAG,yEAAyE,gCAAgC,qEAAqE,8CAA8C,aAAa,KAAK,8UAA8U,aAAa,4BAA4B,WAAW,iDAAiD,kVAAkV,WAAW,sCAAsC,oDAAoD,YAAY,OAAO,kCAAkC,+BAA+B,YAAY,OAAO,8CAA8C,4DAA4D,8YAA8Y,eAAe,oDAAoD,aAAa,WAAW,2CAA2C,SAAS,wDAAwD,GAAG,oEAAoE,gCAAgC,8CAA8C,uUAAuU,aAAa,4BAA4B,WAAW,kDAAkD,0VAA0V,WAAW,8DAA8D,SAAS,wDAAwD,GAAG,kEAAkE,gCAAgC,qEAAqE,8CAA8C,aAAa,KAAK,8UAA8U,aAAa,4BAA4B,WAAW,gDAAgD,0UAA0U,WAAW,sEAAsE,wBAAwB,WAAW,GAAG,gCAAgC,OAAO,GAAG,+BAA+B,KAAK,IAAI,wCAAwC,WAAW,6CAA6C,qBAAqB,yCAAyC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,yDAAyD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE,IAAI,wDAAwD,sBAAsB,EAAE,+BAA+B,uGAAuG,EAAE,yDAAyD,0CAA0C,4DAA4D,EAAE,EAAE,wOAAwO,8BAA8B,2CAA2C,oCAAoC,OAAO,2OAA2O,kFAAkF,6CAA6C,gWAAgW,WAAW,+CAA+C,2CAA2C,WAAW,mDAAmD,SAAS,2WAA2W,GAAG,gEAAgE,2BAA2B,oCAAoC,uCAAuC,qVAAqV,aAAa,4BAA4B,WAAW,2EAA2E,4CAA4C,WAAW,KAAK,+WAA+W,WAAW,8BAA8B,0HAA0H,gGAAgG,oBAAoB,mQAAmQ,WAAW,sCAAsC,+CAA+C,iEAAiE,iJAAiJ,yGAAyG,oBAAoB,oTAAoT,aAAa,mCAAmC,iCAAiC,mDAAmD,mDAAmD,eAAe,aAAa,OAAO,yCAAyC,4CAA4C,uCAAuC,iBAAiB,eAAe,aAAa,WAAW,EAAE,4BAA4B,yCAAyC,4VAA4V,WAAW,yCAAyC,qCAAqC,WAAW,iCAAiC,SAAS,OAAO,GAAG,6BAA6B,KAAK,IAAI,sCAAsC,WAAW,cAAc;AAC3xnB;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK,WAAW;AAChB;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,6C;;;;;;;;;;;;;;;;sBChgCwB,aAAa;;;;sCAP9B,CAAa;;;;;;;;AAOL,UAAS,aAAa,CAAE,KAAK,EAAO,IAAiB,EAAE;OAA/B,KAAK,gBAAL,KAAK,GAAG,EAAE;OAAI,OAAO,GAAT,IAAiB,CAAf,OAAO;OAAE,IAAI,GAAf,IAAiB,CAAN,IAAI;;AAChE,OAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACjC,YAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;IACtC,MAAM;AACL,YAAO,KAAK;IACb;EACF;;;;;AAKM,KAAM,QAAQ,gFACI,UAAC,KAAK,EAAE,KAAiB,EAAE;OAAjB,aAAa,GAAf,KAAiB,CAAf,aAAa;;AAC5C,UAAO,aAAa,CAAC,MAAM,CAAC,UAAC,MAAM,EAAE,YAAY,EAAK;AACpD,WAAM,CAAC,YAAY,CAAC,GAAG;AACrB,kBAAW,EAAE,KAAK;AAClB,aAAM,EAAE,EAAE;AACV,WAAI,EAAE,EAAE;MACT;AACD,YAAO,MAAM;IACd,eAAO,KAAK,EAAG;EACjB,yDAEgB,UAAC,KAAK,EAAE,KAAwB,EAAE;OAAxB,YAAY,GAAd,KAAwB,CAAtB,YAAY;OAAE,MAAM,GAAtB,KAAwB,CAAR,MAAM;;AAC7C,uBACK,KAAK,sBACP,YAAY,eACR,KAAK,CAAC,YAAY,CAAC;AACtB,gBAAW,EAAE,KAAK;AAClB,WAAM,EAAN,MAAM;QAET;EACF,iDAEQ,UAAC,KAAK,EAAE,KAAsB,EAAE;OAAtB,YAAY,GAAd,KAAsB,CAApB,YAAY;OAAE,IAAI,GAApB,KAAsB,CAAN,IAAI;;AACnC,uBACK,KAAK,sBACP,YAAY,eACR,KAAK,CAAC,YAAY,CAAC;AACtB,gBAAW,EAAE,IAAI;AACjB,SAAI,EAAJ,IAAI;QAEP;EACF,aACF","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap aa90ab3e45b84c002324\n **/","/* @flow */\nimport {\n defaultSearchStateSelector,\n getSearchSelectors\n} from './selectors'\nimport { search } from './actions'\nimport reduxSearch from './reduxSearch'\nimport reducer from './reducer'\nimport SearchApi from './SearchApi'\n\nexport default reduxSearch\nexport {\n defaultSearchStateSelector,\n getSearchSelectors,\n reducer,\n reduxSearch,\n search as createSearchAction,\n SearchApi\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","/** @flow */\n\n/** Default state selector */\nexport function defaultSearchStateSelector (state) {\n return state.search\n}\n\n/**\n * Creates convenience selectors for the specified resource.\n *\n * @param filterFunction Custom filter function for resources that are computed (not basic maps)\n * @param resourceName eg \"databases\"\n * @param resourceSelector Returns an iterable resouce map for a given, searchable resource.\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getSearchSelectors ({\n filterFunction,\n resourceName,\n resourceSelector,\n searchStateSelector = defaultSearchStateSelector\n}): Object {\n return {\n text: getTextSelector({ resourceName, searchStateSelector }),\n result: getResultSelector({ filterFunction, resourceName, resourceSelector, searchStateSelector }),\n unfilteredResult: getUnfilteredResultSelector({ resourceName, searchStateSelector })\n }\n}\n\n/**\n * Returns the current search text for a given searchable resource.\n *\n * @param resourceName eg \"databases\"\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getTextSelector ({\n resourceName,\n searchStateSelector = defaultSearchStateSelector\n}): Function {\n return function textSelector (state) {\n return searchStateSelector(state)[resourceName].text\n }\n}\n\n/**\n * Creates a default filter function capable of handling Maps and Objects.\n */\nfunction createFilterFunction (resource) {\n return resource.has instanceof Function\n ? id => resource.has(id)\n : id => resource[id]\n}\n\n/**\n * Returns the current result list for a given searchable resource.\n * This list is pre-filtered to ensure that all ids exist within the current resource collection.\n *\n * @param filterFunction Custom filter function for resources that are computed (not basic maps)\n * @param resourceName eg \"databases\"\n * @param resourceSelector Returns an iterable resouce map for a given, searchable resource.\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getResultSelector ({\n filterFunction,\n resourceName,\n resourceSelector,\n searchStateSelector = defaultSearchStateSelector\n}): Function {\n const unfilteredResultSelector = getUnfilteredResultSelector({ resourceName, searchStateSelector })\n\n return function resultSelector (state) {\n const result = unfilteredResultSelector(state)\n const resource = resourceSelector(resourceName, state)\n\n return result.filter(filterFunction || createFilterFunction(resource))\n }\n}\n\n/**\n * Returns the current result list for a given searchable resource.\n * This list is not pre-filtered; see issue #29 for more backstory.\n *\n * @param resourceName eg \"databases\"\n * @param searchStateSelector Returns the Search sub-state of the store; (state: Object): Object\n */\nexport function getUnfilteredResultSelector ({\n resourceName,\n searchStateSelector = defaultSearchStateSelector\n}): Function {\n return function resultSelector (state) {\n return searchStateSelector(state)[resourceName].result\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/selectors.js\n **/","/**\n * @flow\n */\nimport {\n ACTION,\n INITIALIZE_RESOURCES,\n SEARCH_API,\n SEARCH,\n RECEIVE_RESULT\n} from './constants'\n\nexport function searchAPI (method: string): Object {\n return (...args) => ({\n type: SEARCH_API,\n payload: {\n method,\n args\n }\n })\n}\nexport const defineIndex = searchAPI('defineIndex')\nexport const indexResource = searchAPI('indexResource')\nexport const performSearch = searchAPI('performSearch')\n\nexport function search (resourceName: string): Function {\n return function searchResource (text: string): Object {\n return {\n type: ACTION,\n payload: {\n api: performSearch(resourceName, text),\n action: {\n type: SEARCH,\n payload: {\n resourceName,\n text\n }\n }\n }\n }\n }\n}\n\nexport function receiveResult (resourceName: string): Function {\n return function receiveResultForResource (result: Array): Object {\n return {\n type: RECEIVE_RESULT,\n payload: {\n resourceName,\n result\n }\n }\n }\n}\n\nexport function initializeResources (resourceNames: Array): Object {\n return {\n type: INITIALIZE_RESOURCES,\n payload: {\n resourceNames\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/actions.js\n **/","/** @flow */\nexport const SEARCH_API = '@@reduxSearch/API'\nexport const SEARCH_STATE_SELECTOR = '@@reduxSearch/searchStateSelector'\n\n// Action constants\nexport const ACTION = '@@reduxSearch/action'\nexport const INITIALIZE_RESOURCES = '@@reduxSearch/initializeResources'\nexport const RECEIVE_RESULT = '@@reduxSearch/receiveResult'\nexport const SEARCH = '@@reduxSearch/search'\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/constants.js\n **/","import { applyMiddleware } from 'redux'\nimport { defaultSearchStateSelector } from './selectors'\nimport * as actions from './actions'\nimport { SEARCH_STATE_SELECTOR } from './constants'\nimport searchMiddleware from './searchMiddleware'\nimport SearchApi from './SearchApi'\n\n/**\n * Creates higher-order search store to be composed with other store enhancers.\n * This function accepts the following, optional parameters (via a params Object):\n * • resourceIndexes:\n * Maps searchable resources to search configurations.\n * Configurations must be one of the following types:\n * (1) an array of searchable field names (eg. [\"name\", \"description\"])\n * (2) a custom indexing function (eg. ({ resources: Iterable, indexDocument: Function }))\n * • resourceSelector:\n * Selector responsible for returning an iterable resouce map for a given, searchable resource.\n * This function should be capable of returning a map for each resource listed in :resourceIndexes.\n * Its signature should look like this: (resourceName: string, state: Object): Iterable\n * If this value is specified then the search index will be automatically built/updated whenever resources change.\n * Ommit this property if you wish to manage the search index manually.\n * • Search:\n * Observable Search API.\n * Defaults to redux-search-supplied SearchApi but can be overriden for testing purposes.\n * Refer to SearchApi.js for more information if you choose to override this.\n * • searchStateSelector:\n * Selects the search sub-state within the state store.\n * Default implementation provided; override if you add searchReducer() to a node other than :search.\n */\nexport default function reduxSearch ({\n resourceIndexes = {},\n resourceSelector,\n searchApi = new SearchApi(),\n searchStateSelector = defaultSearchStateSelector\n} = {}) {\n return createStore => (reducer, initialState) => {\n const store = applyMiddleware(\n searchMiddleware(searchApi)\n )(createStore)(reducer, initialState)\n\n store.search = searchApi\n store[SEARCH_STATE_SELECTOR] = searchStateSelector\n\n const resourceNames = Object.keys(resourceIndexes)\n store.dispatch(actions.initializeResources(resourceNames))\n\n searchApi.subscribe(({ result, resourceName, text }) => {\n // Here we handle item responses\n // It can be fancier, but at its core this is all it is\n store.dispatch(actions.receiveResult(resourceName)(result))\n }, error => {\n // TODO: Somehow handle error; redux-router lets you pass a callback\n throw error\n })\n\n // Auto-index if a :resourceSelector has been provided\n if (resourceSelector) {\n let currentResources = {}\n\n store.subscribe(() => {\n const nextState = store.getState()\n const searchState = store[SEARCH_STATE_SELECTOR](nextState)\n\n for (let resourceName in resourceIndexes) {\n const resource = resourceSelector(resourceName, nextState)\n\n // Only rebuild the search index for resources that have changed\n if (currentResources[resourceName] !== resource) {\n currentResources[resourceName] = resource\n\n const resourceIndex = resourceIndexes[resourceName]\n const searchString = searchState[resourceName].text\n\n store.dispatch(actions.indexResource({\n fieldNamesOrIndexFunction: resourceIndex,\n resourceName,\n resources: resource,\n state: nextState\n }))\n store.dispatch(actions.search(resourceName)(searchString))\n }\n }\n })\n }\n\n return store\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reduxSearch.js\n **/","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createStore = require('./createStore');\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _utilsCombineReducers = require('./utils/combineReducers');\n\nvar _utilsCombineReducers2 = _interopRequireDefault(_utilsCombineReducers);\n\nvar _utilsBindActionCreators = require('./utils/bindActionCreators');\n\nvar _utilsBindActionCreators2 = _interopRequireDefault(_utilsBindActionCreators);\n\nvar _utilsApplyMiddleware = require('./utils/applyMiddleware');\n\nvar _utilsApplyMiddleware2 = _interopRequireDefault(_utilsApplyMiddleware);\n\nvar _utilsCompose = require('./utils/compose');\n\nvar _utilsCompose2 = _interopRequireDefault(_utilsCompose);\n\nexports.createStore = _createStore2['default'];\nexports.combineReducers = _utilsCombineReducers2['default'];\nexports.bindActionCreators = _utilsBindActionCreators2['default'];\nexports.applyMiddleware = _utilsApplyMiddleware2['default'];\nexports.compose = _utilsCompose2['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/index.js\n ** module id = 6\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = createStore;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utilsIsPlainObject = require('./utils/isPlainObject');\n\nvar _utilsIsPlainObject2 = _interopRequireDefault(_utilsIsPlainObject);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar ActionTypes = {\n INIT: '@@redux/INIT'\n};\n\nexports.ActionTypes = ActionTypes;\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [initialState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, initialState) {\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = initialState;\n var listeners = [];\n var isDispatching = false;\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n listeners.push(listener);\n var isSubscribed = true;\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!_utilsIsPlainObject2['default'](action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n listeners.slice().forEach(function (listener) {\n return listener();\n });\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n };\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/createStore.js\n ** module id = 7\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = isPlainObject;\nvar fnToString = function fnToString(fn) {\n return Function.prototype.toString.call(fn);\n};\nvar objStringValue = fnToString(Object);\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\n\nfunction isPlainObject(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n var proto = typeof obj.constructor === 'function' ? Object.getPrototypeOf(obj) : Object.prototype;\n\n if (proto === null) {\n return true;\n }\n\n var constructor = proto.constructor;\n\n return typeof constructor === 'function' && constructor instanceof constructor && fnToString(constructor) === objStringValue;\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/isPlainObject.js\n ** module id = 8\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = combineReducers;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createStore = require('../createStore');\n\nvar _isPlainObject = require('./isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _mapValues = require('./mapValues');\n\nvar _mapValues2 = _interopRequireDefault(_mapValues);\n\nvar _pick = require('./pick');\n\nvar _pick2 = _interopRequireDefault(_pick);\n\n/* eslint-disable no-console */\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Reducer \"' + key + '\" returned undefined handling ' + actionName + '. ' + 'To ignore an action, you must explicitly return the previous state.';\n}\n\nfunction getUnexpectedStateKeyWarningMessage(inputState, outputState, action) {\n var reducerKeys = Object.keys(outputState);\n var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'initialState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!_isPlainObject2['default'](inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + ({}).toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return reducerKeys.indexOf(key) < 0;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerSanity(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: _createStore.ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\nfunction combineReducers(reducers) {\n var finalReducers = _pick2['default'](reducers, function (val) {\n return typeof val === 'function';\n });\n var sanityError;\n\n try {\n assertReducerSanity(finalReducers);\n } catch (e) {\n sanityError = e;\n }\n\n var defaultState = _mapValues2['default'](finalReducers, function () {\n return undefined;\n });\n\n return function combination(state, action) {\n if (state === undefined) state = defaultState;\n\n if (sanityError) {\n throw sanityError;\n }\n\n var hasChanged = false;\n var finalState = _mapValues2['default'](finalReducers, function (reducer, key) {\n var previousStateForKey = state[key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(key, action);\n throw new Error(errorMessage);\n }\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n return nextStateForKey;\n });\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateKeyWarningMessage(state, finalState, action);\n if (warningMessage) {\n console.error(warningMessage);\n }\n }\n\n return hasChanged ? finalState : state;\n };\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/combineReducers.js\n ** module id = 9\n ** module chunks = 0\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 10\n ** module chunks = 0\n **/","/**\n * Applies a function to every key-value pair inside an object.\n *\n * @param {Object} obj The source object.\n * @param {Function} fn The mapper function that receives the value and the key.\n * @returns {Object} A new object that contains the mapped values for the keys.\n */\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = mapValues;\n\nfunction mapValues(obj, fn) {\n return Object.keys(obj).reduce(function (result, key) {\n result[key] = fn(obj[key], key);\n return result;\n }, {});\n}\n\nmodule.exports = exports[\"default\"];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/mapValues.js\n ** module id = 11\n ** module chunks = 0\n **/","/**\n * Picks key-value pairs from an object where values satisfy a predicate.\n *\n * @param {Object} obj The object to pick from.\n * @param {Function} fn The predicate the values must satisfy to be copied.\n * @returns {Object} The object with the values that satisfied the predicate.\n */\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = pick;\n\nfunction pick(obj, fn) {\n return Object.keys(obj).reduce(function (result, key) {\n if (fn(obj[key])) {\n result[key] = obj[key];\n }\n return result;\n }, {});\n}\n\nmodule.exports = exports[\"default\"];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/pick.js\n ** module id = 12\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports['default'] = bindActionCreators;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _mapValues = require('./mapValues');\n\nvar _mapValues2 = _interopRequireDefault(_mapValues);\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null || actionCreators === undefined) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n return _mapValues2['default'](actionCreators, function (actionCreator) {\n return bindActionCreator(actionCreator, dispatch);\n });\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/bindActionCreators.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = applyMiddleware;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _compose = require('./compose');\n\nvar _compose2 = _interopRequireDefault(_compose);\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (next) {\n return function (reducer, initialState) {\n var store = next(reducer, initialState);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nmodule.exports = exports['default'];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/applyMiddleware.js\n ** module id = 14\n ** module chunks = 0\n **/","/**\n * Composes single-argument functions from right to left.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing functions from right to\n * left. For example, compose(f, g, h) is identical to arg => f(g(h(arg))).\n */\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = compose;\n\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return function (arg) {\n return funcs.reduceRight(function (composed, f) {\n return f(composed);\n }, arg);\n };\n}\n\nmodule.exports = exports[\"default\"];\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/compose.js\n ** module id = 15\n ** module chunks = 0\n **/","import {\n ACTION,\n SEARCH_API\n} from './constants'\n\n/**\n * Middleware for interacting with the search API\n * @param {Search} Search object\n */\nexport default function searchMiddleware (search: Object): Function {\n return ({ dispatch }) => next => action => {\n const { payload } = action\n if (action.type === SEARCH_API) {\n const { method, args } = payload\n return search[method](...args)\n } else if (action.type === ACTION) {\n next(payload.action)\n return dispatch(payload.api)\n } else {\n return next(action)\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/searchMiddleware.js\n **/","/** @flow */\nimport Search from 'js-worker-search'\n\n/**\n * Observable that manages communication between redux-search middleware and the Search utility.\n * This class maps resource names to search indicies and manages subscribers.\n */\nexport default class SubscribableSearchApi {\n\n /**\n * Constructor.\n */\n constructor () {\n this._resourceToSearchMap = {}\n\n // Subscribers\n this._onErrorSubscribers = []\n this._onNextSubscribers = []\n }\n\n /**\n * Subscribe to Search events.\n * Subscribers will be notified each time a Search is performed.\n *\n * Successful searches will call :onNext with the following parameters:\n * >result: An array of uids matching the search\n * >text: Search string\n * >resourceName: Identifies the resource that was searched\n *\n * Failed searches (searches that result in an Error) will call :onError with an Error parameter.\n *\n * This method returns a callback that can be used to unsubscribe from Search events.\n * Just invoke the function without any parameters to unsubscribe.\n */\n subscribe (onNext, onError) {\n this._onNextSubscribers.push(onNext)\n this._onErrorSubscribers.push(onError)\n\n return function dispose () {\n this._onNextSubscribers = this._onNextSubscribers.filter(\n subscriber => subscriber !== onNext\n )\n this._onErrorSubscribers = this._onErrorSubscribers.filter(\n subscriber => subscriber !== onError\n )\n }\n }\n\n /**\n * Builds a searchable index of a set of resources.\n *\n * @param fieldNamesOrIndexFunction This value is passed to reduxSearch() factory during initialization\n * It is either an Array of searchable fields (to be auto-indexed)\n * Or a custom index function to be called with a :resources object and an :indexDocument callback\n * @param resourceName Uniquely identifies the resource (eg. \"databases\")\n * @param resources Map of resource uid to resource (Object)\n * @param state State object to be passed to custom resource-indexing functions\n */\n indexResource ({ fieldNamesOrIndexFunction, resourceName, resources, state }) {\n const search = new Search()\n\n if (Array.isArray(fieldNamesOrIndexFunction)) {\n if (resources.forEach instanceof Function) {\n resources.forEach(resource => {\n fieldNamesOrIndexFunction.forEach(field => {\n search.indexDocument(resource.id, resource[field] || '')\n })\n })\n } else {\n for (var key in resources) {\n let resource = resources[key]\n fieldNamesOrIndexFunction.forEach(field => {\n search.indexDocument(resource.id, resource[field] || '')\n })\n }\n }\n } else if (fieldNamesOrIndexFunction instanceof Function) {\n fieldNamesOrIndexFunction({\n indexDocument: search.indexDocument,\n resources,\n state\n })\n } else {\n throw Error('Expected resource index to be either an Array of fields or an index function')\n }\n\n this._resourceToSearchMap[resourceName] = search\n }\n\n /**\n * Searches a resource and returns a Promise to be resolved with an array of uids that match the search string.\n * Upon completion (or failure) this method also notifies all current subscribers.\n *\n * @param resourceName Uniquely identifies the resource (eg. \"databases\")\n * @param text Search string\n */\n async performSearch (resourceName, text) {\n try {\n const search = this._resourceToSearchMap[resourceName]\n const result = await search.search(text)\n\n this._notifyNext({\n result,\n text,\n resourceName\n })\n\n return result\n } catch (error) {\n this._notifyError(error)\n\n throw error\n }\n }\n\n /** Notify all subscribes of :onError */\n _notifyError (error) {\n this._onErrorSubscribers.forEach(\n subscriber => subscriber(error)\n )\n }\n\n /** Notify all subscribes of :onNext */\n _notifyNext (data) {\n this._onNextSubscribers.forEach(\n subscriber => subscriber(data)\n )\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/SearchApi.js\n **/","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = undefined;\n\t\n\tvar _SearchApi = __webpack_require__(2);\n\t\n\tvar _SearchApi2 = _interopRequireDefault(_SearchApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _SearchApi2.default;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _util = __webpack_require__(3);\n\t\n\tvar _util2 = _interopRequireDefault(_util);\n\t\n\tvar _worker = __webpack_require__(6);\n\t\n\tvar _worker2 = _interopRequireDefault(_worker);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Search API that uses web workers when available.\n\t * Indexing and searching is performed in the UI thread as a fallback when web workers aren't supported.\n\t */\n\t\n\tvar SearchApi = (function () {\n\t function SearchApi() {\n\t _classCallCheck(this, SearchApi);\n\t\n\t // Based on https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers\n\t // But with added check for Node environment\n\t if (typeof window !== 'undefined' && window.Worker) {\n\t this._search = new _worker2.default();\n\t } else {\n\t this._search = new _util2.default();\n\t }\n\t\n\t // Prevent methods from losing context when passed around.\n\t this.indexDocument = this.indexDocument.bind(this);\n\t\n\t if (!(typeof this.indexDocument === 'function')) {\n\t throw new TypeError('Value of \"this.indexDocument\" violates contract, expected (any, string) => SearchApi got ' + (this.indexDocument === null ? 'null' : _typeof(this.indexDocument) === 'object' && this.indexDocument.constructor ? this.indexDocument.constructor.name || '[Unknown Object]' : _typeof(this.indexDocument)));\n\t }\n\t\n\t this.search = this.search.bind(this);\n\t\n\t if (!(typeof this.search === 'function')) {\n\t throw new TypeError('Value of \"this.search\" violates contract, expected (string) => Promise got ' + (this.search === null ? 'null' : _typeof(this.search) === 'object' && this.search.constructor ? this.search.constructor.name || '[Unknown Object]' : _typeof(this.search)));\n\t }\n\t }\n\t\n\t /**\n\t * Adds or updates a uid in the search index and associates it with the specified text.\n\t * Note that at this time uids can only be added or updated in the index, not removed.\n\t *\n\t * @param uid Uniquely identifies a searchable object\n\t * @param text Text to associate with uid\n\t */\n\t\n\t _createClass(SearchApi, [{\n\t key: 'indexDocument',\n\t value: function indexDocument(uid, text) {\n\t function _ref(_id) {\n\t if (!(_id instanceof SearchApi)) {\n\t throw new TypeError('Function return value violates contract, expected SearchApi got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\n\t }\n\t\n\t return _id;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t this._search.indexDocument(uid, text);\n\t\n\t return _ref(this);\n\t }\n\t\n\t /**\n\t * Searches the current index for the specified query text.\n\t * Only uids matching all of the words within the text will be accepted.\n\t * If an empty query string is provided all indexed uids will be returned.\n\t *\n\t * Document searches are case-insensitive (e.g. \"search\" will match \"Search\").\n\t * Document searches use substring matching (e.g. \"na\" and \"me\" will both match \"name\").\n\t *\n\t * @param query Searchable query text\n\t * @return Promise to be resolved with an Array of matching uids\n\t */\n\t\n\t }, {\n\t key: 'search',\n\t value: function search(query) {\n\t function _ref2(_id2) {\n\t if (!(_id2 instanceof Promise)) {\n\t throw new TypeError('Function return value violates contract, expected Promise got ' + (_id2 === null ? 'null' : (typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)));\n\t }\n\t\n\t return _id2;\n\t }\n\t\n\t if (!(typeof query === 'string')) {\n\t throw new TypeError('Value of argument \"query\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\n\t }\n\t\n\t // Promise.resolve handles both synchronous and web-worker Search utilities\n\t return _ref2(Promise.resolve(this._search.search(query)));\n\t }\n\t }]);\n\t\n\t return SearchApi;\n\t})();\n\t\n\texports.default = SearchApi;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = undefined;\n\t\n\tvar _SearchUtility = __webpack_require__(4);\n\t\n\tvar _SearchUtility2 = _interopRequireDefault(_SearchUtility);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _SearchUtility2.default;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _SearchIndex = __webpack_require__(5);\n\t\n\tvar _SearchIndex2 = _interopRequireDefault(_SearchIndex);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Synchronous client-side full-text search utility.\n\t * Forked from JS search (github.com/bvaughn/js-search).\n\t */\n\t\n\tvar SearchUtility = (function () {\n\t\n\t /**\n\t * Constructor.\n\t */\n\t\n\t function SearchUtility() {\n\t _classCallCheck(this, SearchUtility);\n\t\n\t this.searchIndex = new _SearchIndex2.default();\n\t this.uids = {};\n\t }\n\t\n\t /**\n\t * Adds or updates a uid in the search index and associates it with the specified text.\n\t * Note that at this time uids can only be added or updated in the index, not removed.\n\t *\n\t * @param uid Uniquely identifies a searchable object\n\t * @param text Text to associate with uid\n\t */\n\t\n\t _createClass(SearchUtility, [{\n\t key: 'indexDocument',\n\t value: function indexDocument(uid, text) {\n\t var _this = this;\n\t\n\t function _ref(_id) {\n\t if (!(_id instanceof SearchUtility)) {\n\t throw new TypeError('Function return value violates contract, expected SearchUtility got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\n\t }\n\t\n\t return _id;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t this.uids[uid] = true;\n\t\n\t var fieldTokens = this._tokenize(this._sanitize(text));\n\t\n\t if (!(Array.isArray(fieldTokens) && fieldTokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Value of variable \"fieldTokens\" violates contract, expected Array got ' + (fieldTokens === null ? 'null' : (typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)) === 'object' && fieldTokens.constructor ? fieldTokens.constructor.name || '[Unknown Object]' : typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)));\n\t }\n\t\n\t fieldTokens.forEach(function (fieldToken) {\n\t var expandedTokens = _this._expandToken(fieldToken);\n\t\n\t if (!(Array.isArray(expandedTokens) && expandedTokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Value of variable \"expandedTokens\" violates contract, expected Array got ' + (expandedTokens === null ? 'null' : (typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)) === 'object' && expandedTokens.constructor ? expandedTokens.constructor.name || '[Unknown Object]' : typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)));\n\t }\n\t\n\t expandedTokens.forEach(function (expandedToken) {\n\t return _this.searchIndex.indexDocument(expandedToken, uid);\n\t });\n\t });\n\t\n\t return _ref(this);\n\t }\n\t\n\t /**\n\t * Searches the current index for the specified query text.\n\t * Only uids matching all of the words within the text will be accepted.\n\t * If an empty query string is provided all indexed uids will be returned.\n\t *\n\t * Document searches are case-insensitive (e.g. \"search\" will match \"Search\").\n\t * Document searches use substring matching (e.g. \"na\" and \"me\" will both match \"name\").\n\t *\n\t * @param query Searchable query text\n\t * @return Array of uids\n\t */\n\t\n\t }, {\n\t key: 'search',\n\t value: function search(query) {\n\t function _ref2(_id2) {\n\t if (!Array.isArray(_id2)) {\n\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id2 === null ? 'null' : (typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)));\n\t }\n\t\n\t return _id2;\n\t }\n\t\n\t if (!(typeof query === 'string')) {\n\t throw new TypeError('Value of argument \"query\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\n\t }\n\t\n\t if (!query) {\n\t return _ref2(Object.keys(this.uids));\n\t } else {\n\t var tokens = this._tokenize(this._sanitize(query));\n\t\n\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Value of variable \"tokens\" violates contract, expected Array got ' + (tokens === null ? 'null' : (typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)));\n\t }\n\t\n\t return _ref2(this.searchIndex.search(tokens));\n\t }\n\t }\n\t\n\t /**\n\t * Index strategy based on 'all-substrings-index-strategy.ts' in github.com/bvaughn/js-search/\n\t *\n\t * @private\n\t */\n\t\n\t }, {\n\t key: '_expandToken',\n\t value: function _expandToken(token) {\n\t function _ref3(_id3) {\n\t if (!(Array.isArray(_id3) && _id3.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id3 === null ? 'null' : (typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)) === 'object' && _id3.constructor ? _id3.constructor.name || '[Unknown Object]' : typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)));\n\t }\n\t\n\t return _id3;\n\t }\n\t\n\t if (!(typeof token === 'string')) {\n\t throw new TypeError('Value of argument \"token\" violates contract, expected string got ' + (token === null ? 'null' : (typeof token === 'undefined' ? 'undefined' : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === 'undefined' ? 'undefined' : _typeof(token)));\n\t }\n\t\n\t var expandedTokens = [];\n\t\n\t for (var i = 0, length = token.length; i < length; ++i) {\n\t var prefixString = '';\n\t\n\t for (var j = i; j < length; ++j) {\n\t prefixString += token.charAt(j);\n\t\n\t if (!(typeof prefixString === 'string')) {\n\t throw new TypeError('Value of variable \"prefixString\" violates contract, expected string got ' + (prefixString === null ? 'null' : (typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)) === 'object' && prefixString.constructor ? prefixString.constructor.name || '[Unknown Object]' : typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)));\n\t }\n\t\n\t expandedTokens.push(prefixString);\n\t }\n\t }\n\t\n\t return _ref3(expandedTokens);\n\t }\n\t\n\t /**\n\t * @private\n\t */\n\t\n\t }, {\n\t key: '_sanitize',\n\t value: function _sanitize(string) {\n\t function _ref4(_id4) {\n\t if (!(typeof _id4 === 'string')) {\n\t throw new TypeError('Function return value violates contract, expected string got ' + (_id4 === null ? 'null' : (typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)) === 'object' && _id4.constructor ? _id4.constructor.name || '[Unknown Object]' : typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)));\n\t }\n\t\n\t return _id4;\n\t }\n\t\n\t if (!(typeof string === 'string')) {\n\t throw new TypeError('Value of argument \"string\" violates contract, expected string got ' + (string === null ? 'null' : (typeof string === 'undefined' ? 'undefined' : _typeof(string)) === 'object' && string.constructor ? string.constructor.name || '[Unknown Object]' : typeof string === 'undefined' ? 'undefined' : _typeof(string)));\n\t }\n\t\n\t return _ref4(string.trim().toLocaleLowerCase());\n\t }\n\t\n\t /**\n\t * @private\n\t */\n\t\n\t }, {\n\t key: '_tokenize',\n\t value: function _tokenize(text) {\n\t function _ref5(_id5) {\n\t if (!(Array.isArray(_id5) && _id5.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id5 === null ? 'null' : (typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)) === 'object' && _id5.constructor ? _id5.constructor.name || '[Unknown Object]' : typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)));\n\t }\n\t\n\t return _id5;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t return _ref5(text.split(/\\s+/).filter(function (text) {\n\t return text;\n\t })); // Remove empty tokens\n\t }\n\t }]);\n\t\n\t return SearchUtility;\n\t})();\n\t\n\texports.default = SearchUtility;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Maps search tokens to uids.\n\t * This structure is used by the Search class to optimize search operations.\n\t * Forked from JS search (github.com/bvaughn/js-search).\n\t */\n\t\n\tvar SearchIndex = (function () {\n\t function SearchIndex() {\n\t _classCallCheck(this, SearchIndex);\n\t\n\t this.tokenToUidMap = {};\n\t }\n\t\n\t /**\n\t * Maps the specified token to a uid.\n\t *\n\t * @param token Searchable token (e.g. \"road\")\n\t * @param uid Identifies a document within the searchable corpus\n\t */\n\t\n\t _createClass(SearchIndex, [{\n\t key: \"indexDocument\",\n\t value: function indexDocument(token, uid) {\n\t if (!(typeof token === 'string')) {\n\t throw new TypeError(\"Value of argument \\\"token\\\" violates contract, expected string got \" + (token === null ? 'null' : (typeof token === \"undefined\" ? \"undefined\" : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === \"undefined\" ? \"undefined\" : _typeof(token)));\n\t }\n\t\n\t if (!this.tokenToUidMap[token]) {\n\t this.tokenToUidMap[token] = {};\n\t }\n\t\n\t this.tokenToUidMap[token][uid] = uid;\n\t }\n\t\n\t /**\n\t * Finds uids that have been mapped to the set of tokens specified.\n\t * Only uids that have been mapped to all tokens will be returned.\n\t *\n\t * @param tokens Array of searchable tokens (e.g. [\"long\", \"road\"])\n\t * @return Array of uids that have been associated with the set of search tokens\n\t */\n\t\n\t }, {\n\t key: \"search\",\n\t value: function search(tokens) {\n\t var _this = this;\n\t\n\t function _ref2(_id2) {\n\t if (!Array.isArray(_id2)) {\n\t throw new TypeError(\"Function return value violates contract, expected Array got \" + (_id2 === null ? 'null' : (typeof _id2 === \"undefined\" ? \"undefined\" : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === \"undefined\" ? \"undefined\" : _typeof(_id2)));\n\t }\n\t\n\t return _id2;\n\t }\n\t\n\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\n\t return typeof item === 'string';\n\t }))) {\n\t throw new TypeError(\"Value of argument \\\"tokens\\\" violates contract, expected Array got \" + (tokens === null ? 'null' : (typeof tokens === \"undefined\" ? \"undefined\" : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === \"undefined\" ? \"undefined\" : _typeof(tokens)));\n\t }\n\t\n\t var uidMap = {};\n\t\n\t if (!(uidMap != null && (typeof uidMap === \"undefined\" ? \"undefined\" : _typeof(uidMap)) === 'object')) {\n\t throw new TypeError(\"Value of variable \\\"uidMap\\\" violates contract, expected { [uid: any]: any\\n} got \" + (uidMap === null ? 'null' : (typeof uidMap === \"undefined\" ? \"undefined\" : _typeof(uidMap)) === 'object' && uidMap.constructor ? uidMap.constructor.name || '[Unknown Object]' : typeof uidMap === \"undefined\" ? \"undefined\" : _typeof(uidMap)));\n\t }\n\t\n\t var initialized = false;\n\t\n\t tokens.forEach(function (token) {\n\t var currentUidMap = _this.tokenToUidMap[token] || {};\n\t\n\t if (!(currentUidMap != null && (typeof currentUidMap === \"undefined\" ? \"undefined\" : _typeof(currentUidMap)) === 'object')) {\n\t throw new TypeError(\"Value of variable \\\"currentUidMap\\\" violates contract, expected { [uid: any]: any\\n} got \" + (currentUidMap === null ? 'null' : (typeof currentUidMap === \"undefined\" ? \"undefined\" : _typeof(currentUidMap)) === 'object' && currentUidMap.constructor ? currentUidMap.constructor.name || '[Unknown Object]' : typeof currentUidMap === \"undefined\" ? \"undefined\" : _typeof(currentUidMap)));\n\t }\n\t\n\t if (!initialized) {\n\t initialized = true;\n\t\n\t for (var _uid in currentUidMap) {\n\t uidMap[_uid] = currentUidMap[_uid];\n\t }\n\t } else {\n\t for (var _uid2 in uidMap) {\n\t if (!currentUidMap[_uid2]) {\n\t delete uidMap[_uid2];\n\t }\n\t }\n\t }\n\t });\n\t\n\t var uids = [];\n\t\n\t if (!Array.isArray(uids)) {\n\t throw new TypeError(\"Value of variable \\\"uids\\\" violates contract, expected Array got \" + (uids === null ? 'null' : (typeof uids === \"undefined\" ? \"undefined\" : _typeof(uids)) === 'object' && uids.constructor ? uids.constructor.name || '[Unknown Object]' : typeof uids === \"undefined\" ? \"undefined\" : _typeof(uids)));\n\t }\n\t\n\t for (var _uid3 in uidMap) {\n\t uids.push(uidMap[_uid3]);\n\t }\n\t\n\t return _ref2(uids);\n\t }\n\t }]);\n\t\n\t return SearchIndex;\n\t})();\n\t\n\texports.default = SearchIndex;\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = undefined;\n\t\n\tvar _SearchWorkerLoader = __webpack_require__(7);\n\t\n\tvar _SearchWorkerLoader2 = _interopRequireDefault(_SearchWorkerLoader);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _SearchWorkerLoader2.default;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _uuid = __webpack_require__(8);\n\t\n\tvar _uuid2 = _interopRequireDefault(_uuid);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/**\n\t * Client side, full text search utility.\n\t * This interface exposes web worker search capabilities to the UI thread.\n\t */\n\t\n\tvar SearchWorkerLoader = (function () {\n\t\n\t /**\n\t * Constructor.\n\t */\n\t\n\t function SearchWorkerLoader(WorkerClass) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, SearchWorkerLoader);\n\t\n\t // Defer worker import until construction to avoid testing error:\n\t // Error: Cannot find module 'worker!./[workername]'\n\t if (!WorkerClass) {\n\t WorkerClass = __webpack_require__(10);\n\t }\n\t\n\t // Maintain context if references are passed around\n\t this.indexDocument = this.indexDocument.bind(this);\n\t\n\t if (!(typeof this.indexDocument === 'function')) {\n\t throw new TypeError('Value of \"this.indexDocument\" violates contract, expected (any, string) => SearchWorkerLoader got ' + (this.indexDocument === null ? 'null' : _typeof(this.indexDocument) === 'object' && this.indexDocument.constructor ? this.indexDocument.constructor.name || '[Unknown Object]' : _typeof(this.indexDocument)));\n\t }\n\t\n\t this.search = this.search.bind(this);\n\t\n\t if (!(typeof this.search === 'function')) {\n\t throw new TypeError('Value of \"this.search\" violates contract, expected (string) => Promise got ' + (this.search === null ? 'null' : _typeof(this.search) === 'object' && this.search.constructor ? this.search.constructor.name || '[Unknown Object]' : _typeof(this.search)));\n\t }\n\t\n\t this.callbackQueue = [];\n\t this.callbackIdMap = {};\n\t\n\t this.worker = new WorkerClass();\n\t this.worker.onerror = function (event) {\n\t var _event$data = event.data;\n\t var callbackId = _event$data.callbackId;\n\t var error = _event$data.error;\n\t\n\t _this._updateQueue({ callbackId: callbackId, error: error });\n\t };\n\t this.worker.onmessage = function (event) {\n\t var _event$data2 = event.data;\n\t var callbackId = _event$data2.callbackId;\n\t var results = _event$data2.results;\n\t\n\t _this._updateQueue({ callbackId: callbackId, results: results });\n\t };\n\t }\n\t\n\t /**\n\t * Adds or updates a uid in the search index and associates it with the specified text.\n\t * Note that at this time uids can only be added or updated in the index, not removed.\n\t *\n\t * @param uid Uniquely identifies a searchable object\n\t * @param text Text to associate with uid\n\t */\n\t\n\t _createClass(SearchWorkerLoader, [{\n\t key: 'indexDocument',\n\t value: function indexDocument(uid, text) {\n\t function _ref(_id) {\n\t if (!(_id instanceof SearchWorkerLoader)) {\n\t throw new TypeError('Function return value violates contract, expected SearchWorkerLoader got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\n\t }\n\t\n\t return _id;\n\t }\n\t\n\t if (!(typeof text === 'string')) {\n\t throw new TypeError('Value of argument \"text\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\n\t }\n\t\n\t this.worker.postMessage({\n\t method: 'indexDocument',\n\t text: text,\n\t uid: uid\n\t });\n\t\n\t return _ref(this);\n\t }\n\t\n\t /**\n\t * Searches the current index for the specified query text.\n\t * Only uids matching all of the words within the text will be accepted.\n\t * If an empty query string is provided all indexed uids will be returned.\n\t *\n\t * Document searches are case-insensitive (e.g. \"search\" will match \"Search\").\n\t * Document searches use substring matching (e.g. \"na\" and \"me\" will both match \"name\").\n\t *\n\t * @param query Searchable query text\n\t * @return Promise to be resolved with an array of uids\n\t */\n\t\n\t }, {\n\t key: 'search',\n\t value: function search(query) {\n\t var _this2 = this;\n\t\n\t if (!(typeof query === 'string')) {\n\t throw new TypeError('Value of argument \"query\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\n\t }\n\t\n\t return new Promise(function (resolve, reject) {\n\t var callbackId = _uuid2.default.v4();\n\t var data = { callbackId: callbackId, reject: reject, resolve: resolve };\n\t\n\t _this2.worker.postMessage({\n\t method: 'search',\n\t query: query,\n\t callbackId: callbackId\n\t });\n\t\n\t _this2.callbackQueue.push(data);\n\t _this2.callbackIdMap[callbackId] = data;\n\t });\n\t }\n\t\n\t /**\n\t * Updates the queue and flushes any completed promises that are ready.\n\t */\n\t\n\t }, {\n\t key: '_updateQueue',\n\t value: function _updateQueue(_ref3) {\n\t var callbackId = _ref3.callbackId;\n\t var error = _ref3.error;\n\t var results = _ref3.results;\n\t\n\t var target = this.callbackIdMap[callbackId];\n\t target.complete = true;\n\t target.error = error;\n\t target.results = results;\n\t\n\t while (this.callbackQueue.length) {\n\t var data = this.callbackQueue[0];\n\t\n\t if (!data.complete) {\n\t break;\n\t }\n\t\n\t this.callbackQueue.shift();\n\t\n\t delete this.callbackIdMap[data.callbackId];\n\t\n\t if (data.error) {\n\t data.reject(data.error);\n\t } else {\n\t data.resolve(data.results);\n\t }\n\t }\n\t }\n\t }]);\n\t\n\t return SearchWorkerLoader;\n\t})();\n\t\n\texports.default = SearchWorkerLoader;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// uuid.js\n\t//\n\t// Copyright (c) 2010-2012 Robert Kieffer\n\t// MIT License - http://opensource.org/licenses/mit-license.php\n\t\n\t// Unique ID creation requires a high quality random # generator. We feature\n\t// detect to determine the best RNG source, normalizing to a function that\n\t// returns 128-bits of randomness, since that's what's usually required\n\tvar _rng = __webpack_require__(9);\n\t\n\t// Maps for number <-> hex string conversion\n\tvar _byteToHex = [];\n\tvar _hexToByte = {};\n\tfor (var i = 0; i < 256; i++) {\n\t _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n\t _hexToByte[_byteToHex[i]] = i;\n\t}\n\t\n\t// **`parse()` - Parse a UUID into it's component bytes**\n\tfunction parse(s, buf, offset) {\n\t var i = (buf && offset) || 0, ii = 0;\n\t\n\t buf = buf || [];\n\t s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {\n\t if (ii < 16) { // Don't overflow!\n\t buf[i + ii++] = _hexToByte[oct];\n\t }\n\t });\n\t\n\t // Zero out remaining bytes if string was short\n\t while (ii < 16) {\n\t buf[i + ii++] = 0;\n\t }\n\t\n\t return buf;\n\t}\n\t\n\t// **`unparse()` - Convert UUID byte array (ala parse()) into a string**\n\tfunction unparse(buf, offset) {\n\t var i = offset || 0, bth = _byteToHex;\n\t return bth[buf[i++]] + bth[buf[i++]] +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] + '-' +\n\t bth[buf[i++]] + bth[buf[i++]] +\n\t bth[buf[i++]] + bth[buf[i++]] +\n\t bth[buf[i++]] + bth[buf[i++]];\n\t}\n\t\n\t// **`v1()` - Generate time-based UUID**\n\t//\n\t// Inspired by https://github.com/LiosK/UUID.js\n\t// and http://docs.python.org/library/uuid.html\n\t\n\t// random #'s we need to init node and clockseq\n\tvar _seedBytes = _rng();\n\t\n\t// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n\tvar _nodeId = [\n\t _seedBytes[0] | 0x01,\n\t _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]\n\t];\n\t\n\t// Per 4.2.2, randomize (14 bit) clockseq\n\tvar _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\t\n\t// Previous uuid creation time\n\tvar _lastMSecs = 0, _lastNSecs = 0;\n\t\n\t// See https://github.com/broofa/node-uuid for API details\n\tfunction v1(options, buf, offset) {\n\t var i = buf && offset || 0;\n\t var b = buf || [];\n\t\n\t options = options || {};\n\t\n\t var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\t\n\t // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n\t // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n\t // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n\t // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\t var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\t\n\t // Per 4.2.1.2, use count of uuid's generated during the current clock\n\t // cycle to simulate higher resolution clock\n\t var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\t\n\t // Time since last uuid creation (in msecs)\n\t var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\t\n\t // Per 4.2.1.2, Bump clockseq on clock regression\n\t if (dt < 0 && options.clockseq === undefined) {\n\t clockseq = clockseq + 1 & 0x3fff;\n\t }\n\t\n\t // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n\t // time interval\n\t if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n\t nsecs = 0;\n\t }\n\t\n\t // Per 4.2.1.2 Throw error if too many uuids are requested\n\t if (nsecs >= 10000) {\n\t throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n\t }\n\t\n\t _lastMSecs = msecs;\n\t _lastNSecs = nsecs;\n\t _clockseq = clockseq;\n\t\n\t // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\t msecs += 12219292800000;\n\t\n\t // `time_low`\n\t var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n\t b[i++] = tl >>> 24 & 0xff;\n\t b[i++] = tl >>> 16 & 0xff;\n\t b[i++] = tl >>> 8 & 0xff;\n\t b[i++] = tl & 0xff;\n\t\n\t // `time_mid`\n\t var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n\t b[i++] = tmh >>> 8 & 0xff;\n\t b[i++] = tmh & 0xff;\n\t\n\t // `time_high_and_version`\n\t b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\t b[i++] = tmh >>> 16 & 0xff;\n\t\n\t // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\t b[i++] = clockseq >>> 8 | 0x80;\n\t\n\t // `clock_seq_low`\n\t b[i++] = clockseq & 0xff;\n\t\n\t // `node`\n\t var node = options.node || _nodeId;\n\t for (var n = 0; n < 6; n++) {\n\t b[i + n] = node[n];\n\t }\n\t\n\t return buf ? buf : unparse(b);\n\t}\n\t\n\t// **`v4()` - Generate random UUID**\n\t\n\t// See https://github.com/broofa/node-uuid for API details\n\tfunction v4(options, buf, offset) {\n\t // Deprecated - 'format' argument, as supported in v1.2\n\t var i = buf && offset || 0;\n\t\n\t if (typeof(options) == 'string') {\n\t buf = options == 'binary' ? new Array(16) : null;\n\t options = null;\n\t }\n\t options = options || {};\n\t\n\t var rnds = options.random || (options.rng || _rng)();\n\t\n\t // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\t rnds[6] = (rnds[6] & 0x0f) | 0x40;\n\t rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\t\n\t // Copy bytes to buffer, if provided\n\t if (buf) {\n\t for (var ii = 0; ii < 16; ii++) {\n\t buf[i + ii] = rnds[ii];\n\t }\n\t }\n\t\n\t return buf || unparse(rnds);\n\t}\n\t\n\t// Export public API\n\tvar uuid = v4;\n\tuuid.v1 = v1;\n\tuuid.v4 = v4;\n\tuuid.parse = parse;\n\tuuid.unparse = unparse;\n\t\n\tmodule.exports = uuid;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\n\tvar rng;\n\t\n\tif (global.crypto && crypto.getRandomValues) {\n\t // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto\n\t // Moderately fast, high quality\n\t var _rnds8 = new Uint8Array(16);\n\t rng = function whatwgRNG() {\n\t crypto.getRandomValues(_rnds8);\n\t return _rnds8;\n\t };\n\t}\n\t\n\tif (!rng) {\n\t // Math.random()-based (RNG)\n\t //\n\t // If all else fails, use Math.random(). It's fast, but is of unspecified\n\t // quality.\n\t var _rnds = new Array(16);\n\t rng = function() {\n\t for (var i = 0, r; i < 16; i++) {\n\t if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n\t _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n\t }\n\t\n\t return _rnds;\n\t };\n\t}\n\t\n\tmodule.exports = rng;\n\t\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = function() {\n\t\treturn __webpack_require__(11)(\"/******/ (function(modules) { // webpackBootstrap\\n/******/ \\t// The module cache\\n/******/ \\tvar installedModules = {};\\n/******/\\n/******/ \\t// The require function\\n/******/ \\tfunction __webpack_require__(moduleId) {\\n/******/\\n/******/ \\t\\t// Check if module is in cache\\n/******/ \\t\\tif(installedModules[moduleId])\\n/******/ \\t\\t\\treturn installedModules[moduleId].exports;\\n/******/\\n/******/ \\t\\t// Create a new module (and put it into the cache)\\n/******/ \\t\\tvar module = installedModules[moduleId] = {\\n/******/ \\t\\t\\texports: {},\\n/******/ \\t\\t\\tid: moduleId,\\n/******/ \\t\\t\\tloaded: false\\n/******/ \\t\\t};\\n/******/\\n/******/ \\t\\t// Execute the module function\\n/******/ \\t\\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n/******/\\n/******/ \\t\\t// Flag the module as loaded\\n/******/ \\t\\tmodule.loaded = true;\\n/******/\\n/******/ \\t\\t// Return the exports of the module\\n/******/ \\t\\treturn module.exports;\\n/******/ \\t}\\n/******/\\n/******/\\n/******/ \\t// expose the modules object (__webpack_modules__)\\n/******/ \\t__webpack_require__.m = modules;\\n/******/\\n/******/ \\t// expose the module cache\\n/******/ \\t__webpack_require__.c = installedModules;\\n/******/\\n/******/ \\t// __webpack_public_path__\\n/******/ \\t__webpack_require__.p = \\\"\\\";\\n/******/\\n/******/ \\t// Load entry module and return exports\\n/******/ \\treturn __webpack_require__(0);\\n/******/ })\\n/************************************************************************/\\n/******/ ([\\n/* 0 */\\n/***/ function(module, exports, __webpack_require__) {\\n\\n\\t'use strict';\\n\\t\\n\\tvar _util = __webpack_require__(1);\\n\\t\\n\\tvar _util2 = _interopRequireDefault(_util);\\n\\t\\n\\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\t\\n\\t/**\\n\\t * Search entry point to web worker.\\n\\t * Builds search index and performs searches on separate thread from the ui.\\n\\t */\\n\\t\\n\\tvar searchUtility = new _util2.default();\\n\\t\\n\\tself.addEventListener('message', function (event) {\\n\\t var data = event.data;\\n\\t var method = data.method;\\n\\t\\n\\t switch (method) {\\n\\t case 'indexDocument':\\n\\t var uid = data.uid;\\n\\t var text = data.text;\\n\\t\\n\\t searchUtility.indexDocument(uid, text);\\n\\t break;\\n\\t case 'search':\\n\\t var callbackId = data.callbackId;\\n\\t var query = data.query;\\n\\t\\n\\t var results = searchUtility.search(query);\\n\\t\\n\\t self.postMessage({ callbackId: callbackId, results: results });\\n\\t break;\\n\\t }\\n\\t}, false);\\n\\n/***/ },\\n/* 1 */\\n/***/ function(module, exports, __webpack_require__) {\\n\\n\\t'use strict';\\n\\t\\n\\tObject.defineProperty(exports, \\\"__esModule\\\", {\\n\\t value: true\\n\\t});\\n\\texports.default = undefined;\\n\\t\\n\\tvar _SearchUtility = __webpack_require__(2);\\n\\t\\n\\tvar _SearchUtility2 = _interopRequireDefault(_SearchUtility);\\n\\t\\n\\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\t\\n\\texports.default = _SearchUtility2.default;\\n\\n/***/ },\\n/* 2 */\\n/***/ function(module, exports, __webpack_require__) {\\n\\n\\t'use strict';\\n\\t\\n\\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\\n\\t\\n\\tObject.defineProperty(exports, \\\"__esModule\\\", {\\n\\t value: true\\n\\t});\\n\\t\\n\\tvar _SearchIndex = __webpack_require__(3);\\n\\t\\n\\tvar _SearchIndex2 = _interopRequireDefault(_SearchIndex);\\n\\t\\n\\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\t\\n\\tfunction _typeof(obj) { return obj && typeof Symbol !== \\\"undefined\\\" && obj.constructor === Symbol ? \\\"symbol\\\" : typeof obj; }\\n\\t\\n\\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\t\\n\\t/**\\n\\t * Synchronous client-side full-text search utility.\\n\\t * Forked from JS search (github.com/bvaughn/js-search).\\n\\t */\\n\\t\\n\\tvar SearchUtility = (function () {\\n\\t\\n\\t /**\\n\\t * Constructor.\\n\\t */\\n\\t\\n\\t function SearchUtility() {\\n\\t _classCallCheck(this, SearchUtility);\\n\\t\\n\\t this.searchIndex = new _SearchIndex2.default();\\n\\t this.uids = {};\\n\\t }\\n\\t\\n\\t /**\\n\\t * Adds or updates a uid in the search index and associates it with the specified text.\\n\\t * Note that at this time uids can only be added or updated in the index, not removed.\\n\\t *\\n\\t * @param uid Uniquely identifies a searchable object\\n\\t * @param text Text to associate with uid\\n\\t */\\n\\t\\n\\t _createClass(SearchUtility, [{\\n\\t key: 'indexDocument',\\n\\t value: function indexDocument(uid, text) {\\n\\t var _this = this;\\n\\t\\n\\t function _ref(_id) {\\n\\t if (!(_id instanceof SearchUtility)) {\\n\\t throw new TypeError('Function return value violates contract, expected SearchUtility got ' + (_id === null ? 'null' : (typeof _id === 'undefined' ? 'undefined' : _typeof(_id)) === 'object' && _id.constructor ? _id.constructor.name || '[Unknown Object]' : typeof _id === 'undefined' ? 'undefined' : _typeof(_id)));\\n\\t }\\n\\t\\n\\t return _id;\\n\\t }\\n\\t\\n\\t if (!(typeof text === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"text\\\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\\n\\t }\\n\\t\\n\\t this.uids[uid] = true;\\n\\t\\n\\t var fieldTokens = this._tokenize(this._sanitize(text));\\n\\t\\n\\t if (!(Array.isArray(fieldTokens) && fieldTokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Value of variable \\\"fieldTokens\\\" violates contract, expected Array got ' + (fieldTokens === null ? 'null' : (typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)) === 'object' && fieldTokens.constructor ? fieldTokens.constructor.name || '[Unknown Object]' : typeof fieldTokens === 'undefined' ? 'undefined' : _typeof(fieldTokens)));\\n\\t }\\n\\t\\n\\t fieldTokens.forEach(function (fieldToken) {\\n\\t var expandedTokens = _this._expandToken(fieldToken);\\n\\t\\n\\t if (!(Array.isArray(expandedTokens) && expandedTokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Value of variable \\\"expandedTokens\\\" violates contract, expected Array got ' + (expandedTokens === null ? 'null' : (typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)) === 'object' && expandedTokens.constructor ? expandedTokens.constructor.name || '[Unknown Object]' : typeof expandedTokens === 'undefined' ? 'undefined' : _typeof(expandedTokens)));\\n\\t }\\n\\t\\n\\t expandedTokens.forEach(function (expandedToken) {\\n\\t return _this.searchIndex.indexDocument(expandedToken, uid);\\n\\t });\\n\\t });\\n\\t\\n\\t return _ref(this);\\n\\t }\\n\\t\\n\\t /**\\n\\t * Searches the current index for the specified query text.\\n\\t * Only uids matching all of the words within the text will be accepted.\\n\\t * If an empty query string is provided all indexed uids will be returned.\\n\\t *\\n\\t * Document searches are case-insensitive (e.g. \\\"search\\\" will match \\\"Search\\\").\\n\\t * Document searches use substring matching (e.g. \\\"na\\\" and \\\"me\\\" will both match \\\"name\\\").\\n\\t *\\n\\t * @param query Searchable query text\\n\\t * @return Array of uids\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: 'search',\\n\\t value: function search(query) {\\n\\t function _ref2(_id2) {\\n\\t if (!Array.isArray(_id2)) {\\n\\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id2 === null ? 'null' : (typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === 'undefined' ? 'undefined' : _typeof(_id2)));\\n\\t }\\n\\t\\n\\t return _id2;\\n\\t }\\n\\t\\n\\t if (!(typeof query === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"query\\\" violates contract, expected string got ' + (query === null ? 'null' : (typeof query === 'undefined' ? 'undefined' : _typeof(query)) === 'object' && query.constructor ? query.constructor.name || '[Unknown Object]' : typeof query === 'undefined' ? 'undefined' : _typeof(query)));\\n\\t }\\n\\t\\n\\t if (!query) {\\n\\t return _ref2(Object.keys(this.uids));\\n\\t } else {\\n\\t var tokens = this._tokenize(this._sanitize(query));\\n\\t\\n\\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Value of variable \\\"tokens\\\" violates contract, expected Array got ' + (tokens === null ? 'null' : (typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === 'undefined' ? 'undefined' : _typeof(tokens)));\\n\\t }\\n\\t\\n\\t return _ref2(this.searchIndex.search(tokens));\\n\\t }\\n\\t }\\n\\t\\n\\t /**\\n\\t * Index strategy based on 'all-substrings-index-strategy.ts' in github.com/bvaughn/js-search/\\n\\t *\\n\\t * @private\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: '_expandToken',\\n\\t value: function _expandToken(token) {\\n\\t function _ref3(_id3) {\\n\\t if (!(Array.isArray(_id3) && _id3.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id3 === null ? 'null' : (typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)) === 'object' && _id3.constructor ? _id3.constructor.name || '[Unknown Object]' : typeof _id3 === 'undefined' ? 'undefined' : _typeof(_id3)));\\n\\t }\\n\\t\\n\\t return _id3;\\n\\t }\\n\\t\\n\\t if (!(typeof token === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"token\\\" violates contract, expected string got ' + (token === null ? 'null' : (typeof token === 'undefined' ? 'undefined' : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === 'undefined' ? 'undefined' : _typeof(token)));\\n\\t }\\n\\t\\n\\t var expandedTokens = [];\\n\\t\\n\\t for (var i = 0, length = token.length; i < length; ++i) {\\n\\t var prefixString = '';\\n\\t\\n\\t for (var j = i; j < length; ++j) {\\n\\t prefixString += token.charAt(j);\\n\\t\\n\\t if (!(typeof prefixString === 'string')) {\\n\\t throw new TypeError('Value of variable \\\"prefixString\\\" violates contract, expected string got ' + (prefixString === null ? 'null' : (typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)) === 'object' && prefixString.constructor ? prefixString.constructor.name || '[Unknown Object]' : typeof prefixString === 'undefined' ? 'undefined' : _typeof(prefixString)));\\n\\t }\\n\\t\\n\\t expandedTokens.push(prefixString);\\n\\t }\\n\\t }\\n\\t\\n\\t return _ref3(expandedTokens);\\n\\t }\\n\\t\\n\\t /**\\n\\t * @private\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: '_sanitize',\\n\\t value: function _sanitize(string) {\\n\\t function _ref4(_id4) {\\n\\t if (!(typeof _id4 === 'string')) {\\n\\t throw new TypeError('Function return value violates contract, expected string got ' + (_id4 === null ? 'null' : (typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)) === 'object' && _id4.constructor ? _id4.constructor.name || '[Unknown Object]' : typeof _id4 === 'undefined' ? 'undefined' : _typeof(_id4)));\\n\\t }\\n\\t\\n\\t return _id4;\\n\\t }\\n\\t\\n\\t if (!(typeof string === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"string\\\" violates contract, expected string got ' + (string === null ? 'null' : (typeof string === 'undefined' ? 'undefined' : _typeof(string)) === 'object' && string.constructor ? string.constructor.name || '[Unknown Object]' : typeof string === 'undefined' ? 'undefined' : _typeof(string)));\\n\\t }\\n\\t\\n\\t return _ref4(string.trim().toLocaleLowerCase());\\n\\t }\\n\\t\\n\\t /**\\n\\t * @private\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: '_tokenize',\\n\\t value: function _tokenize(text) {\\n\\t function _ref5(_id5) {\\n\\t if (!(Array.isArray(_id5) && _id5.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError('Function return value violates contract, expected Array got ' + (_id5 === null ? 'null' : (typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)) === 'object' && _id5.constructor ? _id5.constructor.name || '[Unknown Object]' : typeof _id5 === 'undefined' ? 'undefined' : _typeof(_id5)));\\n\\t }\\n\\t\\n\\t return _id5;\\n\\t }\\n\\t\\n\\t if (!(typeof text === 'string')) {\\n\\t throw new TypeError('Value of argument \\\"text\\\" violates contract, expected string got ' + (text === null ? 'null' : (typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.constructor ? text.constructor.name || '[Unknown Object]' : typeof text === 'undefined' ? 'undefined' : _typeof(text)));\\n\\t }\\n\\t\\n\\t return _ref5(text.split(/\\\\s+/).filter(function (text) {\\n\\t return text;\\n\\t })); // Remove empty tokens\\n\\t }\\n\\t }]);\\n\\t\\n\\t return SearchUtility;\\n\\t})();\\n\\t\\n\\texports.default = SearchUtility;\\n\\n/***/ },\\n/* 3 */\\n/***/ function(module, exports) {\\n\\n\\t\\\"use strict\\\";\\n\\t\\n\\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\\n\\t\\n\\tObject.defineProperty(exports, \\\"__esModule\\\", {\\n\\t value: true\\n\\t});\\n\\t\\n\\tfunction _typeof(obj) { return obj && typeof Symbol !== \\\"undefined\\\" && obj.constructor === Symbol ? \\\"symbol\\\" : typeof obj; }\\n\\t\\n\\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\t\\n\\t/**\\n\\t * Maps search tokens to uids.\\n\\t * This structure is used by the Search class to optimize search operations.\\n\\t * Forked from JS search (github.com/bvaughn/js-search).\\n\\t */\\n\\t\\n\\tvar SearchIndex = (function () {\\n\\t function SearchIndex() {\\n\\t _classCallCheck(this, SearchIndex);\\n\\t\\n\\t this.tokenToUidMap = {};\\n\\t }\\n\\t\\n\\t /**\\n\\t * Maps the specified token to a uid.\\n\\t *\\n\\t * @param token Searchable token (e.g. \\\"road\\\")\\n\\t * @param uid Identifies a document within the searchable corpus\\n\\t */\\n\\t\\n\\t _createClass(SearchIndex, [{\\n\\t key: \\\"indexDocument\\\",\\n\\t value: function indexDocument(token, uid) {\\n\\t if (!(typeof token === 'string')) {\\n\\t throw new TypeError(\\\"Value of argument \\\\\\\"token\\\\\\\" violates contract, expected string got \\\" + (token === null ? 'null' : (typeof token === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(token)) === 'object' && token.constructor ? token.constructor.name || '[Unknown Object]' : typeof token === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(token)));\\n\\t }\\n\\t\\n\\t if (!this.tokenToUidMap[token]) {\\n\\t this.tokenToUidMap[token] = {};\\n\\t }\\n\\t\\n\\t this.tokenToUidMap[token][uid] = uid;\\n\\t }\\n\\t\\n\\t /**\\n\\t * Finds uids that have been mapped to the set of tokens specified.\\n\\t * Only uids that have been mapped to all tokens will be returned.\\n\\t *\\n\\t * @param tokens Array of searchable tokens (e.g. [\\\"long\\\", \\\"road\\\"])\\n\\t * @return Array of uids that have been associated with the set of search tokens\\n\\t */\\n\\t\\n\\t }, {\\n\\t key: \\\"search\\\",\\n\\t value: function search(tokens) {\\n\\t var _this = this;\\n\\t\\n\\t function _ref2(_id2) {\\n\\t if (!Array.isArray(_id2)) {\\n\\t throw new TypeError(\\\"Function return value violates contract, expected Array got \\\" + (_id2 === null ? 'null' : (typeof _id2 === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(_id2)) === 'object' && _id2.constructor ? _id2.constructor.name || '[Unknown Object]' : typeof _id2 === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(_id2)));\\n\\t }\\n\\t\\n\\t return _id2;\\n\\t }\\n\\t\\n\\t if (!(Array.isArray(tokens) && tokens.every(function (item) {\\n\\t return typeof item === 'string';\\n\\t }))) {\\n\\t throw new TypeError(\\\"Value of argument \\\\\\\"tokens\\\\\\\" violates contract, expected Array got \\\" + (tokens === null ? 'null' : (typeof tokens === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(tokens)) === 'object' && tokens.constructor ? tokens.constructor.name || '[Unknown Object]' : typeof tokens === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(tokens)));\\n\\t }\\n\\t\\n\\t var uidMap = {};\\n\\t\\n\\t if (!(uidMap != null && (typeof uidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uidMap)) === 'object')) {\\n\\t throw new TypeError(\\\"Value of variable \\\\\\\"uidMap\\\\\\\" violates contract, expected { [uid: any]: any\\\\n} got \\\" + (uidMap === null ? 'null' : (typeof uidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uidMap)) === 'object' && uidMap.constructor ? uidMap.constructor.name || '[Unknown Object]' : typeof uidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uidMap)));\\n\\t }\\n\\t\\n\\t var initialized = false;\\n\\t\\n\\t tokens.forEach(function (token) {\\n\\t var currentUidMap = _this.tokenToUidMap[token] || {};\\n\\t\\n\\t if (!(currentUidMap != null && (typeof currentUidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(currentUidMap)) === 'object')) {\\n\\t throw new TypeError(\\\"Value of variable \\\\\\\"currentUidMap\\\\\\\" violates contract, expected { [uid: any]: any\\\\n} got \\\" + (currentUidMap === null ? 'null' : (typeof currentUidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(currentUidMap)) === 'object' && currentUidMap.constructor ? currentUidMap.constructor.name || '[Unknown Object]' : typeof currentUidMap === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(currentUidMap)));\\n\\t }\\n\\t\\n\\t if (!initialized) {\\n\\t initialized = true;\\n\\t\\n\\t for (var _uid in currentUidMap) {\\n\\t uidMap[_uid] = currentUidMap[_uid];\\n\\t }\\n\\t } else {\\n\\t for (var _uid2 in uidMap) {\\n\\t if (!currentUidMap[_uid2]) {\\n\\t delete uidMap[_uid2];\\n\\t }\\n\\t }\\n\\t }\\n\\t });\\n\\t\\n\\t var uids = [];\\n\\t\\n\\t if (!Array.isArray(uids)) {\\n\\t throw new TypeError(\\\"Value of variable \\\\\\\"uids\\\\\\\" violates contract, expected Array got \\\" + (uids === null ? 'null' : (typeof uids === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uids)) === 'object' && uids.constructor ? uids.constructor.name || '[Unknown Object]' : typeof uids === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(uids)));\\n\\t }\\n\\t\\n\\t for (var _uid3 in uidMap) {\\n\\t uids.push(uidMap[_uid3]);\\n\\t }\\n\\t\\n\\t return _ref2(uids);\\n\\t }\\n\\t }]);\\n\\t\\n\\t return SearchIndex;\\n\\t})();\\n\\t\\n\\texports.default = SearchIndex;\\n\\n/***/ }\\n/******/ ]);\\n//# sourceMappingURL=b93146b1722737f6c785.worker.js.map\", __webpack_require__.p + \"b93146b1722737f6c785.worker.js\");\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t// http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string\r\n\t\r\n\tvar URL = window.URL || window.webkitURL;\r\n\tmodule.exports = function(content, url) {\r\n\t\ttry {\r\n\t\t\ttry {\r\n\t\t\t\tvar blob;\r\n\t\t\t\ttry { // BlobBuilder = Deprecated, but widely implemented\r\n\t\t\t\t\tvar BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\r\n\t\t\t\t\tblob = new BlobBuilder();\r\n\t\t\t\t\tblob.append(content);\r\n\t\t\t\t\tblob = blob.getBlob();\r\n\t\t\t\t} catch(e) { // The proposed API\r\n\t\t\t\t\tblob = new Blob([content]);\r\n\t\t\t\t}\r\n\t\t\t\treturn new Worker(URL.createObjectURL(blob));\r\n\t\t\t} catch(e) {\r\n\t\t\t\treturn new Worker('data:application/javascript,' + encodeURIComponent(content));\r\n\t\t\t}\r\n\t\t} catch(e) {\r\n\t\t\treturn new Worker(url);\r\n\t\t}\r\n\t}\n\n/***/ }\n/******/ ]);\n//# sourceMappingURL=js-worker-search.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-worker-search/dist/js-worker-search.js\n ** module id = 18\n ** module chunks = 0\n **/","/** @flow */\nimport {\n INITIALIZE_RESOURCES,\n RECEIVE_RESULT,\n SEARCH\n} from './constants'\n\n/**\n * The user must add this reducer to their app store/tree.\n * By default it is assumed that this reducer will be added at :search.\n * If you use another location you must pass a custom :searchStateSelector to reduxSearch().\n */\nexport default function searchReducer (state = {}, { payload, type }) {\n if (handlers.hasOwnProperty(type)) {\n return handlers[type](state, payload)\n } else {\n return state\n }\n}\n\n/**\n * Search state reducers.\n */\nexport const handlers = {\n [INITIALIZE_RESOURCES] (state, { resourceNames }) {\n return resourceNames.reduce((result, resourceName) => {\n result[resourceName] = {\n isSearching: false,\n result: [],\n text: ''\n }\n return result\n }, { ...state })\n },\n\n [RECEIVE_RESULT] (state, { resourceName, result }) {\n return {\n ...state,\n [resourceName]: {\n ...state[resourceName],\n isSearching: false,\n result\n }\n }\n },\n\n [SEARCH] (state, { resourceName, text }) {\n return {\n ...state,\n [resourceName]: {\n ...state[resourceName],\n isSearching: true,\n text\n }\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reducer.js\n **/"],"sourceRoot":""} \ No newline at end of file