spyne 0.14.8 → 0.17.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.travis.yml +2 -2
- package/karma.conf.js +27 -20
- package/lib/channel-action-filter.test.2418910233.js +20 -0
- package/lib/channel-dom.test.1490741340.js +20 -0
- package/lib/channel-fetch-util.test.3681936279.js +20 -0
- package/lib/channel-fetch.test.380764798.js +20 -0
- package/lib/channel-payload-class.test.2325155642.js +20 -0
- package/lib/channel-payload-filter.test.1598505124.js +20 -0
- package/lib/channel-route.test.921296320.js +20 -0
- package/lib/channel-stream-item.test.159699696.js +20 -0
- package/lib/channel-ui.test.291129654.js +20 -0
- package/lib/channel-util-dom.test.181212370.js +20 -0
- package/lib/channel.test.706832124.js +20 -0
- package/lib/commons.js +50363 -0
- package/lib/dom-el-selectors.test.3296414834.js +20 -0
- package/lib/dom-el-template.test.1459850380.js +20 -0
- package/lib/dom-el.test.2449130808.js +20 -0
- package/lib/frp-tools.test.1620088187.js +20 -0
- package/lib/import.test.723835576.js +20 -0
- package/lib/index.test.2146503294.js +20 -0
- package/lib/plugins-methods.test.3482246428.js +20 -0
- package/lib/route-utils.test.2932649409.js +20 -0
- package/lib/runtime.js +174 -0
- package/lib/spyne-app-properties.test.485192211.js +20 -0
- package/lib/spyne-app.test.4150724251.js +20 -0
- package/lib/spyne-plugin.test.3993976219.js +20 -0
- package/lib/spyne.js +15477 -18467
- package/lib/spyne.min.js +2 -12
- package/lib/spyne.min.js.LICENSE.txt +10 -0
- package/lib/url-utils.test.3668806082.js +20 -0
- package/lib/view-stream-broadcaster.test.2534955231.js +20 -0
- package/lib/view-stream-enhancer-loader.test.3395418180.js +20 -0
- package/lib/view-stream-enhancer.test.1043626253.js +20 -0
- package/lib/view-stream.test.1765314964.js +20 -0
- package/package.json +37 -65
- package/src/spyne/channels/channel-fetch-class.js +24 -1
- package/src/spyne/channels/channel-payload-class.js +102 -11
- package/src/spyne/channels/channel-proxy.js +6 -4
- package/src/spyne/channels/channel.js +66 -6
- package/src/spyne/channels/channels-config.js +2 -2
- package/src/spyne/channels/{channels-delegator.js → channels-map.js} +37 -21
- package/src/spyne/channels/spyne-channel-lifecycle.js +1 -1
- package/src/spyne/channels/spyne-channel-route.js +95 -15
- package/src/spyne/channels/spyne-channel-ui.js +1 -0
- package/src/spyne/channels/spyne-channel-window.js +60 -20
- package/src/spyne/spyne-app.js +181 -0
- package/src/spyne/spyne-plugins.js +146 -0
- package/src/spyne/spyne.js +11 -139
- package/src/spyne/utils/channel-fetch-util.js +1 -1
- package/src/spyne/utils/channel-payload-filter.js +166 -30
- package/src/spyne/utils/frp-tools.js +21 -1
- package/src/spyne/utils/mixins/base-streams-mixins.js +1 -0
- package/src/spyne/utils/spyne-app-properties.js +213 -0
- package/src/spyne/utils/spyne-logger.js +18 -0
- package/src/spyne/utils/spyne-plugins-methods.js +105 -0
- package/src/spyne/utils/spyne-scroll-lock.js +95 -0
- package/src/spyne/utils/spyne-utils-channel-route-url.js +2 -1
- package/src/spyne/utils/spyne-utils-channel-route.js +3 -1
- package/src/spyne/utils/spyne-utils-channel-window.js +2 -2
- package/src/spyne/views/dom-element-template.js +52 -23
- package/src/spyne/views/dom-element.js +11 -2
- package/src/spyne/views/view-stream-broadcaster.js +3 -3
- package/src/spyne/views/view-stream-payload.js +76 -15
- package/src/spyne/views/view-stream-selector.js +2 -2
- package/src/spyne/views/view-stream.js +219 -115
- package/src/tests/channels/channel-fetch.test.js +102 -0
- package/src/tests/channels/channel-payload-class.test.js +149 -0
- package/src/tests/channels/channel-payload-filter.test.js +298 -0
- package/src/tests/channels/channel-route.test.js +76 -1
- package/src/tests/channels/channel-stream-item.test.js +3 -2
- package/src/tests/channels/channel.test.js +38 -0
- package/src/tests/channels/route-utils.test.js +1 -1
- package/src/tests/index.js +0 -1
- package/src/tests/index.test.js +6 -0
- package/src/tests/mocks/channel-payload-data.js +93 -1
- package/src/tests/mocks/msf-user-data-small.json +4103 -0
- package/src/tests/mocks/msf-user-data.json +47035 -0
- package/src/tests/mocks/utils-data.js +20 -2
- package/src/tests/spyne-app.test.js +27 -0
- package/src/tests/spyne-plugin.test.js +49 -0
- package/src/tests/utils/channel-action-filter.test.js +22 -11
- package/src/tests/utils/channel-data-packet-generator.unused.js +119 -0
- package/src/tests/utils/plugins-methods.test.js +103 -0
- package/src/tests/utils/spyne-app-properties.test.js +11 -0
- package/src/tests/views/dom-el-selectors.test.js +1 -1
- package/webpack.config.js +30 -15
- package/lib/spyne.js.map +0 -1
- package/src/spyne/utils/viewstream-dom-utils.js +0 -8
package/lib/spyne.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 12982ae54ce89bbbf5d3","webpack:///external {\"commonjs\":\"ramda\",\"commonjs2\":\"ramda\",\"amd\":\"ramda\",\"root\":\"R\"}","webpack:///external {\"commonjs\":\"rxjs\",\"commonjs2\":\"rxjs\",\"amd\":\"rxjs\",\"root\":\"Rx\"}","webpack:///./src/spyne/utils/frp-tools.js","webpack:///./src/spyne/channels/channels-base.js","webpack:///./src/spyne/channels/channels-config.js","webpack:///./src/spyne/utils/predicado.js","webpack:///./src/spyne/utils/mixins/base-core-mixins.js","webpack:///./src/spyne/channels/channels-payload.js","webpack:///./src/spyne/views/dom-item.js","webpack:///./src/spyne/views/view-to-dom-mediator.js","webpack:///./src/spyne/utils/lifecycle-observables.js","webpack:///./src/spyne/utils/mixins/base-streams-mixins.js","webpack:///./src/spyne/utils/gc.js","webpack:///./src/spyne/views/view-stream-broadcaster.js","webpack:///./src/spyne/spyne.js","webpack:///./src/spyne/channels/channels-base-controller.js","webpack:///./src/spyne/channels/channel-route.js","webpack:///./src/spyne/channels/channel-ui.js","webpack:///./src/spyne/channels/channel-dom.js","webpack:///./node_modules/data.validation/lib/index.js","webpack:///./node_modules/data.validation/lib/validation.js","webpack:///./src/spyne/views/dom-template-renderer.js","webpack:///./src/spyne/utils/animations.js","webpack:///./src/spyne/views/view-stream.js","webpack:///./src/spyne/channels/lifestream-payload.js","webpack:///./src/spyne/views/dom-item-selectors.js"],"names":["R","require","isIOS","userAgent","window","navigator","toLowerCase","ios","test","closest","array","num","i","minDiff","ans","m","Math","abs","convertDomStringMapToObj","domMap","obj","d","subscribeFn","next","console","log","x","error","complete","Right","map","f","fold","g","inspect","ifNilThenUpdate","val","newVal","isNil","Left","fromNullable","findInObj","found","pullRouteInfo","str","pullHashAndSlashFromPath","location","hash","routeId","pullMainRoute","params","pullParams","removeSlashes","replace","routeRE","pullSlashFromPath","pullTranslateX","pullTranslateY","pullTranslateYFromHeader","Rx","ChannelsBase","props","addMixins","defaultName","name","observer$","Subject","Object","assign","streamsController","Spyne","channels","dispatcherStream$","getStream","subscribe","onIncomingObservable","bool","eqsName","equals","dataObj","data","mouse","obsVal","onSuccess","observable","onObserversCallback","bind","onError","channel","isValidChannel","includes","c","warn","startSubscribe","observer","fn","ifElse","registeredStreamNames","undefined","Array","from","keys","registeredSteps","registeredLifeStreamTypes","registeredStreamTypes","registeredActions","getRxType","obs","constructor","confirmObservable","baseValidations","predicate","payload","action","viewInfoValidations","cid","viewName","uiValidations","concat","lifeStreamValidations","STEP","type","viewId","stepValidations","stepDisposeValidations","stepUpdateValidations","disposeItems","lifestreamValidations","routeValidations","StreamsConfig","streamValidations","streams","init","structure","String","Observable","validations","Success","Failure","validate","thing","initial","run","acc","v","ap","BaseCoreMixins","createpropsMap","wm","WeakMap","objKey","set","key","weakMap","gc","createId","floor","random","setTraceFunc","debug","ChannelsPayload","options","getValidationChecks","n","left","e","right","onRunValidations","UI","ROUTE","LIFESTREAM","checks","p","sendToDirectorStream","directorStream$","errors","join","onPayloadValidated","DomItem","tagName","attributes","content","template","isSimpleView","is","Map","setProp","document","createDocumentFragment","updateAttrs","get","el","addAttributes","addToDataset","dataset","forEachObjIndexed","setAttribute","getProp","forEach","theMap","mapObjIndexed","tmpl","addTmpl","frag","getTemplateNode","appendChild","doNothing","createElement","text","isText","txt","createTextNode","pipe","setElAttrs","addTemplate","addContent","execute","isObj","returnIfDefined","updateprops","remove","clear","attrs","updatepropsAndRun","coreMixins","ViewToDomMediator","sink$","viewProps","vsName","_state","defaults","extendedHashMethods","createExtraStatesMethod","arr","funcStr","addActionMethods","hashMethods","setHashMethods","onSinkSubscribe","$dirs","createDirectionalFiltersObject","addDefaultDir","sourceStreams","createDirectionalObservables","_source$","toInternal$","extendedHashMethodsObj","defaultHashMethods","onGarbageCollect","onReadyForGC","onDispose","onRender","onRenderAndAttachToParent","onRenderAndAttachToDom","onAttachChildToSelf","removeIsNil","filter","pick","time","callback","animateIn","domItem","animateInTween","animateOutTime","animateOut","animateOutTween","fadeOutObs","bindCallback","onFadeoutCompleted","$dir","I","onFadeoutObs","CI","onEmptyObs","PCI","gcData","PI","el$","setClass","animateOutClass","subscriber","fromEvent","target","take","disposeMethod","completeStream","t","setTimeout","onGarbageCollectRun","removeStream","unmount","container","query","node","prepend","item","insertBefore","firstChild","append","attachFunc","attachType","render","setAnimateIn","childRenderData","combineDomItems","getEl","renderDomItem","attachData","defaultToFn","defaultTo","extendedMethods","sendData","freeze","LifecyleObservables","observableStreams","dirInternal","dirParent","dirChild","P","C","PC","flip","merge","clone","obs$","filterStreams","propSatisfies","arrType","filterParent","filterChild","filterInternal","addfrom$","from$","relStr","addParentfrom$","addInternalfrom$","addChildfrom$","raw$","toParent$","toChild$","streamObj","parent","internal","child","endStream","o","isStopped","setCompleteStream","length","completeAll","BaseStreamsMixins","testFunc","sendRoutePayload","sendUIPayload","sendLifeStreamPayload","createLifeStreamPayload","cleanup","loopM","ViewStreamBroadcaster","broadcastFn","broadcaster","q","dblclick$","stream$","buffer","debounceTime","args","payloads","selector","event","querySelectorAll","addObservable","addDblClickEvt","id","prototype","arrFn","broadcastArr","broadcast","streamMixins","config","VERSION","ViewStream","BasicView","ChannelsBaseController","registerChannel","registerStream","createMainStreams","routeStream","uiStream","domStream","addKeyEvent","ChannelRoute","routeCount","navToStream$","onMapNext","info","initStream","firstLoadStream$","BehaviorSubject","getDataFromWindow","createPopStateStream","firstLoaded","routeNum","dist","addState","routeVal","pathname","windowData","sendRouteStream","changeWindowLoc","setWindowLocation","addHandler","handler","onpopstate","removeHandler","fromEventPattern","do","slashRe","paramsArr","split","spyneConfig","routeConfig","path","topLevelRoute","routes","route","createParamsObj","param","value","hasOwnProperty","push","finalObj","fromPairs","last","theArr1","getWindowLocation","isHash","contains","href","pullHashValRE","setHashVal","compose","head","match","isDeepLink","paramsObj","convertRouteToParams","history","pushState","ChannelUI","keyEventsLoaded","keyCodeArr","keyUps","filterKeys","indexOf","keyCode","keyPresses$","groupBy","mergeAll","repeat","onKeyPressed","loadKeyStream","registerKey","evt","onClick","mainAction","toUpperCase","getActionState","ChannelDOM","onSubscribeToDomEvents","onmousewheel","mouseWheel$","mw$","onSubscribeToWheelEvents","onscroll","scroll$","onSubscribeToScroll","scrollY","scrollYNegative","incrementNum","deltaY","routeInfo","isActive","isHomeBool","paramNum","mouseWheelDirNum","routeDistance","matches","DomTemplateRenderer","formatTemplate","templateData","strArr","getStringArray","strMatches","findTmplLoopsRE","mapTmplLoop","parseTmplLoopsRE","parseTheTmplLoop","findTmplLoopsPred","__","checkForMatches","addParams","finalArr","html","createRange","createContextualFragment","removeThis","replaceTags","p1","p2","p3","dataVal","defaultIsEmptyStr","swapParamsForTagsRE","subStr","elData","parseString","parseObject","loopObj","mapStringData","emptyRE","filterOutEmptyStrings","s","reject","fadein","fadeout","createFaderInlineText","isInBool","startZeroBool","initOpacityZero","opacity","currentOpacity","getComputedStyle","startAtZero","inlineCss","style","cssText","addEventListener","checker","animateInTime","hashId","viewClass","extendedSourcesHashMethods","addDefaultDirection","addDownInternalDir","channelFn","curry","onChannelMethodCall","hashSourceMethods","setSourceHashMethods","ViewClass","view","_rawSource$","getSourceStream","sendEventsDownStream","sendEventsDownStreamFn","checkIfElementAlreadyExists","elIsDomElement","elIsRendered","body","elIsReadyBool","allPass","postRender","deleted","hashSourceKeys","checkParentDispose","onRendered","onReadyToGC","onMapViewSource","takeWhile","notGCSTATE","initAutoMergeSourceStreams","updateSourceSubscription","filterOutNullData","checkIfDisposeOrFadeout","parent$","notGCCOMPLETE","renderAndAttachToParent","child$","tracer","finally","onChildCompleted","source","findName","finalDest","y","destination","onSubscribeToSourcesNext","onSubscribeToSourcesError","onSubscribeToSourcesComplete","uberSource$","autoSubscriber$","decrementOnObservableClosed","obsCount","incrementObservablesThatCloses","autoMergeSubject$","mergeMap","obsData","branchObservable$","autoClosesBool","rel","sendExtendedStreams","hashAction","openSpigot","isInternal","querySelector","getElem","parentElement","iter","parentEl","level","getParentEls","childView","addChildStream","addParentStream","renderViewAndAttachToDom","exchangeViewsWithChild","setAttachData","setAttachParentData","beforeAfterRender","afterRender","viewsStreamBroadcaster","broadcastEvents","theEl$","sendDownStream","directionArr","mapDirection","channel$","getChannel","channelName","of","LifestreamPayload","LOAD","RENDER","MOUNT","DISPOSE","UNMOUNT","GARBAGE_COLLECT","UPDATE","_data","DomItemSelectors","cxt","queryStr","cList","classList","elProps","createMethods","mapAddClass","add","mapRemoveClass","mapSetClass","mapInlineCss","addClass","mapToValue","removeClass","elArr","adder","requestAnimationFrame","activeEl","filterForActive","remover","mapTheActive","inline"],"mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B,+BAA+B;;;AAG/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iDAAiD;AAC1D,SAAS,6CAA6C;AACtD,YAAY,UAAU;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AA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","file":"spyne.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"ramda\"), require(\"rxjs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"spyne\", [\"ramda\", \"rxjs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"spyne\"] = factory(require(\"ramda\"), require(\"rxjs\"));\n\telse\n\t\troot[\"spyne\"] = factory(root[\"R\"], root[\"Rx\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 12982ae54ce89bbbf5d3","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"ramda\",\"commonjs2\":\"ramda\",\"amd\":\"ramda\",\"root\":\"R\"}\n// module id = 0\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"rxjs\",\"commonjs2\":\"rxjs\",\"amd\":\"rxjs\",\"root\":\"Rx\"}\n// module id = 1\n// module chunks = 0","const R = require('ramda');\nconst isIOS = () => {\n let userAgent = window.navigator.userAgent.toLowerCase();\n // let safari = /safari/.test(userAgent);\n let ios = /iphone|ipod|ipad/.test(userAgent);\n return ios === true;\n};\n\nconst closest = (array, num) => {\n let i = 0;\n let minDiff = 1000;\n let ans;\n for (i in array) {\n let m = Math.abs(num - array[i]);\n if (m < minDiff) {\n minDiff = m;\n ans = array[i];\n }\n }\n return ans;\n};\n\nconst convertDomStringMapToObj = (domMap) => {\n let obj = {};\n for (let d in domMap) {\n obj[d] = domMap[d];\n }\n return obj;\n};\n\n// const passPageData = R.pick(['params', 'routeId', 'data'], R.__);\n\nconst subscribeFn = {\n next: x => console.log(`next ${x}`),\n error: x => console.log(`error ${x}`),\n complete: x => console.log(`complete ${x}`)\n};\n\nconst Right = x => ({\n map: f => Right(f(x)),\n fold: (f, g) => g(x),\n inspect: () => `Right(${x})`\n\n});\n\nconst ifNilThenUpdate = (val, newVal) => {\n let isNil = R.isNil(val);\n return isNil ? newVal : val;\n};\n\nconst Left = x => ({\n map: f => Left(x),\n fold: (f, g) => f(x),\n inspect: () => `Left(${x})`\n});\n\nconst fromNullable = x => x !== null ? Right(x) : Left(null);\n\nconst findInObj = (obj, val, error = null) => {\n const found = obj[val];\n return found ? Right(found) : Left(error);\n};\nconst pullRouteInfo = () => {\n let str = pullHashAndSlashFromPath(window.location.hash);\n let routeId = pullMainRoute(str);\n let params = pullParams(str);\n return {routeId, params};\n};\n\n// ROUTE REGEX EXPRESSIONS\nconst removeSlashes = str => str.replace(/^(\\/)(.*)/g, '$2');\nconst routeRE = /^(\\/?)(\\w*)(\\/?)(.*)/g;\nconst pullHashAndSlashFromPath = (str) => str.replace(/^(#\\/?)(.*)/, '$2');\nconst pullSlashFromPath = (str) => str.replace(/^(\\/?)(.*)/, '$2');\nconst pullMainRoute = (str) => str.replace(routeRE, '$2');\nconst pullParams = (str) => str.replace(routeRE, '$4');\nconst pullTranslateX = str => str.replace(/^(matrix)(.*\\d*,)(.*\\d*,)(.*\\d*,)(.*\\d*,)(.*\\d*)(,.*)/, '$6');\nconst pullTranslateY = str => str.replace(/^(matrix)(.*\\d*,)(.*\\d*,)(.*\\d*,)(.*\\d*,)(.*\\d*,)(.*\\d)(.*)/, '$7');\nconst pullTranslateYFromHeader = str => str.replace(/^(transform: matrix)(.*\\d*,)(.*\\d*,)(.*\\d*,)(.*\\d*,)(.*\\d*)(\\).*;)/, '$6');\nexport {isIOS, pullRouteInfo, pullTranslateYFromHeader, pullSlashFromPath, pullHashAndSlashFromPath, closest, pullTranslateY, pullTranslateX, pullMainRoute, pullParams, Right, Left, fromNullable, findInObj, ifNilThenUpdate, removeSlashes, subscribeFn, convertDomStringMapToObj};\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/utils/frp-tools.js","import {registeredStreamNames} from './channels-config';\n// import {BaseCoreMixins} from '../utils/mixins/base-core-mixins';\n// import {BaseStreamsMixins} from '../utils/mixins/base-streams-mixins';\nconst Rx = require('rxjs');\nconst R = require('ramda');\nexport class ChannelsBase {\n constructor(props = {}) {\n this.addMixins();\n const defaultName = {name: 'observer'};\n let observer$ = new Rx.Subject();\n this.props = Object.assign({}, defaultName, props);\n this.observer$ = this.props['observer'] = observer$;\n this.streamsController = window.Spyne.channels;// getGlobalParam('streamsController');\n let dispatcherStream$ = this.streamsController.getStream('DISPATCHER');\n dispatcherStream$.subscribe((val) => this.onIncomingObservable(val));\n }\n setTrace(bool) {\n }\n\n get observer() {\n return this.observer$;\n }\n\n onIncomingObservable(obj) {\n let eqsName = R.equals(obj.name, this.props.name);\n let dataObj = obsVal => ({data: obj.data, mouse:obsVal});\n let onSuccess = (obj) => obj.observable\n .map(dataObj)\n .subscribe(this.onObserversCallback.bind(this));\n let onError = () => {};\n return eqsName === true ? onSuccess(obj) : onError();\n }\n\n onObserversCallback() {\n }\n\n getChannel(channel) {\n let isValidChannel = c => registeredStreamNames().includes(c);\n let error = c => console.warn(`channel name ${c} is not within ${registeredStreamNames}`);\n let startSubscribe = (c) => this.streamsController.getStream(c).observer;\n let fn = R.ifElse(isValidChannel, startSubscribe, error);\n return fn(channel);\n }\n\n addMixins() {\n // ==================================\n // BASE CORE DECORATORS\n // ==================================\n // let coreMixins = BaseCoreMixins();\n // ==================================\n // BASE STREAMS DECORATORS\n // ==================================\n // let streamsMixins = BaseStreamsMixins();\n // let testFunc = streamsMixins.testFunc;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/channels-base.js","// import Spyne from '../spyne';\n// const R = require('ramda');\nconst Rx = require('rxjs');\n\nlet registeredStreamNames = () => ({\n includes: () => window.Spyne !== undefined ? Array.from(window.Spyne.channels.map.keys()) : ['ROUTE', 'UI', 'DOM', 'DISPATCHER']\n\n});\n// getGlobalObj().channelsListArr;\nlet registeredSteps = ['LOAD', 'RENDER', 'MOUNT', 'UNMOUNT', 'DISPOSE', 'GARBAGE_COLLECT', 'UPDATE'];\nlet registeredLifeStreamTypes = ['parent', 'self', 'child', 'children', 'view'];\nlet registeredStreamTypes = ['Observable', 'BehaviorSubject', 'Subject', 'Observer', 'Subscriber', 'FromEventObservable'];\nlet registeredActions = ['subscribe', 'combineLatest'];\nlet getRxType = (obs) => obs().constructor.name;\n// let getObservableType = (obs) => obs.constructor.name;\nlet confirmObservable = (obs) => obs.subscribe !== undefined;\n// let pullMainRoute = (str) => str.replace(/^(\\/?)(.*)(\\/)(.*)/g, '$2');\n// ===========================================================================\n// ALL VALIDATIONS ADD THE BASE VALIDATIONS THROUGH CONCATENATION\n// ===========================================================================\nconst baseValidations = [\n {\n error: `need to match a valid name within ${registeredStreamTypes}`,\n predicate: payload => registeredStreamNames().includes(payload.name)\n },\n\n {\n error: `param 'observable' must contain a valid Rx.Observable`,\n // predicate: payload => registeredStreamTypes.includes(getObservableType(payload.observable))\n predicate: payload => confirmObservable(payload.observable)\n },\n {\n error: 'param action must be a registered action',\n predicate: payload => registeredActions.includes(payload.action)\n }\n\n];\n// ===========================================================================\n// THESE VALIDATIONS ARE CONCATENATED WHEN THE OBSERVABLE REFERS TO A VIEW\n// ===========================================================================\nconst viewInfoValidations = [\n {\n error: 'needs cid number',\n predicate: payload => typeof (payload.data.cid) === 'string'\n },\n {\n error: 'needs a viewName',\n predicate: payload => typeof (payload.data.viewName) === 'string'\n }\n];\n\n// ===========================================================================\n// NO SPECIFIC UI VALIDATIONS AT THIS TIME -- IT JUST ADD OTHERS\n// ===========================================================================\nconst uiValidations = function() {\n let uiValidations = [];\n return uiValidations.concat(baseValidations).concat(viewInfoValidations);\n};\n// ===========================================================================\n// NO SPECIFIC LIFESTREAM VALIDATIONS AT THIS TIME -- IT JUST ADD OTHERS\nlet lifeStreamValidations = [\n\n {\n error: `need to match a valid name within ${registeredStreamTypes}`,\n predicate: payload => registeredStreamNames().includes(payload.name)\n },\n\n {\n error: `needs one of the following step strings: ${registeredSteps}`,\n predicate: payload => registeredSteps.includes(payload.STEP)\n },\n {\n error: `type needs to one of the following: ${registeredLifeStreamTypes}`,\n predicate: payload => registeredLifeStreamTypes.includes(payload.type)\n },\n\n {\n error: 'viewId needs to be added ',\n predicate: payload => payload.viewId !== undefined\n }\n];\n\nconst stepValidations = function() {\n let stepValidations = [];\n return stepValidations.concat(lifeStreamValidations);\n};\n\nconst stepDisposeValidations = function() {\n let stepUpdateValidations = [\n {\n error: 'DISPOSE STEP requires a disposeItem param in the data object',\n predicate: payload => payload.STEP === 'DISPOSE' && payload.data.disposeItems !== undefined\n }\n ];\n return stepUpdateValidations.concat(lifeStreamValidations);\n};\n\nconst stepUpdateValidations = function() {\n let stepUpdateValidations = [\n {\n error: 'UPDATE STEP requires a data object ',\n predicate: payload => payload.STEP === 'UPDATE' && payload.data !== undefined\n }\n ];\n return stepUpdateValidations.concat(lifeStreamValidations);\n};\n// ===========================================================================\n// lifestreamValidations\n// ===========================================================================\nconst lifestreamValidations = function() {\n return lifeStreamValidations.concat(baseValidations).concat(viewInfoValidations);\n};\n// ===========================================================================\n// HERE IS THE ROUTE VALIDATIONS\n// ===========================================================================\nconst routeValidations = function() {\n let routeValidations = [\n /*\n *\n {\n error: `needs a valid route string within [${registeredRoutes}]`,\n predicate: payload => registeredRoutes.includes(pullMainRoute(payload.data.navigateTo))\n }\n *\n */\n\n ];\n return routeValidations.concat(baseValidations).concat(viewInfoValidations);\n};\n// ===========================================================================\n/*\n* THE IDEA OF StreamsConfig IS TO COMPLETELY GENERATE ALL APP STREAMS USING THIS OBJECT\n* THIS HAS NOT BEEN IMPLEMENTED -- MAY BE ADDED IN A FUTURE VERSION\n*/\n// ===========================================================================\nconst StreamsConfig = function() {\n let streamValidations = [\n {\n error: `param 'name' must be of a registered type`,\n predicate: payload => registeredStreamNames().includes(payload.name)\n },\n {\n error: `param 'observable' must contain a valid Rx.Observable`,\n predicate: payload => registeredStreamTypes.includes(getRxType(payload.observable))\n },\n {\n error: 'param action must be a registered action',\n predicate: payload => registeredActions.includes(payload.action)\n }\n\n ];\n\n return {\n streams: [\n {\n init: {\n name: 'DISPATCHER',\n observable: () => new Rx.Subject(),\n action: 'subscribe'\n },\n structure: {\n type: String,\n observable: Rx.Observable || Rx.Subject,\n action: String\n },\n validations: streamValidations\n },\n {\n init: {\n name: 'UBU',\n observable: () => new Rx.Subject(),\n action: 'subscribe'\n },\n structure: {\n type: String,\n observable: Rx.Observable || Rx.Subject,\n action: String\n },\n validations: streamValidations\n }\n ]\n };\n};\nexport {\n stepDisposeValidations, stepUpdateValidations, stepValidations, uiValidations, routeValidations, lifestreamValidations, registeredStreamNames, StreamsConfig\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/channels-config.js","import Validation from 'data.validation';\nimport { curry, curryN, reduce, length, always } from 'ramda';\nconst Success = Validation.Success;\nconst Failure = Validation.Failure;\nconst validate = curry((validations, thing) => {\n const initial = Success(curryN(length(validations), always(thing)));\n const run = (acc, v) =>\n acc.ap(v.predicate(thing) ? Success(thing) : Failure([v.error]));\n return reduce(run, initial, validations);\n});\nexport {validate};\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/utils/predicado.js","export function BaseCoreMixins() {\n return {\n createpropsMap: function() {\n let wm = new WeakMap();\n let objKey = {cid: this.props.cid};\n wm.set(objKey, this.props);\n return {\n key: objKey,\n weakMap: wm\n };\n },\n gc: function() {\n for (let m in this) {\n delete this[m];\n }\n delete this;\n },\n createId: function() {\n let num = Math.floor(Math.random(10000000) * 10000000);\n return `cid-${num}`;\n },\n setTraceFunc: function(debug) {\n return debug === true ? console.log : () => {\n };\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/utils/mixins/base-core-mixins.js","// import {BaseCoreMixins} from '../utils/mixins/base-core-mixins';\nimport {uiValidations, routeValidations, lifestreamValidations} from './channels-config';\nimport {validate} from '../utils/predicado';\nimport {gc} from '../utils/gc';\n// import {Right, Left, findInObj} from '../utils/frp-tools';\nimport {findInObj} from '../utils/frp-tools';\n// const Rx = require('rxjs');\n// const R = require('ramda');\nexport class ChannelsPayload {\n constructor(name, observable, data, action = 'subscribe', debug = false) {\n this.addMixins();\n this.options = {name, observable, data, action};\n this.getValidationChecks(name);\n }\n getValidationChecks(n) {\n let left = e => console.warn(e);\n let right = val => this.onRunValidations(val);\n let obj = {\n UI: uiValidations,\n ROUTE: routeValidations,\n LIFESTREAM: lifestreamValidations\n };\n return findInObj(obj, n, 'payload Needs a Valid Stream Name!')\n .fold(left, right);\n }\n onRunValidations(checks) {\n validate(checks(), this.options).fold(\n this.onError.bind(this),\n this.onSuccess.bind(this));\n }\n onPayloadValidated(p) {\n this.sendToDirectorStream(p);\n }\n sendToDirectorStream(payload) {\n let streamsController = window.Spyne.channels;// getGlobalParam('streamsController');\n let directorStream$ = streamsController.getStream('DISPATCHER');\n directorStream$.next(payload);\n this.gc();\n }\n onError(errors) {\n console.warn('payload failed due to:\\n' + errors.map(e => '* ' + e).join('\\n'));\n this.gc();\n }\n onSuccess(payload) {\n this.onPayloadValidated(payload);\n }\n addMixins() {\n // ==================================\n // BASE CORE MIXINS\n // ==================================\n // let coreMixins = BaseCoreMixins();\n this.gc = gc;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/channels-payload.js","// import {createElement} from '../utils/dom-methods';\nimport {BaseCoreMixins} from '../utils/mixins/base-core-mixins';\nimport { DomTemplateRenderer } from './dom-template-renderer';\n// import {DomTemplateRenderer} from './template-renderer';\n\nconst R = require('ramda');\n\nexport class DomItem {\n /**\n * @module DomItem\n *\n * @desc\n * This class is mostly used internally by the ViewStream object, but it can be also used to generate a lightweight dom element that contains no props or parameters.\n *\n * @constructor\n * @param {string} tagName the tagname for this dom element.\n * @param {object} attributes any domElement attribute (except for class )\n * @param {string|object} content string for text tags and json for templates\n * @param {tmpl} template\n */\n\n constructor(tagName = 'div', attributes = {}, content = undefined, template = undefined) {\n let isSimpleView = R.is(String, attributes);\n if (isSimpleView === true) {\n content = attributes;\n attributes = {};\n }\n this.props = new Map();\n this.setProp('fragment', document.createDocumentFragment());\n this.setProp('tagName', tagName);\n this.setProp('attrs', this.updateAttrs(attributes));\n this.setProp('content', content);\n this.setProp('tmpl', template);\n this.addMixins();\n }\n\n setProp(key, val) {\n this.props.set(key, val);\n }\n\n getProp(val) {\n return this.props.get(val);\n }\n\n get el() {\n return this.props.get('el');\n }\n\n setElAttrs(el, params) {\n let addAttributes = (val, key) => {\n let addToDataset = (val, key) => { el.dataset[key] = val; };\n if (key === 'dataset') {\n R.forEachObjIndexed(addToDataset, val);\n } else {\n el.setAttribute(key, val);\n }\n };\n this.getProp('attrs').forEach(addAttributes);\n return el;\n }\n\n updateAttrs(params, m) {\n let theMap = m !== undefined ? m : new Map();\n let addAttributes = (val, key) => theMap.set(key, val);\n R.mapObjIndexed(addAttributes, params);\n return theMap;\n }\n\n addTemplate(el) {\n let tmpl = this.getProp('tmpl');\n\n let addTmpl = (tmpl) => {\n let data = this.getProp('content');\n data = R.is(Object, data) ? data : {};\n\n let frag = new DomTemplateRenderer(tmpl, data).getTemplateNode();\n el.appendChild(frag);\n return el;\n };\n let doNothing = (el) => el;\n return tmpl !== undefined ? addTmpl(tmpl) : doNothing(el);\n }\n\n createElement(tagName = 'div') {\n return document.createElement(tagName);\n }\n\n addContent(el) {\n let text = (this.getProp('content'));\n let isText = R.is(String, text);\n if (isText === true) {\n let txt = document.createTextNode(text);\n el.appendChild(txt);\n }\n return el;\n }\n\n execute() {\n let el = R.pipe(\n this.createElement.bind(this),\n this.setElAttrs.bind(this),\n this.addTemplate.bind(this),\n this.addContent.bind(this)\n )(this.getProp('tagName'));\n // this.getProp('fragment').appendChild(el);\n this.props.set('el', el);\n }\n\n render() {\n this.execute();\n return this.getProp('el');\n }\n\n returnIfDefined(obj, val) {\n if (val !== undefined) {\n let isObj = typeof (val) === 'undefined';\n isObj === false ? obj[val] = val : obj[val] = Object.assign(obj[val], val);\n }\n }\n\n updateprops(val) {\n this.returnIfDefined(this.props, val);\n return this;\n }\n\n updatepropsAndRun(val) {\n this.updateprops(val);\n this.execute();\n return this.getProp('fragment');\n }\n\n unmount() {\n if (this.props !== undefined) {\n // console.log('dom item unmounting ', this, this.props);\n this.getProp('el').remove();\n this.props.clear();\n this.gc();\n }\n }\n\n updateTag(tagName = 'div') { this.updateprops(tagName); }\n updateAttributes(attrs = {}) { this.updateprops(attrs); }\n updateTemplate(tmpl) { this.updateprops(tmpl); }\n updateData(data = {}) { this.updateprops(data); }\n addTagAndRender(tagName = 'div') { this.updatepropsAndRun(tagName); }\n addAttrsibutesAndRender(attrs = {}) { this.updatepropsAndRun(attrs); }\n addTemplateAndRender(tmpl) { this.updatepropsAndRun(tmpl); }\n addDataAndRender(data = {}) { this.updatepropsAndRun(data); }\n // ==================================\n // BASE CORE MIXINS\n // ==================================\n addMixins() {\n let coreMixins = BaseCoreMixins();\n this.gc = coreMixins.gc.bind(this);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/views/dom-item.js","import {BaseCoreMixins} from '../utils/mixins/base-core-mixins';\nimport {DomItem} from './dom-item';\nimport {ifNilThenUpdate, convertDomStringMapToObj} from '../utils/frp-tools';\nimport {fadein, fadeout} from '../utils/animations';\nimport {LifecyleObservables} from '../utils/lifecycle-observables';\n\nconst Rx = require('rxjs');\nconst R = require('ramda');\n\nexport class ViewToDomMediator {\n constructor(sink$, viewProps = {}, cid = '', vsName = 'theName') {\n this.addMixins();\n this._state = 'INIT';\n this.cid = cid;\n this.vsName = vsName;\n this.defaults = {\n debug:false,\n extendedHashMethods: {}\n };\n this.options = Object.assign({}, this.defaults, viewProps);\n let createExtraStatesMethod = (arr) => {\n let [action, funcStr] = arr;\n this.options.extendedHashMethods[action] = (p) => this[funcStr](p);\n };\n this.addActionMethods().forEach(createExtraStatesMethod);\n this.options.hashMethods = this.setHashMethods(this.options.extendedHashMethods);\n this.sink$ = sink$;\n this.sink$\n .subscribe(this.onSinkSubscribe.bind(this));\n\n this.$dirs = LifecyleObservables.createDirectionalFiltersObject();\n this.addDefaultDir = LifecyleObservables.addDefaultDir;\n this.sourceStreams = LifecyleObservables.createDirectionalObservables();\n this._source$ = this.sourceStreams.toInternal$; // new Rx.Subject();\n }\n addActionMethods() {\n return [];\n }\n setHashMethods(extendedHashMethodsObj = {}) {\n let defaultHashMethods = {\n 'GARBAGE_COLLECT' : (p) => this.onGarbageCollect(p),\n 'READY_FOR_GC' : (p) => this.onReadyForGC(p),\n 'DISPOSE' : (p) => this.onDispose(p),\n 'RENDER' : (p) => this.onRender(p),\n 'RENDER_AND_ATTACH_TO_PARENT' : (p) => this.onRenderAndAttachToParent(p),\n 'RENDER_AND_ATTACH_TO_DOM' : (p) => this.onRenderAndAttachToDom(p),\n 'ATTACH_CHILD_TO_SELF' : (p) => this.onAttachChildToSelf(p)\n };\n return Object.assign({}, defaultHashMethods, extendedHashMethodsObj);\n }\n\n createDomItem() {\n this.props = this.props !== undefined ? this.props : {};\n let removeIsNil = (val) => val !== undefined;\n let attrs = R.filter(removeIsNil, R.pick(['id', 'className'], this.props));\n return new DomItem(this.props.tagName, attrs, this.props.data, this.props.tmpl);\n }\n\n onDisposeCompleted(d) {\n // console.log('bv self disposed after animateOut ', d, this);\n }\n\n animateInTween(el, time) {\n fadein(el, time);\n }\n\n animateOutTween(el, time, callback) {\n // console.log('anim out ', {el, time, callback});\n fadeout(el, time, callback);\n }\n\n setAnimateIn(d) {\n if (d.animateIn === true) {\n let el = d.el !== undefined ? d.el : this.domItem.el;\n this.animateInTween(el, d.animateOutTime);\n }\n }\n\n disposeMethodOld(d) {\n let animateOut = (d, callback) => {\n let el = d.el.el !== undefined ? d.el.el : d.el; // DOM ITEMS HAVE THEIR EL ITEMS NESTED\n this.animateOutTween(el, d.animateOutTime, callback);\n };\n\n let fadeOutObs = Rx.Observable.bindCallback(animateOut);\n let onFadeoutCompleted = (e) => {\n // console.log('fade out completed ', e, d);\n this._source$.next({action:'READY_FOR_GC', $dir:this.$dirs.I});\n };\n\n let onFadeoutObs = (d) => {\n fadeOutObs(d)\n .subscribe(onFadeoutCompleted);\n return {action:'DISPOSING', $dir:this.$dirs.CI};\n };\n let onEmptyObs = () => ({action:'DISPOSE_AND_READY_FOR_GC', $dir:this.$dirs.PCI});\n let fn = d.animateOut === true ? onFadeoutObs : onEmptyObs;\n return fn(d);\n }\n\n disposeMethod(d) {\n let onFadeoutObs = () => {\n let el = d.el.el !== undefined ? d.el.el : d.el; // DOM ITEMS HAVE THEIR EL ITEMS NESTED\n const gcData = {action:'READY_FOR_GC', $dir:this.$dirs.PI, el};\n\n d.el$.setClass(d.animateOutClass);\n // console.log('DISPOSE FADE OUT ', el, this.$dirs, d.animateOutClass);\n\n const subscriber = () => {\n // console.log('MEDIATOR FADEOUT COMPLETE ', this.cid, gcData, this.animateOutClass, d);\n this._source$.next(gcData);\n };\n\n Rx.Observable.fromEvent(el, 'transitionend')\n .filter(e => e.target === el)\n .take(1)\n .subscribe(subscriber);\n };\n let onEmptyObs = () => ({action:'DISPOSE_AND_READY_FOR_GC', $dir:this.$dirs.PCI});\n if (d.animateOutClass !== undefined) {\n onFadeoutObs();\n return {action:'DISPOSING', $dir:this.$dirs.CI};\n } else {\n return onEmptyObs();\n }\n }\n\n onDispose(d) {\n return this.disposeMethod(d);\n }\n\n removeStream() {\n // this.sourceStreams.completeAll();\n if (this.sourceStreams !== undefined) {\n this.sourceStreams.completeStream(['internal', 'child']);\n }\n // this._source$.complete();\n // this._source$.isStopped = true;\n }\n\n onGarbageCollect9(p) {\n // console.log('MEDIATOR onGarbageCollect ', this.cid, this.vsName, p);\n const t = this.vsName === 'PageChildBox' ? 1000 : 0;\n window.setTimeout(this.onGarbageCollectRun.bind(this), t);\n }\n\n onReadyForGC(p) {\n this.removeStream();\n }\n\n onGarbageCollect(p) {\n // console.log('MEDIATOR onGarbageCollect ', this.cid, this.vsName, p);\n if (this.sourceStreams !== undefined) {\n this.sourceStreams.completeStream(['parent']);\n }\n\n this.domItem.unmount();\n delete this;\n }\n\n getSourceStream() {\n return this._source$;\n }\n\n combineDomItems(d) {\n let container = R.isNil(d.query) ? d.node : d.query;\n let prepend = (node, item) => node.insertBefore(item, node.firstChild);\n let append = (node, item) => node.appendChild(item);\n // DETERMINE WHETHER TO USE APPEND OR PREPEND\n // ON CONNECTING DOM ITEMS TO EACH OTHER\n // this.domItemEl = this.domItem.render();\n let attachFunc = d.attachType === 'appendChild' ? append : prepend;\n // d.node = R.isNil(d.query) ? d.node : d.query;\n attachFunc(container, this.domItem.render());\n this.setAnimateIn(d);\n }\n\n onAttachChildToSelf(p) {\n let data = p.childRenderData;\n this.combineDomItems(data);\n return {\n action: 'CHILD_ATTACHED',\n $dir: this.$dirs.PI\n };\n }\n\n onRenderAndAttachToParent(d) {\n this.onRender(d);\n this.combineDomItems(d);\n return {\n action: 'RENDERED_AND_ATTACHED_TO_PARENT',\n el: this.domItem.el,\n $dir: this.$dirs.PI\n };\n }\n\n renderDomItem(d) {\n this.domItem = new DomItem(...d);\n return this.domItem;\n }\n\n onRender(d) {\n let getEl = (data) => this.renderDomItem(data);\n let el = getEl(R.props(['tagName', 'domAttributes', 'data', 'tmpl'], d));\n return {\n action: 'RENDERED',\n el,\n $dir: this.$dirs.I\n };\n }\n\n extendedMethods(data) {\n }\n\n onRenderAndAttachToDom(d) {\n let getEl = (data) => this.renderDomItem(data);\n // let getEl = (data) => new DomItem(...data);\n d.attachData['el'] = getEl(R.props(['tagName', 'domAttributes', 'data', 'tmpl'], d));\n this.combineDomItems(d.attachData);\n return {\n action: 'RENDERED_AND_ATTACHED_TO_DOM',\n el: d.attachData['el'].el,\n $dir: this.$dirs.CI\n };\n }\n\n onSinkSubscribe(payload) {\n let action = payload.action;\n let defaultToFn = R.defaultTo((data) => this.extendedMethods(data));\n let fn = defaultToFn(this.options.hashMethods[action]);\n // console.log('MEDIATOR onSinkSubscribe before ', this.cid, action, payload);\n let data = fn(payload);\n // data = this.addDefaultDir(data);\n // console.log('add default dir ', data);\n let sendData = (d) => this._source$.next(d);\n if (data !== undefined) {\n // console.log('MEDIATOR onSinkSubscribe ', this.cid, data, payload);\n sendData(Object.freeze(data));\n }\n }\n\n addMixins() {\n // ==================================\n // BASE CORE MIXINS\n // ==================================\n let coreMixins = BaseCoreMixins();\n this.createId = coreMixins.createId;\n this.createpropsMap = coreMixins.createpropsMap;\n this.convertDomStringMapToObj = convertDomStringMapToObj;\n this.ifNilThenUpdate = ifNilThenUpdate;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/views/view-to-dom-mediator.js","const Rx = require('rxjs');\nconst R = require('ramda');\nexport class LifecyleObservables {\n constructor(props) {\n this.props.observableStreams = LifecyleObservables.createDirectionalObservables();\n }\n\n static createDirectionalFiltersObject() {\n const dirInternal = 'internal';\n const dirParent = 'parent';\n const dirChild = 'child';\n return {\n P: [dirParent],\n C: [dirChild],\n PCI: [dirParent, dirInternal, dirChild],\n CI: [dirChild, dirInternal],\n PI: [dirParent, dirInternal],\n PC: [dirParent, dirChild]\n };\n }\n\n static addDefaultDir(obj) {\n const defaults = R.flip(R.merge);\n return defaults({$dir:['internal']}, R.clone(obj));\n }\n\n static addDownInternalDir(obj, arr = ['internal', 'down']) {\n const defaults = R.flip(R.merge);\n return defaults(R.clone(obj), {$dir:arr});\n }\n\n static addChildAndInternalDir(obj, arr = ['child', 'down']) {\n const defaults = R.flip(R.merge);\n return defaults(R.clone(obj), {$dir:arr});\n }\n\n static mapToDefaultDir(p) {\n return this.addDefaultDir(p);\n }\n\n static createDirectionalObservables(obs$ = new Rx.Subject()) {\n const filterStreams = val => R.propSatisfies(arrType => arrType.includes(val), '$dir');\n const filterParent = filterStreams('parent');\n const filterChild = filterStreams('child');\n const filterInternal = filterStreams('internal');\n\n const addfrom$ = relStr => R.merge({from$:relStr});\n const addParentfrom$ = addfrom$('child');\n const addInternalfrom$ = addfrom$('internal');\n const addChildfrom$ = addfrom$('parent');\n\n const raw$ = obs$\n .filter((payload) => payload !== undefined && payload.action !== undefined);\n // .filter(p => p.$dir !== undefined)\n // .do(p => console.log('payload : ', p.$dir, p));\n const toInternal$ = obs$.filter(filterInternal).map(addInternalfrom$);\n const toParent$ = obs$.filter(filterParent).map(addParentfrom$);\n const toChild$ = obs$.filter(filterChild).map(addChildfrom$);\n // const upObs$ = obs$.do(p => console.log('UP: ', p));\n const streamObj = {\n parent: toParent$,\n internal: toInternal$,\n child: toChild$\n };\n\n const completeStream = (arr = []) => {\n const endStream = o => {\n o.complete();\n o.isStopped = true;\n };\n\n const setCompleteStream = (str) => {\n if (streamObj[str] !== undefined) {\n let obs$ = streamObj[str];\n endStream(obs$);\n }\n };\n\n if (arr !== undefined && arr.length >= 1) {\n arr.forEach(setCompleteStream);\n }\n };\n const completeAll = () => {\n let completeStream = o => {\n o.complete();\n o.isStopped = true;\n };\n R.forEach(completeStream, [raw$, toInternal$, toParent$, toChild$]);\n };\n\n return {\n raw$, toInternal$, toParent$, toChild$, completeAll, completeStream\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/utils/lifecycle-observables.js","import {ChannelsPayload} from '../../channels/channels-payload';\nimport {LifestreamPayload} from '../../channels/lifestream-payload';\nexport function BaseStreamsMixins() {\n return {\n testFunc: function(str) {\n console.log('stream mixin is ', str);\n },\n sendRoutePayload: function(obs, data) {\n return new ChannelsPayload('ROUTE', obs, data, 'subscribe');\n },\n sendUIPayload: function(obs, data) {\n return new ChannelsPayload('UI', obs, data, 'subscribe');\n },\n sendLifeStreamPayload: function(obs, data) {\n return new ChannelsPayload('LIFESTREAM', obs, data, 'subscribe');\n },\n\n createLifeStreamPayload: function(STEP, data = {}, type = 'parent') {\n let viewId = `${this.props.name}: ${this.props.cid}`;\n return new LifestreamPayload('LIFESTREAM', STEP, type, viewId, data).data;\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/utils/mixins/base-streams-mixins.js","const R = require('ramda');\nexport function gc() {\n let cleanup = () => {\n let loopM = m => void 0;\n R.forEach(loopM, this);\n };\n setTimeout(cleanup, 1);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/utils/gc.js","import {BaseStreamsMixins} from '../utils/mixins/base-streams-mixins';\nimport {ifNilThenUpdate, convertDomStringMapToObj} from '../utils/frp-tools';\nconst Rx = require('rxjs');\n// const R = require('ramda');\n\nexport class ViewStreamBroadcaster {\n constructor(props, broadcastFn) {\n this.addMixins();\n this.props = props;\n this.broadcastFn = broadcastFn;\n this.broadcaster(this.broadcastFn);\n }\n\n addDblClickEvt(q) {\n let dblclick$ = Rx.Observable.fromEvent(q, 'click');\n // console.log('ADDING DBL CLICK ', q);\n let stream$ = dblclick$\n .buffer(dblclick$.debounceTime(250))\n .filter(p => p.length === 2)\n .map(p => p[0]);\n return stream$;\n }\n // ==================================================================\n // BROADCAST BUTTON EVENTS\n // ==================================================================\n broadcast(args) {\n // payloads to send, based on either the array or the elements dataMap\n let payloads = {\n 'UI' : this.sendUIPayload,\n 'ROUTE' : this.sendRoutePayload\n };\n // spread operator to select variables from arrays\n let [selector, event, channel, data] = args;\n // btn query\n // let query = this.props.el.querySelectorAll(selector);\n let query = this.props.el.querySelectorAll(selector);\n let addObservable = (q) => {\n // the btn observable\n let observable = event !== 'dblClick' ? Rx.Observable.fromEvent(q, event) : this.addDblClickEvt(q);\n // select channel and data values from either the array or the element's dom Map\n channel = ifNilThenUpdate(channel, q.dataset.channel);\n data = convertDomStringMapToObj(q.dataset);\n // payload needs cid# to pass verification\n data['cid'] = this.props.id;\n data['viewName'] = this.props.name;\n data['event'] = event;\n data['el'] = q;\n // select the correct payload\n let payload = channel !== undefined ? payloads[channel] : payloads['UI'];\n // run payload\n payload(observable, data);\n };\n\n if (query === undefined || query.length <= 0) {\n query = this.props.el;\n addObservable(query, event);\n } else {\n query.forEach = Array.prototype.forEach;\n query.forEach(addObservable);\n }\n }\n\n broadcaster(arrFn) {\n let broadcastArr = arrFn();\n broadcastArr.forEach(args => this.broadcast(args));\n }\n // =================================================================\n addMixins() {\n // ==================================\n // BASE STREAM MIXINS\n // ==================================\n let streamMixins = BaseStreamsMixins();\n this.sendUIPayload = streamMixins.sendUIPayload;\n this.sendRoutePayload = streamMixins.sendRoutePayload;\n this.createLifeStreamPayload = streamMixins.createLifeStreamPayload;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/views/view-stream-broadcaster.js","import {ChannelsBaseController} from './channels/channels-base-controller';\nimport {DomItem} from './views/dom-item';\nimport {ViewToDomMediator} from './views/view-to-dom-mediator';\nimport {ViewStream} from './views/view-stream';\nimport {ViewStreamBroadcaster} from './views/view-stream-broadcaster';\nimport {ChannelsPayload} from './channels/channels-payload';\nimport {ChannelsBase} from './channels/channels-base';\n\nclass Spyne {\n constructor(config) {\n this.channels = new ChannelsBaseController();\n this.VERSION = '0.4.14-developement';\n this.ViewStream = ViewStream;\n this.BasicView = ViewToDomMediator;\n this.DomItem = DomItem;\n this.ViewStreamBroadcaster = ViewStreamBroadcaster;\n this.ChannelsPayload = ChannelsPayload;\n this.ChannelsBaseController = ChannelsBaseController;\n this.ChannelsBase = ChannelsBase;\n window.Spyne = this;\n if (config !== undefined) {\n window.Spyne['config'] = config;\n }\n this.channels.init();\n this.registerChannel = (str, val) => this.channels.registerStream(str, val);\n\n // window.Spyne.channels.init();\n }\n static registerChannel(str, val) {\n if (window.Spyne === undefined) {\n console.warn('Spyne has not been initialized');\n } else {\n return window.Spyne.channels.registerStream(str, val);\n }\n }\n}\n\n// let Spyne = {ViewToDomMediator, ChannelsBase, ChannelsBaseController, ChannelsPayload, DomItem, ViewStream, ViewStreamBroadcaster, registerChannel};\nwindow['Spyne'] = Spyne;\nexport {ViewToDomMediator, ChannelsBase, ChannelsBaseController, ChannelsPayload, DomItem, ViewStream, ViewStreamBroadcaster, Spyne};\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/spyne.js","// import {BaseCoreMixins} from '../utils/mixins/base-core-mixins';\n// import {BaseStreamsMixins} from '../utils/mixins/base-streams-mixins';\nimport {ChannelRoute} from './channel-route';\nimport {ChannelUI} from './channel-ui';\nimport {ChannelDOM} from './channel-dom';\nimport {validate} from '../utils/predicado';\nconst Rx = require('rxjs');\n// const R = require('ramda');\n\nexport class ChannelsBaseController {\n constructor(obs$) {\n this.addMixins();\n this.map = new Map();\n // console.log('RX IS ', Rx.Subject);\n this.map.set('DISPATCHER', new Rx.Subject());\n }\n\n init() {\n this.createMainStreams();\n }\n\n createObserver(obj) {\n // RIGHT NOW THIS CREATES THE DISPATCHER STREAM\n validate(obj.validations, obj.init);\n this.map.set(obj.init.name, obj.init.observable());\n }\n\n createMainStreams() {\n this.routeStream = new ChannelRoute();\n this.map.set('ROUTE', this.routeStream);\n\n this.uiStream = new ChannelUI();\n this.map.set('UI', this.uiStream);\n\n this.domStream = new ChannelDOM();\n this.map.set('DOM', this.domStream);\n }\n addKeyEvent(key) {\n this.map.get('UI').addKeyEvent(key);\n }\n registerStream(name, val) {\n this.map.set(name, val);\n }\n\n getStream(name) {\n return this.map.get(name);\n }\n\n addMixins() {\n // ==================================\n // BASE CORE DECORATORS\n // ==================================\n // let coreMixins = BaseCoreMixins();\n // ==================================\n // BASE STREAMS DECORATORS\n // ==================================\n // let streamsMixins = BaseStreamsMixins();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/channels-base-controller.js","// import {pullSlashFromPath, removeSlashes, pullMainRoute, pullParams} from '../utils/frp-tools';\n// import {pullSlashFromPath} from '../utils/frp-tools';\nimport {ChannelsBase} from '../channels/channels-base';\n\nconst Rx = require('rxjs');\nconst R = require('ramda');\n\nexport class ChannelRoute extends ChannelsBase {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.props.name = 'ROUTE';\n\t\tthis.routeCount = 0;\n\t\t// this.popupStream$ = this.createPopStateStream();\n\t\tthis.navToStream$ = new Rx.Subject();\n\t\t// this.currentRoute = '';\n\t\tthis.observer$ = this.navToStream$.map(info => this.onMapNext(info));\n\t\tthis.initStream();\n\t}\n\n\tinitStream() {\n\t\tthis.firstLoadStream$ = new Rx.BehaviorSubject(\n\t\t\t\t{data: this.getDataFromWindow(), action: 'CHANNEL_ROUTE_CHANGE_EVENT'});\n\t\tthis.createPopStateStream();\n\n\t\tthis.observer$ = Rx.Observable.merge(this.firstLoadStream$,\n\t\t\t\tthis.navToStream$);\n\t}\n\n\tonMapNext(data, firstLoaded = false) {\n\t\tdata['action'] = 'CHANNEL_ROUTE_CHANGE_EVENT';\n\t\treturn data;\n\t}\n\n\tmapRouteData(routeNum, dist) {\n\t}\n\n\tgoToRoute(n, d) {\n\t}\n\n\tonObserversCallback(payload) {\n\t\tlet obj = this.addState(payload.data);\n\t\t// obj['data'] = payload.data;\n\t\tlet routeVal = payload.data.routeVal !== undefined\n\t\t\t\t? payload.data.routeVal\n\t\t\t\t: window.location.pathname;\n\t\tlet windowData = this.getDataFromWindow(routeVal);\n\t\tobj['data'] = Object.assign(windowData, payload.data);\n\t\t// console.log('observer callback ', data);\n\t\tthis.sendRouteStream(Object.freeze(obj));\n\t}\n\n\taddState(d = {}) {\n\t\tlet data = Object.assign({}, d);// fn(payload.data);\n\t\tdata['action'] = 'CHANNEL_ROUTE_CHANGE_EVENT';\n\t\treturn data;\n\t}\n\n\tsendRouteStream(data, changeWindowLoc = true) {\n\t\tif (changeWindowLoc === true) {\n\t\t\tthis.setWindowLocation(data.routeVal);\n\t\t}\n\t\tconsole.log('ROUTE STREAM SEND ', data);\n\t\tthis.navToStream$.next(Object.freeze(data));\n\t}\n\n\tcreatePopStateStream() {\n\t\tlet addHandler = function(handler) {\n\t\t\twindow.onpopstate = handler;\n\t\t};\n\t\tlet removeHandler = function() {\n\t\t\twindow.onpopstate = function() {};\n\t\t};\n\t\tconsole.log('create popsate event from Event pattern', addHandler);\n\t\treturn Rx.Observable.fromEventPattern(addHandler, removeHandler).\n\t\t\t\tdo((p) => console.log('popstate event from router1 ', p)).\n\t\t\t\tmap((p) => ({\n\t\t\t\t\tevent: p,\n\t\t\t\t\taction: 'CHANNEL_ROUTE_CHANGE_EVENT',\n\t\t\t\t\tdata: this.getDataFromWindow(p),\n\t\t\t\t})).\n\t\t\t\tsubscribe((p) => {\n\t\t\t\t\tconsole.log('subscribe is ', p);\n\t\t\t\t\tthis.sendRouteStream(p, false);\n\t\t\t\t\t// this.sendRouteStream(this.addState(d), false);\n\t\t\t\t});\n\t}\n\n\tgetDataFromLocation() {\n\t\t// console.log('pop up action get from location ', this.getDataFromWindow(), p);\n\t\treturn undefined;\n\t}\n\n\tconvertRouteToParams(str) {\n\t\tconst slashRe = /^([\\/])?(.*)$/;\n\t\tlet paramsArr = str.replace(slashRe, '$2').split('/');\n\t\tlet obj = {};\n\t\tlet arr = [];\n\t\tlet spyneConfig = window.Spyne.config ? window.Spyne.config : {};\n\t\tlet routeConfig = R.path(['channels', 'ROUTE'], spyneConfig);\n\t\tif (routeConfig === undefined) {\n\t\t\treturn {};\n\t\t}\n\t\tlet topLevelRoute = routeConfig.routes.route;\n\n\t\tlet createParamsObj = (str) => {\n\t\t\tlet param = topLevelRoute.param;\n\t\t\tlet value = topLevelRoute.hasOwnProperty('map')\n\t\t\t\t\t? topLevelRoute.map[str]\n\t\t\t\t\t: str;\n\t\t\tif (typeof (value) === 'object') {\n\t\t\t\ttopLevelRoute = value.route;\n\t\t\t\tvalue = value.map;\n\t\t\t}\n\t\t\tconsole.log('new create param ', param, value);\n\t\t\tif (value !== undefined) {\n\t\t\t\tarr.push([param, value]);\n\t\t\t}\n\t\t\treturn param;\n\t\t};\n\t\tparamsArr.forEach(createParamsObj);\n\t\tlet finalObj = R.fromPairs(arr);\n\t\tfinalObj['routedParamsArr'] = R.keys(finalObj);\n\t\tfinalObj['routedParam'] = R.last(arr)[0];\n\t\tconsole.log('new param arr ', str, paramsArr);\n\t\twindow.theArr1 = arr;\n\t\treturn finalObj;\n\t}\n\n\tgetDataFromWindow(path = window.location.pathname) {\n\t\tlet str = this.getWindowLocation();\n\t\tlet routeVal = str;\n\t\tlet isHash = R.contains('#', window.location.href);\n\t\tlet pullHashValRE = /(\\w+)/;\n\t\tlet setHashVal = x => {\n\t\t\tx['hashValue'] = R.compose(R.head, R.match(pullHashValRE))(\n\t\t\t\t\twindow.location.hash);\n\t\t};\n\t\tconst location = window.location;\n\t\tconst routeCount = this.routeCount;\n\t\tconst isDeepLink = this.routeCount === 0;\n\t\tconst paramsObj = this.convertRouteToParams(path);\n\t\tconsole.log('new params obj ', paramsObj);\n\t\tlet obj = {routeVal, isHash, location, routeCount, isDeepLink};\n\t\tobj = Object.assign(paramsObj, obj);\n\t\tthis.routeCount++;\n\t\tif (isHash === true) {\n\t\t\tsetHashVal(obj);\n\t\t}\n\t\treturn obj;\n\t}\n\n\tsetWindowLocation(val) {\n\t\twindow.history.pushState({}, '', val);\n\t}\n\n\tgetWindowLocation() {\n\t\treturn window.location.pathname; // pullHashAndSlashFromPath(window.location.hash);\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/channel-route.js","import {ChannelsBase} from '../channels/channels-base';\nconst R = require('ramda');\nconst Rx = require('rxjs');\n\nexport class ChannelUI extends ChannelsBase {\n constructor() {\n super();\n this.props.name = 'UI';\n this.keyEventsLoaded = false;\n this.keyCodeArr = [];\n // this.addKeyEvent(13);\n }\n loadKeyStream() {\n let keyUps = Rx.Observable.fromEvent(document, 'keyup');\n let filterKeys = e => this.keyCodeArr.indexOf(e.keyCode) >= 0;\n this.keyPresses$ = keyUps\n .groupBy(e => e.keyCode)\n .mergeAll()\n .filter(filterKeys)\n .repeat()\n .subscribe(this.onKeyPressed.bind(this));\n }\n addKeyEvent(num) {\n if (this.keyEventsLoaded === false) {\n this.loadKeyStream();\n }\n this.keyEventsLoaded = true;\n this.registerKey(num);\n }\n registerKey(c) {\n this.keyCodeArr.push(c);\n }\n onKeyPressed(evt) {\n console.log('key is ', evt);\n }\n onIncomingObservable(obj) {\n let eqsName = R.equals(obj.name, this.props.name);\n let dataObj = obsVal => ({data: obj.data, mouse:obsVal});\n let onSuccess = (obj) => obj.observable\n .map(dataObj)\n .subscribe(this.onClick.bind(this));\n let onError = () => {};\n return eqsName === true ? onSuccess(obj) : onError();\n }\n getActionState(val) {\n let mainAction = 'UI_EVENT';\n return val.mouse.type !== undefined ? `${mainAction}_${String(val.mouse.type).toUpperCase()}` : mainAction;\n }\n\n onClick(val) {\n val['action'] = this.getActionState(val);\n // console.log('btn val ', val);\n this.observer$.next(val);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/channel-ui.js","// const R = require('ramda');\nimport {ChannelsBase} from '../channels/channels-base';\nimport {pullRouteInfo} from '../utils/frp-tools';\nconst Rx = require('rxjs');\n\nexport class ChannelDOM extends ChannelsBase {\n constructor() {\n super();\n this.observer$ = new Rx.Subject();\n Rx.Observable.fromEvent(window, 'resize')\n .debounceTime(200)\n .subscribe((p) => this.onSubscribeToDomEvents(p));\n this.props.name = 'DOM';\n }\n addMouseWheel() {\n let addHandler = (handler) => { window.onmousewheel = handler; };\n let removeHandler = () => { window.onmousewheel = () => {}; };\n // let oneSecInt = Rx.Observable.interval(1000);\n let mouseWheel$ = Rx.Observable.fromEventPattern(addHandler, removeHandler)\n .debounceTime(150);\n window.mw$ = mouseWheel$;\n mouseWheel$.subscribe((p) => this.onSubscribeToWheelEvents(p));\n }\n addScroll() {\n let addHandler = (handler) => { window.onscroll = handler; };\n let removeHandler = () => { window.onscroll = () => {}; };\n let scroll$ = Rx.Observable.fromEventPattern(addHandler, removeHandler);\n scroll$.subscribe((p) => this.onSubscribeToScroll(p));\n }\n onSubscribeToScroll() {\n let scrollY = window.scrollY;\n let scrollYNegative = scrollY * -1;\n let action = 'SCROLL_EVENT';\n let data = {\n scrollY,\n scrollYNegative,\n action\n };\n this.observer$.next(Object.freeze(data));\n }\n /*\n * Media queries\n *\n addMediqQueries() {\n this.portraitPhoneQueryStr = '(max-width: 414px) and (min-width: 320px) and (orientation: portrait)';\n let mqlPortraitPhone = window.matchMedia(this.portraitPhoneQueryStr);\n let handlers = (q) => ({\n addHandler: (handler) => q.onchange = handler,\n removeHandler: (handler) => q.onchange = () => {}\n });\n let portraitPhoneHandler = new handlers(mqlPortraitPhone);\n let mqlObserver = new Rx.Observable.fromEventPattern(portraitPhoneHandler.addHandler, portraitPhoneHandler.removeHandler)\n .subscribe((p) => this.onSubscribeToMediqQueries(p));\n }\n */\n onSubscribeToWheelEvents(p) {\n let incrementNum = p.deltaY >= 0 ? 1 : -1;\n let routeInfo = pullRouteInfo();\n let isActive = routeInfo.params >= 1;\n let isHomeBool = routeInfo.routeId === '';\n let paramNum = routeInfo.params;\n let routeId = routeInfo.routeId;\n let data = {\n mouseWheelDirNum:incrementNum,\n action: 'MOUSE_WHEEL_EVENT',\n cid: '000',\n viewName: this.constructor.name,\n routeDistance: 0,\n routeId,\n isHomeBool,\n paramNum,\n isActive\n };\n this.observer$.next(Object.freeze(data));\n }\n onSubscribeToMediqQueries(p) {\n // let isPortraitPhone = p.media === this.portraitPhoneQueryStr;\n let data = {\n action: 'MEDIA_QUERY_EVENT',\n type: 'phonePortrait',\n matches: p.matches\n };\n this.observer$.next(data);\n }\n onSubscribeToDomEvents(p) {\n let data = {\n action: 'DOM_RESIZE_EVENT',\n data: p\n };\n this.observer$.next(data);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/channel-dom.js","// Copyright (c) 2013-2014 Quildreen Motta <quildreen@gmail.com>\n//\n// Permission is hereby granted, free of charge, to any person\n// obtaining a copy of this software and associated documentation files\n// (the \"Software\"), to deal in the Software without restriction,\n// including without limitation the rights to use, copy, modify, merge,\n// publish, distribute, sublicense, and/or sell copies of the Software,\n// and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = require('./validation')\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/data.validation/lib/index.js\n// module id = 19\n// module chunks = 0","// Copyright (c) 2013-2014 Quildreen Motta <quildreen@gmail.com>\n//\n// Permission is hereby granted, free of charge, to any person\n// obtaining a copy of this software and associated documentation files\n// (the \"Software\"), to deal in the Software without restriction,\n// including without limitation the rights to use, copy, modify, merge,\n// publish, distribute, sublicense, and/or sell copies of the Software,\n// and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/**\n * @module lib/validation\n */\nmodule.exports = Validation\n\n// -- Aliases ----------------------------------------------------------\nvar clone = Object.create\nvar unimplemented = function(){ throw new Error('Not implemented.') }\nvar noop = function(){ return this }\n\n\n// -- Implementation ---------------------------------------------------\n\n/**\n * The `Validation[α, β]` is a disjunction that's more appropriate for\n * validating inputs, or any use case where you want to aggregate failures. Not\n * only does the `Validation` provide a better terminology for working with\n * such cases (`Failure` and `Success` versus `Failure` and `Success`), it also\n * allows one to easily aggregate failures and successes as an Applicative\n * Functor.\n *\n * @class\n * @summary\n * Validation[α, β] <: Applicative[β]\n * , Functor[β]\n * , Show\n * , Eq\n */\nfunction Validation() { }\n\nFailure.prototype = clone(Validation.prototype)\nfunction Failure(a) {\n this.value = a\n}\n\nSuccess.prototype = clone(Validation.prototype)\nfunction Success(a) {\n this.value = a\n}\n\n// -- Constructors -----------------------------------------------------\n\n/**\n * Constructs a new `Validation[α, β]` structure holding a `Failure` value.\n *\n * @summary a → Validation[α, β]\n */\nValidation.Failure = function(a) {\n return new Failure(a)\n}\nValidation.prototype.Failure = Validation.Failure\n\n/**\n * Constructs a new `Etiher[α, β]` structure holding a `Success` value.\n *\n * @summary β → Validation[α, β]\n */\nValidation.Success = function(a) {\n return new Success(a)\n}\nValidation.prototype.Success = Validation.Success\n\n\n// -- Conversions ------------------------------------------------------\n\n/**\n * Constructs a new `Validation[α, β]` structure from a nullable type.\n *\n * Takes the `Failure` case if the value is `null` or `undefined`. Takes the\n * `Success` case otherwise.\n *\n * @summary α → Validation[α, α]\n */\nValidation.fromNullable = function(a) {\n return a != null? new Success(a)\n : /* otherwise */ new Failure(a)\n}\nValidation.prototype.fromNullable = Validation.fromNullable\n\n/**\n * Constructs a new `Either[α, β]` structure from a `Validation[α, β]` type.\n *\n * @summary Either[α, β] → Validation[α, β]\n */\nValidation.fromEither = function(a) {\n return a.fold(Validation.Failure, Validation.Success)\n}\n\n\n// -- Predicates -------------------------------------------------------\n\n/**\n * True if the `Validation[α, β]` contains a `Failure` value.\n *\n * @summary Boolean\n */\nValidation.prototype.isFailure = false\nFailure.prototype.isFailure = true\n\n/**\n * True if the `Validation[α, β]` contains a `Success` value.\n *\n * @summary Boolean\n */\nValidation.prototype.isSuccess = false\nSuccess.prototype.isSuccess = true\n\n\n// -- Applicative ------------------------------------------------------\n\n/**\n * Creates a new `Validation[α, β]` instance holding the `Success` value `b`.\n *\n * `b` can be any value, including `null`, `undefined` or another\n * `Validation[α, β]` structure.\n *\n * @summary β → Validation[α, β]\n */\nValidation.of = function(a) {\n return new Success(a)\n}\nValidation.prototype.of = Validation.of\n\n\n/**\n * Applies the function inside the `Success` case of the `Validation[α, β]` structure\n * to another applicative type.\n *\n * The `Validation[α, β]` should contain a function value, otherwise a `TypeError`\n * is thrown.\n *\n * @method\n * @summary (@Validation[α, β → γ], f:Applicative[_]) => f[β] → f[γ]\n */\nValidation.prototype.ap = unimplemented\n\nFailure.prototype.ap = function(b) {\n return b.isFailure? this.Failure(this.value.concat(b.value))\n : /* otherwise */ this\n}\n\nSuccess.prototype.ap = function(b) {\n return b.isFailure? b\n : /* otherwise */ b.map(this.value)\n}\n\n\n// -- Functor ----------------------------------------------------------\n\n/**\n * Transforms the `Success` value of the `Validation[α, β]` structure using a regular\n * unary function.\n *\n * @method\n * @summary (@Validation[α, β]) => (β → γ) → Validation[α, γ]\n */\nValidation.prototype.map = unimplemented\nFailure.prototype.map = noop\n\nSuccess.prototype.map = function(f) {\n return this.of(f(this.value))\n}\n\n\n// -- Show -------------------------------------------------------------\n\n/**\n * Returns a textual representation of the `Validation[α, β]` structure.\n *\n * @method\n * @summary (@Validation[α, β]) => Void → String\n */\nValidation.prototype.toString = unimplemented\n\nFailure.prototype.toString = function() {\n return 'Validation.Failure(' + this.value + ')'\n}\n\nSuccess.prototype.toString = function() {\n return 'Validation.Success(' + this.value + ')'\n}\n\n\n// -- Eq ---------------------------------------------------------------\n\n/**\n * Tests if an `Validation[α, β]` structure is equal to another `Validation[α, β]`\n * structure.\n *\n * @method\n * @summary (@Validation[α, β]) => Validation[α, β] → Boolean\n */\nValidation.prototype.isEqual = unimplemented\n\nFailure.prototype.isEqual = function(a) {\n return a.isFailure && (a.value === this.value)\n}\n\nSuccess.prototype.isEqual = function(a) {\n return a.isSuccess && (a.value === this.value)\n}\n\n\n// -- Extracting and recovering ----------------------------------------\n\n/**\n * Extracts the `Success` value out of the `Validation[α, β]` structure, if it\n * exists. Otherwise throws a `TypeError`.\n *\n * @method\n * @summary (@Validation[α, β]) => Void → β :: partial, throws\n * @see {@link module:lib/validation~Validation#getOrElse} — A getter that can handle failures.\n * @see {@link module:lib/validation~Validation#merge} — The convergence of both values.\n * @throws {TypeError} if the structure has no `Success` value.\n */\nValidation.prototype.get = unimplemented\n\nFailure.prototype.get = function() {\n throw new TypeError(\"Can't extract the value of a Failure(a).\")\n}\n\nSuccess.prototype.get = function() {\n return this.value\n}\n\n\n/**\n * Extracts the `Success` value out of the `Validation[α, β]` structure. If the\n * structure doesn't have a `Success` value, returns the given default.\n *\n * @method\n * @summary (@Validation[α, β]) => β → β\n */\nValidation.prototype.getOrElse = unimplemented\n\nFailure.prototype.getOrElse = function(a) {\n return a\n}\n\nSuccess.prototype.getOrElse = function(_) {\n return this.value\n}\n\n\n/**\n * Transforms a `Failure` value into a new `Validation[α, β]` structure. Does nothing\n * if the structure contain a `Success` value.\n *\n * @method\n * @summary (@Validation[α, β]) => (α → Validation[γ, β]) → Validation[γ, β]\n */\nValidation.prototype.orElse = unimplemented\nSuccess.prototype.orElse = noop\n\nFailure.prototype.orElse = function(f) {\n return f(this.value)\n}\n\n\n/**\n * Returns the value of whichever side of the disjunction that is present.\n *\n * @summary (@Validation[α, α]) => Void → α\n */\nValidation.prototype.merge = function() {\n return this.value\n}\n\n\n// -- Folds and Extended Transformations -------------------------------\n\n/**\n * Applies a function to each case in this data structure.\n *\n * @method\n * @summary (@Validation[α, β]) => (α → γ), (β → γ) → γ\n */\nValidation.prototype.fold = unimplemented\n\nFailure.prototype.fold = function(f, _) {\n return f(this.value)\n}\n\nSuccess.prototype.fold = function(_, g) {\n return g(this.value)\n}\n\n/**\n * Catamorphism.\n * \n * @method\n * @summary (@Validation[α, β]) => { Success: α → γ, Failure: α → γ } → γ\n */\nValidation.prototype.cata = unimplemented\n\nFailure.prototype.cata = function(pattern) {\n return pattern.Failure(this.value)\n}\n\nSuccess.prototype.cata = function(pattern) {\n return pattern.Success(this.value)\n}\n\n\n/**\n * Swaps the disjunction values.\n *\n * @method\n * @summary (@Validation[α, β]) => Void → Validation[β, α]\n */\nValidation.prototype.swap = unimplemented\n\nFailure.prototype.swap = function() {\n return this.Success(this.value)\n}\n\nSuccess.prototype.swap = function() {\n return this.Failure(this.value)\n}\n\n\n/**\n * Maps both sides of the disjunction.\n *\n * @method\n * @summary (@Validation[α, β]) => (α → γ), (β → δ) → Validation[γ, δ]\n */\nValidation.prototype.bimap = unimplemented\n\nFailure.prototype.bimap = function(f, _) {\n return this.Failure(f(this.value))\n}\n\nSuccess.prototype.bimap = function(_, g) {\n return this.Success(g(this.value))\n}\n\n\n/**\n * Maps the failure side of the disjunction.\n *\n * @method\n * @summary (@Validation[α, β]) => (α → γ) → Validation[γ, β]\n */\nValidation.prototype.failureMap = unimplemented\nSuccess.prototype.failureMap = noop\n\nFailure.prototype.failureMap = function(f) {\n return this.Failure(f(this.value))\n}\n\n/**\n * Maps the failure side of the disjunction.\n *\n * @method\n * @deprecated in favour of {@link module:lib/validation~Validation#failureMap}\n * @summary (@Validation[α, β]) => (α → γ) → Validation[γ, β]\n */\nValidation.prototype.leftMap = Validation.prototype.failureMap\nSuccess.prototype.leftMap = Success.prototype.failureMap\nFailure.prototype.leftMap = Failure.prototype.failureMap\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/data.validation/lib/validation.js\n// module id = 20\n// module chunks = 0","const R = require('ramda');\n\nexport class DomTemplateRenderer {\n constructor(tmpl, data) {\n this.template = this.formatTemplate(tmpl);\n this.templateData = data;\n\n let strArr = DomTemplateRenderer.getStringArray(this.template);\n\n let strMatches = this.template.match(DomTemplateRenderer.findTmplLoopsRE());\n strMatches = strMatches === null ? [] : strMatches;\n\n const mapTmplLoop = (str, data) => str.replace(\n DomTemplateRenderer.parseTmplLoopsRE(),\n this.parseTheTmplLoop.bind(this));\n const findTmplLoopsPred = R.contains(R.__, strMatches);\n\n const checkForMatches = R.ifElse(\n findTmplLoopsPred,\n mapTmplLoop,\n this.addParams.bind(this));\n\n this.finalArr = strArr.map(checkForMatches);\n }\n\n static getStringArray(tmpl) {\n let strArr = tmpl.split(DomTemplateRenderer.findTmplLoopsRE());\n const emptyRE = /^([\\\\n\\s\\W]+)$/;\n const filterOutEmptyStrings = s => s.match(emptyRE);\n return R.reject(filterOutEmptyStrings, strArr);\n }\n\n static findTmplLoopsRE() {\n return /({{#\\w+}}[\\w\\n\\s\\W]+?{{\\/\\w+}})/gm;\n }\n\n static parseTmplLoopsRE() {\n return /({{#(\\w+)}})([\\w\\n\\s\\W]+?)({{\\/\\2}})/gm;\n }\n\n static swapParamsForTagsRE() {\n return /({{)(.*?)(}})/gm;\n }\n\n removeThis() {\n this.finalArr = undefined;\n this.templateData = undefined;\n this.template = undefined;\n }\n\n getTemplateNode() {\n const html = this.finalArr.join(' ');\n const el = document.createRange().createContextualFragment(html);\n window.setTimeout(this.removeThis(), 10);\n return el;\n }\n\n getTemplateString() {\n return this.finalArr.join(' ');\n }\n\n formatTemplate(tmpl) {\n return typeof (tmpl) === 'string' ? tmpl : tmpl.text;\n }\n\n addParams(str) {\n const replaceTags = (str, p1, p2, p3) => {\n let dataVal = this.templateData[p2];\n let defaultIsEmptyStr = R.defaultTo('');\n return defaultIsEmptyStr(dataVal);\n };\n\n return str.replace(DomTemplateRenderer.swapParamsForTagsRE(), replaceTags);\n }\n\n parseTheTmplLoop(str, p1, p2, p3) {\n const subStr = p3;\n let elData = this.templateData[p2];\n const parseString = (item, str) => {\n return str.replace(DomTemplateRenderer.swapParamsForTagsRE(), item);\n };\n const parseObject = (obj, str) => {\n const loopObj = (str, p1, p2) => {\n return obj[p2];\n };\n return str.replace(DomTemplateRenderer.swapParamsForTagsRE(), loopObj);\n };\n const mapStringData = (d) => {\n if (typeof (d) === 'string') {\n d = parseString(d, subStr);\n } else {\n d = parseObject(d, subStr);\n }\n return d;\n };\n return elData.map(mapStringData).join(' ');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/views/dom-template-renderer.js","let createFaderInlineText = (isInBool = false, t = 1, e = 'ease', startZeroBool = false) => {\n let initOpacityZero = startZeroBool === true ? 'opacity:0;' : '';\n let opacity = isInBool === true ? 1 : 0;\n return `${initOpacityZero}transition: opacity ${t}s ${e}; opacity: ${opacity};`;\n};\nexport function fadein(el, t) {\n let currentOpacity = window.getComputedStyle(el).opacity * 1;\n let startAtZero = currentOpacity === 1;\n let inlineCss = createFaderInlineText(true, t, 'ease', startAtZero);\n el.style.cssText += inlineCss;\n}\nexport function fadeout(el, t, callback) {\n let inlineCss = createFaderInlineText(false, t, 'ease');\n el.style.cssText += inlineCss;\n console.log(t, ' inline is ', inlineCss);\n\n // window.setTimeout(callback, t * 1000);\n el.addEventListener('transitionend', callback, false);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/utils/animations.js","import {BaseCoreMixins} from '../utils/mixins/base-core-mixins';\nimport {BaseStreamsMixins} from '../utils/mixins/base-streams-mixins';\nimport {ifNilThenUpdate, convertDomStringMapToObj} from '../utils/frp-tools';\n// import {gc} from '../utils/gc';\nimport {ViewToDomMediator} from './view-to-dom-mediator';\nimport {registeredStreamNames} from '../channels/channels-config';\nimport {ViewStreamBroadcaster} from './view-stream-broadcaster';\nimport {ChannelsPayload} from '../channels/channels-payload';\nimport {LifecyleObservables} from '../utils/lifecycle-observables';\nimport { DomItemSelectors } from './dom-item-selectors';\n\nconst Rx = require('rxjs');\nconst R = require('ramda');\n\nexport class ViewStream {\n /**\n * @module ViewStream\n *\n * @desc\n * The ViewStream object creates or references a dom elment; the dom element can be as simple as a <p> tag, or the dom element can be a large dom chunk that is generated from data and an html template.\n * <br><br>\n * Generally, the idea is to extend the ViewStream class and add the custom values within the constructor function, but all of the values can be passed as parameters as well.\n *\n * @example\n * // returns <h2>Hello World</h2>\n * new ViewStream({tagName:'h2', data:'Hello World'};\n * @example\n * // returns\n * <ul>\n * <li>firstName: Jane<li>\n * <li>lastName: Doe<li>\n * <li>Age: 23<li>\n * </ul>\n *\n * let myTemplate = '<li>firstName: {{fName}}<li>lastName: {{lName}}<li>Age: {{age}}';\n * let myData = {fName: Jane, lName: Doe, age:23};\n * new ViewStream({tagName:'ul', data:myData, tmpl:myTemplate});\n *\n *\n *\n * @constructor\n * @param {object} props This json object takes in parameters to generate or reference the dom element\n * @property {string} props.tagName - 'div' This can be any dom tag\n * @property {domItem} props.el undefined, if defined, ViewStream will connect to that element\n * @property {string|object} props.data undefined, // string for innerText or Json object for html template\n * @property {boolean} props.animateIn - false, animates in View\n * @property {number} props.animateInTime - .5\n * @property {boolean} props.animateOut false, animates in View\n * @property {number} props.animateOutTime .5\n * @property {string} props.id - undefined, generates a random id if left undefined\n * @property {boolean} props.debug false\n * @property {tmpl} props.tmpl undefined, // html template\n *\n */\n constructor(props = {}) {\n this.checker = Math.random();\n this.addMixins();\n this.defaults = () => {\n const cid = this.createId(); const id = props.id ? props.id : cid;\n return {cid,\n id,\n tagName: 'div',\n el: undefined,\n data: undefined,\n animateIn:false,\n animateInTime: 0.5,\n animateOut: false,\n animateOutTime: 0.5,\n hashId: `#${id}`,\n viewClass: ViewToDomMediator,\n extendedSourcesHashMethods: {},\n debug: false,\n tmpl: undefined,\n node: document.createDocumentFragment(),\n name: this.constructor.name\n };\n };\n this._state = {};\n this.$dirs = LifecyleObservables.createDirectionalFiltersObject();\n this.addDefaultDirection = LifecyleObservables.addDefaultDir;\n this.addDownInternalDir = LifecyleObservables.addDownInternalDir;\n this.props = Object.assign({}, this.defaults(), props);\n this.props['domAttributes'] = R.pick(['id', 'class', 'dataset'], this.props);\n\n const channelFn = R.curry(this.onChannelMethodCall.bind(this));\n let createExtraStatesMethod = (arr) => {\n let [action, funcStr] = arr;\n this.props.extendedSourcesHashMethods[action] = channelFn(funcStr);\n };\n this.addActionMethods().forEach(createExtraStatesMethod);\n this.props.hashSourceMethods = this.setSourceHashMethods(this.props.extendedSourcesHashMethods);\n this.props.action = 'LOADED';\n this.sink$ = new Rx.Subject();\n const ViewClass = this.props.viewClass;\n this.view = new ViewClass(this.sink$, {}, this.checker, this.constructor.name);// new this.props.viewClass(this.sink$);\n this.sourceStreams = this.view.sourceStreams;\n this._rawSource$ = this.view.getSourceStream();\n this._rawSource$['viewName'] = this.props.name;\n this.sendEventsDownStream = this.sendEventsDownStreamFn;\n this.init();\n this.checkIfElementAlreadyExists();\n }\n checkIfElementAlreadyExists() {\n const elIsDomElement = el => el !== undefined && el.tagName !== undefined;\n const elIsRendered = el => document.body.contains(el);\n const elIsReadyBool = R.propSatisfies(R.allPass([elIsRendered, elIsDomElement]), 'el');\n if (elIsReadyBool(this.props)) {\n this.postRender();\n }\n }\n\n addActionMethods() {\n return [];\n }\n\n onChannelMethodCall(str, p) {\n // console.log('channelMethodCalled ', p);\n if (p.$dir !== undefined && p.$dir.includes('child') && this.deleted !== true) {\n // p.$dir = ['internal'];\n // this.sourceStreams.toChild$.next(p);\n\n let obj = Object.assign({}, p);\n // obj['action'] = action;\n obj['$dir'] = this.$dirs.C;\n // console.log('SEND DOWN ', obj);\n this.sourceStreams.raw$.next(obj);\n\n // this.sendEventsDownStreamFn('HOLDER_ROUTE_EVENT', p);\n }\n\n this[str](p);\n }\n\n setSourceHashMethods(extendedSourcesHashMethods = {}) {\n let hashSourceKeys = {\n 'DISPOSING' : (p) => this.checkParentDispose(p),\n 'DISPOSE' : (p) => this.onDispose(p),\n // 'CHILD_DISPOSE' : (p) => this.onDispose(p),\n 'RENDERED' : (p) => this.onRendered(p),\n 'RENDERED_AND_ATTACHED_TO_DOM' : (p) => this.onRendered(p),\n 'RENDERED_AND_ATTACHED_TO_PARENT' : (p) => this.onRendered(p),\n // 'CHILD_RENDERED' : (p) => this.attachChildToView(p),\n 'READY_FOR_GC' : (p) => this.onReadyToGC(p),\n 'NOTHING' : () => ({})\n };\n return Object.assign({}, hashSourceKeys, extendedSourcesHashMethods);\n }\n\n // =====================================================================\n // ====================== MAIN STREAM METHODS ==========================\n init() {\n this._source$ = this._rawSource$\n .map((payload) => this.onMapViewSource(payload))\n .takeWhile(this.notGCSTATE);\n\n this.initAutoMergeSourceStreams();\n this.updateSourceSubscription(this._source$, true);\n }\n\n notGCSTATE(p) {\n return !p.action.includes('READY_FOR_GC');\n }\n\n eqGCSTATE(p) {\n return !p.action.includes('READY_FOR_GC');\n }\n notCOMPLETED(p) {\n return !p.action.includes('COMPLETED');\n }\n notGCCOMPLETE(p) {\n return !p.action.includes('GC_COMPLETE');\n }\n\n testVal(p) {\n console.log('TESTING VALL IS ', p);\n }\n\n addParentStream(obs, attachData) {\n let filterOutNullData = (data) => data !== undefined && data.action !== undefined;\n let checkIfDisposeOrFadeout = (d) => {\n let data = Object.assign({}, d);\n\n if (data.action === 'DISPOSE_AND_READY_FOR_GC') {\n this.onDispose(data);\n data.action = 'READY_FOR_GC';\n }\n return data;\n };\n\n this.parent$ = obs\n .filter(filterOutNullData)\n .map(checkIfDisposeOrFadeout)\n .takeWhile(this.notGCCOMPLETE);\n this.updateSourceSubscription(this.parent$, false, 'PARENT');\n this.renderAndAttachToParent(attachData);\n }\n\n addChildStream(obs$) {\n let filterOutNullData = (data) => data !== undefined && data.action !== undefined;\n let child$ = obs$\n .filter(filterOutNullData)\n .do(p => this.tracer('addChildStraem do ', p))\n .map((p) => {\n return p;\n })\n // .takeWhile(this.notGCSTATE)\n .finally(p => this.onChildCompleted(child$.source));\n this.updateSourceSubscription(child$, true, 'CHILD');\n }\n\n onChildCompleted(p) {\n let findName = (x) => {\n let finalDest = (y) => {\n while (y.destination !== undefined) {\n y = finalDest(y.destination);\n }\n return y;\n };\n return finalDest(x).viewName;\n };\n // let childCompletedName = findName(p);\n this.tracer('onChildCompleted ', this.checker, p);\n return findName(p);\n }\n\n initAutoMergeSourceStreams() {\n // ====================== SUBSCRIPTION SOURCE =========================\n let subscriber = {\n next: this.onSubscribeToSourcesNext.bind(this),\n error: this.onSubscribeToSourcesError.bind(this),\n complete: this.onSubscribeToSourcesComplete.bind(this)\n };\n // let takeBeforeGCOld = (val) => val.action !== 'GARBAGE_COLLECTED';\n // let takeBeforeGC = (p) => !p.action.includes('READY_FOR_GC');\n // let mapToState = (val) => ({action:val});\n // =====================================================================\n // ========== METHODS TO CHECK FOR WHEN TO COMPLETE THE STREAM =========\n let completeAll = () => {\n this.uberSource$.complete();\n this.autoSubscriber$.complete();\n this.sink$.complete();\n this.props.el$.unmount();\n this.props = undefined;\n this.deleted = true;\n this.tracer('completeAll', this.deleted, this.props);\n };\n let decrementOnObservableClosed = () => {\n obsCount -= 1;\n if (obsCount === 0) {\n completeAll();\n }\n };\n // =====================================================================\n // ======================== INIT STREAM METHODS ========================\n let obsCount = 0;\n this.uberSource$ = new Rx.Subject();\n // ======================= COMPOSED RXJS OBSERVABLE ======================\n /* let addRelationToState = (pre, str) => {\n let prefix = pre !== undefined ? pre + '_' : '';\n return prefix + str;\n }; */\n let incrementObservablesThatCloses = () => { obsCount += 1; };\n this.autoMergeSubject$ = this.uberSource$\n .mergeMap((obsData) => {\n let branchObservable$ = obsData.observable\n .filter((p) => p !== undefined && p.action !== undefined)\n .map(p => {\n // console.log('PAYLOAD IS ', p, this.constructor.name)\n let payload = Object.assign({}, p);\n payload.action = p.action;// addRelationToState(obsData.rel, p.action);\n this.tracer('autoMergeSubject$', payload);\n return payload;\n });\n\n if (obsData.autoClosesBool === false) {\n return branchObservable$;\n } else {\n incrementObservablesThatCloses();\n return branchObservable$\n .finally(decrementOnObservableClosed);\n }\n });\n // ============================= SUBSCRIBER ==============================\n this.autoSubscriber$ = this.autoMergeSubject$\n // .do((p) => console.log('SINK DATA ', this.constructor.name, p))\n .filter((p) => p !== undefined && p.action !== undefined)\n .subscribe(subscriber);\n }\n // ========================= MERGE STREAMS TO MAIN SUBSCRIBER =================\n updateSourceSubscription(obs$, autoClosesBool = false, rel) {\n // const directionArr = sendDownStream === true ? this.$dirs.DI : this.$dirs.I;\n\n /*\n let obs$1 = obs$\n .map(LifecyleObservables.addDefaultDir);\n*/\n\n let obj = {\n observable: obs$,\n autoClosesBool,\n rel\n };\n this.tracer('updateSourceSubscription ', this.checker, obj);\n this.uberSource$.next(obj);\n }\n // ============================= SUBSCRIBER METHODS ==============================\n onSubscribeToSourcesNext(payload = {}) {\n let defaultToFn = R.defaultTo((p) => this.sendExtendedStreams(p));\n\n const hashAction = this.props.hashSourceMethods[payload.action];\n // console.log('S PAYLOAD ', this.props.name, typeof (hashAction), payload);\n\n let fn = defaultToFn(hashAction);\n fn(payload);\n // console.log(fn, payload, ' THE PAYLOAD FROM SUBSCRIBE IS ', ' ---- ', ' ---> ', this.props);\n // console.log('DISPOSER VS NEXT', this.constructor.name, payload);\n\n this.tracer('onSubscribeToSourcesNext', {payload});\n }\n onSubscribeToSourcesError(payload = '') {\n console.log('ALL ERROR ', this.constructor.name, payload);\n }\n\n onSubscribeToSourcesComplete() {\n // console.log('==== DISPOSER ALL COMPLETED ====', this.constructor.name);\n this.tracer('onSubscribeToSourcesComplete', 'GARBAGE_COLLECT');\n\n this.openSpigot('GARBAGE_COLLECT');\n }\n // =======================================================================================\n // ============================= HASH KEY AND SPIGOT METHODS==============================\n get source$() {\n return this._source$;\n }\n\n sendExtendedStreams(payload) {\n this.tracer('sendExtendedStreams', payload);\n\n this.openSpigot(payload.action, payload);\n }\n // ===================================== RENDER METHODS ==================================\n renderAndAttachToParent(attachData) {\n // let childRenderData = attachData;\n this.openSpigot('RENDER_AND_ATTACH_TO_PARENT', attachData);\n }\n\n renderView() {\n this.openSpigot('RENDER');\n }\n renderViewAndAttachToDom(node, type, attachType) {\n let attachData = {node, type, attachType};\n this.openSpigot('RENDER_AND_ATTACH_TO_DOM', {attachData});\n }\n\n attachChildToView(data) {\n // let childRenderData = data.attachData;\n // console.log('CHILD DATA ', this.constructor.name, childRenderData);\n // this.openSpigot('ATTACH_CHILD_TO_SELF', {childRenderData});\n }\n\n // ===================================== DISPOSE METHODS =================================\n checkParentDispose(p) {\n if (p.from$ === 'parent') {\n this.onDispose(p);\n }\n }\n\n onDispose(p) {\n // console.log('DISPOSER VS onDispose ', this.constructor.name);\n\n this.openSpigot('DISPOSE');\n }\n\n onChildDispose(p) {\n }\n\n onParentDisposing(p) {\n // this.updateSourceSubscription(this._source$);\n this.openSpigot('DISPOSE');\n }\n onReadyToGC(p) {\n const isInternal = p.from$ !== undefined && p.from$ === 'internal';\n if (isInternal) {\n // this.openSpigot('GARBAGE_COLLECT');\n }\n this.tracer('onReadyToGC', isInternal, p);\n }\n // ===================================== SINK$ METHODS =================================\n\n sendEventsDownStreamFn(o, action = {}) {\n // console.log('OBJ ACTION ', o, action);\n let obj = Object.assign({action}, o);\n // obj['action'] = action;\n obj['$dir'] = this.$dirs.C;\n // console.log('OBJ FINAL ', obj);\n this.sourceStreams.raw$.next(obj);\n }\n\n openSpigot(action, obj = {}) {\n if (this.props !== undefined) {\n this.props.action = action;\n let data = R.merge(this.props, obj);\n this.sink$\n .next(Object.freeze(data));\n }\n }\n\n setAttachData(attachType, query) {\n return {\n node: this.props.el,\n type: 'ViewToDomMediator',\n attachType,\n query: this.props.el.querySelector(query)\n };\n }\n\n getParentEls(el, num) {\n let getElem = el => el.parentElement;\n let iter = 0;\n let parentEl = el;\n while (iter < num) {\n parentEl = getElem(parentEl);\n iter++;\n }\n return parentEl;\n }\n\n setAttachParentData(attachType, query, level) {\n return {\n node: this.getParentEls(this.props.el, level),\n type: 'ViewToDomMediator',\n attachType,\n query: this.props.el.parentElement.querySelector(query)\n };\n }\n\n onMapViewSource(payload = {}) {\n this.props = R.merge(this.props, payload);\n return payload;\n }\n\n // ====================== ATTACH STREAM AND DOM DATA AGGREGATORS==========================\n exchangeViewsWithChild(childView, attachData) {\n this.addChildStream(childView.sourceStreams.toParent$);\n childView.addParentStream(this.sourceStreams.toChild$, attachData);\n }\n /**\n * Appends a ViewStream object to an existing dom element.\n * @param {dom} node the ViewStream child that is to be attached.\n *\n * @example\n * // returns\n * <body>\n * <h2>Hello World</h2>\n * </body>\n *\n * let viewStream = new ViewStream('h2', 'Hello World');\n * viewStream.appendToDom(document.body);\n *\n */\n appendToDom(node) {\n this.renderViewAndAttachToDom(node, 'dom', 'appendChild');\n }\n\n /**\n * Prepends the current ViewStream object to an existing dom element.\n * @param {dom} node the ViewStream child that is to be attached.\n *\n * @example\n * this.prependToDom(document.body);\n *\n */\n\n prependToDom(node) {\n this.renderViewAndAttachToDom(node, 'dom', 'prependChild');\n }\n /**\n * This method appends a child ViewStream object. <br>After the attachment, rxjs observables are exchanged between the parent and child ViewStream objects.<br><br>\n * @param {ViewStream} v the ViewStream child that is to be attached.\n * @param {string} query a querySelector within this ViewStream.\n *\n * @example\n * // returns\n * <body>\n * <main>\n * <h2>Hello World</h2>\n * </main>\n * </body>\n *\n *\n * let parentView = new ViewStream('main');\n * parentView.appendToDom(document.body);\n *\n * let childView = new ViewStream({tagName:'h2', data:'Hello World'};\n * parentView.appendView(childView)\n *\n * */\n appendView(v, query) {\n this.exchangeViewsWithChild(v, this.setAttachData('appendChild', query));\n }\n\n /**\n * This method appends a child ViewStream object to a parent ViewStream object.\n * @param {ViewStream} v the ViewStream parent.\n * @param {string} query a querySelector within this ViewStream.\n * @param {level} this parameters can attach the viewStream's dom element up the dom tree while still maintaining the parent-child relationship of the ViewStream objects.\n *\n * @example\n * // returns\n * <body>\n * <main>\n * <h2>Hello World</h2>\n * </main>\n * </body>\n *\n *\n * let parentView = new ViewStream('main');\n * parentView.appendToDom(document.body);\n *\n * let childView = new ViewStream({tagName:'h2', data:'Hello World'};\n * childView.appendToParent(parentView)\n *\n * */\n\n appendViewToParent(v, query, level = 1) {\n this.exchangeViewsWithChild(v, this.setAttachParentData('appendChild', query, level));\n }\n\n /**\n * This method prepends a child ViewStream object to a parent ViewStream object.\n * @param {ViewStream} v the ViewStream parent.\n * @param {string} query a querySelector within this ViewStream.\n * @param {number} level this parameter can attach the viewStream's dom element up the dom tree while still maintaining the parent-child relationship of the ViewStream objects.\n *\n * @example\n * let parentView = new ViewStream('main');\n * parentView.prependToDom(document.body);\n *\n * let childView = new ViewStream({tagName:'h2', data:'Hello World'};\n * childView.prependViewToParent(parentView)\n *\n * */\n prependViewToParent(v, query, level = 1) {\n this.exchangeViewsWithChild(v, this.setAttachParentData('prependChild', query, level));\n }\n\n /**\n *\n *\n * This method prepends a child ViewStream object to the current ViewStream object. <br>After the attachment, rxjs observables are exchanged between the parent and child ViewStream objects.<br><br>\n * @param {ViewStream} v the ViewStream child that is to be attached.\n * @param {string} query a querySelector within this ViewStream.\n *\n * @example\n * // returns\n * <body>\n * <main>\n * <h2>Hello World</h2>\n * </main>\n * </body>\n *\n * let parentView = new ViewStream('main');\n * parentView.appendToDom(document.body);\n *\n * let childView = new ViewStream({tagName:'h2', data:'Hello World'};\n * parentView.prependView(childView);\n *\n * */\n\n prependView(v, query) {\n this.exchangeViewsWithChild(v, this.setAttachData('prependChild', query));\n }\n\n onRendered(payload) {\n // console.log('RENDER: ', this.props.name, payload);\n if (payload.from$ === 'internal') {\n // this.props['el'] = payload.el.el;\n\n this.postRender();\n // this.broadcaster = new Spyne.ViewStreamBroadcaster(this.props, this.broadcastEvents);\n }\n }\n\n postRender() {\n this.beforeAfterRender();\n this.afterRender();\n this.viewsStreamBroadcaster = new ViewStreamBroadcaster(this.props, this.broadcastEvents);\n }\n\n beforeAfterRender() {\n this.props.el$ = new DomItemSelectors(this.props.el);\n\n // console.log('EL IS ', this.props.el$.elArr);\n window.theEl$ = this.props.el$;\n }\n\n // ================================= METHODS TO BE EXTENDED ==============================\n /**\n *\n * This method is called once the ViewStream's domElement has been rendered and attached to the dom.\n * <br>\n * This method is empty and is meant to be overridden.\n *\n * */\n\n // THIS IS AN EVENT HOLDER METHOD BECAUSE SENDING DOWNSTREAM REQUIRE THE PARENT TO HAVE A METHOD\n downStream() {\n\n }\n\n afterRender() {\n }\n\n /**\n *\n * Add any query within the ViewStream's dom and any dom events to automatically be observed by the UI Channel.\n * <br>\n * @example\n *\n * broadcastEvents() {\n * // ADD BUTTON EVENTS AS NESTED ARRAYS\n * return [\n * ['#my-button', 'mouseover'],\n * ['#my-input', 'change']\n * ]\n * }\n *\n *\n * */\n\n broadcastEvents() {\n // ADD BUTTON EVENTS AS NESTED ARRAYS\n return [\n ];\n }\n\n /**\n *\n * Automatically connect to an instance of registered channels, such as 'DOM', 'UI', and 'ROUTE' channels.\n *\n *\n * @example\n *\n * let uiChannel = this.getChannel('UI');\n *\n * uiChannel\n * .filter((p) => p.data.id==='#my-button')\n * .subscribe((p) => console.log('my button was clicked ', p));\n *\n * */\n\n getChannel(channel) {\n let isValidChannel = c => registeredStreamNames().includes(c);\n let error = c => console.warn(`channel name ${c} is not within ${registeredStreamNames}`);\n let startSubscribe = (c) => {\n return window.Spyne.channels.getStream(c).observer\n .takeWhile(p => this.deleted !== true);\n };// getGlobalParam('streamsController').getStream(c).observer;\n\n let fn = R.ifElse(isValidChannel, startSubscribe, error);\n\n return fn(channel);\n }\n\n /**\n *\n * Preferred method to connect to instances of registered channels, such as 'DOM', 'UI', and 'ROUTE' channels.\n *\n * Add Channel will automatically unsubscribe to the channel, whereas the getChannel method requires the developer to manually unsubscribe.\n *\n * @param {string} str The name of the registered Channel that was added to the Channels Controller.\n * @param {boolean} bool false, add true if the View should wait for this channel to unsubscribe before removing itself.\n * @param {sendDownStream} bool The direction where the stream is allowed to travel.\n *\n * @example\n *\n * let routeChannel = this.addChannel('ROUTE');\n *\n * addActionMethods() {\n * return [\n * ['CHANNEL_ROUTE_CHANGE_EVENT', 'onMapRouteEvent']\n * ]\n * }\n *\n * onMapRouteEvent(p) {\n * console.log('the route value is ', p);\n * }\n *\n *\n * */\n\n addChannel(str, sendDownStream = false, bool = false) {\n const directionArr = sendDownStream === true ? this.$dirs.CI : this.$dirs.I;\n const mapDirection = p => Object.assign({$dir:directionArr}, R.clone(p));\n\n let channel$ = this.getChannel(str)\n .map(mapDirection);\n\n this.updateSourceSubscription(channel$, false);\n /* console.log('added channel ', str, channel);\n let subscriber = {\n next: this.onSubscribeToSourcesNext.bind(this),\n error: this.onSubscribeToSourcesError.bind(this),\n complete: this.onSubscribeToSourcesComplete.bind(this)\n };\n channel\n .do(p => console.log('p in viewstream is ', p))\n .subscribe(subscriber); */\n }\n\n /**\n *\n * Method to send data to any registered channel.\n **\n * @param {string} channelName The name of the registered Channel that was added to the Channels Controller.\n * @param {string} action The event type that listeners can point to.\n * @param {object} payload {}, The main data to send to the channel.\n *\n * @example\n *\n * let payload = {'location' : 'about'};\n * let action = 'PAGE_CHANGE_EVENT';\n * this.sendChannelPayload('ROUTE', paylaod, action);\n *\n *\n *\n * */\n\n sendChannelPayload(channelName, action = 'DEFAULT_EVENT', payload = {}) {\n let cid = this.props.cid;\n let viewName = this.props.name;\n let data = {cid, viewName, payload, action};\n let obs$ = Rx.Observable.of(data);\n return new ChannelsPayload(channelName, obs$, data);\n }\n\n tracer() {\n\n }\n\n // =======================================================================================\n addMixins() {\n // ==================================\n // BASE CORE MIXINS\n // ==================================\n let coreMixins = BaseCoreMixins();\n this.createId = coreMixins.createId;\n this.createpropsMap = coreMixins.createpropsMap;\n this.convertDomStringMapToObj = convertDomStringMapToObj;\n this.ifNilThenUpdate = ifNilThenUpdate;\n // this.gc = gc.bind(this);\n // ==================================\n // BASE STREAM MIXINS\n // ==================================\n let streamMixins = BaseStreamsMixins();\n this.sendUIPayload = streamMixins.sendUIPayload;\n this.sendRoutePayload = streamMixins.sendRoutePayload;\n this.createLifeStreamPayload = streamMixins.createLifeStreamPayload;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/views/view-stream.js","// import {BaseCoreMixins} from '../utils/mixins/base-core-mixins';\nimport {stepValidations, stepUpdateValidations, stepDisposeValidations} from './channels-config';\nimport {validate} from '../utils/predicado';\nimport {gc} from '../utils/gc';\n// import {Right, Left, findInObj} from '../utils/frp-tools';\nimport {findInObj} from '../utils/frp-tools';\n// const Rx = require('rxjs');\n// const R = require('ramda');\nexport class LifestreamPayload {\n constructor(name, STEP, type, viewId, data = {}, debug = true) {\n this.addMixins();\n this.options = {name, STEP, type, viewId, data};\n this.getValidationChecks(STEP);\n }\n get data() {\n return this._data;\n }\n getValidationChecks(n) {\n let left = e => console.warn(e);\n let right = val => this.onRunValidations(val);\n let obj = {\n LOAD: stepValidations,\n RENDER: stepValidations,\n MOUNT: stepValidations,\n DISPOSE: stepDisposeValidations,\n UNMOUNT: stepValidations,\n GARBAGE_COLLECT: stepValidations,\n UPDATE: stepUpdateValidations\n };\n return findInObj(obj, n, 'lifestream payload Needs a Valid Stream Name!')\n .fold(left, right);\n }\n onRunValidations(checks) {\n validate(checks(), this.options).fold(\n this.onError.bind(this),\n this.onSuccess.bind(this));\n }\n onPayloadValidated(p) {\n this._data = p;\n return p;\n }\n onError(errors) {\n console.error('payload failed due to:\\n' + errors.map(e => '* ' + e).join('\\n'));\n this.gc();\n }\n onSuccess(payload) {\n this.onPayloadValidated(payload);\n }\n addMixins() {\n // ==================================\n // BASE CORE MIXINS\n // ==================================\n // let coreMixins = BaseCoreMixins();\n this.gc = gc;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/channels/lifestream-payload.js","const R = require('ramda');\n// const Rx = require('rxjs');\n\nexport class DomItemSelectors {\n constructor(cxt, str) {\n this.el = str !== undefined ? cxt.querySelectorAll(str) : cxt;\n this.queryStr = str;\n if (this.el.length === 1) {\n this.el = R.head(this.el);\n } else if (this.el.constructor.name === 'NodeList') {\n this.el = [...this.el];\n }\n this.cList = this.el.classList;\n\n this.elProps = new Map();\n\n this.createMethods();\n }\n\n createMethods() {\n const mapAddClass = (item, s) => item.classList.add(s);\n const mapRemoveClass = (item, s) => item.classList.remove(s);\n const mapSetClass = (item, s) => {\n item.classList.value = s;\n return item;\n };\n const mapInlineCss = (item, s) => {\n item.style.cssText = s;\n return item;\n };\n\n this.addClass = this.mapToValue(mapAddClass);\n this.removeClass = this.mapToValue(mapRemoveClass);\n this.setClass = this.mapToValue(mapSetClass);\n this.inlineCss = this.mapToValue(mapInlineCss);\n }\n\n mapMethod(fn) {\n // Add a function to the class that will wait for a string param\n return (str) => {\n this.elArr.map(fn);\n return this;\n };\n }\n\n addAnimClass(str) {\n const adder = () => this.addClass(str);\n requestAnimationFrame(() => {\n setTimeout(adder, 0);\n });\n return this;\n }\n\n mapToValue(f) {\n return str => {\n // console.log('str f this', str, f, this);\n this.elArr.map(item => f(item, str));\n return this;\n };\n }\n\n setClassOnBool(str = '', bool = true) {\n if (bool) {\n this.addClass(str);\n } else {\n this.removeClass(str);\n }\n return this;\n }\n\n setActiveItem(query, str) {\n const activeEl = document.querySelector(this.queryStr + query);\n const filterForActive = item => item === activeEl;\n // const onActive = bool => bool === true ? item.addClass(str) : item.removeClass(str);\n const adder = (item) => {\n item.classList.add(str);\n };\n const remover = (item) => {\n item.classList.remove(str);\n };\n const mapTheActive = R.ifElse(\n filterForActive,\n adder,\n remover\n );\n\n this.elArr.map(mapTheActive);\n }\n\n query(str) {\n return new DomItemSelectors(this.el, str);\n }\n\n getEl() {\n return this.el;\n }\n\n get elArr() {\n // console.log('el arr is ', this.el);\n if (this.el.constructor.name === 'NodeList') {\n return [...this.el];\n } else {\n return [].concat(this.el);\n }\n }\n\n getBoxEl() {\n return [].concat(this.el);\n }\n\n unmount() {\n this.el = undefined;\n this.cList = undefined;\n this.inline = undefined;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spyne/views/dom-item-selectors.js"],"sourceRoot":""}
|