File: api-d/4/js-api/library.js/core/plugin.flow.js

Recommend this page to a friend!
  Classes of Till Wehowski   µ.Flow   api-d/4/js-api/library.js/core/plugin.flow.js   Download  
File: api-d/4/js-api/library.js/core/plugin.flow.js
Role: Class source
Content type: text/plain
Description: Class source
Class: µ.Flow
General purpose library of objects
Author: By
Last change: Update plugin.flow.js
Date: 7 years ago
Size: 74,182 bytes
 

Contents

Class file image Download
(function(global) { "use strict"; var __TOK_DEFER__ = 'NG_DEFER_BOOTSTRAP!'; frdl.$q('html', false, document).setAttribute('ng-csp', 'no-inline-style;no-unsafe-eval'); frdl.$q('html', false, document).setAttribute('ng-non-bindable', 'non-bindable'); /* !important http://stackoverflow.com/questions/18184617/angularjs-how-to-nest-applications-within-an-angular-app */ var __WIDGET_REL__ = 'widget'; var __APP_NS__ = 'webfan'; var __GUID_ND__ = __APP_NS__ + '.gui'; var preferences = { URL_SERACHENGINE_PLUGIN : frdl.route('FRDL.URL.SERACHENGINE.PLUGIN'), URL__MANIFEST_WEBAPP_WEBFAN_MAIN : frdl.route('FRDL.URL.MANIFEST.WEBAPP.WEBFAN.MY') }; var jQueryMobile = { autoInitializePage : frdl.route('jQueryMobile.autoInitializePage'), ajaxEnabled: frdl.route('jQueryMobile.ajaxEnabled'), linkBindingEnabled : frdl.route('jQueryMobile.linkBindingEnabled'), hashListeningEnabled : frdl.route('jQueryMobile.hashListeningEnabled'), pushStateEnabled : frdl.route('jQueryMobile.pushStateEnabled') }; var DBPFX= 'frdl/WebfanDesktop/'; (function(){ var Bootstrap = (new function(){ var _on = true; return Object.create( { switchOn : function(a, old){ if(a !== _on){ this.since = frdl.time(); frdl.cron.add(this.timerName, this.check); } if(true===a){ _on=true; }else if(false===a){ _on=false; } if(true===old){ if(true===a){ window.name = str_replace(__TOK_DEFER__, '', window.name); }else if(false===a){ window.name = __TOK_DEFER__ + str_replace(__TOK_DEFER__, '', window.name); } _on= (window.name !== str_replace(__TOK_DEFER__, '', window.name)) ? false : true; } return _on; }, since : frdl.time(), timeout : 10000, check : function(){ if(true === _on){ frdl.cron.remove(this.timerName); }else{ if(frdl.time() - this.since >= this.timeout){ if(0<frdl.debug.mode()){ console.log('Forcing angularBootstrapable(true) due to timeout while sleeping.'+"\n"+'Please refactor the use of frdl.UI.Compile()'); } this.switchOn(true); frdl.UI.Compile(1); } } }, timerName : 'frdl://Bootstrap.check/' + frdl.microtime() + mt_rand(1000,9999) }); }); var loaded$UI=false; var require$UI = function(callback, args){ if(false!==loaded$UI)return; loaded$UI=true; if('object' !== typeof $.ui && false===$.ui instanceof Promise && null === frdl.$q('style[src$="jquery-ui.js"]', false) && null === frdl.$q('style[src$="jquery-ui.min.js"]', false) ){ if( null === frdl.$q('link[href$="jquery-ui.css"]', false) && null === frdl.$q('link[href$="jquery-ui.min.css"]', false)){ frdl.getCSS('http://'+frdl.route('HOST_CDN_PUBLIC_FRDL')+'/cdn/frdl/flow/libraries/jquery/ui/jquery-ui.min.css'); } frdl.getScript('http://'+frdl.route('HOST_CDN_PUBLIC_FRDL')+'/cdn/frdl/flow/libraries/jquery/ui/jquery-ui.min.js', function(){ callback(args); }); }else{ callback(args); } }; frdl.angularBootstrapable = function(a, old){ return Bootstrap.switchOn(a, old); }; frdl.UI=frdl.$({ o :{ DBPFX : DBPFX, LOCAL_MACHINE_CURRENT_USER : (JSON.parse( base64_decode( localStorage.getItem(DBPFX + 'LOCAL_MACHINE_CURRENT_USER/') )) || 'anonymous'), Main : { StatusBarStyle : 'lightblue' }, jQueryMobile : { o: { loadingMessage : 'Loading...', pageLoadErrorMessage : 'Error Loading Page', allowCrossDomainPages : true, defaultPageTransition : 'fade', overlayTheme: "d", theme : 'd', pageLoadErrorMessageTheme : 'e', autoInitializePage : frdl.route('jQueryMobile.autoInitializePage'), ajaxEnabled: frdl.route('jQueryMobile.ajaxEnabled'), linkBindingEnabled : frdl.route('jQueryMobile.linkBindingEnabled'), hashListeningEnabled : frdl.route('jQueryMobile.hashListeningEnabled'), pushStateEnabled : frdl.route('jQueryMobile.pushStateEnabled') } }, jQueryUI : { require : function(callback, args){ return require$UI(callback, args); } } }, defer : function(){ this.$$run('startdefer'); frdl.angularBootstrapable(false, false); return this; }, load : function(){ this.$$run('enddefer'); frdl.angularBootstrapable(true, false); return this; }, widgetAppData : function(file, component){ var s = {}; var c = explode('\/', component); s._TOK_ = '*[data-frdl-component$="'+((2===c.length) ? c[0]+'\\/'+c[1] : component)+'"]'; /* s.__FILE__ = file; */ s.Url = new frdl.Url(file); s.__DIR__ = s.Url.getScheme() + '://' + s.Url.getHost() + '/' + s.Url.getDirectory(); return s; } }).defer(); frdl.UI.emitter=new frdl.EventEmitter(); document.addEventListener('readystatechange', function(ev){ Bootstrap.since=frdl.time(); }) ; document.addEventListener("mobileinit", function(){ $.extend( $.mobile , frdl.UI.o.jQueryMobile.o); }); }()); (function(){ frdl.hasScope = function(element){ return ($(element).hasClass('ng-scope')) ? true : false; }; frdl.UI.reduced = function(){ return ( true===frdl.Dom.isFramed() || true === frdl.Device().isMobile || true === frdl.Device().isTablet || true === frdl.Device().isTouchable || true === frdl.Device().isApp /* || true === frdl.Device().frdlApp*/ ) ? true: false; }; }()); (function(){ var obs = frdl.watchFor('frdl').every(function(el){ el.setAttribute('ng-non-bindable', 'non-bindable'); }); }()); /* (function(){ var obs = frdl.watchFor('*[draggable]').every(function(el){ frdl.UI.o.jQueryUI.require(function(e){ $(e).draggable(); }, el); }); }()); */ (function(){ frdl.watchFor('*[resizable]').every(function(el){ frdl.UI.o.jQueryUI.require(function(e){ $(e).resizable(); }, el); }); }()); /* (function(){ var obs = frdl.watchFor('.webfan-blue').every(function(el){ try{ frdl.getScript('http://webfan.de/site/site_css/webfan/style.webfan.global.css'); obs.destroy(); }catch(err){ cosnole.warn(err); } }); }()); */ (function(){ function canonicalAttributes(el){ var j = 0, names = ['ng-app', 'ng-modules', 'ng-module', 'data-ng-modules', 'data-ng-module', 'ng-flow', 'data-ng-flow', 'data-ng-flows'], a = el.attributes ; if(!!a) { for( j = 0; j < a.length; j++) { var attr = a[j]; if (names.indexOf(attr.name.toLowerCase()) !== -1) { if('ng-flows' !== attr.name)el.removeAttribute(attr.name); el.setAttribute('ng-flows', attr.value); } } } return true; } var obs = frdl.watchFor('[ng-app], [ng-modules], [ng-module], [data-ng-modules], [data-ng-module], [ng-flow], [data-ng-flow], [data-ng-flows]') .every(canonicalAttributes); }()); (function(){ var obs = frdl.watchFor('intent:not([data-flow-prepared="true"])').every(function(el){ if(!!window.webfanIntent || null !== frdl.$q('intent[data-flow-prepared*="true"]', false) )return true; frdl.$j(el).attrAdd('data-flow-prepared', 'true'); frdl.getScript('http://frdl.webfan.de/cdn/frdl/flow/components/frdl/intent/webintents.js' , function(){ console.log('webfanIntents script loaded'); obs.destroy(); }, true, false); return true; }); }()); (function(){ var _cloaded = false, obs; obs = frdl.watchFor( '*[href^="web\+fan\:"]:not([data-flow-prepared*="true"])' + ', *[src^="web\+fan\:"]:not([data-flow-prepared*="true"])' + ', *[data-src^="web\+fan\:"]:not([data-flow-prepared*="true"])' + ', *[ng-src^="web\+fan\:"]:not([data-flow-prepared*="true"])' + ', *[data-href^="web\+fan\:"]:not([data-flow-prepared*="true"])' + ', *[ng-href^="web\+fan\:"]:not([data-flow-prepared*="true"])' ) .every(function(el){ frdl.$j(el).attrAdd('data-flow-prepared', 'true'); if(!!_cloaded || null !== frdl.$q('iframe[id="IFRAME.webfan_proxy"]',false))return; var iframe = frdl.Dom.create("iframe"); iframe.setAttribute('frdl-nwtrusted', true); iframe.style.display = "none"; iframe.setAttribute('id', "IFRAME.webfan_proxy"); iframe.setAttribute('src', "http://webfan.de/proxy"); frdl.Dom.add(iframe, frdl.$q('head',false)); _cloaded = true; return true; }); }()); (function(){ var obs = frdl.watchFor('webfan[type="widget"]:not([data-flow-prepared*="true"]), *[type^="application/vnd.frdl.flow.widget."]:not([data-flow-prepared*="true"]), *[type$=".wgt"]:not([data-flow-prepared*="true"])').every(function(el){ frdl.$j(el).attrAdd('data-flow-prepared', 'true'); $(el).html('<div data-frdl-component="widget://example.com/'+el.getAttribute('name')+'"></div>') ; $(document).trigger('readystatechange'); return true; }); }()); (function(){ var obs = frdl.watchFor('*[webfan-tempelement]').every(function(el){ var duration = el.getAttribute('webfan-tempelement'); if(!isNaN(parseInt(duration))){ setTimeout(function(){ $(el).hide(); $(el).remove(); },duration); } }); }()); (function(){ var obs = frdl.watchFor('*[webfan-fadeout]').every(function(el){ try{ var duration = el.getAttribute('webfan-fadeout'); if(!isNaN(parseInt(duration))){ setTimeout(function(){ $(el).fadeOut('slow'); },duration); } }catch(err){ console.warn(err); } }); }()); frdl.watchFor('*[flow-nav-horizontal]:not([data-flow-prepared*="true"]), *[flow-nav-horizontal]:not([data-flow-prepared*="true"]) > *, *[flow-nav-horizontal]:not([data-flow-prepared*="true"]) > * > *').every(function(el){ el.style.display='inline'; frdl.$j(el).attrAdd('data-flow-prepared', 'true'); }); frdl.watchFor('a[frdl-ajax-link-boddystripped]:not([data-flow-prepared*="true"])').every(function(element){ frdl.$j(element).attrAdd('data-flow-prepared', 'true'); $(element).on('click', function(ev){ var el = ev.target; if(!el.hasAttribute('href'))return true; if('undefined'===window.history.pushState)return true; var url = el.getAttribute('href'); var uHost = new frdl.Url(url).getHost(); if( '' !== uHost && new frdl.Url().getHost() !== uHost)return true; ev.preventDefault(); if(true === frdl.Device().isMobile || true === frdl.Device().isTablet){ $.mobile.loading( 'show' ); } var dest = 'body'; var destMeta=document.querySelector('meta[name="frdl-ajax-link-boddystripped.destination"]'); if(null!==destMeta){ dest=destMeta.getAttribute('content'); } var OnUnload = function(e){ e.preventDefault(); return false; }; window.addEventListener('beforeunload', OnUnload); $.ajax({ url: url, crossDomain:true, cache:true, headers: {'X-Requested-With': 'XMLHttpRequest' , 'X-Flow-Ajax-Link-Boddystripped': 'destination="'+dest+'";' }, type: 'GET', dataType:'html' }) .done(function( html ) { $(dest).html(html); window.removeEventListener('beforeunload', OnUnload); setTimeout(function(){ try{ var newTitle=document.querySelector('meta[name="document.title"]').getAttribute('content'); }catch(err){ } if('undefined'!==typeof newTitle)$('title').html(newTitle); try{ $(document).scrollTop(0); }catch(err){ } $(document).trigger('readystatechange'); if(true === frdl.Device().isMobile || true === frdl.Device().isTablet){ $(dest).trigger('create'); $.mobile.loading( 'hide' ); } window.history.pushState({ name : newTitle, sha1 : Sha1.hash(html), l : html.toString().length }, newTitle, url); ev.stopPropagation(); },1); }).fail(function(jqXHR, textStatus) { frdl.alert.error('Error: ' + url + ' ' + jqXHR.status+ ' '+textStatus); window.location.href=url; }).always(function() { }); return false; }); }); (function(){ var _done_HeaderMetadata = false; var headerMetadata=function(doc){ var meta, Tags; if(true===_done_HeaderMetadata)return; _done_HeaderMetadata=true; if('undefined' === typeof doc)doc = document; /* Tags = frdl.$q('html[manifest]', false, doc); if(null === Tags){ frdl.$q('html', false, doc).setAttribute('meta', 'http://webfan.de/cdn/frdl/flow/components/frdl/intent/manifest-minimum.appcache'); } */ Tags = frdl.$q('meta[name="flow.component.frdl.webfan.api.url.demo"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'flow.component.frdl.webfan.api.url.demo'); meta.setAttribute('content', frdl.route('DEMO_API_CLIENT_URL')); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[name="flow.component.frdl.webfan.api.url.demo.alt"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'flow.component.frdl.webfan.api.url.demo.alt'); meta.setAttribute('content', frdl.route('DEMO_API_CLIENT_URL_ALT')); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[name="apple-mobile-web-app-capable"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'apple-mobile-web-app-capable'); meta.setAttribute('content', 'yes'); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[name="application-name"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'application-name'); meta.setAttribute('content', (null!==document.querySelector('title')) ? document.querySelector('title').innerHTML : location); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[name="apple-mobile-web-app-status-bar-style"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'apple-mobile-web-app-status-bar-style'); meta.setAttribute('content', frdl.UI.o.Main.StatusBarStyle); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[name="HandheldFriendly"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'HandheldFriendly'); meta.setAttribute('content', 'true'); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[name="MobileOptimized"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'MobileOptimized'); meta.setAttribute('content', '320'); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[name="viewport"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width, initial-scale=1.0, user-scalable=yes'); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } Tags = frdl.$q('meta[http-equiv="http-equiv"]', true, doc); if(0 === Tags.length){ meta = frdl.Dom.create('meta'); meta.setAttribute('http-equiv', 'http-equiv'); meta.setAttribute('content', 'IE=11'); frdl.Dom.add(meta, frdl.Dom.getTagNames('head')[0]); } var lnk; if(0 === frdl.$q('link[type="application/manifest+json"]', true, doc).length && ('www.webfan.de'=== new frdl.Url().getHost() || 'webfan.de'=== new frdl.Url().getHost() || 'webfan' === explode('.', new frdl.Url().getHost()).reverse()[1] )){ lnk = frdl.Dom.create('link'); lnk.setAttribute('rel', 'manifest'); lnk.setAttribute('type', 'application/manifest+json'); lnk.setAttribute('href', preferences.URL__MANIFEST_WEBAPP_WEBFAN_MAIN); frdl.Dom.add(lnk, frdl.Dom.getTagNames('head')[0]); } /* "\n<link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"$this->xml_url\" title=\"$title\" />\n";*/ if(0 === frdl.$q('link[type="application/opensearchdescription+xml"]', true, doc).length){ lnk = frdl.Dom.create('link'); lnk.setAttribute('rel', 'search'); lnk.setAttribute('title', 'Webfan: Search'); lnk.setAttribute('type', 'application/opensearchdescription+xml'); lnk.setAttribute('href', preferences.URL_SERACHENGINE_PLUGIN); frdl.Dom.add(lnk, frdl.Dom.getTagNames('head')[0]); } console.log('Setup MetaData'); }; frdl.whenEver(function(){ return (null!== frdl.$q('body',false)) ? true : false; }, headerMetadata, document, 1); if(null !== frdl.$q('link[type="application/manifest+json"]', false)){ frdl.UI.isWebApp = true; }else{ frdl.UI.isWebApp = false; } }()); frdl.ready(function(){ /* http://stackoverflow.com/questions/22548610/can-i-use-one-ng-app-inside-another-one-in-angularjs "compile" : function( $compile, $element, $attrs, $rootScope) { angular.module("ng").directive("ngIsolateApp", function() { return { "scope" : {}, "restrict" : "AEC", "compile" : function(element, attrs) { var html = element.html(); element.html(''); return function(scope, element) { scope.$destroy(); setTimeout(function() { var newRoot = document.createElement("div"); newRoot.innerHTML = html; angular.bootstrap(newRoot, [attrs["ngIsolateApp"]]); element.append(newRoot); }); } } } }); */ frdl.a.module('frdl', ['ng']) .directive("frdl", function() { return { "scope" : {}, "restrict" : "E", "compile" : function($compile, element, attrs) { var html = element.innerHTML; element.innerHTML=''; if('function'===typeof element.setAttribute){ element.setAttribute('ng-non-bindable', 'non-bindable'); } return function($scope, $element) { $scope = $element.isolateScope(); setTimeout(function() { $element.innerHTML=html; }, 1500); } } } }) ; frdl.a.module(__APP_NS__, ['frdl']); frdl.a.module(__GUID_ND__, [__APP_NS__ , 'ngTouch', 'csrf-cross-domain', 'oc.lazyLoad', 'ui.router']) /* IE https://github.com/angular/angular.js/issues/6976 * http://plnkr.co/edit/EHfYEeONdOFa6Xu4owUx?p=preview */ /* .config(function ($provide) { $provide.decorator('$browser', function ($delegate, $log) { var _url = $delegate.url; $delegate.url = function () { if (arguments[0]) { $log.log('Navgiating to ', arguments[0], arguments[1]); } return _url.apply($delegate, arguments); }; return $delegate; }) }) .config(['$locationProvider', function ($locationProvider) { $locationProvider.html5Mode({ enabled: false, requireBase: false }); }]) ; frdl.a.module(__GUID_ND__) */ .config(['$compileProvider', function($compileProvider) { $compileProvider.imgSrcSanitizationWhitelist(/^\s*((https?|ftp|file|blob|chrome-extension|webfan|frdl|frdlweb|frdl-webkit|app|intent|webfan-intent|wpjct|widget|frdl-css|webkit-webfan|user|webfan-user|help|cli|frdl-cli|filesystem|webfan-sdk|frdl-sdk|webfan-api|frdl-api|api|web+fan|about|debug):|data:image\/)/); $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file:chrome-extension|webfan|frdl|frdlweb|frdl-webkit|app|intent|webfan-intent|wpjct|widget|frdl-css|webkit-webfan|user|webfan-user|help|cli|frdl-cli|filesystem|webfan-sdk|frdl-sdk|webfan-api|frdl-api|api|web+fan|about|debug):/); }]) .config(['$ocLazyLoadProvider', '$stateProvider', function($ocLazyLoadProvider, $stateProvider) { $ocLazyLoadProvider.config({ debug: true, events : true, serie: false, cache: true, rerun: false, reconfig: false , modules: [ { name: __GUID_ND__+'.sdk', files: [ 'http://api.webfan.de/api-d/4/js-api/library.js?plugin=sdk'] }, { name: 'ui.codemirror', serie: true, files: [ 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/lib/codemirror.css' /* , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/theme/eclipse.css' */ , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/theme/blackboard.css' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/lib/codemirror.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/addon/selection/selection-pointer.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/mode/xml/xml.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/mode/javascript/javascript.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/mode/css/css.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/mode/vbscript/vbscript.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/mode/htmlmixed/htmlmixed.js' /* , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/lib/util/http_codemirror.net_2_lib_util_multiplex.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/lib/util/overlay.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/lib/util/foldcode.js' */ /* additonal... php, sql ? change mode $('#mode').change(function(){ editor.setOption("mode", $(this).val() ); }); , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/mode/php/php.js' , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/mode/sql/sql.js' */ , 'http://webfan.de/cdn/frdl/flow/components/codemirror/codemirror/ui-codemirror/src/ui-codemirror.js' ] } ] }); }]) .factory('widgetElement', function() { return function widgetElement(element, token){ return $(element).closest(token); }; }) .directive('draggable', function($document) { return function(scope, element, attr) { var startX = 0, startY = 0, x = 0, y = 0; element.css({ position: 'relative', cursor: 'pointer' }); element.on('mousedown', function(event) { startX = event.screenX - x; startY = event.screenY - y; $document.on('mousemove', mousemove); $document.on('mouseup', mouseup); }); element.children().on('mousedown', function(event) { if( 'A'===this.tagName || 'INPUT'===this.tagName || 'TEXT'===this.tagName || 'BUTTON'===this.tagName || 'SELECT'===this.tagName || 'PRE'===this.tagName ){ event.stopPropagation(); try{ this.removeEventListener('mousemove', mousemove); this.removeEventListener('mouseup', mouseup); }catch(err){ console.warn(err); } } }); function mousemove(event) { y = event.screenY - startY; x = event.screenX - startX; element.css({ top: y + 'px', left: x + 'px' }); } function mouseup() { $document.off('mousemove', mousemove); $document.off('mouseup', mouseup); } }; }) /** * try, http://plnkr.co/edit/HL9zaSlApLNMzN6OQlgg?p=preview modules.json [{ "name": "applications1", "url": "^/templates/applications1", "parent": "authenticated", "abstract": false, "views": [{ "name": "", "templateUrl": "html/templates/basicLayout.html" }, { "name": "header@applications1", "templateUrl": "html/templates/header.html" } ]}, { "name": "login", "url": "/login", "abstract": false, "views": [{ "name": "", "templateUrl": "html/admin/loginForm.html" }] }] .provider('$frdlSMAddState', ['$stateProvider', function $frdlSMAddStateProvider( $stateProvider ) { this.$get = function ($state, $stateParams, $rootScope){ var newState = $state; try{ var getExistingState =$stateProvider.get(newState.name); if(getExistingState !== null){ return getExistingState; } }catch(err){ } var state = { name : newState.name, "url": newState.url, "parent": newState.parent, "abstract": newState.abstract, "views": {} }; frdl.a.forEach(state.views, function(view) { state.views[view.name] = { templateUrl: view.templateUrl, }; }); $stateProvider.state( $.extend(state, newState)); return { state, $stateParams, $rootScope }; }; }]) */ ; (function() { function initNgFlows(element) { var delay = 1000; if(true !== frdl.angularBootstrapable())return frdl.UI.Compile(delay); var moduleElements = frdl.$q('*[ng-flows]:not([flow-bootstrap-value="stop"])', true, element); if(0===moduleElements.length)return; for(var i = 0; i < moduleElements.length; i++) { var moduleElement = moduleElements[i]; if(true !== frdl.angularBootstrapable())return frdl.UI.Compile(delay + 250); if(moduleElement.hasAttribute('flow-bootstrap-value')){ if(new Date().getTime() - 30 * 1000 < parseInt(moduleElement.getAttribute('flow-bootstrap-value'))){ continue; } if(new Date().getTime() - 60 * 1000 > parseInt(moduleElement.getAttribute('flow-bootstrap-value'))){ if(moduleElement.getAttribute('ng-flows') === moduleElement.getAttribute('ng-bootstrapped')){ moduleElement.setAttribute('flow-bootstrap-value', 'stop' ); moduleElement.setAttribute('flow-bootstrap-stopped', new Date().getTime() ); continue; } } if(moduleElement.getAttribute('ng-flows') === moduleElement.getAttribute('ng-bootstrapped')){ continue; } } if(moduleElement.hasAttribute('ng-flow')){ moduleElement.setAttribute('ng-flows', ((moduleElement.hasAttribute('ng-flows')) ? moduleElement.getAttribute('ng-flows') + ',' : '') + moduleElement.getAttribute('ng-flow')); continue; } if(moduleElement.hasAttribute('ng-app')){ moduleElement.setAttribute('ng-flows', ((moduleElement.hasAttribute('ng-flows')) ? moduleElement.getAttribute('ng-flows') + ',' : '') + moduleElement.getAttribute('ng-app')); continue; } if(!moduleElement.hasAttribute('ng-flows'))continue; var _m = str_replace(' ', '', moduleElement.getAttribute('ng-flows')); if(''===_m)continue; if( /* frdl.hasScope(moduleElement) || */ ( moduleElement.hasAttribute('ng-bootstrapped') && str_replace(' ', '', moduleElement.getAttribute('ng-bootstrapped') ).length >= _m.length ) ) { continue; } var already =str_replace(' ', '', moduleElement.getAttribute('ng-bootstrapped') ).split(","); /* var module = moduleElement.getAttribute('ng-flows').replace(/ /g,'').split(","); */ var mods = _m.split(","), module = []; var f = true, guiFound = false; frdl.each(mods, function(i,m){ if(''===m)return true; if(__GUID_ND__ === m)guiFound=true; try{ if('object'!==typeof frdl.a.module(m))f=false; }catch(err){ f=false; if(1 < frdl.debug.mode())console.log('AngularJS Module "'+m+'" not loaded yet, skipping bootstrap...'); } if(true === f && -1 === already.indexOf(m)){ module.push(m); } }); if(false===f){ frdl.UI.Compile(delay); continue; } if(false === guiFound){ if(-1 === mods.indexOf(__GUID_ND__)){ moduleElement.setAttribute('ng-flows', moduleElement.getAttribute('ng-flows') + ',' + __GUID_ND__); if(-1 === module.indexOf(__GUID_ND__))module.push(__GUID_ND__); } } if( /* frdl.hasScope(moduleElement) || */ true !== frdl.angularBootstrapable() /* || moduleElement.hasAttribute('ng-bootstrapped') */) { frdl.UI.Compile(delay +250); continue; } var b = (moduleElement.hasAttribute('ng-bootstrapped')) ? html_entity_decode(moduleElement.getAttribute('ng-bootstrapped') )+ ',' : ''; $(moduleElement).trigger('beforebootstrap', [module, mods, already]); moduleElement.setAttribute('ng-bootstrapped', htmlentities(b + module.join(','))); frdl.a.bootstrap(moduleElement, module); moduleElement.setAttribute('flow-bootstrap-value', new Date().getTime() ); if(moduleElement.getAttribute('ng-flows') === moduleElement.getAttribute('ng-bootstrapped')){ moduleElement.setAttribute('flow-bootstrap-value', 'stop' ); moduleElement.setAttribute('flow-bootstrap-stopped', new Date().getTime() ); } $(moduleElement).trigger('bootstrapped', [module, mods, already]); } } var c = 100; frdl.UI.Compile = function(delay){ var Func = ('undefined' !== typeof webfan && 'function' === typeof webfan.$Async && false === webfan.$Async instanceof Promise) ? webfan.$Async : setTimeout; if(!!isNaN(delay))var delay=100; c = c + 10; if(100 > c)c=100; if(5000 < c)c=5000; if('complete'!==document.readyState || true !== frdl.angularBootstrapable()){ Func(function(){ frdl.ready(frdl.UI.Compile); }, delay + c); return; } Func(function(){ frdl.ready(function(){ frdl.a.element(document).ready(function() { initNgFlows(document); }); }); }, delay + 1); }; }()); }); (function(){ 'use strict'; frdl.UI.widgets = []; var _i = -1; (function(baseObj, funcName) { funcName = funcName || "Widget"; function Widget(c){ var data = {}; var id = id=++_i; /* function Widget(config){ this.id=++_i; return this.__construct(config); } Widget.prototype.__construct = function(config){ this.config = config; return this; }; */ var config; var __getConfig = function () { var c = config; return c; }; var __setConfig = function (val) { var _new = val, _old = config; console.warn('Changing widget config is not supported yet (ToDo)'); var merged = $.extend(_old, _new); /* e.g. config = merged ; */ }; var ReadOnly = function(v){ console.warn('Trying to set readonly Widget property FAILED: ' + v); }; /* this.instantiated = true; return this.__construct(config); */ config = c; var defProp = false; if(Object.defineProperty) { defProp = true; }else if(Object.prototype.__defineGetter__) { this.__defineGetter__('config', function(){ return __getConfig(); } ); }else{ console.warn('Missing Object.defineProperty and Object.prototype.__defineGetter__ - Fallback to UNSAFE configuration readable!'); this.config = config; } if(Object.defineProperty) { defProp = true; }else if(Object.prototype.__defineSetter__) { this.__defineSetter__('config', function(val){ return __setConfig(val); } ); }else{ console.warn('Missing Object.defineProperty and Object.prototype.__defineSetter__ - Fallback to UNSAFE configuration writeable!'); this.config = config; } if(true === defProp){ Object.defineProperty(this, 'config', { get : function(){ return __getConfig(); }, set : function(val){ return __setConfig(val); } }); Object.defineProperty(this, 'id', { get : function(){return id;}, set : function(val){ return ReadOnly(val); } }); }else{ this.id = id; } } Widget.prototype.getElement = function(){ return config.element; }; Widget.prototype.getID = function(){ return this.id; }; Widget.prototype.deploy = function(){ }; Widget.prototype.data = function(){ var args = Array.prototype.slice.call(arguments); if(1 === args.length && 'object' === typeof args[0]){ for(var k in args[0]){ data[k]=args[0][k]; } return this; }else if(1 === args.length && 'string' === typeof args[0]){ return data[args[0]]; }else if(2 === args.length && 'string' === typeof args[0]){ data[args[0]] = args[1]; return this; }else if(0 === args.length){ return data; }else{ return undefined; } }; /* Widget.prototype.instantiate = function(){ }; Widget.prototype.config = function(){ }; Widget.prototype.create = function(){ }; .$$on(run) Widget.prototype.run = function(ev, data){ if(frdl.debug.mode() >0 )console.log(JSON.stringify(ev) +JSON.stringify(data) ); }; Widget.prototype.intent = function(){ }; Widget.prototype.flow = function(){ }; */ baseObj[funcName]=Widget; }(frdl, 'Widget')); frdl.UI.getWidget = function(id){ var w = null; /* frdl.UI.widgets = frdl.filter(frdl.UI.widgets, function(w){ return 'undefined' !== typeof w; }, false); */ if(!isNaN(parseInt(id))){ frdl.each(frdl.UI.widgets, function(i,wgt) { if(parseInt(id)===wgt.getID()){ w = wgt; return false; } }); }else if('string'===typeof id){ frdl.each(frdl.UI.widgets, function(i,wgt) { var c = wgt.config; if( id===c.widget.name._short || id===c.id || id===c.widget.name.__text || c.widget._id===id){ w = wgt; return false; } ;}) }else if('object' === typeof id || 'function'===typeof id){ w = frdl.UI.widgets[frdl.UI.widgets.indexOf(id)] || null; if(null===w){ frdl.each(frdl.UI.widgets, function(i,wgt) { if(id===wgt.getElement()){ w = wgt; return false; } }); } } return w; }; }()); /* frdl.UI.widget -> methods (if invoked without argument) frdl.UI.widget('<div></div>','frdl/webfan', $('body'), true); */ var _widget = { createHtmlWrap : function(el, _link, dest, invokeIfExistsAlready){ var u = new frdl.Url(_link); var tok = u.getScheme() + '://components/', widgetLoaded = false, eLoaded = false; var url = u.urlMakeNew(); var component = str_replace(tok,'',url); component = str_replace( u.getScheme() + '://example.com/','',component); component = str_replace( 'widget://','',component); if(true===invokeIfExistsAlready){ /* var widget = frdl.UI.getWidget(component); if(null!== widget && 'object'===typeof widget){ $(widget.element).trigger('run', widget.$scope); return widget; } */ var widgetFound = []; frdl.each(document.querySelectorAll('*[data-frdl-component$="'+component+'"]'),function(i,widgetElement){ var widget = frdl.UI.getWidget(widgetElement.getAttribute('data-frdl-component-widget-id')); if(null!==widget){ widgetFound.push(widget); $(widgetElement).trigger('run', widget.$scope); } }); if(0<widgetFound.length){ return widgetFound; } } if('undefined'===typeof dest)var dest = document.body/*querySelector('body')*/; el = $(el) /* .wrapAll('<frdl></frdl>') */ .attr('data-frdl-component', _link) .attr('data-frdl-desktop-widget', _link) .prependTo($(dest)) ; setTimeout(function(){ $(document).trigger('readystatechange'); },1); } }; frdl.UI.widget = function(el,_link, dest, invokeIfExistsAlready){ /* todo : move this to event-state !!! */ if('undefined' === typeof jQuery || 'undefined' === typeof $){ setTimeout(function(){ frdl.UI.widget(el,_link, dest, invokeIfExistsAlready); },125); console.warn('jQuery still undefined in frdl.UI.widget()'); return _widget; } if('object'===typeof el && el.hasAttribute('data-frdl-component-loaded-script') && 'true'===el.getAttribute('data-frdl-component-loaded-script')){ return; } if('undefined'===typeof el && 'undefined'===typeof _link && 'undefined'===typeof dest ){ return _widget; } if('string'===typeof el && '>' !== el.substr(-1)){ el = document.querySelector(el); /* if('object'!==typeof el){ console.error('Cannot create widget'); return; } */ } else if('string'===typeof el && '>' === el.substr(-1)){ return _widget.createHtmlWrap(el, _link, dest, invokeIfExistsAlready); } if('true' === el.getAttribute('data-frdl-component-initiated') ){ return; } var u = ('string'===typeof _link) ? new frdl.Url(_link) : new frdl.Url(el.getAttribute('data-frdl-component')); var tok = u.getScheme() + '://components/', widgetLoaded = false, eLoaded = false; var url = u.urlMakeNew(); var component = str_replace(tok,'',url); component = str_replace( u.getScheme() + '://example.com/','',component); component = str_replace( 'widget://','',component); if(true===invokeIfExistsAlready){ var widget = frdl.UI.getWidget(component); if(null!==widget && 'object'===typeof widget){ $(widget.element).trigger('run', widget.$scope); return widget; } } el.setAttribute('data-frdl-component-initiated', 'true'); if('components'===u.getHost() || 'example.com'===u.getHost()){ url = frdl.route('API_COMPONENT_MAIN', null, null, component); url = str_replace('/app.js', '', url); }else{ u.setScheme('http'); url = u.urlMakeNew(); } url = str_replace( 'widget://','http://',url); if('function'===typeof frdl_webfan_flow_advertising_external_linking){ frdl_webfan_flow_advertising_external_linking(new frdl.Url(url).getHost()); } var widget_dir = url, createWidgetLink = true; if(null === frdl.$q('*[href="'+widget_dir+'"]', false)){ createWidgetLink =true; }else{ frdl.each(frdl.$q('*[href="'+widget_dir+'"]'), function(i,el){ if(__WIDGET_REL__ !== el.getAttribute('rel'))return true; createWidgetLink=false; return false; }); } if('/' !== url.substr(-1)){ url += '/'; } frdl.UI.defer(); $.ajax( { url: url + 'config.xml', crossDomain: true, cache:true, headers: {'X-Requested-With': 'XMLHttpRequest'/*, 'Origin' : new frdl.Url().getScheme() + '://' + new frdl.Url().getHost() */ }, type: 'GET', dataType: 'XML', data: {} } ) .done(function(response) { frdl.UI.defer(); var module = module || global; var config = module.widget = wjslX2JS.xml2json(response); if('undefined'===typeof config.widget){ console.error('Cannot get config file of '+component); return false; } config.directory = url; /* $( frdl.UI ).trigger( 'flow:widget:instantiate', [ el, component, config ] ); var widget = frdl.UI.getWidget(el.getAttribute('data-frdl-component-widget-id')); $(el).on('run', { widget:widget }, function( event, data){ if(1<parseInt(frdl.debug.mode())) console.log('widgetElement run event...' + JSON.stringify(data)); }); */ if(!config.widget.content.length){ config.widget.content=[config.widget.content]; } var c=0; frdl.each(config.widget.content, function(i, content){ c++; frdl.UI.defer(); eLoaded=false; var _url = (''!==new frdl.Url(content._src).getScheme()) ? '' : url; if('text/javascript' === content._type || 'application/javascript' === content._type || 'application/x-javascript' === content._type ){ if('undefined'!==typeof content.__cdata){ webfan.$Async(function(){ try{ module.sourceUrl = url + 'config.xml#'+c; eval(content.toString()); if(c===config.widget.content.length)eLoaded=true; }catch(err){ console.error(err); } },1); } if('string'===typeof content._src){ /* frdl.getScript(_url + content._src, function(){ if(c===config.widget.content.length)eLoaded=true; }, (('once'===content['_data-frdl-require'])?true:false), false); */ require('5:'+_url + content._src, function(mod) { if(c===config.widget.content.length)eLoaded=true; }, null, 'application/x-javascript'); } }else if('text/html' === content._type ){ if('undefined'!==typeof content.__cdata){ webfan.$Async(function(){ $( el ).append( content.toString() ); },250); } if('string'===typeof content._src){ require('5:'+_url + content._src, function(html) { $( el ).append( html.content ); if(c===config.widget.content.length) eLoaded=true; }, null, 'text/html'); }else{ if(c===config.widget.content.length) eLoaded=true; } }else if('text/css' === content._type ){ if('undefined'!==typeof content.__cdata){ $( el ).append( '<style type="text/css">'+content.toString() +'</style>'); } if('string'===typeof content._src){ require('5:'+_url + content._src, function(css) { if(c===config.widget.content.length)eLoaded=true; try { var blob = new Blob([css.content], {type: 'text/css'}); } catch (e) { var bb = new (window.WebKitBlobBuilder || window.MozBlobBuilder); bb.append(css.content); var blob = bb.getBlob('text/css'); } var src = (window.webkitURL || window.URL).createObjectURL(blob); frdl.getCSS( src, el, (('once'===content['_data-frdl-require'])?true:false) ); }, null, 'text/css'); } if(c===config.widget.content.length)eLoaded=true; } }); widgetLoaded=true; $( frdl.UI ).trigger( 'flow:widget:instantiate', [ el, component, config ] ); var widget = frdl.UI.getWidget(el.getAttribute('data-frdl-component-widget-id')); $(el).on('run', { widget:widget }, function( event, data){ if(1<parseInt(frdl.debug.mode())) console.log('widgetElement run event...' + JSON.stringify(data)); }); if(true===createWidgetLink){ var lnk = frdl.Dom.create('link'); lnk.setAttribute('rel', __WIDGET_REL__); lnk.setAttribute('href', widget_dir); frdl.Dom.add(lnk, frdl.Dom.getTagNames('head')[0]); } frdl.addReadyCheck(function(){ return (true===widgetLoaded && true === eLoaded) ? true : false; }); frdl.ready(function(){ /* el.setAttribute('data-frdl-component-loaded-script', 'true'); */ el.setAttribute('data-flow-widget', 'config.loaded'); frdl.UI.load(); frdl.UI.Compile(500); frdl.UI.Compile(1500); frdl.UI.load(); frdl.UI.Compile(5000); webfan.$Async(function(){ $(el).trigger('run', [widget]); $(document).trigger('readystatechange') },1500); }); }) .fail(function(jqXHR, textStatus) { console.error('Error: ' + url + 'config.xml ' + jqXHR.status); }) .always(function() { if(1<parseInt(frdl.debug.mode()))console.log('Loading widget "' + component+'"...'); widgetLoaded=true; }); }; frdl.ready(function(){ $( frdl.UI ).on( 'flow:widget:instantiate', { engine : { origin : new frdl.Url(frdl.__FILE__()).getScheme() + '://' + new frdl.Url(frdl.__FILE__()).getHost(), state : 'dev' }, site : { origin : new frdl.Url().getScheme() + '://' + new frdl.Url().getHost(), state : 'dev' } }, function( event, el, component, config ) { config.element = el; config.element.setAttribute('data-frdl-component-initiated', 'true'); /* var widget = f$(config); /* .flow... if(true===frdl.wd().o.debug)alert(JSON.stringify(widget )); */ var Widget = new frdl.Widget(config); frdl.$(Widget); frdl.UI.widgets.push(Widget); config.element.setAttribute('data-frdl-component-widget-id', Widget.id); el.widget = function(){ return frdl.UI.getWidget(el.getAttribute('data-frdl-component-widget-id')); }; $(el).on('run', function(ev, data){ Widget.$$run(ev, data); }); /* if('undefined'!==typeof frdl.wd() && 'undefined'!==typeof frdl.wd().o && true===frdl.wd().o.debug)console.log('Loading widget://'+JSON.stringify(Widget)); $( config.element ).trigger( 'flow:widget:create', [ component, Widget, event.data ] ); console.log('Test trigger widget event 1'); */ }); }); var renderFuncs = { 'forMobile' : function(){ var initialPageWrap = frdl.$q('body *[data-role="page"]'); if(0 === initialPageWrap.length){ $('body' ).wrapInner( '<div data-dom-cache="false" data-role="page" data-frdl-mod="nodesktop" id="nodesktop-'+ str_replace('.', '-', new frdl.Url().getHost()) + '-' + Sha1.hash(new frdl.Url().urlMakeNew()) + '-' + Sha1.hash(document.title) +'" style="top:0px;left:0px;right:0px;bottom:0px;height:auto;width:auto;"></div>' ); } try{ console.log('Prepare for jqm'); if(true===frdl.UI.isMobileTheme){ console.warn('REDUNDANT: Prepare for jqm'); return; } frdl.watchFor('a[href*=":\/\/"]:not([data-flow-prepared-frdl-ajax-link-boddystripped*="true"]):not([frdl-ajax-link-boddystripped])').every(function(el){ /* frdl.watchFor('a[href]:not([data-flow-prepared="true"]):not([frdl-ajax-link-boddystripped])').every(function(el){*/ el.setAttribute('data-flow-prepared-frdl-ajax-link-boddystripped', 'true'); $(el).attr('rel', 'external'); }); webfan.$Async(function(){ $.mobile.pushStateEnabled = false; $.mobile.hashListeningEnabled = false; /* frdl.watchFor('a[ui-sref]:not([data-flow-prepared-ui-sref="true"]):not([frdl-ajax-link-boddystripped])').every(function(el){ */ frdl.watchFor('a[ui-sref]').every(function(el){ setTimeout(function(){ frdl.$j(el).attrAdd('data-flow-prepared', 'true'); $(el) .attr('href', str_replace('##', '#',$(el).attr('href'))) .attr('href', str_replace('##', '#',$(el).attr('href'))) .attr('href', str_replace('##', '#',$(el).attr('href'))) .attr('href', str_replace('#', '',$(el).attr('href'))) .attr('href', '#'+$(el).attr('href')) ; },750); }); },250); $('*[data-role="page"]').page({ create: function( event, ui ) { $.mobile.pushStateEnabled = false; $.mobile.hashListeningEnabled = false; $.mobile.initializePage(); $.mobile.loading( 'hide' ); } }); $('*[data-role="page"]').trigger('create'); /**/ setTimeout(function(){ $.mobile.pushStateEnabled = false; $.mobile.hashListeningEnabled = false; },800); frdl.UI.isMobileTheme = true; }catch(err){ console.error(err); } }, 'forMinimal' : function(){ /* Deprecated data-mod-framed !!! */ $('*[data-mod-framed="no"]').hide(); $('*[data-mod-framed="yes"]').show(); $('*[data-wd-onreduce="hide"]').hide(); }, 'forFullscreen' : function(){ /* Deprecated data-mod-framed !!! */ $('*[data-mod-framed="no"]').show(); $('*[data-mod-framed="yes"]').hide(); }, /* Roko C. Buljan http://stackoverflow.com/questions/6258521/clear-icon-inside-input-text */ 'addClearableInputs' : function(){ console.deprecated('Using the jQuery plugin is prefered instead of addClearableInputs fn!'); frdl.Dom.createCSSClass('.flow-clearable', "background: #fff url('data:image/gif;base64,R0lGODlhBwAHAIAAAP///5KSkiH5BAAAAAAALAAAAAAHAAcAAAIMTICmsGrIXnLxuDMLADs=') no-repeat right -10px center; border: 1px solid #999; padding: 3px 18px 3px 4px; border-radius: 3px; transition: background 0.4s;"); frdl.Dom.createCSSClass('.flow-clearable.x', "background-position: right 5px center;"); frdl.Dom.createCSSClass('.flow-clearable.onX', "cursor: pointer;"); frdl.Dom.createCSSClass('.flow-clearable.-ms-clear', "display: none; width:0; height:0;"); function tog(v){return v?'addClass':'removeClass';} $(document).on('input', '.flow-clearable', function(){ $(this)[tog(this.value)]('x'); }).on('mousemove', '.x', function( e ){ $(this)[tog(this.offsetWidth-18 < e.clientX-this.getBoundingClientRect().left)]('onX'); }).on('touchstart click', '.onX, .x', function( ev ){ ev.preventDefault(); $(this).removeClass('x onX').val('').change(); }); $('*[data-clear-btn="true"]').addClass("flow-clearable"); $('.flow-clearable').trigger("input"); }, 'inputSearchPolyfill':function(){ /* * https://github.com/dwiyatci/jquery-inputsearch * License: WTFPL https://raw.githubusercontent.com/dwiyatci/jquery-inputsearch/master/WTFPL-LICENSE.txt DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO. */ /** * jQuery plugin for automagically transforming `input[type="text"]` elements * into `input[type="search"]`-like elements. * @author Glenn Dwiyatcita * @date 20.08.2015 * @version 0.2.0 */ (function ($) { $.fn.inputSearch = function (options) { var elements = this, searchIconImgData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUg' + 'AAABAAAAAQCAQAAAC1+jfqAAAASklEQVR42mNwZcAPGe' + 'itQMn1PxwqYVMAktAHQxALqwJ9V15XDiDWx62AA0hzYF' + 'egjt8ESajjcLhBCsn9WH0BEdTBHQ4gackBigsAp89pbW' + 'KQMm4AAAAASUVORK5CYII=', clearIconImgData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUg' + 'AAABAAAAAQCAQAAAC1+jfqAAAAdklEQVR42pWRPQ7AIA' + 'iFuVknFk9hwuxZXBwdvCkFa9X607R5Azzel6gICO+C74' + 'DBhFyUxA2Aq+Et1wNmilWmATEPSDqtIJ3W2AAugUb0nP' + 'QAl5CqnwCbnd0BV2hXR4TlJUMDcPlM7BdFU0zjqg/0Nf' + 'Ti/n/WRic9QaXT/imcNgAAAABJRU5ErkJggg=='; options = $.extend({ searchIconVisible: true, onClear : $.noop }, options); var observer = null; if (window.MutationObserver) { observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { $(mutation.target).data() .refreshWrapperVisibility(); }); }); } return elements .filter('input') .each(function () { var wrapper = $('<div>') .addClass('jis-input-wrapper') .css({ display : 'inline-block', position: 'relative' }); var icon = $('<img>') .attr({ src : searchIconImgData, 'class': 'jis-icon-search' }) .css({ position : 'absolute', width : 16, height : 16, visibility: options.searchIconVisible ? 'visible' : 'hidden' }) .on('click', function () { if ($(this).hasClass('jis-icon-clear')) { i .val('') .focus() .triggerHandler('input'); options.onClear(); } }); var i = $(this) .data({ refreshWrapperVisibility: function () { i.parent('.jis-input-wrapper').css({ display : i.css('display'), visibility: i.css('visibility'), opacity : i.css('opacity') }); } }) .on('input', function () { var query = $(this).val(), src = icon.attr('src'); if (query.length > 0) { if (src !== clearIconImgData) { icon .attr('src', clearIconImgData) .toggleClass('jis-icon-search', false) .toggleClass('jis-icon-clear', true) .css({ cursor : 'pointer', visibility: 'visible' }); } } else { if (src !== searchIconImgData) { icon .attr('src', searchIconImgData) .toggleClass('jis-icon-search', true) .toggleClass('jis-icon-clear', false) .css({ cursor : 'auto', visibility: options.searchIconVisible ? 'visible' : 'hidden' }); } } }) .wrap(wrapper) .after(icon); var visible = i.is(':visible'); i.show(); var gutter = 4, paddingRight = icon.outerWidth() + gutter, width = parseFloat(i.css('width')), adjustedWidth = width - paddingRight, position = i.position(); i.css({ width : adjustedWidth, paddingRight: paddingRight }); icon.css({ top : position.top + (gutter / 2), left: position.left + adjustedWidth + gutter }); /*if (null!==observer) { try{ observer.observe(i, { attributeFilter: ['style'] }); }catch(err){ if(0<frdl.debug.mode()){ console.error(err); }else{ console.warn(err); } } } else { */ var _I =function () { try{ if('function'===typeof i.data().refreshWrapperVisibility) i.data().refreshWrapperVisibility(); }catch(err){ clearInterval(_I); } }; setInterval(_I, 200); /*}*/ if (!visible) { i.hide(); } i.triggerHandler('input'); }); }; }(jQuery)); frdl.watchFor('*[data-search-btn="true"]:not([data-flow-prepared*="true"])').every(function(el){ frdl.$j(el).attrAdd('data-flow-prepared', 'true'); $(el).inputSearch({ searchIconVisible: true}); }); frdl.watchFor('*[data-clear-btn="true"]:not([data-flow-prepared*="true"])').every(function(el){ frdl.$j(el).attrAdd('data-flow-prepared', 'true'); $(el).inputSearch({ searchIconVisible: false}); }); } /*eo inputSearchPolyfill */ ,'default' : function(){ } }; frdl.UI.rendering = function(o){ if('string' === typeof o){ o = { action : o }; }else if('function' === typeof renderFuncs[o.action]){ o=o; }else { o = { action : 'default' }; } renderFuncs[o.action](); return frdl.UI; }; frdl.ready(function(){ frdl.UI.rendering('inputSearchPolyfill'); }); if('function' !== typeof frdl.lang){ frdl.lang = function(langStrings, allSelectors, registeredSelectors){ frdl.getScript(frdl.route('API_COMPONENT_MAIN', null, null, 'locale'), function(){ frdl.ready(function(){ frdl.lang(langStrings, allSelectors, registeredSelectors); }); }, true, false); }; } if('function' !== typeof frdl.translate){ frdl.translate = function(lang, allSelectors, registeredSelectors){ frdl.getScript(frdl.route('API_COMPONENT_MAIN', null, null, 'locale'), function(){ frdl.ready(function(){ frdl.translate(lang, allSelectors, registeredSelectors); }); }, true, false); }; } if('function' !== typeof frdl.langstr){ frdl.langstr = function(modul){ frdl.getScript(frdl.route('API_COMPONENT_MAIN', null, null, 'locale'), function(){ frdl.ready(function(){ frdl.langstr(modul); }); }, true, false); }; } window.addEventListener("online", function() { /* */ console.log('Welcome back online...!'); }, true); window.addEventListener("offline", function() { var str = "You're now offline. The application may not work as expected until you go online again."; if(0<parseInt(frdl.debug.mode())){ alert(str); } console.log(str); }, true); window.addEventListener("beforeunload", function() { var debugmode = frdl.debug.mode(); if(null===debugmode || undefined=== debugmode || isNaN(debugmode))debugmode=0; if('undefined'!==typeof frdl && 'undefined'!==typeof frdl.$DB)frdl.$DB.save('settings/debugmode', parseInt(frdl.debug.mode())); }, true); (function(){ frdl.ready(function(){ webfan.$Async(function(){ var debugmode = frdl.$DB.load('settings/debugmode'); if(null===debugmode || undefined=== debugmode || isNaN(debugmode))debugmode=0; if(!isNaN(debugmode)){ frdl.debug.mode(parseInt(debugmode)); if(0<parseInt(debugmode)){ $(document).ready(function(){ frdl.alert.log('DEBUG ENABLED ('+frdl.debug.mode()+')'); }); } } },250); }); }()); /* frdl.addReadyCheck(function(){ return ('complete' === document.readyState) ? true : false; }); */ (function(){ frdl.watchFor('iframe:not([frdl-nwtrusted])').every(function(el){ frdl.$j(el).attrAdd('data-flow-prepared', 'true'); $(el) .attr('nwdisable', 'true') .attr('nwfaketop', 'true') ; }); frdl.ready(function(){ var obs = frdl.watchFor('*[data-frdl-component*=":"]:not([data-frdl-component-initiated="true"])').every(function(el){ frdl.UI.widget(el); }); }); /* frdl.UI.rendering('default'); document.addEventListener("mobileinit", function(){ $.extend( $.mobile , frdl.UI.o.jQueryMobile.o); });*/ $( window ).one( "mobileinit", function() { $.extend( $.mobile , frdl.UI.o.jQueryMobile.o); }); frdl.ready(function(){ frdl.UI.load(); var loadComponents = function(opts){ frdl.each(frdl.$q('*[data-frdl-component*=":"]:not([data-frdl-component-initiated="true"])'), function(i,el){ if('true'===el.getAttribute('data-frdl-component-initiated') || 'config.loaded'===el.getAttribute('data-flow-widget') || 'true'===el.getAttribute('data-frdl-component-loaded-script') ){ return; } var url = null; var u = new frdl.Url(el.getAttribute('data-frdl-component')); var tok = u.getScheme() + '://components/'; var component = str_replace(tok,'',el.getAttribute('data-frdl-component')); var version = el.getAttribute('data-frdl-component-version'); if('string' === typeof version && '' !== version && '*' !== version && 'master' !== version && 'dev-master' !== version)component += '/' + version; var version_query = el.getAttribute('data-frdl-component-version_query'); /* <a rel="widget" href="http://example.org/exampleWidget"> The Example Widget </a> $( el ).wrapAll( "<frdl></frdl>" ); */ if(''===u.getScheme()){ url = component + (2>(explode('.',u.getFile()).length) ? '/app.js' : ''); }else if('flow' === u.getScheme()){ url = frdl.route('API_COMPONENT_MAIN', null, null, component); } else if('widget' === u.getScheme()){ return frdl.UI.widget(el); } console.log('You SHOULD use the widget:// flow as the flow:// scheme has limited functionallity! ('+url+')'); var widget_dir = str_replace('/app.js', '', url), createWidgetLink = true; if(0 === document.querySelectorAll('*[href="'+widget_dir+'"]').length){ createWidgetLink =true; }else{ frdl.each(frdl.$q('*[href="'+widget_dir+'"]'), function(i,el){ if(__WIDGET_REL__ !== el.getAttribute('rel'))return true; createWidgetLink=false; return false; }); } if(true===createWidgetLink){ var lnk = frdl.Dom.create('link'); lnk.setAttribute('rel', __WIDGET_REL__); lnk.setAttribute('href', widget_dir); frdl.Dom.add(lnk, frdl.Dom.getTagNames('head')[0]); } if('string' === typeof version_query && '' !== version_query){ var u=new frdl.Url(url); u.setParam('version', version_query); url=u.urlMakeNew(); } if(null!==url){ frdl.getScript(url, function(){ el.setAttribute('data-frdl-component-loaded-script', 'true'); frdl.ready(function(){frdl.UI.Compile(100)}); }, false, false); } }); }; /* setTimeout(function(){ loadComponents({}); },1); */ frdl.Hash.pushState(false); frdl.Hash.on('/app=([A-Za-z0-9_-]+)', function(path, parts) { if(frdl.debug.mode() >1 )console.log('Loading workspace, app: '+ parts[1]); frdl.wd(true); }); frdl.ready(function(){ frdl.UI.Compile(500); document.addEventListener('readystatechange', frdl.UI.Compile) ; setTimeout(function(){ loadComponents({}); },250); document.addEventListener('readystatechange', function(){ setTimeout(function(){ frdl.ready(loadComponents); },100); }) ; }); }); /* window.addEventListener("hashchange", function(){ setTimeout(function(){ $(document).trigger('readystatechange') ; },1); }); */ /* frdl.ready(function(){ */ $(document).ready(function(){ if(true===frdl.UI.reduced()){ frdl.UI.rendering('forMinimal'); }else{ frdl.UI.rendering('forFullscreen'); } if( /* false === frdl.Device().isDesktop || true === frdl.Device().frdlApp || true === frdl.Device().isApp*/ (true === frdl.Device().isTouchable && 'Explorer' !== frdl.Device().browser) || true === frdl.Device().isMobile || true === frdl.Device().isTablet || true === navigator.isMobile || true === navigator.isTablet /* || false === frdl.Device().isDesktop */ ){ frdl.UI.rendering('forMobile'); } }); /* }); */ }()); frdl.UI.emitter.once('boot gui components', function(){ console.log('boot gui components'); console.dir(this); console.dir(arguments); frdl.ready(function(){ webfan.$Async(function(){ if('undefined' === typeof frdl.UI.progress){ $('body').prepend('<webfan name="webfan/progressbar" type="widget"></webfan>'); } },500); }); }); (function(){ 'use strict'; var _clean_frdl = frdl; var _clean_webfan = frdl.overload(webfan); frdl.noConflict = function() { return _clean_frdl; }; webfan.noConflict = function() { return _clean_webfan; }; }()); require.state.emit('resolved', { identifier : 'frdl.UI', module : frdl.UI }); require.state.emit('resolved frdl.UI', { identifier : 'frdl.UI', module : frdl.UI }); }(typeof exports !== 'undefined' ? global : (typeof this !== 'undefined' ? this : window)));