{"version":3,"file":"./static/configurator-mini.js","mappings":"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AE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACTA,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,+BAA+B,uJAA4D;AAC3F,kCAAkC,mBAAO,CAAC,wHAA6C;AACvF,eAAe,mBAAO,CAAC,4EAAuB;AAC9C,gBAAgB,mBAAO,CAAC,gFAAyB;AACjD,gCAAgC,mBAAO,CAAC,kHAA0C;AAClF,eAAe,mBAAO,CAAC,8EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mDAAmD;AACnD,IAAI;AACJ,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrDA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;ACNa;AACb;AACA,mBAAO,CAAC,oFAA2B;AACnC,eAAe,mBAAO,CAAC,4EAAuB;AAC9C,iBAAiB,mBAAO,CAAC,kFAA0B;AACnD,YAAY,mBAAO,CAAC,sEAAoB;AACxC,sBAAsB,mBAAO,CAAC,8FAAgC;AAC9D,kCAAkC,mBAAO,CAAC,wHAA6C;;AAEvF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;;AAEA,4BAA4B,mBAAmB;;AAE/C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,iBAAiB;AACjB;AACA,eAAe;AACf,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACvEA,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACRA,eAAe,mBAAO,CAAC,8EAAwB;;AAE/C;AACA;AACA,yCAAyC,IAAI;AAC7C,kDAAkD,IAAI;;AAEtD;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;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACxCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM,gBAAgB,qBAAM;AAC3C;AACA,iBAAiB,cAAc;;;;;;;;;;;ACb/B,eAAe,mBAAO,CAAC,8EAAwB;;AAE/C,uBAAuB;;AAEvB;AACA;AACA;;;;;;;;;;;ACNA;;;;;;;;;;;ACAA,iBAAiB,mBAAO,CAAC,oFAA2B;;AAEpD;;;;;;;;;;;ACFA,kBAAkB,mBAAO,CAAC,kFAA0B;AACpD,YAAY,mBAAO,CAAC,sEAAoB;AACxC,oBAAoB,mBAAO,CAAC,0GAAsC;;AAElE;AACA;AACA;AACA;AACA,uBAAuB;AACvB,GAAG;AACH,CAAC;;;;;;;;;;;ACVD,YAAY,mBAAO,CAAC,sEAAoB;AACxC,cAAc,mBAAO,CAAC,kFAA0B;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,EAAE;;;;;;;;;;;ACZF,YAAY,mBAAO,CAAC,oFAA2B;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,sBAAsB,mBAAO,CAAC,0FAA8B;AAC5D,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,eAAe,mBAAO,CAAC,8EAAwB;AAC/C,kCAAkC,mBAAO,CAAC,wHAA6C;AACvF,gBAAgB,mBAAO,CAAC,kEAAkB;AAC1C,aAAa,mBAAO,CAAC,oFAA2B;AAChD,gBAAgB,mBAAO,CAAC,gFAAyB;AACjD,iBAAiB,mBAAO,CAAC,kFAA0B;;AAEnD;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClEA,YAAY,mBAAO,CAAC,sEAAoB;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;;;;;;;;;;;ACFA;;;;;;;;;;;ACAA,iBAAiB,mBAAO,CAAC,oFAA2B;AACpD,wBAAwB,mBAAO,CAAC,8FAAgC;;AAEhE;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;ACRA;AACA,iBAAiB,mBAAO,CAAC,8FAAgC;AACzD,YAAY,mBAAO,CAAC,sEAAoB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACZD,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,oBAAoB,mBAAO,CAAC,wFAA6B;;AAEzD;;AAEA;;;;;;;;;;;ACLA;AACA,eAAe,mBAAO,CAAC,8EAAwB;AAC/C,uBAAuB,mBAAO,CAAC,4GAAuC;AACtE,kBAAkB,mBAAO,CAAC,sFAA4B;AACtD,iBAAiB,mBAAO,CAAC,kFAA0B;AACnD,WAAW,mBAAO,CAAC,oEAAmB;AACtC,4BAA4B,mBAAO,CAAC,0GAAsC;AAC1E,gBAAgB,mBAAO,CAAC,gFAAyB;;AAEjD;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,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,sBAAsB,mBAAO,CAAC,wGAAqC;;AAEnE;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AChHa;AACb,eAAe,mBAAO,CAAC,8EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACfA,YAAY,mBAAO,CAAC,sEAAoB;AACxC,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED,oBAAoB;AACpB;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACjBD,YAAY,mBAAO,CAAC,2DAAS;AAC7B,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACTD,YAAY,mBAAO,CAAC,2DAAS;AAC7B,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;AACA;AACA,yCAAyC,kDAAkD;AAC3F,IAAI;AACJ;AACA,IAAI;AACJ;;;;;;;;;;;ACTA,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,UAAU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","sources":["webpack://freightliner/./scripts/configurator-mini/_config-store.js","webpack://freightliner/./scripts/configurator-mini/_exterior-builder.js","webpack://freightliner/./scripts/configurator-mini/_interior-builder.js","webpack://freightliner/./scripts/configurator-mini/_utilities.js","webpack://freightliner/../node_modules/core-js/internals/advance-string-index.js","webpack://freightliner/../node_modules/core-js/internals/an-object.js","webpack://freightliner/../node_modules/core-js/internals/array-includes.js","webpack://freightliner/../node_modules/core-js/internals/classof-raw.js","webpack://freightliner/../node_modules/core-js/internals/copy-constructor-properties.js","webpack://freightliner/../node_modules/core-js/internals/create-non-enumerable-property.js","webpack://freightliner/../node_modules/core-js/internals/create-property-descriptor.js","webpack://freightliner/../node_modules/core-js/internals/descriptors.js","webpack://freightliner/../node_modules/core-js/internals/document-create-element.js","webpack://freightliner/../node_modules/core-js/internals/engine-user-agent.js","webpack://freightliner/../node_modules/core-js/internals/engine-v8-version.js","webpack://freightliner/../node_modules/core-js/internals/enum-bug-keys.js","webpack://freightliner/../node_modules/core-js/internals/export.js","webpack://freightliner/../node_modules/core-js/internals/fails.js","webpack://freightliner/../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://freightliner/../node_modules/core-js/internals/get-built-in.js","webpack://freightliner/../node_modules/core-js/internals/get-substitution.js","webpack://freightliner/../node_modules/core-js/internals/global.js","webpack://freightliner/../node_modules/core-js/internals/has.js","webpack://freightliner/../node_modules/core-js/internals/hidden-keys.js","webpack://freightliner/../node_modules/core-js/internals/html.js","webpack://freightliner/../node_modules/core-js/internals/ie8-dom-define.js","webpack://freightliner/../node_modules/core-js/internals/indexed-object.js","webpack://freightliner/../node_modules/core-js/internals/inspect-source.js","webpack://freightliner/../node_modules/core-js/internals/internal-state.js","webpack://freightliner/../node_modules/core-js/internals/is-forced.js","webpack://freightliner/../node_modules/core-js/internals/is-object.js","webpack://freightliner/../node_modules/core-js/internals/is-pure.js","webpack://freightliner/../node_modules/core-js/internals/is-symbol.js","webpack://freightliner/../node_modules/core-js/internals/native-symbol.js","webpack://freightliner/../node_modules/core-js/internals/native-weak-map.js","webpack://freightliner/../node_modules/core-js/internals/object-create.js","webpack://freightliner/../node_modules/core-js/internals/object-define-properties.js","webpack://freightliner/../node_modules/core-js/internals/object-define-property.js","webpack://freightliner/../node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://freightliner/../node_modules/core-js/internals/object-get-own-property-names.js","webpack://freightliner/../node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://freightliner/../node_modules/core-js/internals/object-keys-internal.js","webpack://freightliner/../node_modules/core-js/internals/object-keys.js","webpack://freightliner/../node_modules/core-js/internals/object-property-is-enumerable.js","webpack://freightliner/../node_modules/core-js/internals/ordinary-to-primitive.js","webpack://freightliner/../node_modules/core-js/internals/own-keys.js","webpack://freightliner/../node_modules/core-js/internals/redefine.js","webpack://freightliner/../node_modules/core-js/internals/regexp-exec-abstract.js","webpack://freightliner/../node_modules/core-js/internals/regexp-exec.js","webpack://freightliner/../node_modules/core-js/internals/regexp-flags.js","webpack://freightliner/../node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://freightliner/../node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://freightliner/../node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://freightliner/../node_modules/core-js/internals/require-object-coercible.js","webpack://freightliner/../node_modules/core-js/internals/set-global.js","webpack://freightliner/../node_modules/core-js/internals/shared-key.js","webpack://freightliner/../node_modules/core-js/internals/shared-store.js","webpack://freightliner/../node_modules/core-js/internals/shared.js","webpack://freightliner/../node_modules/core-js/internals/string-multibyte.js","webpack://freightliner/../node_modules/core-js/internals/to-absolute-index.js","webpack://freightliner/../node_modules/core-js/internals/to-indexed-object.js","webpack://freightliner/../node_modules/core-js/internals/to-integer.js","webpack://freightliner/../node_modules/core-js/internals/to-length.js","webpack://freightliner/../node_modules/core-js/internals/to-object.js","webpack://freightliner/../node_modules/core-js/internals/to-primitive.js","webpack://freightliner/../node_modules/core-js/internals/to-property-key.js","webpack://freightliner/../node_modules/core-js/internals/to-string.js","webpack://freightliner/../node_modules/core-js/internals/uid.js","webpack://freightliner/../node_modules/core-js/internals/use-symbol-as-uid.js","webpack://freightliner/../node_modules/core-js/internals/well-known-symbol.js","webpack://freightliner/../node_modules/core-js/modules/es.regexp.exec.js","webpack://freightliner/../node_modules/core-js/modules/es.string.replace.js","webpack://freightliner/webpack/bootstrap","webpack://freightliner/webpack/runtime/compat get default export","webpack://freightliner/webpack/runtime/define property getters","webpack://freightliner/webpack/runtime/global","webpack://freightliner/webpack/runtime/hasOwnProperty shorthand","webpack://freightliner/webpack/runtime/make namespace object","webpack://freightliner/./scripts/configurator-mini/main.js"],"sourcesContent":["/* global Rx, Redux, devToolsExtension */\r\n\r\nconst { createStore } = Redux;\r\n\r\nconst deepLinkMap = {\r\n\t\"p4-126_bbc_day_cab\": {\r\n\t\ttruckModel: \"P4\",\r\n\t\tcabType: \"day\",\r\n\t\ttruckCab: \"126\\\" BBC Day Cab\"\r\n\t},\r\n\t\"p4-126_bbc_72_rr\": {\r\n\t\ttruckModel: \"P4\",\r\n\t\tcabType: \"sleeper\",\r\n\t\ttruckCab: \"126\\\" BBC 72\\\" RR\"\r\n\t}\r\n}\r\n\r\nconst initState = {\r\n\t\"standalone\": false,\r\n\t\"defaultTruck\": \"p4-126_bbc_day_cab\",\r\n\t\"truckModel\": \"P4\",\r\n\t\"cabType\": \"\",\r\n\t\"truckCab\": \"\",\r\n\t\"interiorViewRadius\": 450,\r\n\t\"hotspotAngle\": 315,\r\n\t\"hotspotScaleWidth\": 1365,\r\n\t\"hotspotScaleHeight\": 910,\r\n\t\"nav\": \"explore\",\r\n\t\"navs\": [\r\n\t\t\"explore\"\r\n\t],\r\n\t\"view\": \"exterior\",\r\n\t\"views\": [\r\n\t\t\"exterior\",\r\n\t\t\"interior\"\r\n\t],\r\n\t\"pillar\": \"Fuel Efficiency\",\r\n\t\"pillars\": [\r\n\t\t{\r\n\t\t\tid: \"fuel-efficiency\",\r\n\t\t\tname: \"Fuel Efficiency\",\r\n\t\t\ticon: \"icon-fuel-efficiency\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"connectivity\",\r\n\t\t\tname: \"Connectivity\",\r\n\t\t\ticon: \"icon-connectivity\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"safety\",\r\n\t\t\tname: \"Safety\",\r\n\t\t\ticon: \"icon-safety\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"quality\",\r\n\t\t\tname: \"Quality\",\r\n\t\t\ticon: \"icon-quality\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"uptime\",\r\n\t\t\tname: \"Uptime\",\r\n\t\t\ticon: \"icon-uptime\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"driver-experience\",\r\n\t\t\tname: \"Driver Experience\",\r\n\t\t\ticon: \"icon-driver-experience\"\r\n\t\t}\r\n\t],\r\n\t\"viewOptions\": [\r\n\t\t{\r\n\t\t\tid: \"exterior\",\r\n\t\t\tname: \"Exterior\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"interior\",\r\n\t\t\tname: \"Interior\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"powertrain\",\r\n\t\t\tname: \"Powertrain/Chassis\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: \"safety\",\r\n\t\t\tname: \"Safety/Connectivity\"\r\n\t\t}\r\n\t],\r\n\t\"viewOption\": \"Exterior\",\r\n\t\"interiorBuildSettings\": {},\r\n\t\"interiorBuildChange\": {},\r\n\t\"exteriorBuildSettings\": {},\r\n\t\"exteriorBuildChange\": {},\r\n\t\"powertrainOptions\": [\r\n\t\t\"Powertrain Package\",\r\n\t\t\"Engine\",\r\n\t\t\"Transmission\",\r\n\t\t\"Front Axle\",\r\n\t\t\"Rear Axle\",\r\n\t\t\"Rear Axle Ratios\",\r\n\t\t\"Axle Lubrication Management\",\r\n\t\t\"Intelligent Powertrain Management\",\r\n\t\t\"Front Suspension\",\r\n\t\t\"Rear Suspension\",\r\n\t],\r\n\t// \"powertrainCategoryRules\": {\r\n\t// \t\"Transmission\": true,\r\n\t// \t\"Front Axle\": true,\r\n\t// \t\"Rear Axle\": true,\r\n\t// \t\"Front Suspension\": true,\r\n\t// \t\"Rear Suspension\": true\r\n\t// },\r\n\t\"powertrainCategoryRules\": [\r\n\t\t\"Transmission\",\r\n\t\t\"Front Axle\",\r\n\t\t\"Rear Axle\",\r\n\t\t\"Front Suspension\",\r\n\t\t\"Rear Suspension\"\r\n\t],\r\n\t\"powertrainBuildSettings\": {},\r\n\t\"safetyOptions\": [\r\n\t\t\"Safety\",\r\n\t\t\"Forward Radar System\",\r\n\t\t\"Side Object Detection\",\r\n\t\t\"Camera System\",\r\n\t\t\"Video Capture\",\r\n\t],\r\n\t\"safetyBuildSettings\": {},\r\n\t\"connectivityOptions\": [\r\n\t\t\"Detroit Connect\",\r\n\t\t\"Zonar\"\r\n\t],\r\n\t\"connectivityBuildSettings\": {},\r\n\t\"activeFab\": false,\r\n\t\"clearActiveFab\": false,\r\n\t\"dataReady\": false\r\n};\r\n\r\nfunction configurator(state = initState, action) {\r\n\tlet tempState;\r\n\tswitch (action.type) {\r\n\t\tcase 'DEEP_LINK_LOAD':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\ttruckModel: deepLinkMap[action.data.truck] ?\r\n\t\t\t\t\tdeepLinkMap[action.data.truck].truckModel : state.truckModel,\r\n\t\t\t\tcabType: deepLinkMap[action.data.truck] ?\r\n\t\t\t\t\tdeepLinkMap[action.data.truck].cabType : state.cabType,\r\n\t\t\t\ttruckCab: deepLinkMap[action.data.truck] ?\r\n\t\t\t\t\tdeepLinkMap[action.data.truck].truckCab : state.truckCab,\r\n\t\t\t\tview: action.data.view,\r\n\t\t\t\tpillar: action.data.pillar,\r\n\t\t\t\tstandalone: action.data.standalone\r\n\t\t\t});\r\n\t\tcase 'LOAD_OPTIONS_MATRIX':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\toptionsMatrix: action.data\r\n\t\t\t});\r\n\t\tcase 'LOAD_ADS_FABS':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tadsFabs: _.filter(action.data.assets, (asset) => {\r\n\t\t\t\t\treturn asset.type === \"FAB\"\r\n\t\t\t\t}),\r\n\t\t\t\tadsVids: _.filter(action.data.assets, (asset) => {\r\n\t\t\t\t\treturn asset.type === \"VID\"\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\tcase 'FORMAT_ADS_PATH_TREE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tpathTree: formatPathTree(action.data, (val, key) => {\r\n\t\t\t\t\treturn val.name;\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\tcase 'LOAD_INTERIOR_MAP':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tinteriorMap: action.data\r\n\t\t\t});\r\n\t\tcase 'LOAD_EXTERIOR_MAP':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\texteriorMap: action.data\r\n\t\t\t});\r\n\t\tcase 'ALL_DATA_LOADED':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tdataReady: true\r\n\t\t\t});\r\n\t\tcase 'INTERIOR_BUILD_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tinteriorBuildSettings: Object.assign({}, state.interiorBuildSettings, action.buildSetting),\r\n\t\t\t\tinteriorBuildChange: Object.assign({}, action.buildSetting)\r\n\t\t\t});\r\n\t\tcase 'EXTERIOR_BUILD_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\texteriorBuildSettings: Object.assign({}, state.exteriorBuildSettings, action.buildSetting),\r\n\t\t\t\texteriorBuildChange: Object.assign({}, action.buildSetting)\r\n\t\t\t});\r\n\t\tcase 'POWERTRAIN_BUILD_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tpowertrainBuildSettings: Object.assign({}, state.powertrainBuildSettings, action.buildSetting)\r\n\t\t\t});\r\n\t\tcase 'SAFETY_BUILD_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tsafetyBuildSettings: Object.assign({}, state.safetyBuildSettings, action.buildSetting)\r\n\t\t\t});\r\n\t\tcase 'INTERIOR_BUILD_SETTINGS_INIT':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tinteriorBuildSettings: action.data\r\n\t\t\t});\r\n\t\tcase 'EXTERIOR_BUILD_SETTINGS_INIT':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\texteriorBuildSettings: action.data\r\n\t\t\t});\r\n\t\tcase 'MAIN_NAV_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tnav: action.data,\r\n\t\t\t\tactiveFab: false,\r\n\t\t\t\tclearActiveFab: false,\r\n\t\t\t\tinteriorBuildChange: {},\r\n\t\t\t\texteriorBuildChange: {},\r\n\t\t\t\tactionType: \"main_nav_change\"\r\n\t\t\t});\r\n\t\tcase 'VIEW_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tview: action.data,\r\n\t\t\t\tviewOption: _.capitalize(action.data),\r\n\t\t\t\tactiveFab: false,\r\n\t\t\t\tclearActiveFab: false,\r\n\t\t\t\tactionType: \"view_change\"\r\n\t\t\t});\r\n\t\tcase 'PILLAR_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tpillar: action.data,\r\n\t\t\t\tactiveFab: false,\r\n\t\t\t\tclearActiveFab: false,\r\n\t\t\t\texteriorBuildChange: Object.assign({}, {\r\n\t\t\t\t\t\"Pillar\": action.data\r\n\t\t\t\t}),\r\n\t\t\t\tinteriorBuildChange: Object.assign({}, {\r\n\t\t\t\t\t\"Pillar\": action.data\r\n\t\t\t\t}),\r\n\t\t\t\tactionType: \"pillar_change\"\r\n\t\t\t});\r\n\t\tcase 'VIEW_OPTION_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tview: (action.data.toLowerCase() === \"interior\" || action.data.toLowerCase() === \"exterior\" ?\r\n\t\t\t\taction.data.toLowerCase() : state.view),\r\n\t\t\t\tviewOption: action.data,\r\n\t\t\t\tactiveFab: false,\r\n\t\t\t\tclearActiveFab: false,\r\n\t\t\t\texteriorBuildChange: Object.assign({}, {\r\n\t\t\t\t\t\"ViewOption\": action.data\r\n\t\t\t\t}),\r\n\t\t\t\tinteriorBuildChange: Object.assign({}, {\r\n\t\t\t\t\t\"ViewOption\": action.data\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\tcase 'ACTIVE_FAB_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tactiveFab: action.data,\r\n\t\t\t\tclearActiveFab: false,\r\n\t\t\t\tactionType: \"active_fab_change\"\r\n\t\t\t});\r\n\t\tcase 'ACTIVE_FAB_CLEAR':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tactiveFab: false,\r\n\t\t\t\tclearActiveFab: true,\r\n\t\t\t\tactionType: \"active_fab_clear\"\r\n\t\t\t});\r\n\t\tcase 'CAB_CHANGE':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tcabType: action.data.cabType,\r\n\t\t\t\ttruckCab: action.data.truckCab,\r\n\t\t\t\tinteriorBuildSettings: getBuildSettingsInit(state, action.data.truckCab, \"Interior\"),\r\n\t\t\t\texteriorBuildSettings: getBuildSettingsInit(state, action.data.truckCab, \"Exterior\"),\r\n\t\t\t\tpowertrainBuildSettings: getBuildSettingsInit(state, action.data.truckCab, \"Components\", state.powertrainOptions),\r\n\t\t\t\tsafetyBuildSettings: getBuildSettingsInit(state, action.data.truckCab, \"Components\", state.safetyOptions),\r\n\t\t\t\tconnectivityBuildSettings: getBuildSettingsInit(state, action.data.truckCab, \"Components\", state.connectivityOptions),\r\n\t\t\t\tactionType: \"cab_change\"\r\n\t\t\t});\r\n\t\tcase 'CAB_RESET':\r\n\t\t\treturn Object.assign({}, state, {\r\n\t\t\t\tcabType: \"\",\r\n\t\t\t\ttruckCab: \"\",\r\n\t\t\t\tactiveFab: false,\r\n\t\t\t\tclearActiveFab: false,\r\n\t\t\t\tnav: \"explore\",\r\n\t\t\t\tview: \"exterior\",\r\n\t\t\t\tpillar: \"Fuel Efficiency\",\r\n\t\t\t\tactionType: \"cab_reset\"\r\n\t\t\t});\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n\r\n/**\r\n * Take the path tree Nodes format and convert it to named properties object format\r\n * @param obj - path tree data\r\n * @param cb - formatting callback\r\n * @returns {*} - formatted object\r\n */\r\nfunction formatPathTree(obj, cb) {\r\n\tif (_.isUndefined(obj)) {\r\n\t\tthrow new Error(`map-keys-deep-lodash expects an object but got ${typeof obj}`);\r\n\t}\r\n\r\n\tif (obj.nodes) {\r\n\t\tobj = _.mapKeys(obj, cb);\r\n\t} else if (_.isArray(obj)) {\r\n\t\tobj = _.mapKeys(obj, cb);\r\n\t} else {\r\n\t\treturn {\r\n\t\t\tid: obj.id\r\n\t\t}\r\n\t}\r\n\r\n\tlet res = {};\r\n\r\n\tfor (const key in obj) {\r\n\t\tif (obj.hasOwnProperty(key)) {\r\n\t\t\tconst val = obj[key];\r\n\t\t\tif (_.isArray(val)) {\r\n\t\t\t\tres = formatPathTree(val, cb);\r\n\t\t\t} else if (_.isObject(val)) {\r\n\t\t\t\tres[key] = formatPathTree(val, cb);\r\n\t\t\t} else {\r\n\t\t\t\tres.id = obj.id;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn res;\r\n}\r\n\r\nfunction getBuildSettingsInit(state, truckCab, view, filter) {\r\n\tlet buildSettings = {},\r\n\t\toptions = state.optionsMatrix[view];\r\n\r\n\tif (filter) {\r\n\t\toptions = _.pick(options, filter);\r\n\t}\r\n\r\n\t_.forEach(options, function (component, componentKey) {\r\n\t\tif (componentKey === \"Cab\") {\r\n\t\t\tbuildSettings.Cab = \"cab\";\r\n\t\t} else {\r\n\t\t\t_.forEach(component, function (category) {\r\n\t\t\t\tlet defaultOption = _.find(category, option => {\r\n\t\t\t\t\t\treturn option[state.truckModel + \" \" + truckCab] === \"*\";\r\n\t\t\t\t\t}) || _.find(category, option => {\r\n\t\t\t\t\t\treturn option[state.truckModel + \" \" + truckCab] === \"X\";\r\n\t\t\t\t\t});\r\n\t\t\t\tbuildSettings[componentKey] = defaultOption ? defaultOption.Key : false;\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\treturn buildSettings;\r\n}\r\n\r\nexport const store = createStore(configurator,\r\n\twindow.devToolsExtension && window.devToolsExtension());\r\nexport const store$ = Rx.Observable.from(store);","/* global _, $, Rx, virtualDom, Promise, ProgressBar, console */\r\nimport {convertName, getFabs} from \"./_utilities\";\r\nconst h = virtualDom.h;\r\n\r\n/**\r\n * Build truck configurator\r\n * @param selector - dom selector for container\r\n * @param path - path to the images\r\n * @param layers - array of layerNames\r\n * @param useWorker - bool\r\n * @returns {*|jQuery|HTMLElement}\r\n */\r\nexport function setupExteriorBuilder(selector, state, l, useWorker) {\r\n\tlet exteriorBuilder = {},\r\n\t\tpath = convertName(state.truckModel + \"-\" + state.truckCab) + \"-exterior\",\r\n\t\t$container = $(selector),\r\n\t\t$layers = $('
').appendTo($container),\r\n\t\timageLayers = [],\r\n\t\t$progressBarMask = $('
').appendTo($container),\r\n\t\t$progressBarCircle = new ProgressBar.Circle($progressBarMask.find(\".progress-bar-circle\")[0], {\r\n\t\t\tcolor: \"#fff\",\r\n\t\t\t// This has to be the same size as the maximum width to\r\n\t\t\t// prevent clipping\r\n\t\t\tstrokeWidth: 4,\r\n\t\t\ttrailWidth: 4,\r\n\t\t\teasing: 'easeInOut',\r\n\t\t\tduration: 1400,\r\n\t\t\tsvgStyle: {\r\n\t\t\t\tdisplay: 'block',\r\n\t\t\t\twidth: '100%',\r\n\t\t\t\theight: '100%',\r\n\t\t\t\tposition: 'absolute'\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tautoStyleContainer: false\r\n\t\t\t},\r\n\t\t\tfrom: {color: '#e5e5e5', width: 4},\r\n\t\t\tto: {color: '#5482ab', width: 4},\r\n\t\t\t// Set default step function for all animate calls\r\n\t\t\tstep: function (state, circle) {\r\n\t\t\t\tcircle.path.setAttribute('stroke', state.color);\r\n\t\t\t\tcircle.path.setAttribute('stroke-width', state.width);\r\n\r\n\t\t\t\tvar value = Math.round(circle.value() * 100);\r\n\t\t\t\tif (value === 0) {\r\n\t\t\t\t\tcircle.setText('');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcircle.setText(\"LOADING \" + value + \"%\");\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}),\r\n\t\t$progressBarLineWrap = $('
').appendTo($container),\r\n\t\t$progressBarLine = new ProgressBar.Line($progressBarLineWrap.find(\".progress-bar-line\")[0], {\r\n\t\t\tstrokeWidth: 4,\r\n\t\t\teasing: 'linear',\r\n\t\t\tduration: 1400,\r\n\t\t\tcolor: '#5482ab',\r\n\t\t\ttrailColor: '#e5e5e5',\r\n\t\t\ttrailWidth: 4,\r\n\t\t\tsvgStyle: {width: '100%', height: '100%'}\r\n\t\t}),\r\n\t\timageMaxWidth = 1365,\r\n\t\timageMaxHeight = 910,\r\n\t\taspectRatio = imageMaxHeight / imageMaxWidth,\r\n\t\tnumFrames = 24,\r\n\t\tframeDivider = 1,\r\n\t\tdragSpeedFactor = 0.08,\r\n\t\tminScrubDistance = 40,\r\n\t\tdimensionsRegex = /-(\\d+)-(\\d+)-(\\d+)-(\\d+).png/g,\r\n\t\tlayersVTree, layersVNode;\r\n\r\n\texteriorBuilder.el = $container;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param n - the number to pad\r\n\t * @param p - pad amount\r\n\t * @param c - pad character (default: 0)\r\n\t * @returns {string}\r\n\t */\r\n\tfunction anglePad(n, p, c) {\r\n\t\tvar pad_char = typeof c !== 'undefined' ? c : '0';\r\n\t\tvar pad = new Array(1 + p).join(pad_char);\r\n\t\treturn (pad + n).slice(-pad.length);\r\n\t}\r\n\r\n\tfunction filterByDivider(_, i) {\r\n\t\treturn i % frameDivider < 1;\r\n\t}\r\n\r\n\tfunction loadImage(image) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tlet img = new Image();\r\n\t\t\timg.src = image;\r\n\t\t\timg.onload = () => {\r\n\t\t\t\t// console.log(\"resolve load Image\", image.src)\r\n\t\t\t\tresolve(image);\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tfunction sortImages(a, b) {\r\n\t\tvar srcA = a.toUpperCase(); // ignore upper and lowercase\r\n\t\tvar srcB = b.toUpperCase(); // ignore upper and lowercase\r\n\t\tif (srcA < srcB) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\tif (srcA > srcB) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\t// names must be equal\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfunction getCanvasDimensions() {\r\n\t\tvar width = $container.find(\".layers\").outerWidth(),\r\n\t\t\theight = $container.find(\".layers\").outerHeight();\r\n\t\tif (width * aspectRatio < height) {\r\n\t\t\treturn {\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: width * aspectRatio\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn {\r\n\t\t\t\twidth: height / aspectRatio,\r\n\t\t\t\theight: height\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction delegate(wrapper, selector, eventName) {\r\n\t\treturn Rx.Observable.fromEvent(\r\n\t\t\twrapper,\r\n\t\t\teventName,\r\n\t\t\tfunction (e) {\r\n\t\t\t\treturn {event: e, delegate: e.target.closest(selector)};\r\n\t\t\t}\r\n\t\t).filter(function (x) {\r\n\t\t\treturn x.delegate !== null;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction setupKeyControls($layers) {\r\n\t\tRx.Observable.fromEvent(document, \"keydown\").subscribe(function (e) {\r\n\t\t\tvar movement = 1 * frameDivider / numFrames,\r\n\t\t\t\tdirection,\r\n\t\t\t\tprogress;\r\n\t\t\tif (e.keyCode === 37 || e.keyCode === 39) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tdirection = 38 - e.keyCode;\r\n\t\t\t\trotateTruck(direction);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param x\r\n\t * @param y\r\n\t * @param canvasDims\r\n\t * @returns {{left: string, top: string}}\r\n\t */\r\n\tfunction getHotspotScaledPosition(x, y, canvasDims) {\r\n\t\tlet position = {\r\n\t\t\tleft: (((x / state.hotspotScaleWidth) * canvasDims.width) >> 0) + \"px\",\r\n\t\t\ttop: (((y / state.hotspotScaleHeight) * canvasDims.height) >> 0) + \"px\"\r\n\t\t};\r\n\t\treturn position;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param layerContainer\r\n\t * @param state\r\n\t */\r\n\tfunction buildDom(layerContainer, state) {\r\n\t\t// insert/update image layers\r\n\t\tlet canvasDims = getCanvasDimensions(),\r\n\t\t\tvdom = h(\"div\", [\r\n\t\t\t\th(\"button.view-hotspots\", \"View Features\"),\r\n\t\t\t\th(\"div.vdom\", {\r\n\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\"style\": \"width: \" + canvasDims.width + \"px;\" +\r\n\t\t\t\t\t\t\" height: \" + canvasDims.height + \"px;\"\r\n\t\t\t\t\t}\r\n\t\t\t\t}, [\r\n\t\t\t\t\tlayerContainer\r\n\t\t\t\t])\r\n\t\t\t]);\r\n\r\n\t\tif (layersVTree) {\r\n\t\t\tlet newLayersVTree = vdom, // with some munging\r\n\t\t\t\tlayersPatches = virtualDom.diff(layersVTree, newLayersVTree);\r\n\t\t\tlayersVNode = virtualDom.patch(layersVNode, layersPatches);\r\n\t\t\tlayersVTree = newLayersVTree;\r\n\t\t} else {\r\n\t\t\tlayersVTree = vdom;\r\n\t\t\tlayersVNode = virtualDom.create(layersVTree);\r\n\t\t\t$layers.html(layersVNode);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * get image data and dims\r\n\t * @param src\r\n\t * @returns {Promise}\r\n\t */\r\n\tfunction getImage(src) {\r\n\t\tlet p = new Promise((resolve, reject) => {\r\n\t\t\tvar img = new Image(),\r\n\t\t\t\tdims;\r\n\t\t\timg.crossOrigin = \"\";\r\n\t\t\timg.src = src;\r\n\t\t\tdims = getDimensions(src);\r\n\t\t\timg.onload = function () {\r\n\t\t\t\tresolve({\r\n\t\t\t\t\tsrc,\r\n\t\t\t\t\timg,\r\n\t\t\t\t\tdims\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\timg.onerror = (e) => {\r\n\t\t\t\tresolve();\r\n\t\t\t};\r\n\t\t});\r\n\t\treturn p;\r\n\t}\r\n\r\n\tfunction createLayerGenerator(state, numAngles) {\r\n\t\tlet images = _.times(numAngles, i => {\r\n\t\t\treturn \"/images/configurator-mini/\" + path + \"/\" +\r\n\t\t\t\tconvertName(state.truckModel + \"-\" + state.truckCab) +\r\n\t\t\t\t\"-cab-\" +\r\n\t\t\t\tanglePad(i * 360 / numFrames, 3) + \".jpg\";\r\n\t\t});\r\n\r\n\t\treturn Rx.Observable.from(images).mergeMap(image => {\r\n\t\t\treturn Rx.Observable.fromPromise(loadImage(image));\r\n\t\t}).scan((a, x, i) => {\r\n\t\t\tupdateProgress(i, images.length - 1, x, false, false);\r\n\t\t\treturn x;\r\n\t\t}).bufferCount(numAngles.length)\r\n\r\n\t}\r\n\r\n\tfunction updateHotspotPositions() {\r\n\t\tlet canvasDims = getCanvasDimensions();\r\n\t\t$container.find(\".hotspot-label\").each((i, spot) => {\r\n\t\t\tlet $spot = $(spot),\r\n\t\t\t\tdata = $spot.data(\"fab\"),\r\n\t\t\t\tx = data.fabPosition.x,\r\n\t\t\t\ty = data.fabPosition.y,\r\n\t\t\t\tscaledPosition = getHotspotScaledPosition(x, y, canvasDims);\r\n\t\t\t$spot.css({\r\n\t\t\t\tleft: scaledPosition.left,\r\n\t\t\t\ttop: scaledPosition.top\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction generateHotspots(state) {\r\n\t\t// create hotspots\r\n\t\t$container.find(\".hotspot-label\").remove();\r\n\r\n\t\t_.chain(getFabs(state)).forEach(fab => {\r\n\t\t\tlet canvasDims = getCanvasDimensions(),\r\n\t\t\t\thotspotPosition = getHotspotScaledPosition(fab.fabPosition.x, fab.fabPosition.y, canvasDims),\r\n\t\t\t\t$vdom = $layers.find(\".vdom\");\r\n\t\t\t$('
')\r\n\t\t\t\t.data({\r\n\t\t\t\t\t\"data-fab\": fab\r\n\t\t\t\t})\r\n\t\t\t\t.attr({\r\n\t\t\t\t\t\"data-fab\": JSON.stringify(fab),\r\n\t\t\t\t\t\"style\": \"left: \" + hotspotPosition.left + \"; top: \" + hotspotPosition.top + \";\"\r\n\t\t\t\t}).appendTo($vdom);\r\n\t\t}).value();\r\n\t}\r\n\r\n\tfunction updateTruckRotation(state) {\r\n\t\tif (!exteriorBuilder.rotationAngle || state.exteriorBuildChange.Pillar) {\r\n\t\t\trotateTruck(false, state.hotspotAngle);\r\n\t\t} else {\r\n\t\t\trotateTruck(false, exteriorBuilder.rotationAngle);\r\n\t\t}\r\n\t}\r\n\r\n\texteriorBuilder.update = (state) => {\r\n\t\tif (state.truckModel === \"\" || state.truckCab === \"\") {\r\n\t\t\t$layers.hide();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$layers.show();\r\n\t\t// console.log(\"start creating layers\");\r\n\r\n\t\tif (state.actionType === \"cab_change\") {\r\n\t\t\texteriorBuilder.rotationAngle = false;\r\n\t\t}\r\n\r\n\t\tif (state.actionType !== \"pillar_change\") {\r\n\t\t\t// hide everything until done building\r\n\t\t\t$layers.css({\r\n\t\t\t\topacity: 0\r\n\t\t\t});\r\n\t\t\tupdateProgress(1, 100, null, false, false);\r\n\t\t}\r\n\r\n\r\n\t\tpath = convertName(state.truckModel + \"-\" + state.truckCab) + \"-exterior\";\r\n\r\n\t\t// let observables = createLayerGenerator(state, numFrames);\r\n\r\n\t\tcreateLayerGenerator(state, numFrames)\r\n\t\t\t.subscribe(function (images) {\r\n\t\t\t\t// console.log(\"done creating layers\", images);\r\n\r\n\t\t\t\tlet layerContainer = h(\"div.image-layer\", _.chain(images).sort(sortImages).map(img => {\r\n\t\t\t\t\treturn h(\"img.layer-angle\", {\r\n\t\t\t\t\t\tsrc: img\r\n\t\t\t\t\t});\r\n\t\t\t\t}).value());\r\n\t\t\t\tbuildDom(layerContainer, state);\r\n\r\n\t\t\t\tgenerateHotspots(state);\r\n\r\n\t\t\t\tupdateTruckRotation(state);\r\n\r\n\t\t\t\t// updateHotspotPositions();\r\n\r\n\t\t\t\t// show everything now it's done building\r\n\t\t\t\t$layers.css({\r\n\t\t\t\t\topacity: 1\r\n\t\t\t\t});\r\n\t\t\t\tupdateProgress(1, 1, null, true, false);\r\n\r\n\t\t\t}, function error(e) {\r\n\t\t\t\tconsole.log(\"error\", e);\r\n\t\t\t});\r\n\r\n\r\n\t};\r\n\r\n\t// setup truck spin animations\r\n\t/**\r\n\t *\r\n\t * @param $layerContainer\r\n\t * @param $mouseContainer\r\n\t */\r\n\tfunction initScrubAnimationEvents($layers, $mouseContainer) {\r\n\t\tvar $window = $(window),\r\n\t\t\twinWidth = $window.width(),\r\n\t\t\t$mContainer = $mouseContainer || $layers,\r\n\t\t\tisDragging = false,\r\n\t\t\tstartX,\r\n\t\t\tlastX,\r\n\t\t\tdirection = 0;\r\n\r\n\t\tfunction handleStart(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tisDragging = true;\r\n\t\t\tlet touch = e.originalEvent.touches,\r\n\t\t\t\tx = touch ? e.originalEvent.touches[0].pageX : e.pageX;\r\n\t\t\tstartX = x;\r\n\t\t\tlastX = x;\r\n\t\t}\r\n\r\n\t\tfunction handleEnd(e) {\r\n\t\t\tisDragging = false;\r\n\t\t\tstartX = 0;\r\n\t\t\tlastX = 0;\r\n\t\t}\r\n\r\n\t\tfunction handleMove(e) {\r\n\t\t\tlet movement,\r\n\t\t\t\tcurrentDirection,\r\n\t\t\t\ttouch = e.originalEvent.touches,\r\n\t\t\t\tx = touch ? e.originalEvent.touches[0].pageX : e.pageX;\r\n\r\n\t\t\tif (isDragging) {\r\n\t\t\t\t// check for direction\r\n\t\t\t\t// if changed reset starting point for computing progress\r\n\t\t\t\tcurrentDirection = x - lastX > 0 ? -1 : 1;\r\n\t\t\t\tif (direction !== currentDirection) {\r\n\t\t\t\t\tstartX = x;\r\n\t\t\t\t\tdirection = currentDirection;\r\n\t\t\t\t}\r\n\t\t\t\twinWidth = $window.width();\r\n\t\t\t\tmovement = Math.abs(x - startX) > minScrubDistance; //Math.abs((e.pageX - startX) * dragSpeedFactor);\r\n\t\t\t\t// console.log(\"movement\", movement, startX, e.pageX, lastX);\r\n\t\t\t\tif (movement) {\r\n\t\t\t\t\trotateTruck(direction);\r\n\t\t\t\t\tstartX = x;\r\n\t\t\t\t}\r\n\t\t\t\tlastX = x;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tRx.Observable.fromEvent($mContainer, \"mousedown\").subscribe(handleStart);\r\n\t\tRx.Observable.fromEvent($mContainer, \"mouseup\").subscribe(handleEnd);\r\n\t\tRx.Observable.fromEvent($mContainer, \"mousemove\").subscribe(handleMove);\r\n\t\tRx.Observable.fromEvent($mContainer, \"touchstart\").subscribe(handleStart);\r\n\t\tRx.Observable.fromEvent($mContainer, \"touchend\").subscribe(handleEnd);\r\n\t\tRx.Observable.fromEvent($mContainer, \"touchmove\").subscribe(handleMove);\r\n\t}\r\n\r\n\tfunction showActiveLayer(hideIndex, showIndex) {\r\n\t\t$layers.find(\".image-layer, .paint-layer\").each((i, layer) => {\r\n\t\t\tlet angles = $(layer).find(\".layer-angle\");\r\n\t\t\tangles.eq(hideIndex).css({\r\n\t\t\t\topacity: 0\r\n\t\t\t});\r\n\t\t\tangles.eq(showIndex).css({\r\n\t\t\t\topacity: 1\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction wrapIndex(index) {\r\n\t\tlet wrappedIndex;\r\n\t\tif (index === numFrames) {\r\n\t\t\twrappedIndex = 0\r\n\t\t} else if (index === -1) {\r\n\t\t\twrappedIndex = numFrames - 1;\r\n\t\t} else {\r\n\t\t\twrappedIndex = index;\r\n\t\t}\r\n\t\treturn wrappedIndex\r\n\t}\r\n\r\n\tfunction angleToIndex(angle) {\r\n\t\treturn (angle / 360) * numFrames >> 0;\r\n\t}\r\n\r\n\tfunction rotateTruck(d, targetRotationAngle, fps = 10) {\r\n\t\tlet currentRotationIndex = angleToIndex(exteriorBuilder.rotationAngle),\r\n\t\t\ttargetRotationIndex = targetRotationAngle ?\r\n\t\t\t\tangleToIndex(targetRotationAngle) :\r\n\t\t\tcurrentRotationIndex + (d ? d : 0),\r\n\t\t\tdirection = d || 0,\r\n\t\t\tshowIndex;\r\n\r\n\t\t// if all angles haven't been loaded yet then just show first one\r\n\t\tif (numFrames !== 24) {\r\n\t\t\tcurrentRotationIndex = currentRotationIndex;\r\n\t\t}\r\n\r\n\t\tif (!d) {\r\n\t\t\t// if all angles haven't been loaded yet then just show first one\r\n\t\t\tif (numFrames !== 24) {\r\n\t\t\t\ttargetRotationIndex = 0;\r\n\t\t\t}\r\n\t\t\tif (targetRotationIndex > currentRotationIndex) {\r\n\t\t\t\tif (targetRotationIndex - currentRotationIndex > numFrames / 2) {\r\n\t\t\t\t\tdirection = -1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdirection = 1;\r\n\t\t\t\t}\r\n\t\t\t} else if (currentRotationIndex > targetRotationIndex) {\r\n\t\t\t\tif (currentRotationIndex - targetRotationIndex > numFrames / 2) {\r\n\t\t\t\t\tdirection = 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdirection = -1;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdirection = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tshowIndex = wrapIndex(currentRotationIndex + direction);\r\n\t\tshowActiveLayer(currentRotationIndex, showIndex);\r\n\r\n\t\t// console.log(\"indices\", currentRotationIndex, targetRotationIndex, numFrames);\r\n\t\t// console.log(\"exteriorBuilder.rotationAngle\", exteriorBuilder.rotationAngle);\r\n\t\t// console.log(\"targetRotationAngle\", targetRotationAngle);\r\n\t\t// console.log(\"targetRotationIndex\", targetRotationIndex);\r\n\t\t// console.log(\"layer to hide\", currentRotationIndex);\r\n\t\t// console.log(\"layer to show\", showIndex);\r\n\r\n\t\t// store new rotation angle\r\n\t\t// and show hotspots if we are at the right angle\r\n\t\texteriorBuilder.rotationAngle = numFrames ? showIndex * 360 / numFrames : 0;\r\n\t\tif (exteriorBuilder.rotationAngle !== state.hotspotAngle) {\r\n\t\t\t$container.find(\".hotspot-label\").hide();\r\n\t\t\t$container.find(\".view-hotspots\").show();\r\n\t\t} else {\r\n\t\t\t$container.find(\".hotspot-label\").show();\r\n\t\t\t$container.find(\".view-hotspots\").hide();\r\n\t\t}\r\n\r\n\t\t// continue if we have not reached newRotationAngle\r\n\t\tif (showIndex !== targetRotationIndex) {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\trotateTruck(false, targetRotationAngle);\r\n\t\t\t}, 1000 / fps);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateProgress(i, l, x, c, r, min = 0, max = 1) {\r\n\t\tvar target = l > 0 ? l : 1,\r\n\t\t\tprogress = min + ((i / target) * max);\r\n\t\t// console.log(\"update progress: \", i, l, min, max, progress, c, r);\r\n\r\n\t\tif (r) {\r\n\t\t\tif (progress >= 0) {\r\n\t\t\t\t$progressBarLineWrap.show();\r\n\t\t\t}\r\n\t\t\t$progressBarLine.animate(progress);\r\n\t\t\tif (c) {\r\n\t\t\t\t$progressBarLineWrap.hide();\r\n\t\t\t\t$progressBarLine.set(0);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (progress >= 0) {\r\n\t\t\t\t$progressBarMask.show();\r\n\t\t\t}\r\n\r\n\t\t\t$progressBarCircle.animate(progress);\r\n\t\t\tif (c) {\r\n\t\t\t\t$progressBarMask.hide();\r\n\t\t\t\t$progressBarCircle.set(0);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcurrent: x,\r\n\t\t\tprogress: progress,\r\n\t\t\tr\r\n\t\t};\r\n\t}\r\n\r\n\tinitScrubAnimationEvents($layers, $container);\r\n\tsetupKeyControls($layers);\r\n\r\n\treturn exteriorBuilder;\r\n}\r\n","/* global _, $, Rx, virtualDom, Promise, console */\r\nimport {convertName, getFabs} from \"./_utilities\";\r\n\r\n/**\r\n * setup Interior Builder\r\n * @param selector\r\n * @param state\r\n * @returns {{}}\r\n */\r\nexport function setupInteriorBuilder(selector, state, store) {\r\n\tconst canvasWidth = 4096,\r\n\t\tcanvasHeight = 2048;\r\n\r\n\tlet interiorViewer = {},\r\n\t\timgFolder,\r\n\t\tmd = new MobileDetect(window.navigator.userAgent),\r\n\t\tmobile = md.mobile(),\r\n\t\ttargetLat = 0, targetLon = 0,\r\n\t\tcontainer, $container,\r\n\t\tcamera,\r\n\t\tprevCameraTarget = {\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\tz: 0\r\n\t\t},\r\n\t\tscene, renderer,\r\n\t\traycaster, mouse = new THREE.Vector2(), INTERSECTED,\r\n\t\tcontrols,\r\n\t\tcanvas, context,\r\n\t\tlayerMesh,\r\n\t\tlayerTexture, layerGeometry, layerMaterial,\r\n\t\thotspotCanvas = document.createElement(\"canvas\"),\r\n\t\thotspotCanvasContext,\r\n\t\thotspots,\r\n\t\thotspotGeometry = new THREE.PlaneGeometry(64, 64, 1),\r\n\t\thotspotMaterial,\r\n\t\thotspotTexture = new THREE.Texture(hotspotCanvas),\r\n\t\tisUserInteracting = false,\r\n\t\tonPointerDownPointerX = 0, onPointerDownPointerY = 0,\r\n\t\tlon = 0, onPointerDownLon = 0,\r\n\t\tlat = 0, onPointerDownLat = 0,\r\n\t\tphi = 0, theta = 0,\r\n\t\tradius = state.interiorViewRadius,\r\n\t\tanimFactor = 0.1,\r\n\t\tanimPrecision = 0.1,\r\n\t\tmoveFactor = mobile ? 0.5 : 0.1,\r\n\t\tviewInitRotationDegrees = mobile ? 180 : -90,\r\n\t\tjitterThreshold = 0.0005,\r\n\t\tanimateMovement = true,\r\n\t\t$progressBarMask,\r\n\t\t$progressBarCircle,\r\n\t\t// should the viewer run\r\n\t\trun = false;\r\n\r\n\tfunction setupViewer() {\r\n\r\n\t\t$container = $(selector);\r\n\t\t// loader\r\n\t\t$progressBarMask = $('
').appendTo($container);\r\n\t\t$progressBarCircle = new ProgressBar.Circle($progressBarMask.find(\".progress-bar-circle\")[0], {\r\n\t\t\tcolor: \"#fff\",\r\n\t\t\t// This has to be the same size as the maximum width to\r\n\t\t\t// prevent clipping\r\n\t\t\tstrokeWidth: 4,\r\n\t\t\ttrailWidth: 4,\r\n\t\t\teasing: 'easeInOut',\r\n\t\t\tduration: 1400,\r\n\t\t\ttext: {\r\n\t\t\t\tautoStyleContainer: false\r\n\t\t\t},\r\n\t\t\tfrom: {color: '#e5e5e5', width: 4},\r\n\t\t\tto: {color: '#5482ab', width: 4},\r\n\t\t\t// Set default step function for all animate calls\r\n\t\t\tstep: function (state, circle) {\r\n\t\t\t\tcircle.path.setAttribute('stroke', state.color);\r\n\t\t\t\tcircle.path.setAttribute('stroke-width', state.width);\r\n\r\n\t\t\t\tvar value = Math.round(circle.value() * 100);\r\n\t\t\t\tif (value === 0) {\r\n\t\t\t\t\tcircle.setText('');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcircle.setText(\"LOADING \" + value + \"%\");\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcontainer = $container[0];\r\n\r\n\t\traycaster = new THREE.Raycaster();\r\n\r\n\t\thotspotCanvas.width = 64;\r\n\t\thotspotCanvas.height = 64;\r\n\t\thotspotCanvasContext = hotspotCanvas.getContext(\"2d\");\r\n\t\thotspotMaterial = new THREE.MeshBasicMaterial({\r\n\t\t\tmap: hotspotTexture,\r\n\t\t\ttransparent: true\r\n\t\t});\r\n\r\n\t\tRx.Observable.fromPromise(getImage(\"/images/inactive-hotspot-icon.png\"))\r\n\t\t\t.subscribe(imgData => {\r\n\t\t\t\tconsole.log(\"hotspot image\", imgData);\r\n\t\t\t\thotspotCanvasContext.drawImage(imgData.img, 0, 0,\r\n\t\t\t\t\timgData.img.width, imgData.img.height,\r\n\t\t\t\t\t0, 0,\r\n\t\t\t\t\timgData.img.width, imgData.img.height);\r\n\r\n\t\t\t}, e => {\r\n\t\t\t\tconsole.log(e)\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tconsole.log(\"loaded hotspot icon\")\r\n\t\t\t\thotspotTexture.needsUpdate = true;\r\n\t\t\t});\r\n\r\n\t\tcanvas = document.createElement(\"canvas\");\r\n\t\tcanvas.width = canvasWidth;\r\n\t\tcanvas.height = canvasHeight;\r\n\t\tcontext = canvas.getContext(\"2d\");\r\n\t\tcontext.globalCompositeOperation = \"source-over\";\r\n\r\n\t\trenderer = new THREE.WebGLRenderer();\r\n\t\trenderer.setPixelRatio(window.devicePixelRatio);\r\n\t\trenderer.setSize(container.clientWidth, container.clientHeight);\r\n\t\trenderer.domElement.style.position = 'absolute';\r\n\t\trenderer.domElement.style.top = 0;\r\n\r\n\t\trenderer.sortObjects = false;\r\n\r\n\t\tcontainer.appendChild(renderer.domElement);\r\n\r\n\t\tscene = new THREE.Scene();\r\n\r\n\t\tcamera = new THREE.PerspectiveCamera(75, container.clientWidth / container.clientHeight, 1, 1100);\r\n\t\tcamera.target = new THREE.Vector3(0, 0, 0);\r\n\r\n\t\tlayerTexture = new THREE.Texture(canvas);\r\n\t\tlayerTexture.needsUpdate = true;\r\n\t\tlayerGeometry = new THREE.SphereGeometry(500, 60, 40);\r\n\t\tlayerGeometry.scale(-1, 1, 1);\r\n\t\tlayerMaterial = new THREE.MeshBasicMaterial({\r\n\t\t\tmap: layerTexture,\r\n\t\t\ttransparent: true\r\n\t\t});\r\n\t\tlayerMesh = new THREE.Mesh(layerGeometry, layerMaterial);\r\n\t\tif (mobile) {\r\n\t\t\tlayerMesh.rotation.y = THREE.Math.radToDeg(viewInitRotationDegrees);\r\n\t\t}\r\n\t\tscene.add(layerMesh);\r\n\r\n\t\thotspotTexture.needsUpdate = true;\r\n\r\n\t\tinteriorViewer.showHotspots = true;\r\n\r\n\t\tif (mobile) {\r\n\t\t\tcontrols = new DeviceOrientationController(camera, renderer.domElement);\r\n\t\t\tcontrols.enableManualDrag = false;\r\n\t\t\tcontrols.connect();\r\n\t\t\t// controls = new THREE.DeviceOrientationControls(camera);\r\n\t\t\t// controls.enableDamping = true;\r\n\t\t\t// controls.dampingFactor = 0.25;\r\n\t\t\t// controls.enableZoom = false;\r\n\t\t\t// controls.rotateSpeed = 0.2;\r\n\t\t\t// // reverse initial angle so looking out the front of the truck\r\n\t\t\t// //controls.alphaOffsetAngle = Math.PI;\r\n\t\t}\r\n\t\t// else {\r\n\t\t// \tcontrols = new THREE.OrbitControls(camera, renderer.domElement);\r\n\t\t// \tcontrols.enableDamping = true;\r\n\t\t// \tcontrols.dampingFactor = 0.25;\r\n\t\t// \tcontrols.enableZoom = false;\r\n\t\t// \tcontrols.rotateSpeed = 0.2;\r\n\t\t// }\r\n\r\n\r\n\r\n\t\tcontainer.addEventListener('mousedown', onDocumentMoveStart, false);\r\n\t\tcontainer.addEventListener('mousemove', onDocumentMove, false);\r\n\t\tcontainer.addEventListener('mouseup', onDocumentMoveEnd, false);\r\n\t\tcontainer.addEventListener('touchstart', onDocumentMoveStart, false);\r\n\t\tcontainer.addEventListener('touchmove', onDocumentMove, false);\r\n\t\tcontainer.addEventListener('touchend', onDocumentMoveEnd, false);\r\n\t\tcontainer.addEventListener('mousewheel', onDocumentMouseWheel, false);\r\n\t\t// container.addEventListener('click', onDocumentClick, false);\r\n\t\tcontainer.addEventListener('MozMousePixelScroll', onDocumentMouseWheel, false);\r\n\r\n\t\twindow.addEventListener('resize', updateRendererSize, false);\r\n\r\n\t\tvar tap$ = Rx.Observable.merge(\r\n\t\t\tRx.Observable.fromEvent(container, \"mousedown\"),\r\n\t\t\tRx.Observable.fromEvent(container, \"touchstart\")\r\n\t\t);\r\n\r\n\t\tRx.Observable.interval(50)\r\n\t\t\t.takeUntil(tap$)\r\n\t\t\t.filter(() => run)\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\t//console.log(\"auto rotating\", onPointerDownPointerX, onPointerDownLon, lon);\r\n\t\t\t\tonPointerDownPointerX += 10;\r\n\t\t\t\tonPointerDownLon = lon;\r\n\t\t\t\ttargetLon = 10 * moveFactor + onPointerDownLon;\r\n\t\t\t});\r\n\r\n\t}\r\n\r\n\tfunction updateProgress(i, l, x, c, r, min = 0, max = 1) {\r\n\t\tvar target = l > 0 ? l : 1,\r\n\t\t\tprogress = min + ((i / target) * max);\r\n\t\t// console.log(\"update progress: \", i, l, min, max, progress, c, r);\r\n\r\n\t\tif (r) {\r\n\t\t\tif (progress >= 0) {\r\n\t\t\t\t$progressBarLineWrap.show();\r\n\t\t\t}\r\n\t\t\t$progressBarLine.animate(progress);\r\n\t\t\tif (c) {\r\n\t\t\t\t$progressBarLineWrap.hide();\r\n\t\t\t\t$progressBarLine.set(0);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (progress >= 0) {\r\n\t\t\t\t$progressBarMask.show();\r\n\t\t\t}\r\n\r\n\t\t\t$progressBarCircle.animate(progress);\r\n\t\t\tif (c) {\r\n\t\t\t\t$progressBarMask.hide();\r\n\t\t\t\t$progressBarCircle.set(0);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcurrent: x,\r\n\t\t\tprogress: progress,\r\n\t\t\tr\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getFileName(dir, layerName) {\r\n\t\tvar p = new Promise((resolve, reject) => {\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: \"../getImage.php?dir=\" + dir + \"&image=\" + layerName[0],\r\n\t\t\t\t// url: \"https://freightlinertrucks-staging.azurewebsites.net/umbraco/surface/configurator/getImages?\" +\r\n\t\t\t\t// \"dir=\" + dir + \"&image=\" + layerName,\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t}).then(function (filename) {\r\n\t\t\t\tconsole.log(dir, layerName, filename);\r\n\t\t\t\tresolve(filename);\r\n\t\t\t}, function (error) {\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn p;\r\n\t}\r\n\r\n\tfunction update() {\r\n\t\tvar latDiff,\r\n\t\t\tlonDiff,\r\n\t\t\tcoords;\r\n\r\n\t\t// calculate the current lat/lon given the target lat/lon and animation status\r\n\t\tif (!animateMovement) {\r\n\t\t\tlat = targetLat;\r\n\t\t\tlon = targetLon;\r\n\t\t\tanimateMovement = true;\r\n\t\t} else {\r\n\t\t\tlatDiff = absoluteDiff(lat, targetLat);\r\n\t\t\tlonDiff = absoluteDiff(lon, targetLon);\r\n\r\n\t\t\tif (latDiff > animPrecision) {\r\n\t\t\t\tif (lat > targetLat) {\r\n\t\t\t\t\tlat = lat - (latDiff * animFactor);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlat = lat + (latDiff * animFactor);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttargetLat = lat;\r\n\t\t\t}\r\n\t\t\tif (lonDiff > animPrecision) {\r\n\t\t\t\tif (lon > targetLon) {\r\n\t\t\t\t\tlon = lon - (lonDiff * animFactor);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlon = lon + (lonDiff * animFactor);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttargetLon = lon;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// convert lat/lon to x,y,z coords to point the camera there\r\n\t\tcoords = getCartesianCoordinatesOnSphereFromLonLat(lat, lon, radius);\r\n\t\t// camera.target.set(coords.x, coords.y, coords.z);\r\n\t\t// camera.lookAt(camera.target);\r\n\t\tif (!mobile) {\r\n\t\t\tlayerMesh.rotation.x = -THREE.Math.degToRad(lat);\r\n\t\t}\r\n\t\tlayerMesh.rotation.y = THREE.Math.degToRad(lon + viewInitRotationDegrees);\r\n\r\n\t\tif (typeof Stats === \"function\") {\r\n\t\t\tstats.update();\r\n\t\t}\r\n\r\n\r\n\t\t// update view based on deviceorientation\r\n\t\tif (mobile) {\r\n\t\t\t// console.log(\"mobile\", md.mobile());\r\n\t\t\tcontrols.update();\r\n\t\t}\r\n\r\n\t\tlet v = new THREE.Vector3(0, 0, -1);\r\n\t\tv.applyQuaternion(camera.quaternion);\r\n\r\n\t\tif (interiorViewer.showHotspots\r\n\t\t\t&&\r\n\t\t\t(Math.abs(v.x - prevCameraTarget.x) > jitterThreshold||\r\n\t\t\t Math.abs(v.y - prevCameraTarget.y) > jitterThreshold ||\r\n\t\t\t Math.abs(v.z - prevCameraTarget.z) > jitterThreshold)) {\r\n\r\n\r\n\t\t\tconsole.log(\"camera has moved\");\r\n\r\n\t\t\t// make the hotspots face the camera - billboard style\r\n\t\t\t// _.forEach(hotspots, function (hotspot) {\r\n\t\t\t// \thotspot.quaternion.copy(camera.quaternion);\r\n\t\t\t// });\r\n\t\t\t_.forEach(hotspots, function (hotspot) {\r\n\t\t\t\t// hotspot.quaternion.copy(camera.quaternion);\r\n\t\t\t\thotspot.lookAt(new THREE.Vector3(0,0,0))\r\n\t\t\t});\r\n\r\n\t\t\t// move the labels with the hotspots\r\n\t\t\t// camera.updateMatrix(); // make sure camera's local matrix is updated\r\n\t\t\t// camera.updateMatrixWorld(); // make sure camera's world matrix is updated\r\n\t\t\t// camera.matrixWorldInverse.getInverse(camera.matrixWorld);\r\n\t\t\t// let frustum = new THREE.Frustum();\r\n\t\t\t// frustum.setFromMatrix(new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse));\r\n\t\t\t// $container.find(\".hotspot-label\").each(function () {\r\n\t\t\t// \tvar $label = $(this),\r\n\t\t\t// \t\thotspot = $(this).data(\"hotspot\"),\r\n\t\t\t// \t\tvector = convert3DWorldTo2DScreen(hotspot, camera, renderer);\r\n\t\t\t// \t$label.css({\r\n\t\t\t// \t\tleft: vector.x - $label.width() / 2,\r\n\t\t\t// \t\ttop: vector.y - $label.height() / 2,\r\n\t\t\t// \t\tdisplay: frustum.containsPoint(hotspot.position) ? \"block\" : \"none\"\r\n\t\t\t// \t});\r\n\t\t\t// \t//console.log(vector.x, vector.y);\r\n\t\t\t// });\r\n\r\n\r\n\t\t} else if (!interiorViewer.showHotspots) {\r\n\t\t\t$(\".hotspot-label\").each(function () {\r\n\t\t\t\t$(this).css({\r\n\t\t\t\t\t\"display\": \"none\"\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tcheckHotspotHovers();\r\n\r\n\t\tprevCameraTarget.x = v.x;\r\n\t\tprevCameraTarget.y = v.y;\r\n\t\tprevCameraTarget.z = v.z;\r\n\r\n\r\n\t\trenderer.render(scene, camera);\r\n\t}\r\n\r\n\tfunction checkHotspotHovers() {\r\n\t\t// find intersections\r\n\r\n\t\traycaster.setFromCamera(mouse, camera);\r\n\r\n\t\tvar intersects = raycaster.intersectObjects(hotspots);\r\n\r\n\t\tif (intersects.length > 0) {\r\n\r\n\t\t\tif (INTERSECTED != intersects[0].object) {\r\n\r\n\t\t\t\tINTERSECTED = intersects[0].object;\r\n\r\n\t\t\t\tINTERSECTED.userData.rotation = camera.rotation.z;\r\n\t\t\t\tTweenMax.to(INTERSECTED.userData, 0.5, {\r\n\t\t\t\t\trotation: (Math.PI / 2) + camera.rotation.z,\r\n\t\t\t\t\t// onUpdate: function () {\r\n\t\t\t\t\t// \tif (INTERSECTED) {\r\n\t\t\t\t\t// \t\tconsole.log(INTERSECTED.rotation.z, INTERSECTED.userData.rotation);\r\n\t\t\t\t\t// \t\tINTERSECTED.quaternion.copy(camera.quaternion);\r\n\t\t\t\t\t// \t\tINTERSECTED.rotation.z = INTERSECTED.userData.rotation;\r\n\t\t\t\t\t// \t}\r\n\t\t\t\t\t// },\r\n\t\t\t\t\t// onComplete: function () {\r\n\t\t\t\t\t// \tif (INTERSECTED) {\r\n\t\t\t\t\t// \t\tINTERSECTED.rotation.z = INTERSECTED.userData.initRotationZ;\r\n\t\t\t\t\t// \t}\r\n\t\t\t\t\t// }\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// console.log(\"INTERSECTED\", INTERSECTED.userData);\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// TweenMax.to(INTERSECTED.userData, 0.5, {\r\n\t\t\t\t// \trotation: camera.rotation.z\r\n\t\t\t\t// });\r\n\t\t\t\tintersects[0].object.rotation.z = INTERSECTED.userData.rotation;\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif (INTERSECTED) {\r\n\t\t\t\tINTERSECTED.rotation.z = 0;\r\n\t\t\t\t// TweenMax.to(INTERSECTED.userData, 0.5, {\r\n\t\t\t\t// \trotation: 0,\r\n\t\t\t\t// \tonComplete: () => {\r\n\t\t\t\t// \t\tINTERSECTED = null;\r\n\t\t\t\t// \t}\r\n\t\t\t\t// });\r\n\t\t\t}\r\n\t\t\tINTERSECTED = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * get cartesian coordinates from lat and lon and radius\r\n\t * @param lon -180 to 180\r\n\t * @param lat -90 to 90\r\n\t * @param radius\r\n\t * @returns {{x: number, y: number, z: number}}\r\n\t */\r\n\tfunction getCartesianCoordinatesOnSphereFromLonLat(lat, lon, radius) {\r\n\t\tlet latitude = Math.max(-90, Math.min(90, lat)),\r\n\t\t\tphi = THREE.Math.degToRad(90 - latitude),\r\n\t\t\ttheta = THREE.Math.degToRad(lon + 180),\r\n\t\t\tr = radius || 500;\r\n\t\treturn {\r\n\t\t\tx: r * Math.sin(phi) * Math.cos(theta),\r\n\t\t\ty: r * Math.cos(phi),\r\n\t\t\tz: r * Math.sin(phi) * Math.sin(theta)\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * get latitude and longitude from cartesian coordinates\r\n\t * @param x\r\n\t * @param y\r\n\t * @param z\r\n\t * @returns {{lat: number, lon: number}}\r\n\t */\r\n\tfunction getLatLonFromCartesianCoordinates(x, y, z, radius) {\r\n\t\treturn {\r\n\t\t\tlat: THREE.Math.radToDeg(Math.asin(z / radius)),\r\n\t\t\tlon: THREE.Math.radToDeg(Math.atan2(y, x))\r\n\t\t}\r\n\t}\r\n\r\n\tfunction animate() {\r\n\t\twindow.requestAnimationFrame(animate);\r\n\t\tif (run) {\r\n\t\t\tupdate();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction absoluteDiff(a, b) {\r\n\t\treturn Math.abs(b - a);\r\n\t}\r\n\r\n\tfunction generateHotSpots(state) {\r\n\t\tlet fabs = getFabs(state, true);\r\n\r\n\t\tprevCameraTarget = {\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\tz: 0\r\n\t\t};\r\n\r\n\t\t// remove previous hotspots\r\n\t\t// $container.find(\".hotspot-label\").remove();\r\n\t\t_.forEach(hotspots, spot => {\r\n\t\t\tlayerMesh.remove(spot);\r\n\t\t});\r\n\t\treturn _.map(fabs, function (hotspotData) {\r\n\t\t\tlet\thotspot = new THREE.Mesh(hotspotGeometry, hotspotMaterial),\r\n\t\t\t\tcoords = getCartesianCoordinatesOnSphereFromLonLat(\r\n\t\t\t\t\thotspotData.fabPosition.lat,\r\n\t\t\t\t\thotspotData.fabPosition.lon,\r\n\t\t\t\t\thotspotData.fabPosition.radius - 50);\r\n\t\t\thotspot.position.set(coords.x, coords.y, coords.z);\r\n\t\t\thotspot.visible = true;\r\n\t\t\thotspot.userData = hotspotData;\r\n\t\t\tlayerMesh.add(hotspot);\r\n\t\t\t// $('
').data({\r\n\t\t\t// \t\"hotspot\": hotspot\r\n\t\t\t// }).attr({\r\n\t\t\t// \t\"data-fab\": JSON.stringify(hotspotData)\r\n\t\t\t// }).appendTo($container);\r\n\t\t\treturn hotspot;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction convert3DWorldTo2DScreen(obj, camera, renderer) {\r\n\t\tvar vector = new THREE.Vector3(obj.position.x, obj.position.y, obj.position.z);\r\n\t\tvar canvas = renderer.domElement;\r\n\r\n\t\t// map to normalized device coordinate (NDC) space\r\n\t\tvector.project(camera);\r\n\r\n\t\t// map to 2D screen space\r\n\t\tvector.x = Math.round(( vector.x + 1 ) * parseInt(canvas.style.width) / 2);\r\n\t\tvector.y = Math.round(( -vector.y + 1 ) * parseInt(canvas.style.height) / 2);\r\n\t\tvector.z = 0;\r\n\t\treturn vector;\r\n\t}\r\n\r\n\tfunction onDocumentMoveStart(e) {\r\n\r\n\t\te.preventDefault();\r\n\t\tlet touch = e.touches,\r\n\t\t\tx = (touch ? e.touches[0].clientX : e.clientX) - $container.offset().left,\r\n\t\t\ty = (touch ? e.touches[0].clientY : e.clientY) - $(\"#configurator-viewers\").position().top;\r\n\r\n\t\tisUserInteracting = true;\r\n\r\n\t\tonPointerDownPointerX = x;\r\n\t\tonPointerDownPointerY = y;\r\n\r\n\t\tonPointerDownLon = lon;\r\n\t\tonPointerDownLat = lat;\r\n\r\n\t\tmouse.x = ( x / container.clientWidth ) * 2 - 1;\r\n\t\tmouse.y = -( y / container.clientHeight ) * 2 + 1;\r\n\r\n\r\n\t\traycaster.setFromCamera(mouse, camera);\r\n\r\n\t\tlet intersects = raycaster.intersectObjects(hotspots),\r\n\t\t\tdata;\r\n\r\n\t\tif (intersects.length > 0) {\r\n\r\n\t\t\tINTERSECTED = intersects[0].object;\r\n\t\t\tdata = intersects[0].object.userData;\r\n\t\t\tconsole.log(\"click\", intersects[0].object.userData);\r\n\t\t\tstore.dispatch({\r\n\t\t\t\ttype: 'ACTIVE_FAB_CHANGE',\r\n\t\t\t\tdata: intersects[0].object.userData\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction onDocumentMove(e) {\r\n\t\tlet touch = e.touches,\r\n\t\t\tx = (touch ? e.touches[0].clientX : e.clientX) - $container.offset().left,\r\n\t\t\ty = (touch ? e.touches[0].clientY : e.clientY) - $(\"#configurator-viewers\").position().top;\r\n\r\n\t\tif (e.touches && e.touches.length > 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isUserInteracting === true) {\r\n\r\n\t\t\t//Math.max(-85, Math.min(85, lat)),\r\n\t\t\ttargetLon = ( onPointerDownPointerX - x ) * moveFactor + onPointerDownLon;\r\n\t\t\ttargetLat = Math.max(-90, Math.min(90, ( y - onPointerDownPointerY ) * moveFactor + onPointerDownLat));\r\n\t\t\t// console.log(\"targetLon\", targetLon, lon)\r\n\t\t\t// console.log(\"targetLat\", targetLat, lat);\r\n\t\t}\r\n\r\n\t\tmouse.x = ( x / container.clientWidth ) * 2 - 1;\r\n\t\tmouse.y = -( y / container.clientHeight ) * 2 + 1;\r\n\r\n\t}\r\n\r\n\tfunction onDocumentMoveEnd() {\r\n\r\n\t\tisUserInteracting = false;\r\n\r\n\t}\r\n\r\n\tfunction onDocumentMouseWheel(event) {\r\n\r\n\t\t// WebKit\r\n\r\n\t\tif (event.wheelDeltaY) {\r\n\r\n\t\t\tcamera.fov -= event.wheelDeltaY * 0.05;\r\n\r\n\t\t\t// Opera / Explorer 9\r\n\r\n\t\t} else if (event.wheelDelta) {\r\n\r\n\t\t\tcamera.fov -= event.wheelDelta * 0.05;\r\n\r\n\t\t\t// Firefox\r\n\r\n\t\t} else if (event.detail) {\r\n\r\n\t\t\tcamera.fov += event.detail * 1.0;\r\n\r\n\t\t}\r\n\t\t// camera fov min = 35\r\n\t\t// camera fov max = 90\r\n\t\tcamera.fov = Math.max(35, Math.min(90, camera.fov));\r\n\t\tcamera.updateProjectionMatrix();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * get dimensions from a filename\r\n\t * @param filename\r\n\t * @returns {{width: number, height: number, x: number, y: number}|*}\r\n\t */\r\n\tfunction getDimensions(filename) {\r\n\t\tvar re = /-(\\d+)-(\\d+)-(\\d+)-(\\d+).png/g,\r\n\t\t\tmatch = re.exec(filename),\r\n\t\t\twidth = 0,\r\n\t\t\theight = 0,\r\n\t\t\tx = 0,\r\n\t\t\ty = 0,\r\n\t\t\tdims;\r\n\r\n\t\tif (match) {\r\n\t\t\twidth = parseInt(match[1], 10);\r\n\t\t\theight = parseInt(match[2], 10);\r\n\t\t\tx = parseInt(match[3], 10);\r\n\t\t\ty = parseInt(match[4], 10);\r\n\t\t}\r\n\t\tdims = {\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\t\treturn dims;\r\n\t}\r\n\r\n\t/**\r\n\t * get image data and dims\r\n\t * @param src\r\n\t * @returns {Promise}\r\n\t */\r\n\tfunction getImage(src) {\r\n\t\tlet p = new Promise((resolve, reject) => {\r\n\t\t\tvar img = new Image(),\r\n\t\t\t\tdims;\r\n\t\t\timg.crossOrigin = \"\";\r\n\t\t\timg.src = src;\r\n\t\t\timg.onload = function () {\r\n\t\t\t\tresolve({\r\n\t\t\t\t\tsrc,\r\n\t\t\t\t\timg\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\timg.onerror = (e) => {\r\n\t\t\t\tresolve();\r\n\t\t\t};\r\n\t\t});\r\n\t\treturn p;\r\n\t}\r\n\r\n\t/**\r\n\t * draw image layers to canvas, update the webgl texture\r\n\t * @param layers\r\n\t */\r\n\tfunction drawImageLayers(layer) {\r\n\t\tcontext.fillStyle = \"#444444\";\r\n\t\tcontext.fillRect(0, 0, canvasWidth, canvasHeight);\r\n\t\tlet promise;\r\n\t\tpromise = new Promise((resolve, reject) => {\r\n\t\t\treturn Rx.Observable.fromPromise(getImage(layer)).subscribe(imgData => {\r\n\t\t\t\t\t// console.log(imgData);\r\n\t\t\t\t\tcontext.drawImage(imgData.img, 0, 0,\r\n\t\t\t\t\t\timgData.img.width, imgData.img.height,\r\n\t\t\t\t\t\t0, 0,\r\n\t\t\t\t\t\timgData.img.width, imgData.img.height);\r\n\t\t\t\t}, e => {\r\n\t\t\t\t\tconsole.log(e)\r\n\t\t\t\t},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tconsole.log(\"draw complete\")\r\n\t\t\t\t\tlayerTexture.needsUpdate = true;\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn promise;\r\n\t}\r\n\r\n\t/**\r\n\t * method to center the view\r\n\t */\r\n\tinteriorViewer.centerView = () => {\r\n\t\tif (controls) {\r\n\t\t\tcontrols.reset();\r\n\t\t} else {\r\n\t\t\ttargetLat = 0;\r\n\t\t\ttargetLon = 0;\r\n\t\t}\r\n\t};\r\n\r\n\tanimate();\r\n\r\n\t/**\r\n\t * repaint the layers given the state of the app\r\n\t * @param state - main state object\r\n\t */\r\n\tinteriorViewer.update = (state) => {\r\n\t\tlet layers = getLayers(state);\r\n\t\trun = (state.view === \"interior\");\r\n\t\tif (!state.truckModel || !state.truckCab | !run) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tradius = state.interiorViewRadius;\r\n\t\tconsole.log(\"interior update\");\r\n\t\timgFolder = \"/images/configurator-mini/\" + convertName(state.truckModel + \"-\" + state.truckCab) + \"-interior/\";\r\n\t\thotspots = generateHotSpots(state);\r\n\t\tupdateRendererSize();\r\n\t\t// updateProgress(0, 1, null, false, false);\r\n\t\t$container.addClass(\"loading\");\r\n\t\tRx.Observable.from(layers)\r\n\t\t\t.subscribe(layer => {\r\n\t\t\t\t//console.log(\"update\", layers);\r\n\t\t\t\tRx.Observable.fromPromise(drawImageLayers(imgFolder + layer)).subscribe(() => {\r\n\t\t\t\t\t// updateProgress(1, 1, null, true, false);\r\n\t\t\t\t\t$container.removeClass(\"loading\");\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// TODO rotate to center of layer - need ADS to be updated first\r\n\t\t\t\t// targetLon = (180 * imgData.dims.x);\r\n\t\t\t\t//(THREE.Math.RAD2DEG * dims.x * Math.PI) - 180;\r\n\t\t\t\t// targetLat = (-imgData.dims.y * 90);\r\n\t\t\t\t//THREE.Math.RAD2DEG * Math.atan(Math.exp(-2 * Math.PI * dims.y));\r\n\t\t\t});\r\n\t};\r\n\r\n\tif (typeof Stats === \"function\") {\r\n\t\tvar stats = new Stats();\r\n\t\tstats.domElement.style.position = 'absolute';\r\n\t\tstats.domElement.style.top = '0px';\r\n\t\tstats.domElement.style.zIndex = 100;\r\n\t\tcontainer.appendChild(stats.domElement);\r\n\t}\r\n\r\n\tfunction updateRendererSize() {\r\n\t\tcamera.aspect = container.clientWidth / container.clientHeight;\r\n\t\tcamera.updateProjectionMatrix();\r\n\t\trenderer.setSize(container.clientWidth, container.clientHeight);\r\n\t}\r\n\r\n\tfunction getLayers(state) {\r\n\t\t// create the layers, order and layer types are hard-coded\r\n\t\treturn [\r\n\t\t\t\"interior_\" + state.cabType + \"_cab.jpg\"\r\n\t\t];\r\n\t}\r\n\r\n\tsetupViewer();\r\n\r\n\treturn interiorViewer;\r\n}\r\n","/*global vdomVirtualize, virtualDom */\r\n\r\n\r\nexport function getVNodeFromHMTL(html) {\r\n\treturn convertHTML(html);\r\n}\r\n\r\nexport function setupMixins() {\r\n\t_.mixin({\r\n\t\tdeepPluck: (obj, path) => {\r\n\t\t\tif (_.isString(path)) {\r\n\t\t\t\tpath = path.split(\".\")\r\n\t\t\t}\r\n\t\t\treturn _.reduce(path, function pluck(ret, ident) {\r\n\t\t\t\tif (ident === \"*\") {\r\n\t\t\t\t\tfor (var key in ret) {\r\n\t\t\t\t\t\tif (ret.hasOwnProperty(key)) {\r\n\t\t\t\t\t\t\treturn ret[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn ret[ident];\r\n\t\t\t}, obj);\r\n\t\t}\r\n\t});\r\n}\r\nsetupMixins();\r\nexport function delegate(wrapper, selector, eventNames) {\r\n\treturn Rx.Observable.from(eventNames.split(\",\")).mergeMap(eventName => {\r\n\t\treturn Rx.Observable.fromEvent(\r\n\t\t\twrapper,\r\n\t\t\teventName.replace(/\\s/g, \"\"),\r\n\t\t\tfunction (e) {\r\n\t\t\t\treturn {event: e, delegate: e.target.closest(selector)};\r\n\t\t\t});\r\n\t}).filter(function (x) {\r\n\t\treturn x.delegate !== null;\r\n\t});\r\n}\r\n\r\nexport function convertName(s, spaceReplacer = \"_\") {\r\n\treturn s.toLowerCase().replace(/\"/g, '').replace(/\\s/g, spaceReplacer);\r\n}\r\n\r\nexport function getFile(url) {\r\n\t// get image mapping file for Interior viewer and update store\r\n\tlet p = new Promise(function (resolve, reject) {\r\n\t\t$.ajax({\r\n\t\t\turl: url\r\n\t\t}).done(function (map) {\r\n\t\t\tresolve(map);\r\n\t\t}).fail(function (e) {\r\n\t\t\treject(\"failed to get interior map\", e);\r\n\t\t});\r\n\t});\r\n\treturn p;\r\n}\r\n\r\nexport function getFabs(state, all) {\r\n\tlet fabData, fabs,\r\n\t\ttruckName = \"Cascadia-\" + state.truckCab;\r\n\t// get the id of the current pillar for the current truck\r\n\ttry{\r\n\t\tif (!state.pathTree.FTL.Truck[truckName].Explore[_.capitalize(state.view)]) {\r\n\t\t\t\r\n\t\t\treturn [];\r\n\t\t}\t\t\r\n\t}catch(error){\r\n\t\twindow.___state_err = {state,path:'state.pathTree.FTL.Truck', truckName};\r\n\t}\r\n\r\n\r\n\tif (all) {\r\n\t\t// get all the fab ids for the truck regardless of pillar\r\n\t\tfabData = _.chain(state.pathTree)\r\n\t\t\t.deepPluck(\"FTL.Truck.\" + truckName + \".Explore.\" + _.capitalize(state.view))\r\n\t\t\t.map((pillar, pillarKey) => {\r\n\t\t\t\treturn _.chain(pillar).map((xNode, key) => {\r\n\t\t\t\t\tlet x = parseInt(key, 10);\r\n\t\t\t\t\treturn _.chain(xNode).map((yNode, key) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\"pillar\": pillarKey,\r\n\t\t\t\t\t\t\t\"id\": yNode.id,\r\n\t\t\t\t\t\t\t\"fabPosition\": {\r\n\t\t\t\t\t\t\t\tradius: state.interiorViewRadius,\r\n\t\t\t\t\t\t\t\t// lat/phi -90 to 90\r\n\t\t\t\t\t\t\t\tlat: x,\r\n\t\t\t\t\t\t\t\t// lon/theta -180 to 180\r\n\t\t\t\t\t\t\t\tlon: parseFloat(key, 10)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).flatten().value();\r\n\t\t\t\t}).flatten().value();\r\n\t\t\t}).flatten().value();\r\n\t} else {\r\n\t\t// get all the fab ids filtered by truck and current pillar\r\n\t\tfabData = _.chain(state.pathTree)\r\n\t\t\t.deepPluck(\"FTL.Truck.\" + truckName + \".Explore.\" + _.capitalize(state.view) + \".\" + state.pillar)\r\n\t\t\t.map((xNode, key) => {\r\n\t\t\t\tlet x = parseInt(key, 10);\r\n\t\t\t\treturn _.chain(xNode).map((yNode, key) => {\r\n\t\t\t\t\tif (state.view === \"exterior\") {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\"pillar\": state.pillar,\r\n\t\t\t\t\t\t\t\"id\": yNode.id,\r\n\t\t\t\t\t\t\t\"fabPosition\": {\r\n\t\t\t\t\t\t\t\tx: x,\r\n\t\t\t\t\t\t\t\ty: parseInt(key, 10)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\"pillar\": state.pillar,\r\n\t\t\t\t\t\t\"id\": yNode.id,\r\n\t\t\t\t\t\t\"fabPosition\": {\r\n\t\t\t\t\t\t\tradius: state.interiorViewRadius,\r\n\t\t\t\t\t\t\t// lat/phi -90 to 90\r\n\t\t\t\t\t\t\tlat: x,\r\n\t\t\t\t\t\t\t// lon/theta -180 to 180\r\n\t\t\t\t\t\t\tlon: parseFloat(key, 10)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}).flatten().value();\r\n\t\t\t}).flatten().value();\r\n\t}\r\n\t// console.log(fabData, _.deepPluck(state.pathTree, \"FTL.Truck.\" + truckName + \".Explore.Exterior.\" + state.pillar));\r\n\r\n\t// filter the fabs by the ids gathered above\r\n\tfabs = _.chain(state.adsFabs).filter((fab) => {\r\n\t\treturn _.some(fabData, fabInfo => {\r\n\t\t\treturn _.includes(fab.nodes, fabInfo.id)\r\n\t\t});\r\n\t})\r\n\t// combine the fabs with the info gathered above\r\n\t\t.map((fab, i) => {\r\n\t\t\tlet fabInfo = _.chain(fabData).filter(fabInfo => {\r\n\t\t\t\t\treturn _.includes(fab.nodes, fabInfo.id);\r\n\t\t\t\t}).value()[0],\r\n\t\t\t\tadditionalData = {\r\n\t\t\t\t\tfabPosition: fabInfo.fabPosition,\r\n\t\t\t\t\tpillar: fabInfo.pillar,\r\n\t\t\t\t\tindex: i,\r\n\t\t\t\t\tassets: false\r\n\t\t\t\t},\r\n\t\t\t\tassetNode = _.chain(state.pathTree)\r\n\t\t\t\t\t.deepPluck(\"FTL.Asset.\" + fab.id).value(),\r\n\t\t\t\tassetNodeId = assetNode && assetNode.id,\r\n\t\t\t// combine the fab with other assets like videos\r\n\t\t\tassets = _.chain(state.adsVids).filter(vid => {\r\n\t\t\t\treturn _.includes(vid.nodes, assetNodeId);\r\n\t\t\t}).value();\r\n\r\n\t\t\tif (assets.length > 0) {\r\n\t\t\t\tadditionalData.assets = assets;\r\n\t\t\t}\r\n\r\n\t\t\treturn Object.assign({}, fab, additionalData);\r\n\t\t}).value();\r\n\t// console.log(\"fabs\", fabs);\r\n\treturn fabs;\r\n}\r\n\r\nexport function getHashParameter(parameterName) {\r\n\tvar hash = window.location.hash,\r\n\t\tre = new RegExp(\"[#&]\" + parameterName + \"=([\\\\w-]+)\", \"gi\"),\r\n\t\tparameter = re.exec(hash) || [null, ''];\r\n\treturn parameter[1];\r\n}\r\n\r\nexport function getUrlParams(url) {\r\n\tvar re = /(?:\\#|&(?:amp;)?)([^=&#]+)(?:=?([^&#]*))/g,\r\n\t\tmatch, params = {},\r\n\t\tdecode = function (s) {return decodeURIComponent(s.replace(/\\+/g, \" \"));};\r\n\r\n\tif (typeof url == \"undefined\") url = document.location.href;\r\n\r\n\twhile (match = re.exec(url)) {\r\n\t\tparams[decode(match[1])] = decode(match[2]);\r\n\t}\r\n\treturn params;\r\n}\r\n\r\n\r\nexport function updateHashParameters(params) {\r\n\tif (!params) {\r\n\t\twindow.location.hash = \"\";\r\n\t} else if (_.isObject(params)) {\r\n\t\tlet currentParams = getUrlParams(),\r\n\t\t\tnewParams = Object.assign({}, currentParams, params);\r\n\t\twindow.location.hash = _.chain(newParams).map((v, k) => k + \"=\" + v).value().join(\"&\");\r\n\t}\r\n}\r\n\r\n\r\n// element-closest | CC0-1.0 | github.com/jonathantneal/closest\r\nif (typeof Element.prototype.matches !== 'function') {\r\n\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.webkitMatchesSelector || function matches(selector) {\r\n\t\t\tvar element = this;\r\n\t\t\tvar elements = (element.document || element.ownerDocument).querySelectorAll(selector);\r\n\t\t\tvar index = 0;\r\n\r\n\t\t\twhile (elements[index] && elements[index] !== element) {\r\n\t\t\t\t++index;\r\n\t\t\t}\r\n\r\n\t\t\treturn Boolean(elements[index]);\r\n\t\t};\r\n}\r\nif (typeof Element.prototype.closest !== 'function') {\r\n\tElement.prototype.closest = function closest(selector) {\r\n\t\tvar element = this;\r\n\r\n\t\twhile (element && element.nodeType === 1) {\r\n\t\t\tif (element.matches(selector)) {\r\n\t\t\t\treturn element;\r\n\t\t\t}\r\n\r\n\t\t\telement = element.parentNode;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n}\r\n// end element-closest polyfill","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return typeof $Symbol == 'function' && Object(it) instanceof $Symbol;\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = patchedExec.call(raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = str.slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.16.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.codePointAt` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = input[TO_PRIMITIVE];\n var result;\n if (exoticToPrim !== undefined) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var isSymbol = require('../internals/is-symbol');\n\nmodule.exports = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue === 'string' &&\n replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n replaceValue.indexOf('$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*global System, $, Promise, _, THREE, virtualDom, Redux, Rx, TweenMax, Stats, console */\r\n\r\nimport {store, store$} from \"./_config-store\";\r\nimport {setupInteriorBuilder} from \"./_interior-builder\";\r\nimport {setupExteriorBuilder} from \"./_exterior-builder\";\r\nimport {delegate, convertName, getFile, getFabs, getVNodeFromHMTL, getHashParameter, updateHashParameters} from \"./_utilities\";\r\n\r\nconst h = virtualDom.h;\r\n\r\nlet headerVTreePrimary, headerVNodePrimary,\r\n\theaderVTreeSecondary, headerVNodeSecondary,\r\n\tselectorVTree, selectorVNode,\r\n\tinfoVTree, infoVNode,\r\n\tfabOverlayVTree, fabOverlayVNode,\r\n\tviewerVTree, viewerVNode,\r\n\t$viewerContainer, $headerContainerPrimary, $headerContainerSecondary,\r\n\t$selectorContainer, $infoContainer, $fabOverlayContainer,\r\n\tinteriorBuilder, exteriorBuilder,\r\n\tresizeSubscription,\r\n\tmd = new MobileDetect(window.navigator.userAgent),\r\n\tmobile = md.mobile(),\r\n\twebgl = checkWebglSupport();\r\n\r\nfunction checkWebglSupport() {\r\n\tif (!window.WebGLRenderingContext)return false;\r\n\ttry {\r\n\t\tvar _canvas = document.createElement('canvas');\r\n\t\tvar _gl = _canvas.getContext('webgl') || _canvas.getContext('experimental-webgl');\r\n\t\t_gl.clearStencil(0);\r\n\t\tvar errors = _gl.getError();\r\n\t\treturn errors == 0;\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction getOptionsMatrix() {\r\n\t// get options matrix and update store\r\n\tlet p = new Promise(function (resolve, reject) {\r\n\t\t$.ajax({\r\n\t\t\turl: \"https://freightlinertrucks.azurewebsites.net/umbraco/Api/ConfiguratorMapping\",\r\n\t\t}).done(function (response) {\r\n\t\t\tlet //data = response,\r\n\t\t\t\tdata = JSON.parse(response.json),\r\n\t\t\t\toptionsMatrix = _.mapValues(_.groupBy(data, \"Mode\"), function (mode) {\r\n\t\t\t\t\treturn _.mapValues(_.groupBy(mode, \"Component\"), function (component) {\r\n\t\t\t\t\t\treturn _.mapValues(_.groupBy(component, \"Category\"), function (option) {\r\n\t\t\t\t\t\t\treturn option;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\tresolve(optionsMatrix);\r\n\t\t}).fail(function (e) {\r\n\t\t\treject(\"failed to get options matrix\", e);\r\n\t\t});\r\n\t});\r\n\treturn p;\r\n}\r\nfunction getAdsFabs() {\r\n\t// get ADS Fabs and update store\r\n\tlet hdnRoot = document.getElementById('root');\r\n\tlet root = (hdnRoot) ? hdnRoot.value : 'https://freightlinertrucks.azurewebsites.net';\t\r\n\tlet p = new Promise(function (resolve, reject) {\r\n\t\t$.ajax({\r\n\t\t\t// url: \"https://adsws.dtnaapps.com/SalesToolWebService.asmx/AssetManifest?app=ftl&version=qa\",\r\n\t\t\turl: \"/umbraco/surface/configurator/Fab\",\r\n\t\t\tdataType: 'json'\r\n\t\t}).done(function (data) {\t\t\t\r\n\t\t\tlet fabs = JSON.parse(data.json);\r\n\t\t\tresolve(fabs);\r\n\t\t}).fail(function (e) {\r\n\t\t\treject(\"failed to get ads fabs\", e);\r\n\t\t});\r\n\t});\r\n\treturn p;\r\n}\r\n\r\nfunction generateBuilderOptionGroups(state, options, buildSettings, categoryRules) {\r\n\treturn _.chain(options).map((component, componentKey) => {\r\n\t\tlet currentOption = \"\",\r\n\t\t\toptionGroup;\r\n\t\tif (componentKey === \"Cab\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (_.includes(categoryRules, componentKey)) {\r\n\t\t\toptionGroup = [h(\"div.btn-group.btn-num-\" + options.length, {\r\n\t\t\t\tattributes: {\r\n\t\t\t\t\t\"data-toggle\": \"buttons\"\r\n\t\t\t\t}\r\n\t\t\t}, _.chain(component).map((category, categoryKey) => {\r\n\t\t\t\tlet attributes = {\r\n\t\t\t\t\t\t\"type\": \"radio\",\r\n\t\t\t\t\t\t\"name\": componentKey,\r\n\t\t\t\t\t\t\"autocomplete\": \"off\",\r\n\t\t\t\t\t\t\"data-name\": categoryKey,\r\n\t\t\t\t\t\t// \"data-incompatibilities\": option.Incompatibilities,\r\n\t\t\t\t\t\t\"data-key\": categoryKey,\r\n\t\t\t\t\t\t\"data-category\": categoryKey,\r\n\t\t\t\t\t\t\"data-component\": componentKey\r\n\t\t\t\t\t},\r\n\t\t\t\t\tactiveBtn = categoryKey === buildSettings[componentKey],\r\n\t\t\t\t\tdisabledBtn = false;\r\n\t\t\t\t// disabledBtn = _.some(_.map(option.Incompatibilities.split(\";\"), function (inc) {\r\n\t\t\t\t// \treturn _.includes(buildSettings, inc);\r\n\t\t\t\t// }), Boolean);\r\n\t\t\t\tif (_.some(category, (option) => {\r\n\t\t\t\t\t\treturn _.some(option, prop => {\r\n\t\t\t\t\t\t\treturn prop === \"X\" || prop === \"*\";\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t})) {\r\n\t\t\t\t\treturn h(\"label.btn\" +\r\n\t\t\t\t\t\t(activeBtn && !disabledBtn ? \".active\" : \"\") +\r\n\t\t\t\t\t\t(disabledBtn ? \".disabled\" : \"\") +\r\n\t\t\t\t\t\t(componentKey === \"Seat Upholstery\" ? \".btn-seat.btn-\" + categoryKey : \"\") +\r\n\t\t\t\t\t\t(componentKey === \"Color\" ? \".btn-color.btn-\" + categoryKey : \"\"), [\r\n\t\t\t\t\t\th(\"input.build-option\", {\r\n\t\t\t\t\t\t\tattributes: attributes\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tcategoryKey\r\n\t\t\t\t\t]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}).compact().value())];\r\n\t\t} else {\r\n\t\t\toptionGroup = _.chain(component).map(category => {\r\n\t\t\t\tlet options = _.chain(category).map(option => {\r\n\t\t\t\t\tlet attributes = {\r\n\t\t\t\t\t\t\t\"type\": \"radio\",\r\n\t\t\t\t\t\t\t\"name\": option.Component,\r\n\t\t\t\t\t\t\t\"autocomplete\": \"off\",\r\n\t\t\t\t\t\t\t\"data-name\": option.Option,\r\n\t\t\t\t\t\t\t\"data-incompatibilities\": option.Incompatibilities,\r\n\t\t\t\t\t\t\t\"data-key\": option.Key,\r\n\t\t\t\t\t\t\t\"data-category\": option.Category,\r\n\t\t\t\t\t\t\t\"data-component\": option.Component\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tactiveBtn = option.Key === buildSettings[option.Component],\r\n\t\t\t\t\t\tdisabledBtn = _.some(_.map(option.Incompatibilities.split(\";\"), function (inc) {\r\n\t\t\t\t\t\t\treturn _.includes(buildSettings, inc);\r\n\t\t\t\t\t\t}), Boolean);\r\n\t\t\t\t\t//console.log(option, option.Incompatibilities, buildSettings, disabledBtn);\r\n\t\t\t\t\tif (activeBtn && !disabledBtn) {\r\n\t\t\t\t\t\tattributes.checked = \"checked\";\r\n\t\t\t\t\t\tcurrentOption = option.Option;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (disabledBtn) {\r\n\t\t\t\t\t\tattributes.disabled = \"disabled\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (option[state.truckModel + \" \" + state.truckCab] !== \"\") {\r\n\t\t\t\t\t\treturn h(\"label.btn\" +\r\n\t\t\t\t\t\t\t(activeBtn && !disabledBtn ? \".active\" : \"\") +\r\n\t\t\t\t\t\t\t(disabledBtn ? \".disabled\" : \"\") +\r\n\t\t\t\t\t\t\t(componentKey === \"Seat Upholstery\" ? \".btn-seat.btn-\" + option.Key : \"\") +\r\n\t\t\t\t\t\t\t(componentKey === \"Color\" ? \".btn-color.btn-\" + option.Key : \"\"), [\r\n\t\t\t\t\t\t\th(\"input.build-option\", {\r\n\t\t\t\t\t\t\t\tattributes: attributes\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t(option.Option === \"Not Equipped\" ? \"None\" : option.Option)\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}).compact().value();\r\n\t\t\t\tif (options.length > 0) {\r\n\t\t\t\t\treturn h(\"div.btn-group.btn-num-\" + options.length, {\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\"data-toggle\": \"buttons\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, options);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}).compact().value();\r\n\t\t}\r\n\t\tif (optionGroup.length > 0) {\r\n\t\t\treturn h(\"div.option-group\", [\r\n\t\t\t\th(\"h2.category-header.icon-info\", [\r\n\t\t\t\t\tcomponentKey,\r\n\t\t\t\t\t(componentKey === \"Color\" ||\r\n\t\t\t\t\tcomponentKey === \"Seat Upholstery\") ?\r\n\t\t\t\t\t\th(\"span.current\", \": \" + currentOption) : \"\",\r\n\t\t\t\t]),\r\n\t\t\t\th(\"div.category-info\", [\r\n\t\t\t\t\th(\"p\", \"some stuff about the category...\")\r\n\t\t\t\t]),\r\n\t\t\t\toptionGroup\r\n\t\t\t]);\r\n\t\t}\r\n\t\treturn false;\r\n\t}).compact().value();\r\n}\r\n\r\nfunction generateBuilderVDom(state, options, buildSettings, categoryRules) {\r\n\tif (state.truckCab === \"\" || state.nav === \"explore\") {\r\n\t\treturn h(\"div\");\r\n\t}\r\n\tif (_.isArray(options)) {\r\n\t\treturn h(\"div.vdom.\" + state.nav, [\r\n\t\t\th(\"p\", [\r\n\t\t\t\th(\"strong\", \"NOTE: \"),\r\n\t\t\t\t\"The following do not change the look of the truck.\",\r\n\t\t\t\th(\"br\"),\r\n\t\t\t\t\"For full details and configurations, please contact your dealer.\"\r\n\t\t\t]),\r\n\t\t\t_.map(options, option => {\r\n\t\t\t\treturn h(\"div\", [\r\n\t\t\t\t\th(\"h3\", option[1]),\r\n\t\t\t\t\tgenerateBuilderOptionGroups(state, option[0], buildSettings, categoryRules)\r\n\t\t\t\t]);\r\n\t\t\t})\r\n\t\t]);\r\n\t} else {\r\n\t\treturn h(\"div.vdom.\" + state.nav, generateBuilderOptionGroups(state, options, buildSettings, categoryRules));\r\n\t}\r\n}\r\n\r\nfunction generateBuilderUI(state) {\r\n\tlet options,\r\n\t\tbuildSettings,\r\n\t\tcategoryRules = false;\r\n\tswitch (state.viewOption) {\r\n\t\tcase \"Exterior\":\r\n\t\t\tbuildSettings = state.exteriorBuildSettings;\r\n\t\t\toptions = state.optionsMatrix.Exterior;\r\n\t\t\tbreak;\r\n\t\tcase \"Interior\":\r\n\t\t\tbuildSettings = state.interiorBuildSettings;\r\n\t\t\toptions = state.optionsMatrix.Interior;\r\n\t\t\tbreak;\r\n\t\tcase \"Powertrain/Chassis\":\r\n\t\t\tbuildSettings = state.powertrainBuildSettings;\r\n\t\t\toptions = _.pick(state.optionsMatrix.Components, state.powertrainOptions);\r\n\t\t\tcategoryRules = state.powertrainCategoryRules;\r\n\t\t\tbreak;\r\n\t\tcase \"Safety/Connectivity\":\r\n\t\t\tbuildSettings = state.safetyBuildSettings;\r\n\t\t\toptions = [\r\n\t\t\t\t[\r\n\t\t\t\t\t_.pick(state.optionsMatrix.Components, state.safetyOptions),\r\n\t\t\t\t\t\"Safety\"\r\n\t\t\t\t],\r\n\t\t\t\t[\r\n\t\t\t\t\t_.pick(state.optionsMatrix.Components, state.connectivityOptions),\r\n\t\t\t\t\t\"Connectivity\"\r\n\t\t\t\t]\r\n\t\t\t];\r\n\t\t\tbreak;\r\n\t}\r\n\treturn generateBuilderVDom(state, options, buildSettings, categoryRules);\r\n}\r\n\r\nfunction getOptionNames(settings, modeObj, categoryKey, optionKey) {\r\n\treturn _.chain(settings).mapValues((value, key) => {\r\n\t\tlet option = _.find(_.deepPluck(modeObj, key + \".*\"), {\"Key\": value}),\r\n\t\t\tname = option && option.Option;\r\n\t\treturn name;\r\n\t}).pickBy(o => {\r\n\t\treturn o;\r\n\t}).value();\r\n}\r\nfunction getTruckDetails(state) {\r\n\tlet truckDetails = {};\r\n\ttruckDetails.exterior = getOptionNames(state.exteriorBuildSettings,\r\n\t\tstate.optionsMatrix[\"Exterior\"]);\r\n\ttruckDetails.interior = getOptionNames(state.interiorBuildSettings,\r\n\t\tstate.optionsMatrix[\"Interior\"]);\r\n\ttruckDetails.powertrain = getOptionNames(state.powertrainBuildSettings,\r\n\t\tstate.optionsMatrix[\"Components\"]);\r\n\ttruckDetails.safety = getOptionNames(state.safetyBuildSettings,\r\n\t\tstate.optionsMatrix[\"Components\"]);\r\n\ttruckDetails.connectivity = getOptionNames(state.connectivityBuildSettings,\r\n\t\tstate.optionsMatrix[\"Components\"]);\r\n\tconsole.log(\"truckDetails\", truckDetails);\r\n\treturn truckDetails;\r\n}\r\n\r\nfunction launchConfigurator() {\r\n\t$(\"body\").addClass(\"configurator-mini-open\");\r\n\t$(\"#configurator-mini\").addClass(\"open\");\r\n\tloadData();\r\n}\r\n\r\nfunction addHandlers() {\r\n\r\n\t$(\"comp-truck-hero .configure, .page-nav-holder .configure, [build] .configure\")\r\n\t\t.on(\"click\", launchConfigurator);\r\n\r\n\tconst configuratorEl = document.getElementById(\"configurator-mini\");\r\n\t// get clicks on the interior build options and update the button and the viewer\r\n\tconst buildChanges$ = delegate(configuratorEl, \".build-option\", \"change\");\r\n\tbuildChanges$.subscribe(e => {\r\n\t\tlet $target = $(e.delegate),\r\n\t\t\tbuildSetting = {},\r\n\t\t\tstate = store.getState();\r\n\t\tbuildSetting[$target.attr(\"data-component\")] = $target.attr(\"data-key\");\r\n\t\tif (state.viewOption === \"Powertrain/Chassis\") {\r\n\t\t\tstore.dispatch({\r\n\t\t\t\ttype: 'POWERTRAIN_BUILD_CHANGE',\r\n\t\t\t\tbuildSetting\r\n\t\t\t});\r\n\t\t} else if (state.viewOption === \"Safety/Connectivity\") {\r\n\t\t\tstore.dispatch({\r\n\t\t\t\ttype: 'SAFETY_BUILD_CHANGE',\r\n\t\t\t\tbuildSetting\r\n\t\t\t});\r\n\t\t} else if (state.view === \"interior\") {\r\n\t\t\tstore.dispatch({\r\n\t\t\t\ttype: 'INTERIOR_BUILD_CHANGE',\r\n\t\t\t\tbuildSetting\r\n\t\t\t});\r\n\t\t} else if (state.view === \"exterior\") {\r\n\t\t\tstore.dispatch({\r\n\t\t\t\ttype: 'EXTERIOR_BUILD_CHANGE',\r\n\t\t\t\tbuildSetting\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t// change main nav {explore, build}\r\n\tconst mainNav$ = delegate(configuratorEl, \".main-nav\", \"click\");\r\n\tmainNav$.subscribe(e => {\r\n\t\te.event.preventDefault();\r\n\t\tlet $target = $(e.delegate);\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'MAIN_NAV_CHANGE',\r\n\t\t\tdata: $target.attr(\"data-main-nav\")\r\n\t\t});\r\n\t});\r\n\r\n\t// change view {exterior, interior}\r\n\tconst viewerChange$ = delegate(configuratorEl, \".view-nav\", \"change\");\r\n\tviewerChange$.subscribe(e => {\r\n\t\tlet $target = $(e.delegate),\r\n\t\t\tview = $target.attr(\"data-view\");\r\n\r\n\t\tupdateHashParameters({view});\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'VIEW_CHANGE',\r\n\t\t\tdata: view\r\n\t\t});\r\n\t});\r\n\r\n\t// change pillar\r\n\tconst pillarChange$ = delegate(configuratorEl, \".pillar-nav\", \"click\");\r\n\tpillarChange$.subscribe(e => {\r\n\t\te.event.preventDefault();\r\n\t\tlet $target = $(e.delegate),\r\n\t\t\tpillar = $target.attr(\"data-pillar\");\r\n\t\tif ($target.hasClass(\"disabled\")) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdateHashParameters({\r\n\t\t\tpillar: pillar.replace(\" \", \"_\")\r\n\t\t});\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'PILLAR_CHANGE',\r\n\t\t\tdata: $target.attr(\"data-pillar\")\r\n\t\t});\r\n\t\t$(\"html, body, #configurator-mini\").animate({\r\n\t\t\tscrollTop: 0\r\n\t\t});\r\n\t});\r\n\r\n\t// rotate to show hotspots\r\n\tconst showHotspots$ = delegate(configuratorEl, \".view-hotspots\", \"click, touchstart\");\r\n\tshowHotspots$.subscribe(() => {\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'PILLAR_CHANGE',\r\n\t\t\tdata: store.getState().pillar\r\n\t\t});\r\n\t});\r\n\r\n\t// change view option\r\n\tconst viewOption$ = delegate(configuratorEl, \".view-option-nav\", \"click\");\r\n\tviewOption$.subscribe(e => {\r\n\t\te.event.preventDefault();\r\n\t\tlet $target = $(e.delegate),\r\n\t\t\tviewOption = $target.attr(\"data-view-option\");\r\n\t\tif ($target.hasClass(\"disabled\")) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'VIEW_OPTION_CHANGE',\r\n\t\t\tdata: viewOption\r\n\t\t});\r\n\r\n\t});\r\n\r\n\t// open hotspot info overlay\r\n\tconst hotspotSelect$ = delegate(configuratorEl, \".hotspot-label\", \"click, touchstart\");\r\n\thotspotSelect$.subscribe(e => {\r\n\t\tvar data = JSON.parse($(e.delegate).attr(\"data-fab\"));\r\n\t\tconsole.log(data);\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'ACTIVE_FAB_CHANGE',\r\n\t\t\tdata: data\r\n\t\t});\r\n\t});\r\n\r\n\t// close hotspot info overlay\r\n\tconst hotspotOverlayClose$ = delegate(configuratorEl, \"#hotspot-overlay .close\", \"click\");\r\n\thotspotOverlayClose$.subscribe(() => {\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'ACTIVE_FAB_CLEAR',\r\n\t\t\tdata: \"\"\r\n\t\t});\r\n\t});\r\n\r\n\t// choose cab type and cab\r\n\tconst chooseCabType$ = delegate(configuratorEl, \"#configurator-selector .cab\", \"click\");\r\n\tconst chooseCabOption$ = delegate(configuratorEl, \"#drawer .cab-option\", \"click\");\r\n\tRx.Observable.merge(chooseCabType$, chooseCabOption$).subscribe(e => {\r\n\t\tlet $target = $(e.delegate);\r\n\t\te.event.preventDefault();\r\n\t\tconsole.log($target.attr(\"class\"))\r\n\t\tif ($target.hasClass(\"cab-option\")) {\r\n\t\t\ttoggleDrawer();\r\n\t\t}\r\n\r\n\t\tupdateHashParameters({\r\n\t\t\ttruck: convertName(store.getState().truckModel + \"-\" + $target.attr(\"data-truck-cab\"))\r\n\t\t});\r\n\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'CAB_CHANGE',\r\n\t\t\tdata: {\r\n\t\t\t\tcabType: $target.attr(\"data-cab-type\"),\r\n\t\t\t\ttruckCab: $target.attr(\"data-truck-cab\")\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tconst backToCabSelection$ = delegate(configuratorEl,\r\n\t\t\"#configurator-header-primary .btn-back, #configurator-header-secondary .btn-back\",\r\n\t\t\"click\");\r\n\tbackToCabSelection$.subscribe(e => {\r\n\t\tlet $target = $(e.delegate);\r\n\t\tupdateHashParameters();\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'CAB_RESET',\r\n\t\t\tdata: \"\"\r\n\t\t});\r\n\r\n\t});\r\n\t// slide hotspot slider\r\n\tconst slideHotspotSlider$ = delegate(configuratorEl, \".hotspot-slide .btn\", \"click\");\r\n\tslideHotspotSlider$.filter(e => {\r\n\t\treturn !$(e.delegate).hasClass(\"btn-jwlauncher\");\r\n\t}).subscribe(e => {\r\n\t\tlet $target = $(e.delegate),\r\n\t\t\t$slide = $target.parent(),\r\n\t\t\t$newSlide;\r\n\t\tif ($target.hasClass(\"prev\")) {\r\n\t\t\t$slide.removeClass(\"active\").addClass(\"next\");\r\n\t\t\t$newSlide = $slide.prev();\r\n\t\t\t$newSlide.addClass(\"prev\");\r\n\t\t\t$newSlide.removeClass(\"prev\").addClass(\"active\");\r\n\t\t} else {\r\n\t\t\t$slide.removeClass(\"active\").addClass(\"prev\");\r\n\t\t\t$newSlide = $slide.next();\r\n\t\t\t$newSlide.addClass(\"next\");\r\n\t\t\t$newSlide.removeClass(\"next\").addClass(\"active\");\r\n\t\t}\r\n\t\tconsole.log($slide, $newSlide);\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'ACTIVE_FAB_CHANGE',\r\n\t\t\tdata: JSON.parse($newSlide.attr(\"data-fab\"))\r\n\t\t});\r\n\t});\r\n\r\n\tconst categoryInfo$ = delegate(configuratorEl, \".category-header\", \"click\");\r\n\tcategoryInfo$.subscribe(e => {\r\n\t\tlet $header = $(e.delegate),\r\n\t\t\t$info = $header.next(\".category-info\");\r\n\t\tif ($info.hasClass(\"open\")) {\r\n\t\t\t$info.stop().slideUp().removeClass(\"open\");\r\n\t\t} else {\r\n\t\t\t$info.stop().slideDown().addClass(\"open\");\r\n\t\t}\r\n\t});\r\n\r\n\tconst sendToDealerBtn$ = delegate(configuratorEl, \"#btn-send-to-dealer\", \"click\");\r\n\tsendToDealerBtn$.subscribe(e => {\r\n\t\t// add the truck details to the details area of the send to dealer form\r\n\t\tlet state = store.getState(),\r\n\t\t\t$detailWrap = $(\"#send-to-dealer .detail-wrap\"),\r\n\t\t\ttruckDetails = getTruckDetails(state),\r\n\t\t\tdetails = _.chain(truckDetails).map((settings, skey) => {\r\n\t\t\t\treturn '

' + _.capitalize(skey) + '

';\r\n\t\t\t}).value().join(\"\");\r\n\t\tconsole.log(\"details\", details);\r\n\t\t$detailWrap.html(details);\r\n\r\n\t\tstore.dispatch({\r\n\t\t\ttype: \"VIEW_CHANGE\",\r\n\t\t\tdata: \"exterior\"\r\n\t\t});\r\n\r\n\t\t$(\"#send-to-dealer\").addClass(\"active\");\r\n\t\t// move the exterior viewer to the dealer form\r\n\t\t$(\"#configurator-viewers\").appendTo(\"#send-to-dealer #truck\");\r\n\t\texteriorBuilder.resize(store.getState());\r\n\t});\r\n\r\n\tconst closeSendToDealerBtn$ = delegate(configuratorEl, \"#send-to-dealer .btn-back\", \"click\");\r\n\tcloseSendToDealerBtn$.subscribe(e => {\r\n\t\t$(\"#send-to-dealer\").removeClass(\"active\");\r\n\t\t// move the exterior viewer back to configurator location\r\n\t\t$(\"#configurator-viewers\").insertAfter(\"#configurator-selector\");\r\n\t\texteriorBuilder.resize(store.getState());\r\n\t});\r\n\r\n\tconst submitToDealer$ = Rx.Observable.fromEvent($(\"#send-to-dealer-form\"), \"submit\");\r\n\tsubmitToDealer$.subscribe(e => {\r\n\t\tconsole.log(\"form\", e);\r\n\t\tlet $form = $(e.target),\r\n\t\t\t$errorFields = $form.find(\".validate\").not(\".valid\"),\r\n\t\t\tstate = store.getState(),\r\n\t\t\ttruckDetails = getTruckDetails(state);\r\n\t\t$form.find(\".validate\").removeClass(\"error\");\r\n\t\tif ($errorFields.length > 0) {\r\n\t\t\te.preventDefault();\r\n\t\t\t$errorFields.addClass(\"error\");\r\n\t\t\tconsole.log(truckDetails);\r\n\t\t} else {\r\n\t\t\t// add the data to the form\r\n\t\t\t$form.find(\".truck-details\").val(JSON.stringify(truckDetails));\r\n\t\t}\r\n\t});\r\n\r\n\tconst drawerHandle$ = delegate(configuratorEl, \"#handle\", \"click\");\r\n\tdrawerHandle$.subscribe(e => {\r\n\t\tlet $drawer = $(\"#drawer\");\r\n\t\te.event.preventDefault();\r\n\t\ttoggleDrawer();\r\n\t});\r\n\r\n\tconst mainClose$ = delegate(configuratorEl, \"#configurator-header-primary .close\", \"click\");\r\n\tmainClose$.subscribe(e => {\r\n\t\t$(\"body\").removeClass(\"configurator-open\");\r\n\t\t$(configuratorEl).removeClass(\"open\");\r\n\t\tresizeSubscription.unsubscribe();\r\n\t\tstore.dispatch({\r\n\t\t\ttype: \"CAB_RESET\",\r\n\t\t\tdata: \"\"\r\n\t\t});\r\n\t});\r\n\r\n\r\n}\r\n\r\nfunction toggleDrawer() {\r\n\tlet $drawer = $(\"#drawer\");\r\n\tconsole.log(\"drawer\", $drawer.hasClass(\"open\"))\r\n\tif ($drawer.hasClass(\"open\")) {\r\n\t\t$drawer.removeClass(\"open\");\r\n\t\t$drawer.find(\".cab-options\").slideUp();\r\n\t\t$(\"html, body\").animate({\r\n\t\t\tscrollTop: 0\r\n\t\t});\r\n\t} else {\r\n\t\t$drawer.addClass(\"open\");\r\n\t\t$drawer.find(\".cab-options\").slideDown();\r\n\t\t$(\"html, body\").animate({\r\n\t\t\tscrollTop: $drawer.find(\"#handle\").offset().top\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction htmlDecode(input) {\r\n\tif (input[0] === \"&\") {\r\n\t\tlet e = document.createElement('div');\r\n\t\te.innerHTML = input;\r\n\t\treturn e.childNodes.length === 0 ? \"\" : e.childNodes[0].nodeValue;\r\n\t} else {\r\n\t\treturn input;\r\n\t}\r\n}\r\n\r\n\r\nfunction generateExplorerOverlay(state) {\r\n\tif (!state.dataReady || state.truckCab === \"\") {\r\n\t\treturn h(\"div.vdom.explore\");\r\n\t}\r\n\tlet hotspots = getFabs(state, (!webgl || state.view === \"interior\")),\r\n\t\tactiveFab = state.activeFab || (!webgl && state.view === \"interior\" ? hotspots[0] : state.activeFab);\r\n\treturn h(\"div.vdom.explore\" + (activeFab ? \".active\" : \"\"),\r\n\t\th(\"div.fab-wrap\", [\r\n\t\t\t(webgl ? h(\"div.close\") : \"\"),\r\n\t\t\th(\"div.hotspot-content\" + (activeFab && activeFab.file === \"blank.png\" ? \".disabled\" : \"\"), activeFab ? [\r\n\t\t\t\th(\"div.img\", {\r\n\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\tstyle: 'background: url(\"//freightlineradsaem.azureedge.net/' + activeFab.file + '\") center center no-repeat; ' +\r\n\t\t\t\t\t\t'background-size: contain;'\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t] : \"\"),\r\n\t\t\th(\"div.hotspot-slider\",\r\n\t\t\t\t_.map(hotspots, (hotspot, i) => {\r\n\t\t\t\t\tlet attributes = {\r\n\t\t\t\t\t\t\t\"data-fab\": JSON.stringify(hotspot)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\twindowHeight = window.innerHeight ? window.innerHeight : $(window).height(),\r\n\t\t\t\t\t\tsliderHeight = (activeFab.file === \"blank.png\" ? windowHeight :\r\n\t\t\t\t\t\t\t(windowHeight - ($(window).width() * 0.75)));\r\n\t\t\t\t\tif (mobile) {\r\n\t\t\t\t\t\tattributes.style = \"height: \" +\r\n\t\t\t\t\t\t\tsliderHeight + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn h(\"div.hotspot-slide\" +\r\n\t\t\t\t\t\t(i === activeFab.index - 1 ? \".prev\" : \"\") +\r\n\t\t\t\t\t\t(i === activeFab.index ? \".active\" : \"\") +\r\n\t\t\t\t\t\t(i === activeFab.index + 1 ? \".next\" : \"\"), {\r\n\t\t\t\t\t\tattributes: attributes\r\n\t\t\t\t\t}, [\r\n\t\t\t\t\t\th(\"div.wrap\" + (mobile ? \".full-height\" : \"\"), [\r\n\t\t\t\t\t\t\th(\"span.pillar-icon.\" + (_.find(state.pillars, {\"name\": hotspot.pillar}).icon) + \".\" + convertName(hotspot.pillar, \"-\"), hotspot.pillar),\r\n\t\t\t\t\t\t\th(\"h3\", hotspot.title),\r\n\t\t\t\t\t\th(\"div.content\", [\r\n\t\t\t\t\t\t\tgetVNodeFromHMTL(htmlDecode(hotspot.html)),\r\n\t\t\t\t\t\t\thotspot.assets ? _.chain(hotspot.assets)\r\n\t\t\t\t\t\t\t\t.map(asset => getVNodeFromHMTL(htmlDecode(asset.html || asset.JWCode ? `
Watch Video` : '
'))).value() : \"\"\r\n\t\t\t\t\t\t]),\r\n\t\t\t\t\t\t]),\r\n\t\t\t\t\t\tmobile ? \"\" : hotspots[i - 1] ? h(\"button.btn.btn-primary.active.prev\", hotspots[i - 1].title) : \"\",\r\n\t\t\t\t\t\tmobile ? \"\" : hotspots[i + 1] ? h(\"button.btn.btn-primary.active.next\", hotspots[i + 1].title) : \"\",\r\n\t\t\t\t\t]);\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t]));\r\n}\r\n\r\nfunction createHeaderPrimaryVDom(state) {\r\n\treturn h(\"div.vdom\", [\r\n\t\tstate.standalone ? \"\" : h(\"button.close\", \"Close\"),\r\n\t\th(\"nav\", [\r\n\t\t\th(\"div.primary\", [\r\n\t\t\t\th(\"div.logo\", [\r\n\t\t\t\t\th(\"img\", {\r\n\t\t\t\t\t\tsrc: \"/images/cascadia-logo.png\"\r\n\t\t\t\t\t})\r\n\t\t\t\t]),\r\n\t\t\t\tstate.truckCab ? h(\"div.main-nav-wrap\", [\r\n\t\t\t\t\th(\"button.btn-back\"),\r\n\t\t\t\t\th(\"div.truck-label\", state.truckCab),\r\n\t\t\t\t\t_.map(state.navs, nav => {\r\n\t\t\t\t\t\treturn h(\"a.main-nav\" + (nav === state.nav ? \".active\" : \"\") +\r\n\t\t\t\t\t\t\t(state.truckCab === \"\" ? \".disabled\" : \"\"), {\r\n\t\t\t\t\t\t\thref: \"#\" + nav,\r\n\t\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\t\"data-main-nav\": nav\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, nav);\r\n\t\t\t\t\t})\r\n\t\t\t\t]) : \"\"\r\n\t\t\t])\r\n\t\t])\r\n\t]);\r\n}\r\nfunction createHeaderSecondaryVDom(state) {\r\n\tif (state.truckCab === \"\") {\r\n\t\treturn h(\"div\");\r\n\t}\r\n\treturn h(\"div.vdom\", [\r\n\t\th(\"nav\", [\r\n\t\t\th(\"div.secondary\", [\r\n\t\t\t\th(\"button.btn-back\"),\r\n\t\t\t\th(\"div.truck-label\", state.truckCab),\r\n\t\t\t\tstate.nav === \"explore\" ? [\r\n\t\t\t\t\th(\"div.btn-group\", {\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\"data-toggle\": \"buttons\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, _.map(state.views, (view) => {\r\n\t\t\t\t\t\tlet inputAttrs = {\r\n\t\t\t\t\t\t\ttype: \"radio\",\r\n\t\t\t\t\t\t\tname: \"configurator-view\",\r\n\t\t\t\t\t\t\tautocomplete: \"off\",\r\n\t\t\t\t\t\t\t\"data-view\": view\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tif (view === state.view) {\r\n\t\t\t\t\t\t\tinputAttrs.checked = \"checked\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn h(\"label.btn\" + (view === state.view ? \".btn-primary.active\" : \".btn-default\"), [\r\n\t\t\t\t\t\t\th(\"input.view-nav\", {\r\n\t\t\t\t\t\t\t\tattributes: inputAttrs\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tview\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t})),\r\n\t\t\t\t\tstate.view === \"exterior\" ? _.map(state.pillars, (pillar) => {\r\n\t\t\t\t\t\tif (!state.dataReady) {\r\n\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet truckName = \"Cascadia-\" + state.truckCab,\r\n\t\t\t\t\t\t\thotspots = true;\r\n\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tif(state.truckCab && state.pathTree.FTL.Truck[truckName].Explore[_.capitalize(state.view)]){\r\n\t\t\t\t\t\t\t\thotspots = _.chain(state.pathTree)\r\n\t\t\t\t\t\t\t\t\t\t\t.deepPluck(\"FTL.Truck.\" + truckName + \".Explore.\" + _.capitalize(state.view) + \".\" + pillar.name)\r\n\t\t\t\t\t\t\t\t\t\t\t.value();\r\n\t\t\t\t\t\t\t}\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcatch(error) {\r\n\t\t\t\t\t\t\twindow.___state_err = {state,path:'state.pathTree.FTL.Truck', truckName};\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\treturn h(\"a.pillar-nav.\" + pillar.id +\r\n\t\t\t\t\t\t\t(pillar.name === state.pillar && hotspots ? \".active\" : \"\") +\r\n\t\t\t\t\t\t\t(\".\" + pillar.icon) +\r\n\t\t\t\t\t\t\t(!hotspots ? \".disabled\" : \"\"), {\r\n\t\t\t\t\t\t\thref: \"#\" + pillar.id,\r\n\t\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\t\"data-pillar\": pillar.name\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, [\r\n\t\t\t\t\t\t\th(\"span\", pillar.name)\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}) : \"\"\r\n\t\t\t\t] : [\r\n\t\t\t\t\th(\"div.build-options\", _.map(state.viewOptions, (viewOptions) => {\r\n\t\t\t\t\t\t\tif (!state.dataReady) {\r\n\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn h(\"a.view-option-nav.\" + viewOptions.id +\r\n\t\t\t\t\t\t\t\t(viewOptions.name === state.viewOption ? \".active\" : \"\"), {\r\n\t\t\t\t\t\t\t\thref: \"#\" + viewOptions.id,\r\n\t\t\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\t\t\"data-view-option\": viewOptions.name\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}, viewOptions.name);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t)]\r\n\t\t\t])\r\n\t\t])\r\n\t]);\r\n}\r\nfunction createSelectorVDom(state) {\r\n\tlet truckCabs = {\r\n\t\t\"day\": '126\\\" BBC Day Cab',\r\n\t\t\"sleeper\": '126\\\" BBC 72\\\" RR'\r\n\t};\r\n\treturn (state.cabType === \"\" || state.truckCab === \"\") ? h(\"div.vdom.selector\", [\r\n\t\th(\"div#cab-selector\", [\r\n\t\t\th(\"div.cab.cab-day\" + (state.cabType === \"day\" ? \".active\" : \"\") +\r\n\t\t\t\t(state.cabType === \"sleeper\" ? \".inactive\" : \"\"), {\r\n\t\t\t\tattributes: {\r\n\t\t\t\t\t\"data-cab-type\": \"day\",\r\n\t\t\t\t\t\"data-truck-cab\": truckCabs.day\r\n\t\t\t\t}\r\n\t\t\t}, [\r\n\t\t\t\th(\"img\", {\r\n\t\t\t\t\tsrc: \"/images/select-day-cab.png\"\r\n\t\t\t\t}),\r\n\t\t\t\th(\"h2\", truckCabs.day)\r\n\t\t\t]),\r\n\t\t\th(\"div.cab.cab-sleeper\" + (state.cabType === \"sleeper\" ? \".active\" : \"\") +\r\n\t\t\t\t(state.cabType === \"day\" ? \".inactive\" : \"\"), {\r\n\t\t\t\tattributes: {\r\n\t\t\t\t\t\"data-cab-type\": \"sleeper\",\r\n\t\t\t\t\t\"data-truck-cab\": truckCabs.sleeper\r\n\t\t\t\t}\r\n\t\t\t}, [\r\n\t\t\t\th(\"img\", {\r\n\t\t\t\t\tsrc: \"/images/select-sleeper-cab.png\"\r\n\t\t\t\t}),\r\n\t\t\t\th(\"h2\", truckCabs.sleeper)\r\n\t\t\t]),\r\n\t\t])\r\n\t]) : h(\"div\");\r\n}\r\nfunction createInfoVDom(state) {\r\n\t// if (state.view === \"interior\") {\r\n\t// \treturn generateInteriorBuilderUI(state);\r\n\t// } else if (state.view === \"exterior\") {\r\n\t// \treturn generateExteriorBuilderUI(state);\r\n\t// } else if (!infoVTree) {\r\n\t// \treturn h(\"div\");\r\n\t// }\r\n\t// return infoVTree;\r\n\treturn generateBuilderUI(state);\r\n}\r\n\r\nfunction createFabOverlayVDom(state) {\r\n\treturn generateExplorerOverlay(state);\r\n}\r\n\r\nfunction createViewerVDom(state) {\r\n\treturn h(\"div.vdom.viewers\", {\r\n\t\tattributes: {\r\n\t\t\t\"data-viewer\": state.view,\r\n\t\t\t\"data-mode\": state.nav\r\n\t\t}\r\n\t}, [\r\n\t\th(\"div#exterior-builder\"),\r\n\t\th(\"div#interior-builder\"),\r\n\t\th(\"div#hotspot-overlay\"),\r\n\t]);\r\n}\r\n\r\nfunction renderFabOverlay(state) {\r\n\tlet newFabOverlayTree = createFabOverlayVDom(state),\r\n\t\tfabOverlayPatches = virtualDom.diff(fabOverlayVTree, newFabOverlayTree);\r\n\tfabOverlayVNode = virtualDom.patch(fabOverlayVNode, fabOverlayPatches);\r\n\tfabOverlayVTree = newFabOverlayTree;\r\n}\r\nfunction render(state) {\r\n\t// render the UI\r\n\tlet renderOverlayOnly = state.activeFab || state.clearActiveFab;\r\n\tif (!renderOverlayOnly) {\r\n\t\t// header\r\n\t\tlet newHeaderTreePrimary = createHeaderPrimaryVDom(state),\r\n\t\t\theaderPatchesPrimary = virtualDom.diff(headerVTreePrimary, newHeaderTreePrimary);\r\n\t\theaderVNodePrimary = virtualDom.patch(headerVNodePrimary, headerPatchesPrimary);\r\n\t\theaderVTreePrimary = newHeaderTreePrimary;\r\n\r\n\t\tlet newHeaderTreeSecondary = createHeaderSecondaryVDom(state),\r\n\t\t\theaderPatchesSecondary = virtualDom.diff(headerVTreeSecondary, newHeaderTreeSecondary);\r\n\t\theaderVNodeSecondary = virtualDom.patch(headerVNodeSecondary, headerPatchesSecondary);\r\n\t\theaderVTreeSecondary = newHeaderTreeSecondary;\r\n\r\n\t\t// selector\r\n\t\tlet newSelectorTree = createSelectorVDom(state),\r\n\t\t\tselectorPatches = virtualDom.diff(selectorVTree, newSelectorTree);\r\n\t\tselectorVNode = virtualDom.patch(selectorVNode, selectorPatches);\r\n\t\tselectorVTree = newSelectorTree;\r\n\r\n\t\t// infobox\r\n\t\tlet newInfoTree = createInfoVDom(state),\r\n\t\t\tinfoPatches = virtualDom.diff(infoVTree, newInfoTree);\r\n\t\tinfoVNode = virtualDom.patch(infoVNode, infoPatches);\r\n\t\tinfoVTree = newInfoTree;\r\n\r\n\t\t// exterior and interior viewer\r\n\t\tlet newViewerTree = createViewerVDom(state),\r\n\t\t\tviewerPatches = virtualDom.diff(viewerVTree, newViewerTree);\r\n\t\tviewerVNode = virtualDom.patch(viewerVNode, viewerPatches);\r\n\t\tviewerVTree = newViewerTree;\r\n\t}\r\n\t// fab overlay\r\n\trenderFabOverlay(state);\r\n\r\n\t// if interiorBuilder is setup update it\r\n\tif (interiorBuilder && !renderOverlayOnly) {\r\n\t\tinteriorBuilder.update(state);\r\n\t}\r\n\t// if exteriorBuilder is setup update it\r\n\tif (exteriorBuilder && state.view === \"exterior\" && !renderOverlayOnly) {\r\n\t\texteriorBuilder.update(state);\r\n\t}\r\n\r\n\tif (state.truckCab === \"\" || state.activeFab || state.view === \"interior\") {\r\n\t\t$(\"#drawer\").hide();\r\n\t} else {\r\n\t\t$(\"#drawer\").show();\r\n\t}\r\n\r\n}\r\n\r\nfunction initConfigurator(state) {\r\n\r\n\t// init header vDom and insert into DOM\r\n\t$headerContainerPrimary = $(\"#configurator-header-primary\");\r\n\theaderVTreePrimary = createHeaderPrimaryVDom(state);\r\n\theaderVNodePrimary = virtualDom.create(headerVTreePrimary);\r\n\t$headerContainerPrimary.html(headerVNodePrimary);\r\n\r\n\t// init header vDom and insert into DOM\r\n\t$headerContainerSecondary = $(\"#configurator-header-secondary\");\r\n\theaderVTreeSecondary = createHeaderSecondaryVDom(state);\r\n\theaderVNodeSecondary = virtualDom.create(headerVTreeSecondary);\r\n\t$headerContainerSecondary.html(headerVNodeSecondary);\r\n\r\n\t// init header vDom and insert into DOM\r\n\t$selectorContainer = $(\"#configurator-selector\");\r\n\tselectorVTree = createSelectorVDom(state);\r\n\tselectorVNode = virtualDom.create(selectorVTree);\r\n\t$selectorContainer.html(selectorVNode);\r\n\r\n\t// init infobox vDom and insert into DOM\r\n\t$infoContainer = $(\"#configurator-infobox\");\r\n\tinfoVTree = createInfoVDom(state);\r\n\tinfoVNode = virtualDom.create(infoVTree);\r\n\t$infoContainer.html(infoVNode);\r\n\r\n\t// init infobox vDom and insert into DOM\r\n\t$viewerContainer = $(\"#configurator-viewers\");\r\n\tviewerVTree = createViewerVDom(state);\r\n\tviewerVNode = virtualDom.create(viewerVTree);\r\n\t$viewerContainer.html(viewerVNode);\r\n\r\n\t// init fab overlay vDom and insert into DOM\r\n\t$fabOverlayContainer = $(\"#hotspot-overlay\");\r\n\tfabOverlayVTree = createFabOverlayVDom(state);\r\n\tfabOverlayVNode = virtualDom.create(fabOverlayVTree);\r\n\t$fabOverlayContainer.html(fabOverlayVNode);\r\n\r\n}\r\n\r\nfunction loadData() {\r\n\tlet optionsMatrix$ = Rx.Observable.fromPromise(getOptionsMatrix());\r\n\toptionsMatrix$.subscribe(function (optionsMatrix) {\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'LOAD_OPTIONS_MATRIX',\r\n\t\t\tdata: optionsMatrix\r\n\t\t});\r\n\t}, e => {\r\n\t\tconsole.log(e);\r\n\t});\r\n\tlet adsFabs$ = Rx.Observable.fromPromise(getAdsFabs());\r\n\tadsFabs$.subscribe(function (fabs) {\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'LOAD_ADS_FABS',\r\n\t\t\tdata: fabs\r\n\t\t});\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'FORMAT_ADS_PATH_TREE',\r\n\t\t\tdata: fabs.path_tree\r\n\t\t});\r\n\t});\r\n\tlet interiorMap$ = Rx.Observable.fromPromise(getFile(\"/static/configurator-mini/p4-interior-map.json\"));\r\n\tinteriorMap$.subscribe(function (map) {\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'LOAD_INTERIOR_MAP',\r\n\t\t\tdata: map\r\n\t\t});\r\n\t});\r\n\tlet exteriorMap$ = Rx.Observable.fromPromise(getFile(\"/static/configurator-mini/p4-exterior-map.json\"));\r\n\texteriorMap$.subscribe(function (map) {\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'LOAD_EXTERIOR_MAP',\r\n\t\t\tdata: map\r\n\t\t});\r\n\t});\r\n\r\n\tlet data$ = Rx.Observable.zip(optionsMatrix$, adsFabs$, interiorMap$, exteriorMap$);\r\n\tdata$.subscribe(() => {\r\n\t\tlet state = store.getState();\r\n\r\n\t\tinitConfigurator(state);\r\n\r\n\t\t$(\"#configurator-mini\").removeClass(\"loading\");\r\n\r\n\t\tif (webgl) {\r\n\t\t\t// init configurator for interior view\r\n\t\t\tinteriorBuilder = setupInteriorBuilder(\"#interior-builder\", state, store);\r\n\t\t}\r\n\t\t// init configurator for exterior builder\r\n\t\texteriorBuilder = setupExteriorBuilder(\"#exterior-builder\", state, null, false);\r\n\r\n\t\tvar resizeSource$ = Rx.Observable.fromEvent(window, \"resize\")\r\n\t\t\t.debounceTime(100);\r\n\t\tresizeSubscription = resizeSource$.subscribe(e => {\r\n\t\t\tlet state = store.getState();\r\n\t\t\tconsole.log(\"resize event\");\r\n\t\t\texteriorBuilder.update(state);\r\n\t\t\trenderFabOverlay(state);\r\n\t\t});\r\n\r\n\t\tstore.dispatch({\r\n\t\t\ttype: 'ALL_DATA_LOADED',\r\n\t\t\tdata: null\r\n\t\t});\r\n\t\tlet truck = getHashParameter(\"truck\"),\r\n\t\t\tview = getHashParameter(\"view\"),\r\n\t\t\tpillar = getHashParameter(\"pillar\").replace(\"_\", \" \"),\r\n\t\t\tstandalone = $(\"#standalone-configurator-mini\").length > 0;\r\n\t\tif (truck || standalone) {\r\n\t\t\tstore.dispatch({\r\n\t\t\t\ttype: \"DEEP_LINK_LOAD\",\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tstandalone,\r\n\t\t\t\t\ttruck: truck,\r\n\t\t\t\t\tview: view || state.view,\r\n\t\t\t\t\tpillar: pillar || state.pillar\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tstore$.subscribe(render);\r\n\r\n\t}, e => {\r\n\t\tconsole.log(e);\r\n\t});\r\n}\r\n\r\nfunction insertHTML() {\r\n\tvar html = `
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t\t»Available Cab Options»\r\n\t\t
\r\n\t\t\t\"\"116\" BBC 48 XT\r\n\t\t\t\"\"116\" BBC 60 XT\r\n\t\t\t\"\"116\" BBC 60 RR\r\n\t\t\t\"\"116\" BBC 72 XT\r\n\t\t\t\"\"116\" BBC 72 RR\r\n\t\t\t\"\"116\" BBC Day Cab\r\n\t\t\t\"\"126\" BBC 48 XT\r\n\t\t\t\"\"126\" BBC 60 XT\r\n\t\t\t\"\"126\" BBC 60 RR\r\n\t\t\t\"\"126\" BBC 72 XT\r\n\t\t\t\"\"126\" BBC 72 RR\r\n\t\t\t\"\"126\" BBC Day Cab\r\n\t\t
\r\n\t
\r\n
`;\r\n\t$(\"body\").append(html);\r\n}\r\ninsertHTML();\r\naddHandlers();\r\n\r\n(() => {\r\n// load using deep links if we have them\r\n\tlet truck = getHashParameter(\"truck\"),\r\n\t\tview = getHashParameter(\"view\"),\r\n\t\tpillar = getHashParameter(\"pillar\").replace(\"_\", \" \"),\r\n\t\tstandalone = $(\"#standalone-configurator-mini\").length > 0;\r\n\tif (truck || standalone) {\r\n\t\tlaunchConfigurator();\r\n\t}\r\n})();\r\n\r\n// subscribe to state changes"],"names":["createStore","Redux","deepLinkMap","truckModel","cabType","truckCab","initState","id","name","icon","configurator","state","action","tempState","type","Object","assign","data","truck","view","pillar","standalone","optionsMatrix","adsFabs","_","filter","assets","asset","adsVids","pathTree","formatPathTree","val","key","interiorMap","exteriorMap","dataReady","interiorBuildSettings","buildSetting","interiorBuildChange","exteriorBuildSettings","exteriorBuildChange","powertrainBuildSettings","safetyBuildSettings","nav","activeFab","clearActiveFab","actionType","viewOption","capitalize","toLowerCase","getBuildSettingsInit","powertrainOptions","safetyOptions","connectivityBuildSettings","connectivityOptions","obj","cb","isUndefined","Error","nodes","mapKeys","isArray","res","hasOwnProperty","isObject","buildSettings","options","pick","forEach","component","componentKey","Cab","category","defaultOption","find","option","Key","store","window","devToolsExtension","store$","Rx","Observable","from","convertName","getFabs","h","virtualDom","setupExteriorBuilder","selector","l","useWorker","exteriorBuilder","path","$container","$","$layers","appendTo","imageLayers","$progressBarMask","$progressBarCircle","ProgressBar","Circle","color","strokeWidth","trailWidth","easing","duration","svgStyle","display","width","height","position","text","autoStyleContainer","to","step","circle","setAttribute","value","Math","round","setText","$progressBarLineWrap","$progressBarLine","Line","trailColor","imageMaxWidth","imageMaxHeight","aspectRatio","numFrames","frameDivider","dragSpeedFactor","minScrubDistance","dimensionsRegex","layersVTree","layersVNode","el","anglePad","n","p","c","pad_char","pad","Array","join","slice","length","filterByDivider","i","loadImage","image","Promise","resolve","reject","img","Image","src","onload","sortImages","a","b","srcA","toUpperCase","srcB","getCanvasDimensions","outerWidth","outerHeight","delegate","wrapper","eventName","fromEvent","e","event","target","closest","x","setupKeyControls","document","subscribe","movement","direction","progress","keyCode","preventDefault","rotateTruck","getHotspotScaledPosition","y","canvasDims","left","hotspotScaleWidth","top","hotspotScaleHeight","buildDom","layerContainer","vdom","attributes","newLayersVTree","layersPatches","diff","patch","create","html","getImage","dims","crossOrigin","getDimensions","onerror","createLayerGenerator","numAngles","images","times","mergeMap","fromPromise","scan","updateProgress","bufferCount","updateHotspotPositions","each","spot","$spot","fabPosition","scaledPosition","css","generateHotspots","remove","chain","fab","hotspotPosition","$vdom","attr","JSON","stringify","updateTruckRotation","rotationAngle","Pillar","hotspotAngle","update","hide","show","opacity","sort","map","error","console","log","initScrubAnimationEvents","$mouseContainer","$window","winWidth","$mContainer","isDragging","startX","lastX","handleStart","touch","originalEvent","touches","pageX","handleEnd","handleMove","currentDirection","abs","showActiveLayer","hideIndex","showIndex","layer","angles","eq","wrapIndex","index","wrappedIndex","angleToIndex","angle","d","targetRotationAngle","fps","currentRotationIndex","targetRotationIndex","setTimeout","r","min","max","animate","set","current","setupInteriorBuilder","canvasWidth","canvasHeight","interiorViewer","imgFolder","md","MobileDetect","navigator","userAgent","mobile","targetLat","targetLon","container","camera","prevCameraTarget","z","scene","renderer","raycaster","mouse","THREE","Vector2","INTERSECTED","controls","canvas","context","layerMesh","layerTexture","layerGeometry","layerMaterial","hotspotCanvas","createElement","hotspotCanvasContext","hotspots","hotspotGeometry","PlaneGeometry","hotspotMaterial","hotspotTexture","Texture","isUserInteracting","onPointerDownPointerX","onPointerDownPointerY","lon","onPointerDownLon","lat","onPointerDownLat","phi","theta","radius","interiorViewRadius","animFactor","animPrecision","moveFactor","viewInitRotationDegrees","jitterThreshold","animateMovement","run","setupViewer","Raycaster","getContext","MeshBasicMaterial","transparent","imgData","drawImage","needsUpdate","globalCompositeOperation","WebGLRenderer","setPixelRatio","devicePixelRatio","setSize","clientWidth","clientHeight","domElement","style","sortObjects","appendChild","Scene","PerspectiveCamera","Vector3","SphereGeometry","scale","Mesh","rotation","radToDeg","add","showHotspots","DeviceOrientationController","enableManualDrag","connect","addEventListener","onDocumentMoveStart","onDocumentMove","onDocumentMoveEnd","onDocumentMouseWheel","updateRendererSize","tap$","merge","interval","takeUntil","getFileName","dir","layerName","ajax","url","method","dataType","then","filename","latDiff","lonDiff","coords","absoluteDiff","getCartesianCoordinatesOnSphereFromLonLat","degToRad","Stats","stats","v","applyQuaternion","quaternion","hotspot","lookAt","checkHotspotHovers","render","setFromCamera","intersects","intersectObjects","object","userData","TweenMax","PI","latitude","sin","cos","getLatLonFromCartesianCoordinates","asin","atan2","requestAnimationFrame","generateHotSpots","fabs","hotspotData","visible","convert3DWorldTo2DScreen","vector","project","parseInt","clientX","offset","clientY","dispatch","wheelDeltaY","fov","wheelDelta","detail","updateProjectionMatrix","re","match","exec","drawImageLayers","fillStyle","fillRect","promise","centerView","reset","layers","getLayers","addClass","removeClass","zIndex","aspect","getVNodeFromHMTL","convertHTML","setupMixins","mixin","deepPluck","isString","split","reduce","pluck","ret","ident","eventNames","replace","s","spaceReplacer","getFile","done","fail","all","fabData","truckName","FTL","Truck","Explore","___state_err","pillarKey","xNode","yNode","parseFloat","flatten","some","fabInfo","includes","additionalData","assetNode","assetNodeId","vid","getHashParameter","parameterName","hash","location","RegExp","parameter","getUrlParams","params","decode","decodeURIComponent","href","updateHashParameters","currentParams","newParams","k","Element","prototype","matches","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","element","elements","ownerDocument","querySelectorAll","Boolean","nodeType","parentNode","headerVTreePrimary","headerVNodePrimary","headerVTreeSecondary","headerVNodeSecondary","selectorVTree","selectorVNode","infoVTree","infoVNode","fabOverlayVTree","fabOverlayVNode","viewerVTree","viewerVNode","$viewerContainer","$headerContainerPrimary","$headerContainerSecondary","$selectorContainer","$infoContainer","$fabOverlayContainer","interiorBuilder","resizeSubscription","webgl","checkWebglSupport","WebGLRenderingContext","_canvas","_gl","clearStencil","errors","getError","getOptionsMatrix","response","parse","json","mapValues","groupBy","mode","getAdsFabs","hdnRoot","getElementById","root","generateBuilderOptionGroups","categoryRules","currentOption","optionGroup","categoryKey","activeBtn","disabledBtn","prop","compact","Component","Option","Incompatibilities","Category","inc","checked","disabled","generateBuilderVDom","generateBuilderUI","Exterior","Interior","Components","powertrainCategoryRules","getOptionNames","settings","modeObj","optionKey","pickBy","o","getTruckDetails","truckDetails","exterior","interior","powertrain","safety","connectivity","launchConfigurator","loadData","addHandlers","on","configuratorEl","buildChanges$","$target","getState","mainNav$","viewerChange$","pillarChange$","hasClass","scrollTop","showHotspots$","viewOption$","hotspotSelect$","hotspotOverlayClose$","chooseCabType$","chooseCabOption$","toggleDrawer","backToCabSelection$","slideHotspotSlider$","$slide","parent","$newSlide","prev","next","categoryInfo$","$header","$info","stop","slideUp","slideDown","sendToDealerBtn$","$detailWrap","details","skey","setting","resize","closeSendToDealerBtn$","insertAfter","submitToDealer$","$form","$errorFields","not","drawerHandle$","$drawer","mainClose$","unsubscribe","htmlDecode","input","innerHTML","childNodes","nodeValue","generateExplorerOverlay","file","windowHeight","innerHeight","sliderHeight","pillars","title","JWCode","createHeaderPrimaryVDom","navs","createHeaderSecondaryVDom","views","inputAttrs","autocomplete","viewOptions","createSelectorVDom","truckCabs","day","sleeper","createInfoVDom","createFabOverlayVDom","createViewerVDom","renderFabOverlay","newFabOverlayTree","fabOverlayPatches","renderOverlayOnly","newHeaderTreePrimary","headerPatchesPrimary","newHeaderTreeSecondary","headerPatchesSecondary","newSelectorTree","selectorPatches","newInfoTree","infoPatches","newViewerTree","viewerPatches","initConfigurator","optionsMatrix$","adsFabs$","path_tree","interiorMap$","exteriorMap$","data$","zip","resizeSource$","debounceTime","insertHTML","append"],"sourceRoot":""}