define(
'frdl',
['require', 'exports', 'module', 'feature!es6Symbol'
//, 'webfan/bootcache!mobile-detect', 'feature!Modernizr'
//#skipped dummies to garbage
, 'feature!Proxy'
, 'feature!customElements'
, 'webfan/bootcache!webfan/overload'
, 'webfan/bootcache!jQuery'
, 'webfan/bootcache!EventEmitter'
],
function(require, exports, module, es6Symbol
//, mobileDetect, moderniZr
//#skipped dummies to garbage
, ProxyPolyfillDummy
, customElementsPolyfillDummy
, overload
, jQuery
, EventEmitter
) {
let frdl = clone(overload).defaultProxy;
var k, libraryContext = requirejs.s.newContext('frdl');
for( k in libraryContext){
frdl[k] = libraryContext[k];
}
var mapLoader = function(){
requirejs.config({
map: {
'webfan/bootcache': {
'*': 'frdlcjs'
}
}
});
};
let URL = global.URL || global.webkitURL;
let requestFileSystem = global.requestFileSystem || global.webkitRequestFileSystem;
let resolveLocalFileSystemURL = global.resolveLocalFileSystemURL || global.webkitResolveLocalFileSystemURL;
navigator.temporaryStorage = navigator.temporaryStorage || navigator.webkitTemporaryStorage;
navigator.persistentStorage = navigator.persistentStorage || navigator.webkitPersistentStorage;
let BlobBuilder = global.BlobBuilder || global.MozBlobBuilder || global.WebKitBlobBuilder;
// frdl.webfan = {};
// frdl.webfan.$Async = requirejs.nextTick;
frdl.clone=clone;
frdl.extend=extend;
frdl.str_replace = str_replace;
frdl.html_entity_decode = html_entity_decode;
frdl.get_html_translation_table = get_html_translation_table;
frdl.htmlentities = htmlentities;
frdl.mt_rand = mt_rand;
frdl.base64_encode = base64_encode;
frdl.base64_decode = base64_decode;
frdl.base64_detect = base64_detect;
frdl.urlencode = urlencode;
frdl.urldecode = urldecode;
frdl.explode = explode;
frdl.strip_tags = strip_tags;
frdl.strpos = strpos;
frdl.overload=function(o, fn){
var no = require('webfan/bootcache!webfan/overload').make(o);
if('function'===typeof fn){
fn=[fn, fn];
}
if('undefined'!==typeof fn && 'undefined'!==typeof fn[0]){
no.__call=fn[0];
}
if('undefined'!==typeof fn && 'undefined'!==typeof fn[1]){
no.__get=fn[1];
}
};
frdl.debug = {
mode : function(m){
if('undefined'!==typeof m){
sessionStorage.setItem('frdl.debug.mode', m) ;
}
return (sessionStorage.getItem('frdl.debug.mode') ) ? sessionStorage.getItem('frdl.debug.mode') : 0;
}
};
frdl.EventEmitter = EventEmitter;
frdl.state = new frdl.EventEmitter;
//global.require.state=new frdl.EventEmitter;
Object.defineProperty(global.require || require, 'state', {
get : function(){
return frdl.state;
}
});
require(['feature!browser', 'feature!worker'], function(browser, worker){
if('undefined'===typeof browser)browser=false;
if('undefined'===typeof worker)worker=false;
frdl.browser=browser;
frdl.worker = worker;
});
require(['webfan/bootcache!fs'], function(fs){
frdl.fs =fs;
frdl.fs5 = fs;
frdl.fs.polyfill.check(true);
});
frdl.isTraversable = function(thing) {
return (('object' === typeof thing || 'array' === typeof thing) && null !== thing) ? true : false;
};
frdl.array_unique = function(array) {
return ("undefined" === typeof jQuery) ? array.filter(function(el, i, array) {
return i === arr.indexOf(el);
}) : $.grep(array, function(el, i) {
return i === $.inArray(el, array);
});
};
frdl.filterArray = function(arr, filter) {
var o = [];
for (var index = 0; index < arr.length; index++) {
if (filter(arr[index], index) === true) {
o.push(arr[index]);
}
}
return o;
};
frdl.shuffleArray = function(a) {
var j, x, i;
for (i = a.length; i; i--) {
j = Math.floor(Math.random() * i);
x = a[i - 1];
a[i - 1] = a[j];
a[j] = x;
}
};
frdl.filterObject = function(arr, filter) {
var o = {};
for (var k in arr) {
if (filter(arr[k], k) === true) {
o[k] = arr[k];
}
}
return o;
};
frdl.filter = function(arr, filter, recursive) {
if (true === recursive && true === _.isTraversable(arr)) {
arr = frdl.each(arr, function(i, v) {
arr[i] = _.filter(v, filter, recursive);
});
return arr;
}
if ('array' === typeof arr) {
return frdl.filterArray(arr, filter);
} else if ('object' === typeof arr) {
return frdl.filterObject(arr, filter);
} else {
return (true === filter(arr)) ? arr : undefined;
}
};
frdl.each = function(object, callback, args) {
var name, i = 0,
length = ('undefined' !== typeof object.length) ? object.length : undefined,
traversable = false;
if (true !== frdl.isTraversable(object)) {
traversable = false;
} else {
traversable = true;
}
if (args) {
if (false === traversable) {
callback.apply(object, args);
return object;
}
if (length === undefined) {
for (name in object)
if (callback.apply(object[name], args) === false)
break;
} else
for (; i < length;)
if (callback.apply(object[i++], args) === false)
break;
} else {
if (false === traversable) {
callback.call(object, 0, object);
return object;
}
if (length === undefined) {
for (name in object)
if (callback.call(object[name], name, object[name]) === false)
break;
} else
for (var value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {}
}
return object;
};
/*!# @license * Copied + modified from http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the Thanks! */
(function(InitBaseObj, InitFuncName, InitAddReadyCheckfuncName) {
var ThenEvent = function(baseObj, funcName, addReadyCheckfuncName) {
funcName = funcName || "ready";
baseObj = baseObj || window;
var readyList = [];
var readyFired = false;
var readyEventHandlersInstalled = false;
var defered = false;
var readyQueue = [];
function ready() {
var df = false;
frdl.each(readyQueue, function(i, v) {
if (true !== v()) {
defered = true;
df = true;
return false;
} else {
readyQueue[i] = null;
readyQueue = frdl.filter(readyQueue, function(v, i) {
if (null === v || 'function' !== typeof v)
return false;
return true;
}, false);
i--;
}
});
defered = df;
if (false === readyFired && false === defered && document.readyState === "complete") {
readyFired = true;
while (0 < readyList.length && false === defered && document.readyState === "complete") {
var Cb = readyList.shift();
var r = Cb.fn.call(window, Cb.ctx);
if ('boolean' === typeof r) {
if (true === r) {
readyList.push(Cb);
defered = true;
}
}
}
} else {
setTimeout(ready, 1);
}
}
baseObj[funcName] = function(callback, context) {
if (readyFired) {
setTimeout(function() {
try {
callback(context);
} catch (err) {
console.trace(err);
}
}, 1);
return;
} else {
readyList.push({
fn: callback,
ctx: context
});
}
if (document.readyState === "complete") {
try {
setTimeout(ready, 1);
} catch (err) {
console.error(err);
}
} else if (!readyEventHandlersInstalled) {
document.addEventListener("DOMContentLoaded", ready, false);
window.addEventListener("load", ready, false);
document.addEventListener("readystatechange", function() {
if (document.readyState !== "complete") {
if (true === readyFired) {
readyFired = false;
if (0 < readyList.length || 0 < readyQueue.length) {}
}
}
}, false, true);
readyEventHandlersInstalled = true;
}
return baseObj;
};
baseObj[addReadyCheckfuncName] = function(fn) {
if ('function' === typeof fn && 'function' === typeof readyQueue.push) {
readyQueue.push(fn);
}
readyFired = false;
return baseObj;
};
baseObj.If = function(fn) {
return baseObj[addReadyCheckfuncName](fn);
};
return baseObj;
};
InitBaseObj.addReadyEventListener = function(baseObj, funcName, addReadyCheckfuncName) {
return ThenEvent(baseObj, funcName, addReadyCheckfuncName);
};
InitBaseObj.addReadyEventListener(InitBaseObj, InitFuncName, InitAddReadyCheckfuncName);
}(frdl, "ready", 'addReadyCheck'));
// frdl.domReady = require('webfan/bootcache!domReady');
(function() {
'use strict';
const CONST = Symbol('Symbol.frdl.CONST');
class Node {
constructor (p) {
this[CONST]=Symbol(p);
this.valueOf = function valueOf(){
return this[CONST];
};
this.toString = function(){
return this[Symbol.toStringTag]('string');
};
}
get () {
return this.valueOf();
}
[Symbol.toPrimitive](hint){
if(hint == 'number') {
return this.id;
}
if(hint == 'string') {
return this.toString();
}
return this.valueOf();
}
[Symbol.toStringTag](hint){
return 'Symbol('+this.keyPath+' '+this.id+')';
}
}
/*
var FRDL_CONSTANTS = frdl.Symbol = {
CONST : CONST
};
*/
let FRDL_CONSTANTS = new Node('Symbol.frdl');
FRDL_CONSTANTS.CONST = CONST;
let _idc = -1;
Object.defineProperty(Symbol, 'frdl', {
'get': function() {
return FRDL_CONSTANTS;
},
'set': function(val) {
if ('string' !== typeof val) {
var s = false;
try {
val = JSON.stringify(val);
s = true;
} catch (err) {
s = false;
}
if (false === s) {
try {
val = val.toString();
s = true;
} catch (err) {
s = false;
}
}
if (false === s) {
val = '##@@##' + typeof val + (('undefined' !== typeof val.length) ? val.length : 'NaT') + '##@@##';
}
}
var kp = explode('.', val);
var parent = FRDL_CONSTANTS, current = FRDL_CONSTANTS;
var path = 'Symbol.frdl';
var Uri = '';
frdl.each(kp, function(pos, KEY){
path += '.'+KEY;
Uri += '/'+KEY;
let p = path;
let _uri = Uri;
let __id = ++_idc;
if(!parent.hasOwnProperty(KEY) /*&& ('function'!==typeof Object.getOwnPropertySymbols || -1 === Object.getOwnPropertySymbols(parent).indexOf(KEY) )*/){
var node = new Node(p);
Object.defineProperty(node, 'id',{
'get':function(){
return __id;
}
});
Object.defineProperty(node, 'uri',{
'get':function(){
return _uri;
}
});
Object.defineProperty(node, 'keyPath',{
'get':function(){
return p;
}
});
Object.defineProperty(parent, KEY,{
'get':function(){
return node
// .valueOf()
;
},
'set':function(n){
var k;
for(k in n){
parent[KEY][k]=n[k];
}
},
enumerable: true,
writeable: true,
configurable: true
});
current = parent[KEY] = node;
} else{
current = parent[KEY];
}
parent = current;
});
}
});
}());
Symbol.frdl = 'main.dependency.ready';
Symbol.frdl = 'LOAD.fs.polyfill';
Symbol.frdl = 'xhrWorker';
Symbol.frdl = 'CONSTANTS';
Symbol.frdl = 'Angular';
Symbol.frdl = 'Plugin';
Symbol.frdl = 'Widget';
Symbol.frdl = 'WebApp';
Symbol.frdl = 'Component'; //http://www.peterkroener.de/web-components-erklaert-teil-1-was-sind-web-components/
// Symbol.frdl = 'hps';
//Symbol.frdl = 'hps.module';
Symbol.frdl = 'Frdlweb';
Symbol.frdl = 'Frdlweb.EMITTERS'; //
Symbol.frdl = 'Frdlweb.FSM'; // FINAL_EVENT_STATES
//Symbol.frdl = 'Frdlweb.FESM'; // FINAL_EVENT_STATES
Symbol.frdl = 'Frdlweb.ESR'; // FINAL_EVENT_STATES required`s)
Symbol.frdl = 'Node.NAME';
Symbol.frdl = 'Node.$$$parent';
Symbol.frdl = 'Node.PARENT';
Symbol.frdl = 'fn.exec';
Symbol.frdl='fn.__call';
(function() {
'use strict';
//CONSTANTS = {}; frdl[Symbol.frdl.CONSTANTS.valueOf()]
//const CONSTANTS = new Map();
const CONSTANTS = Symbol.frdl.CONSTANTS.valueOf();
const EMITTERS = Symbol.frdl.Frdlweb.EMITTERS.valueOf();
const FSM = Symbol.frdl.Frdlweb.FSM.valueOf();
const ESR = Symbol.frdl.Frdlweb.ESR.valueOf();
function FrdlwebPrototype(){}
FrdlwebPrototype.prototype.VERSION = '0.0.1';
var Frdlweb = new FrdlwebPrototype;
Frdlweb[CONSTANTS] = new Map();
Frdlweb[FSM] = new WeakMap();
Frdlweb[EMITTERS] = new Map();
Frdlweb[ESR] = new Map();// FINAL_EVENT_STATES required`s)
const privates = new WeakMap();
frdl.MagicHelper = {
// emitter : new frdl.EventEmitter
};
privates.set(frdl.MagicHelper, Frdlweb);
frdl.MagicHelper.emitter=new frdl.EventEmitter;
Frdlweb[EMITTERS].set(require, frdl.state);
Frdlweb[EMITTERS].set(frdl, frdl.state);
Frdlweb[EMITTERS].set(frdl.MagicHelper, frdl.MagicHelper.emitter);
frdl.CONST = function(n,v, local){
if('undefined'!==typeof v && 'undefined'===typeof local){
local=true;
}
if('undefined'===typeof v){
if('undefined'!==typeof Frdlweb[CONSTANTS].get(n)){
return clone( Frdlweb[CONSTANTS].get(n) );
}
var p = explode('.', n), symFound = false,
cur = Symbol.frdl;
if('Symbol'===p[0])p.shift();
if('frdl'===p[0])p.shift();
frdl.each(p, function(i, KEY){
if('undefined'!==typeof cur[KEY]){
symFound=cur[KEY];
}else{
symFound = false;
return false;
}
cur = cur[KEY];
});
if(false!==symFound){
return symFound.valueOf();
}
throw n+' is undefined in frdl.CONST';
}
if(Frdlweb[CONSTANTS].has(n)){
throw n+' is already defined in frdl.CONST';
}
// const VALUE = v;
// Frdlweb[CONSTANTS][n]=VALUE;
if('string'===typeof n && false !== strpos(n, '.') ){
try{
Symbol.frdl = n;
n = 'Symbol.frdl.' + n;
var symb = eval(n) ;
n = ('Symbol'===typeof symb.valueOf() ) ? symb.valueOf() : str_replace('.', '_', arguments[0] );
}catch(err){
throw arguments[0]+' could not be resolved in frdl.CONST';
}
}
const VALUE = v;
Frdlweb[CONSTANTS].set(n, VALUE);
if(!local){
global[n] = VALUE;
}
return clone( Frdlweb[CONSTANTS].get(n) );
};
frdl.CONST.defined = function(n){
return (true!== Frdlweb[CONSTANTS].has(n)) ? false : true;
};
frdl.ready.dependencies = frdl.state.required([
// 'module loaded : ' + 'fs',
'module loaded : ' + 'webfan/frdl-main-x8'
// 'module loaded : ' + 'Slim'
], function(resolvedDependencies){
// console.log('resolvedDependencies', resolvedDependencies);
}, frdl.ready/*, false*/);
frdl.addReadyCheck(function() {
return frdl.ready.dependencies.stateReady();
});
Frdlweb[ESR].set(
frdl.ready,
frdl.ready.dependencies
);
if(false!==frdl.browser){
frdl.ready.dependencies.add('module loaded : webfan/navigator/simpledialog-9x');
frdl.ready.dependencies.add('module loaded : webfan/navigator/anchor-routing-9x');
frdl.ready.dependencies.add('module loaded : components/locale/jsin/jsin-9x');
}
Frdlweb[ESR].set(
frdl.ready,
frdl.ready.dependencies
);
// console.log('ESR:frdl.ready', Frdlweb[ESR].get(frdl.ready));
frdl.MagicHelper.addMethodCallback = function (obj, originalMethodName, $returns, callBackMethod, context){
var fnOriginal = obj[originalMethodName],
outcome;
context = context || obj;
if(!!$returns){
obj[originalMethodName] = function () {
var outcome = fnOriginal.apply(this, arguments);
outcome = frdl.extend(outcome, callBackMethod.apply(this, arguments) || {});
return outcome;
};
}else{
obj[originalMethodName] = function () {
var outcome = fnOriginal.apply(this, arguments);
callBackMethod.apply(this, arguments);
return outcome;
};
}
};
/*
frdl.a.module(String sModuleName, [Array asDependencies])
frdl.MagicHelper.addMethodCallback(angular, "module", true, function(sModuleName, asDependencies){
});
*/
frdl.CONST('__MAGIC_METHODS__', {
'__call' : function(name, args){
var r = {name:name, args:args, result:undefined};
if(0<frdl.debug.mode() ) console.log('__call', r);
frdl.MagicHelper.emitter.emit(name, r);
if('undefined'===typeof r.result){
frdl.MagicHelper.emitter.emit('*', r);
}
return r.result;
},
'__get' : function(name){
var r = {name:name, result:undefined};
frdl.MagicHelper.emitter.emit('get '+name, r);
if('undefined'===typeof r.result || 'function'===typeof r.result){
frdl.MagicHelper.emitter.emit('get *', r);
}
return r.result;
},
'__invoke' : function(name){
throw '@ToDo: __invoke is not defined';
}
}, true);
frdl.MagicHelper.emitter.on('test', function(evData){
console.log('onTest', arguments);
evData.result = 'Testresult from frdl.test('+JSON.stringify(evData.args)+')';
});//frdl.test()
frdl.MagicHelper.emitter.on('plug', function(evData){
evData.result = frdl.ns.plugin.apply(frdl.ns, evData.args);
})
frdl.MagicHelper.emitter.on('get *', function(evData){
if('undefined'!==typeof frdl.ns[evData.name]){
evData.result = frdl.ns[evData.name];
}
});
frdl.MagicHelper.emitter.on('get Test', function(evData){
console.log('Test', arguments);
evData.result = 'TESTPROPERTY';
}); //frdl.Test
//frdl.MagicHelper.emitter.on('get *', function(evData){
// evData.result = undefined;
// });
}());
frdl.microtime = function() {
return (new Date() / 1000);
};
frdl.$q = function(q, all, context) {
if ('undefined' === typeof context)
var context = document;
var m = ((false === all) ? 'querySelector' : 'querySelectorAll');
return context[m](q);
};
frdl.$j = function(selector) {
return new DomObject(selector);
};
frdl.cbs = {};
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var ARGUMENT_NAMES = /(?:^|,)\s*([^\s,=]+)/g;
var getFunctionParameters = frdl.getFunctionParameters = function(func, wrapStart, wrapEnd) {
if ('function'===typeof func) {
func = func.toString();
}
if (typeof func != 'string') {
return undefined;
}
var fnStr = func.replace(STRIP_COMMENTS, '');
var argsList = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'));
var result = argsList.match(ARGUMENT_NAMES);
if (result === null) {
return [];
} else {
var stripped = [];
for (var i = 0; i < result.length; i++) {
stripped.push((('string' === typeof wrapStart) ? wrapStart : '') + result[i].replace(/[\s,]/g, '') + (('string' === typeof wrapEnd) ? wrapEnd : ''));
}
return stripped;
}
};
frdl.Reflector = {};
frdl.Reflector.getFunctionParameters = getFunctionParameters;
frdl.Reflector.getFunctionName = function getFunctionName(fn, inspectBody) {
if ('function'===typeof fn) {
fn = fn.toString();
}
if (typeof fn !== 'string') {
return undefined;
}
if(true!==!!inspectBody){
fn = frdl.str_replace(frdl.Reflector.getFunctionBody(fn), '\n', fn);
}
// var result = fn.match(/function\s*(\S+)\s*\(/);
var result = fn.match(/function\s*(\S+)\s*\(|\(\)\=\>\s*(\S+)\s*\(/);
if (!result) {
return '';
}
return result[1];
};
frdl.Reflector.getFunctionBody = function getFunctionBody(fn) {
function removeCommentsFromSource(str) {
return str.replace(/(?:\/\*(?:[\s\S]*?)\*\/)|(?:([\s;])+\/\/(?:.*)$)/gm, '$1');
}
if ('function'===typeof fn) {
fn = fn.toString();
}
if (typeof fn != 'string') {
return undefined;
}
var s = removeCommentsFromSource( fn );
return s.substring(s.indexOf('{')+1, s.lastIndexOf('}'));
};
frdl.createJavascriptObjectURL=createJavascriptObjectURL;
frdl.createHTMLObjectURL=createHTMLObjectURL;
frdl.createCSSObjectURL=createCSSObjectURL;
frdl.linkBLOB=__createObjectURL;
//for browser ctx...
frdl.getCSS = function(src, p, once) {
if(false===frdl.browser)throw 'Cannot frdl.getCSS() in NO_BROWSER context!';
frdl.ready(function() {
if ('undefined' === typeof once || true === once || true === p) {
if (null !== frdl.$q('link[href="' + frdl.str_replace('/', '\/', src) + '"]', false)) {
return;
}
}
if ('undefined' === typeof p || null === p || true === p)
var p = frdl.$q('head', false);
var style = document.createElement('link');
style.setAttribute('type', 'text/css');
style.setAttribute('rel', 'stylesheet');
style.setAttribute('href', src);
p.append(style)
});
return frdl;
};
(function() {
var lastTime = 0;
var vendors = ['ms', 'moz', 'webkit', 'o'];
for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame)
window.requestAnimationFrame = function(callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function() {
callback(currTime + timeToCall);
}, timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if (!window.cancelAnimationFrame)
window.cancelAnimationFrame = function(id) {
clearTimeout(id);
};
var requestAnimationFrame = window.requestAnimationFrame;
var cancelAnimationFrame = window.cancelAnimationFrame;
frdl.requestAnimationFrame = function(callback) {
return requestAnimationFrame.call(window, callback);
};
frdl.cancelAnimationFrame = function(id) {
return cancelAnimationFrame.call(window, id);
};
}());
frdl.getScript=function(url, callBack, doNotRemove, prepend, args) {
var scripts = frdl.$q('script');
if ('undefined' === typeof doNotRemove || true === doNotRemove) {
for (var i = 0; i < scripts.length; i++) {
if (url === scripts[i].getAttribute('src')) {
if (typeof callBack === "function" && scripts[i].readyState === "complete") {
callBack.apply(this, args);
return "undefined";
}
}
}
}
var head = frdl.$q("head", false);
var script = document.createElement("script");
script.setAttribute('src', url);
script.setAttribute('async', 'true');
var done = false,
persistent = ('undefined' === typeof doNotRemove || true === doNotRemove) ? true : false;
script.setAttribute('type', 'text/javascript');
/*
script.onload = script.onreadystatechange = function() {
if (!done && (
// !this.readyState || this.readyState === "loaded" ||
this.readyState === "complete")) {
done = true;
if (true !== persistent) {
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
if (typeof callBack === "function") {
callBack.apply(this, args);
}
}
};
*/
script.onload = function() {
done = true;
if (true !== persistent) {
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
if (typeof callBack === "function") {
callBack.apply(this, args);
}
};
if (true === prepend) {
head.insertBefore(script, head.firstChild);
} else {
head.appendChild(script);
}
return "undefined";
};
if (false === frdl.worker) {
frdl.addReadyCheck(function() {
if ('undefined' === typeof $)return false;
return true;
});
// frdl.addReadyCheck(function() {
// return ('undefined' !== typeof frdl.a && 'function' === typeof frdl.a.module) ? true : false;
// });
} // if (false === frdl.worker) {
mapLoader();
require(['webfan/bootcache!webfan/webfanURLParser'], function(webfanURLParser){
frdl.Url = webfanURLParser;
require(['webfan/bootcache!webfan/NamespacePlugin'], function(NamespacePlugin){
frdl.ns = NamespacePlugin;
frdl.ns.plugin('webfan', function(){
extend({
$Async : frdl.requirejs.nextTick
});
});
});
}); //require webfan/bootcache!webfan/webfanURLParser
(function(){
require(['webfan/bootcache!Slim'], function(Slim){
frdl.Slim = Slim;
});
}());
function WebfanCreateCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
var u = new frdl.Url('');
var url = u.getLocation();
var host = u.getHost();
var h = host.split(".");
document.cookie = name+"="+value+expires+";domain=."+h[h.length-2]+"."+h[h.length-1]+";path=/";
document.cookie = name+"="+value+expires+";domain=.webfan.de;path=/";
}
function WebfanCreateCookieSeconds(name,value,s) {
if (s) {
var date = new Date();
date.setTime(date.getTime()+(s*1000));
var expires = "; expires="+date.toGMTString();
}else var expires = "";
var u = new frdl.Url('');
var url = u.getLocation();
var host = u.getHost();
var h = host.split(".");
document.cookie = name+"="+value+expires+";domain=."+h[h.length-2]+"."+h[h.length-1]+";path=/";
}
function WebfanReadCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function WebfanEraseCookie(name) {
WebfanCreateCookie(name,"",-1);
}
frdl.WebfanCreateCookie = WebfanCreateCookie;
frdl.WebfanCreateCookieSeconds = WebfanCreateCookieSeconds;
frdl.WebfanReadCookie = WebfanReadCookie;
frdl.WebfanEraseCookie = WebfanEraseCookie;
var DomObject = function(selector) {
return this.init(selector);
};
DomObject.prototype = {
element: null,
init: function(selector) {
var $ = ('undefined' !== typeof jQuery) ? jQuery : document.querySelector;
this.element = ('string' === typeof selector) ? $(selector) : selector;
return this;
},
attrAdd: function(k, v, delimiter, el) {
var del = delimiter;
var El = (delimiter && !el) ? ((null !== delimiter) ? $(delimiter) : this.element) : (el) ? $(el) : this.element;
if ('string' !== typeof del)
del = ' ';
if ('object' !== typeof El || null === El)
El = this.element;
var a = $(El).attr(k);
$(El).attr(k, (('string' === typeof a && '' !== a) ? a + del : '') + v);
return this;
},
attrHas: function(attr, value, el) {
if ('undefined' === typeof el)
var el = this.element;
if (!el.hasAttribute(attr))
return false;
var a = el.getAttribute(attr).split(/\s+|,/);
return (-1 === a.indexOf(value)) ? false : true;
},
after: function(newNode, prevNode) {
if ('undefined' === typeof prevNode)
prevNode = this.element || this;
prevNode.parentNode.insertBefore(newNode, prevNode.nextSibling);
},
getTagNames: function(tag, scope) {
if (null === scope || 'object' !== typeof scope)
scope = document;
return scope.getElementsByTagName(tag);
},
getNames: function(name) {
return document.getElementsByName(name);
},
getFormData: function(form) {
if (typeof FormData !== "object")
return this.getFormDataFallback(form);
var f = new FormData(form);
return f;
},
getFormDataFallback: function(form) {
var formElements = this.g(form).elements;
var postData = {};
for (var i = 0; i < formElements.length; i++) {
postData[formElements[i].name] = formElements[i].value;
}
return postData;
},
get: function(el) {
if ('object' === typeof el) {
return el;
} else if ('object' === typeof document.getElementById(el)) {
return document.getElementById(el);
} else if ('string' === typeof el) {
return document.querySelector(el);
} else {
return el;
}
},
g: function(el) {
return frdl.Dom.get(el);
},
getByClass: function(className, parent) {
parent || (parent = document);
var descendants = parent.getElementsByTagName('*'),
i = -1,
e, result = [];
while (e == descendants[++i]) {
((' ' + (e['class'] || e.className) + ' ').indexOf(' ' + className + ' ') > -1) && result.push(e);
}
return result;
},
getStyle: function(CLASSname, raw) {
if ("undefined" === typeof raw)
var raw = true;
var styleSheets = document.styleSheets,
cl = [];
var styleSheetsLength = styleSheets.length;
for (var i = 0; i < styleSheetsLength; i++) {
if (styleSheets[i].rules) {
var classes = styleSheets[i].rules;
} else {
try {
if (!styleSheets[i].cssRules) {
continue;
}
} catch (e) {
if (e.name === "SecurityError") {
console.log("SecurityError. Cant read: " + styleSheets[i].href);
continue;
}
}
var classes = styleSheets[i].cssRules;
}
if ('undefined' === typeof CLASSname || null === CLASSname) {
cl.push(classes);
continue;
}
for (var x = 0; x < classes.length; x++) {
if (classes[x].selectorText === CLASSname) {
var ret = (classes[x].cssText) ? classes[x].cssText : classes[x].style.cssText;
if (ret.indexOf(classes[x].selectorText) === -1 && false === raw) {
ret = classes[x].selectorText + "{" + ret + "}";
}
return ret;
}
}
}
if ('undefined' === typeof CLASSname || null === CLASSname) {
return cl;
}
},
isVisible: function(sel) {
var el = ('object' === typeof this.g(sel)) ? this.g(sel) : sel;
if (el !== null && typeof el !== 'undefined' && $(el).css('visibility') !== 'hidden' && $(el).css('display') !== 'none') {
return true;
} else {
return false;
}
},
isFramed: function() {
try {
return frdl.Device().Modernizr.framed;
} catch (err) {
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
},
addText: function(txt, dest) {
var t = document.createTextNode(txt);
dest = ('object' === typeof dest) ? dest : frdl.Dom.g(dest);
dest.appendChild(t);
},
add: function(el, dest, prepend) {
el = ('object' === typeof el && null !== el) ? el : frdl.Dom.g(el);
dest = ('object' === typeof dest && null !== dest) ? dest : frdl.Dom.g(dest);
if ('undefined' !== typeof dest && null !== dest) {
if ('undefined' !== typeof prepend && true === prepend) {
dest.insertBefore(el, dest.firstChild);
} else if ('function' === typeof dest.appendChild) {
dest.appendChild(el);
} else {
$(dest).append(el);
}
} else {
console.warn('ERR:');
console.dir(arguments);
console.dir(dest);
}
},
remove: function(el) {
el = frdl.Dom.g(el);
if (null === el)
return;
el.parentNode.removeChild(el);
},
create: function(tag) {
return document.createElement(tag);
},
createFragment: function() {
return document.createDocumentFragment();
},
copy: function(element, cloneChildsBool) {
if (cloneChildsBool != true && cloneChildsBool != false) {
cloneChildsBool = true;
}
return element.cloneNode(cloneChildsBool);
},
insertAtCursor: function(myField, myValue, mod, afterValue) {
var field = frdl.Dom.g(myField);
if (typeof mod === "undefined")
mod = "deleteSelected";
if (document.selection) {
field.focus();
sel = document.selection.createRange();
sel.text = myValue;
} else if (field.selectionStart || field.selectionStart == '0') {
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
if (mod === "deleteSelected") {
field.value = field.value.substring(0, startPos) + myValue + field.value.substring(endPos, field.value.length);
} else if (mod === "render") {
field.value = field.value.substring(0, startPos) + myValue + field.value.substring(startPos, endPos) + afterValue + field.value.substring(endPos, field.value.length);
} else if (mod === "insert") {
field.value = field.value.substring(0, startPos) + myValue + field.value.substring(startPos, endPos) + field.value.substring(endPos, field.value.length);
} else {
field.value = field.value.substring(0, startPos) + myValue + field.value.substring(endPos, field.value.length);
}
} else {
field.value += myValue;
}
},
createCSSClass: function(selector, style) {
if (!document.styleSheets) {
return;
}
if (document.getElementsByTagName("head").length === 0) {
return;
}
var styleSheet, i;
var mediaType;
if (document.styleSheets.length > 0) {
for (i = 0; i < document.styleSheets.length; i++) {
if ("undefined" === typeof document.styleSheets[i] || document.styleSheets[i].disabled) {
continue;
}
var media = document.styleSheets[i].media;
mediaType = typeof media;
if (mediaType === "string") {
if (media === "" || (media.indexOf("screen") !== -1)) {
styleSheet = document.styleSheets[i];
}
} else if (mediaType === "object") {
if (media.mediaText === "" || (media.mediaText.indexOf("screen") !== -1)) {
styleSheet = document.styleSheets[i];
}
}
if (typeof styleSheet !== "undefined") {
break;
}
}
}
if (typeof styleSheet === "undefined") {
var styleSheetElement = document.createElement("style");
styleSheetElement.type = "text/css";
document.getElementsByTagName("head")[0].appendChild(styleSheetElement);
for (i = 0; i < document.styleSheets.length; i++) {
if ("undefined" === typeof document.styleSheets[i] || document.styleSheets[i].disabled) {
continue;
}
styleSheet = document.styleSheets[i];
}
var media = styleSheet.media;
mediaType = typeof media;
}
if (mediaType === "string") {
for (i = 0; i < styleSheet.rules.length; i++) {
if (styleSheet.rules[i].selectorText.toLowerCase() === selector.toLowerCase()) {
styleSheet.rules[i].style.cssText = style;
return;
}
}
styleSheet.addRule(selector, style);
} else if (mediaType === "object") {
try {
for (i = 0; i < styleSheet.cssRules.length; i++) {
if (styleSheet.cssRules[i].selectorText.toLowerCase() === selector.toLowerCase()) {
styleSheet.cssRules[i].style.cssText = style;
return;
}
}
} catch (e) {
return;
}
styleSheet.insertRule(selector + "{" + style + "}", 0);
}
},
addStylesheetRules: function(rules, merge) {
var styleEl = document.createElement('style'),
styleSheet;
document.head.appendChild(styleEl);
styleSheet = styleEl.sheet;
for (var i = 0, rl = rules.length; i < rl; i++) {
var j = 1,
rule = rules[i],
selector = rules[i][0],
propStr = '',
k;
if (Object.prototype.toString.call(rule[1][0]) === '[object Array]') {
rule = rule[1];
j = 0;
}
for (var pl = rule.length; j < pl; j++) {
var prop = rule[j];
propStr += prop[0] + ':' + prop[1] + (prop[2] ? ' !important' : '') + ';\n';
$(selector).css(prop[0], prop[1] + (prop[2] ? ' !important' : ''));
}
styleSheet.insertRule(selector + '{' + propStr + '}', styleSheet.cssRules.length);
}
},
draggable: function(id, id2, save, load) {
try {
var wDrag = new DragObject(this.g(id), this.g(id2));
wDrag.ondrop = function() {
if (save === true)
wDrag.saveToStore();
return true;
};
if (load === true)
wDrag.loadFromStore();
} catch (err) {
console.log(err);
return;
}
},
config: {
regex: {
jsonParse: /("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)|("[\w\-^\/]\/[\w\-^\/]")|("[A-Za-z\-.0-9\/^"<>=]+[^"<>=]")|("1.3.6.1.4.1[0-9\.^\/A-Za-z<>=]{0,}")|("[\w\.\-]+@[\w\.\-]+\.[\w\.\-]+")/g,
url: /("([A-Za-z]+)(:\/\/)([0-9.\-A-Za-z]+)?([0-9\-A-Za-z]+)([.]{1})([A-Za-z]+)(\/)?([^\\"]+)?")/g
},
renderJSON: {
defaultRules: function(_) {
var kFound = false,
THIS = _,
regex_package = {
name: 'Package',
regex: /((")?[\w\-^\/]+\/[\w\-^\/]+(")?)/,
type: 'string',
style: function(match) {
var html = '',
m = match;
m = str_replace('"', '', m);
m = str_replace(':', '', m);
var p;
if ((p = explode('/', m)).length === 2) {
html = '<a style="text-decoration:underline;color:blue;cursor:pointer;" title="Package: ' + htmlentities(p[0] + '/' + p[1]) + '" onclick="$(frdl.wd()).package(\'c\', \'' + p[0] + '\', \'' + p[1] + '\');">' + p[0] + '/' + p[1] + '</a>';
} else {
html = m;
}
return html;
}
},
regex_any = {
name: 'any',
regex: /("[A-Za-z\-.0-9^"<>=]+[^"<>=]")/g,
type: 'any non html',
style: function(match) {
var m = str_replace(':', '', str_replace('"', '', match.trim()));
var p, html;
if ((p = explode('/', m)).length === 2) {
var title = _T.pTitle(p[0], p[1]);
html = '<a style="text-decoration:underline;color:blue;cursor:pointer;" title="Package: ' + htmlentities(title) + '" onclick="$(frdl.wd()).package(\'c\', \'' + p[0] + '\', \'' + p[1] + '\');">' + title + '</a>';
} else {
html = match;
}
return html;
}
};
return {
def: function(match) {
return match;
},
defKey: function(match) {
return '<span class="webfan-red" style="font-size:1.1em;">' + str_replace('"', '', match.substr(-1 * match.length - 2)).ucfirst() + '</span>';
},
types: [{
name: 'True',
regex: /true/,
type: 'boolean',
style: 'color:lightgreen;'
}, {
name: 'False',
regex: /false/,
type: 'boolean',
style: 'color:lightred;'
}, {
name: 'Null',
regex: /null/,
type: 'nil',
style: 'color:magenta;'
}, {
name: 'Number',
regex: /-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/,
type: 'number',
style: 'color:darkorange;'
}, {
name: 'Unicode',
regex: /"(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?/,
type: 'string',
style: 'color:green;'
}, {
name: 'OID',
regex: /1.3.6.1.4.1[0-9\.^\/A-Za-z<>=]{0,}/,
type: 'string',
style: function(match) {
var OID = str_replace('"', '', match);
return '<a href="http://look-up.webfan.de/' + OID + '">' + OID + '</a>';
}
}, {
name: 'Email',
regex: /[\w\.\-]+@[\w\.\-]+\.[\w\.\-]+/,
type: 'string',
style: function(match) {
var mail = str_replace('"', '', match);
return '<a href="mailto:' + mail + '">' + mail + '</a>';
}
}, regex_package],
keys: [{
name: 'NumKey',
regex: /((")?[0-9]{1,}(")?)/,
type: 'key',
style: function(match) {
if (true === kFound)
return str_replace('"', '', match);
kFound = true;
return ''
}
}],
any: regex_any,
punctuation: {
name: 'Punctuation',
regex: /(([\s])?([\.\[\{]{1})[^"])|([\]]{1}[^"])|([\}]{1}[^"]|[^"][\}]{1})|([\,]{1}[^"]|[^"][\,]{1}|[\,]{1}[\r\n]|[^"][\,]{1}[^"]|"[\,]{1}"|[\,]{1}[\[\{]|[\]\}][\,]{1}|[\r\n][\]]{1})/g,
type: 'punctuation',
style: function(match) {
var comma = '</li><li>',
m = str_replace('"', '', match.trim());
var result = null;
if (',' === m)
result = comma;
if ('[' === m)
result = '<ol style="list-style:list;"><li>';
if (']' === m)
result = '</li></ol>';
if ('{' === m)
result = '<ul style="list-style:list;"><li>';
if ('}' === m)
result = '</li></ul>';
if ('],' === m)
result = '</li></ol>' + comma;
if ('string' === typeof result)
return result;
return match;
}
},
spaces: {
name: 'Spaces',
regex: /([\r\n]{2,})/g,
type: 'lnbr',
style: function(match) {
return "\r\n";
}
},
url: {
name: 'Url',
regex: Dom.config.regex.url,
type: 'string',
style: function(match) {
var om = match,
u;
om = str_replace('"', '', om);
var url = (u = new frdl.Url(om)).urlMakeNew(),
maxLength = 16,
maxSub = 6;
if ('' === u.getHost() && '' === u.getPath())
return match;
var linktext = u.getHost() + (('' !== u.getPath()) ? ('/' + u.getPath()) : '');
linktext = (linktext.length > maxLength) ? (linktext.substr(0, maxLength) + '...' + linktext.substr((maxSub * -1))) : linktext;
return '<a href="' + url + '">' + linktext + '</a>';
}
}
};
}
}
},
renderJSON: function(json, rr, code, pre, REGEX) {
if (typeof json !== 'string') {
json = JSON.stringify(json, undefined, '\t');
}
var rules = this.config.renderJSON.defaultRules();
if ('undefined' !== typeof jQuery) {
rules = Object.create(rules, ('object' === typeof rr) ? rr : {});
} else {
for (var k in rr) {
rules[k] = rr[k];
}
}
var str = json.replace((('undefined' !== typeof REGEX && null !== REGEX) ? REGEX : Dom.config.regex.jsonParse), function(match) {
var i = 0,
p;
if (rules.punctuation.regex.test(match)) {
if ('string' === typeof rules.punctuation.style) {
return '<span style="' + rules.punctuation.style + '">' + match + '</span>';
} else if ('function' === typeof rules.punctuation.style) {
return rules.punctuation.style(match);
} else {
return match;
}
}
if (/^"/.test(match)) {
if (/:$/.test(match)) {
for (i = 0; i < rules.keys.length; i++) {
p = rules.keys[i];
if (p.regex.test(match)) {
if ('string' === typeof p.style) {
return '<span style="' + p.style + '">' + match + '</span>';
} else if ('function' === typeof p.style) {
return p.style(match);
} else {
return match;
}
}
}
return ('function' === typeof rules.defKey) ? rules.defKey(match) : '<span style="' + rules.defKey + '">' + match + '</span>';
} else {
return match;
}
} else {
for (i = 0; i < rules.types.length; i++) {
p = rules.types[i];
if (p.regex.test(match)) {
if ('string' === typeof p.style) {
return '<span style="' + p.style + '">' + match + '</span>';
} else if ('function' === typeof p.style) {
return p.style(match);
} else {
return match;
}
}
}
}
});
str = str.replace(rules.punctuation.regex, function(match) {
if ('function' === typeof rules.punctuation.style) {
return rules.punctuation.style(match);
} else if ('string' === typeof rules.punctuation.style) {
return '<span style="' + rules.punctuation.style + '">' + match + '</span>';
} else {
return match;
}
});
str = str.replace(rules.url.regex, function(match) {
if ('function' === typeof rules.url.style) {
return rules.url.style(match);
} else if ('string' === typeof rules.url.style) {
return '<span style="' + rules.url.style + '">' + match + '</span>';
} else {
return match;
}
});
str = str.replace(rules.any.regex, function(match) {
if ('function' === typeof rules.any.style) {
return rules.any.style(match);
} else if ('string' === typeof rules.any.style) {
return '<span style="' + rules.any.style + '">' + match + '</span>';
} else {
return match;
}
});
str = str.replace(rules.spaces.regex, function(match) {
if ('function' === typeof rules.spaces.style) {
return rules.spaces.style(match);
} else if ('string' === typeof rules.spaces.style) {
return '<span style="' + rules.spaces.style + '">' + match + '</span>';
} else {
return match;
}
});
if (true === pre)
str = '<pre>' + str + '</pre>';
if (true === code)
str = '<code>' + str + '</code>';
return str;
},
bringToFront: function(selector, dSiblings) {
if ('undefined' === typeof selector)
var selector = this.element;
var zmax = 1,
d = Dom.getTagNames('*'),
i = 0,
m = 1,
_Siblings = (true === dSiblings) ? true : false;
for (i = 0; i < d.length; i++) {
var e = d[i];
var cur = parseInt(e.style.zIndex);
if (isNaN(cur))
continue;
if (cur > 2 && cur >= zmax - 1)
cur--;
zmax = cur > zmax ? cur : zmax;
e.style.zIndex = cur;
}
try {
if ('string' === typeof selector && ('#' === selector.substr(0, 1) || '.' === selector.substr(0, 1))) {} else if ('string' === typeof selector.selector) {
selector = selector.selector;
} else if ('string' === typeof selector) {
selector = '#' + selector;
}
$(selector).css('zIndex', ++zmax);
if (true === _Siblings)
$(selector).siblings().css('zIndex', ++zmax);
} catch (err) {
console.warn(err + ' : ' + JSON.stringify(selector));
}
}
};
let Dom = frdl.Dom = new DomObject(window.document || global);
var HOST_API = 'api.webfan.de';
// var HOST_CDN_PUBLIC_FRDL = 'webfan.de';
// requirejs.s.contexts._.config.baseUrl
var HOST_CDN_PUBLIC_FRDL = location.host;
var _h = HOST_CDN_PUBLIC_FRDL.split(/./);
_h = _h.reverse();
if('webfan'===_h[1]){
var h = location.host.split(/:/);
HOST_CDN_PUBLIC_FRDL = h[0];
}else{
HOST_CDN_PUBLIC_FRDL = 'webfan.de';
}
var urlAliasMap = {
HOST_CDN_PUBLIC_FRDL: HOST_CDN_PUBLIC_FRDL,
HOST_API: HOST_API,
CLI_CONFIG: function() {
return location.protocol + '//' + frdl.route('HOST_CDN_PUBLIC_FRDL') + '/cdn/frdl/flow/components/webfan/cli/clisetup/clisetup';
},
DEMO_API_CLIENT_URL: false,
DEMO_API_CLIENT_URL_ALT: false,
API_URL: location.protocol + '//' + 'interface.' + HOST_API + '/v1/public/frdl/bounce/cli.jsonp',
API_ENDPOINT: location.protocol + '//' + 'interface.' + HOST_API + '/v1/public/',
'FRDL.URL.SERACHENGINE.PLUGIN': location.protocol + '//' + 'suche.webfan.de/searchplugin.xml',
'FRDL.URL.MANIFEST.WEBAPP.WEBFAN.MY': location.protocol + '//' + 'webfan.de/manifest.webapp',
'jQueryMobile.autoInitializePage': false,
'jQueryMobile.ajaxEnabled': false,
'jQueryMobile.linkBindingEnabled': false,
'jQueryMobile.hashListeningEnabled': false,
'jQueryMobile.pushStateEnabled': false
};
frdl.route = function(alias, params, path, options) {
return ('function' === typeof urlAliasMap[alias]) ? urlAliasMap[alias](alias, params, path, options) : urlAliasMap[alias];
};
frdl.Route = function(r, v) {
if ('undefined' === typeof v && 'object' === typeof r) {
frdl.each(r, function(i, R) {
urlAliasMap[i] = R;
});
} else if ('undefined' === typeof urlAliasMap[r] && ('function' === typeof v || 'string' === typeof v)) {
urlAliasMap[r] = v;
} else if ('undefined' !== typeof urlAliasMap[r] && (null === v || typeof v === typeof urlAliasMap[r])) {
urlAliasMap[r] = v;
} else if ('undefined' === typeof v && 'undefined' === typeof r) {
return urlAliasMap;
} else {
frdl.Throw('framework', 'Invalid arguments: frdl.Route(' + JSON.stringify(r) + ', ' + JSON.stringify(v) + ');');
}
return frdl;
};
require(['webfan/bootcache!mobile-detect', 'feature!Modernizr'], function(mobileDetect, moderniZr){
frdl.Device = function(){
var MobileDetect = mobileDetect;
var Modernizr = moderniZr;
var md = new MobileDetect(navigator.userAgent);
var Device={
Modernizr : Modernizr,
MobileDetect : md,
isMobile : !!md.is('mobile') ,
isTablet : !!md.is('tablet') ,
isPhone : !!md.is('phone') ,
isDesktop : !md.is('mobile') && !md.is('tablet') && !md.is('phone') ,
os: navigator.platform,
OS :navigator.platform
} ;
return Device;
};
});
(function(){
/**
Serialize Closures + Classes
// Native:
var fn=alert;require(['seri'], function(seri){console.log('seri', seri);var s = seri.stringify(fn);console.log('s', s);var N = seri.parse(s).fromJSON();console.log('Unserializerd', N);N('Hello world');})
// Custom:
var fn=frdl.explode;require(['seri'], function(seri){console.log('seri', seri);var s = seri.stringify(fn);console.log('s', s);var N = seri.parse(s).fromJSON();console.log('Unserializerd', N);N('Hello world');})
frdl.task('Tests', 'schedule', new (frdl.task().serial)( function(resolve, reject){ frdl.task('Tests').pause();console.log('this', console.log, this);resolve(this);} ,
console.log, 7, 'asf'));frdl.task('Tests').pause();
*/
/*!
frdl.task('Tests', 'schedule', function(){ frdl.task('Tests').pause();console.log('this', this);}, 2, 'tesdtfunc', console.log);
frdl.task('Tests', 'schedule', new frdl.task().serial( function(){ frdl.task('Tests').pause();console.log('this', console.log, this);}, 2, 'tesdtfunc'), 2, 'tesdtfunc', console.log);
frdl.task('Teusts', 'schedule', new frdl.task().serial( function(){ frdl.task('Teusts').pause();console.log('this', console.log, this);} ,
console.log, 2, 'tefsdhggjfshssgdggxsdggdghadgdgtsdgsgdfunc'),
2, 'tefshdhgfshssggdghadgdgtsdgsgdfunc', console.log);
*/
var _task = false;
frdl.MagicHelper.emitter.on('task', function(evData){
// evData.result = 'TESTPROPERTY';
function DoIt(){
evData.result = _task.apply(frdl.plug('de.webfan.frdl.cdn.cdn.frdl.flow.components.webfan.queue'), evData.args);
}
if('undefined'===typeof _task || false === _task){
require(['frdlcjs!seri', 'webfan/bootcache!webfan/tasks-2'], function( seri, TaskQueue){
// function SerialTask(fn, callback, priority, description) {
class SerialTask {
constructor(fn, callback, priority, description){
if('undefined'===typeof description){
var description='SerialTask ' + new Date();
}
this.priority = priority || 1;
this.description =description;
this.fn = fn;
this.callback = callback;
this.run = function() {
var _self = this;
_self.queue.hold();
var fnParams = frdl.Reflector.getFunctionParameters(_self.fn);
if(2===fnParams.length && 'resolve'===fnParams[0] && 'reject'===fnParams[1]){
var Fn = new Promise(_self.fn);
}else{
var Fn = new Promise(function(resolve, reject){
var res = _self.fn();
if(false===res
// || undefined === res
|| null===res
|| res instanceof Error
){
reject(res);
}else{
resolve(res);
}
});
}
Fn.then(function(d){
_self.onSuccess(d);
}, function(reason){
_self.onFail(reason);
});
};
this.onSuccess = function(data) {
if ('function' === typeof this.callback) {
this.callback(null, data);
} else if ('string' === typeof this.callback && 'frdl.alert' === this.callback) {
var util = require('util');
var opts = {
showHidden: true,
depth: 2
};
frdl.alert.success(frdl.htmlentities('>...') + '<br />' + frdl.htmlentities('>') + util.inspect(data, opts));
}
this.queue.release(this.taskId);
};
this.onFail = function(err) {
if ('function' === typeof this.callback) {
this.callback(err);
} else if ('string' === typeof this.callback && 'frdl.alert' === this.callback) {
frdl.alert.error(err);
}
// this.queue.release(this.taskId);
};
}//constructor
fromJSON(json) {
if(!seri.hasClass(SerialTask))seri.addClass(SerialTask);
if('undefined'===typeof json){
var json = this. toJSON();
}
var deserialized = seri.parse( json );
return new SerialTask(seri.parse( deserialized.fn ), seri.parse( deserialized.callback ), deserialized.priority, deserialized.description);
}
toJSON() {
if(!seri.hasClass(SerialTask))seri.addClass(SerialTask);
var serialized = {
priority:this.priority,
description:this.description,
fn : seri.stringify( this.fn ),
callback : seri.stringify( this.callback )
};
return seri.stringify( serialized );
}
}// class SerialTask
var _TaskQueueGroups = {};
var _frdlTasks = Object.create({
// cli: CLITask,
// ql: CLITask,
serial : SerialTask
});
Object.defineProperty(_frdlTasks, 'tasks', {
get: function() {
return _TaskQueueGroups;
},
set: function(val) {
throw 'write to frdl.task().tasks from public scope';
},
configurable: false
});
var __isOnPruning = false;
var pruneTasks = function() {
__isOnPruning = true;
(('undefined' !== typeof webfan && 'function' === typeof webfan.$Async) ? webfan.$Async : setTimeout)(function() {
__isOnPruning = false;
frdl.each(_TaskQueueGroups, function(groupName, queue) {
if (!!_TaskQueueGroups[groupName] && 0 === queue.count()) {
(('undefined' !== typeof webfan && 'function' === typeof webfan.$Async) ? webfan.$Async : setTimeout)(function() {
if (!!_TaskQueueGroups[groupName] && 0 === queue.count()) {
(('undefined' !== typeof webfan && 'function' === typeof webfan.$Async) ? webfan.$Async : setTimeout)(function() {
if (!!_TaskQueueGroups[groupName] && 0 === _TaskQueueGroups[groupName].count()) {
_TaskQueueGroups[groupName].clearAll();
_TaskQueueGroups[groupName] = undefined;
}
}, 2000);
}
}, 2000);
}
});
}, 30000);
};
_task = function() {
if (false === !!__isOnPruning) {
(('undefined' !== typeof webfan && 'function' === typeof webfan.$Async) ? webfan.$Async : setTimeout)(pruneTasks, 60000);
}
// var TaskQueue = require('webfan/tasks');
var args = Array.prototype.slice.call(arguments);
var QueueGroup = (0 < args.length) ? args.shift() : false;
var method = (0 < args.length) ? args.shift() : false;
if (false === !!QueueGroup) {
return _frdlTasks;
}
if ('undefined' === typeof _TaskQueueGroups[QueueGroup]) {
_TaskQueueGroups[QueueGroup] = new TaskQueue(QueueGroup);
}
if (false === !!method) {
return _TaskQueueGroups[QueueGroup];
}
return _TaskQueueGroups[QueueGroup][method].apply(_TaskQueueGroups[QueueGroup], args);
};
// evData.result = frdl.task;
DoIt();
});
}// if('undefined'===typeof frdl.task()){
else{
DoIt();
}
});
}());
(function() {
/*! https://github.com/mohayonao/inline-worker/blob/master/index.js */
'use strict';
function WORKER_ENABLED() {
return !!(global === global.window && global.URL && global.Blob && global.Worker);
}
function InlineWorker(func, self) {
var _this = this;
var functionBody;
self = self || {};
if (WORKER_ENABLED()) {
functionBody = func.toString().trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1];
return new global.Worker(global.URL.createObjectURL(new global.Blob([functionBody], {
type: "text/javascript"
})));
}
function postMessage(data) {
setTimeout(function() {
_this.onmessage({
data: data
});
}, 0);
}
this.self = self;
this.self.postMessage = postMessage;
setTimeout(func.bind(self, self), 0);
}
InlineWorker.prototype.postMessage = function postMessage(data) {
var _this = this;
setTimeout(function() {
_this.self.onmessage({
data: data
});
}, 0);
};
frdl.InlineWorker = InlineWorker;
}());
require([
// 'webfan/bootcache!fs',
'webfan/bootcache!Sha1',
'webfan/bootcache!webfan/navigator/dom-observer-new',
'webfan/bootcache!libraries/angular/angular-9x'
],
function(
// fs,
// jQuery,
Sha1,
// webfanURLParser,
// browser, worker,
watchFor,
angular
){
// console.log(frdl.fs);
// frdl.fs = frdl.fs5 = fs;
// frdl.fs.polyfill.check(true);
frdl.Sha1 = Sha1;
// frdl.Url = webfanURLParser;
// if('undefined'===typeof browser)browser=false;
// if('undefined'===typeof worker)worker=false;
// frdl.browser=browser;
// frdl.worker = worker;
frdl.watchFor=watchFor;
(function(angular) {
/*
frdl.MagicHelper.addMethodCallback(angular, 'module', false, function(sModuleName, asDependencies){
var Plugin = frdl.ns.plugin(sModuleName);
return {
Plugin : Plugin
};
});
*/
//frdl.a=angular;
Object.defineProperty(frdl, 'a', {
get : function(){
return angular;
}
});
}(angular));
/*! https://stackoverflow.com/questions/24889783/angularjs-get-list-of-all-registered-modules/24890518#24890518
Now you can select modules:
angular.modules.select('app.modules.*')
Creating modules tree:
var app = angular.module('app.module.users', ['ui.router'...]);
var app = angular.module('app.module.users.edit', ['app.modules.users']);
Your main module app (concat submodules)
angular.module('app', ['ui.bootstrap', 'app.services', 'app.config']
.concat(angular.modules.select('app.module.*')));
*/
(function(angular) {
var orig = angular.module;
angular.modules = [];
angular.modules.select = function(query) {
var cache = [], reg = new RegExp(query || '.*');
for(var i=0,l=this.length;i< l;i++){
var item = this[i];
if(reg.test(item)){
cache.push(item)
}
}
return cache;
};
angular.module = function() {
var args = Array.prototype.slice.call(arguments);
if (args.length > 1) {
angular.modules.push(args[0]);
var app = orig.apply(null, args);
var appName = args[0];
app[Symbol.frdl.Plugin.valueOf()]=function WebfanPlugin(){
return frdl.ns.plugin(appName, arguments[0]);
};
Object.defineProperty(app, 'runInContext', {
get : function(){
return app[Symbol.frdl.Plugin.valueOf()];
}
});
frdl.ns.plugin(appName);
return app;
}else{
return orig.apply(null, args);
}
};
angular.defined = function(m) {
return angular.modules.indexOf(m) > -1;
};
}(angular));
require([
'webfan/bootcache!webfan/frdl-main-x8',
'frdlcjs!querystring',
'frdlcjs!url',
'frdlcjs!buffer'//,
],
function(
mainModule,
querystring,
url,
buffer//,
){
global.buffer=buffer;
frdl.url = url;
frdl.main = new mainModule(frdl, frdl.webfan);
frdl.addReadyCheck(function() {
return ('undefined' !== typeof frdl.main && true === frdl.main.ready() ) ? true : false;
});
/*
if (false === frdl.worker) {
frdl.addReadyCheck(function() {
return ('undefined' !== typeof frdl.UI && 'function' === typeof frdl.UI.widget ) ? true : false;
});
}
*/
frdl.wd = function(_m) {
function load(m) {
if ('undefined' !== typeof m && true !== m)
var m = false;
if ('function' === typeof $.WebfanDesktop.toggleDesktop && true === m && !frdl.Dom.isVisible(frdl.$q('*[data-frdl-mod="workspace"]', false))) {
$.WebfanDesktop.toggleDesktop();
} else if ('function' !== typeof $.WebfanDesktop.toggleDesktop && ('undefined' !== typeof m && false !== m)) {
$.WebfanDesktop = $.WebfanDesktop(m);
} else if ('function' !== typeof $.WebfanDesktop.toggleDesktop && ('undefined' === typeof m || false === m)) {
$.WebfanDesktop = $.WebfanDesktop(m);
}
frdl.webfan.$Async(function() {
frdl.ready(function() {
if (false === m && frdl.Dom.isVisible(frdl.$q('*[data-frdl-mod="workspace"]', false))) {
$.WebfanDesktop.hide();
} else if (true === m && !frdl.Dom.isVisible(frdl.$q('*[data-frdl-mod="workspace"]', false))) {
$.WebfanDesktop.show();
}
frdl.webfan.$Async(function() {
$.WebfanDesktop.loadDesktopWidgets();
}, 1);
frdl.require.state.emit('resolved', {
identifier: 'frdl.wd',
module: $.WebfanDesktop
});
frdl.require.state.emit('resolved frdl.wd', {
identifier: 'frdl.wd',
module: $.WebfanDesktop
});
});
}, 2000);
return $.WebfanDesktop;
}
$.WebfanDesktop = load(_m);
return $.WebfanDesktop;
};
// frdl.addReadyCheck(function() {
// return ('undefined' !== typeof frdl.Hash && 'function' === typeof frdl.Hash.on) ? true : false;
// });
});// require(['frdlcjs!webfan/frdl-main-x8'], function( mainModule){
});//'webfan/bootcache!libraries/angular/angular-9x'
/* frdl.ns.SFRDL (Frdl Standard Library) */
function extend(from, to) {
if (from === null || typeof from !== 'object')
return from;
if (from.constructor !== Object && from.constructor !== Array)
return from;
if (from.constructor === Date || from.constructor === RegExp || from.constructor === Function || from.constructor === String || from.constructor === Number || from.constructor === Boolean)
return new from.constructor(from);
to = to || new from.constructor();
var name;
for (name in from) {
to[name] = typeof to[name] === 'undefined' ? extend(from[name], null) : to[name];
}
return to;
}
function clone(obj) {
var clone = extend(obj);
return clone;
}
function str_replace(search, replace, subject) {
if ('string' !== typeof subject)
return '';
try {
return subject.split(search).join(replace);
} catch (err) {
if (0 < frdl.debug.mode() && 'undefined' !== typeof console)
console.warn(err);
return '';
}
}
function html_entity_decode(string, quote_style) {
var hash_map = {},
symbol = '',
tmp_str = '',
entity = '',
tmp_str = string.toString();
if (false === (hash_map = get_html_translation_table('HTML_ENTITIES', quote_style))) {
return false;
}
delete(hash_map['&']);
hash_map['&'] = '&';
for (symbol in hash_map) {
entity = hash_map[symbol];
tmp_str = tmp_str.split(entity).join(symbol);
}
tmp_str = tmp_str.split(''').join("'");
return tmp_str;
}
function get_html_translation_table(table, quote_style) {
var entities = {},
hash_map = {},
decimal;
var constMappingTable = {},
constMappingQuoteStyle = {};
var useTable = {},
useQuoteStyle = {};
constMappingTable[0] = 'HTML_SPECIALCHARS';
constMappingTable[1] = 'HTML_ENTITIES';
constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
constMappingQuoteStyle[2] = 'ENT_COMPAT';
constMappingQuoteStyle[3] = 'ENT_QUOTES';
useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
return false;
}
entities['38'] = '&';
if (useTable === 'HTML_ENTITIES') {
entities['160'] = ' ';
entities['161'] = '¡';
entities['162'] = '¢';
entities['163'] = '£';
entities['164'] = '¤';
entities['165'] = '¥';
entities['166'] = '¦';
entities['167'] = '§';
entities['168'] = '¨';
entities['169'] = '©';
entities['170'] = 'ª';
entities['171'] = '«';
entities['172'] = '¬';
entities['173'] = '­';
entities['174'] = '®';
entities['175'] = '¯';
entities['176'] = '°';
entities['177'] = '±';
entities['178'] = '²';
entities['179'] = '³';
entities['180'] = '´';
entities['181'] = 'µ';
entities['182'] = '¶';
entities['183'] = '·';
entities['184'] = '¸';
entities['185'] = '¹';
entities['186'] = 'º';
entities['187'] = '»';
entities['188'] = '¼';
entities['189'] = '½';
entities['190'] = '¾';
entities['191'] = '¿';
entities['192'] = 'À';
entities['193'] = 'Á';
entities['194'] = 'Â';
entities['195'] = 'Ã';
entities['196'] = 'Ä';
entities['197'] = 'Å';
entities['198'] = 'Æ';
entities['199'] = 'Ç';
entities['200'] = 'È';
entities['201'] = 'É';
entities['202'] = 'Ê';
entities['203'] = 'Ë';
entities['204'] = 'Ì';
entities['205'] = 'Í';
entities['206'] = 'Î';
entities['207'] = 'Ï';
entities['208'] = 'Ð';
entities['209'] = 'Ñ';
entities['210'] = 'Ò';
entities['211'] = 'Ó';
entities['212'] = 'Ô';
entities['213'] = 'Õ';
entities['214'] = 'Ö';
entities['215'] = '×';
entities['216'] = 'Ø';
entities['217'] = 'Ù';
entities['218'] = 'Ú';
entities['219'] = 'Û';
entities['220'] = 'Ü';
entities['221'] = 'Ý';
entities['222'] = 'Þ';
entities['223'] = 'ß';
entities['224'] = 'à';
entities['225'] = 'á';
entities['226'] = 'â';
entities['227'] = 'ã';
entities['228'] = 'ä';
entities['229'] = 'å';
entities['230'] = 'æ';
entities['231'] = 'ç';
entities['232'] = 'è';
entities['233'] = 'é';
entities['234'] = 'ê';
entities['235'] = 'ë';
entities['236'] = 'ì';
entities['237'] = 'í';
entities['238'] = 'î';
entities['239'] = 'ï';
entities['240'] = 'ð';
entities['241'] = 'ñ';
entities['242'] = 'ò';
entities['243'] = 'ó';
entities['244'] = 'ô';
entities['245'] = 'õ';
entities['246'] = 'ö';
entities['247'] = '÷';
entities['248'] = 'ø';
entities['249'] = 'ù';
entities['250'] = 'ú';
entities['251'] = 'û';
entities['252'] = 'ü';
entities['253'] = 'ý';
entities['254'] = 'þ';
entities['255'] = 'ÿ';
}
if (useQuoteStyle !== 'ENT_NOQUOTES') {
entities['34'] = '"';
}
if (useQuoteStyle === 'ENT_QUOTES') {
entities['39'] = ''';
}
entities['60'] = '<';
entities['62'] = '>';
for (decimal in entities) {
if (entities.hasOwnProperty(decimal)) {
hash_map[String.fromCharCode(decimal)] = entities[decimal];
}
}
return hash_map;
}
function htmlentities(string, quote_style, charset, double_encode) {
var hash_map = get_html_translation_table('HTML_ENTITIES', quote_style),
symbol = '';
string = string == null ? '' : string + '';
if (!hash_map) {
return false;
}
if (quote_style && quote_style === 'ENT_QUOTES') {
hash_map["'"] = ''';
}
if (!!double_encode || double_encode == null) {
for (symbol in hash_map) {
if (hash_map.hasOwnProperty(symbol)) {
string = string.split(symbol).join(hash_map[symbol]);
}
}
} else {
string = string.replace(/([\s\S]*?)(&(?:#\d+|#x[\da-f]+|[a-zA-Z][\da-z]*);|$)/g, function(ignore, text, entity) {
for (symbol in hash_map) {
if (hash_map.hasOwnProperty(symbol)) {
text = text.split(symbol).join(hash_map[symbol]);
}
}
return text + entity;
});
}
return string;
}
function mt_rand(min, max) {
var argc = arguments.length;
if (argc === 0) {
min = 0;
max = 2147483647;
} else if (argc === 1) {
min = 0;
max = min;
} else if (min < max) {
min = parseInt(min);
max = parseInt(max);
} else {
min = 0;
max = 2147483647;
}
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function strpos(haystack, needle, offset) {
var i = (haystack + '').indexOf(needle, (offset || 0));
return i === -1 ? false : i;
}
function base64_encode(data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
enc = "",
tmp_arr = [];
if (!data) {
return data;
}
do {
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);
enc = tmp_arr.join('');
var r = data.length % 3;
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
}
function base64_decode(data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
dec = "",
tmp_arr = [];
if (!data) {
return data;
}
data += '';
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
o1 = bits >> 16 & 0xff;
o2 = bits >> 8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
} else if (h4 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
} else {
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
} while (i < data.length);
dec = tmp_arr.join('');
return dec;
}
function base64_detect(str) {
var base64Detect = new RegExp("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$");
if (base64Detect.test(str)) {
return true;
} else {
return false;
}
}
function urlencode(str) {
str = (str + '').toString();
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}
function urldecode(str) {
return decodeURIComponent((str + '').replace(/\+/g, '%20'));
}
function explode(delimiter, string, limit) {
if (arguments.length < 2 || typeof delimiter === 'undefined' || typeof string === 'undefined')
return null;
if (delimiter === '' || delimiter === false || delimiter === null)
return false;
if (typeof delimiter === 'function' || typeof delimiter === 'object' || typeof string === 'function' || typeof string === 'object') {
return [0];
}
if (delimiter === true)
delimiter = '1';
delimiter += '';
string += '';
var s = string.split(delimiter);
if (typeof limit === 'undefined')
return s;
if (limit === 0)
limit = 1;
if (limit > 0) {
if (limit >= s.length)
return s;
return s.slice(0, limit - 1).concat([s.slice(limit - 1).join(delimiter)]);
}
if (-limit >= s.length)
return [];
s.splice(s.length + limit);
return s;
}
function strip_tags(str, allow) {
var allow = (((allow || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;
var commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allow.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
}
function createJavascriptObjectURL(func){
var functionBody = frdl.Reflector.getFunctionBody(func);
return URL.createObjectURL(new Blob([functionBody], {
type: "text/javascript"
}));
}
function createHTMLObjectURL(HTML){
return URL.createObjectURL(new Blob([HTML], {
type: "text/html"
}));
}
function createCSSObjectURL(css){
return URL.createObjectURL(new Blob([css], {
type: "text/css"
}));
}
function __createObjectURL(type, content){
if(false!==frdl.strpos(type, 'script')){
return frdl.createJavascriptObjectURL(content);
}
return URL.createObjectURL(new Blob([content], {
type: type
}));
}
return frdl;
});
|